1、学生成绩管理系统一:源代码#include #include #include #include usingnamespacestd; classCData public: CData(); virtualintcomparename(CData&)=0; virtualvoidshow()=0; virtualCData(); ; classCNode public: CNode()pdata=0;pnext=0; CNode(CNode&n); voidinputdata(CData*pd)pdata=pd; voidshownode()pdata-show(); CData*getdat
2、a()returnpdata; friendclassCList; private: CData*pdata; CNode*pnext; ; CNode:CNode(CNode&n) pdata=n.pdata; pnext=n.pnext; classCList public: CList()phead=0; CList()deletelist(); voidaddnode(CNode*pnode); voiddeletelist(); CNode*deletenode(CNode*pnode); CNode*lookup(CData&data); CNode*getlisthead()re
3、turnphead; voidshowlist(); CNode*getnext(CNode*pnode); private: CNode*phead; ; voidCList:addnode(CNode*pnode) if(phead=0) phead=pnode; pnode-pnext=0; return; else pnode-pnext=phead; phead=pnode; voidCList:deletelist() CNode*p1,*p2; p1=phead; while(p1) deletep1-pdata; p2=p1; p1=p1-pnext; deletep2; CN
4、ode*CList:deletenode(CNode*pnode) CNode*p1,*p2; p1=phead; while(p1!=pnode&p1-pnext!=0) p2=p1; p1=p1-pnext; if(p1=phead) phead=phead-pnext; returnpnode; p2-pnext=p1-pnext; returnpnode; CNode*CList:lookup(CData&data) CNode*p1=phead; while(p1) if(p1-pdata-comparename(data)=0) returnp1; p1=p1-pnext; ret
5、urn0; voidCList:showlist() if(phead=0) coutpdata-show(); p=p-pnext; CNode*CList:getnext(CNode*pnode) CNode*p=pnode; p=p-pnext; returnp; classStudent:publicCData private: chars_class17; chars_num17; chars_name17; doubleele_technique; doublec_program; doublemul_technique; doublecol_english; doublesen_
6、math; doublecol_gym; doublemarx_economy; doubleaverage; public: Student(); virtualintcomparename(CData&); voidshow(); voidset(char*c,char*n,char*nam,doublee,doublecp, doublem,doublece,doublesm,doublecg,doublemar,doubleaver); ; Student:Student() strcpy(s_class,0); strcpy(s_num,0); strcpy(s_name,0); e
7、le_technique=0; c_program=0; mul_technique=0; col_english=0; sen_math=0; col_gym=0; marx_economy=0; intStudent:comparename(CData&data) Student&temp=(Student&)data; returnstrcmp(s_name,temp.s_name); voidStudent:show() coutsetw(7)s_classsetw(12)s_numsetw(12)s_name; coutsetw(6)ele_techniquesetw(6)c_pro
8、gramsetw(6)mul_technique; coutsetw(6)col_englishsetw(6)sen_mathsetw(6)col_gym; coutsetw(6)marx_economysetw(3)averageendl; voidStudent:set(char*c,char*n,char*nam,doublee,doublecp,doublem,doublece,doublesm,doublecg,doublemar,doubleaver) strcpy(s_class,c); strcpy(s_num,n); strcpy(s_name,nam); ele_techn
9、ique=e; c_program=cp; mul_technique=m; col_english=ce; sen_math=sm; col_gym=cg; marx_economy=mar; average=aver; voidprint() coutsetw(7)classsetw(12)numbersetw(12)name; coutsetw(6)elesetw(6)C+setw(6)media; coutsetw(6)engsetw(6)mathsetw(6)gym; coutsetw(6)marxsetw(6)averendl; voiddisplay(CList&stulist)
10、 print(); stulist.showlist(); coutendl; cout按任意键返回主菜单; getchar();getchar(); voidadd(CList&stulist) CNode*p; Student*s; charc17,n17,nam17; doublee,cp,m,ce,sm,cg,mar;floataver; cout请输入姓名(输入0结束):; cin.ignore(); cin.getline(nam,17); while(strcmp(nam,0) cout输入学号:;cin.getline(n,17); cout输入班级:;cin.getline(
11、c,17); coute; coutcp; coutm; coutce; coutsm; coutcg; coutmar; aver=(e+cp+m+ce+sm)*0.8/5+cg*0.15+mar*0.05); s=newStudent; s-set(c,n,nam,e,cp,m,ce,sm,cg,mar,aver); p=newCNode; p-inputdata(s); stulist.addnode(p); cout记录添加成功.endl; cout请输入姓名(输入0结束):; cin.ignore(); cin.getline(nam,17); voidlookup(CList&st
12、ulist) CNode*plook; charname17; coutshownode(); else cout对不起,在学生记录中查找不到name的记录.endl; cout请输入你要查找的姓名(输入0结束):; cin.getline(name,17); voiddeletes(CList&stulist) CNode*plook; charname17; coutshownode(); stulist.deletenode(plook); coutname的记录已经删除.n; else cout对不起,在学生记录中查找不到name的记录.nendl; cout请输入要删除的记录的学生姓
13、名(输入0结束):; cin.getline(name,17); voidstorefile(CList&stulist) ofstreamoutfile(student.dat,ios:binary); if(!outfile) cout数据文件打开错误,数据存入文件失败!getdata(); outfile.write(char*)s,sizeof(Student); p=stulist.getnext(p); outfile.close(); voidloadfile(CList&stulist) ifstreaminfile(student.dat,ios:binary); if(!i
14、nfile) cout没有数据文件!inputdata(s); stulist.addnode(p); stulist.deletenode(p); infile.close(); voidoperate(CList&stulist) intchoice; do system(cls); cout欢迎进入学生成绩管理系统n; coutn 1.输出所有学生成绩记录n 2.增加学生成绩记录n 3.删除学生成绩记录n 4.查询学生成绩记录n 0.退出学生能够成绩管理系统n n; coutchoice; coutendl; switch(choice) case1:display(stulist);break; case2:add(stulist);break; case3:deletes(stulist);break; case4:lookup(stulist);break; case0:storefile(stulist);break; default:cout输入错误,请重新输入您的选择:; while(choice!=0); intmain() CListstulist; loadfile(stulist); operate(stulist); cout谢谢使用学生成绩管理系统,再见!; return0; 二:运行结果
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1