写一段200行的数据结构的学生学籍管理系统
时间: 2023-07-08 14:12:51 浏览: 47
抱歉,200行的代码无法在此处一次性展示,但我可以给您提供一个基本的思路。一个学生学籍管理系统需要实现以下基本功能:
1. 添加学生信息
2. 删除学生信息
3. 修改学生信息
4. 查询学生信息
5. 统计学生人数
6. 保存学生信息到文件
7. 从文件中加载学生信息
基于这些功能,我们可以设计出以下数据结构:
1. 学生类(Student):包含姓名、学号、性别、出生日期、班级等基本信息。
2. 学籍管理类(StudentManager):负责管理所有学生信息,包括添加、删除、修改、查询、统计等操作,同时也需要提供保存和加载学生信息到文件的功能。
3. 界面类(UI):负责与用户进行交互,显示菜单、输入输出信息等。
根据这些设计,我们可以编写一个大致如下的程序:
```c++
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
// 学生类
class Student {
public:
// 构造函数
Student(string name = "", string id = "", string gender = "", string dob = "", string classname = "") {
this->name = name;
this->id = id;
this->gender = gender;
this->dob = dob;
this->classname = classname;
}
// 获取学生信息
string getName() { return name; }
string getId() { return id; }
string getGender() { return gender; }
string getDob() { return dob; }
string getClassname() { return classname; }
// 设置学生信息
void setName(string name) { this->name = name; }
void setId(string id) { this->id = id; }
void setGender(string gender) { this->gender = gender; }
void setDob(string dob) { this->dob = dob; }
void setClassname(string classname) { this->classname = classname; }
private:
string name; // 姓名
string id; // 学号
string gender; // 性别
string dob; // 出生日期
string classname; // 班级
};
// 学籍管理类
class StudentManager {
public:
// 添加学生信息
void addStudent(Student student) {
students.push_back(student);
cout << "添加成功!" << endl;
}
// 删除学生信息
void removeStudent(string id) {
for (int i = 0; i < students.size(); i++) {
if (students[i].getId() == id) {
students.erase(students.begin() + i);
cout << "删除成功!" << endl;
return;
}
}
cout << "未找到该学生!" << endl;
}
// 修改学生信息
void updateStudent(string id, Student student) {
for (int i = 0; i < students.size(); i++) {
if (students[i].getId() == id) {
students[i] = student;
cout << "修改成功!" << endl;
return;
}
}
cout << "未找到该学生!" << endl;
}
// 查询学生信息
void queryStudent(string id) {
for (int i = 0; i < students.size(); i++) {
if (students[i].getId() == id) {
printStudent(students[i]);
return;
}
}
cout << "未找到该学生!" << endl;
}
// 统计学生人数
int countStudents() {
return students.size();
}
// 保存学生信息到文件
void saveToFile(string filename) {
ofstream ofs(filename, ios::out);
if (!ofs) {
cout << "文件打开失败!" << endl;
return;
}
for (int i = 0; i < students.size(); i++) {
ofs << students[i].getName() << " " << students[i].getId() << " " << students[i].getGender() << " "
<< students[i].getDob() << " " << students[i].getClassname() << endl;
}
ofs.close();
cout << "保存成功!" << endl;
}
// 从文件中加载学生信息
void loadFromFile(string filename) {
ifstream ifs(filename, ios::in);
if (!ifs) {
cout << "文件打开失败!" << endl;
return;
}
string name, id, gender, dob, classname;
while (ifs >> name >> id >> gender >> dob >> classname) {
Student student(name, id, gender, dob, classname);
students.push_back(student);
}
ifs.close();
cout << "加载成功!" << endl;
}
private:
vector<Student> students; // 学生信息列表
// 打印学生信息
void printStudent(Student student) {
cout << "姓名:" << student.getName() << endl;
cout << "学号:" << student.getId() << endl;
cout << "性别:" << student.getGender() << endl;
cout << "出生日期:" << student.getDob() << endl;
cout << "班级:" << student.getClassname() << endl;
}
};
// 界面类
class UI {
public:
// 显示菜单
void showMenu() {
cout << "学生学籍管理系统" << endl;
cout << "1. 添加学生信息" << endl;
cout << "2. 删除学生信息" << endl;
cout << "3. 修改学生信息" << endl;
cout << "4. 查询学生信息" << endl;
cout << "5. 统计学生人数" << endl;
cout << "6. 保存学生信息到文件" << endl;
cout << "7. 从文件中加载学生信息" << endl;
cout << "0. 退出系统" << endl;
}
// 获取用户选择
int getChoice() {
int choice;
cout << "请输入选项:";
cin >> choice;
return choice;
}
// 获取学生信息
Student getStudentInfo() {
string name, id, gender, dob, classname;
cout << "请输入姓名:";
cin >> name;
cout << "请输入学号:";
cin >> id;
cout << "请输入性别:";
cin >> gender;
cout << "请输入出生日期:";
cin >> dob;
cout << "请输入班级:";
cin >> classname;
Student student(name, id, gender, dob, classname);
return student;
}
// 获取学号
string getId() {
string id;
cout << "请输入学号:";
cin >> id;
return id;
}
// 输出信息
void output(string message) {
cout << message << endl;
}
};
int main() {
StudentManager manager;
UI ui;
while (true) {
ui.showMenu();
int choice = ui.getChoice();
switch (choice) {
case 1: // 添加学生信息
manager.addStudent(ui.getStudentInfo());
break;
case 2: // 删除学生信息
manager.removeStudent(ui.getId());
break;
case 3: // 修改学生信息
manager.updateStudent(ui.getId(), ui.getStudentInfo());
break;
case 4: // 查询学生信息
manager.queryStudent(ui.getId());
break;
case 5: // 统计学生人数
ui.output("学生人数:" + to_string(manager.countStudents()));
break;
case 6: // 保存学生信息到文件
manager.saveToFile("students.txt");
break;
case 7: // 从文件中加载学生信息
manager.loadFromFile("students.txt");
break;
case 0: // 退出系统
return 0;
default: // 无效选项
ui.output("无效选项!");
break;
}
}
return 0;
}
```
上面的代码示例展示了一个基本的思路,具体实现还需要根据实际需求进行完善。