1、1. 程序执行后的部分效果1。1项目主菜单效果图1。2初始化信息,第一次对信息的录入1.3添加学生信息1。4删除某学生信息1.5修改某学生信息1。6查询某学生信息1.7显示全部学生信息源代码:/把StudentData.cpp(源代码) 和 student。txt(数据存放处)放在同一个文件夹下/include iostreaminclude string#include fstreaminclude stringinclude iomanipusing namespace std;/最多提供50个学生的数据,可根据需要进行更改const int MAX = 50;int count = 0;
2、/用来统计学生人数class Student public:void Set();/初始化信息,第一次对信息的录入void Add();/添加学生信息/从磁盘读取数据以便 进行 数据的操作,方便再重写进磁盘friend void Read(string no,string name,string sex,string special,string clas);int Judge(string num);/判断 num 是否在学生信息数据库中(注意它有一个参数,并且有一个int型的返回值)void Delete();/删除某学生信息void Change();/修改某学生信息 void Sear
3、ch();/查询某学生信息void Display();/显示全部学生信息private:string m_no;string m_name;string m_sex;/m_ 指的是成员变量(member)string m_special;string m_clas;;void Student::Set()string no, name, sex, special, clas;ofstream outfile(student。txt”); /打开文件if(!outfile)cerr open error”endl;exit(1);/退出程序cout当学号输入为 0 时,停止输入!”endl;c
4、out”请依次输入学生的学号,姓名,性别,专业,班级:”endl;for(int i=0; iMAX; i+)cout第”count+1”个学生:”no;if(no = 0”) break;/当输入的学号是 0 时,停止录入cinnamesexspecialclas;count+;m_no = no;outfilem_no”t”;/每录入一个学号,写进磁盘保存,以下同理m_name = name;outfilem_namet”;m_sex = sex;outfilem_sex”t”;m_special = special;outfilem_specialt”;m_clas = clas;out
5、filem_clasendl;outfile。close();/添加学生信息void Student::Add()string no, name, sex, special, clas;/以追加的方式录入信息,直接将信息追加到以前文件的末尾ofstream outfile(”student。txt”,ios:app);if(!outfile) cerr” open errorendl; exit(1); count+;/添加一个学生信息,当然 count 要 +1cout请依次输入要添加的学生学号,姓名,性别,专业,班级:”nonamesexspecialclas;m_no = no;outf
6、ilem_no”t”;m_name = name;outfilem_name”t”;m_sex = sex;outfilem_sex”t”;m_special = special;outfilem_special”t”;m_clas = clas;outfilem_clasendl;outfile。close();cout已添加成功!endl;/从磁盘读取数据void Read(string no,string name,string sex,string special,string clas)ifstream infile(”student。txt”,ios:in);if(!infile)
7、cerr” open error”endl;exit(1);for(int i=0; inoinameisexispecialiclasi;infile.close();/判断某学号的学生是否在数据库中int Student:Judge(string num)string noMAX, nameMAX, sexMAX, specialMAX, clasMAX;Read(no, name, sex, special, clas);/调用Read()函数,获取数据,以便等下进行相关数据的判断for(int i=0; icount; i+)if(num = noi)return i;/如果存在,返回
8、其下标break;return -1;/否则,返回1/删除某学生信息void Student:Delete()string num, noMAX, nameMAX, sexMAX, specialMAX, clasMAX;Read(no, name, sex, special, clas);/读取学生所有数据,cout”请输入你要删除的学生学号:”;cinnum;int k = Judge(num);/定义一个k来接收Judge()的返回值,等下用来判断该num是否存在if(k != -1)/如果k不等于1, 表示要删除的学生存在ofstream outfile(”student.txt);i
9、f(!outfile)cerr” open error”endl; exit(1); for(int i=0; icount; i+)if(i != k)/把下标不等于K(即除了要删的学生外)其余的数据重新写入磁盘保存outfilenoit;outfilenamei”t;outfilesexi”t”;outfilespeciali”t”;outfileclasiendl;outfile.close();count;/删除一个学生,人数 -1cout”删除成功!”endl;elsecout”该数据库没有此学生!”num;int k = Judge(num);if(k != 1)Read(no,
10、name, sex, special, clas);/读取学生所有数据,coutnoknameksexkspecialkclask;/把下标是k的学生进行修改ofstream outfile(”student。txt”,ios:out);if(!outfile) cerr open errorendl; exit(1); for(int i=0; icount; i+)/改完后,回写进磁盘保存outfilenoi”t;outfilenamei”t;outfilesexi”t;outfilespeciali”t”;outfileclasiendl;outfile.close();cout修改成功
11、!”endl;elsecout该数据库没有此学生!”endl;void Student:Search()string num, noMAX, nameMAX, sexMAX, specialMAX, clasMAX;Read(no, name, sex, special, clas);cout请输入你要查找的学生学号”;cinnum;int k = Judge(num);if(k != 1)/找到该学生就打印出其信息cout”学号t姓名t性别t专业t班级”endl;coutnok”t”;coutnamek”t;coutsexk”t”;coutspecialkt;coutclaskendl;el
12、secout”该数据库没有此学生!”endl;/显示学生的所有信息void Student:Display()string noMAX, nameMAX, sexMAX, specialMAX, clasMAX;Read(no, name, sex, special, clas);/先读取cout学号t姓名t性别t专业t班级endl;for(int i=0; icount; i+)/后打印coutnoi”t”;coutnamei”t;coutsexit;coutspeciali”t”;coutclasiendl;int main()int choice = 1;Student s;while(
13、choice != 0)/除非你选择退出,否则一直循环coutnttt-学生信息管理系统nn”;cout”ttt 1。录入学生信息 n”;coutttt| 2.添加一个信息 n”;coutttt| 3.删除一个信息 n”;cout”ttt| 4。修改学生信息 |n”;cout”ttt 5.查询学生信息 n”;cout”ttt| 6。显示学生信息 n”;coutchoice;switch(choice)case 1:s。Set();break;case 2:s。Add();break;case 3:s。Delete();break;case 4:s。Change();break;case 5:s。Search();break;case 6:s。Display();break;case 0:break;default:cout”你的选择有误!请重新选择!”endl;break;return 0;