完整版仪器仪表管理系统设计——C语言_第1页
完整版仪器仪表管理系统设计——C语言_第2页
完整版仪器仪表管理系统设计——C语言_第3页
完整版仪器仪表管理系统设计——C语言_第4页
完整版仪器仪表管理系统设计——C语言_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、仪器仪表治理系统【要求】系统功能的根本要求:(1)新的仪器仪表信息的录入;(2)在借出、归还、维修时对仪器仪表信息的修改;(3)对报废仪器仪表信息的删除;(4)根据一定的条件查询符合条件的仪器仪表信息;查询功能至少 应该包括仪器仪表根本信息(如仪器仪表名字、仪器仪表编等) 的查询、按时间点(借入时间、借出时间、归还时间)查询等(5)对查询结果的输出.【提示】数据结构采用结构体.仪器仪表信息包括仪器仪表名、仪器仪表编号、购置时间、借入时间、借出时间、归还时间、维修时间、状态信息(0代表可借出,1代表已借出,2代表正在维修)等.2、 需求分析根据题目要求,需要把仪器仪表信息的的数据存储在文件里,所

2、以需要提供 文件的输入输出等操作;在程序中要提供修改,删除,查找等操作;另外还 应该提供键盘式选择菜单实现功能选择.3、 总体设计系统功能模块图4、 详细设计1,主函数主函数一般设计得比较简洁,只提供输入输出和功能处理的函数调用.其各功能模块用菜单方式选择.此题将main ()函数体内的界面选择部分语句单独抽取出来作为一独立函数,目的在于系统执行完每局部功能 模块后能够方便返回到系统界面.【程序】main()menu();菜单局部设计如下: 【流程图】/*对选择的数字作判断*/*输入模块*/ /*修改模块*/ /*查找模块*/ /*删除模块*/ /*退出*/主函数的菜单流程图【程序】menu(

3、)int n,w;/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字 范围内*/doputs(tt*MENU*nn);puts(tttt 1.enter);puts(tttt 2.modify);puts(tttt 3.search);puts(tttt 4.delete);puts(tttt 5.exit);puts(nntt *n);printf(Choice your number(1-5): bb);scanf(%d,&n);if(n5)w=1;getchar();)else w=0;)while(w=1);switch(n)case 1:enter();break;c

4、ase 2:modify();break;case 3:search();break;case 4:delete();break;case 5:exit(0);2.各功能模块设计(1)输入模块【数据结构】【分析】单独看各数据信息,仪器仪表名是字符型,可采用字符型数组; 仪器仪表编号、购置时间、借入时间、借出时间、归还时间、维修时 间应采用实型;状态信息是整数,采用整型.实际上操作时发现只有 字符型的数据可以在文件中成功被保存,所以此题所有数据一律采用字符型.struct machinechar name5;char number5;char buy_time5;char borrowin_ti

5、me5;char borrowout_time5;char return_time5;char repair_time5;char sta5;char time5;/*time为下面程序中按时间查找和修改时记录输入 的时间*/macN;/* macN中每个数组元素对应一个仪表仪器*/【注意】macN中的N是仪表仪器个数,程序中采用宏定义的方式,可以随 时在源程序宏定义中改,本程序宏定义 #define N 50.输入模块流程图*输入橙廿L *enter()/*输入模块*/ int i,n;printf(录入机器数量(0-%d)?:,N-1);scanf(%d,&n);/*要输入的记录个数*/p

6、rintf(n 录入日期 n);printf(n名称号购置时间借入时间借出时间归还时间维修时间状态 n);for(i=0;in;i+)input(i);/*调用输入函数*/if(i!=0)save(n);/* 调用保存函数 */printf_back(); /* 一个任务结束时让用户选择是浏览还是返回*/(2)修改模块需求分析该模块的功能是显示所有仪器仪表信息,考虑到记录较多,建议采用分屏 显示.显示完所有记录后,用户输入要修改的仪器仪表编号, 根据编号查找仪器 仪表记录,并提示用户修改该记录的哪局部信息, 是仪器仪表的借出时间、归还 时间、修理时间还是状态,根据用户选择修改相应信息.修改模块

