学生信息管理系统C++代码-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII1.程序执行后的部分效果1.1项目主菜单效果图1.2初始化信息,第一次对信息的录入1.3添加学生信息1.4删除某学生信息1.5修改某学生信息1.6查询某学生信息1.7显示全部学生信息源代码:/*把StudentData.cpp(源代码) 和 student.txt(数据存放处)放在同一个文件夹下*/#include <iostream>#include <string>#include <fstream>#include <string>#include <iomanip>using namespace std;//最多提供50个学生的数据,可根据需要进行更改const int MAX = 50;int count = 0; //用来统计学生人数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 Search(); //查询某学生信息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;cout<<"请依次输入学生的学号,姓名,性别,专业,班级:"<<endl;for(int i=0; i<MAX; i++){cout<<"第"<<count+1<<"个学生:"<<endl;cin>>no;if(no == "0") break; //当输入的学号是0 时,停止录入cin>>name>>sex>>special>>clas;count++;m_no = no;outfile<<m_no<<"\t"; //每录入一个学号,写进磁盘保存,以下同理m_name = name;outfile<<m_name<<"\t";m_sex = sex;outfile<<m_sex<<"\t";m_special = special;outfile<<m_special<<"\t";m_clas = clas;outfile<<m_clas<<endl;}outfile.close();}//添加学生信息void Student::Add(){string no, name, sex, special, clas;//以追加的方式录入信息,直接将信息追加到以前文件的末尾ofstream outfile("student.txt",ios::app);if(!outfile){cerr<<" open error"<<endl;exit(1);}count++; //添加一个学生信息,当然 count 要 +1cout<<"请依次输入要添加的学生学号,姓名,性别,专业,班级:"<<endl;cin>>no>>name>>sex>>special>>clas;m_no = no;outfile<<m_no<<"\t";m_name = name;outfile<<m_name<<"\t";m_sex = sex;outfile<<m_sex<<"\t";m_special = special;outfile<<m_special<<"\t";m_clas = clas;outfile<<m_clas<<endl;outfile.close();cout<<"已添加成功!"<<endl;}//从磁盘读取数据void Read(string no[],string name[],string sex[],string special[],string clas[]){ifstream infile("student.txt",ios::in);if(!infile){cerr<<" open error"<<endl;exit(1);}for(int i=0; i<count; i++) //只读取存放在数组中但不对其进行相关操作{infile>>no[i]>>name[i]>>sex[i]>>special[i]>>clas[i];}infile.close();}//判断某学号的学生是否在数据库中int Student::Judge(string num){string no[MAX], name[MAX], sex[MAX], special[MAX], clas[MAX];Read(no, name, sex, special, clas); //调用Read()函数,获取数据,以便等下进行相关数据的判断for(int i=0; i<count; i++){if(num == no[i]){return i; //如果存在,返回其下标break;}}return -1; //否则,返回-1}//删除某学生信息void Student::Delete(){string num, no[MAX], name[MAX], sex[MAX], special[MAX], clas[MAX];Read(no, name, sex, special, clas); //读取学生所有数据,cout<<"请输入你要删除的学生学号:";cin>>num;int k = Judge(num); //定义一个k来接收Judge()的返回值,等下用来判断该num是否存在if(k != -1) //如果k不等于-1,表示要删除的学生存在{ofstream outfile("student.txt");if(!outfile){cerr<<" open error"<<endl;exit(1);}for(int i=0; i<count; i++){if(i != k) //把下标不等于K(即除了要删的学生外)其余的数据重新写入磁盘保存{outfile<<no[i]<<"\t";outfile<<name[i]<<"\t";outfile<<sex[i]<<"\t";outfile<<special[i]<<"\t";outfile<<clas[i]<<endl;}}outfile.close();count--; //删除一个学生,人数 -1cout<<"删除成功!"<<endl;}elsecout<<"该数据库没有此学生!"<<endl;}void Student::Change(){string num, no[MAX], name[MAX], sex[MAX], special[MAX], clas[MAX];cout<<"请输入你要修改的学生学号:";cin>>num;int k = Judge(num);if(k != -1){Read(no, name, sex, special, clas); //读取学生所有数据,cout<<"请依次输入修改后的学生学号,姓名,性别,专业,班级:"<<endl;cin>>no[k]>>name[k]>>sex[k]>>special[k]>>clas[k];//把下标是k的学生进行修改ofstream outfile("student.txt",ios::out);if(!outfile){cerr<<" open error"<<endl;exit(1);}for(int i=0; i<count; i++) //改完后,回写进磁盘保存{outfile<<no[i]<<"\t";outfile<<name[i]<<"\t";outfile<<sex[i]<<"\t";outfile<<special[i]<<"\t";outfile<<clas[i]<<endl;}outfile.close();cout<<"修改成功!"<<endl;}elsecout<<"该数据库没有此学生!"<<endl;}void Student::Search(){string num, no[MAX], name[MAX], sex[MAX], special[MAX], clas[MAX];Read(no, name, sex, special, clas);cout<<"请输入你要查找的学生学号";cin>>num;int k = Judge(num);if(k != -1) //找到该学生就打印出其信息{cout<<"学号\t姓名\t性别\t专业\t班级"<<endl;cout<<no[k]<<"\t";cout<<name[k]<<"\t";cout<<sex[k]<<"\t";cout<<special[k]<<"\t";cout<<clas[k]<<endl;}elsecout<<"该数据库没有此学生!"<<endl;}//显示学生的所有信息void Student::Display(){string no[MAX], name[MAX], sex[MAX], special[MAX], clas[MAX];Read(no, name, sex, special, clas); //先读取cout<<"学号\t姓名\t性别\t专业\t班级"<<endl;for(int i=0; i<count; i++) //后打印{cout<<no[i]<<"\t";cout<<name[i]<<"\t";cout<<sex[i]<<"\t";cout<<special[i]<<"\t";cout<<clas[i]<<endl;}}int main(){int choice = -1;Student s;while(choice != 0) //除非你选择退出,否则一直循环{cout<<"\n\t\t\t--学生信息管理系统--\n\n";cout<<"\t\t\t| 1.录入学生信息 |\n";cout<<"\t\t\t| 2.添加一个信息 |\n";cout<<"\t\t\t| 3.删除一个信息 |\n";cout<<"\t\t\t| 4.修改学生信息 |\n";cout<<"\t\t\t| 5.查询学生信息 |\n";cout<<"\t\t\t| 6.显示学生信息 |\n";cout<<"\t\t\t| 0.退出系统 |\n";cout<<"请选择所需要的操作:";cin>>choice;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;}。