1、微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。2.需求分析 实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号 设备种类 设备购入日期 正常设备(未报废的)等多种方式查询;另外还要根据键盘式选择菜单以实现功能选择。整个系统可设计为实验设备信息输入模块 实验设备信息修改模块 实验设备分类统计模块 实验设备查询模块和实验设备报废信息模块。建立实验设备信息结构体,结构体成员包括设备编号,设备种类,设备名称,设备
2、价格,设备购入日期,是否报废,报废日期。3.功能模块图主要功能:录入设备信息、修改设备信息、查询设备信息、按设备编号查询、按设备名称查询、对设备按种类进行分类统计、报废设备登记、报废设备统计。 图1 实验室设备管理系统设计4.主函数模块流程 图2 实验室设备管理系统主函数模块流程图5.详细设计5.1声明函数int menu();/菜单 void lr();/录入信息 void xg();/修改 void cx();/查询 void cx_sbh();/设备号查询 void cx_mc();/设备名称查询 void tj();/统计 void bf();/报废信息 void bf_dj();/报
3、废登记 void bf_tj();/报废统计void choose();以上为本程序的函数声明5.2菜单函数菜单函数用void choose()声明,其中应用了do.while(choice!=0); 循环,在循环过程使用了 switch (choice)选择。当输入0时,系统跳入到“提示:你已经退出系统再见!”的输出。break终止接下来的步骤。当输入1时,系统跳入到录入的子函数中,break终止接下来的步骤。当输入2时,系统跳入到修改的子函数中,break终止接下来的步骤。当输入3时,系统跳入到统计的子函数中,break终止接下来的步骤。当输入4时,系统跳入到报废的子函数中,break终止
4、接下来的步骤。当输入5时,系统输出“提示:输入错误!n”,break终止接下来的步骤。其中的数据输入为int类型。void choose() int choice; choice=1; choice=menu(choice); do switch (choice) case 0: printf(n提示:你已经退出系统ntt 再见!n); break; case 1: lr(); case 2: xg(); case 3: cx(); case 4: tj(); case 5: bf(); default:提示: while(choice!int menu(int choice)nnnttt-n
5、ttt+ 实验设备管理系统 |nttt+ 1-录入设备信息 |nttt+ 2-修改设备信息 |nttt+ 3-查询设备信息 |nttt+ 4-统计设备信息 |nttt+ 5-报废设备信息 |nttt+ 0-*-EXIT-* |nttt+*|n printf(请输入你要操作的序号: scanf(%d, &choice); return choice;错误!未找到目录项。5.3录入函数录入函数用void lr()声明,用到while(1) 循环,其中数字1是“true”的含义。如果IF判断成立,则将进行录入。分别录入设备ID号、设备名称、设备种类、报废日期、设备是否报废,1.没报废,0.报废、购买
6、时间和设备价格等内容。当其中的一条记录录入完成后,系统会提示是否已经完成一条记录的添加。(注:其中的“t+;”不能丢,其在循环中起累加的作用)其中的数据输入为char类型。录入函数还应用了结构体数组的知识 如下:typedef struct shebei char id10; char name15; char kind15; char over15; int yesno; char time10; char price10;shebei;shebei sb200;其中的shebei sb200要求最多录入200条信息。分别录入设备ID号、设备名称、设备种类、报废日期、设备是否报废,1.没报废
7、,0.报废、购买时间和设备价格等结构体数组。其中的数据输入为char类型(除int yesno外)。void lr()/录入信息 while(1) if(strcmp(sbt.id,0)=0) main();n请输入设备名称:%s,sbt.name); ; 5.4修改函数 修改函数用void xg()声明,函数用了if.else的选择和switch的选择,其中if .else的选择包含在while循环中,并用了break的跳转语句。if.else语句更好的避免了输入进入死循环。如:if(x=0) break; else 继续操作请输入1n,&x);修改函数中还使用了strcmp判断函数,当st
8、rcmp判断函数判断成立时,给予使用者符合要求的提示,使用者然后进行操作。strcmp(sbt.id,find)=0 。在Switch的使用中,其实现了返回主菜单的操作。switch(x) case 0:choose();break; case 1:xg(); default:printf(输入无效,自动返回主菜单n其中包含的数据类型有int类型和 char类型两种 。int x , char find20.void xg()/修改 char find20; int x; t=0;请输入要修改的设备ID号:,find); while(1) if(strcmp(sbt.id,find)=0) /
9、如果找到的话返回的是符合要求 break; else t+;确认修改请输入任意数字否则输入0重新输入设备原id: if(x=0) break;请输入新设备号(原来是 %s ):,sbt.id);该项记录资料已经成功修改!退回主菜单请输入0n5.5查询函数查询函数用void cx()声明,使用do.while(choice! 循环,其中含有switch(choice)的选择语句。当选择0时,跳回menu函数;当选择1时,跳到设备号查询函数;void cx_sbh() do if(strcmp(sbt.id,find)=0&sbt.yesno=1) /1表示设备没报废 t+; else while
10、 (t100); if (choice=1) choose(); else cx();设备号查询函数用void cx_sbh()声明,使用do.while(choice! 循环,其中含有if .esle的选择语句。其中包含的数据类型有int类型.如:int choice等。当选择2时,跳到设备名称查询函数;void cx_mc()/设备名称查询 do if(strcmp(sbt.name,ming)=0& t+; while (t设备名称查询函数用void cx_mc()声明,使用do.while(choice! 循环,其中含有if esle的选择语句。否则输出输入无效请重新输入。查询函数包含
11、的数据类型有int类型.如:void cx()/查询 switch(choice)menu();cx_sbh(); case 2:cx_mc();输入无效请重新输入ncx(); while(choice!5.5统计函数统计函数用void tj()声明,在if的使用中,其实现了返回菜单的操作。键入数字1返回主菜单n键入数字任意键返回上层菜单n scanf( choose() ;函数中还使用了strcmp判断函数,当strcmp判断函数判断成立时,给予使用者符合要求的提示,使用者然后进行操作。(strcmp(sbt.kind,tong)=0&sbt.yesno=1。而dowhile 循环的使用保证
12、了多次统计的使用。”不能丢,其在循环中起累加的作用)。统计函数包含的数据类型有int类型和char类型.如:int choice和char tong 等。void tj()/统计 char tong20;n输入你要统计的设备种类:,tong); if(strcmp(sbt.kind,tong)=0&sbt.yesno=1) /1表示设备没报废 设备号 设备名称 设备种类 报废日期 是否报废 购买时间 价格nn%-13s%-11s%-7s%-10s%-13d%-10s%-5sn,sbt.id,sbt.name,sbt.kind,sbt.over,sbt.yesno,sbt.time,sbt.pr
13、ice);5.6报废函数查询函数用void bf()声明,使用do.while(choice!当选择1时,跳到报废登记函数;void bf_dj()/报废登记 switch(x) bf(); 设备号查询函数用void bf_dj()声明,使用do。while(choice!其中包含的数据类型有int类型和char类型.如:int choice和char choice类型等。当选择2时,跳到报废统计函数;void bf_tj()/报废统计 t+;3);int choice和char find等。void bf() /报废信息 int choice;ttt-nttt* 1-登记报废信息 *nttt
14、* 2-报废设备统计 *nttt* 0-退出 *nttt*|n getchar(); switch(choice)bf_dj();bf_tj();6.运行结果6.1菜单界面此图为截取的菜单操作界面,先输入密码才会进入界面当输入1时,系统跳入到录入的子函数中。当输入2时,系统跳入到修改的子函数中。当输入3时,系统跳入到查询的子函数中。当输入4时,系统跳入到统计的子函数中。当输入5时,系统跳入到报废的子函数中。请分别输入数字1,2,3等,然后回车。 图3 菜单操作界面6.2录入设备信息此为录入设备信息界面,在菜单界面中选择1进入输入0则将返回主菜单。 图4 录入设备信息界面6.3修改设备信息此为修
15、改设备信息界面,在菜单界面中选择2进入分别修改设备ID号、设备名称、设备种类、报废日期、设备是否报废,1.没报废,0.报废、购买时间和设备价格等结构体数组。 图5 修改设备信息6.4查询设备信息此为查询设备信息界面,在菜单界面中选择3进入,进入后选择不同的查询方式选择1,则将按设备号查找;选择2,则将按设备名称查找;选择0,则将退出。 图6 查询设备信息6.5统计设备信息此为统计设备信息界面,在菜单界面中选择4进入,进入后选择不同的统计方式选择1,则将按设备号统计;选择2,则将按设备名称统计; 图7 统计设备信息6.6报废设备信息此为报废设备信息界面,在菜单界面中选择5进入,进入后选择不同的查
16、询方式 图8 报废设备信息7总结 在编程的过程中,很容易出现一个问题,就时少大括号“”的问题。这是,error只有一个,但是错误的地方很多,且都在括号处。按照计算机所指出的错误位置寻找是不容易找出错误的。直到整个程序看了一遍后才会发现是一个大括号的问题。通常少的是“”或着“”,错误位置会出现在缺少括号位置之后的其他大括号出现的地方。只要这种情况发生后,往前找是否有大括号缺失就可以将问题很快解决了。在帮同学修改程序的过程中,也遇到过一个问题。在头文件后定义了子函数,可是之后忘了编写子函数,在纠错时,有的是不会发现错误的,但是连接过程中就会报告出错。我觉得在以后的编程过程中,最好用什么函数写什么函
17、数,后者在写完一个子函数后再在头文件底下声明。C语言实习基本上由老师引导,自己很多都靠自学,不明白的问老师,自学能力得到了很大的培养。在实习过程中,我感觉到一点,程序是不能一气呵成的。至少一气呵成的程序不会尽善尽美。程序编写要一步一步的完成。首先,对于要编的程序要有一个总体思路。要明确想要什么。只要把思路理清楚了,程序就好编写了。把程序分割成几个块,即多个函数,一块一块的编写。然后将分散的函数用另外的函数连接起来或者用main函数连接。到这一步,程序也就初步编成了,之后便是调试,检查错误。最后我觉得还可以对于已经编写好的程序进行一些修改添加,使它更加人性化。优化程序的阶段是很重要的。参考文献1
18、. C/C+程序设计,王连相等,中国科学技术出版社,20042. C语言程序设计,谭浩强,清华大学出版社,19993. C程序设计题解与上机指导,谭浩强,清华大学出版社,19994. C语言实用程序荟萃,西安电子科技大学出版社,19935. C语言函数手册,机械工业出版社,19996. C语言的实际应用,安徽科学技术出版社,20008.致谢 在C语言的实习过程中,让我巩固了C语言的基础知识,以前从来没有这样编过完整的程序,实习让我有这样的一个机会,自己独立编写程序。我觉得自己说学的东西不多,但是可以将它们运用出来。在这次实习中,我开始喜欢C语言。在这次实习中,李老师对我的帮助对我最难忘。题目本身是很简单的,在李聪老师的教学风格影响下,我在编写完最初程序后,有自己添加了很多功能。程序可以更数学方法如此紧密的结合。这是非常有意思的事情。李聪老师给过我很多发展的建议,因此,我要感谢他。最后,我还要感谢给我帮助的同学,在一些程序问题上,我和同学交流经验,学到了很多在书本上学不到的东西。我真诚的感谢在这次实习中给予指导的李聪老师!附录源文件(每个函数都要有功能说明)#includestdio.hstring.h#define null 0in
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1