目录
程序说明
本程序是由C++编写而成的一个简单的学生信息管理系统,学生的信息包括学号、姓名、性别、年龄、专业和奖励信息,用文件系统实现学生信息管理,具有如下功能:
1.数据录入
2.按学号查询学生信息并输出
3.文件保存
4.退出程序
源代码
//用文件系统实现学生信息管理
//功能: 1.数据录入 2.按学号查询学生信息并输出 3.文件保存
#include <iostream>
#include <fstream>
#include <map>
using namespace std;
struct Student { //定义学生结构体
string stu_id; //学号
string name; //姓名
string gender; //性别
int age; //年龄
string major; //专业
string awards; //奖励信息
};
void add_student(map<string, Student>& students) { //数据录入
cout << "请输入学生信息:" << endl;
Student student;
cout << "学号:";
cin >> student.stu_id;
cout << "姓名:";
cin >> student.name;
cout << "性别:";
cin >> student.gender;
cout << "年龄:";
cin >> student.age;
cout << "专业:";
cin >> student.major;
cout << "奖励信息:";
cin >> student.awards;
students[student.stu_id] = student;
cout << "学生信息添加成功!" << endl;
}
void search_student(map<string, Student>& students) { //按学号查询学生信息并输出
string stu_id;
cout << "请输入要查询的学生学号:";
cin >> stu_id;
if (students.find(stu_id) != students.end()) {
Student student = students[stu_id];
cout << "学号:" << student.stu_id << endl;
cout << "姓名:" << student.name << endl;
cout << "性别:" << student.gender << endl;
cout << "年龄:" << student.age << endl;
cout << "专业:" << student.major << endl;
cout << "奖励信息:" << student.awards << endl;
} else {
cout << "未找到该学生信息!" << endl;
}
}
void save_students(map<string, Student>& students) { //文件保存
ofstream outfile("students.txt");
if (outfile.is_open()) {
outfile << "学号\t姓名\t性别\t年龄\t专业\t奖励信息" << endl;
//for (auto it = students.begin(); it != students.end(); ++it)
//注:编译器版本较高的可以用上面注释这一行替换下面 { 前这一大行
for (std::map<std::string, Student>::iterator it = students.begin(); it != students.end(); ++it) {
outfile << it->second.stu_id << "\t" << it->second.name << "\t" << it->second.gender << "\t" << it->second.age << "\t" << it->second.major << "\t" << it->second.awards << endl;
}
outfile.close();
cout << "学生信息保存成功!" << endl;
} else {
cout << "无法打开文件!" << endl;
}
}
int main() {
map<string, Student> students;
ifstream infile("students.txt");
if (infile.is_open()) {
string header;
getline(infile, header);
cout << header << endl;
while (!infile.eof()) {
Student student;
infile >> student.stu_id >> student.name >> student.gender >> student.age >> student.major >> student.awards;
students[student.stu_id] = student;
}
infile.close();
cout << "学生信息读取成功!" << endl;
} else {
cout << "无法打开文件!" << endl;
}
int choice;
while (1) {
cout << "请选择操作:" << endl;
cout << "1.数据录入" << endl;
cout << "2.按学号查询学生信息并输出" << endl;
cout << "3.文件保存" << endl;
cout << "4.退出程序" << endl;
cin >> choice;
switch (choice) {
case 1:
add_student(students);
break;
case 2:
search_student(students);
break;
case 3:
save_students(students);
break;
case 4:
return 0;
default:
cout << "无效的选项!" << endl;
}
}
return 0;
}
功能详细介绍
运行程序后会有明确提示如下:
请选择操作:
1.数据录入
2.按学号查询学生信息并输出
3.文件保存
4.退出程序
输入数字”1“即可进行学生新的的录入,输入数字”2“可按学号查询学生信息并输出,输入数字”3“进行文件保存,输入数字”4“退出程序。
学生的信息记录在名为”students.txt“的文件里,在选择功能1录入学生信息后需选择功能3进行文件保存方可在文件中显示出学生信息。另外,若需要根据学号查询学生信息,选择功能2然后输入其学号即可。
本系统运行后有清晰的操作提示,操作起来比较方便。
运行示例
1.信息录入(部分展示)
2.信息查询
3.信息保存
保存后,对应文件夹里“students.txt”文档显示如下:
注:本程序单次进行多种功能的运行一般没问题,但多次运行可能出现以下问题:打开程序后不能正常弹出功能选择的提示,无法进行后续操作。初步判断问题在主程序while循环前的那一部分,由于时间和水平有限,暂不能修改,有修改办法的欢迎分享在评论区。
关注我,持续分享有趣有用的知识!