还剩27页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
*******************实践教学*******************兰州理工大学计算机与通信学院2013年春季学期C程序设计课程设计题目实验设备管理系统专业班级通信4班姓名朱卫平学号12250405指导教师李聪成绩目录目录…………………………………………………………………………………………………1中文摘要……………………………………………………………………………………………
21.课程设计目的……………………………………………………………………………………
32.程序设计思路……………………………………………………………………………………
33.功能模块图………………………………………………………………………………………
44.主函数模块流程…………………………………………………………………………………
45.详细设计…………………………………………………………………………………………
56.程序运行结果……………………………………………………………………………………
117.总结………………………………………………………………………………………………
158.致谢………………………………………………………………………………………………
199.附录………………………………………………………………………………………………20实验设备管理系统摘要实验室设备管理系统是典型的设备信息管理系统要求能为学校实验室管理提供信息化动态化的管理,方便实验室设备管理工作,提高设备管理质量和使用效率而且系统应符合设备管理的有关规定,包括新设备的申请,购买确认,新设备信息录入,旧设备维修和报废及用户管理等能满足日常工作的基本需要,并达到操作过程中的直观,方便,实用,安全等有关要求实验室设备管理系统是一个典型的信息管理系统,采用面向对象的分析方法给出系统的基本结构、设计特色、设计模型及实现途径并且对系统的开发技术进行研究。本系统是一个为适应对学校实验室设备管理的迫切需求而设计开发的软件系统关键词实验室设备、管理系统、结构体、文件、数组、函数
1.题目要求实验设备信息包括设备编号,设备种类如微机、打印机、扫描仪等等,设备名称,设备价格,设备购入日期,是否报废,报废日期等
2.需求分析实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号设备种类设备购入日期正常设备(未报废的)等多种方式查询;另外还要根据键盘式选择菜单以实现功能选择整个系统可设计为实验设备信息输入模块实验设备信息修改模块实验设备分类统计模块实验设备查询模块和实验设备报废信息模块建立实验设备信息结构体,结构体成员包括设备编号,设备种类,设备名称,设备价格,设备购入日期,是否报废,报废日期
3.功能模块图主要功能录入设备信息、修改设备信息、查询设备信息、按设备编号查询、按设备名称查询、对设备按种类进行分类统计、报废设备登记、报废设备统计图1实验室设备管理系统设计
4.主函数模块流程图2实验室设备管理系统主函数模块流程图
5.详细设计
5.1声明函数intmenu;//菜单voidlr;//录入信息voidxg;//修改voidcx;//查询voidcx_sbh;//设备号查询voidcx_mc;//设备名称查询voidtj;//统计voidbf;//报废信息voidbf_dj;//报废登记voidbf_tj;//报废统计voidchoose;以上为本程序的函数声明
5.2菜单函数菜单函数用voidchoose声明,其中应用了do...whilechoice!=0;循环,在循环过程使用了switchchoice选择当输入0时,系统跳入到“提示:你已经退出系统再见!”的输出break终止接下来的步骤当输入1时,系统跳入到录入的子函数中,break终止接下来的步骤当输入2时,系统跳入到修改的子函数中,break终止接下来的步骤当输入3时,系统跳入到统计的子函数中,break终止接下来的步骤当输入4时,系统跳入到报废的子函数中,break终止接下来的步骤当输入5时,系统输出“提示:输入错误!\n”,break终止接下来的步骤其中的数据输入为int类型voidchoose{intchoice;choice=1;choice=menuchoice;do{switchchoice{case0:printf\n提示:你已经退出系统\n\t\t再见!\n;break;case1:lr;break;case2:xg;break;case3:cx;break;case4:tj;break;case5:bf;break;default:printf提示:输入错误!\n;break;}}whilechoice!=0;}intmenuintchoice{printf\n\n\n;printf\t\t\t--------------------------------\n;printf\t\t\t+实验设备管理系统|\n;printf\t\t\t--------------------------------\n;printf\t\t\t+
[1]----录入设备信息|\n;printf\t\t\t+
[2]----修改设备信息|\n;printf\t\t\t+
[3]----查询设备信息|\n;printf\t\t\t+
[4]----统计设备信息|\n;printf\t\t\t+
[5]----报废设备信息|\n;printf\t\t\t+
[0]----*-EXIT-*|\n;printf\t\t\t+*·*·*·*·*·*·*·*·*·*·|\n;printf\t\t\t--------------------------------\n;printf请输入你要操作的序号:;scanf%dchoice;returnchoice;错误!未找到目录项}
5.3录入函数录入函数用voidlr声明,用到while1{}循环,其中数字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//录入信息{while1{ifstrcmpsb[t].id0==0main;printf\n请输入设备名称:;scanf%ssb[t].name;;}}
5.4修改函数修改函数用voidxg声明,函数用了if...else的选择和switch的选择,其中if...else的选择包含在while循环中,并用了break的跳转语句if...else语句更好的避免了输入进入死循环如ifx==0break;else{printf继续操作请输入1\n;scanf%dx;}修改函数中还使用了strcmp判断函数,当strcmp判断函数判断成立时,给予使用者符合要求的提示,使用者然后进行操作如strcmpsb[t].idfind==0在Switch的使用中,其实现了返回主菜单的操作如switchx{case0:choose;break;case1:xg;break;default:printf输入无效,自动返回主菜单\n;choose;break;}其中包含的数据类型有int类型和char类型两种如intxcharfind
[20].voidxg//修改{charfind
[20];intx;t=0;printf请输入要修改的设备ID号:;scanf%sfind;while1{ifstrcmpsb[t].idfind==0//如果找到的话返回的是符合要求{break;}elset++;}while1{printf确认修改请输入任意数字否则输入0重新输入设备原id:;scanf%dx;ifx==0break;else{printf请输入新设备号原来是%s:sb[t].id;scanf%ssb[t].id;printf\n提示:该项记录资料已经成功修改!\n;printf退回主菜单请输入0\n;printf继续操作请输入1\n;scanf%dx;}}}
5.5查询函数查询函数用voidcx声明,使用do...whilechoice!=0;循环,其中含有switchchoice的选择语句当选择0时,跳回menu函数;当选择1时,跳到设备号查询函数;voidcx_sbh{do{ifstrcmpsb[t].idfind==0sb[t].yesno==1//1表示设备没报废{t++;}elset++;}whilet100;ifchoice==1choose;elsecx;}设备号查询函数用voidcx_sbh声明,使用do...whilechoice!=0;循环,其中含有if...esle的选择语句其中包含的数据类型有int类型.如intchoice等当选择2时,跳到设备名称查询函数;voidcx_mc//设备名称查询{do{ifstrcmpsb[t].nameming==0sb[t].yesno==1//1表示设备没报废{}elset++;}whilet100;ifchoice==1choose;elsecx;}设备名称查询函数用voidcx_mc声明,使用do...whilechoice!=0;循环,其中含有ifesle的选择语句其中包含的数据类型有int类型.如intchoice等否则输出输入无效请重新输入查询函数包含的数据类型有int类型.如intchoice等voidcx//查询{intchoice;do{switchchoice{case0:menu;break;case1:cx_sbh;break;case2:cx_mc;break;default:printf输入无效请重新输入\n;cx;break;}}whilechoice!=0;}
5.5统计函数统计函数用voidtj声明,在if的使用中,其实现了返回菜单的操作如printf键入数字1返回主菜单\n;printf键入数字任意键返回上层菜单\n;scanf%dchoice;ifchoice==1choose;函数中还使用了strcmp判断函数,当strcmp判断函数判断成立时,给予使用者符合要求的提示,使用者然后进行操作如strcmpsb[t].kindtong==0sb[t].yesno==1而do…while循环的使用保证了多次统计的使用(注其中的“t++;”不能丢,其在循环中起累加的作用)统计函数包含的数据类型有int类型和char类型.如intchoice和chartong等voidtj//统计{intchoice;chartong
[20];printf\n输入你要统计的设备种类:;scanf%stong;do{ifstrcmpsb[t].kindtong==0sb[t].yesno==1//1表示设备没报废{printf设备号设备名称设备种类报废日期是否报废购买时间价格\n;printf\n%-13s%-11s%-7s%-10s%-13d%-10s%-5s\nsb[t].idsb[t].namesb[t].kindsb[t].oversb[t].yesnosb[t].timesb[t].price;t++;}elset++;}whilet100;printf键入数字1返回主菜单\n;printf键入数字任意键返回上层菜单\n;scanf%dchoice;ifchoice==1choose;}
5.6报废函数查询函数用voidbf声明,使用do...whilechoice!=0;循环,其中含有switchchoice的选择语句当选择0时,跳回menu函数;当选择1时,跳到报废登记函数;voidbf_dj//报废登记{while1{ifstrcmpsb[t].idfind==0//如果找到的话返回的是符合要求{break;}elset++;}while1{ifx==0break;{switchx{case0:choose;break;case1:bf;break;default:printf输入无效,自动返回主菜单\n;choose;break;}}}}设备号查询函数用voidbf_dj声明,使用dowhilechoice!=0;循环,其中含有ifesle的选择语句其中包含的数据类型有int类型和char类型.如intchoice和charchoice类型等当选择2时,跳到报废统计函数;voidbf_tj//报废统计{do{t++;}elset++;}whilet3;ifchoice==1choose;}设备名称查询函数用voidcx_mc声明,使用do...whilechoice!=0;循环,其中含有ifesle的选择语句其中包含的数据类型有int类型和char类型.如intchoice和charfind等voidbf//报废信息{intchoice;do{printf\t\t\t----------------------------------\n;printf\t\t\t*
[1]----登记报废信息*\n;printf\t\t\t*
[2]----报废设备统计*\n;printf\t\t\t*
[0]----退出*\n;printf\t\t\t*·*·*·*·*·*·*·*·*·*·*·*|\n;scanf%dchoice;getchar;switchchoice{case0:menu;break;case1:bf_dj;break;case2:bf_tj;break;default:printf输入无效请重新输入\n;bf;break;}}whilechoice!=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语言的实际应用,安徽科学技术出版社,
20008.致谢在C语言的实习过程中,让我巩固了C语言的基础知识,以前从来没有这样编过完整的程序,实习让我有这样的一个机会,自己独立编写程序我觉得自己说学的东西不多,但是可以将它们运用出来在这次实习中我开始喜欢C语言在这次实习中,李老师对我的帮助对我最难忘题目本身是很简单的,在李聪老师的教学风格影响下,我在编写完最初程序后,有自己添加了很多功能程序可以更数学方法如此紧密的结合这是非常有意思的事情李聪老师给过我很多发展的建议,因此,我要感谢他最后,我还要感谢给我帮助的同学,在一些程序问题上,我和同学交流经验,学到了很多在书本上学不到的东西我真诚的感谢在这次实习中给予指导的李聪老师!附录源文件(每个函数都要有功能说明)#includestdio.h#includestring.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//录入信息{while1{printf提示:输入0则返回主菜单!\n;printf\n请你输入设备ID号:;scanf%ssb[t].id;ifstrcmpsb[t].id0==0main;printf\n请输入设备名称:;scanf%ssb[t].name;printf\n请输入设备种类:;scanf%ssb[t].kind;printf\n请输入报废日期:;scanf%ssb[t].over;printf\n请输入设备是否报废,
1、没报废,
0、报废:;scanf%dsb[t].yesno;printf\n请输入设备购买时间:;scanf%ssb[t].time;printf\n请输入设备价格:;scanf%ssb[t].price;printf提示:已经完成一条记录的添加\n;t++;}}voidxg//修改{charfind
[20];intx;t=0;printf请输入要修改的设备ID号:;scanf%sfind;while1{ifstrcmpsb[t].idfind==0//如果找到的话返回的是符合要求{break;}elset++;}while1{printf确认修改请输入任意数字否则输入0重新输入设备原id:;scanf%dx;ifx==0break;else{printf请输入新设备号原来是%s:sb[t].id;scanf%ssb[t].id;printf请输入新设备名称原来是%s:sb[t].name;scanf%ssb[t].name;printf请输入新设备设备种类名称原来是%s:sb[t].kind;scanf%ssb[t].kind;printf请输入新设备报废日期名称原来是%s:sb[t].over;scanf%ssb[t].over;printf请输入新设备是否报废,
1、没报废,
0、报废原来是%d:sb[t].yesno;scanf%dsb[t].yesno;printf请输入新设备购买时间原来是%s:sb[t].time;scanf%ssb[t].time;printf请输入新设备价格原来是%s:sb[t].price;scanf%ssb[t].price;printf\n提示:该项记录资料已经成功修改!\n;printf退回主菜单请输入0\n;printf继续操作请输入1\n;scanf%dx;switchx{case0:choose;break;case1:xg;break;default:printf输入无效,自动返回主菜单\n;choose;break;}}}}voidcx//查询{intchoice;do{printf\t\t\t----------------------------------\n;printf\t\t\t*
[1]----按设备号查找*\n;printf\t\t\t*
[2]----按设备名称查找*\n;printf\t\t\t*
[0]----退出*\n;printf\t\t\t*·*·*·*·*·*·*·*·*·*·*·*|\n;scanf%dchoice;getchar;switchchoice{case0:menu;break;case1:cx_sbh;break;case2:cx_mc;break;default:printf输入无效请重新输入\n;cx;break;}}whilechoice!=0;}voidcx_sbh//设备号查询{intchoice;charfind
[20];intt=0;printf请输入您要查询的设备号:;scanf%sfind;getchar;do{ifstrcmpsb[t].idfind==0sb[t].yesno==1//1表示设备没报废{printf设备号设备名称设备种类报废日期是否报废购买时间价格\n;printf\n%-13s%-11s%-7s%-10s%-13d%-10s%-5s\nsb[t].idsb[t].namesb[t].kindsb[t].oversb[t].yesnosb[t].timesb[t].price;t++;}elset++;}whilet100;printf键入数字1返回主菜单\n;printf键入数字任意键返回上层菜单\n;scanf%dchoice;ifchoice==1choose;elsecx;}voidcx_mc//设备名称查询{intchoice;charming
[20];t=0;printf\n输入你要查询的设备名称:;scanf%sming;do{ifstrcmpsb[t].nameming==0sb[t].yesno==1//1表示设备没报废{printf设备号设备名称设备种类报废日期是否报废购买时间价格\n;printf\n%-13s%-11s%-7s%-10s%-13d%-10s%-5s\nsb[t].idsb[t].namesb[t].kindsb[t].oversb[t].yesnosb[t].timesb[t].price;t++;}elset++;}whilet100;printf键入数字1返回主菜单\n;printf键入数字任意键返回上层菜单\n;scanf%dchoice;ifchoice==1choose;elsecx;}voidtj//统计{intchoice;chartong
[20];printf\n输入你要统计的设备种类:;scanf%stong;do{ifstrcmpsb[t].kindtong==0sb[t].yesno==1//1表示设备没报废{printf设备号设备名称设备种类报废日期是否报废购买时间价格\n;printf\n%-13s%-11s%-7s%-10s%-13d%-10s%-5s\nsb[t].idsb[t].namesb[t].kindsb[t].oversb[t].yesnosb[t].timesb[t].price;t++;}elset++;}whilet100;printf键入数字1返回主菜单\n;printf键入数字任意键返回上层菜单\n;scanf%dchoice;ifchoice==1choose;}voidbf//报废信息{intchoice;do{printf\t\t\t----------------------------------\n;printf\t\t\t*
[1]----登记报废信息*\n;printf\t\t\t*
[2]----报废设备统计*\n;printf\t\t\t*
[0]----退出*\n;printf\t\t\t*·*·*·*·*·*·*·*·*·*·*·*|\n;scanf%dchoice;getchar;switchchoice{case0:menu;break;case1:bf_dj;break;case2:bf_tj;break;default:printf输入无效请重新输入\n;bf;break;}}whilechoice!=0;}voidbf_dj//报废登记{charfind
[20];intx;t=0;printf请输入要登记的设备ID号:;scanf%sfind;while1{ifstrcmpsb[t].idfind==0//如果找到的话返回的是符合要求{break;}elset++;}while1{printf完成登记请输入0否则输入任意数再进行修改:;scanf%dx;ifx==0break;{printf请输入新设备是否报废
1、没报废,
0、报废原来是%d:sb[t].yesno;scanf%dsb[t].yesno;printf\n提示:该项记录资料已经成功登记!\n;scanf%dx;switchx{case0:choose;break;case1:bf;break;default:printf输入无效,自动返回主菜单\n;choose;break;}}}}voidbf_tj//报废统计{intchoice;charfind
[20];t=0;printf\n输入你要统计的报废设备种类:;scanf%sfind;do{ifstrcmpsb[t].kindfind==0sb[t].yesno==0//0表示设备报废{printf设备号设备名称设备种类报废日期是否报废购买时间价格\n;printf\n%-13s%-11s%-7s%-10s%-13d%-10s%-5s\nsb[t].idsb[t].namesb[t].kindsb[t].oversb[t].yesnosb[t].timesb[t].price;t++;}elset++;}whilet3;printf键入数字1返回主菜单\n;printf键入数字任意键返回上层菜单\n;scanf%dchoice;ifchoice==1choose;}intmenuintchoice{printf\n\n\n;printf\t\t\t--------------------------------\n;printf\t\t\t+实验设备管理系统|\n;printf\t\t\t--------------------------------\n;printf\t\t\t+
[1]----录入设备信息|\n;printf\t\t\t+
[2]----修改设备信息|\n;printf\t\t\t+
[3]----查询设备信息|\n;printf\t\t\t+
[4]----统计设备信息|\n;printf\t\t\t+
[5]----报废设备信息|\n;printf\t\t\t+
[0]----*-EXIT-*|\n;printf\t\t\t+*·*·*·*·*·*·*·*·*·*·|\n;printf\t\t\t--------------------------------\n;printf请输入你要操作的序号:;scanf%dchoice;returnchoice;}voidchoose{intchoice;choice=1;choice=menuchoice;do{switchchoice{case0:printf\n提示:你已经退出系统\n\t\t再见!\n;break;case1:lr;break;case2:xg;break;case3:cx;break;case4:tj;break;case5:bf;break;default:printf提示:输入错误!\n;break;}}whilechoice!=0;}main{chars
[20];inti;ifmmcsz==0{printf请输入登录密码;//密码为1314mmcsz++;fori=0;i4;i++{s[i]=getch;printf*;}s
[4]=\0;ifstrcmps1314==0choose;elseprintf密码错误\n;}elsechoose;}实验报废设备信息模块实验设备信息输入模块实验设备信息修改模块实验设备信息查询模块实验设备分类统计模块退出实验设备管理系统退出系统开始N密码读取数据Y主菜单报废统计报废统计查询信息报废登记录入信息修改信息修改信息查询信息分类统计选择退出系统查询信息报废查询报废统计报废登记分类统计修改信息录入信息。