C语言实习报告仪器仪表管理系统.docx
- 文档编号:23048955
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:34
- 大小:605.14KB
C语言实习报告仪器仪表管理系统.docx
《C语言实习报告仪器仪表管理系统.docx》由会员分享,可在线阅读,更多相关《C语言实习报告仪器仪表管理系统.docx(34页珍藏版)》请在冰豆网上搜索。
C语言实习报告仪器仪表管理系统
C语言课程实习报告
仪器仪表管理系统
*******
班级:
045111
学号:
***********
学院:
环境学院
仪器仪表信息管理系统
1.题目与题目分析
2.主函数
3.菜单函数
4.功能模块
(1)输入模块
(2)添加模块
(3)修改模块
(4)删除模块
(5)浏览模块
(6)查找模块
5.公共函数
6.操作结果
7.总结与心得
1.仪器仪表信息管理系统
题目与题目分析
题目:
仪器仪表管理
[要求]
系统功能的基本要求:
⑴新的仪器仪表信息的录入;
⑵在借出、归还、维修时对仪器仪表信息的修;
⑶对报废仪器仪表信息的删除;
⑷按照一定的条件查询、统计符合条件的仪器仪表信息;查询功能至少应该包括仪器仪表基本信息的查询、按时间段(如在2004年1月1日到2004年10月10日购买、借出的仪器仪表等)查询、按时间点(借入时间,借出时间,归还时间)查询等,统计功能至少包括按时间段(如在2004年1月1日到2004年10月10日购买、借出的仪器仪表等)统计、按仪器仪表基本住处的统计等;
⑸对查询、统计的结果打印输出。
需求分析
根据题目要求,由于仪器仪表信息是存放在文件中,所以应提供文件的输入、输出等操作;在程序中需要浏览仪器仪表的信息,应提供显示、查找、删除、添加、修改等操作;另外还提供键盘式选择菜单实现功能选择。
总体设计
根据上面的需求分析,可以将这个系统的设计分为以下几个模块:
输入模块、添加模块、修改模块、删除模块、查找模块、浏览模块
详细设计
2.主函数
主函数设计比较简单,只有一个函数调用,被调用的函数提供输入,处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
此函数为菜单函数,执行完每部分模块后能够方便返回到系统界面。
intmain()
{menu();}
3.菜单函数
菜单函数的主要结构用流程图表示如下:
程序:
voidmenu()
{intn,w;
do
{puts("\t\t*****************仪表仪器信息管理系统**********************\n\n");
puts("\t\t\t\t经济管理学院喻骏斯学号:
20081003064");
puts("\t\t\t\t1.仪器信息录入");
puts("\t\t\t\t2.添加新的仪器");
puts("\t\t\t\t3.修改仪器信息");
puts("\t\t\t\t4.删除仪器信息");
puts("\t\t\t\t5.查询仪器信息");
puts("\t\t\t\t6.浏览");
puts("\t\t\t\t7.退出");
puts("\n\n\t\t********************我是分界线********************\n");
printf("选择您需要的服务(1-7):
[]\b\b");
scanf("%d",&n);
if(n<1||n>7)
{w=1;
getchar();
}
elsew=0;
}while(w==1);
switch(n)
{case1:
enter();break;
case2:
add();break;
case3:
modify();break;
case4:
del();break;
case5:
search();break;
case6:
browse();break;
case7:
exit(0);
}
}
4.功能模块
(1)输入模块
仪器仪表信息采用结构体变量类型存放,成员包括仪器名称、编号、购买时间、供稿时间、伸出时间、归还时间、维修时间、状态信息(0代表可借出,1代表已借出,2代表正在维修,-1代表删除).
程序:
voidenter()
{inti,n;
printf("您要输入的仪器数量(1-%d)?
",N);
scanf("%d",&n);
printf("\n请输入相关信息\n\n");
for(i=0;i {printf("\n输入第%d台仪器的信息.\n",i+1); input(i); } if(i! =0)save(n); menu(); } 流程图如下 (2)添加模块 该模块的功能是用户需要增加新的仪器记录,请从键盘输入并逐条写到原来的输入文件中,采用追加方式打开文件。 由此设计得流程图如下: 程序: voidadd() {inti,n,b,k; FILE*fp; n=load(); printf("您想要添加的仪器的数量(0-%d)? : ",N-1-n); scanf("%d",&b); k=b+n; for(i=n;i { printf("\n请输入第%d台仪器的信息.\n",i-n+1); input(i); } if((fp=fopen("machine.txt","ab"))==NULL) { printf("不能打开文件\n");exit(0); } for(i=n;i if(fwrite(&m[i],sizeof(structmachine),1,fp)! =1) printf("文件书写错误\n"); fclose(fp); printf_back(); } (3)修改模块 该模块的功能是显示所有仪器信息,考虑到记录较多,采用分屏显示记录,用户输入要修改仪器的编号,根据编号找到仪器记录,并提示用户该仪器是借出,归还,还是要维修,根据用户选择进行修改相应信息,并将修改后的信息存入相应的文件里面,以保存所有修改的记录。 流程图: 程序: voidmodify() { structmachines; inti,n,k,w0=1,w1,w2=0; n=load(); do { k=-1;/*给用户看全部记录以便确认要修改的记录*/ printf_face(); for(i=0;i { if((i! =0)&&(i%10==0)) {printf("\n\nRememberNO.whichneededmodify.\n按任意键继续......."); getchar();getchar(); puts("\n\n");} printf_one(i);} do { printf("\n\n请输入您想修改的仪器编号! NO.: "); scanf("%s",s.num); for(i=0;i if(strcmp(s.num,m[i].num)==0) {k=i; s=m[i]; } if(k==-1) printf("\n\n该仪器已借出! 请再次查询"); }while(k==-1); printf_face(); printf_one(k); w1=modify_data(k); if(w1==1) { printf("\n信息修改成功~_~.\n\n请问您想修改其它仪器信息吗? \n\n\t1).是2).储存并返回\t[]\b\b"); scanf("%d",&w0); w2=1; } else {w0=0; if(w2==1) m[k]=s; } if(w0! =1&&w2==1) save(n); }while(w0==1); menu(); } (4)删除模块 该模块与修改模块一样先显示所有仪器信息,同样采用分屏显示,显示完所有记录后,用户输入要删除仪器的编号,根据编号找到该项仪器,并删除。 删除时将该项仪器的状态为-1,保存时状态为-1的跳过。 流程图 程序: voiddel() { structmachines; inti,n,k,w0=1,w1,w2=0; n=load(); do { k=-1;/*给用户看全部记录以便确认要删除的记录*/ printf_face(); for(i=0;i { if((i! =0)&&(i%10==0)) { printf("\n\nRememberNO.whichneededdeleted.\n按任意键继续......."); getchar();getchar(); puts("\n\n"); } printf_one(i); } do { printf("\n\n输入您要删除的仪器编号! 第: "); scanf("%s",s.num); for(i=0;i if(strcmp(s.num,m[i].num)==0) {k=i; s=m[i]; } if(k==-1) printf("\n\n仪器不存在! 请再次输入"); }while(k==-1); printf_face(); printf_one(k); printf("您确定吗? \n\n\t\t1).确定\n\t\t2).返回而不储存\n"); printf("请选择? []\b\b"); scanf("%d",&w1); if(w1==1) {m[k].condition=-1; printf("\n删除成功~_~.\n\n您还想删除其它仪器吗? \n\n\t1).是的2).储存并返回\t[]\b\b"); scanf("%d",&w0); w2=1; } else {w0=0; if(w2==1) m[k]=s; } if(w0! =1||w2==1) save(n); }while(w0==1); menu(); } (5)浏览模块 该模块的功能是显示所有仪器仪表信息。 采用分屏显示 流程图 程序: voidbrowse() { inti,n; n=load(); printf_face(); for(i=0;i { if((i! =0)&&i%10==0) { printf("\n\n按任意键继续........"); getchar();getchar(); puts("\n\n"); } printf_one(i);/*调用显示一个记录的函数*/ } printf("\t有%d台仪器的记录.\n",n); printf("\n按任意键继续.............\n"); getchar();/*按任意键*/ menu(); } (6)查找模块 查找与统计合在一起,分为其它信息查找,按时间段和时间点方式查找,该模块提供选择菜单,根据用户的选择以实现不同方式的查找与统计。 流程图 程序: voidsearch() {intn,w; do { puts("\t\t=====================菜单====================\n\n"); puts("\t\t\t\t查询与统计"); puts("\t\t\t\t1.按名称"); puts("\t\t\t\t2.按编号"); puts("\t\t\t\t3.按仪器状态信息"); puts("\t\t\t\t4.按时间段"); puts("\t\t\t\t5.按时间点"); puts("\t\t\t\t6.返回"); puts("\n\n\t\t==========================================\n"); printf("请选择查询方式(1-6): []\b\b"); scanf("%d",&n); if(n<1||n>6) {w=1;printf("inputerror! \n"); getchar(); } elsew=0; }while(w==1); switch(n) {case1: case2: case3: sbmnc(n);break; case4: sbptime();break; case5: sbdtime();break; case6: menu(); }a.按基本信息查找[需求分析] 调用加载函数,根据用户的选择,1为按名称查找,2为按编号查找,为3按状态查找,找到一条记录计数器加一,查找完后输出统计结果,讯问是否继续查找,是,则重新查找,否则返回上一级函数。 程序: voidsbmnc(intc) { inti,n,j,k,w1=1,w2; structmachinet; n=load(); do{ do { k=-1; if(c==1){ printf("\n\n输入仪器名称! 名称: "); scanf("%s",t.name); printf_face(); for(i=0,j=0;i if(strcmp(t.name,m[i].name)==0) {k=i; printf_one(k);j++; } printf("\n有%d%s.台仪器符合这一名称");} if(c==2) {printf("\n\n输入仪器编号! 编号: "); scanf("%s",t.num); printf_face(); for(i=0,j=0;i if(strcmp(t.num,m[i].num)==0) {k=i; printf_one(k);j++; } printf("\n有%d%s.台仪器符合这一编号"); } if(c==3){ printf("\n\n输入您想要查询的仪器的状态信息! 状态信息: "); scanf("%d",&t.condition); printf_face(); for(i=0,j=0;i if(t.condition==m[i].condition) {k=i;printf_one(k);j++;} printf("\n有%d台仪器处于这种状态");} if(k==-1) {printf("\n\n找不到符合要求的结果! "); printf("\n\n您想再次尝试吗? \n\t1).再试一次2).返回[]\b\b"); scanf("%d",&w1); if(w1! =1)break; } }while(k==-1&&w1==1); printf("您还想做什么? \n\t1)再次搜索2).返回[]\b\b"); scanf("%d",&w2); }while(w2==1); search(); } b.按时间段查找 [需要分析] 同样提供一个菜单,供用户选择,1为查询购买情况,2为查询借入情况,3为查询借出情况,4为归还情况。 5为维修情况,查询结果后,询问是否返回。 程序 voidsbparttime(intc) {inti,j,n; longt,s; FILE*fp; printf("\n\n输入您想查询的时间段! "); printf("\n从: "); scanf("%ld",&t); printf("到: "); scanf("%ld",&s); printf_face(); if(c==1){n=load(); for(i=0,j=0;i if(t<=m[i].buy_time&&m[i].buy_time<=s) {printf_one(i);j++;} if(j==0)puts("这一时间段内没有仪器购入."); elseprintf("在这一时间段内有%d台仪器购入.\n\n",j);} if(c==2){n=load(); for(i=0,j=0;i if(t<=m[i].borrow_time&&m[i].borrow_time<=s) {printf_one(i);j++;} if(j==0)puts("这一时间段内没有仪器借入."); elseprintf("在这一时间段内有%d台仪器借入.\n\n",j);} if(c==3){ if((fp=fopen("lended.txt","rb"))==NULL)/*以输出打开方式,在此前的记录被覆盖*/ printf("\n打不开文件\n"); for(n=0;! feof(fp);n++) fread(&m[n],sizeof(structmachine),1,fp); fclose(fp); for(i=0,j=0;i if(t<=m[i].lend_time&&m[i].lend_time<=s) {printf_one(i);j++;} if(j==0)puts("这一时间段内没有仪器借出."); elseprintf("在这一时间段内有%d台仪器借出.\n\n",j);} if(c==4){ if((fp=fopen("returned.txt","rb"))==NULL)/*以输出打开方式,在此前的记录被覆盖*/ printf("\n打不开文件\n"); for(n=0;! feof(fp);n++) fread(&m[n],sizeof(structmachine),1,fp); fclose(fp); for(i=0,j=0;i if(t<=m[i].return_time&&m[i].return_time<=s) {printf_one(i);j++;} if(j==0)puts("这一时间段内没有仪器返还."); elseprintf("在这一时间段内有%d台仪器返还.\n\n",j);} if(c==5){ if((fp=fopen("mended.txt","rb"))==NULL)/*以输出打开方式,在此前的记录被覆盖*/ printf("\n打不开文件\n"); for(n=0;! feof(fp);n++) fread(&m[n],sizeof(structmachine),1,fp); fclose(fp); for(i=0,j=0;i if(t<=m[i].mend_time&&m[i].mend_time<=s) {printf_one(i);j++;} if(j==0)puts("这一时间段内没有仪器在维修."); elseprintf("在这一时间段内有%d台仪器在维修.\n\n",j);} } c.按时间点查找 [需要分析] 分按时间段查找基本一样。 程序: voidsbdtime() {intn,w,w2; do{ do{ puts("\t\t=====================MENU====================\n\n"); puts("\t\t\t\t查询与统计"); puts("\t\t\t\t1.按购买时间"); puts("\t\t\t\t2.按借入时间"); puts("\t\t\t\t3.按借出时间"); puts("\t\t\t\t4.按返还时间"); puts("\t\t\t\t5.按修理时间"); puts("\t\t\t\t6.返回"); puts("\n\n\t\t==========================================\n"); printf("选择要查询的内容(1-6): []\b\b"); scanf("%d",&n); if(n<1||n>6) {w=1;printf("无效输入! \n"); getchar(); } elsew=0; }while(w==1); if(n==6)search(); elsebdetailtime(n); printf("您想做什么? \n\t1)再搜索一次2).返回[]\b\b"); scanf("%d",&w2); }while(w2==1); search(); } voidbdetailtime(intc) {inti,n,j,k,w2; longt; FILE*fp; if(c==1||c==2)n=load(); else{ if(c==3){if((fp=fopen("lended.txt","rb"))==NULL) printf("\n打不开文件\n");} if(c==4){if((fp=fopen("returned.txt","rb"))==NULL) printf("\n打不开文件\n");} if(c==5){if((fp=fopen("mended.txt","rb"))==NULL) printf("\n打不开文件\n");} for(n=0;! feof(fp);n++) fread(&m[n],sizeof(structmachine),1,fp); fclose(fp); n-=1;} do{ printf("\n\n输入您想要搜索的时间点! "); scanf("%ld",&t); printf_face(); if(c==1){ puts("\n\t==============buy=============="); for(i=0,j=0,k=-1;i if(t==m[i].buy_time) {k=i;printf_one(k);j++;} if(j==0)puts("这一时间没有仪器购入.\n"); elseprintf("这一时间有%d台仪器购入.\n",j);} if(c==2){ puts("\n\t===============borrow============="); for(i=0,j=0,k=-1;i if(t==m[i].borrow_time) {k=i;printf_one(k);j++;} if(j==0)puts("这一时间没有仪器借入."); elseprintf("这一时间有%d台仪器借入.",j);} if(c==3){ puts("\n\t======
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实习 报告 仪器仪表 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)