用java实现学生成绩管理系统
时间: 2023-10-02 12:08:13 浏览: 42
好的,学生成绩管理系统可以分为以下几个模块:
1. 学生信息管理模块:包括学生基本信息的增删改查等操作。
2. 课程信息管理模块:包括课程基本信息的增删改查等操作。
3. 成绩信息管理模块:包括成绩信息的录入、修改、查询等操作。
4. 成绩统计分析模块:包括成绩的统计分析、班级排名、课程平均分等功能。
下面是一个简单的学生成绩管理系统的实现:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class StudentGradeSystem {
private static Map<String, Student> studentMap = new HashMap<>();
private static Map<String, Course> courseMap = new HashMap<>();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("===== 学生成绩管理系统 =====");
System.out.println("1. 学生信息管理");
System.out.println("2. 课程信息管理");
System.out.println("3. 成绩信息管理");
System.out.println("4. 成绩统计分析");
System.out.println("0. 退出");
System.out.println("=========================");
System.out.print("请输入要进行的操作:");
int choice = scanner.nextInt();
switch (choice) {
case 1:
studentManagement(scanner);
break;
case 2:
courseManagement(scanner);
break;
case 3:
gradeManagement(scanner);
break;
case 4:
gradeAnalysis(scanner);
break;
case 0:
System.out.println("谢谢使用!");
return;
default:
System.out.println("输入的操作不正确,请重新输入!");
}
}
}
private static void studentManagement(Scanner scanner) {
while (true) {
System.out.println("===== 学生信息管理 =====");
System.out.println("1. 添加学生信息");
System.out.println("2. 删除学生信息");
System.out.println("3. 修改学生信息");
System.out.println("4. 查询学生信息");
System.out.println("0. 返回主菜单");
System.out.println("=========================");
System.out.print("请输入要进行的操作:");
int choice = scanner.nextInt();
switch (choice) {
case 1:
addStudent(scanner);
break;
case 2:
deleteStudent(scanner);
break;
case 3:
updateStudent(scanner);
break;
case 4:
queryStudent(scanner);
break;
case 0:
return;
default:
System.out.println("输入的操作不正确,请重新输入!");
}
}
}
private static void addStudent(Scanner scanner) {
System.out.print("请输入学生学号:");
String studentId = scanner.next();
if (studentMap.containsKey(studentId)) {
System.out.println("该学号已存在,请重新输入!");
return;
}
System.out.print("请输入学生姓名:");
String name = scanner.next();
Student student = new Student(studentId, name);
studentMap.put(studentId, student);
System.out.println("添加学生信息成功!");
}
private static void deleteStudent(Scanner scanner) {
System.out.print("请输入要删除的学生学号:");
String studentId = scanner.next();
if (!studentMap.containsKey(studentId)) {
System.out.println("该学号不存在,请重新输入!");
return;
}
studentMap.remove(studentId);
System.out.println("删除学生信息成功!");
}
private static void updateStudent(Scanner scanner) {
System.out.print("请输入要修改的学生学号:");
String studentId = scanner.next();
if (!studentMap.containsKey(studentId)) {
System.out.println("该学号不存在,请重新输入!");
return;
}
System.out.print("请输入学生姓名:");
String name = scanner.next();
Student student = new Student(studentId, name);
studentMap.put(studentId, student);
System.out.println("修改学生信息成功!");
}
private static void queryStudent(Scanner scanner) {
System.out.print("请输入要查询的学生学号:");
String studentId = scanner.next();
if (!studentMap.containsKey(studentId)) {
System.out.println("该学号不存在,请重新输入!");
return;
}
Student student = studentMap.get(studentId);
System.out.println("学号:" + student.getStudentId() + ",姓名:" + student.getName());
}
private static void courseManagement(Scanner scanner) {
while (true) {
System.out.println("===== 课程信息管理 =====");
System.out.println("1. 添加课程信息");
System.out.println("2. 删除课程信息");
System.out.println("3. 修改课程信息");
System.out.println("4. 查询课程信息");
System.out.println("0. 返回主菜单");
System.out.println("=========================");
System.out.print("请输入要进行的操作:");
int choice = scanner.nextInt();
switch (choice) {
case 1:
addCourse(scanner);
break;
case 2:
deleteCourse(scanner);
break;
case 3:
updateCourse(scanner);
break;
case 4:
queryCourse(scanner);
break;
case 0:
return;
default:
System.out.println("输入的操作不正确,请重新输入!");
}
}
}
private static void addCourse(Scanner scanner) {
System.out.print("请输入课程编号:");
String courseId = scanner.next();
if (courseMap.containsKey(courseId)) {
System.out.println("该编号已存在,请重新输入!");
return;
}
System.out.print("请输入课程名称:");
String name = scanner.next();
Course course = new Course(courseId, name);
courseMap.put(courseId, course);
System.out.println("添加课程信息成功!");
}
private static void deleteCourse(Scanner scanner) {
System.out.print("请输入要删除的课程编号:");
String courseId = scanner.next();
if (!courseMap.containsKey(courseId)) {
System.out.println("该编号不存在,请重新输入!");
return;
}
courseMap.remove(courseId);
System.out.println("删除课程信息成功!");
}
private static void updateCourse(Scanner scanner) {
System.out.print("请输入要修改的课程编号:");
String courseId = scanner.next();
if (!courseMap.containsKey(courseId)) {
System.out.println("该编号不存在,请重新输入!");
return;
}
System.out.print("请输入课程名称:");
String name = scanner.next();
Course course = new Course(courseId, name);
courseMap.put(courseId, course);
System.out.println("修改课程信息成功!");
}
private static void queryCourse(Scanner scanner) {
System.out.print("请输入要查询的课程编号:");
String courseId = scanner.next();
if (!courseMap.containsKey(courseId)) {
System.out.println("该编号不存在,请重新输入!");
return;
}
Course course = courseMap.get(courseId);
System.out.println("编号:" + course.getCourseId() + ",名称:" + course.getName());
}
private static void gradeManagement(Scanner scanner) {
while (true) {
System.out.println("===== 成绩信息管理 =====");
System.out.println("1. 录入成绩信息");
System.out.println("2. 修改成绩信息");
System.out.println("3. 查询成绩信息");
System.out.println("0. 返回主菜单");
System.out.println("=========================");
System.out.print("请输入要进行的操作:");
int choice = scanner.nextInt();
switch (choice) {
case 1:
addGrade(scanner);
break;
case 2:
updateGrade(scanner);
break;
case 3:
queryGrade(scanner);
break;
case 0:
return;
default:
System.out.println("输入的操作不正确,请重新输入!");
}
}
}
private static void addGrade(Scanner scanner) {
System.out.print("请输入学生学号:");
String studentId = scanner.next();
if (!studentMap.containsKey(studentId)) {
System.out.println("该学号不存在,请重新输入!");
return;
}
System.out.print("请输入课程编号:");
String courseId = scanner.next();
if (!courseMap.containsKey(courseId)) {
System.out.println("该编号不存在,请重新输入!");
return;
}
Student student = studentMap.get(studentId);
Course course = courseMap.get(courseId);
System.out.print("请输入成绩:");
double grade = scanner.nextDouble();
student.getGradeMap().put(course, grade);
System.out.println("录入成绩信息成功!");
}
private static void updateGrade(Scanner scanner) {
System.out.print("请输入学生学号:");
String studentId = scanner.next();
if (!studentMap.containsKey(studentId)) {
System.out.println("该学号不存在,请重新输入!");
return;
}
System.out.print("请输入课程编号:");
String courseId = scanner.next();
if (!courseMap.containsKey(courseId)) {
System.out.println("该编号不存在,请重新输入!");
return;
}
Student student = studentMap.get(studentId);
Course course = courseMap.get(courseId);
if (!student.getGradeMap().containsKey(course)) {
System.out.println("该学生没有该课程的成绩信息,请重新输入!");
return;
}
System.out.print("请输入成绩:");
double grade = scanner.nextDouble();
student.getGradeMap().put(course, grade);
System.out.println("修改成绩信息成功!");
}
private static void queryGrade(Scanner scanner) {
System.out.print("请输入学生学号:");
String studentId = scanner.next();
if (!studentMap.containsKey(studentId)) {
System.out.println("该学号不存在,请重新输入!");
return;
}
Student student = studentMap.get(studentId);
System.out.print("请输入课程编号:");
String courseId = scanner.next();
if (!courseMap.containsKey(courseId)) {
System.out.println("该编号不存在,请重新输入!");
return;
}
Course course = courseMap.get(courseId);
if (!student.getGradeMap().containsKey(course)) {
System.out.println("该学生没有该课程的成绩信息,请重新输入!");
return;
}
double grade = student.getGradeMap().get(course);
System.out.println("学生:" + student.getName() + ",课程:" + course.getName() + ",成绩:" + grade);
}
private static void gradeAnalysis(Scanner scanner) {
while (true) {
System.out.println("===== 成绩统计分析 =====");
System.out.println("1. 按学生统计成绩");
System.out.println("2. 按课程统计成绩");
System.out.println("0. 返回主菜单");
System.out.println("=========================");
System.out.print("请输入要进行的操作:");
int choice = scanner.nextInt();
switch (choice) {
case 1:
analysisByStudent();
break;
case 2:
analysisByCourse();
break;
case 0:
return;
default:
System.out.println("输入的操作不正确,请重新输入!");
}
}
}
private static void analysisByStudent() {
List<Student> studentList = new ArrayList<>(studentMap.values());
studentList.sort((s1, s2) -> {
double s1Avg = s1.getGradeMap().values().stream().mapToDouble(Double::doubleValue).average().orElse(0);
double s2Avg = s2.getGradeMap().values().stream().mapToDouble(Double::doubleValue).average().orElse(0);
return Double.compare(s2Avg, s1Avg);
});
System.out.println("学生排名:");
for (int i = 0; i < studentList.size(); i++) {
Student student = studentList.get(i);
double avg = student.getGradeMap().values().stream().mapToDouble(Double::doubleValue).average().orElse(0);
System.out.println(String.format("%d. 学生:%s,平均成绩:%.2f", i + 1, student.getName(), avg));
}
}
private static void analysisByCourse() {
List<Course> courseList = new ArrayList<>(courseMap.values());
courseList.sort((c1, c2) -> {
double c1Avg = studentMap.values().stream().filter(s -> s.getGradeMap().containsKey(c1))
.mapToDouble(s -> s.getGradeMap().get(c1)).average().orElse(0);
double c2Avg = studentMap.values().stream().filter(s -> s.getGradeMap().containsKey(c2))
.mapToDouble(s -> s.getGradeMap().get(c2)).average().orElse(0);
return Double.compare(c2Avg, c1Avg);
});
System.out.println("课程排名:");
for (int i = 0; i < courseList.size(); i++) {
Course course = courseList.get(i);
double avg = studentMap.values().stream().filter(s -> s.getGradeMap().containsKey(course))
.mapToDouble(s -> s.getGradeMap().get(course)).average().orElse(0);
System.out.println(String.format("%d. 课程:%s,平均成绩:%.2f", i + 1, course.getName(), avg));
}
}
static class Student {
private String studentId;
private String name;
private Map<Course, Double> gradeMap = new HashMap<>();
public Student(String studentId, String name) {
this.studentId = studentId;
this.name = name;
}
public String getStudentId() {
return studentId;
}
public void setStudentId(String studentId) {
this.studentId = studentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Map<Course, Double> getGradeMap() {
return gradeMap;
}
public void setGradeMap(Map<Course, Double> gradeMap) {
this.gradeMap = gradeMap;
}
}
static class Course {
private String courseId;
private String name;
public Course(String courseId, String name) {
this.courseId = courseId;
this.name = name;
}
public String getCourseId() {
return courseId;
}
public void setCourseId(String courseId) {
this.courseId = courseId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
```
以上代码实现了一个简单的学生成绩管理系统,其中涉及到了学生信息管理、课程信息管理、成绩信息管理和成绩统计分析等功能。你可以根据自己的需求进行扩展和修改。