• 336.50 KB
  • 2022-05-17 11:09:44 发布

实验室设备管理系统c程序设计课程设计

  • 29页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
*******************实践教学*******************兰州理工大学计算机与通信学院2013年春季学期C程序设计课程设计题目:实验设备管理系统专业班级:通信4班 目录目录…………………………………………………………………………………………………1中文摘要……………………………………………………………………………………………21.课程设计目的……………………………………………………………………………………32.程序设计思路……………………………………………………………………………………33.功能模块图………………………………………………………………………………………44.主函数模块流程…………………………………………………………………………………45.详细设计…………………………………………………………………………………………56.程序运行结果……………………………………………………………………………………117.总结………………………………………………………………………………………………158.致谢………………………………………………………………………………………………199.附录………………………………………………………………………………………………20 实验设备管理系统摘要实验室设备管理系统是典型的设备信息管理系统,要求能为学校实验室管理提供信息化动态化的管理,方便实验室设备管理工作,提高设备管理质量和使用效率。而且系统应符合设备管理的有关规定,包括新设备的申请,购买确认,新设备信息录入,旧设备维修和报废及用户管理等。能满足日常工作的基本需要,并达到操作过程中的直观,方便,实用,安全等有关要求。实验室设备管理系统是一个典型的信息管理系统,采用面向对象的分析方法,给出系统的基本结构、设计特色、设计模型及实现途径,并且对系统的开发技术进行研究。本系统是一个为适应对学校实验室设备管理的迫切需求而设计开发的软件系统。关键词:实验室设备、管理系统、结构体、文件、数组、函数 1.题目要求实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。2.需求分析实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号设备种类设备购入日期正常设备(未报废的)等多种方式查询;另外还要根据键盘式选择菜单以实现功能选择。整个系统可设计为实验设备信息输入模块实验设备信息修改模块实验设备分类统计模块实验设备查询模块和实验设备报废信息模块。建立实验设备信息结构体,结构体成员包括设备编号,设备种类,设备名称,设备价格,设备购入日期,是否报废,报废日期。 3.功能模块图主要功能:录入设备信息、修改设备信息、查询设备信息、按设备编号查询、按设备名称查询、对设备按种类进行分类统计、报废设备登记、报废设备统计。实验报废设备信息模块实验设备信息输入模块实验设备信息修改模块实验设备信息查询模块实验设备分类统计模块退出实验设备管理系统图1实验室设备管理系统设计4.主函数模块流程退出系统开始N密码读取数据Y主菜单报废统计报废统计查询信息报废登记录入信息修改信息修改信息查询信息分类统计选择退出系统查询信息报废查询报废统计报废登记分类统计修改信息录入信息图2实验室设备管理系统主函数模块流程图 5.详细设计5.1声明函数intmenu();//菜单voidlr();//录入信息voidxg();//修改voidcx();//查询voidcx_sbh();//设备号查询voidcx_mc();//设备名称查询voidtj();//统计voidbf();//报废信息voidbf_dj();//报废登记voidbf_tj();//报废统计voidchoose();以上为本程序的函数声明5.2菜单函数菜单函数用voidchoose()声明,其中应用了do...while(choice!=0);循环,在循环过程使用了switch(choice)选择。当输入0时,系统跳入到“提示:你已经退出系统再见!”的输出。break终止接下来的步骤。当输入1时,系统跳入到录入的子函数中,break终止接下来的步骤。当输入2时,系统跳入到修改的子函数中,break终止接下来的步骤。当输入3时,系统跳入到统计的子函数中,break终止接下来的步骤。当输入4时,系统跳入到报废的子函数中,break终止接下来的步骤。当输入5时,系统输出“提示:输入错误!n”,break终止接下来的步骤。其中的数据输入为int类型。voidchoose(){intchoice;choice=1;choice=menu(choice);do{switch(choice){case0:printf("n提示:你已经退出系统ntt再见!n");break;case1:lr();break;case2:xg();break;case3:cx();break;case4:tj();break; case5:bf();break;default:printf("提示:输入错误!n");break;}}while(choice!=0);}intmenu(intchoice){printf("nnn");printf("ttt--------------------------------n");printf("ttt+实验设备管理系统|n");printf("ttt--------------------------------n");printf("ttt+[1]----录入设备信息|n");printf("ttt+[2]----修改设备信息|n");printf("ttt+[3]----查询设备信息|n");printf("ttt+[4]----统计设备信息|n");printf("ttt+[5]----报废设备信息|n");printf("ttt+[0]----*-EXIT-*|n");printf("ttt+*·*·*·*·*·*·*·*·*·*·|n");printf("ttt--------------------------------n");printf("请输入你要操作的序号:");scanf("%d",&choice);returnchoice;错误!未找到目录项。}5.3录入函数录入函数用voidlr()声明,用到while(1){}循环,其中数字1是“true”的含义。如果IF判断成立,则将进行录入。分别录入设备ID号、设备名称、设备种类、报废日期、设备是否报废,1.没报废,0.报废、购买时间和设备价格等内容。当其中的一条记录录入完成后,系统会提示是否已经完成一条记录的添加。(注:其中的“t++;”不能丢,其在循环中起累加的作用)其中的数据输入为char类型。录入函数还应用了结构体数组的知识如下:typedefstructshebei{charid[10];charname[15];charkind[15];charover[15]; intyesno;chartime[10];charprice[10];}shebei;shebeisb[200];其中的shebeisb[200]要求最多录入200条信息。分别录入设备ID号、设备名称、设备种类、报废日期、设备是否报废,1.没报废,0.报废、购买时间和设备价格等结构体数组。其中的数据输入为char类型(除intyesno外)。voidlr()//录入信息{while(1){if(strcmp(sb[t].id,"0")==0)main();printf("n请输入设备名称:");scanf("%s",sb[t].name);;}}5.4修改函数修改函数用voidxg()声明,函数用了if...else的选择和switch的选择,其中if...else的选择包含在while循环中,并用了break的跳转语句。if...else语句更好的避免了输入进入死循环。如:if(x==0)break;else{printf("继续操作请输入1n");scanf("%d",&x);}修改函数中还使用了strcmp判断函数,当strcmp判断函数判断成立时,给予使用者符合要求的提示,使用者然后进行操作。如:strcmp(sb[t].id,find)==0。在Switch的使用中,其实现了返回主菜单的操作。如:switch(x){case0:choose();break;case1:xg();break;default:printf("输入无效,自动返回主菜单n");choose();break; }其中包含的数据类型有int类型和char类型两种。如:intx,charfind[20].voidxg()//修改{charfind[20];intx;t=0;printf("请输入要修改的设备ID号:");scanf("%s",find);while(1){if(strcmp(sb[t].id,find)==0)//如果找到的话返回的是符合要求{break;}elset++;}while(1){printf("确认修改请输入任意数字否则输入0重新输入设备原id:");scanf("%d",&x);if(x==0)break;else{printf("请输入新设备号(原来是%s):",sb[t].id);scanf("%s",sb[t].id);printf("n提示:该项记录资料已经成功修改!n");printf("退回主菜单请输入0n");printf("继续操作请输入1n");scanf("%d",&x);}}}5.5查询函数查询函数用voidcx()声明,使用do...while(choice!=0);循环,其中含有switch(choice)的选择语句。当选择0时,跳回menu函数;当选择1时,跳到设备号查询函数;voidcx_sbh() {do{if(strcmp(sb[t].id,find)==0&&sb[t].yesno==1)//1表示设备没报废{t++;}elset++;}while(t<100);if(choice==1)choose();elsecx();}设备号查询函数用voidcx_sbh()声明,使用do...while(choice!=0);循环,其中含有if...esle的选择语句。其中包含的数据类型有int类型.如:intchoice等。当选择2时,跳到设备名称查询函数;voidcx_mc()//设备名称查询{do{if(strcmp(sb[t].name,ming)==0&&sb[t].yesno==1)//1表示设备没报废{}elset++;}while(t<100);if(choice==1)choose();elsecx();}设备名称查询函数用voidcx_mc()声明,使用do...while(choice!=0);循环,其中含有ifesle的选择语句。其中包含的数据类型有int类型.如:intchoice等。否则输出"输入无效请重新输入"。 查询函数包含的数据类型有int类型.如:intchoice等。voidcx()//查询{intchoice;do{switch(choice){case0:menu();break;case1:cx_sbh();break;case2:cx_mc();break;default:printf("输入无效请重新输入n");cx();break;}}while(choice!=0);}5.5统计函数统计函数用voidtj()声明,在if的使用中,其实现了返回菜单的操作。如:printf("键入数字1返回主菜单n");printf("键入数字任意键返回上层菜单n");scanf("%d",&choice);if(choice==1)choose();函数中还使用了strcmp判断函数,当strcmp判断函数判断成立时,给予使用者符合要求的提示,使用者然后进行操作。如:(strcmp(sb[t].kind,tong)==0&&sb[t].yesno==1。而do…while循环的使用保证了多次统计的使用。(注:其中的“t++;”不能丢,其在循环中起累加的作用)。统计函数包含的数据类型有int类型和char类型.如:intchoice和chartong等。voidtj()//统计{intchoice;chartong[20];printf("n输入你要统计的设备种类:");scanf("%s",tong);do{if(strcmp(sb[t].kind,tong)==0&&sb[t].yesno==1)//1表示设备没报废{printf("设备号设备名称设备种类报废日期是否报废购买时间价格n"); printf("n%-13s%-11s%-7s%-10s%-13d%-10s%-5sn",sb[t].id,sb[t].name,sb[t].kind,sb[t].over,sb[t].yesno,sb[t].time,sb[t].price);t++;}elset++;}while(t<100);printf("键入数字1返回主菜单n");printf("键入数字任意键返回上层菜单n");scanf("%d",&choice);if(choice==1)choose();}5.6报废函数查询函数用voidbf()声明,使用do...while(choice!=0);循环,其中含有switch(choice)的选择语句。当选择0时,跳回menu函数;当选择1时,跳到报废登记函数;voidbf_dj()//报废登记{while(1){if(strcmp(sb[t].id,find)==0)//如果找到的话返回的是符合要求{break;}elset++;}while(1){if(x==0)break;{switch(x){case0:choose();break;case1:bf();break;default:printf("输入无效,自动返回主菜单n");choose();break;} }}}设备号查询函数用voidbf_dj()声明,使用do。。。while(choice!=0);循环,其中含有ifesle的选择语句。其中包含的数据类型有int类型和char类型.如:intchoice和charchoice类型等。当选择2时,跳到报废统计函数;voidbf_tj()//报废统计{do{t++;}elset++;}while(t<3);if(choice==1)choose();}设备名称查询函数用voidcx_mc()声明,使用do...while(choice!=0);循环,其中含有ifesle的选择语句。其中包含的数据类型有int类型和char类型.如:intchoice和charfind等。voidbf()//报废信息{intchoice;do{printf("ttt----------------------------------n");printf("ttt*[1]----登记报废信息*n");printf("ttt*[2]----报废设备统计*n");printf("ttt*[0]----退出*n");printf("ttt*·*·*·*·*·*·*·*·*·*·*·*|n");scanf("%d",&choice);getchar();switch(choice){case0:menu();break;case1:bf_dj();break;case2:bf_tj();break;default:printf("输入无效请重新输入n");bf();break;}}while(choice!=0);} 6.运行结果6.1菜单界面此图为截取的菜单操作界面,先输入密码才会进入界面当输入0时,系统跳入到“提示:你已经退出系统再见!”的输出。当输入1时,系统跳入到录入的子函数中。当输入2时,系统跳入到修改的子函数中。当输入3时,系统跳入到查询的子函数中。当输入4时,系统跳入到统计的子函数中。当输入5时,系统跳入到报废的子函数中。其中的数据输入为int类型。请分别输入数字1,2,3等,然后回车。图3菜单操作界面6.2录入设备信息此为录入设备信息界面,在菜单界面中选择1进入分别录入设备ID号、设备名称、设备种类、报废日期、设备是否报废,1.没报废,0.报废、购买时间和设备价格等结构体数组。其中的数据输入为char类型(除intyesno外)。请分别输入数字1,2,3等,然后回车。输入0则将返回主菜单。 图4录入设备信息界面6.3修改设备信息此为修改设备信息界面,在菜单界面中选择2进入分别修改设备ID号、设备名称、设备种类、报废日期、设备是否报废,1.没报废,0.报废、购买时间和设备价格等结构体数组。其中的数据输入为char类型(除intyesno外)。请分别输入数字1,2,3等,然后回车。输入0则将返回主菜单。图5修改设备信息6.4查询设备信息此为查询设备信息界面,在菜单界面中选择3进入,进入后选择不同的查询方式选择1,则将按设备号查找;选择2,则将按设备名称查找; 选择0,则将退出。其中的数据输入为int类型。请分别输入数字1,2,3等,然后回车。图6查询设备信息6.5统计设备信息此为统计设备信息界面,在菜单界面中选择4进入,进入后选择不同的统计方式选择1,则将按设备号统计;选择2,则将按设备名称统计;选择0,则将退出。其中的数据输入为int类型。请分别输入数字1,2,3等,然后回车。图7统计设备信息6.6报废设备信息此为报废设备信息界面,在菜单界面中选择5进入,进入后选择不同的查询方式选择1,则将按设备号查找;选择2,则将按设备名称查找;选择0,则将退出。 其中的数据输入为int类型。请分别输入数字1,2,3等,然后回车。图8报废设备信息 7.总结在编程的过程中,很容易出现一个问题,就时少大括号“}”的问题。这是,error只有一个,但是错误的地方很多,且都在括号处。按照计算机所指出的错误位置寻找是不容易找出错误的。直到整个程序看了一遍后才会发现是一个大括号的问题。通常少的是“{”或着“}”,错误位置会出现在缺少括号位置之后的其他大括号出现的地方。只要这种情况发生后,往前找是否有大括号缺失就可以将问题很快解决了。在帮同学修改程序的过程中,也遇到过一个问题。在头文件后定义了子函数,可是之后忘了编写子函数,在纠错时,有的是不会发现错误的,但是连接过程中就会报告出错。我觉得在以后的编程过程中,最好用什么函数写什么函数,后者在写完一个子函数后再在头文件底下声明。C语言实习基本上由老师引导,自己很多都靠自学,不明白的问老师,自学能力得到了很大的培养。在实习过程中,我感觉到一点,程序是不能一气呵成的。至少一气呵成的程序不会尽善尽美。程序编写要一步一步的完成。首先,对于要编的程序要有一个总体思路。要明确想要什么。只要把思路理清楚了,程序就好编写了。把程序分割成几个块,即多个函数,一块一块的编写。然后将分散的函数用另外的函数连接起来或者用main函数连接。到这一步,程序也就初步编成了,之后便是调试,检查错误。最后我觉得还可以对于已经编写好的程序进行一些修改添加,使它更加人性化。优化程序的阶段是很重要的。 参考文献1.C/C++程序设计,王连相等,中国科学技术出版社,20042.C语言程序设计,谭浩强,清华大学出版社,19993.C程序设计题解与上机指导,谭浩强,清华大学出版社,19994.C语言实用程序荟萃,西安电子科技大学出版社,19935.C语言函数手册,机械工业出版社,19996.C语言的实际应用,安徽科学技术出版社,2000 8.致谢在C语言的实习过程中,让我巩固了C语言的基础知识,以前从来没有这样编过完整的程序,实习让我有这样的一个机会,自己独立编写程序。我觉得自己说学的东西不多,但是可以将它们运用出来。在这次实习中,我开始喜欢C语言。在这次实习中,李老师对我的帮助对我最难忘。题目本身是很简单的,在李聪老师的教学风格影响下,我在编写完最初程序后,有自己添加了很多功能。程序可以更数学方法如此紧密的结合。这是非常有意思的事情。李聪老师给过我很多发展的建议,因此,我要感谢他。最后,我还要感谢给我帮助的同学,在一些程序问题上,我和同学交流经验,学到了很多在书本上学不到的东西。我真诚的感谢在这次实习中给予指导的李聪老师! 附录源文件(每个函数都要有功能说明)#include"stdio.h"#include"string.h"#definenull0intt=0;intmmcsz=0;intmima;intmenu();//菜单voidlr();//录入信息voidxg();//修改voidcx();//查询voidcx_sbh();//设备号查询voidcx_mc();//设备名称查询voidtj();//统计voidbf();//报废信息voidbf_dj();//报废登记voidbf_tj();//报废统计voidchoose();typedefstructshebei{charid[10];charname[15];charkind[15];charover[15];intyesno;chartime[10];charprice[10];}shebei;shebeisb[200];voidlr()//录入信息{while(1){printf("提示:输入0则返回主菜单!n");printf("n请你输入设备ID号:");scanf("%s",sb[t].id);if(strcmp(sb[t].id,"0")==0)main();printf("n请输入设备名称:"); scanf("%s",sb[t].name);printf("n请输入设备种类:");scanf("%s",sb[t].kind);printf("n请输入报废日期:");scanf("%s",sb[t].over);printf("n请输入设备是否报废,1、没报废,0、报废:");scanf("%d",&sb[t].yesno);printf("n请输入设备购买时间:");scanf("%s",sb[t].time);printf("n请输入设备价格:");scanf("%s",sb[t].price);printf("提示:已经完成一条记录的添加。n");t++;}}voidxg()//修改{charfind[20];intx;t=0;printf("请输入要修改的设备ID号:");scanf("%s",find);while(1){if(strcmp(sb[t].id,find)==0)//如果找到的话返回的是符合要求{break;}elset++;}while(1){printf("确认修改请输入任意数字否则输入0重新输入设备原id:");scanf("%d",&x);if(x==0)break;else{printf("请输入新设备号(原来是%s):",sb[t].id);scanf("%s",sb[t].id);printf("请输入新设备名称(原来是%s):",sb[t].name);scanf("%s",sb[t].name); printf("请输入新设备设备种类名称(原来是%s):",sb[t].kind);scanf("%s",sb[t].kind);printf("请输入新设备报废日期名称(原来是%s):",sb[t].over);scanf("%s",sb[t].over);printf("请输入新设备是否报废,1、没报废,0、报废(原来是%d):",sb[t].yesno);scanf("%d",&sb[t].yesno);printf("请输入新设备购买时间(原来是%s):",sb[t].time);scanf("%s",sb[t].time);printf("请输入新设备价格(原来是%s):",sb[t].price);scanf("%s",sb[t].price);printf("n提示:该项记录资料已经成功修改!n");printf("退回主菜单请输入0n");printf("继续操作请输入1n");scanf("%d",&x);switch(x){case0:choose();break;case1:xg();break;default:printf("输入无效,自动返回主菜单n");choose();break;}}}}voidcx()//查询{intchoice;do{printf("ttt----------------------------------n");printf("ttt*[1]----按设备号查找*n");printf("ttt*[2]----按设备名称查找*n");printf("ttt*[0]----退出*n");printf("ttt*·*·*·*·*·*·*·*·*·*·*·*|n");scanf("%d",&choice);getchar();switch(choice){case0:menu();break;case1:cx_sbh();break;case2:cx_mc();break; default:printf("输入无效请重新输入n");cx();break;}}while(choice!=0);}voidcx_sbh()//设备号查询{intchoice;charfind[20];intt=0;printf("请输入您要查询的设备号:");scanf("%s",find);getchar();do{if(strcmp(sb[t].id,find)==0&&sb[t].yesno==1)//1表示设备没报废{printf("设备号设备名称设备种类报废日期是否报废购买时间价格n");printf("n%-13s%-11s%-7s%-10s%-13d%-10s%-5sn",sb[t].id,sb[t].name,sb[t].kind,sb[t].over,sb[t].yesno,sb[t].time,sb[t].price);t++;}elset++;}while(t<100);printf("键入数字1返回主菜单n");printf("键入数字任意键返回上层菜单n");scanf("%d",&choice);if(choice==1)choose();elsecx();}voidcx_mc()//设备名称查询{intchoice;charming[20];t=0;printf("n输入你要查询的设备名称:"); scanf("%s",ming);do{if(strcmp(sb[t].name,ming)==0&&sb[t].yesno==1)//1表示设备没报废{printf("设备号设备名称设备种类报废日期是否报废购买时间价格n");printf("n%-13s%-11s%-7s%-10s%-13d%-10s%-5sn",sb[t].id,sb[t].name,sb[t].kind,sb[t].over,sb[t].yesno,sb[t].time,sb[t].price);t++;}elset++;}while(t<100);printf("键入数字1返回主菜单n");printf("键入数字任意键返回上层菜单n");scanf("%d",&choice);if(choice==1)choose();elsecx();}voidtj()//统计{intchoice;chartong[20];printf("n输入你要统计的设备种类:");scanf("%s",tong);do{if(strcmp(sb[t].kind,tong)==0&&sb[t].yesno==1)//1表示设备没报废{printf("设备号设备名称设备种类报废日期是否报废购买时间价格n");printf("n%-13s%-11s%-7s%-10s%-13d%-10s%-5sn",sb[t].id,sb[t].name,sb[t].kind,sb[t].over,sb[t].yesno,sb[t].time,sb[t].price);t++;}elset++; }while(t<100);printf("键入数字1返回主菜单n");printf("键入数字任意键返回上层菜单n");scanf("%d",&choice);if(choice==1)choose();}voidbf()//报废信息{intchoice;do{printf("ttt----------------------------------n");printf("ttt*[1]----登记报废信息*n");printf("ttt*[2]----报废设备统计*n");printf("ttt*[0]----退出*n");printf("ttt*·*·*·*·*·*·*·*·*·*·*·*|n");scanf("%d",&choice);getchar();switch(choice){case0:menu();break;case1:bf_dj();break;case2:bf_tj();break;default:printf("输入无效请重新输入n");bf();break;}}while(choice!=0);}voidbf_dj()//报废登记{charfind[20];intx;t=0;printf("请输入要登记的设备ID号:");scanf("%s",find);while(1){if(strcmp(sb[t].id,find)==0)//如果找到的话返回的是符合要求{break; }elset++;}while(1){printf("完成登记请输入0否则输入任意数再进行修改:");scanf("%d",&x);if(x==0)break;{printf("请输入新设备是否报废1、没报废,0、报废(原来是%d):",sb[t].yesno);scanf("%d",&sb[t].yesno);printf("n>>>>>>>>>>提示:该项记录资料已经成功登记!n");scanf("%d",&x);switch(x){case0:choose();break;case1:bf();break;default:printf("输入无效,自动返回主菜单n");choose();break;}}}}voidbf_tj()//报废统计{intchoice;charfind[20];t=0;printf("n输入你要统计的报废设备种类:");scanf("%s",find);do{if(strcmp(sb[t].kind,find)==0&&sb[t].yesno==0)//0表示设备报废{printf("设备号设备名称设备种类报废日期是否报废购买时间价格n");printf("n%-13s%-11s%-7s%-10s%-13d%-10s%-5sn",sb[t].id,sb[t].name,sb[t].kind,sb[t].over,sb[t].yesno,sb[t].time,sb[t].price);t++;} elset++;}while(t<3);printf("键入数字1返回主菜单n");printf("键入数字任意键返回上层菜单n");scanf("%d",&choice);if(choice==1)choose();}intmenu(intchoice){printf("nnn");printf("ttt--------------------------------n");printf("ttt+实验设备管理系统|n");printf("ttt--------------------------------n");printf("ttt+[1]----录入设备信息|n");printf("ttt+[2]----修改设备信息|n");printf("ttt+[3]----查询设备信息|n");printf("ttt+[4]----统计设备信息|n");printf("ttt+[5]----报废设备信息|n");printf("ttt+[0]----*-EXIT-*|n");printf("ttt+*·*·*·*·*·*·*·*·*·*·|n");printf("ttt--------------------------------n");printf("请输入你要操作的序号:");scanf("%d",&choice);returnchoice;}voidchoose(){intchoice;choice=1;choice=menu(choice);do{switch(choice){case0:printf("n提示:你已经退出系统ntt再见!n");break;case1:lr();break;case2:xg();break;case3:cx();break;case4:tj();break; case5:bf();break;default:printf("提示:输入错误!n");break;}}while(choice!=0);}main(){chars[20];inti;if(mmcsz==0){printf("请输入登录密码:");//密码为:1314mmcsz++;for(i=0;i<4;i++){s[i]=getch();printf("*");}s[4]="";if(strcmp(s,"1314")==0)choose();elseprintf("密码错误n");}elsechoose();}