用c++语言设计一个基于面向对象程序设计的学生管理信息系统要求学生成绩管理系统有若干学生成绩记录组成,每个记录由学号、姓名、性别和成绩四部分组成,学号不超过11个字符,姓名不超过20个字符,性别为’m’(male)或’f’(female),成绩为double型数据。该系统具有以下功能: ⑴程序开始执行时显示系统首界面及版权信息后,显示以下主菜单:1.添加学生成绩记录2.显示学生成绩记录 3.查找学生成绩记录 4.删除学生成绩记录 5.保存学生成绩记录6.导出学生成绩记录 0.退出学生成绩管理系统
时间: 2024-03-06 09:47:32 浏览: 61
学生成绩管理系统 系统功能基本要求 学生信息,学号、姓名、性别、专业、年级等
好的,下面是一个简单的基于面向对象的学生成绩管理信息系统的 C++ 代码实现,具有以上所述的功能:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
class Student {
public:
string id; // 学号
string name; // 姓名
char gender; // 性别
double score; // 成绩
Student(string id, string name, char gender, double score) {
this->id = id;
this->name = name;
this->gender = gender;
this->score = score;
}
};
class StudentManager {
private:
vector<Student> stuList; // 学生记录列表
public:
void addStudent() {
string id, name;
char gender;
double score;
cout << "请输入学生学号(不超过11个字符):";
cin >> id;
cout << "请输入学生姓名(不超过20个字符):";
cin >> name;
cout << "请输入学生性别('m'表示男性,'f'表示女性):";
cin >> gender;
cout << "请输入学生成绩:";
cin >> score;
Student stu(id, name, gender, score);
stuList.push_back(stu);
cout << "学生记录添加成功!" << endl;
}
void showStudents() {
if (stuList.empty()) {
cout << "当前没有学生记录!" << endl;
return;
}
cout << "学号\t姓名\t性别\t成绩" << endl;
for (auto stu : stuList) {
cout << stu.id << "\t" << stu.name << "\t" << stu.gender << "\t" << stu.score << endl;
}
}
void searchStudent() {
if (stuList.empty()) {
cout << "当前没有学生记录!" << endl;
return;
}
string id;
cout << "请输入要查找的学生学号:";
cin >> id;
for (auto stu : stuList) {
if (stu.id == id) {
cout << "学号\t姓名\t性别\t成绩" << endl;
cout << stu.id << "\t" << stu.name << "\t" << stu.gender << "\t" << stu.score << endl;
return;
}
}
cout << "没有找到该学生记录!" << endl;
}
void deleteStudent() {
if (stuList.empty()) {
cout << "当前没有学生记录!" << endl;
return;
}
string id;
cout << "请输入要删除的学生学号:";
cin >> id;
auto iter = find_if(stuList.begin(), stuList.end(), [id](const Student& stu) {
return stu.id == id;
});
if (iter != stuList.end()) {
stuList.erase(iter);
cout << "学生记录删除成功!" << endl;
}
else {
cout << "没有找到该学生记录!" << endl;
}
}
void saveToFile() {
if (stuList.empty()) {
cout << "当前没有学生记录!" << endl;
return;
}
ofstream fout("students.txt");
if (!fout.is_open()) {
cout << "文件打开失败!" << endl;
return;
}
for (auto stu : stuList) {
fout << stu.id << " " << stu.name << " " << stu.gender << " " << stu.score << endl;
}
fout.close();
cout << "学生记录已保存到文件!" << endl;
}
void exportToFile() {
if (stuList.empty()) {
cout << "当前没有学生记录!" << endl;
return;
}
string filename;
cout << "请输入要导出的文件名(不含扩展名):";
cin >> filename;
ofstream fout(filename + ".csv");
if (!fout.is_open()) {
cout << "文件打开失败!" << endl;
return;
}
fout << "学号,姓名,性别,成绩" << endl;
for (auto stu : stuList) {
fout << stu.id << "," << stu.name << "," << stu.gender << "," << stu.score << endl;
}
fout.close();
cout << "学生记录已导出到文件!" << endl;
}
};
int main() {
StudentManager manager;
int choice;
cout << "欢迎使用学生成绩管理系统!" << endl;
cout << "(C)2021 by CSDN" << endl;
while (true) {
cout << "=========================================" << endl;
cout << "请选择操作:1.添加学生成绩记录 2.显示学生成绩记录 3.查找学生成绩记录 4.删除学生成绩记录 5.保存学生成绩记录 6.导出学生成绩记录 0.退出学生成绩管理系统" << endl;
cin >> choice;
switch (choice) {
case 1:
manager.addStudent();
break;
case 2:
manager.showStudents();
break;
case 3:
manager.searchStudent();
break;
case 4:
manager.deleteStudent();
break;
case 5:
manager.saveToFile();
break;
case 6:
manager.exportToFile();
break;
case 0:
cout << "感谢使用学生成绩管理系统!" << endl;
return 0;
default:
cout << "输入错误,请重新选择操作!" << endl;
}
}
}
```
该程序使用了 `Student` 和 `StudentManager` 两个类来分别表示学生记录和学生成绩管理器,其中 `Student` 类包含了学生记录的四个属性,`StudentManager` 类提供了添加、显示、查找、删除、保存和导出学生成绩记录的功能。程序启动后显示主菜单,根据用户的选择执行相应的操作。学生记录可以保存到文件中,也可以导出为 CSV 格式的文件。
阅读全文