You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cpp/S1323117顾智源.cpp

151 lines
5.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include <iostream>
#include <string>
#include <vector>
#include <fstream>
// 学生类
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<Student> 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;
}