版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生证管理系统1•题目与要求该系统应该具有下列功能:1) 录入某位学生的学生证信息。2) 给定学号,显示某位学生的学生证信息。3) 给定某个班级的班号,显示该班所有学生的学生证信息。4) 给定某位学生的学号,修改该学生的学生证信息。5) 给定某位学生的学号,删除该学生的学生证信息。6) 提供一些统计各类信息的功能。【输入要求】应用程序运行后,在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。【输出要求】1) 应用程序运行后,要在屏幕上显示一个菜单。2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。2.功能实现设计2.1总体设计:根据题目要求,由于要设计学生证的管理系统,所以学生证信息中应该包含学号、姓名、性别、班号等信息。除此之外,还要做到先录入,再输出,即如果使用者还没有录入任何学生证信息就不能做任何输出。由于学生信息要不断更改,所以还要设定修改、增加、删除、查找功能。另外,学生数量多而繁,故应设置不同类别的统计功能,供使用者方便使用。综上所述,可将该程序分为:主函数、菜单显示模块、菜单提示模块、学生证信息生成模块、添加学生证信息模块、学生证信息显示模块、学生证信息修改模块、学生证信息删除模块、计算所有学生人数模块、计算各班人数模块。2.2详细设计:1)主函数主函数一般设计比较简洁,只提供输入、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。其流程图如下图所示:voidDlispl日jj卜I巳nLiO/*显不菜单函数衣丿prlntFCBprlntFCB\n\nXnXn\nXt:Xt欢迎进入甞注证管理系统T;printFC'XnXtXtprintF(i8\n\tXtprlntFC"XnXt\tprlntFC"\n\t\tprintFC'XnXtXtprintFC'XnXtXtprintFC88\n\t\tprlntFC"XnXt\tpr-intFCSiprintFC'XnXtXtprintF(i8\n\tXtprlntFC"XnXt\tprlntFC"\n\t\tprintFC'XnXtXtprintFC'XnXtXtprintFC88\n\t\tprlntFC"XnXt\tpr-intFCSi\n\t\fcprintFf'XnXtXt23&5頁逋韓学至的学生证信息“〉;卩广5七1=「・\仃\仃片仃%仃%仃%仃%1:芯口肓您迭择以上数字:");malnC)“主malnC)“主函數斗return0;【程序】structstudent«head;intmemiu;&isplayMenuC):sicanf(44ldiB9ftmenu):Luhile([nEinu)><sikditchfmeruJ<case-1:head-createo^toireak; 生证乘人怏拷"case2:head-ddd(head);brealk; 证佶息疥力口模块矽caseS;print(head3.0>iibre^k;■/■显示悽块caseit-prlnt(head,1>;fcireak;"並丞扰块斗caseS:print .2、;匕厂0日!<,■/■•显玦*■■/casezmod1Fy(head>E>reah: 傕咬*堇j:夬*/case7;he«ad=del(head);break;才于励]除槿坝caseS:count_studbnt(Ihead};break:/膽言禿勺十;去块忖Ficacn-® udlssnt=_num()~hvoAk;才■■总、藪骁i+穫块DisplayMenu();scanF("'竜皿・”补Suenu):各功能模块设计结构体structstudent<unsignedlonynum;charname[4^0];charsex;intclass;structstudent*next;2•输入模块从主函数送进来的n=1,进入structcreate,在structcreate中通过链表开辟一个长度为student结构体的连续动态空间。接着在此函数中通过*pl这个指针调用voidtips_create(structstudent*p)函数来提示用户录入学生证各项信息。录入完毕后*p1再从voidtips_create(structstudent*p)函数中跳回structcreate中,将其值赋给*p2,这样保存*p2到开辟的内存单元中即可。具体流程图如下图所示:【程序】structstudent*CFutr(uoid)丿*Y生信息生底{structstudent*hcad;structstudent*p1,*p2;n-6;p1-p2-(structstudent*)mallac(LEN);严耐line.在冋廿的动态厅储区口分配一八长辰为Hudrnt纤构体的迁统空冋吋情您输八各节生的节生fl信思W”);tips_create(p1);head=NULL;whilc(p1->numt=0)n=n+1;iF(n==d)head=p1;elsep2->ne«t=p1;p2=p1;p1=(structstudent*)malloc(LEN);tips_create(p1);p2->n&Ht=NULL;return(headl);voidtips_create(structstudent*p) 时的是示*'printf("W£输入某位学生的学生证后1啦数字,如果您已输入完毕请按0\n");f喲入最后学号皆scanFf'^ld",&p->nuni);getchar();printH"请您输入该学生的姓生,如果您已输入完毕请按叭n“);scanFf'^s",tp->name);getchar();printf("W£输入该学生的性别F(女网男),如果您已输入完毕请按叭屮);scanF("^c",fcp->sex);getchar();printf("W£输入该学生所在班级的班号,如果您已输入完毕请按肌n“);scanFf'^d",fcp->class);getchar();}注意:如果输入完毕,要在各项输入时键入0以示。3.学生证信息添加模块该模块的功能主要用于录入完学生证信息后,发现漏录入了信息或学生变动需要添加学生信息用。【程序】structstudent*add(structstudent*head)<structstudent*p9,*pd,*p2;ir(n—0)jjrinLf["Xn7-不起!您还没.有录入任何学主怔信息!请先选择1录入学生匹信息!X"");else<pO=(structstudent*)n)alloc(LEN):pl=hPArt-printf["\n\t****#***************«*-****»**#***************«*****»********«-«**\n")•print请您输入名学生的学生证信息);tips_create(p9);if(nead==hiULL){head=pO;pO->next=NULL;}else<wni.ie((pB->num>pi->nun)fc&[pi->next?=NULL))P2=p1;p1=p1->next;}if[p0->num<-p1->nu[i)If(lit?dd==p1)nea(i=pii;elsep2->next=pfl;pfi->np«r=p1-}elsepl->next=pu;pB->next=NLLL;n=n*1;return(nead);4•输出模块输出模块主要功能有:输出出所有学生的学生证信息、给定学号后输出某位学生的学生证信息和给定班号后输出该班所有学生的学生证信息三大功能。首先,通过main函数得到选择结果(3、4或5),如果选择3则赋值给print函数一个num=O,继而进入第一个分模块 输出所有学生的学生证信息;如果选择4则赋值给print函数一个num=l,继而进入第二个分模块 给定学号后输出某位学生的学生证信息;如果选择5则赋值给print函数一个num=2,继而进入第三个分模块 给定班号后输出该班所有学生的学生证信息。【程序】uuidprin[Structstudent*nead,int仙耐*^生证信息输岀菌藪时<''structstudent*p:uiibiynedlunyiiu;illlLldbb;if(nun==e)lf(n==o)卩如申“U!对不起!您还段有菲入任闻竺乞证信息!请先选择谭人学生证信息!讪“);PIWP( printH"\n已录入的这刑也同学的学空证信息是:\n\n);p=n@>adi;iF(h9Jdf=NULL)priMF「学号姓名吐让性别吐垃班圾WJ;dn{卩rintf(叭馆百\nhb,p->nun3p->nap->clai££);p=p->nest;}uhile(p?=NULL);els®iF(nun==-1)if(n==町pMntFy对不起!您还段有录入任阿学生证信息!请先选择V录人学生证信息!\n"):else{ 【■请您输人该学生的学号scanrC'WjLno);print「(“全号Mt姓名⑴琏刖曲珊级W】;p-head;iF(htad*-HULL]1F[p->nun—no)printf \t\n1',p->nu叫|p°>naPieJp->se3cap->class);p-p->nest;}uhilE(pHHULL);elseif(num==2)if(n==0)iprinIf("\ii7.f不起|您丁段有录;;忏诃性肝信息I荫先选栏1录\半主证信息I\ii");pri11Lf「韋您输入谖芋生的班号WpriiiL仇“工号 ■时1AL壬匸p=h?ad:■ftliHdil!=HIIII)
do{if(p->cla5£==cLa££)printF["51d\ti£\t\tic\t\ttd\n"»p->num#p->nane,p->seK,p->class);p=p->next;}while[p!=NULL);该程序流程图如下图所示:第一分模块流程图如下图所示:
其他各分模流程图与上图类似,这里不多述。修改模块修改模块是用于给定某位学生的学号,修改该学生的学生证信息。具体过程:读取学号,在链表中找到相对应的结构单元,用新输入的学生信息替换原有信息。【程序】voidnodif(/(structstudent*head)/*f^改学生信息*/<unsignedlongnum;structstudent*p1,*p2;if(n==&)printF(-\n对不起|您还没有录入任何学生证信息!请先选择录入学生证信息Ielse5canF("^ld",&nuni);if(head==NULL){printFC'\nlistp1=head;while(nun!=p1->num&&p1->neKt!=NULL)<p2=p1;p1=p1->nest;}if(num==p1->nun)<tipscreate(pl);printF「■己儘改ldXn'^num);>elseprintFCUd没有此学号rXn-'.num);删除模块删除模块用于给定某位学生的学号,删除该学生的学生证信息。具体过程与修改模块相似。程序】structstudent«del(structstudent需血日生信息删除球unsignedlongnun;structstudent*p1,*p2;iF(n==B)printFCXn对不起|您还没有录入任何学生证信息|请先选择★录入学生证信息Ielsescanf;p1=head;while(num!=pd->num&&pJl->next*=NULL)p2=p1;p1=p1->next;}if(nuin==p1->nuii)elsep2->next=p1->next:printF("已删除^ldXn'^nun);n=n-1;elseprintfCUd没有此学号fXn'^nuin);return(head);统计模块总人数统计模块【程序】voidallstudentsnumt)<--iF(n==B)P^intFCAn对不起!您还没有录入任何学生证信息|请先选择勺录入学生证信息!\屮昇elseprintFC"统计的学生总数为紳名・・』);各班人数统计模块【程序】uoidcount_student(structstudent*head)#託统计各型壬级人数函数*#<_intstudents_nuni[28][2]={B>;inti,j;structstudent*p;i=8;j=8;if(n==fl)printFC\n对不起|您还没有录入任何学生证信息|请先选择厲录入学生证信息I ;elsep=head;iF(head*=NULL)<doftudent^_nun[i][0]=p->class:For(i=8;students_num[i][8]?=0;i++)<_iF(students_nun[i][0]==p->class)
students_num[i][1]+<■;p=p->next;}while(p*=NULL);>printF(-\t\t班号\lz\l:人数\n->;for(i=B;i<20;<iF(students_num[i][B]*=students_num[i-1][Q])<--For(j=fl;j<2;<printF("%d",students_num[i][j]);printF("\n");该程序具体操作操作如下:1) 判断n的值,若n=0,表明用户还未录入任何学生证信息,提示用户录入学生证信息,并跳至菜单处供用户重新选择。若n不为0,则进入下面的程序。2) 将指针*p指向链表的头(head),验证head是否为空(NULL)。3) 先将*p读到student结构体里的class赋值给二维数组的[0][0]位置,进入for循环,如果*p读到的class值和二维数组[0][0]位置的值相同,则学生人数(该二维数组所对应的第二列)自加一次;若不同,则跳出if语句,进行二维数组i++(行加1),再进入if语句来比较。当for循环完毕跳出时指针p指向next单元,由此再回到此段开头进行do・・・while循环。直至指针p指向的next为空结束。4) 输出记录着班级和各班人数的二维[20][2]的数组,得到统计结果。具体流程图如下图所示:
公共函数学生总人数:intn;学生信息录入提示函数:voidtips_create(struetstudent*p[说明]该函数用于录入学生证信息和修改学生证信息时的输入提示作用,从而引导使用者完成录入工作。【程序】uoidtips_create(structstudent*p) /唏!1入时的売示*/'P^intfCW您输入某位学生的学生证后1啦数字,如果您已输入完毕请按0\n");/喘人最后学号皆scanFf'^ld",&p->nuni);getchar();P^ntfC"请您输入该学生的姓宅,如果您已输入完毕请按叭屮);scanFf'^s",tp->name);getchar();printf("W您输入该学生的性别珥女何男),如杲您已输入完毕请按叭屮);scanFf'^c",&p->sex);getchar();P^intfC'W您输入该学生所在班级的班号,如果您已输入完毕请按肌n“);scanFf'^d",&p->class);getchar();>声明程序运行前,应对用到的头文件、全局变量和函数进行声明,声明如下:voidDispLayMenuf):structstudant*add(gtructstudent*h«.ad);structstudant*cr9atG(uoid);structstudent*del(structstudent*head);voidnodiFyfstructstudEnt*head);voidprintfstructstudent*head,intnum);uoidcountstudentCstructstudent*head);uoidtipscreateCstructstudent*head);uoidall_5tudents_num();上机操作下面是各模块的界面图:主菜单函数:如图一所示。-|n|x|自心自心息证证信生生自心证宀盂于信主的的证生的宀盂亍息塞该该信的学改除息证生遼删信息生常,,数证信生证的養宀盂星量韋生示示的的学数的霍显显生生的生生的有塞愆卫!p-|n|x|自心自心息证证信生生自心证宀盂于信主的的证生的宀盂亍息塞该该信的学改除息证生遼删信息生常,,数证信生证的養宀盂星量韋生示示的的学数的霍显显生生的生生的有塞愆卫!p位位班有某各所入加一誓定定定#出录添显给给给给统统退1234567890S"C:\DocumentsandSettings\Administrator\面、DEbuMstudoitscardmanagement.exe"欢迎进入学生证管理系统请您选择以上数字二图一主菜单输入模块:在主界面出现后输入1并按【Enter】键,结果如图二所示。"C:\DocumentsandSettings\Administrator\面'DEtMJQ'BtudErrtscardmanaQement.exe"自心自心息证证信生生自心雪盂于信生的的证芝生生的冲丈于息芝该该信的学改除息证4-4^删信息生需,‘数证信畫宵>万人注证的善冲自心自心息证证信生生自心雪盂于信生的的证芝生生的冲丈于息芝该该信的学改除息证4-4^删信息生需,‘数证信畫宵>万人注证的善冲+W量韋生示示的的学数的冲Z子显显生生的生生的有‘応辜W-韋曹苕万位位班有董垂01*某各所入加一霜定定定#出录添显给给给给统统退1234567890请您选择以上数字MXXXXXJO(JO(JO(JO(JO(JO(JO(耳胃耳>(耳胃耳>(耳胃耳>(耳胃耳>(耳胃耳>(耳胃耳>(耳胃耳JCJCJCJCJCJCJCJCJCJCJCJCJCJCJ<J<J<J<k青你输人卷孝年的孝年祚信自fe鄭3孟華星鬲辜蚩正簷佃位数字,如果您己输入完毕请按®图二输入模块输入某位学生的学生证后10位数字后,按【Enter】键。输入该学生的姓名,按【Enter】键。再输入该学生的性别F(女)M(男),按【Enter】键。最后输入该学生所在班级的班号,按【Enter】键。此过程为录入信息提示模块,如图三所示。'C:\DocumentsandSettings\Administrator^面\DeIjuq\:s1:ucIe门cardmanagement.exe"--9-0-韋量的学数生的生¥s位班有某各所定苹出给统统退删除该学生的学生证信息□□请您选择以上数字曲蓿你输入客学牛的学坤订信自SMASilSHSffii10位数字,如杲您已输入完毕请擬B10O4083陰您输入该学生的姓名,如杲您己输入完毕请按0障您输入该学生的性别玖女林男儿如果您己输入完毕请按內M隔您输入该学生所在班级的班号,如果您己输入完毕请擬072084旖您输入某位学注的学生证后佃位数字,如果您己输入完毕请按回图三学生信息录入提示模块当输入完毕后,在各项中输入0,以跳出提示模块。"C:\DocumentsandSettings\Administrator\^面\DEhuQ\stu血ntscardmanaQement.exe"请您选择以上数字曲在菜单中选择2进入学生证信息添加模块:如图四所示。-|n|x|-|n|x|请您选择以上数字诅蓿标输入客学坤的学%汗信自fewAOiSsiSEiie位数字,如杲您已输入完毕请按aB1104083區您输入该学生的姓名,如杲您已输入完毕请按回養您输入该学生的性别斤<女★男》如呆您己输入完毕请按3扫您输入该学生所在班级的班号,如果您己输入完毕请按0072080欢迎进入学生证管理系统[^1-统甘各班级的学生人数-统*所有率生数量0-退出请您选择以上数字汩己書入的这学冇S10040S3S11040S3己書入的这学冇S10040S3S11040S3位同学的学生证信息是:姓名If眾奎性别MM班级7208472080欢迎进入学注证管理系统MKMKMKMKWKWKWKWKWJtJCJtJCJtJCJtJCKMKMKMKMKMKMKMKMJCMLJCMLJCMLJCMLXXXXXXXXXMMMMMM-录入某嘗生的嘗■生证信息-添*51的嘗压证信息-显示屯所有率生的学星证信息
图五输出模块给定学号,显示某位学生的学生证信息,即输出模块中第二分模块。如图六所示。-|n|x|-|n|x|9-貌计所有学生数量0-退出9-貌计所有学生数量0-退出斎您选择以上数字请您输入该学生的學号81004083学号性别M班级72084息息证信生证学生的信的学息证注脅信息生宀轟证信畫班生证的養韋生示示的宀Z息息证信生证学生的信的学息证注脅信息生宀轟证信畫班生证的養韋生示示的宀Z于显显空的有-,Aas定录添显给给图六显示某位学生的学生证信息给定班号,显示该班所有学生的学生证信息,即第三分模块。如图七所示。奔统统退篇班有
呆某各所亠的生羣量=口信请您选择以上数字汚请您输入该学生的班号72084学号31004033奔统统退篇班有
呆某各所亠的生羣量=口信请您选择以上数字汚请您输入该学生的班号72084学号31004033il性别M班号720S4C:\DocumentsandSettings\Administrator\M Debug\studentscardmanagement.exe欢迎逬入学生证管理系统】薪狒祢息图七显示该班所有学生的学生证信息菜单中选择6,进入到了修改模块,具体功能是:给定某位学生的学号,修改该学生的学生证信息。如图八至十三所示。陵|"C:\DocumentsandSettings\Administrator\^面\DEbuQ\EtudEirt£cardmanaQement.exe"-|口|対欢迎进入学生证管理系统自心自3息证证信生生自信生的的证芝生生的辜息韋该该信的学改除息证删信息生躊,,数证信畫轉包IPA生证的養WiH量韋生示示的的学数的生的生生的有--¥?塞总包P位位班有董$+^<某各所定定定莽出录添显给给给给统统退1234567890宀XIP数学上的以生择学f您那请的图・1口|耳1自心自心息证证信生生自心匹盂于信生的的证善生生的冲Z于息宓車诱诱信的学改除证生喜删自s隹息生需,‘数证信畫誓包万人生证的善az羣量韋生示示的的学数的az于显显生生的生生的有‘dz于整子韋暫包万位位班有蓋舀^<某各所入卽一霄定定定菲出录添显给给给给统统退---------1234567890请您选择以上数击临惰您输入您想修改的那位学生的学寺010040S3扁您输入某位学生的学生证后佃隹数字,如杲您已输入完毕请按回图九C:\DocunientsandSettings\AdministratorMiHADebugstudentscardmanagement.exe自4自4息证证、信生生息证$-于信生的的证韋生生的斗辜息塞该该信的学改除息旺生4^删信息生申斋-自4自4息证证、信生生息证$-于信生的的证韋生生的斗辜息塞该该信的学改除息旺生4^删信息生申斋-M证信生证的善星量示示的的学数的冲辜显显生生的生生的有‘,4丈子鞏位班有蓋垂0<-某各所入加一霄定定定#出录添显给给给给筑筑退1234E67890请您选择以上数舍汗惰您输入您想修改的那位学注的学寺81004083惰您输入某位学生的学生证后倔位数字,如杲您己输入完毕请按旦81004082旖您输入该学生的姓容,如果您己输入完毕请按®图十"C:\DocumentsandSettings\Administrator\面\D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物流管理岗位的面试题及答案
- 牙科器械消毒试题及答案
- 野生动物实验辅助工常识评优考核试卷及答案
- 医疗器械采购培训试题答案
- 执业兽医全科历年真题及答案
- 中储粮高级质检岗考试题库及答案
- 中级保管员考试卷及答案
- 铸造工程师岗位面试问题及答案
- 2025年江西省大学语文(专升本)真题及答案
- 2026年内蒙古高职单招语文(真题)及答案
- 2025浙教版(2024)八年级上册科学教学计划(三篇)
- 新生儿气胸的护理
- 中药新药致心律失常(QT间期延长)临床安全性评价技术规范
- 猪场买卖合同协议
- 心理调适-开学第一课(课件)-小学生主题班会版
- 农村安全饮水工程给水管道沟槽开挖工序质量评定表
- 2《哦香雪》公开课一等奖创新教学设计统编版高中语文必修上册-2
- 30题仪表工程师岗位常见面试问题含HR问题考察点及参考回答
- 商务智能与数据可视化分析基础全套教学课件
- 高脂血症诊疗规范讲义
- 旋挖钻机检测报告表
评论
0/150
提交评论