用c++编写一个具有保存功能的学生信息管理系统
时间: 2023-09-05 17:07:14 浏览: 102
list_stuinfo.rar_C++ 学生管理_信息管理系统_学生信息管理系统 c++_学生管理_学生管理系统
为了实现带有保存功能的学生信息管理系统,需要考虑以下几个方面:
1. 学生信息的数据结构:可以使用结构体来表示每个学生的信息,比如学号、姓名、性别、年龄、成绩等。
2. 学生信息的输入和输出:可以使用标准输入输出流 cin 和 cout 来实现学生信息的输入和输出。
3. 学生信息的存储和读取:可以使用文件流来实现学生信息的存储和读取,将学生信息保存到文件中,下次程序启动时从文件中读取已有的学生信息。
下面是一个简单的示例程序,实现了带有保存功能的学生信息管理系统:
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
// 学生信息结构体
struct Student {
string id; // 学号
string name; // 姓名
char gender; // 性别
int age; // 年龄
float score; // 成绩
};
// 学生信息管理类
class StudentManager {
public:
// 添加学生信息
void addStudent() {
Student s;
cout << "请输入学号:";
cin >> s.id;
cout << "请输入姓名:";
cin >> s.name;
cout << "请输入性别(男/女):";
cin >> s.gender;
cout << "请输入年龄:";
cin >> s.age;
cout << "请输入成绩:";
cin >> s.score;
students.push_back(s);
cout << "学生信息添加成功!" << endl;
}
// 删除学生信息
void deleteStudent() {
string id;
cout << "请输入要删除的学生学号:";
cin >> id;
for (vector<Student>::iterator it = students.begin(); it != students.end(); it++) {
if (it->id == id) {
students.erase(it);
cout << "学生信息删除成功!" << endl;
return;
}
}
cout << "未找到该学生信息!" << endl;
}
// 显示所有学生信息
void showAllStudents() {
if (students.empty()) {
cout << "暂无学生信息!" << endl;
} else {
cout << "学号\t姓名\t性别\t年龄\t成绩" << endl;
for (vector<Student>::iterator it = students.begin(); it != students.end(); it++) {
cout << it->id << "\t" << it->name << "\t" << it->gender << "\t" << it->age << "\t" << it->score << endl;
}
}
}
// 保存学生信息到文件
void saveToFile() {
ofstream ofs("students.txt");
if (ofs.is_open()) {
for (vector<Student>::iterator it = students.begin(); it != students.end(); it++) {
ofs << it->id << "," << it->name << "," << it->gender << "," << it->age << "," << it->score << endl;
}
ofs.close();
cout << "学生信息保存成功!" << endl;
} else {
cout << "文件打开失败!" << endl;
}
}
// 从文件中读取学生信息
void readFromFile() {
ifstream ifs("students.txt");
if (ifs.is_open()) {
students.clear();
string line;
while (getline(ifs, line)) {
Student s;
sscanf(line.c_str(), "%[^,],%[^,],%c,%d,%f", &s.id[0], &s.name[0], &s.gender, &s.age, &s.score);
students.push_back(s);
}
ifs.close();
cout << "学生信息读取成功!" << endl;
} else {
cout << "文件打开失败!" << endl;
}
}
private:
vector<Student> students; // 学生信息列表
};
// 主函数
int main() {
StudentManager manager;
int choice;
do {
cout << "1. 添加学生信息" << endl;
cout << "2. 删除学生信息" << endl;
cout << "3. 显示所有学生信息" << endl;
cout << "4. 保存学生信息到文件" << endl;
cout << "5. 从文件中读取学生信息" << endl;
cout << "0. 退出程序" << endl;
cout << "请选择操作:";
cin >> choice;
switch (choice) {
case 1:
manager.addStudent();
break;
case 2:
manager.deleteStudent();
break;
case 3:
manager.showAllStudents();
break;
case 4:
manager.saveToFile();
break;
case 5:
manager.readFromFile();
break;
case 0:
cout << "程序已退出!" << endl;
break;
default:
cout << "无效的选择!" << endl;
break;
}
} while (choice != 0);
return 0;
}
```
该程序使用了一个 StudentManager 类来管理学生信息,包括添加、删除、显示、保存和读取操作。学生信息以结构体 vector<Student> students 存储在内存中,保存到文件时以逗号分隔的形式写入文件,读取时从文件中逐行读取,并使用 sscanf 函数解析每行学生信息。
阅读全文