7、流程图程序/* modify() struct machine m;FILE *fp;修改模块*/*修改模块*/int i,n,k,w0=1,w1,w2=0;n=load(); do k=-1;/*给用尸看全部记录以便确认要修改的记录*/printf_face();for(i=0;in;i+)if(i!=0)&(i%10=0)printf(nn 按键继续.);getch();puts(nn);printf_one(i);do printf(n情输入机器号:);scanf(%s,m.number);for(i=0;in;i+)/*调用显示数据结构工程函数*/*分屏显示*/*调用显示一个记录的函数

8、*/*输入要修改的仪器仪表的编号*/*查找要修改的仪器仪表的记录*/if(strcmp(m.number,maci.number)=0) k=i;/*找到要修改的记录*/m=maci;/*把maci备份给 m,以便用户懊悔时恢复*/if(k=-1)printf(nn 不存在!重试) while(k=-1);/*k=-1 时表示没有找到 */printf_face();/*调用显示数据结构工程函数*/printf_one(k);/*调用显示一个记录的函数*/w1=modify_data(k);/*血C仪器仪表记录并且返回保存限制值w1,w1=1那么表示用户以确认修改*/if(w1=1)/*w1=

9、1表示用户确定这次修改*/ printf(n成功.nn还要修改其它吗nnt1).是 2.保存退出tbb); scanf(%d,&w0);w2=1;/*限制保存,使 w2=1是标记已有过修改*/else w0=0;if(w2=1)mack=m;/*走到这里是由于用户没有确认这次修改(在调用修改函数 w1=modify_data(k)时没有确认),使 w0=0,为了终止循环;mack=m 那么把备份的m恢复给mack,这样的好处是保证在此之前修改正的成功保存,而本 次不修改*/if(w0!=1&w2=1) /*w0!=1那么表示正常返回,w2=1表示在此之前有过修 改,此时就保存用户已经确认修改的

10、并返回*/save(n); /*w2!=1表示在此次之前没有修改正,而又反悔这次修改,那么不 保存返回*/)while(w0=1);printf_back();).说明:调用w1=modify_data(k)修改函数时,假设返回值为 1那么表示用户在修改函 数里面确认了这次修改,其中i表示第i个记录(要修改的);假设返回值不为1 那么不保存这次修改,但保存这次之前的修改,这由 w2来限制,w2=1那么表示有 过用户修改确认史.(3)查找模块显示一系列功能选项根据n的值调用各子功能模块函数流程图查找模块流程图程序/*查找模块*/ int search() int m;puts(tt*nn);pu

11、ts(tttt 1 mon_search);puts(tttt 2.point_search);puts(tttt 3.exit);puts(nntt*n);printf(情选择号 r(1-3): bb);scanf(%d,&m);switch(m)case 1:common_search();break;case 2:point_search();break;case 3:exit(0);)(1.(1) 查找分析根本信息查找包括了仪器仪表的名称以及编号的查找,所以该子功能 模块的功能是先让用户选择是按仪器仪表名称还是按仪器仪表编号查找, 根据用 户选择的进行查找,找到以后增加删除和修改功能.

12、流程图根本查找模块流程图程序根本查找模块 */*根本查找模块/*int common_search()*/ int i,n,k,w1=1,w2,w3,w4;struct machine m;n=load();printf(通过名称还是号搜索1-名称,2-号:);scanf(%d,&i);if(i=1)dodo k=-1;printf(nn情输入名称! 名称:);scanf(%s,);/*输入要查找的仪器仪表的名称*/printf_face();/*调用显示数据结构工程函数*/for(i=0;in;i+)/*查找想要的记录*/if(strcmp(,)=0

13、) k=i;/*找到要查找的记录*/printf_one(k);/*调用显示一个记录的函数*/if(k=-1) printf(nn 不存在!);printf(nn 重试nt1).是2)返回bb);scanf(%d,&w1);while(w1=1)menu();/*保证第一次查找的根底上再查找找不到时能退出*/while(k=-1&w1=1);/*如果 w1!=1 那么直接返回*/w4=0;w3=0;if(k!=-1)/*k!=-1表示找到,如果找到那么选择操作*/printf(nn操作nt1).重新搜索 2.修改 3).删除 4).返回 bb);scanf(%d,&w2);switch(w2)

