还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
注意:必须在你的电脑里建一个文档来存储学生信息,我是再d盘建了一个stu.txt的文档,所以你只要在d盘建一个一样的就可以了如果你要改变存储路径,就必须把程序中的d:\\stu.txt全都改了#includeiostream#includefstream#includeiomanip#includecstringusingnamespacestd;voidmenu{systemcls;cout******************************************endl;cout*欢迎使用*endl;cout******************************************endl;cout*某大学面向对象程序设计*endl;cout**endl;cout*运行操作者****endl;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*7:退出并保存学生信息*endl;cout******************************************endl;}typedefstruct{longintnum;//学号charname
[20];//姓名charsex
[4];//性别charadd
[20];//住址charnative
[40];//籍贯intage;//年龄}data;typedefstructstu{datax;structstu*next;}node*pnode;//链表结点的定义classstudent{private:node*head;public:student;pnodegethead;//获取头结点voidinsertdatax;//插入voidoutput;//打印voiddelchar*name;//删除voidchangechar*name;//修改voidfindchar*str;//查找};student::student{head=node*newnode;head-next=NULL;}voidstudent::insertdataa{node*p;p=node*newnode;p-x=a;p-next=head-next;head-next=p;}voidstudent::output{node*p;inti=0ttempt;longinta
[100];p=head-next;ifp==NULLcout没有学生信息!!endl;else{cout姓名\t学号\t住址\t籍贯\t性别\t年龄endlendl;ifp!=NULL{whilep!=NULL{i=i+1;a[i]=p-x.num;p=p-next;}t=i;forintn=0;n=t;n++//按学号大小排序forintj=n+1;j=t;j++{ifa[n]a[j]{tempt=a[n];a[n]=a[j];a[j]=tempt;}}p=head-next;ifp!=NULL{fori=0;i=t;i++//打印排序后的信息{whilep!=NULL{ifp-x.num==a[i]coutp-x.name\tsetw10p-x.num\tsetw5p-x.add\tsetw3p-x.native\tsetw2p-x.sex\tsetw2p-x.ageendl;p=p-next;}p=head-next;}}p=head-next;}}}voidstudent::delchar*name{node*p*per;intflag=1;p=head-next;per=head;ifp==NULLcout空链表,不能删除!!endl;else{whilep!=NULL{ifstrcmpp-x.namename==0{per-next=p-next;cout删除成功!endl;flag=0;deletep;break;}else{per=p;p=p-next;}}ifflag==1cout没有找到该学生!!endl;}}pnodestudent::gethead{returnhead;}voidstudent::changechar*name{node*p;inttemp=0;p=head-next;charstr
[20];whilep!=NULL{ifstrcmpp-x.namename==0{temp=1;cout请选择需要修改的学生信息:endl;cout
1.姓名:endl;cout
2.学号:endl;cout
3.年龄endl;cout
4.住址:endl;cout
5.籍贯:endl;cout
6.性别:endl;intn;cinn;switchn{case1:cout姓名:;cinstr;strcpyp-x.namestr;break;case2:cout学号:;longintm;cinm;p-x.num=m;break;case3:cout年龄:;inta;cina;p-x.age=a;break;case4:cout住址:;cinstr;strcpyp-x.addstr;break;case5:cout籍贯:;cinstr;strcpyp-x.nativestr;break;case6:cout性别:;cinstr;strcpyp-x.sexstr;break;}}p=p-next;}iftemp==0{cout该学生不存在!endl;}}voidstudent::findchar*str{systemcls;pnodep;inttemp=0;p=head-next;whilep!=NULL{ifstrcmpstrp-x.name==0{cout姓名\t学号\t住址\t籍贯\t性别\t年龄endl;coutp-x.name\tsetw10p-x.num\tsetw5p-x.add\tsetw3p-x.native\tsetw2p-x.sex\tsetw2p-x.ageendl;\temp=1;}p=p-next;}iftemp==0cout该学生不存在endl;}studentH;voidinsert_stu//插入学生信息{systemcls;ofstreamfiled:\\stu.txtios::app;datax;cout请输入学生姓名:;cinx.name;//filex.name;//coutendl;cout请输入学生学号:;cinx.num;//filex.num;//coutendl;cout请输入学生年龄:;cinx.age;//filex.age;cout请输入学生住址:;cinx.add;//filex.add;cout请输入学生籍贯:;cinx.native;//filex.intrest;cout请输入学生性别:;cinx.sex;//filex.sex\n;H.insertx;file.close;}voidcout_stu//输出学生信息{systemcls;H.output;}voiddel_stu//删除学生信息{systemcls;charname
[20];cout请输入要删除学生的名字endl;cinname;H.delname;}voidreadstuvoid//读文件{datax;charstr
[200];ifstreamfout;fout.opend:\\stu.txt;if!fout{cout读取文件失败!!endl;cout按任意键返回.....endl;exit-1;}whilefout.getlinestr200{//fout.getlinestr200;cout-----------endl;//coutstrendl;inti=0;intj=0;whilestr[i]!={x.name[j++]=str[i++];}x.name[j]=\0;j=0;i++;x.num=0;whilestr[i]!={x.num=x.num*10+str[i++]-0;}j=0;i++;x.age=0;whilestr[i]!={x.age=x.age*10+str[i++]-0;}j=0;i++;whilestr[i]!={x.add[j++]=str[i++];}x.add[j]=\0;j=0;i++;whilestr[i]!={x.native[j++]=str[i++];}x.native[j]=\0;j=0;i++;whilestr[i]!=\0{x.sex[j++]=str[i++];}x.sex[j]=\0;//coutx.name=x.num=x.age=x.add//=x.native=x.sexendl;H.insertx;}fout.close;}voidwritestuvoid//写入{pnodeq;q=H.gethead-next;ofstreamfin;fin.opend:\\stu.txt;if!fin{cout读取文件失败endl;exit-1;}whileq!=NULL{finq-x.name;finq-x.num;finq-x.age;finq-x.add;finq-x.native;finq-x.sex\n;q=q-next;}}voidchange_stu//修改学生信息{systemcls;charstr
[20];cout请输入要修改的学生的姓名:endl;cinstr;H.changestr;}voidfind_stu//查找学生信息{systemcls;charstr
[20];cout*****************endl;cout*1:输入姓名*endl;cout*****************endl;cinstr;H.findstr;}intmain{charw=6;readstu;//读取文件的内容whilew!=7{switchw{case1:cout_stu;break;case2:insert_stu;break;case3:change_stu;break;case4:del_stu;break;case5:find_stu;break;case6:menu;break;case7:w=7;break;default:cout输入错误endl;}coutendl请选择6-菜单endl;cinw;}writestu;coutendl欢迎下次使用!!!!endlendl;return1;}。