




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级语言程序设计课程设计报告 专业: 电气工程及其自动化 班级:电气121 姓名:孙亮 指导教师:杨莉 完成日期: 2013年 07月 15日山东工商学院 信息与电子工程学院一、课程设计的目的1)复习、巩固C语言的基础知识,进一步加深对C语言的理解和掌握;2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;3)培养学生在项目开发中团队合作精神、创新意识及能力。二、设计题目及实现题目仪器仪表管理系统一、 需求分析仪器仪表信息用文件存储,故要提供文件的输入输出操作;要能够完成对仪器仪表信息的修改和删除,需要对提供仪器仪表信息修改和删除操作;实现对仪器仪表信息的查询和统计及显示操作;另外还要提供键盘式选择菜单以实现功能选择。二、总体设计整个仪器仪表管理系统分为仪器表信息输入模块、仪器表信息修改和删除模块、仪器表信息查询和统计模块。三、详细设计 数据结构采用结构体: Struct instrumentInfo Char instrName20; /仪器仪表名Char instrNo10; /仪器仪表编号Char buyDate20; /购买时间Char borrowDate20; /借入时间Char lendDate20; /借出时间Char returnDate20; /归还时间Char repairDate20; /维修时间Int state; /状态信息(0代表可借出,1代表已借出,2代表正在维修) InstrInfo;(1)输入模块把仪器仪表信息写入仪器仪表信息文件。(2)修改和删除模块通过菜单选择借出操作,查找文件仪器仪表信息,找到相应的仪器仪表,如果仪器仪表状态为0,则允许借出,在文件中更改仪器仪表状态为1,更改借出时间;否则,即仪器仪表借出或正在维修,则输出“抱歉,仪器仪表已借出(正在维修)!”这个过程是一个对文件查找(读文件、判断是否是要查找的纪录)、重新写入的过程。删除操作只需读文件,判断所读纪录是不是要删除的记录,如果是,则舍弃;否则重新写入文件。(3)查询和统计模块 通过菜单选择查询或统计操作,若选择查询,则需要再选择查询方式:基本信息、时间段、时间点。基本信息查询,就显示所有记录,这是一个读文件和输出的过程。时间段查询,则要输入起止时间和表征字段(可以用0表示购买起止时间,1表示借出起止时间,2表示维修起止时间)。例如输入2004 1 1 2004 10 10 0 表示查询2004年1月1日到2004年10月10日之间购买的仪器仪表信息。则读一条记录,判断购买时间是否处于起止时间之间,如果处于,则打印输出,否则舍弃。借出和维修查询与此类似。程序:#includeint main()menu(); void menu()int n,w;doputs(tt*仪器仪表信息管理系统*nn); puts(tttt 1.仪器信息录入); puts(tttt 2.添加新的仪器); puts(tttt 3.修改仪器信息); puts(tttt 4.删除仪器信息); puts(tttt 5.查询仪器信息); puts(tttt 6.浏览); puts(tttt 7.退出); puts(nntt*n); printf(选择您需要的服务(1-7):bb); scanf(%d,&n); if(n7) w=1; getchar(); else w=0;while(w=1);switch(n)case 1:enter();break; case 2:add();break; case 3:modify();break; case 4:del();break; case 5:search();break; case 6:browse();break; case 7:exit(0);void enter()int i,n;printf(你要输入的仪器数量(1-%d),N);scanf(%d,&n);printf(n请输入相关信息nn);for(i=0;in;i+)printf(n输入第%d台仪器的信息.n,i+1);input(i);if(i!=0) save(n);menu();void add()int i,n,b,k;FILE*fp;n=load();printf(你想要添加的仪器的数量(0-%d)?:,N-1-n);scanf(%d,&b);k=b+n;for(i=n;ik;i+)printf(n请输入第%d台仪器的信息.n,i-n+1);input(i);if(fp=fopen(machine.txt,ab)=NULL) printf(不能打开文件n);exit(0);for(i=n;ik;i+) if(fwrite(&mi,sizeof(struct machine),1,fp)!=1)printf(文件书写错误n)fclose(fp);printf_back();void modify()struct machine s;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)printf(nn Remember NO. which needed modify.n);getchar();getchar();puts(nn);printf one(i); doprintf(nn请输入您想修改的仪器编号! NO.:);sacanf(%s),s.num);for(i=0;in;i+)if(strcmp(s.num,mi.num)=0)k=1;s=mi;if(k=-1)printf(nn该仪器已借出!请再次查询);while(k=-1);printf face();printf one(k);w1=modify data(k);if(w1=1)printf(n信息修改成功.nn请问您想修改其他仪器信息吗?nnt 1).是 2).储存并返回tbb);scanf(%d,&w0);w2=1;elsew0=0;if(w2=1)mk=s;if(w0!=1&w2=1)save(n);while(w0=1);menu();void del()struct machine s;int i,n,k,w0=1,w1,w2=0;n=load();dok=-1; /*给用户看全部记录以便去确认要删除的记录*/printf face();for(i=0;in;i+)if(i!=o)&(i%10=0)printf(nn remember NO.which needed deleted.n按任意键继续.);getchar();getchar();puts(nn);printf one(i);doprintf(nn输入您要删除的仪器编号! 第:);scanf(%s,s.sum);for(i=0;in;i+)if(strcmp(s.num,mi.num)=0)k=i;s=mi;if(k=-1)printf(nn仪器不存在!请再次输入);while(k=-1);printf face();printf one(k);printf(您确定吗?nntt1).确定ntt2).返回而不存储n);printf(请选择? bb);scanf(%d,&w1);if(w1=1)mk.condition=-1;printf(n删除成功nn您还想删除其他仪器吗?nnt 1).是的 2).储存并返回tbb);scanf(%d,&w0);w2=1;elsew0=0;if(w2=1)mk=s;if(w0!=1|w2=1)save(n);while(w0=1);menu();void browse()int i,n;n=load();printf face();for(i=0;in;i+)if(i!=0)&i%10=0)printf(nn按任意键继续.);getchar();getchar();puts(nn);printf one(i); /*调用显示一个记录的函数*/printf(t有%d台仪器的记录.n,n);printf(n按任意键继续.n);getchar(); /*按任意键*/menu();void search()int n,w;doputs(tt=菜单=nn);puts(tttt 查询与统计 );puts(tttt 1.按名称);puts(tttt 2.按编号);puts(tttt 3.按仪器状态信息);puts(tttt 4.按时间段);puts(tttt 5.按时间点);puts(tttt 6.返回);puts(nntt =n);printf(请选择查询方式(1-6):bb);scanf(%d,&n);if(n6)w=1;printf(input error!n);getchar();else w=0;while(w=1);switch(n)case 1:case 2:case 3:sbmnc(n);break;case 4:sbptime();break;case 5:sbdtime();break;case 6:menu();void sbmc(int c)int i,n,j,k,w1=1,w2;struct machine t;n=load();do do k=-1; if(c=1) printf(nn输入仪器名称 名称:); scanf(%s,); printf face(); for(i=0,j=0;jn;i+) if(strcmp(,)=0) k=i; printf one(k);j+; printf(n 有%d %s.台仪器符合这一名称); if(c=2) printf(nn输入仪器编号 编号:); scanf(%s,t.num); printf face(); for(i=0,j=0;in;i+) if(strcmp(t.num,mi.num)=0) k=i; printf one(k);j+; printf(n有%d %s.台仪器符合这一编号); if(c=3) printf(nn请输入您想要查询的仪器的状态信息 状态信息:); scanf(%d,&t.condition); printf face(); for(i=0,j=0;in;j+) if(t.condition=mi.condition) k=i;printf one(k);j+ printf(n 有%d台仪器处于这种状态); if(k=-1) printf(nn找不到符合要求的结果); printf(nn您想再次尝试吗?nt 1再次搜索 2 返回 bb); scanf(%d,&w1); if(w1!=1) break; while(k=-1&w1=1); printf(您还想做什么 nt 1再次搜索 2返回 bb); scanf(%d,&w2); while(w2=1);search();void sbparttime(int c)int i,j,n;long t,s;FILE *fp;printf(nn输入您想查询的时间段);printf(n从:);scanf(%1d,&t);printf(到:);scanf(%1d,&s);printf face();if(c=1)n=load(); for(i=0,j=0;in;i+) if(t=mi.buy time&i.buy time=s) printf one(i);j+; if(j=0)puts(这段时间没有仪器购入); else printf(在这段时间内有%d台仪器购入.nn,j);if(c=2)n=load(); for(i=0,j=0;in;i+) if(t=mi.borrow time&mi.borrow time=s) printf one(i);i+ if(t=mi.borrow time&mi.borrow time=s) printf one(i);j+ if(j=0)puts(这段时间没有仪器借入.); else printf(在这段时间内有%d台仪器借入.nn,j);if(c=3) if(fp=fopen(lended.txt,rb)=NULL) printf(n打不开文件n); for(n=0;!feof(fp);n+); fread(&mn,sizeof(struct machine),1,fp); fclose(fp); for(i=0,j=0;in-1;i+) if(t=mi.lend time&mi.lend time=s) printf one(i);j+ if(j=0)puts(这段时间没有机器借出); else printf(在这段时间内有%d台仪器借出.nn,j);if(c=4) if(fp=fopen(returned.txt,rb)=NULL) printf(n打不开文件n); for(n=0;!feof(fp);n+); fread(&mn,sizeof(struct machine),1,fp); fclose(fp); for(i=0,j=0;in-1;i+) if(t=mi.return time&mi.return time=s) printf one(i);j+ if(j=0)puts(这段时间没有机器返还); else printf(在这段时间内有%d台仪器返还.nn,j);if(c=5) if(fp=fopen(mended.txt,rb)=NULL) printf(n打不开文件n); for(n=0;!feof(fp);n+) fread(&mn,sizeof(struct machine),1,fp); fclose(fp); for(i=0,j=0;in-1;i+) if(t=mi.mend time&mi.mend time=s) printf one(i);j+; if(j=0)puts(这段时间没有一起在维修); else printf(这段时间有%d台仪器在维修.nn,j);void sbdtime()int n,w,m2;dodoputs(tt=menu=nn);puts(tttt 查询与统计);puts(tttt 1.按购买时间);puts(tttt 2.按借入时间);puts(tttt 3.按解出时间);puts(tttt 4.按返回时间);puts(tttt 5.按修理时间);puts(tttt 6.返回);puts(nntt=n);printf(选择要查询的内容(1-6):bb);scanf(%d,&n);if(n6)w=1;printf(无效输入!n);getchar();else w=0;while(w=1);if(n=6)search();else bdetailtime(n);printf(您想做什么?nt 1)再搜索一次 2)返回 bb);scanf(%d,&w2);while(w2=1);search();void bdetailtime(int c)int i,n,j,k,w2;long t;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(&mn,sizeof(sturct machine),1,fp);fclose(fp);n-=1;doprintf(nn输入您想要搜索的时间点!);scanf(%ld,&t);printf face();if(c=1) puts(nt=buy=); for(i=0,j=0,k=-1;in;i+) if(t=mi.buy time) k=i;printf one(k);j+; if(j=0)puts(这一时间没有仪器购入.n); else printf(这一 时间有%d台仪器购入.n,j);if(c=2) puts(nt=borrow=); for(i=0,j=0,k=-1;in;i+) if(t=mi.borrow_time) k=i;printf_one(k);j+; if(j=0)puts(这一时间没有仪器借入.n); else printf(这一 时间有%d台仪器借入.n,j);if(c=3) puts(nt=lend=); for(i=0,j=0,k=-1;in;i+) if(t=mi.lend_time) k=i;printf_one(k);j+ if(j=0)puts(这一时间没有仪器借出.n); else printf(这一 时间有%d台仪器借出.n,j);if(c=4) puts(nt=return=); for(i=0,j=0,k=-1;in;i+) if(t=mi.return_time) k=i;printf_one(k);j+ if(j=0)puts(这一时间没有仪器返还.n); else printf(这一 时间有%d台仪器返还.n,j);if(c=5) puts(nt=mend=); for(i=0,j=0,k=-1;i3|c3|c1);doswitch(c) case1:puts(借出时间:);scanf(%1d,&mi.lend time); mi.condition=1;break; case2:puts(返还时间:);scanf(%1d,&mi.return time);mi.condition=0;break; case3:puts(维修时间:);scanf(%1d,&mi.mend time);mi.condition=2;break;puts(n Now:n);printf face();printf one(i);printf(您确定吗?nnt1).确定 2).重新修改 3).返回而不储存bb);scanf(%d,&w1);while(w1=2);if(w1=1)if(c=1)if(fp=fopen(lended.txt,ab)=NULL)printf(打不开文件n);exit(0);if(c=2)if(fp=fopen(returned.txt,ab)=NULL)printf(打不开文件n);exit(0);if(c=3)if(fp=fopen(mended.txt,ab)=NULL)printf(打不开文件n);exit(0);if(fwrite(&mi,sizeof(struct machine),1,fp)!=1)printf(文件书写错误n);fclose(fp);return(w1);void printf one(int i)printf(%-5s %4s,,mi.num);printf(%91d %91d %91d %91d %3dn,mi.buy time,mi.borrow time,mi.lend time,mi.return time,mi.mend.time,mi.condition);void printf face()printf(名称 编号 购入时间 借出时间 返还时间 修理时间 状态信息n);void input(int i)printf(名称:);scanf(%s,);printf(编号:);scanf(%s,mi.num);puts(购入时间 借入时间 返还时间 修理时间 状态信息:n);scanf(%1d %1d %1d %1d %1d %d,&mi.buy time,&mi.borrow time,&mi.lend time,&mi.return time,&mi.mend time,&m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年山东体育学院辅导员考试真题
- 2024年西安市渭北中学招聘笔试真题
- 2024年台州市椒江区办公室招聘笔试真题
- 2024年河北省乡村振兴局下属事业单位真题
- 仓库货物分类管理计划
- 2024年贵州省社会科学院下属事业单位真题
- 2024年贵州省交通运输厅下属事业单位真题
- 2025届山东省邹平唐村中学七下数学期末达标检测模拟试题含解析
- 2024年甘肃省统计局下属事业单位真题
- 法学理论与实践的结合试题及答案
- 院感手卫生知识培训资料
- 瑞幸加盟合同协议
- 墩柱及系梁专项施工方案
- 武汉理工大学建筑信息模型(BIM)期末复习题
- 木模板施工安全技术规范
- GB 5009.5-2025食品安全国家标准食品中蛋白质的测定
- 建筑施工行业安全生产责任保险
- DB23T 3711-2024市县级矿产资源总体规划编制技术规程
- 透水砖项目施工合同
- 2025年护士执业资格真题答案解析
- 团课考试试题及答案
评论
0/150
提交评论