#include<iostream>using namespace std;namespace coun //定义一个命名空间{int count=0;}struct student{char name[50]; //姓名char no[50]; //学号char ad[50]; //籍贯};struct student stu[500]; //定义结构型数组class Data{public:void writefile();void openfile();void readfile();};void Data::readfile() //定义一个无返回值的读取文件的函数{using namespace coun;int i;char str[10];FILE *fp;fp=fopen("E:\\message.txt","r");if(fp==NULL)return ;else{fscanf(fp,"%d",&count);if(count!=0){for(i=0;i<count;++i){fscanf(fp,"%s ",str);fscanf(fp,"%s ",stu[i].name);fscanf(fp,"%s ",str);fscanf(fp,"%s ",stu[i].no);fscanf(fp,"%s ",str);fscanf(fp,"%s ",stu[i].ad);}}}fclose(fp);return ;}void Data::openfile(){using namespace coun;char str1[15]={"姓名:"};char str2[15]={"学号:"};char str3[15]={"籍贯:"};int i;FILE *fp;fp=fopen("E:\\message.txt","w");if(fp==NULL){cout<<"打开文件失败!"<<endl;return ;}else{fprintf(fp,"%d\n",count);for(i=0;i<count;++i){fprintf(fp,"%s ",str1);fprintf(fp,"%s ",stu[i].name);fprintf(fp,"%s ",str2);fprintf(fp,"%s ",stu[i].no);fprintf(fp,"%s ",str3);fprintf(fp,"%s ",stu[i].ad);}}fclose(fp);return ;}//载入信息void Data::writefile(){using namespace coun;int i;cout<<"请输入总的学生数: ";cin>>count;if(count>500){cout<<"信息太大无法存储! "<<endl;return ;}if(count<=0){cout<<"您输入的信息有误,请重新输入! ";return ;}for(i=0;i<count;++i){cout<<"请输入第"<<i+1<<"个学生的信息: "<<endl;cout<<"请输入学生的姓名: ";cin>>stu[i].name;cout<<"请输入学生的学号: ";cin>>stu[i].no;cout<<"请输入学生的籍贯: ";cin>>stu[i].ad;cout<<endl;}openfile();}class Seach:public Data //关于查找的类{public:void searchmessage(); //查找的总函数void searchname(); //根据姓名查找的函数void searchno(); //根据学号查找的函数void searchad(); //根据籍贯查找的函数};void Seach::searchname() //根据姓名查找的函数{using namespace coun;int i;char num0[15];cout<<"请输入你要查询学生的姓名: ";scanf("%s",num0);int flag=0;for(i=0;i<count;++i){if(!strcmp(num0,stu[i].name)){flag=-1;cout<<"姓名: "<<stu[i].name;cout<<" 学号: "<<stu[i].no;cout<<" 籍贯: "<<stu[i].ad;cout<<endl;//return ;}}if(i==count&&flag==0){cout<<endl<<"对不起! 系统中没有此学生!请查证后重新输入!"<<endl;return;}}void Seach::searchno() //根据学号查找的函数{using namespace coun;int i;int flag=0;char name0[30];cout<<"请输入查询学生的学号: ";cin>>name0;for(i=0;i<count;++i){if(!(strcmp(name0,stu[i].no))){flag=-1;cout<<"姓名: "<<stu[i].name;cout<<" 学号: "<<stu[i].no;cout<<" 籍贯: "<<stu[i].ad;cout<<endl;//return ;}}if(i==count&&flag==0){cout<<endl<<"对不起! 系统中没有此学生!请查证后重新输入!"<<endl;return;}}void Seach::searchad() //根据籍贯查找的函数{using namespace coun;int i;int flag=0;char ad0[20];cout<<"请输入你要查询的籍贯: ";cin>>ad0;for(i=0;i<count;++i){if(!(strcmp(ad0,stu[i].ad))){flag=-1;cout<<"姓名: "<<stu[i].name;cout<<" 学号: "<<stu[i].no;cout<<" 籍贯: "<<stu[i].ad;cout<<endl;//return ;}}if(i==count&&flag==0){cout<<endl<<"对不起! 系统中没有此学生!请查证后重新输入!"<<endl;return;}}void Seach::searchmessage() //查找的总函数{using namespace coun;if(count==0){cout<<"非常抱歉! 没有信息供您查询! "<<endl;return ;}int n;char ch;cout<<"1. 按姓名查找"<<endl;cout<<"2. 按学号查找"<<endl;cout<<"3. 按籍贯查找"<<endl;cout<<"请输入你的选择(1--3) : ";cin>>n;do{switch(n){case 1:searchname();break;case 2:searchno();break;case 3:searchad();break;default:cout<<"您的输入有误!"<<endl;break;}cout<<"请选择继续或者退出(y/n) : ";getchar();cin>>ch;}while(ch=='y'||ch=='Y');}class Show:public Data //关于输出的类{public:void showmessage(); //输出的总函数};void Show::showmessage(){using namespace coun;if(count==0){cout<<"非常抱歉! 没有信息"<<endl;return ;}int i;cout<<"所有学生的籍贯信息如下: ";for(i=0;i<count;++i){if(i%10==0)cout<<endl<<endl;cout<<"姓名: "<<stu[i].name;cout<<"学号: "<<stu[i].no;cout<<"籍贯: "<<stu[i].ad;cout<<endl<<endl;}cout<<endl<<"文本信息输出完毕!"<<endl;}class DeleTion:public Data //删除的类{public:void delet(); //关于删除的总函数};void DeleTion::delet(){using namespace coun;if(count==0){cout<<"非常抱歉! 没有信息供您删除!\n"<<endl;return ;}int i,j;char name0[30];cout<<"请输入你要删除学生的名称: ";cin>>name0;for(i=0;i<count&&strcmp(name0,stu[i].name);++i);if(i==count){cout<<"非常抱歉! 您输入的信息错误! 请查证后输入! "<<endl;return;}for(j=i;j<count-1;++j)stu[j]=stu[j+1];if(j==count-1)cout<<"信息已删除!\n"<<endl;count--;FILE *fp;fp=fopen("E:\\message.txt","w");if(fp==NULL){cout<<"打开文件失败!\n"<<endl;return ;}else{fwrite(stu,sizeof(struct student),count,fp);fclose(fp);}return ;}class AlterMessage:public Data //修改的类{public:void altername(int n); //根据姓名修改的函数void alterno(int n); //根据学号修改的函数void alterad(int n); //根据籍贯修改的函数void alter(); //修改的总函数};void AlterMessage::alterno(int n) //根据学号修改的函数{using namespace coun;char num0[15];cout<<"请输入要修改学号: ";cin>>num0;for(int i=0;i<count&&(strcmp(num0,stu[i].no));++i);if(i==count){cout<<"非常抱歉! 您输入的信息错误! 请查证后输入! "<<endl;return;}cout<<"请输入修改后的学号: ";cin>>stu[i].no;cout<<endl<<"编号修改成功!"<<endl;FILE *fp;fp=fopen("E:\\message.txt","w");if(fp==NULL){cout<<"打开文件失败!\n"<<endl;return ;}else{fwrite(stu,sizeof(struct student),count,fp);fclose(fp);}return ;}void AlterMessage::altername(int n) //根据书的书名修改的函数{using namespace coun;char num0[15];cout<<"请输入要修改学生的姓名: ";cin>>num0;for(int i=0;i<count&&(strcmp(num0,stu[i].name));++i);if(i==count){cout<<"非常抱歉! 您输入的信息错误! 请查证后输入! "<<endl;return;}cout<<"请输入修改后的学生的名字: ";cin>>stu[i].name;cout<<endl<<"学生的名字修改成功!"<<endl;FILE *fp;fp=fopen("E:\\message.txt","w");if(fp==NULL){cout<<"打开文件失败!\n"<<endl;return ;}else{fwrite(stu,sizeof(struct student),count,fp);fclose(fp);}return ;}void AlterMessage::alterad(int n) //根据书的作者名修改的函数{using namespace coun;char num0[15];cout<<"请输入要修改学生的籍贯: ";cin>>num0;for(int i=0;i<count&&(strcmp(num0,stu[i].ad));++i);if(i==count){cout<<"非常抱歉! 您输入的信息错误! 请查证后输入! "<<endl;return;}cout<<"请输入修改后的籍贯: ";cin>>stu[i].ad;cout<<endl<<"籍贯修改成功!"<<endl;FILE *fp;fp=fopen("E:\\message.txt","w");if(fp==NULL){cout<<"打开文件失败!\n"<<endl;return ;}else{fwrite(stu,sizeof(struct student),count,fp);fclose(fp);}return ;}void AlterMessage::alter() //修改的总函数{using namespace coun;if(count==0){cout<<"非常抱歉! 没有信息供您修改!\n"<<endl;return ;}char cc;do{int i,n;char name0[30];for(i=0;i<count&&strcmp(name0,stu[i].name);++i);cout<<"1. 姓名修改"<<endl;cout<<"2. 学号修改"<<endl;cout<<"3. 籍贯修改"<<endl;cout<<"请输入你的选择: ";cin>>n;switch(n){case 1:altername(i);break;case 2:alterno(i);break;case 3:alterad(i);break;default:cout<<"您输入的选择有误!请重新输入!"<<endl;break;}cout<<endl<<"请输入你的选择继续或者退出(y/n) : ";getchar();cin>>cc;}while(cc=='y'||cc=='Y');return ;}class ADD:public Data //添加的类{public:void addmessage(); //关于添加的函数};void ADD::addmessage() //关于添加的函数{using namespace coun;if(count>500){cout<<"信息太大无法存储!\n"<<endl;return ;}int n;cout<<"请输入你要添加学生的人数: ";cin>>n;for(int i=1;i<=n;++i){cout<<"请输入第"<<count+1<<"个学生的信息: "<<endl;cout<<"请输入新学生的名字: ";cin>>stu[count].name;cout<<"请输入新学生的学号: ";cin>>stu[count].no;cout<<"请输入新学生的籍贯: ";cin>>stu[count].ad;cout<<endl;count++;}if(i=n+1)cout<<endl<<"学生籍贯信息添加完毕!"<<endl;FILE *fp;//fp=fopen("E:\\message.txt","w");//fwrite(stu,sizeof(struct student),count,fp);//fclose(fp);return ;}int main(){Data a;Show show;Seach seach;DeleTion deletion;ADD add;AlterMessage Alter;a.readfile();char cc;int choice;system("color 4A");do{cout<<"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl;cout<<"* 欢迎进入学生籍贯管理系统*"<<endl;cout<<"**"<<endl;cout<<"* 1.载入学生信息*"<<endl;cout<<"* 2.显示学生信息*"<<endl;cout<<"* 3.查询学生信息*"<<endl;cout<<"* 4.添加学生信息*"<<endl;cout<<"* 5.删除学生信息*"<<endl;cout<<"* 6.修改学生信息*"<<endl;cout<<"**"<<endl;cout<<"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl;cout<<"请输入你的选择(1--6) : ";cin>>choice;switch(choice){case 1:system("color 4B");a.writefile();break;case 2:system("color 7D");show.showmessage();break;case 3:system("color 9E");seach.searchmessage();break;case 4:system("color 5A");add.addmessage();break;case 5:system("color 75");deletion.delet();break;case 6:system("color 67");Alter.alter();break;default:cout<<"你的输入有误!\n"<<endl;break;}cout<<endl<<"请输入你的选择继续或者退出(y/n) : ";system("color 9E");getchar();cin>>cc;system("cls");}while(cc=='y'||cc=='Y');return 0;}。