c++做学生信息管理系统,要求可以添加或删除学生信息、修改学生信息、遍历学生信息、退出系统
时间: 2023-08-11 19:06:05 浏览: 47
好的,下面是一个简单的 C++ 学生信息管理系统的实现,可以实现添加/删除/修改/遍历学生信息以及退出系统的功能。具体实现思路如下:
1. 定义学生信息结构体,包括学号、姓名、年龄、性别、成绩等信息。
2. 使用文件读写来保存和读取学生信息,可以使用文本文件或二进制文件。
3. 实现添加、删除、修改、遍历等功能。可以通过菜单选择相应的功能,使用 switch 语句来实现。
4. 添加异常处理,处理用户输入错误或文件读写错误等异常情况。
下面是一个简单的代码框架,供参考:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
struct Student {
string id; // 学号
string name; // 姓名
int age; // 年龄
char gender; // 性别
float score; // 成绩
};
// 添加学生信息
void addStudent(vector<Student>& students) {
Student stu;
cout << "请输入学生信息:" << endl;
cout << "学号:";
cin >> stu.id;
cout << "姓名:";
cin >> stu.name;
cout << "年龄:";
cin >> stu.age;
cout << "性别:";
cin >> stu.gender;
cout << "成绩:";
cin >> stu.score;
students.push_back(stu);
cout << "添加成功!" << endl;
}
// 删除学生信息
void deleteStudent(vector<Student>& students) {
string id;
cout << "请输入要删除的学生学号:";
cin >> id;
for (auto it = students.begin(); it != students.end(); it++) {
if (it->id == id) {
students.erase(it);
cout << "删除成功!" << endl;
return;
}
}
cout << "未找到该学生!" << endl;
}
// 修改学生信息
void updateStudent(vector<Student>& students) {
string id;
cout << "请输入要修改的学生学号:";
cin >> id;
for (auto& stu : students) {
if (stu.id == id) {
cout << "请输入新的学生信息:" << endl;
cout << "学号:";
cin >> stu.id;
cout << "姓名:";
cin >> stu.name;
cout << "年龄:";
cin >> stu.age;
cout << "性别:";
cin >> stu.gender;
cout << "成绩:";
cin >> stu.score;
cout << "修改成功!" << endl;
return;
}
}
cout << "未找到该学生!" << endl;
}
// 遍历学生信息
void listStudent(vector<Student>& students) {
cout << "学号\t姓名\t年龄\t性别\t成绩" << endl;
for (auto& stu : students) {
cout << stu.id << "\t" << stu.name << "\t" << stu.age << "\t" << stu.gender << "\t" << stu.score << endl;
}
}
// 保存学生信息到文件
void saveToFile(vector<Student>& students) {
ofstream file("students.txt");
if (!file) {
cout << "保存学生信息失败!" << endl;
return;
}
for (auto& stu : students) {
file << stu.id << " " << stu.name << " " << stu.age << " " << stu.gender << " " << stu.score << endl;
}
file.close();
cout << "保存学生信息成功!" << endl;
}
// 从文件中读取学生信息
void loadFromFile(vector<Student>& students) {
ifstream file("students.txt");
if (!file) {
cout << "未找到学生信息文件!" << endl;
return;
}
string line;
while (getline(file, line)) {
Student stu;
sscanf(line.c_str(), "%s%s%d%c%f", &stu.id, &stu.name, &stu.age, &stu.gender, &stu.score);
students.push_back(stu);
}
file.close();
cout << "读取学生信息成功!" << endl;
}
// 显示菜单
void showMenu() {
cout << "1. 添加学生信息" << endl;
cout << "2. 删除学生信息" << endl;
cout << "3. 修改学生信息" << endl;
cout << "4. 遍历学生信息" << endl;
cout << "5. 退出程序" << endl;
cout << "请选择功能(输入数字):" << endl;
cin.ignore(); // 清空输入流
}
int main() {
vector<Student> students;
loadFromFile(students); // 从文件中读取学生信息
int choice;
do {
showMenu();
cin >> choice;
switch (choice) {
case 1:
addStudent(students);
break;
case 2:
deleteStudent(students);
break;
case 3:
updateStudent(students);
break;
case 4:
listStudent(students);
break;
case 5:
saveToFile(students); // 保存学生信息到文件
cout << "已退出程序,欢迎下次使用!" << endl;
break;
default:
cout << "无效的选择,请重新输入!" << endl;
break;
}
} while (choice != 5);
return 0;
}
```
这只是一个简单的框架,具体实现还需要根据具体需求进行完善。同时,为了确保程序的稳定性,还需要添加相应的异常处理。