用完整的Java语言完成程序开发,完成的系统应满足以下要求: 学生课程成绩信息(班级,学号,姓名,性别,Java成绩,网页设计成绩,英语成绩,库存量)存放在一个文本文件中,需要时从文件中读取,成绩按班级存放。 1.程序提供给用户7个基本功能:显示所有学生的成绩、添加学生成绩、修改学生成绩、删除学生成绩、统计每个学生的总成绩、统计每个学生的平均分、退出系统。 2.显示所有学生的成绩:从文档中读取数据然后在控制台中显示; 3.添加学生成绩:可根据学号把学生的成绩添加到文件中,初始时成绩设为0; 4.修改学生成绩:可以根据学号修改课程成绩; 5.删除学生成绩:可以根据学号删除学生的整条成绩记录; 6.统计每个学生的总成绩:计算学生各门成绩的和; 7.统计每个学生的平均分:计算学生成绩的平均分; 退出系统:结束程序
时间: 2024-01-03 14:03:53 浏览: 77
好的,我明白你的问题了。这是一个基于Java语言开发的学生成绩管理系统,需要实现7个基本功能。下面是一个基本的代码框架,你可以参考一下:
```
import java.io.*;
import java.util.*;
public class StudentGradeManagementSystem {
private static final String FILE_NAME = "grades.txt";
private Map<String, Map<String, Integer>> grades;
public StudentGradeManagementSystem() {
grades = new HashMap<>();
loadGradesFromFile();
}
public void run() {
Scanner input = 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("5. 统计每个学生的总成绩");
System.out.println("6. 统计每个学生的平均分");
System.out.println("7. 退出系统");
int choice = input.nextInt();
switch (choice) {
case 1:
displayAllGrades();
break;
case 2:
addGrade();
break;
case 3:
modifyGrade();
break;
case 4:
deleteGrade();
break;
case 5:
calculateTotalGrade();
break;
case 6:
calculateAverageGrade();
break;
case 7:
saveGradesToFile();
System.out.println("已退出系统。");
return;
default:
System.out.println("输入错误,请重新输入。");
break;
}
}
}
private void loadGradesFromFile() {
try (Scanner fileScanner = new Scanner(new File(FILE_NAME))) {
while (fileScanner.hasNextLine()) {
String line = fileScanner.nextLine();
String[] parts = line.split(",");
String clazz = parts[0];
String id = parts[1];
String name = parts[2];
String sex = parts[3];
int javaGrade = Integer.parseInt(parts[4]);
int webGrade = Integer.parseInt(parts[5]);
int englishGrade = Integer.parseInt(parts[6]);
int stock = Integer.parseInt(parts[7]);
Map<String, Integer> gradeMap = new HashMap<>();
gradeMap.put("Java", javaGrade);
gradeMap.put("Web", webGrade);
gradeMap.put("English", englishGrade);
gradeMap.put("Stock", stock);
grades.put(id, gradeMap);
}
} catch (FileNotFoundException e) {
System.out.println("无法找到成绩文件,将创建一个新文件。");
}
}
private void saveGradesToFile() {
try (PrintWriter writer = new PrintWriter(new File(FILE_NAME))) {
for (Map.Entry<String, Map<String, Integer>> entry : grades.entrySet()) {
String id = entry.getKey();
Map<String, Integer> gradeMap = entry.getValue();
String line = String.format("%s,%s,%s,%s,%d,%d,%d,%d",
"Class", id, "Name", "Sex", gradeMap.get("Java"), gradeMap.get("Web"),
gradeMap.get("English"), gradeMap.get("Stock"));
writer.println(line);
}
} catch (FileNotFoundException e) {
System.out.println("无法写入成绩文件。");
}
}
private void displayAllGrades() {
for (Map.Entry<String, Map<String, Integer>> entry : grades.entrySet()) {
String id = entry.getKey();
Map<String, Integer> gradeMap = entry.getValue();
String line = String.format("%s,%s,%s,%s,%d,%d,%d,%d",
"Class", id, "Name", "Sex", gradeMap.get("Java"), gradeMap.get("Web"),
gradeMap.get("English"), gradeMap.get("Stock"));
System.out.println(line);
}
}
private void addGrade() {
Scanner input = new Scanner(System.in);
System.out.print("请输入学号:");
String id = input.next();
if (grades.containsKey(id)) {
System.out.println("学号已存在。");
return;
}
Map<String, Integer> gradeMap = new HashMap<>();
gradeMap.put("Java", 0);
gradeMap.put("Web", 0);
gradeMap.put("English", 0);
gradeMap.put("Stock", 0);
grades.put(id, gradeMap);
System.out.println("添加成功。");
}
private void modifyGrade() {
Scanner input = new Scanner(System.in);
System.out.print("请输入学号:");
String id = input.next();
if (!grades.containsKey(id)) {
System.out.println("学号不存在。");
return;
}
Map<String, Integer> gradeMap = grades.get(id);
System.out.print("请输入要修改的课程名称(Java/Web/English/Stock):");
String course = input.next();
if (!gradeMap.containsKey(course)) {
System.out.println("课程名称错误。");
return;
}
System.out.print("请输入新的成绩:");
int newGrade = input.nextInt();
gradeMap.put(course, newGrade);
System.out.println("修改成功。");
}
private void deleteGrade() {
Scanner input = new Scanner(System.in);
System.out.print("请输入学号:");
String id = input.next();
if (!grades.containsKey(id)) {
System.out.println("学号不存在。");
return;
}
grades.remove(id);
System.out.println("删除成功。");
}
private void calculateTotalGrade() {
Scanner input = new Scanner(System.in);
System.out.print("请输入学号:");
String id = input.next();
if (!grades.containsKey(id)) {
System.out.println("学号不存在。");
return;
}
Map<String, Integer> gradeMap = grades.get(id);
int totalGrade = gradeMap.get("Java") + gradeMap.get("Web") + gradeMap.get("English");
System.out.println("总成绩为:" + totalGrade);
}
private void calculateAverageGrade() {
Scanner input = new Scanner(System.in);
System.out.print("请输入学号:");
String id = input.next();
if (!grades.containsKey(id)) {
System.out.println("学号不存在。");
return;
}
Map<String, Integer> gradeMap = grades.get(id);
int totalGrade = gradeMap.get("Java") + gradeMap.get("Web") + gradeMap.get("English");
double averageGrade = totalGrade / 3.0;
System.out.println("平均分为:" + averageGrade);
}
public static void main(String[] args) {
StudentGradeManagementSystem system = new StudentGradeManagementSystem();
system.run();
}
}
```
在这个代码框架中,我们使用了一个Map来存储学生成绩信息,其中key是学号,value是一个Map,存储了该学生的各门课程成绩和库存量。在程序启动时,会从指定的文本文件中读取学生成绩信息,程序结束时会将学生成绩信息保存回文本文件中。
程序提供了7个基本功能,分别对应着题目中的要求。其中涉及到了文件读写、字符串处理、Map操作、控制台输出等多个知识点,相信这个代码框架可以帮助你完成这个学生成绩管理系统的开发。
阅读全文