c++程序: 实现一个单门课程成绩管理系统。进入系统时,用户可选择身份:1.教师;2学生。 以教师身份进入后,如果上次已保存了数据,可将文件中数据读取出来,并允许修改部分数据。如果未保存数据,则允许教师录入新的数据。具体功能包括: 可录入或修改课程信息,包括:课程编号、课程名称; 可录入或修改课程的评分项目 (数量任意,不低于3项),包括:项目名称、所占分比例(需进行合法性检测,各项目比例之和为100%);示例如下: 项目名称 所占比例 实验 30% 作业 20% 期中考试 20% 期末考试 30% 注: 一旦录入学生成绩后,评分项目不允许修改;未录入成绩数据时,允许进行修改。 3.可录入、修改、刑除学生(学生数量不限)读门课程的各项成绩,并按照其比例自动算出总成绩;学生基本信息包括学号、姓名;示例如下: 请录入“c++编程”课程成绩 学号:201901 姓名:张三 实验:60 作业:70 期中考试:60 期未考试:80 信息显示功能。可显示课程信息、评分项目信息、所有学生的成绩单。 5.能够将上述数据保存在文件中,二进制、文本文件均可。(课程信息和评 分项目信息可保存一个文件,成绩单


如何保存为另一个文件)。 下面是一个C++程序的实现示例: ```cpp #include <iostream> #include <fstream> #include <vector> using namespace std; // 课程信息结构体 struct Course { int code; // 课程编号 string name; // 课程名称 }; // 评分项目结构体 struct ScoreItem { string name; // 项目名称 float weight; // 所占比例 }; // 学生成绩结构体 struct StudentScore { int studentId; // 学号 string studentName; // 姓名 vector<float> scores; // 成绩列表 float totalScore; // 总成绩 }; // 保存数据到文件 void saveDataToFile(vector<Course> courses, vector<ScoreItem> scoreItems, vector<StudentScore> studentScores) { ofstream file("data.txt", ios::binary); // 保存课程信息和评分项目信息 int coursesCount = courses.size(); file.write((char*)&coursesCount, sizeof(int)); for (int i = 0; i < coursesCount; i++) { file.write((char*)&courses[i], sizeof(Course)); } int scoreItemsCount = scoreItems.size(); file.write((char*)&scoreItemsCount, sizeof(int)); for (int i = 0; i < scoreItemsCount; i++) { file.write((char*)&scoreItems[i], sizeof(ScoreItem)); } // 保存学生成绩 int studentScoresCount = studentScores.size(); file.write((char*)&studentScoresCount, sizeof(int)); for (int i = 0; i < studentScoresCount; i++) { file.write((char*)&studentScores[i], sizeof(StudentScore)); } file.close(); } // 从文件中读取数据 void loadDataFromFile(vector<Course>& courses, vector<ScoreItem>& scoreItems, vector<StudentScore>& studentScores) { ifstream file("data.txt", ios::binary); // 读取课程信息和评分项目信息 int coursesCount; file.read((char*)&coursesCount, sizeof(int)); for (int i = 0; i < coursesCount; i++) { Course course; file.read((char*)&course, sizeof(Course)); courses.push_back(course); } int scoreItemsCount; file.read((char*)&scoreItemsCount, sizeof(int)); for (int i = 0; i < scoreItemsCount; i++) { ScoreItem scoreItem; file.read((char*)&scoreItem, sizeof(ScoreItem)); scoreItems.push_back(scoreItem); } // 读取学生成绩 int studentScoresCount; file.read((char*)&studentScoresCount, sizeof(int)); for (int i = 0; i < studentScoresCount; i++) { StudentScore studentScore; file.read((char*)&studentScore, sizeof(StudentScore)); studentScores.push_back(studentScore); } file.close(); } // 录入或修改课程信息 void enterOrUpdateCourseInfo(vector<Course>& courses) { Course course; cout << "请输入课程编号:"; cin >> course.code; cout << "请输入课程名称:"; cin >> course.name; bool updated = false; for (int i = 0; i < courses.size(); i++) { if (courses[i].code == course.code) { courses[i] = course; // 更新已有课程信息 updated = true; break; } } if (!updated) { courses.push_back(course); // 添加新的课程信息 } } // 录入或修改评分项目信息 void enterOrUpdateScoreItemInfo(vector<ScoreItem>& scoreItems) { ScoreItem scoreItem; cout << "请输入项目名称:"; cin >> scoreItem.name; cout << "请输入所占比例:"; cin >> scoreItem.weight; bool updated = false; for (int i = 0; i < scoreItems.size(); i++) { if (scoreItems[i].name == scoreItem.name) { scoreItems[i] = scoreItem; // 更新已有评分项目信息 updated = true; break; } } if (!updated) { scoreItems.push_back(scoreItem); // 添加新的评分项目信息 } } // 录入学生成绩 void enterStudentScores(vector<Course> courses, vector<ScoreItem> scoreItems, vector<StudentScore>& studentScores) { if (courses.empty() || scoreItems.empty()) { cout << "请先录入课程信息和评分项目信息!" << endl; return; } int courseIndex; for (int i = 0; i < courses.size(); i++) { cout << i + 1 << ". " << courses[i].name << endl; } cout << "请输入要录入成绩的课程序号:"; cin >> courseIndex; courseIndex--; float totalWeight = 0; for (int i = 0; i < scoreItems.size(); i++) { totalWeight += scoreItems[i].weight; } vector<float> weights; for (int i = 0; i < scoreItems.size(); i++) { weights.push_back(scoreItems[i].weight / totalWeight); // 计算各项目权重 } bool updated = false; for (int i = 0; i < studentScores.size(); i++) { if (studentScores[i].studentId == courseIndex) { cout << "学生成绩已存在,是否更新?(Y/N)"; char choice; cin >> choice; if (choice == 'Y' || choice == 'y') { studentScores[i].scores.clear(); for (int j = 0; j < scoreItems.size(); j++) { float score; cout << "请输入" << scoreItems[j].name << "的成绩:"; cin >> score; studentScores[i].scores.push_back(score); } // 计算总成绩 studentScores[i].totalScore = 0; for (int j = 0; j < scoreItems.size(); j++) { studentScores[i].totalScore += studentScores[i].scores[j] * weights[j]; } updated = true; } break; } } if (!updated) { StudentScore studentScore; studentScore.studentId = courseIndex; cout << "请输入学号:"; cin >> studentScore.studentName; for (int i = 0; i < scoreItems.size(); i++) { float score; cout << "请输入" << scoreItems[i].name << "的成绩:"; cin >> score; studentScore.scores.push_back(score); } // 计算总成绩 studentScore.totalScore = 0; for (int j = 0; j < scoreItems.size(); j++) { studentScore.totalScore += studentScore.scores[j] * weights[j]; } studentScores.push_back(studentScore); } } // 显示课程信息 void displayCourseInfo(vector<Course> courses) { cout << "课程信息:" << endl; for (int i = 0; i < courses.size(); i++) { cout << "课程编号: " << courses[i].code << ",课程名称: " << courses[i].name << endl; } } // 显示评分项目信息 void displayScoreItemInfo(vector<ScoreItem> scoreItems) { cout << "评分项目信息:" << endl; for (int i = 0; i < scoreItems.size(); i++) { cout << "项目名称: " << scoreItems[i].name << ",所占比例: " << scoreItems[i].weight << "%" << endl; } } // 显示学生成绩单 void displayStudentScores(vector<Course> courses, vector<ScoreItem> scoreItems, vector<StudentScore> studentScores) { if (courses.empty() || scoreItems.empty()) { cout << "还没有录入课程信息和评分项目信息!" << endl; return; } for (int i = 0; i < studentScores.size(); i++) { cout << "学号: " << studentScores[i].studentId + 1 << ",姓名: " << studentScores[i].studentName << endl; cout << "成绩详情:" << endl; for (int j = 0; j < scoreItems.size(); j++) { cout << scoreItems[j].name << ": " << studentScores[i].scores[j] << endl; } cout << "总成绩: " << studentScores[i].totalScore << endl; } } int main() { vector<Course> courses; vector<ScoreItem> scoreItems; vector<StudentScore> studentScores; // 检查是否已保存数据 ifstream file("data.txt", ios::binary); if (file) { cout << "检测到上次已保存的数据,是否读取?(Y/N)"; char choice; cin >> choice; if (choice == 'Y' || choice == 'y') { loadDataFromFile(courses, scoreItems, studentScores); } file.close(); } // 用户身份选择 int identity; cout << "请选择身份:1.教师 2.学生" << endl; cin >> identity; if (identity == 1) { while (true) { cout << "请选择操作:1.录入/修改课程信息 2.录入/修改评分项目信息 3.录入学生成绩 4.显示课程信息 5.显示评分项目信息 6.显示学生成绩单 7.保存数据并退出" << endl; int choice; cin >> choice; switch (choice) { case 1: enterOrUpdateCourseInfo(courses); break; case 2: enterOrUpdateScoreItemInfo(scoreItems); break; case 3: enterStudentScores(courses, scoreItems, studentScores); break; case 4: displayCourseInfo(courses); break; case 5: displayScoreItemInfo(scoreItems); break; case 6: displayStudentScores(courses, scoreItems, studentScores); break; case 7: saveDataToFile(courses, scoreItems, studentScores); return 0; default: cout << "请选择正确的操作!" << endl; break; } } } else if (identity == 2) { displayStudentScores(courses, scoreItems, studentScores); } else { cout << "请选择正确的身份!" << endl; } return 0; } ``` 注意:上述示例中的数据保存在名为"data.txt"的二进制文件中。 [2024-05-24 02:01:02 | AI写代码神器 | 6361点数解答]
- c++程序: 实现一个单门课程成绩管理系统。进入系统时,用户可选择身份:1.教师;2学生。 以教师身份进入后,如果上次已保存了数据,可将文件中数据读取出来,并允许修改部分数据。如果未保存数据,则允许教师录入新的数据。具体功能包括: 可录入或修改课程信息,包括:课程编号、课程名称; 可录入或修改课程的评分项目 (数量任意,不低于3项),包括:项目名称、所占分比例(需进行合法性检测,各项目比例之和为100%);示例如下: 项目名称 所占比例 实验 30% 作业 20% 期中考试 20% 期末考试 30% 注: 一旦录入学生成绩后,评分项目不允许修改;未录入成绩数据时,允许进行修改。 3.可录入、修改、刑除学生(学生数量不限)读门课程的各项成绩,并按照其比例自动算出总成绩;学生基本信息包括学号、姓名;示例如下: 请录入“c++编程”课程成绩 学号:201901 姓名:张三 实验:60 作业:70 期中考试:60 期未考试:80 信息显示功能。可显示课程信息、评分项目信息、所有学生的成绩单。 5.能够将上述数据保存在文件中,二进制、文本文件均可。(课程信息和评 分项目信息可保存一个文件,成绩单(6361点数解答 | 2024-05-24 02:01:02)332
- c++程序: 实现一个单门课程成绩管理系统。进入系统时,用户可选择身份:1.教师;2学生。 以教师身份进入后,如果上次已保存了数据,可将文件中数据读取出来,并允许修改部分数据。如果未保存数据,则允许教师录入新的数据。具体功能包括: 可录入或修改课程信息,包括:课程编号、课程名称; 可录入或修改课程的评分项目 (数量任意,不低于3项),包括:项目名称、所占分比例(需进行合法性检测,各项目比例之和为100%);示例如下: 项目名称 所占比例 实验 30% 作业 20% 期中考试 20% 期末考试 30% 注: 一旦录入学生成绩后,评分项目不允许修改;未录入成绩数据时,允许进行修改。 3.可录入、修改、刑除学生(学生数量不限)读门课程的各项成绩,并按照其比例自动算出总成绩;学生基本信息包括学号、姓名;示例如下: 学号:201901 姓名:张三 实验:60 作业:70 期中考试:60 期未考试:80 信息显示功能。可显示课程信息、评分项目信息、所有学生的成绩单。 5.能够将上述数据保存在文件中,二进制、文本文件均可。(课程信息和评 分项目信息可保存一个文件,成绩单可保存一个文件;也可全部保存为(4293点数解答 | 2024-05-24 10:20:03)261
- c++程序编写: 实现一个单门课程成绩管理系统。进入系统时,用户可选择身份:1.教师;2学生。 以教师身份进入后,如果上次已保存了数据,可将文件中数据读取出来,并允许修改部分数据。如果未保存数据,则允许教师录入新的数据。具体功能包括: 可录入或修改课程信息,包括:课程编号、课程名称; 可录入或修改课程的评分项目 (数量任意,不低于3项),包括:项目名称、所占分比例(需进行合法性检测,各项目比例之和为100%);示例如下: 项目名称 所占比例 实验 30% 作业 20% 期中考试 20% 期末考试 30% 注: 一旦录入学生成绩后,评分项目不允许修改;未录入成绩数据时,允许进行修改。 3.可录入、修改、刑除学生(学生数量不限)读门课程的各项成绩,并按照其比例自动算出总成绩;学生基本信息包括学号、姓名;示例如下: 学号:201901 姓名:张三 实验:60 作业:70 期中考试:60 期未考试:80 信息显示功能。可显示课程信息、评分项目信息、所有学生的成绩单。 5.能够将上述数据保存在文件中,二进制、文本文件均可。(课程信息和评 分项目信息可保存一个文件,成绩单可保存一个文件;也可全部保(68点数解答 | 2024-05-24 10:17:09)212
- 编写三个系别的学生类:英语系,计算机系,文学系(要求通过继承学生类),各系有以下成绩: 英语系:演讲,期末考试,期中考试; 计算机系:操作能力,英语写作,期中考试,期末考试; 文学系:演讲,作品,期末考试,期中考试; 其中,综合成绩方法通过接口规定 各系总分评测标准: 英语系: 演讲 50% 期末考试 25% 期中考试 25% 计算机系: 操作能力 40% 英语写作 20% 期末考试 20% 期中考试 20% 文学系: 演讲 35% 作品 35% 期末考试 15% 期中考试 15% 定义一个可容纳6个学生的学生类数组,给该数组装入各系学生(每系2个)的对象,然后按如下格式输出数组中的信息: 学号:XXXXXXXX 姓名:XXX 性别:X 年龄:XX 综合成绩:XX (1215点数解答 | 2025-05-13 18:55:25)94
- c语音 定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98↙ 李四 10002 100↙ 王五 10003 95↙ 赵六 10004 99↙ 钱七 10005 93↙ 输出样例: 请输入第1位同学的信息:姓名 学号 成绩↙ 请输入第2位同学的信息:姓名 学号 成绩↙ 请输入第3位同学的信息:姓名 学号 成绩↙ 请输入第4位同学的信息:姓名 学号 成绩↙ 请输入第5位同学的信息:姓名 学号 成绩↙ 钱七,10005,93↙ 王五,10003,95↙ 张三,10001,98↙ 赵六,10004,99↙ 李四,10002,100↙(373点数解答 | 2024-10-30 00:37:20)266
- 定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98 李四 10002 100 王五 10003 95 赵六 10004 99 钱七 10005 93 输出样例: 请输入第1位同学的信息:姓名 学号 成绩 请输入第2位同学的信息:姓名 学号 成绩 请输入第3位同学的信息:姓名 学号 成绩 请输入第4位同学的信息:姓名 学号 成绩 请输入第5位同学的信息:姓名 学号 成绩 钱七,10005,93 王五,10003,95 张三,10001,98 赵六,10004,99 李四,10002,100(354点数解答 | 2024-10-30 18:45:58)206
- c语言定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98↙ 李四 10002 100↙ 王五 10003 95↙ 赵六 10004 99↙ 钱七 10005 93↙ 输出样例: 请输入第1位同学的信息:姓名 学号 成绩↙ 请输入第2位同学的信息:姓名 学号 成绩↙ 请输入第3位同学的信息:姓名 学号 成绩↙ 请输入第4位同学的信息:姓名 学号 成绩↙ 请输入第5位同学的信息:姓名 学号 成绩↙ 钱七,10005,93↙ 王五,10003,95↙ 张三,10001,98↙ 赵六,10004,99↙ 李四,10002,100↙(373点数解答 | 2024-10-31 19:49:58)192
- c语音定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98↙ 李四 10002 100↙ 王五 10003 95↙ 赵六 10004 99↙ 钱七 10005 93↙ 输出样例: 请输入第1位同学的信息:姓名 学号 成绩↙ 请输入第2位同学的信息:姓名 学号 成绩↙ 请输入第3位同学的信息:姓名 学号 成绩↙ 请输入第4位同学的信息:姓名 学号 成绩↙ 请输入第5位同学的信息:姓名 学号 成绩↙ 钱七,10005,93↙ 王五,10003,95↙ 张三,10001,98↙ 赵六,10004,99↙ 李四,10002,100↙(326点数解答 | 2025-01-01 20:11:47)183
- 题目描述 某测试会根据考生的分数,划分四个等级,具体规则是: 60 60 分以下:不合格 60 60 分及以上 ~ 80 80 分以下:合格 80 80 分及以上 ~ 90 90 分以下:良好 90 90 分及以上 ~ 100 100 分:优秀 输入格式 一行,一个数 a a 表示某考生的分数。 输出格式 输出对应的等级 input1 复制 59.5 output1 复制 不合格 input2 复制 89.9 output2 复制 良好 数据规模与约定 对于 100 % 100% 的数据, 0 ≤ a ≤ 100 0≤a≤100。(234点数解答 | 2025-08-31 12:55:23)34
- 题目描述 某测试会根据考生的分数,划分四个等级,具体规则是: 60 60 分以下:不合格 60 60 分及以上 ~ 80 80 分以下:合格 80 80 分及以上 ~ 90 90 分以下:良好 90 90 分及以上 ~ 100 100 分:优秀 输入格式 一行,一个数 a a 表示某考生的分数。 输出格式 输出对应的等级 input1 复制 59.5 output1 复制 不合格 input2 复制 89.9 output2 复制 良好 数据规模与约定 对于 100 % 100% 的数据, 0 ≤ a ≤ 100 0≤a≤100。 语言方向:C++ 系统环境:Windows(259点数解答 | 2025-08-31 12:55:38)48
- 按照 2个student类(number,name,englishscore,mathscore,computerscore) 1个studentxw类(number,name,englishscore,mathscore,computerscore,responsibility) 1个studentbz类(number,name,englishscore,mathscore,computerscore,responsibility) 顺序输入数据。 提示:1、可以采用 scanner.nextline()读取一行数据,2、然后利用字符串的“分割字符串”方法split(",")(参考课本p112)将拿到的一行数据进行分割,得到字符串数组,3、通过调用包装类integer的parseint()方法和包装类double的parsedouble()方法将字符串数组中的某个字符串转换为int类型和double 类型。(参考课本p133)。 输入案例: 101,lisi,70,70,70 101,zhaoliu,70,70,70 102,zhangsan,90,90,(684点数解答 | 2024-10-20 10:07:05)207
- https://chatgpt.com/?q=%E5%8F%AF%E5%A4%9A%E5%9C%A8%E6%95%99%E7%8C%B4%E5%B0%8F%E5%AE%9D%E8%AE%A4%E8%AF%86%E6%95%B0%E4%BD%8D%EF%BC%8C%E4%B8%AA%E3%80%81%E5%8D%81%E3%80%81%E7%99%BE%E3%80%81%E5%8D%83%E3%80%81%E4%B8%87%E2%80%A6%E2%80%A6%E5%8F%AF%E5%A4%9A%E4%BB%8E%E5%B7%A6%E5%88%B0%E5%8F%B3%EF%BC%8C%E4%BB%8E%E9%AB%98%E4%BD%8D%E5%88%B0%E4%BD%8E%E4%BD%8D%EF%BC%8C%E5%86%99%E4%B8%8B%E4%BA%86%E4%B8%80%E4%BA%9B%E6%95%B0%E5%AD%97%EF%BC%8C%E8%AE%A9%E7%8C%B4%E5%B0%8F%E5%AE%9D%E6%8B%BC%E5%87%BA%E4%B8%80%E4%B8%AA(395点数解答 | 2025-04-05 11:50:38)138