基于 C++设计一个学生成绩管理系统,每个记录由学号、姓名、性别和成绩四部分组成,学号不超过11个字符,姓名不超过20个字符,性别为’m’(male)或’f’(female),成绩为double型数据。该系统具有以下功能: 1.添加学生成绩记录 2.显示学生成绩记录 3.查找学生成绩记录 4.删除学生成绩记录 5.保存学生成绩记录 6.导出学生成绩记录
时间: 2024-03-06 18:50:57 浏览: 73
以下是一个基于 C++ 的学生成绩管理系统的设计:
1. 定义学生类,包括学号、姓名、性别和成绩四个属性,以及相应的 get 和 set 方法。
```c++
class Student {
public:
string id; // 学号
string name; // 姓名
char gender; // 性别
double score; // 成绩
string getId() const { return id; }
void setId(string newId) { id = newId; }
string getName() const { return name; }
void setName(string newName) { name = newName; }
char getGender() const { return gender; }
void setGender(char newGender) { gender = newGender; }
double getScore() const { return score; }
void setScore(double newScore) { score = newScore; }
};
```
2. 定义管理系统类,包括一个学生数组和相应的方法。
```c++
class StudentManager {
public:
Student students[MAX_STUDENTS]; // 学生数组
int count = 0; // 记录当前学生数量
// 添加学生记录
void addStudent(Student student);
// 显示所有学生记录
void displayAllStudents();
// 根据学号查找学生记录
void findStudentById(string id);
// 根据姓名查找学生记录
void findStudentByName(string name);
// 删除学生记录
void deleteStudent(string id);
// 保存学生记录到文件
void saveToFile(string filename);
// 从文件读取学生记录
void readFromFile(string filename);
// 导出学生记录到文件
void exportToFile(string filename);
};
```
3. 实现各个方法。
```c++
// 添加学生记录
void StudentManager::addStudent(Student student) {
if (count < MAX_STUDENTS) {
students[count++] = student;
cout << "添加成功!" << endl;
} else {
cout << "学生记录已满,无法添加!" << endl;
}
}
// 显示所有学生记录
void StudentManager::displayAllStudents() {
if (count == 0) {
cout << "当前没有学生记录!" << endl;
return;
}
cout << "学号\t姓名\t性别\t成绩" << endl;
for (int i = 0; i < count; i++) {
Student student = students[i];
cout << student.getId() << "\t" << student.getName() << "\t" << student.getGender() << "\t" << student.getScore() << endl;
}
}
// 根据学号查找学生记录
void StudentManager::findStudentById(string id) {
for (int i = 0; i < count; i++) {
Student student = students[i];
if (student.getId() == id) {
cout << "学号\t姓名\t性别\t成绩" << endl;
cout << student.getId() << "\t" << student.getName() << "\t" << student.getGender() << "\t" << student.getScore() << endl;
return;
}
}
cout << "未找到学号为 " << id << " 的学生记录!" << endl;
}
// 根据姓名查找学生记录
void StudentManager::findStudentByName(string name) {
for (int i = 0; i < count; i++) {
Student student = students[i];
if (student.getName() == name) {
cout << "学号\t姓名\t性别\t成绩" << endl;
cout << student.getId() << "\t" << student.getName() << "\t" << student.getGender() << "\t" << student.getScore() << endl;
}
}
cout << "未找到姓名为 " << name << " 的学生记录!" << endl;
}
// 删除学生记录
void StudentManager::deleteStudent(string id) {
for (int i = 0; i < count; i++) {
Student student = students[i];
if (student.getId() == id) {
for (int j = i; j < count - 1; j++) {
students[j] = students[j + 1];
}
count--;
cout << "删除成功!" << endl;
return;
}
}
cout << "未找到学号为 " << id << " 的学生记录!" << endl;
}
// 保存学生记录到文件
void StudentManager::saveToFile(string filename) {
ofstream fout(filename);
if (fout.is_open()) {
for (int i = 0; i < count; i++) {
Student student = students[i];
fout << student.getId() << " " << student.getName() << " " << student.getGender() << " " << student.getScore() << endl;
}
fout.close();
cout << "保存成功!" << endl;
} else {
cout << "无法打开文件 " << filename << "!" << endl;
}
}
// 从文件读取学生记录
void StudentManager::readFromFile(string filename) {
ifstream fin(filename);
if (fin.is_open()) {
string line;
while (getline(fin, line)) {
stringstream ss(line);
string id, name, gender;
double score;
ss >> id >> name >> gender >> score;
Student student;
student.setId(id);
student.setName(name);
student.setGender(gender[0]);
student.setScore(score);
addStudent(student);
}
fin.close();
cout << "读取成功!" << endl;
} else {
cout << "无法打开文件 " << filename << "!" << endl;
}
}
// 导出学生记录到文件
void StudentManager::exportToFile(string filename) {
ofstream fout(filename);
if (fout.is_open()) {
fout << "学号,姓名,性别,成绩" << endl;
for (int i = 0; i < count; i++) {
Student student = students[i];
fout << student.getId() << "," << student.getName() << "," << student.getGender() << "," << student.getScore() << endl;
}
fout.close();
cout << "导出成功!" << endl;
} else {
cout << "无法打开文件 " << filename << "!" << endl;
}
}
```
以上就是这个学生成绩管理系统的基本设计和实现。您可以根据自己的需求进行修改和扩展。
阅读全文