diff --git a/S1323117顾智源.cpp b/S1323117顾智源.cpp new file mode 100644 index 0000000..c1144ac --- /dev/null +++ b/S1323117顾智源.cpp @@ -0,0 +1,151 @@ +#include +#include +#include +#include + +// 学生类 +class Student { +public: + // 构造函数 + Student(const std::string& name, const std::string& id, int totalScore, + int chineseScore, int mathScore, int englishScore, + int elective1Score, int elective2Score1, int elective2Score2, int rank) + : name(name), id(id), totalScore(totalScore), + chineseScore(chineseScore), mathScore(mathScore), englishScore(englishScore), + elective1Score(elective1Score), elective2Score1(elective2Score1), elective2Score2(elective2Score2), + rank(rank) {} + + // 打印学生信息 + void printInfo() const { + std::cout << "Name: " << name << std::endl; + std::cout << "ID: " << id << std::endl; + std::cout << "Total Score: " << totalScore << std::endl; + std::cout << "Chinese Score: " << chineseScore << std::endl; + std::cout << "Math Score: " << mathScore << std::endl; + std::cout << "English Score: " << englishScore << std::endl; + std::cout << " Score: " << totalScore << std::endl; + std::cout << "Elective1 Score: " << elective1Score << std::endl; + std::cout << "Elective2 Score1: " << elective2Score1 << std::endl; + std::cout << "Elective2 Score2: " << elective2Score2 << std::endl; + std::cout << "Rank: " << rank << std::endl; + } + +private: + std::string name; + std::string id; + int totalScore; + int chineseScore; + int mathScore; + int englishScore; + int elective1Score; + int elective2Score1; + int elective2Score2; + int rank; +}; + +// 学生管理类 +class StudentManager { +public: + // 添加学生 + void addStudent(const Student& student) { + students.push_back(student); + } + + // 打印所有学生信息 + void printAllStudents() const { + for (const auto& student : students) { + student.printInfo(); + std::cout << std::endl; // 添加换行符以便分隔不同学生的信息 + } + } + + void saveToFile(const std::string& filename) const { + std::ofstream file(filename); + if (file.is_open()) { + for (const auto& student : students) { + // 假设有一个函数可以将Student对象转化为可保存的字符串 + std::string studentStr = studentToString(student); + file << studentStr << std::endl; + } + file.close(); + std::cout << "学生信息已保存到文件: " << filename << std::endl; + } else { + std::cerr << "无法打开文件: " << filename << std::endl; + } + } + static std::string studentToString(const Student& student) { + std::stringstream ss; + ss << s.name << "\t" << s.id << "\t" << s.totalScore << "\t" << s.chineseScore << "\t" << s.mathScore << "\t" << s.englishScore << "\t" << s.elective1Score << "\t" << s.elective2Score1 << "\t" << s.elective2Score2; + return ss.str(); + + +private: + std::vector students; // 使用STL中的vector来管理学生信息 +}; +} + + +int main() { + StudentManager manager; + + // 添加学生信息到管理器 ,例如学生张三,学号为123456789,高考总成绩为650,语文成绩为120,数学成绩为130,英语成绩为110,物理成绩为100,化学成绩为90,政治成绩为80,省排名为2000 + manager.addStudent(Student("张三", "123456789", 650, 120, 130, 110, 100, 90, 80, 2000)); + + // 打印所有学生信息 + manager.printAllStudents(); + + StudentManager manager; + bool quit = false; + + while (!quit) { + // 显示菜单 + std::cout << "1. 添加学生" << std::endl; + std::cout << "2. 退出" << std::endl; + + // 接收用户输入 + int choice; + std::cin >> choice; + + switch (choice) { + case 1: { + std::string name, id; + int totalScore, chineseScore, mathScore, englishScore, elective1Score, elective2Score1, elective2Score2, rank; + std::cout << "请输入学生姓名: "; + std::cin >> name; + std::cout << "请输入准考证号: "; + std::cin >> id; + std::cout << "请输入高考总成绩: "; + std::cin >> totalScore; + std::cout << "请输入语文成绩: "; + std::cin >> chineseScore; + std::cout << "请输入数学成绩: "; + std::cin >> mathScore; + std::cout << "请输入英语成绩: "; + std::cin >> englishScore; + std::cout << "请输入二选一科目成绩: "; + std::cin >> elective1Score; + std::cout << "请输入四选二科目一成绩: "; + std::cin >> elective2Score1; + std::cout << "请输入四选二科目二成绩: "; + std::cin >> elective2Score2; + std::cout << "请输入省排名: "; + std::cin >> rank; + + + // 创建Student对象并添加到管理器 + manager.addStudent(Student(name, id, totalScore, chineseScore, mathScore, englishScore, elective1Score, elective2Score1, elective2Score2, rank)); + break; + } + case 2: + quit = true; + break; + default: + std::cout << "无效的选择,请重新输入." << std::endl; + } + } + + // 保存学生信息到文件 + manager.saveToFile("students.txt"); + + return 0; +} \ No newline at end of file