还剩32页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
一、设计分析该设计是设计一种实用的小型学生成绩管理系统它有录入,查询,修改,删除,保留的基本功能,并且可以对指定文献操作,也可将多种文献构成一种文献
二、系统设计阐明程序运行主界面
1.再根据顾客勺不一样需求来选择不一样勺操作H H模块功能设计
2..建立学生基本信息
2.1使用动态链表技术,用函数实现学生基本信息的录入;creat查询记录
2.2可以按学号方式查询记录1能给出查询记录的信息
21.在visual.C++里打开“学生管理.cpp”,编译与调试,最终运行程序;
2.根据运行界面上的文字提醒,选择不一样的任务编码,已到达不一样的操作功能;
五、设计体会及此后的改善意见通过这次欧I设计,我学到了诸多首先,学会了怎样建立一种动态链接即就是creat函数;尚有本次设计用到了好多链表的操作,例如说链表的输出、链表的插入、链表的删除;这些都是有一定的编程难度的再者,本次设计是一种模块划分比较清晰地程序,每个模块均有自己的函数与应当实现的功能;最终,用到了文献的操作,这是C++课最终所讲到的知识;本次设计所包括的知识面比较广,因此必须要把所学的知识融会贯穿才行;当然,软件也有些许局限性之处,例如没有实现从母表中提取子表;软件的某些细节性问题还是有待深入完善的I参照程序#includeiostream#includefstream#includestring#includectime#includeiomanip#define NULL0using namespacestd;〃定义全局变量用来确定学生的人数int n;n I〃定义一种学生信息构造体struct student{char class_0
[20];//学生、学号用九位字符表达,为使用以便用类string num;W Jstringchar name
[20];string subject
[6];float average
[6];float final_score
[6];student*next;}stud
[100];//各个模块函数char filename[20|;void meunint m;〃菜单函数student*creat;//创立链表函数void printstudent*head;〃输出链表函数void searchstudent*head;//查找信息函数〃插入信息函数void Insertstruct student*head;student*delstudent*head,string num;修改信息函数void updatestruct student*head;//void Delestudent*head;//删除信息函数〃文献操作日勺两个函数〃保留函数void save;〃读入函数void read;〃菜单函数void meunintmstatic student*head;switchmcase1:head=creat;printhead;break;case2:Inserthead;break;case3:searchhead;break;case4:updatehead;break;case5:Delehead;break;case6:save;break;intm;char c;docout«11*q*.*rTwrTw.X*T.J w•[.T•]w.*7*T«rT»*T*•卜,卜*
1.I*,*Tw*
7、r***TwTw*T*TwrT»*Tw♦.卜••[•••1••*匕J*.〜■].■*7*\*T*•卜,■卜*1**Tw*T*rT*.帖•卜■以*T■*£■1,\■[,■],■*7•*TwrT**TwTw*Tw
7、*7**T*11«endl;cout«n*1**1**1**X*KA*KJ**1*****£*KJ*菜单**************”«endl;rjwrj*rj*rj*cout*****1输入数据*****”endl;插入信息coutvv*****2******”endl•查找信息*****”《cout«*****3endl;*******八修改信息cout*****4endl•*******八删除信息coutvv*****5endl•保留信息coutvv******6******vendl•请输入您想完毕的操作”;coutvv”cin»m;meunm;你要继续操作吗coutvv”y/n:vendl;cin»c;systemnclsn;二二}whilec y;ifc==n//主函数入口int mainsystemnclsn;time_t t;timet;cout«”*************欢迎进入学生管理系统**********\n vvendl〃密码设置«”目前系统时间是”《ctimet«endl;请输入你日勺登录密码,只有四次机会!”cout«”Vendl;string str;int i=l;cin»str;ifstr==M123456ncin.get;文献途径与文献名?格式应为盘符:\\文献名《cout«”.txt”endl;cin»filename;meunl;else{fori=l;i=3;i++次密码错误,请重新输入密码!”cout«iv”endl;cin»str;ifi=3cout«n您无权使用本系统!n«endl;return0;〃建立动态链表student*creatint i;student*head,*pl,*p2;n=0;pl=p2=new student;请输入第vvn+lvv”个学生的信息:coutvv”vvendl;学号:;coutvv”cin»pl-num;班级:;coutvvcin»pl-class_O;姓名:”;coutvv”cin»pl-name;cout«endl;二语文”;pl-subject[O]二英语”;pl-subject[l]数学”;pl-subject
[2]=物理”;pl-subject
[3]=化学”;pl-subject
[4]=”生物”;pl-subject
[5]=fori=0;i6;i++科目:“;cout«”cout«pl-subject[i]«endl;平时成绩:”;coutvv”cin»p l-average[i];期末成绩:”;coutvv”cin»p1-final_score[i];cout«endl;head=NULL;whilepl-num!=nnn=n+l;ifn==lhead=p1;elsep2-next=pl;;p2=plpl=new student;请输入第vvn+lvv”个学生的数据:〈cout Vendl;学号:“;cout«cin»pl-num;break;班级:;coutcin»pl-class_O;姓名:;coutcin»pl-name;语文”;p l-subj ect[O]=二英语”;pl-subject[l]⑵口数学”;pl-subject物理”;pl-subject
[3]=化学”;pl-subject
[4]=生物”;pl-subject
[5]=fori=0;i6;i++如科目:”;coutvcout«p1-subject[i]«endl;如平时成绩coutvcin»p1-averagefi];期末成绩:”;coutvv”cin»p l-final_score[i];}p2-next=NULL;returnhead;//链表日勺输出void printstudent*headstudent*p;p=head;int i,j=0;ifhead!=NULLdocout«学号””班级,,«n姓名n«endl;cout«endl;cout«p-num«H”;studfj].num=p-num;()假如查询的信息不存在,输出提醒信息3插入学生记录
2.3()可以在已经有记录背面追加新的记录1J()可以随时增长新的记录,他们仅保留在向量数组中2()假如没有记录存在,给出提醒信息3修改记录
2.4()可以按学号方式查找要修改的记录内容1()给出将被修改记录的信息,经确认进行修改2I()假如己经是空表,应给出提醒信息并返回主菜单3()假如没有找需要找到修改日勺信息,输出提醒信息4删除记录
2.5()可以按学号方式删除记录1()标志将被删除的记录,可以再次取消标志,经确认后删除已经标志的记录2()假如已经是空表,删除时应给出提醒信息并返回主菜单3()假如没有要删除的信息,输出信息4()删除操作及限于内存,只有执行存储操作时,才能覆盖原记录5文献存储
2.6()可以按默认名字或者指定名字存储记录文献1()更新存储标志2
三、系统技术文档cout«p-class_0«nstrcpystud[j].class_O,p-class_O;cout«p-name«H”;strcpystud[j].name,p-name;cout«endl;fori=0;i6;i++{cout«n科目平时成绩””期末成绩“”最终成绩”《endl;cout«p-subject[i]«H”;stud[j].subject[i]=p-subject[i];cout«p-average[i]«n n;stud[j].average[i]=p-average[i];cout«p-final_score[i]«,”;stud[j].final_score[i]=p-final_score[i];cout«p-average[i]*
0.3+p-final_score[i]^
0.7«endl;j++;p=p-next;cout«setwl OO«endl;}whilep!=NULL;save;〃删除结点student*delstudent*head,string numstudent*pl,*p2;ifhead=NULL空链表,无删的对象”coutvv”I vvendl;meunl;pl=head;whilenum!=p l-nump l-next!=NULLp2=pl;pl=pl-next;ifnum==p l-numifpl==headhead=pl-next;elsep2-next=pl-next;n=n-1;查无此人”;else coutvv”returnhead;〃判断与否可以删除信息void Delestudent*headstring del num;printhead;请输入你想删除的学号:“;cout«”Jcin»del_num;whiledel_num!=nnhead=delhead,del_num;printhead;请输入你想删除的学号cout«”J cin»del_num;〃查询信息void searchstudent*headprinthead;ifhead==NULL这是一种空链表,无查找项”cout”vendl;meunl;int i;string num;student*p1;”请输入你想查找勺学生号:”;cout«Hcin»num;pl=head;whilep1-num!=n nifp l-num=num{cout«p1-num«n”;cout«p l-class_0«n”;cout«pl-name«fori=0;i6;i++cout«p1-subject[i]«n”;cout«p1-average[i]«n”;cout«p1-final_score[i]«n”;cout«pl-average[i]*
0.3+pl-final_score[i]*
0.7«endl;}break;ifpl-num!=numpl-next==NULL”没有该学生口勺信息匕coutelse pl=pl-next;}}〃插入结点structstudent*insertstruct student*head,structstudent*studstruct student*p0,*pl,*p2;pl=head;pO=stud;ifhead==NULLhead=pl;pO-next=NULL;elsewhilepO-num!=p1-nump1-next!=NULLp2=p1;pl=pl-next;ifpO-num=p1-numifhead==plhead=pO;else p2-next=pO;pO-next=pl;elsepl-next=pO;pO-next=NULL;n=n+1;returnhead;〃插入判断void Insertstructstudent*headstruct student*stu;int i;输入你想插入勺数据cout«”H:“endl;二stu new student;学号:;cout“cin»stu-num;班级:;coutcin»stu-class_O;姓名:”;coutvv”cin»stu-name;fori=0;i6;i++科目”;coutv”cin»stu-subject[i];平时成绩:;coutcin»stu-average|i];”期末成绩:;coutcin»stu-final_score[i];cout«endl;head=inserthead,stu;printhead;whilestu-num!=〈”输入你想插入的数据:”;coutv Istu=new student;“学号:“;coutcin»stu-num;ifstu-numbreak;班级:;coutvv cin»stu-class_O;姓名:;cout«cin»stu-name;二语文”;stu-subject[O]英语”;stu-subj ect
[1]=数学”;stu-subject
[2]=物理”;stu-subject
[3]=化学”;stu-subject
[4]=”生物”;stu-subject
[5]=fori=0;i6;i++科目:“;cout«”cin»stu-subject[i];平时成绩:”;期末成绩:”;coutvv”cin»stu-average[i];coutvv”cin»stu-final__score[i];cout«endl;head=inserthead,stu;printhead;〃修改信息void updatestructstudent*headstruct student*stu;string del_num;int i;printhead;请输入你想修改的|学号:;coutvv”cin»delnum;whiledel_num!=head=delhead,del_num;”请重输入此学生的数据cout«stu=newstudent;stu-num=del_num;、系统各重要模块流程图
11.1输入数据模块
1.2查找信息模块”班级:;coutcin»stu-class_O;姓名:;cout«cin»stu-name;二语文”;]二英语”;数stu-subject[O]stu-subject[1stu-subject
[2]=学”;物理”;化学”;stu-subject
[3]=stu-subject
[4]=stu-subject
[5]=生物”;fori=0;i6;i++科目:;coutv“cin»stu-subject[i];平时成绩:;COUtVV”cin»stu-average[i];期末成绩:”;coutvv”cin»stu-final_score[i];cout«endl«setw10;head=inserthead,stu;printhead;请输入你想修改的学号:;coutvv”cin»dei_num;〃信息保留void saveofstreamoutfilefilename,ios::out;int i,j;if!outfile{cerr«open error1;exitl;forj=0;jn;j++outfilevv”学号,«stud[j].num«n«endl;outfile”班级,,«stud[j].class_O«n n«endl;outfile姓名M«stud[j].name«M H«endl;outfile”科“VV“期末总评n«endl;目fori=0;i6;i++outfile«stud[j].subject[i]«n”;outfile«stud[j].average[i]«n”;outfile«stud[j].final_score[i]«H”;outfile«stud[j].average[i]*
0.3+stud[j].final_score[i]{c
0.7«endl;cout«setw50«endl;outfile.close;〃读入信息void readinti,j;ifstream infilefilename,ios::in;if!infilecerr«nopen error!«endl;forj=0;jn;j++{;coutstud[j].num cout«stud|j].class_0«n”;cout«stud[j].name«n H«endl;fori=0;i6;i++cout«stud[j].subject[i]«n”;cout«stud[j].average[i]«n”;cout«stud|j].final_score[i]«n”;cout«stud[j].average[i]*
0.3+stud[j].final_score[i]*
0.7«endl;cout«setw50«endl;infile.closeQ;软L4件删总除体信测息试模方块案与测试记录2将程序编写完毕后,开始整体测试分别就不一样的模块功能进行测试,看程序与否可以对的的运行出成果,与否有逻辑错误测试部分记录
2.2Z IEF酬勇耳留整静⑸息完勺尹三层海勺文宓汨与任
(1)数据欧I录入过程~*C:\hly\Debug\hly.exe成目责目绩时成小末成出绩型目:语文型目生物平时成绩期末成绩9393
(2)数据的查询、■hidc*C:\Progra Files\Microsoft VisualStudio\lyProj.目时末人一数据父找改数据MXMXMM臂信息XXKXXX显插***■*«•查修信息删保信息中品米信息XXXXXX主你卡目
11、・、al%
一、信力Z091/
30601191.
999999664455..76S4321c\*C:\Progra Files\licrosoft VisualStudio\MyProjects\g\Debug\g.exe二日X请输入你想查找的学生号200820206语文语
869088.8学理
80.
697.8必嬴
89.5要
87.7英
91.6数物d_____________________________________局部测试方案与测试记录3I
3.1测试方案局部测试分别进行了数据的修改与数据时插入两个模块的测试;
3.2测试部分记录
(1)修改模块|可・*C:\Progra Files\licrosoft VisualStudioMyPro jects...X1I▲输入数强1显不磬2XXXXX据;查找嚣:修改SXXMXM自信6删息除信心、自7保荐宿心******、请输入您想完成的操8002let3d9请输入你想修改的学号200820207重重修此学生的数据:姓名jinli科巨:语文乎时成绩92期末成绩96科日•茸语于时献93幽末成绩95目:数学L平时成绩92期末成绩92目:物理,89h92目:化学L平时成绩94勒末成绩96目:生物L平时成绩99期末成绩97
(2)插入信息模块*C:\Progra Files\licrosoft VisualStudio\lyProjects施你想插完成数作据费
八、的掣号网甲年姓名战成簟目绩成期时绩杷末您心科日•茸语至鬲蕊期末成绩/目数学乎时成绩期果成绩必目:物98938992理乎时成绩期末成绩8886型目:化学乎时成绩期末成绩过目:生物乎时成绩南生成绩93959389软件调试与修改记录
44.1软件调试软件调试采用单步调试的措施,查看其运行过程保证每一步执行和预期是一致的I然后进行大量时时尝试不一样的数据进行调试,保证没有其他错误
4.2修改记录在整个程序的编写过程中,总是伴伴随程序的修改一直调试到可以对时运行出成果为止测试结论5通过以上的测试环节后,软件的运行成果没有任何问题可以初步断定,这个软件的功能是比较稳定日勺已经到达了设计的基本规定其他运行状况记录6目目删除后的状况:目目目目目C:\hly\Debug\hly.exe目已目目目班级科文目科语处科文有理赞科语型狗有理鬟U!.3X.30106311039090:2:z00baX8209:9:
9./011-16815信息何立勇091平时成绩期末成绩最终成绩989898平时成绩期末成绩最终成绩979797平时成绩期末成绩最终成绩969696平时成绩期末成绩最终成绩军时成绩扇条成绩食冬成绩949494平时成绩期末成绩最终成绩939393学号班级姓名信息侯欣雨091平时成绩期末成绩篌终成绩939393平时成绩期末成绩最终成绩949494平时成绩期末成绩最终成绩969696平时成绩期末成绩最终成绩959595平时成绩期末成绩最终成绩979797平时成绩期末成绩最终成绩
989898、系统使用阐明书:。
个人认证
优秀文档
获得点赞 0