14、case 2:w3=modify_data(k);break;/* 调用修改数据函数*/case 3:printf(n 确定nt1).是2.返回 bb);scanf(%d,&w4); if(w3=1|w4=1)save(n);printf(nn 成功.);printf(nn 操作nt1).重新搜索2).返回 bb);scanf(%d,&w2);)while(w2=1);)if(i=2)dodo k=-1;printf(nn请输入号! 号:);scanf(%s,m.number);/*输入要查找的仪器仪表编号*/printf_face();/*调用显示数据结构工程函数*/for(i=0;in;i

15、+)/*查找想要的记录*/if(strcmp(m.number,maci.number)=0) k=i;/*找到要查找的记录*/printf_one(k);/*调用显示一个记录的函数*/)if(k=-1)printf(nn 不存在!);printf(nn 重试nt1).是2).返回bb);scanf(%d,&w1);while(w1=1)menu();/*保证第一次查找的根底上再查找找不到时能退出*/)while(k=-1&w1=1);/* 如果 w1!=1那么直接返回*/w4=0;w3=0;if(k!=-1)/*k!=-1表示找到,如果找到那么选择操作*/ printf(nn操作nt1).重

16、新搜索2.修改 3).删除 4).返回bb);scanf(%d,&w2);switch(w2) case 2:w3=modify_data(k);break;/*调用修改数据函数*/case 3:printf(n 确定nt1).是2.返回 bb);scanf(%d,&w4);if(w3=1|w4=1) save(n);printf(nn 成功.);printf(nn 操作nt1).重新搜索2).返回 bb);scanf(%d,&w2);while(w2=1);menu();/*调用菜单函数*/(1.(2) 间点查找流程图时间点查找模块流程图程序时 间 点 查 找 模 块I*/int point

17、_search()/*时间点查找模块*/int i,n,k,w1=1,w2,w3,w4;struct machine m;n=load();printf(选才? 1-借入时间2-借出时间or 3-归还时间)scanf(%d,&i);/*选择要查找的是哪个时间点 */if(i=1)dodo k=-1;printf(nn请输入时间!借入时间:);scanf(%s,m.time);/*输入要查找的仪器仪表的借入时间*/printf_face();/*调用显示数据结构工程函数*/for(i=0;in;i+)/*查找想要的记录*/if(strcmp(m.time,maci.borrowin_time)=

18、0) k=i;/*查找想要的记录*/printf_one(k);/*调用显示一个记录的函数*/)if(k=-1) printf(nn 不存在!);printf(nn 重试nt1).是2).返回bb);scanf(%d,&w1);while(w1=1) menu();/*保证第一次查找的根底上再查找找不到 时能退出*/)while(k=-1&w1=1);/*如果 w1!=1 那么直接返回*/w4=0;w3=0;if(k!=-1)/*k!=-1表示找到,如果找到那么选择操作*/printf(nn操作nt1).重新搜索2.修改3).删除4).返回bb);scanf(%d,&w2);switch(w2

19、)case 2:w3=modify_data(k);break;/*调用修改数据函数 */case 3:printf(n 超定nt1).是2.返回 bb);scanf(%d,&w4);if(w3=1|w4=1)save(n);printf(nnSuccessful.A_A.);printf(nn 操作nt1)疝新搜索2).返回 bb);scanf(%d,&w2);while(w2=1);if(i=2)dodo k=-1;printf(nn输入借出时间:);scanf(%s,m.time);/*输入要查找的仪器仪表的借出时间*/printf_face();/*调用显示数据结构工程函数*/for(

20、i=0;in;i+)/*查找想要的记录*/if(strcmp(m.time,maci.borrowout_time)=0) k=i;/*找到要查找的记录*/printf_one(k);/*调用显示一个记录的函数*/if(k=-1) printf(nn 不存在!);printf(nn 重试nt1).是 2).返回bb);scanf(%d,&w1);while(w1=1)menu();/*保证第一次查找的根底上再查找找不 到时能退出*/while(k=-1&w1=1);/*如果 w1!=1 那么直接返回 */w4=0;w3=0;if(k!=-1)/*k!=-1表示找到,如果找到那么选择操作*/ p

