C语言课程设计-实验室设备信息管理系统_第1页
C语言课程设计-实验室设备信息管理系统_第2页
C语言课程设计-实验室设备信息管理系统_第3页
C语言课程设计-实验室设备信息管理系统_第4页
C语言课程设计-实验室设备信息管理系统_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大学二O五二O六学年第一学期电子与信息工程系课程设计报告书课程名称:程序设计基础实践班 级:学 号:姓 名:指导教师:二O五年十二月实验室设备信息管理系统仁实验室设备信息管理系统功能(1).每一条记录包括实验室的设备编号、设备名称、设备型号、设备价格、设备购买日期信息。(2) .实验设备信息录入:可以一次完成诸多条记录的录入。(3) .实验设备信息更改:可实现对实验设备信息更改的信息进行适当的修改。(4) .报废设备信息删除:对实验损毁设备信息予以删除。(5) .实验设备信息查询:本系统提供两种查询实验设备的方法:1按器材名称查询2按器材编号查询.从而完成按实验设备的查找查找功能,并显示。(6

2、) .实验设备信息排序:根据实验设备的编号进行排序,以实现实验设备的有序全局查看。实验设备信息显示功能:完成全部学生记录的显示。(7) .简单帮助:提供实验室负责人简单的信息。(8) .保存功能:将学生记录保存在任何自定义的文件中,如保存在:c:score。(9) .读取功能:将保存在文件中的学生记录读取出来。(10) .有一个清晰美观界面来调用各个功能2设计内容2.1程序的总体设计整个系统除了主函数外,另外还有11个函数,实现以下功能:实验室设备录入功能、显示功 能、查找功能、排序功能、读出与写入取功能。各个函数的详细设计说明分别如下:2.2数据结构根据系统要求,系统中设计实验器材具体信息,

3、其结构如下:数据项名称数据项系统表示数据类型数据长度备注编号bia nhao字符串名称n ame字符串20型号model字符串20购入时间buy date字符串20价格price字符串20使用C语言创建的结构体如下: typedef Equipment /* 定义数据结构 */ char bia nhao; 编号char name20;/ 名称char model20;/型号 bnmchar price20;/ 价格char buy_date20;购买日期;3详细设计3.1实验设备管理系统主程序模块设计控制整个程序的运行,通过主函数模块分别调用各个模块,实现各项功能,流程如图1所示。通过swi

