- 861.50 KB
- 2022-05-17 11:04:20 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
C语言课程设计实验报告学生姓名李云龙指导教师方红琴学生学号110201118日期:2012.6.2917
1.课程题目实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。主要功能:1.录入设备信息2.修改设备信息3.查询设备信息(1)按设备编号查询(2)按设备名称查询4.对设备按种类进行分类统计5.报废设备登记。6.报废设备统计。2.程序设计思路需求分析实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号设备种类设备购入日期正常设备(未报废的)等多种方式查询;另外还要根据键盘式选择菜单以实现功能选择。整个系统可设计为实验设备信息输入模块实验设备信息修改模块实验设备分类统计模块实验设备查询模块和实验设备报废信息模块。建立实验设备信息结构体,结构体成员包括设备编号设备种类设备名称设备价格设备购入日期是否报废报废日期。实验报废设备信息模块实验设备信息输入模块实验设备信息修改模块实验设备信息查询模块实验设备分类统计模块退出实验设备管理系统设计3.功能模块图17
4.数据结构设计由需求分析可知,系统分为6大部分,每部分通过主函数完成选择,分别提供添加、修改、查询、统计、报废、退出等功能,为了方便使用,采取了两个选择菜单,分别是在主函数和统计函数下的选择菜单。主函数提供输入、功能处理和输出部分的函数调用。使用结构体来存放数据。因此,对于实验设备信息的修改、调用均在结构体中进行。在数据的存储中,将文件存储在设备信息管理的文件中,使用循环语句实现对设备信息的添加和修改,每循环一次读入一个设备信息。使用修改语句时,执行的是追加操作。5.程序代码#include"stdio.h"#include"string.h"#definenull0intt=0;intmenu();//菜单voidlr();//录入信息voidxg();//修改voidcx();//查询voidcx_sbh();//设备号查询17
voidcx_mc();//设备名称查询voidtj();//统计voidbf();//报废信息voidbf_dj();//报废登记voidbf_tj();//报废统计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];t=0;printf("请输入要修改的设备ID号:");scanf("%s",find);while(1){if(strcmp(sb[t].id,find)==0)//如果找到的话返回的是符合要求{17
break;}elset++;}intx;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:main();break;case1:xg();break;default:printf("输入无效,自动返回主菜单n");main();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)17
{case0:menu();break;case1:cx_sbh();break;case2:cx_mc();break;default:printf("输入无效请重新输入n");cx();break;}}while(choice!=0);}cx_sbh()//设备号查询{intchoice;charfind[20];intt=0;printf("请输入您要查询的设备号n");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)main();elsecx();}cx_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("设备号设备名称设备种类报废日期是否报废购买时间17
价格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)main();elsecx();}tj()//统计{t=0;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)main();}bf()//报废信息{intchoice;do{printf("ttt----------------------------------n");printf("ttt*[1]----登记报废信息*n");printf("ttt*[2]----报废设备统计*n");17
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);}bf_dj()//报废登记{charfind[20];t=0;printf("请输入要登记的设备ID号:");scanf("%s",find);while(1){if(strcmp(sb[t].id,find)==0)//如果找到的话返回的是符合要求{break;}elset++;}intx;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:main();break;case1:bf();break;default:printf("输入无效,自动返回主菜单n");main();break;}}}}bf_tj()//报废统计{intchoice;17
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)main();}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;}main(){intchoice;choice=-1;choice=menu(choice);do{switch(choice){17
case0:printf("n>>>>>>>>>>提示:已经退出系统,ByeBye!n");break;case1:lr();break;case2:xg();break;case3:cx();break;case4:tj();break;case5:bf();break;default:printf("n>>>>>>>>>>提示:输入错误!n");break;}}while(choice!=0);}6.程序运行结果1、主函数运行,显示主菜单2、输入数字1,进入录入菜单17
3、返回主菜单,选择2,进入修改界面:4、选择3,进入设备查询菜单:17
4.1、选择1,进入按设备号查找信息4.2、选择2,进入按设备名称查找信息17
5、选择4,进入统计界面,按照设备种类进行统计。6、选择5,进入报废信息菜单17
6.1、选择1,进入报废信息登记。17
6.2、选择2,进入报废信息统计。7、选择0,退出系统.17
7.编程中遇到的困难及解决方法在编程的过程中,很容易出现一个问题,就时少大括号“}”的问题。按照计算机所指出的错误位置寻找是不容易找出错误的。直到整个程序看了一遍后才会发现是一个大括号的问题。通常少的是“{”或着“}”,错误位置会出现在缺少括号位置之后的其他大括号出现的地方。只要这种情况发生后,往前找是否有大括号缺失就可以将问题很快解决了。还有就是一些变量没有搞清楚是什么类型的,导致程序出错,有时少一个地址符号就出现一大堆错误,我在这上面吃了很多亏。在帮同学修改程序的过程中,也遇到过一个问题。在头文件后定义了子函数,可是之后忘了编写子函数,在纠错时,有的是不会发现错误的,但是连接过程中就会报告出错。我觉得在以后的编程过程中,最好用什么函数写什么函数,后者在写完一个子函数后再在头文件底下声明。8.总结心得及良好建议C语言实习基本上由老师引导,自己很多都靠自学,不明白的问老师,自学能力得到了很大的培养。在实习过程中,我感觉到一点,程序是不能一气呵成的。至少一气呵成的程序不会尽善尽美。程序编写要一步一步的完成。首先,对于要编的程序要有一个总体思路。要明确想要什么。只要把思路理清楚了,程序就好编写了。把程序分割成几个块,即多个函数,一块一块的编写。然后将分散的函数用另外的函数连接起来或者用main函数连接。到这一步,程序也就初步编成了,之后便是调试,检查错误。最后我觉得还可以对于已经编写好的程序进行一些修改添加,使它更加人性化。优化程序的阶段是很重要的。19.致谢在C语言的实习过程中,让我巩固了C语言的基础知识,以前从来没有这样编过完整的程序,实习让我有这样的一个机会,自己独立编写程序。我觉得自己说学的东西不多,但是可以将它们运用出来。在这次实习中,我开始喜欢C语言,。在这次实习中,方17
老师对我的帮助对我最难忘。题目本身是很简单的,在老师的教学风格影响下,我在编写完最初程序后,有自己添加了很多功能。程序可以更数学方法如此紧密的结合。这是非常有意思的事情。方老师给过我很多发展的建议,因此,我要感谢她。最后,我还要感谢给我帮助的同学,在一些程序问题上,我和同学交流经验,他帮我检查错误,学到了很多在书本上学不到的东西。总之,我真诚的感谢在这次实习中给过我帮助的人!17