21、rintf(nn操作nt1).重新搜索2.修改 3).删除 4).返回bb);scanf(%d,&w2);switch(w2) case 2:w3=modify_data(k);break; /* 调用修改数据函数 */ case 3:printf(n It定nt1).是2.返回 bb);scanf(%d,&w4);if(w3=1|w4=1) save(n);printf(nn 成功.);printf(nn 操作nt1).重新搜索2).返回 bb);scanf(%d,&w2);while(w2=1); if(i=3) do do k=-1;printf(nn输入归还时间:);scanf(%s,

22、m.time);/*输入要查找的仪器仪表的归还时间*/printf_face();/*调用显示数据结构工程函数*/for(i=0;in;i+)/*查找想要的记录*/if(strcmp(m.time,maci.return_time)=0) k=i;/*找到要查找的记录*/printf_one(k);/*调用显示一个记录的函数*/if(k=-1) printf(nn 不存在!);printf(nn 确定nt1).是2).返回bb);scanf(%d,&w1);while(w1=1) menu();/*保证第一次查找的根底上再查找找不到 时能退出*/while(k=-1&w1=1);/*如果 w1

23、!=1 那么直接返回*/w4=0;w3=0;if(k!=-1)/*k!=-1表示找到,如果找到那么选择操作*/ printf(nn操作nt1).重新搜索2.修改3).删除4).返回bb);scanf(%d,&w2);switch(w2) case 2:w3=modify_data(k);break;/*调用修改数据函数 */case 3:printf(n It定nt1).是 2.返回 bb);scanf(%d,&w4);if(w3=1|w4=1) save(n);printf(nn 成功.);printf(nn 操作 o?nt1)搜索2).返回bb);scanf(%d,&w2);while(w

24、2=1);menu();/*调用菜单函数*/(4)删除模块需求分析该模块的功能与修改模块一样先显示所有仪器仪表信息,同样考虑到记录 较多,建议采用分屏显示.显示完所有记录后,用户输入要修改的仪器仪表编号, 根据编号查找仪器仪表记录,并提示用户是否确定要删除.返回主菜单删除模块流程图程序/* delete() struct machine m;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();dok=-1;printf_face();for(i=0;in;i+)if(i!=0)&(i%10=0)删除模块 */*删除模块*/*给用户看全部记录以便确认要删除的记录*/

25、*调用显示数据结构工程函数*/*分屏显示*/printf(nn 按键继续.);getch();puts(nn);printf_one(i);/*调用显示一个记录的函数*/.do printf(n请输入要删除的号:);scanf(%s,m.number);/*输入要删除的仪器仪表的编号*/for(i=0;in;i+)/*查找要删除的仪器仪表的记录*/if(strcmp(m.number,maci.number)=0) k=i;/*找到要修改的记录*/m=maci;/*把maci备份给m,以便用户懊悔时恢复*/if(k=-1)printf(nn 不存在!重试) while(k=-1);/*k=-1

26、 时表示没有找到 */printf_face();/*调用显示数据结构工程函数*/printf_one(k);/*调用显示一个记录的函数*/printf(n 确定nnt1).是 2).不保存返回bb);scanf(%d,&w1);/*返回保存限制值 w1,w1=1那么表示用户以确认要删除*/ if(w1=1)/*w1=1表示用户确定这次删除*/ mack.number=0;/* mack.number=0 表示已经删除 */printf(n成功.nn还要删除其它吗nnt1).是 2).保存退出tbb); scanf(%d,&w0);w2=1;/*限制保存,使w2=1是标记已有过修改*/else

27、 w0=0;if(w2=1) mack=m; /*走到这里是由于用户没有确认这次删除,使 w0=0,为了终止循环 mack=m那么把备份的m恢复给mack,这样的好处是保证在此之前删除过的成 功保存,而本次不删除*/if(w0!=1&w2=1) /*w0!=1那么表示正常返回,w2=1表示在此之前有过删 除,此时就保存用户已经确认删除的并返回*/save(n); /*w2!=1表示在此次之前没有删除过,而又反悔这次删除,那么不 保存返回*/while(w0=1);printf_back();3.公共函数下面是在每个功能模块中都有可能用到的一些公共函数.(1) 保存函数 save(int n)说

28、明形参n限制保存的个数.当maci.number=0表示删除,不保存该记 录.程序/*保存函数*/save(int n)/*保存函数,保存n个记录*/ FILE *fp;int i;if(fp=fopen(data.txt,wb)=NULL)/* 以输出翻开方式,在此前的记录被覆盖*/ printf(n 找不到文件 n);return NULL;for(i=0;in;i+)if(maci.number!=0)/*maci.number=0 表示止匕t己录已删除*/if(fwrite(&maci,sizeof(struct machine),1,fp)!=1) printf(文件写入错误!n);fclose(fp);(2) 输入整一个记录函数input(int

温馨提示

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

评论

0/150

提交评论