4、tch进入分支结构从而调用执行不同的函数,以实现菜单选择的功能。程序如下:void mai n()int choice;int choice2;IO_Readl nfo();system(cls);while(1)/*主菜单*/nn);printf(nnnnntt 苏州科技学院实验器材管理系统prin tf(ttt1.实验设备信息录入n ”);prin tf(ttt2.实验设备信息更改n ”);prin tf(ttt3.报废设备信息删除n ”);prin tf(ttt4.实验设备信息查询n ”);prin tf(ttt5.实验设备信息排序n ”);prin tf(ttt6.帮助 n);prin

5、 tf(ttt7.退出 n);prin tf(ntt-* * *-*n);printf(nnn请选择(1-7):);scan f(%d, &choice);getchar();system(cls);switch(choice)case 1:Equipme nt_ln sert();break;case 2:Equipme nt_Modify();break;case 3:Equipme nt_Delete();break;case 4:printf(nnnnnt 请选择(1/2)1.按器材名称查询 n);nnn);printf(”sca nf(%d,&choice2);switch(choi

6、ce2)case 1:Equipme nt_n ameSelect();break;case 2:Equipme nt_bia nhaoSelect();break;break;case 5:void Equipme nt_paixu();Equipme nt_Display();break;case 6:printf(nnnnnnttt-*-电子与通信工程学院实验室-*-nn);prin tf(tttt负责人:sdiwe n nn);prin tf(tttt办公室:A-201 nn ”);printf(tttt Tel:nn”);prin tf(ttttt|t

7、made by wangluoyangnn);prin tf(ttt* * * * * *-nn);break;case 7:exit(O); break; system(Pause); system(cls); IO_Writel nfo();图1主模块流程图其运行界面如下:门L;-*仁:七忑I百圧二打:-pG:c stdiiyDeb u gla b.exepI4=記乱匕 亘_=;#崔止wllr持wblll1 2 3 4 5 -b 73.2 些辅助函数丄 通过设备编号返回数组下标(int Equipme nt_SearchByl ndex(char id)通过(strcmp(equipmen

8、ti.bianhao,id)=0)进行比较,从而反馈回对应设备的数组下标。以方便查询函数,与显示函数的执行。程序如下:int Equipme nt_SearchBy In dex(char id)int i;for (i=0;i nu m;i+)if (strcmp(equipme nti.bia nhao,id)=0)return i;return -1;丄 通过设备名称返回数组下标(int Equipme nt_SearchByName(char name)通过(strcmp(, name)进行比较,从而反馈回对应设备的数组下标。以方便 查询函数,与显示函数的

9、执行。程序如下:int Equipme nt_SearchByName(char n ame)int i;for (i=0;i nu m;i+)if (strcmp(equipme nti. name ,n ame)=0)return i;return -1;丄 显示单条设备记录( void Equipment_DisplaySingle(int ind ex)为报废设备删除提供信息的显示。如下所示,即是调用单条显示函数。void Equipme nt_DisplayS in gle(i nt in dex)printf(nnn设备编号设备名称设备型号设备价格设备购买日期n);printf(”

10、n);prin tf(%5s%12s%10s%12s%15sn,equipme nti ndex.bia nhao,equipme nti ndex .n ame, equipme nt in dex.model,equipme nt in dex.price,equipme nt in dex.buy_date);丄 显示在库设备信息(voidEquipme nt_Display()通过for循环语句将结构体数组中所有的内容显示出来,为排序函数提供显示提出,排序函 数最后显示即需要调用显示函数。void Equipme nt_Display()int i;printf(设备编号设备名称设备型

11、号设备价格设备购买日期n);printf(n);for (i=0;i nu m;i+)prin tf(%5s%12s%10s%12s%15sn,equipme nti.bia nhao,equipme nti. name, equipme nti.model,equipme nti.price,equipme nti.buy_date);将设备信息从文件读出void IO_Readl nfo()将设备信息写入文件void IO_Writel nfo()这两条函数即是将所录入系统的信息保存在database.txt中,以便下次使用时信息的读取与保存。void IO_ReadI nfo()FILE

12、 *fp;int i;if (fp=fope n(Database.txt,rb)=NULL)printf(”不能打开文件!n);return;if (fread(&nu m,sizeof(i nt),1,fp)!=1)num=-1;elsefor(i=0;i nu m;i+)fread(&equipme nti,sizeof(struct Equipme nt),1,fp);fclose(fp);/*将设备信息写入文件*/void IO_WriteI nfo()FILE *fp;int i;if (fp=fope n( Database.txt,wb)=NULL)printf(不能打开文件!

13、n);return;if (fwrite(&nu m,sizeof(i nt),1,fp)!=1)printf(写入文件错误!n);for (i=0;i56233.4实验设备信息更改模块设计(Void Equipme nt_Modify()修改信息,系统要求用户输入要修改的设备编号,用户只需将设备新的信息按要求输入即可对信息进行修改,流程图如图3.其调用 index=Equipment_SearchBylndex(id);通过编号返回其下标,并对结构体对应的数组 进行重新赋值从而达到修改的效果。图3.实验设备信息更改模块流程图程序如下:void Equipme nt_Modify()while

14、(1)char id20;int in dex;printf(nnnnn请输入需要修改的实验设备编号宀);scan f(%s,&id);in dex=Equipme nt_SearchByl ndex(id);if (in dex=-1)printf(*该设备不存在!抱歉*n);elseprintf(你需要修改的设备信息为n);Equipme nt_DisplayS in gle(i ndex); prin tf(-*请输入修改新值*-n);printf(nnn*请输入设备编号 *:);sca nf(%s, &equipme nt in dex.bia nhao); printf(请输入设备名

15、称t); sca nf(%s, &equipme nt in dex. name); printf(请输入设备型号t); sca nf(%s, &equipme nt in dex.model);printf(”请输入设备价格t ”); sea nf(%s, &equipme nt in dex.price); printf(请输入 设备购买日期t );sea nf(%s, &equipme nt in dex.buy_date);printf(是否继续? t (y/n); getchar();if (getchar()= n)break;程序运行如下:3.5报废设备信息删除模块设计(void

16、 Equipment_Delete()删除报废设备信息,系统要求用户输入要删除的设备编号,输入后即可删除设备信息,设计思想:流程图如图3.开始图3.报废设备信息删除模块流程图程序如下:void Equipme nt_Delete()int i;while(1)char id20;int in dex;printf(nnnn请输入要删除的设备编号 宀); scan f(%s,&id);in dex=Equipme nt_SearchByl ndex(id);if (in dex=-1)printf(设备不存在!抱歉n);elseprintf(你要删除的设备信息为t n);Equipme nt_D

17、isplayS in gle(i ndex);printf(是否真的要删除该设备 ? t (y/n); if (getchar()=y)for (i=in dex;i nu m-1;i+)equipme nti=equipme nti+1; num-;getchar();printf(”是否继续? t (y/n门;getchar();if (getchar()= n)break;3.6实验设备信息查询模块设计按器材名称查询:Equipme nt_nameSelect();按器材编号查询:Equipme nt_bia nhaoSelect();输入后即可得到设备信息,设备信息的查找,系统要求用户

18、输入要查找的设备编号, 流程图如图4.图4.实验设备查找模块流程图3.7实验设备信息排序模块设计(void Equipme nt_paixu()设备信息显示,可显示所有设备信息,流程图如图5.图7.设备信息排序模块流程图程序如下:void Equipme nt_paixu() int i,j;struct Equipme nt paixu; for (i=0;i nu m;i+)for (j=1;j 0) paixu=equipme ntj-1;equipme ntj-1=equipme ntj;equipme ntj=paixu;4.调试分析与总结经过一周的调查、学习、研究和设计,实验室器材

19、管理系统的设计接近了尾声。程序设计之初在for循环的初值没有安排好,导致输出结果与预期相差甚远。还有一 些中英文状态等问题,漏输分号。最主要的就是程序的逻辑结构没有把握好导致程 序并不是所想的那样执行下去。在这里我将本次设计做如下总结:? 本系统的功能已经达到设计的要求。系统中各个模块的功能均已实现,为整体系统的构建奠定了基础。? 系统模块的功能可以被进一步扩展。? 系统中模块划分明确,模块功能设计有较强的针对性。? 系统的设计遵循软件开发的全过程,使我对软件系统的开发过程有了更深刻的认识。当然系统的设计没有完美无缺的,本次系统在某些地方可能存在不足,囿于时间的原因在许多方面还需做出进一步的改

20、进和完善。还有一些想法没能很好的体现在本次设计上。在课后还将进一步的思考整合所学知识做出创新。在最后感谢严迪新老师精彩的授课,使我对 C语言以及C+有了更深层次的认知,有了入门编程的思 维。附录:源代码#i nclude stdio.h#i ncludestri ng/*定义实验器材结构体*/struct Equipme ntchar bia nhao20;设备编号char n ame20;设备名称char model20;设备型号char price20;/ 设备价格char buy_date20; /设备购买日期 ;/*声明实验器材数组及实验器材数量*/struct Equipme nt

21、equipme nt1000;int num=0;/*通过设备编号返回数组下标*/int Equipme nt_SearchBy In dex(char id)int i;for (i=0;i nu m;i+)if (strcmp(equipme nti.bia nhao,id)=0)return i;return -1;/*通过设备名称返回数组下标*/int Equipme nt_SearchByName(char n ame)int i;for (i=0;i nu m;i+)if (strcmp(equipme nti. name, name)=0)return i;return -1;/

22、*显示单条设备记录*/ void Equipme nt_DisplayS in gle(i nt in dex)printf(nnn设备编号设备名称设备型号设备价格设备购买日期n);printf(n);prin tf(%5s%12s%10s%12s%15sn,equipme nti ndex.bia nhao,equipme nti n dex. name,equipme nt in dex.model,equipme nt in dex.price,equipme nt in dex.buy_date)J/*插入设备信息*/void Equipme nt_ln sert()while(1)p

23、rintf(nnn请输入实验设备编号);sca nf(%s,&equipme ntnu m.bia nhao);printf(请输入实验设备名称);sca nf(%s,&equipme ntnu m. name);getchar();sea nf(%s,&equipme ntnu m.model);getchar();printf(请输入实验设备采购价格-);sca nf(%s,&equipme ntnu m.price);getchar();printf(请输入实验设备购买日期-);sca nf(%s,&equipme ntnu m.buy_date);getchar();nu m+;pri

24、ntf(n是否继续信息录入? - (y/n); getchar();if (getchar()= n)break;/*修改设备信息*/void Equipme nt_Modify()while(1)char id20;int in dex;printf(nnnnn请输入需要修改的实验设备编号);scan f(%s,&id);in dex=Equipme nt_SearchByl ndex(id);if (in dex=-1)printf(*该设备不存在!抱歉*n);elseprintf(你需要修改的设备信息为n);Equipme nt_DisplayS in gle(i ndex);prin

25、tf(-*请输入修改新值*-n);sca nf(%s,&equipme nt in dex.bia nhao);getchar();printf(请输入 设备名称 -);sca nf(%s,&equipme nt in dex. name);getchar();printf(请输入设备型号-);sca nf(%s,&equipme nt in dex.model);/ getchar();printf(请输入设备价格-);sca nf(%s,&equipme nti ndex.price);getchar();printf(请输入 设备购买日期 -);sca nf(%s,&equipme nt

26、i ndex.buy_date);printf(是否继续? (y/n);getchar();if (getchar()= n)break;/*删除设备信息*/void Equipme nt_Delete()int i;while(1)char id20;int in dex;printf(nnnn请输入 要删除的设备编号 -);scan f(%s,&id);in dex=Equipme nt_SearchByl ndex(id);if (in dex=-1)printf(设备不存在!抱歉n);elseprintf(你要删除的设备信息为 -n);Equipme nt_DisplayS in gl

27、e(i ndex);getchar();if (getchar()=y)for (i=in dex;i nu m-1;i+)equipme nti=equipme nti+1;/把后边的对象都向前移动num-;getchar();printf(是否继续? (y/n);getchar();if (getchar()= n)break;/*按设备名称查询*/ void Equipme nt_n ameSelect()while(1)char n ame20;int in dex;printf(请输入 要查询的设备名称 -);scan f(%s,&n ame);getchar();in dex=Eq

28、uipme nt_SearchByName( name);if (in dex=-1)printf(设备不存在!抱歉n);elseprintf(你要查询的设备信息为-n);Equipme nt_DisplayS in gle(i ndex);printf(是否继续? (y/n);getchar();if (getchar()= n)break;/*按设备编号查询*/void Equipme nt_bia nhaoSelect()while(1)char bia nhao20;int in dex;printf(nnn请输入要查询的设备编号-);scan f(%s,&bia nhao);in d

29、ex=Equipme nt_SearchBy In dex(bia nhao);if (in dex=-1)printf(设备不存在!抱歉n);elseprintf(你要查询的设备信息为-n);Equipme nt_DisplayS in gle(i ndex);printf(是否继续? (y/n);getchar();if (getchar()= n)break;/*按设备编号排序*/void Equipme nt_paixu()int i,j;struct Equipme nt paixu;for (i=0;i nu m;i+)for (j=1;j nu m-i;j+)paixu=equi

30、pme ntj-1; equipme ntj-1=equipme ntj; equipme ntj=paixu;/*显示在库设备信息*/void Equipme nt_Display()int i;printf(设备编号设备名称设备型号设备价格设备购买日期n);printf(n);for (i=0;i nu m;i+)prin tf(%5s%12s%10s%12s%15sn,equipme nti.bia nhao,equipme nti. name,/*将设备信息从文件读出*/void IO_Readl nfo()FILE *fp;int i;if (fp=fope n(Database.t

31、xt,rb)=NULL)printf(不能打开文件!n);return;if (fread(&n um,sizeof(i nt),1,fp)!=1)num=-1;elsefor(i=0;i nu m;i+)fclose(fp);/*将设备信息写入文件*/void IO_Writel nfo()FILE *fp;int i;if (fp=fope n( Database.txt,wb)=NULL)printf(不能打开文件!n);return;if (fwrite(&nu m,sizeof(i nt),1,fp)!=1)printf(写入文件错误!n);for (i=0;i nu m;i+)if (fwrite(& equipme nti,s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论