用c++写一道关于学生设计系统的例题
时间: 2024-03-09 22:48:42 浏览: 61
好的,下面为您提供一道关于学生设计系统的 C++ 例题。
题目描述:
设计一个学生信息管理系统,要求能够添加学生信息,删除学生信息,查询学生信息,修改学生信息和显示所有学生信息。每个学生的信息包括学号、姓名、性别、年龄和成绩。
要求:
1. 学号不能重复;
2. 所有学生信息必须保存在文件中;
3. 程序运行时可以从文件中读取之前保存的学生信息,程序结束时可以将当前所有学生信息保存到文件中。
示例代码:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
// 学生信息结构体
struct Student {
string id;
string name;
string gender;
int age;
double score;
};
// 存储所有学生信息的 vector
vector<Student> students;
// 显示菜单
void showMenu() {
cout << "=============================" << endl;
cout << "1. 添加学生信息" << endl;
cout << "2. 删除学生信息" << endl;
cout << "3. 查询学生信息" << endl;
cout << "4. 修改学生信息" << endl;
cout << "5. 显示所有学生信息" << endl;
cout << "6. 退出" << endl;
cout << "=============================" << endl;
}
// 添加学生信息
void addStudent() {
Student stu;
cout << "请输入学号:";
cin >> stu.id;
for (int i = 0; i < students.size(); i++) {
if (stu.id == students[i].id) {
cout << "添加失败,学号已存在!" << endl;
return;
}
}
cout << "请输入姓名、性别、年龄、成绩:";
cin >> stu.name >> stu.gender >> stu.age >> stu.score;
students.push_back(stu);
cout << "添加成功!" << endl;
}
// 删除学生信息
void deleteStudent() {
string id;
cout << "请输入要删除的学生学号:";
cin >> id;
for (int i = 0; i < students.size(); i++) {
if (id == students[i].id) {
students.erase(students.begin() + i);
cout << "删除成功!" << endl;
return;
}
}
cout << "删除失败,学号不存在!" << endl;
}
// 查询学生信息
void queryStudent() {
string id;
cout << "请输入要查询的学生学号:";
cin >> id;
for (int i = 0; i < students.size(); i++) {
if (id == students[i].id) {
cout << "学号:" << students[i].id << endl;
cout << "姓名:" << students[i].name << endl;
cout << "性别:" << students[i].gender << endl;
cout << "年龄:" << students[i].age << endl;
cout << "成绩:" << students[i].score << endl;
return;
}
}
cout << "查询失败,学号不存在!" << endl;
}
// 修改学生信息
void modifyStudent() {
string id;
cout << "请输入要修改的学生学号:";
cin >> id;
for (int i = 0; i < students.size(); i++) {
if (id == students[i].id) {
cout << "请输入修改后的姓名、性别、年龄、成绩:";
cin >> students[i].name >> students[i].gender >> students[i].age >> students[i].score;
cout << "修改成功!" << endl;
return;
}
}
cout << "修改失败,学号不存在!" << endl;
}
// 显示所有学生信息
void showAllStudents() {
cout << "学号\t姓名\t性别\t年龄\t成绩" << endl;
for (int i = 0; i < students.size(); i++) {
cout << students[i].id << "\t" << students[i].name << "\t" << students[i].gender << "\t" << students[i].age << "\t" << students[i].score << endl;
}
}
// 保存所有学生信息到文件
void saveToFile() {
ofstream outfile("students.txt");
for (int i = 0; i < students.size(); i++) {
outfile << students[i].id << " " << students[i].name << " " << students[i].gender << " " << students[i].age << " " << students[i].score << endl;
}
outfile.close();
cout << "所有学生信息已保存到文件!" << endl;
}
// 从文件中读取之前保存的学生信息
void readFromFile() {
ifstream infile("students.txt");
if (!infile.is_open()) {
cout << "文件不存在,无法读取之前保存的学生信息!" << endl;
return;
}
while (!infile.eof()) {
Student stu;
infile >> stu.id >> stu.name >> stu.gender >> stu.age >> stu.score;
if (stu.id != "") {
students.push_back(stu);
}
}
infile.close();
cout << "已读取之前保存的所有学生信息!" << endl;
}
int main() {
readFromFile(); // 程序运行时从文件中读取之前保存的学生信息
while (true) {
showMenu();
int option;
cin >> option;
switch (option) {
case 1:
addStudent();
break;
case 2:
deleteStudent();
break;
case 3:
queryStudent();
break;
case 4:
modifyStudent();
break;
case 5:
showAllStudents();
break;
case 6:
saveToFile(); // 程序结束时将当前所有学生信息保存到文件中
return 0;
default:
cout << "无效的选项!" << endl;
break;
}
}
return 0;
}
```
希望能对您有所帮助!
阅读全文