




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include#include#includevoid menu();void enter();void search();void delete();void input(int i);int modify_data(int i,int n);void num_input(int i,int n);void point_search();void printf_back();void printf_face();void printf_one(int i);void save(int n);int load();void modify();int commom_search();void main()menu(); /调用菜单void menu() /通过菜单来选择模块 int n,w; /n为所选菜单,w判断输入的数是否为1-5 do puts(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(输入您所要选择的模块号数(1-5): bb); scanf(%d,&n); if(n5) /对选择的数字作判断 w=1; getchar(); else w=0; while(w=1); switch(n) case 1:enter();break; /输入 case 2:modify();break; /修改 case 3:search();break; /查找 case 4:delete();break; /删除 case 5:exit(0); /退出 /输入模块#define N 50 /放在最前面,宏定义,N是仪表仪器个数struct machinechar name10; char number10; char buy_time10; char borrowin_time10; char borrowout_time10;char return_time10; char repair_time10; char sta10; char time10; /time为下面程序中按时间查找和修改时记录输入的时间macN; / macN中每个数组元素对应一个仪表仪器/*输入模块*void enter() int i,n; printf(您想输入多少咯仪表仪器数据(0-%d)?:,N-1); scanf(%d,&n); /要输入的记录个数 printf(n输入相关的日期等数字n); printf(nname number buy_time borrowin_time borrowout_time return_time repair_time staten); for(i=0;in;i+)input(i); /调用输入函数 if(i!=0)save(n); /调用保存函数 printf_back(); /一个任务结束时让用户选择是浏览还是返回/*修改模块*void modify()struct machine m;int i,n,k,w0,w1,w2=0;n=load();dok=-1; /显示全部记录,选择要修改的记录printf_face(); /调用显示函数for(i=0;in;i+)if(i!=0)&i%10=0)printf(nnpass any key to continue);getchar();puts(nn);printf_one(i);doprintf(nplese enter machine number);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(nnNO exist!Try again);while(k=-1); /表示没有找到要修改的机器printf_face(); /调用显示函数printf_one(k); /调用显示一个记录的函数w1=modify_data(k,n);/修改记录并且返回保存控制值w1,w1=1则表示确认修改if(w1=1) /用户确认这次修改printf(nSuccessfulnnAre you modify anothert1).yes 2).back with savetbb);scanf(%d,&w0);w2=1; /控制保存,使w2=1是标记已有过修改elsew0=0;if(w2=1) mack=m;/走到这里是由于用户没有确认这次修改(在调用修改函数w1=modify_data(k)时没有确认),使w0=0,为了终止循环;mack=m 则把备份的m恢复给mack,这样的好处是确保在此之前修改过的成功保存,而本次不修改if(w0!=1&w2=1) /w=!0表示正常返回,w2=1表示在此前有过修改,确保修改过的成功保存,而本次不修改save(n);/w2!=1表示此前没有过修改而又反悔这次修改,则不保存返回while(w0=1);printf_back();/*查找模块*void search() int m; puts(tt*nn); puts(tttt 1.common_search); puts(tttt 2.point_search); puts(tttt 3.exit); puts(nntt *n); printf(请选择您要的操作(1-3): bb); scanf(%d,&m); switch(m) case 1:common_search();break; case 2:point_search();break; case 3:exit(0); /*基本查找模块* int common_search() int i,n,k,w1=1,w2,w3,w4; struct machine m; n=load(); printf(您要按仪器名还是编号查找?请选择方式:-仪器名,2-仪器编号:); scanf(%d,&i); if(i=1) do do k=-1; printf(nn请输入您想查找的仪器名! name:); scanf(%s,); /输入要查找的仪器名称 printf_face(); /调用显示记录函数 for(i=0;in;i+) /查找想要的记录 if(strcmp(,)=0) k=i; /找到要查找的记录 printf_one(k); /调用显示一个记录的函数 if(k=-1) printf(nnNO exist! please); printf(nnAre you again?nt1).again 2).NO and back 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(nnWhat do you want to do?nt1).Search another 2).Modify 3).Delete 4).Back menu bb); scanf(%d,&w2); switch(w2) case 2:w3=modify_data(k,i);break; /调用修改函数 case 3:printf(nAre you sure?nt1).Sure 2).No and back bb); scanf(%d,&w4); if(w3=1|w4=1) save(n); printf(nnSuccessful._.); printf(nnWhat do you want to do?nt1).Search another 2).Back bb); scanf(%d,&w2); while(w2=1); if(i=2) do do k=-1; printf(nn输入您想查找的仪器编号! number:); scanf(%s,m.number); /输入要查找的仪器仪表编号 printf_face(); /调用显示记录函数 for(i=0;in;i+) /查找想要的记录 if(strcmp(m.number,maci.number)=0) k=i; /找到要查找的记录 printf_one(k); /调用显示一个记录的函数 if(k=-1) printf(nnNO exist! please); printf(nnAre you again?nt1).again 2).NO and back 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(nnWhat do you want to do?nt1).Search another 2).Modify 3).Delete 4).Back menu bb); scanf(%d,&w2); switch(w2) case 2:w3=modify_data(k,n);break; /调用修改数据函数 case 3:printf(nAre you sure?nt1).Sure 2).No and back bb); scanf(%d,&w4); if(w3=1|w4=1) save(n); printf(nnSuccessful._.); printf(nnWhat do you want to do?nt1).Search another 2).Back bb); scanf(%d,&w2); while(w2=1); menu(); /调用菜单函数/*时间点查找模块*void point_search() /时间点查找模块 int i,n,k,w1=1,w2,w3,w4; struct machine m; n=load(); printf(选择时间查找方式-借入时间-借出时间3-归还时间); scanf(%d,&i); /选择要查找的是哪个时间点 if(i=1) do do k=-1; printf(nn输入要查找仪器的借入时间:); scanf(%s,m.time); /输入要查找的仪器仪表的借入时间 printf_face(); /调用显示记录函数 for(i=0;in;i+) /查找想要的记录 if(strcmp(m.time,maci.borrowin_time)=0) k=i; /找到要查找的记录 printf_one(k); /调用显示一个记录的函数 if(k=-1) printf(nnNO exist! please); printf(nnAre you again?nt1).again 2).NO and back 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(nnWhat do you want to do?nt1).Search another 2).Modify 3).Delete 4).Back menu bb); scanf(%d,&w2); switch(w2) case 2:w3=modify_data(k,n);break; /调用修改数据函数 case 3:printf(nAre you sure?nt1).Sure 2).No and back bb); scanf(%d,&w4); if(w3=1|w4=1) save(n); printf(nnSuccessful._.); printf(nnWhat do you want to do?nt1).Search another 2).Back bb); scanf(%d,&w2); while(w2=1); if(i=2) do do k=-1; printf(nn输入要查找仪器的借出时间:); scanf(%s,m.time); /输入要查找的仪器仪表的借出时间 printf_face(); /调用显示记录函数 for(i=0;in;i+) /查找想要的记录 if(strcmp(m.time,maci.borrowout_time)=0) k=i; /找到要查找的记录 printf_one(k); /调用显示一个记录的函数 if(k=-1) printf(nnNO exist! please); printf(nnAre you again?nt1).again 2).NO and back 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(nnWhat do you want to do?nt1).Search another 2).Modify 3).Delete 4).Back menu bb); scanf(%d,&w2); switch(w2) case 2:w3=modify_data(k,n);break; /调用修改数据函数 case 3:printf(nAre you sure?nt1).Sure 2).No and back bb); scanf(%d,&w4); if(w3=1|w4=1) save(n); printf(nnSuccessful._.); printf(nnWhat do you want to do?nt1).Search another 2).Back bb); scanf(%d,&w2); while(w2=1); if(i=3) do do k=-1; printf(nn输入要查找仪器的归还时间:); scanf(%s,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(nnNO exist! please); printf(nnAre you again?nt1).again 2).NO and back 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(nnWhat do you want to do?nt1).Search another 2).Modify 3).Delete 4).Back menu bb); scanf(%d,&w2); switch(w2) case 2:w3=modify_data(k,n);break; /调用修改记录函数 case 3:printf(nAre you sure?nt1).Sure 2).No and back bb); scanf(%d,&w4); if(w3=1|w4=1) save(n); printf(nnSuccessful._.); printf(nnWhat do you want to do?nt1).Search another 2).Back bb); scanf(%d,&w2); while(w2=1); menu(); /调用菜单函数/*删除模块*void delete() 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(nnpass any key to continue.); getchar(); 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(nnNO exist!Try again); while(k=-1); /k=-1时表示没有找到 printf_face(); /调用显示记录函数 printf_one(k); /调用显示一个记录的函数 printf(n是否确定?nnt1).确定).Back without save in this time bb); scanf(%d,&w1); /返回保存控制值w1,w1=1则表示确认删除 if(w1=1) /w1=1表示确定这次删除 strcpy( mack.number,0); /mack.number=0表示已经删除 printf(n删除成功_.nn是否继续删除其他记录?nnt1).是2).Back with savetbb); scanf(%d,&w0); w2=1; /控制保存,使w2=1是标记已有过修改 else 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();/*公共函数*/(1)保存函数save(int n)/形参n控制保存的个数。当maci.number=0表示删除,不保存该记录。/保存函数void save(int n) /保存函数,保存n个记录 FILE *fp; int i; if(fp=fopen(data.txt,wb)=NULL) /以输出打开方式,在此前的记录被覆盖 printf(nCannot open filen); return; for(i=0;in;i+) if(maci.number!=0) /maci.number=0表示此记录已删除 if(fwrite(&maci,sizeof(struct machine),1,fp)!=1)printf(file write error!n); fclose(fp);/(2)输入整一个记录函数input(int i)/形参i表示第i个仪器仪表的记录。void input(int i) /输入一个记录函数 printf(name:); scanf(%s,); num_input(i,i); /调用仪器仪表编号输入函数 printf(buy_time:); scanf(%s,maci.buy_time); printf(borrowin_time:); scanf(%s,maci.borrowin_time); printf(borrowout_time:); scanf(%s,maci.borrowout_time); printf(return_time:); scanf(%s,maci.return_time); printf(repair_time:); scanf(%s,maci.repair_time); printf(state:); scanf(%s,maci.sta); /(3)仪器仪表编号输入函数num_input(int i,int n)/该函数对输入的仪器仪表编号进
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卸车工安全培训材料课件
- 2025海南保亭农水投资有限公司招聘22人笔试参考题库附带答案详解
- 2025浙江临海工投紫光环保科技有限公司招聘32人笔试参考题库附带答案详解
- 2025江西航天海虹测控技术有限责任公司招聘8人笔试参考题库附带答案详解
- 2025年福建省泉州市安溪城建集团有限公司招聘10人笔试参考题库附带答案详解
- 2025年安徽科技大市场建设运营有限责任公司见习人员招聘8人笔试参考题库附带答案详解
- 2025年六安舒城万佛湖水源保护和旅游管理国企招聘13人笔试参考题库附带答案详解
- 2025年三门峡路桥建设集团海外有限责任公司公开招聘10人笔试参考题库附带答案详解
- 2025云南普洱绿佳食品有限公司招聘56人笔试参考题库附带答案详解
- 2025中国平煤神马集团开封华瑞化工新材料股份有限公司招聘21人笔试参考题库附带答案详解
- GA/T 1312-2016法庭科学添改文件检验技术规程
- 大学物理实验长测量
- 卫生政策学之政策问题根源分析
- 步进电机及其工作原理-电机的工作原理及特性课件
- 基于CAN通讯的储能变流器并机方案及应用分析报告-培训课件
- 腹直肌分离康复(产后康复课件PPT)
- 聚合物成型的理论基础课件
- 药监系统官方培训06细菌内毒素方法介绍-蔡彤
- 慢性中耳炎的并发症课件
- 灭火器每月定期检查及记录(卡)表
- 千米、分米和毫米的认识单元备课
评论
0/150
提交评论