欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    仪器仪表管理-c语言仪器仪表管理课程设计.doc

    • 资源ID:91255714       资源大小:553.50KB        全文页数:48页
    • 资源格式: DOC        下载积分:9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    仪器仪表管理-c语言仪器仪表管理课程设计.doc

    C程序设计实习报告题目:仪器仪表管理学 院: 机电学院 专 业:机械设计制造及其自动化目录 题目要求················第页 需求分析················第页 总体设计················第页 详细设计················第页 上机操作···············第页 总结·················第页 参考文献···············第页 附录:部分/主要程序模块函数清单····第页1.1 题目要求仪器仪表管理 要求 系统功能的基本要求:(1).新的仪器仪表信息录入。(2).在借出、归还、维修时对仪器仪表信息的修改。(3).对报废仪器仪表信息的删除。(4).按照一定的条件查询、统计符合条件的仪器仪表信息;查询功能至少应包括仪器仪表基本信息的查询、按时间段(如在2004年1月1日到2004年10月10日购买、借出、维修的仪器仪表等)查询、按时间点(借入时间、借出时间、归还时间)查询等,统计功能至少包括按时间段统计、安仪器仪表的基本信息统计等。(5).对查询、统计的结果打印输出。 提示 数据结构采用结构体。仪器仪表信息包括仪器仪表名、仪器仪表编号、购买时间、借入时间、借出时间、归还时间、维修时间、状态信息(0代表可借出,1代表可借入,2代表正在维修)等。1.2 需求分析根据题目要求,需要把仪器仪表信息的数据存储在文件里,所以需要提供文件的输入输出等操作;在程序中要提供修改、删除、查找等操作;另外还应该提供键盘式选择输入菜单来实现功能选择。1.3 总体设计根据上面的需求分析,可以将系统的设计分为五个模块,即输入模块、添加模块、修改模块、查找模块、删除模块。仪器仪表管理系统添加修改查找删除】输入退出图1-1 系统功能模块图1.4 详细设计 主函数主函数一般设计得比较简洁,只提供输入、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。本题main()函数体内的界面选择部分语句单独抽取出来作为一独立函数,目的在于系统执行完每部分功能后能够方便返回到系统界面。其流程图如下:结束根据n的值调用各功能模块函数输入n,判断m是否是09?显示一系列功能选项开始NY图1-2 主函数流程图【程序】main()menu(); menu() int n,w;/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/ do printf("tt*MENU*nn"); printf("ntttt1.Enter new data"); printf("ntttt2.add new data"); printf("ntttt3.modify data"); printf("ntttt4.delete data"); printf("ntttt5.search data"); printf("ntttt6.exit"); printf("nntt*n"); printf("choose number(1-6): bb"); scanf("%d",&n); if(n<1|n>6)/*对选择的数字做判断*/ w=1; getchar(); else w=0; while(w=1); switch(n) case 1:newin();break;/*输入模块*/ case 2:add();break;/*添加模块*/ case 3:modify();break;/*修改模块*/ case 4:delet();break;/*删除模块*/ case 5:search();break;/*查找模块*/ case 6:exit(0);/*退出*/ 2.各功能模块设计(1).输入模块【数据结构】【分析】单独看各数据信息,仪器仪表名是字符型,可采用字符型数组;仪器仪表编号、购买时间、借出时间、借入时间、归还时间、维修时间应采用实型;状态信息是整数,应采用整型;实际上操作时发现只有字符型的数据才可以在文件中成功保存,故本题所有数据均采用字符型。struct equip char num10;char name50;char pt10; char bt10;char lt10; char rt10; char mt10; char st5; char time5;/*为下面程序中按时间查找和修改时记录输入的时间*/eqN;/*eqN中每个数组元素对应一台仪器信息*/【注意】 eqN中的N是仪器仪表个数,程序采用宏定义的方式,可以随时在源程序宏定义中修改,本程序宏定义#define N 100。输入模块流程图如下:结束返回主菜单保存调用函数save(n)i!=0?I从0到n-1调用输入函数input(i)输入用户要输入的仪器仪表数量n开始图1-3 输入模块流程图【程序】 /*输入模块*/void newin()/*输入模块*/ int i,n; printf("录入仪器仪表的数量:",N-1); scanf("%d",&n);/*要输入的记录个数*/ printf("n 录入日期nn");printf("n 名称编号购买时间借出时间借入时间归还时间维修时间状态n");for(i=0;i<n;i+) input(i);/*调用输入函数*/if(i!=0) save(n);/*调用保存函数*/printf_back();/*一个任务结束时让用户选择是浏览还是返回*/(2).添加模块【需求分析】该模块的功能是用户需要增加新的仪器仪表的信息,从键盘输入并逐条写到原来的输入文件中,注意采用追加而不是覆盖的方式。追加模块流程图如下:开始结束保存增加的记录i从n到k调用输入函数input(i)K=m+n输入用户要增加的仪器仪表数量m调用加载函数n=load()并计算可以记录个数图1-4 添加模块流程图【程序】/*添加模块*/void add() int i,n,m,k; FILE *fp; n=load(); printf(" 请输入所要增加仪器仪表信息的数量:",N-1-n); scanf("%d",&m); /*输入要添加的数量*/ k=m+n; for(i=n;i<k;i+) printf("n 请输入仪器仪表信息n",i-n+1); input(i); /*调用输入函数*/ if(fp=fopen("eq.txt","ab")=NULL)/*以ab方式打开文件,追加保存*/ printf("无法打开该文件n"); for(i=n;i<k;i+) if(fwrite(&eqi,sizeof(struct equip),i,fp)!=1)/*输出到文件中*/ printf("文件写入错误n"); fclose(fp);printf_back(); (3).修改模块【需求分析】该模块考虑到是显示所有仪器仪表信息,考虑到记录较多,建建议采用分屏显示。显示完所有纪录后,用户输入要修改的仪器仪表编号,根据编号查找仪器的记录,并提示用户修改该记录的那部分信息,是借出时间、归还时间、维修时间还是状态,根据用户的选择修改相应信息。修改模块流程图如下:开始提示没有找到结束返回主菜单询问用户是否继续修改?显示找到的记录调用修改记录i!=0?输入要修改的编号显示所有记录,让用户看那条信息需要修改图1-5修改模块流程图【程序】/*修改模块*/void modify() struct equip q;/* FILE *fp;*/ int i,n,k,w0=1,w1,w2=0; n=load(); do k=-1; printf_face(); for(i=0;i<n;i+) if(i!=0)&&(i%10=0) printf("nn记住所要修改的编号!按任意键继续"); getchar();puts("nnn"); printf_one(i); do printf("nn请输入所要修改的编号:"); scanf("%s",q.num); for(i=0;i<n;i+) if(strcmp(q.num,eqi.num)=0) k=i; q=eqi; if(k=-1) printf("nn编号不存在!请重新输入"); while(k=-1); printf_face();printf_one(k); w1=modify_data(k); if(w1=1) printf("n修改成功!nn是否修改下一个?nnt1).是2).否t bb"); scanf("%d",&w0); w2=1; else w0=0; if(w2=1) eqk=q; if(w0!=1&&w2=1) save(n); while(w0=1); menu(); 显示一系列功能选项(4).查找模块根据的值调用各子功能模块函数输入n,判断是11否为1-3图1-6 查找模块流程图【程序】/*查找功能*/void search() int m; puts("tt*nn"); puts("tttt mon search"); puts("tttt 2.point search"); puts("tttt 3.exit"); puts("nntt*n"); printf("n choose your number(1-3): bb"); scanf("%d",&m); switch(m) case 1:commom_search();break; case 2:p_search(); case 3:exit(0);(4.1).基本查找【需求分析】基本信息查找包含仪器仪表的名称以及编号的查找,所以该子功能模块的功能是先让用户选择是按仪器仪表的名称还是按仪器仪表的编号查找,根据用户的选择进行查找,找到以后增加修改和删除功能。基本查找模块的流程图如下:调用加载函数n=load(),并计算可以查找的记录个数n输入仪器仪表编号输入仪器仪表名称用户选择返回主菜单让用户选择查找另一个修改删除返回主菜单询问用户是否继续查找提示没有找到显示找到的记录是否找到该仪器仪表记录Y图1-7 基本查找流程图【程序】/*基本查找模块*/void commom_search()int i,n,k,w1=1,w2,w3,w4;struct equip q;n=load();printf("n通过名称还是编号查找? 1.名称 2.编号: bb");scanf("%d",&i);if(i=1) dodok=-1; printf("nn请输入名称!名称 bb"); scanf("%s",q.name); printf_face(); for(i=0;i<n;i+)if(strcmp(q.name,eqi.name)=0) k=i; printf_one(k); if(k=-1) printf("nn不存在"); printf("nn重试nt1).是 2).返回 bb");scanf("%d",&w1); if(w1=2) menu(); while(k=-1&&w1=1); w4=0;w3=0;if(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确定nt1).是 2).返回 bb"); scanf("%d",&w4); if(w3=1|w4=1) save(n); printf("n成功nn"); printf("n操作nt1.重新搜索 2.返回 bb"); scanf("%d",&w2); while(w2=1); if(i=2) do do k=-1; printf("nn请输入编号编号: bb"); scanf("%s",q.num); printf_face(); for(i=0;i<n;i+)if(strcmp(q.num,eqi.num)=0) k=i;printf_one(k); if(k=-1) printf("nn不存在"); printf("nn重试nt1).是 2).返回 bb");scanf("%d",&w1); if(w1=2) menu(); while(k=-1&&w1=1); w4=0;w3=0;if(k!=-1) printf("nn 操作nt1.重新搜索2.修改 3.删除 4.返回 bb"); scanf("%d",&w2); switch(w2) case 2:w3=modify_data(k);break; case 3:printf("nSure?nt1).Yes 2).Back bb");scanf("%d",&w4); if(w3=1|w4=1) save(n); printf("n成功nn"); printf("n操作nt1.重新搜索 2.返回 bb");scanf("%d",&w2);while(w2=1); /* menu();*/(4.2)按时间点查找调用加载函数n=load(),并计算可以查找的记录个数n按维修时间查找按借出时间查找用户选择3按仪器归还时间查找让用户选择查找另一个修改删除返回主菜单询问用户是否继续查找提示没有找到显示找到的记录是否找到该仪器仪表记录返回主菜单图1-8 按时间点查找流程图【程序】 /*按时间点查找模块*/void p_search() int i,n,k,w1=1,w2,w3,w4; struct equip q; n=load(); printf("n1.借入时间2.借出时间3.归还时间 bb"); scanf("%d",&i); if(i=1) do do k=-1; printf("nn请输入时间!借入时间: bb"); scanf("%s",q.time); printf_face(); for(i=0;i<n;i+)if(strcmp(q.time,eqi.lt)=0) k=i; printf_one(k); if(k=-1) printf("nn不存在"); printf("nn重试nt1).是 2).返回 bb"); scanf("%d",&w1); if(w1=2) menu(); while(k=-1&&w1=1); w4=0;w3=0; if(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确定nt1).是 2).返回 bb");scanf("%d",&w4); if(w3=1|w4=1) save(n); printf("n成功nn"); printf("n操作nt1.重新搜索 2.返回 bb"); scanf("%d",&w2); while(w2=1); if(i=2) do do k=-1; printf("nn请输入借出时间: bb"); scanf("%s",q.time); printf_face(); for(i=0;i<n;i+)if(strcmp(q.time,eqi.bt)=0) k=i;printf_one(k); if(k=-1) printf("nn不存在");printf("nn重试nt1).是 2).返回 bb");scanf("%d",&w1); if(w1=2) menu(); while(k=-1&&w1=1); w4=0;w3=0; if(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确定nt1).是 2).返回 bb");scanf("%d",&w4); if(w3=1|w4=1) save(n); printf("n成功nn"); printf("n操作nt1.重新搜索 2.返回 bb"); scanf("%d",&w2); while(w2=1); if(i=3) do do k=-1; printf("nn请输入归还时间: bb"); scanf("%s",q.time); printf_face(); for(i=0;i<n;i+)if(strcmp(q.time,eqi.rt)=0) k=i;printf_one(k); if(k=-1) printf("nn不存在");printf("nn重试nt1).是 2).返回 bb");scanf("%d",&w1); if(w1=2) menu(); while(k=-1&&w1=1); w4=0;w3=0; if(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确定nt1).是 2).返回 bb");scanf("%d",&w4); if(w3=1|w4=1) save(n); printf("n成功nn"); printf("n操作nt1.重新搜索 2.返回 bb");scanf("%d",&w2); while(w2=1); /*menu();*/(5).删除模块【需求分析】该模块与修改模块一样采用分屏显示,显示完所有记录后,由用户进行选择要删除的编号,经查找后可进行删除。删除模块的流程图如下:开始提示没有找到结束返回主菜单询问用户是否继续删除?显示找到的记录调用删除记录i!=0?输入要删除的编号显示所有记录,让用户看那条信息需要删除图1-9 删除模块流程图【程序】/*删除模块*/void delet() struct equip q;/* FILE *fp;*/ int i,n,k,w0=1,w1,w2=0; n=load(); do k=-1; printf_face();for(i=0;i<n;i+) if(i!=0)&&(i%10=0) printf("nn记住所要修改的编号!按任意键继续"); getchar();puts("nnn"); printf_one(i); do printf("nn请输入所要修改的编号:"); scanf("%s",q.num);for(i=0;i<n;i+) if(strcmp(q.num,eqi.num)=0) k=i;q=eqi; if(k=-1) printf("nn编号不存在!请重新输入"); while(k=-1); printf_face(); printf_one(k); printf("n确认删除?nnt1).是2).不保存返回 bb"); scanf("%d",&w1); if(w1=1) eqk.num10='0' printf("n成功nn还要删除其他吗?nnt1).是2).保存退出t bb");scanf("%d",&w0); w2=1; else w0=0; if(w2=1) eqk=q; if(w0!=1&&w2=1) save(n); while(w0=1); printf_back(); 5.公用函数(5.1)保存函数save(int n)【程序】void save(int n) FILE *fp;int i;if(fp=fopen("eq.txt","wb")=NULL) printf("n无法打开该文件n"); /* return NULL;*/for(i=0;i<n;i+) if(eqi.num10!='0')if(fwrite(&eqi,sizeof(struct equip),1,fp)!=1)printf("文件写入错误n");fclose(fp); (5.2)加载函数load()【程序】int load() FILE *fp; int i; if(fp=fopen("eq.txt","rb")=NULL) printf("n无法打开该文件n"); for(i=0;!feof(fp);i+) fread(&eqi,sizeof(struct equip),1,fp); fclose(fp); return(i-1); (5.3) 编号输入函数num_input(int I,int n)【程序】void num_input(int i,int n) int j,k,w1; do w1=0; printf("请输入编号:");scanf("%s",eqi.num);for(j=0;eqi.numj!='0'j+) if(eqi.numj<'0'|eqi.numj>'9') printf("输入错误!请输入1到9的数字n");w1=1;break; if(w1!=1) for(k=0;k<n;k+)if(k!=i&&strcmp(eqk.num,eqi.num)=0) printf("该编号已存在!请重新输入n"); w1=1;break; while(w1=1); (5.4) 整条输入函数input(int i)【程序】void input(int i) num_input(i,i); printf("名称:"); scanf("%s",eqi.name); printf("请输入购买时间:"); scanf("%s",eqi.pt); printf("请输入借出时间:"); scanf("%s",eqi.bt); printf("请输入借入时间:"); scanf("%s",eqi.lt); printf("请输入归还时间:"); scanf("%s",eqi.rt); printf("请输入维修时间:"); scanf("%s",eqi.mt); printf("请输入状态信息(0代表可借出,1代表已借出,2代表正在维修):"); scanf("%s",eqi.st); (5.5)显示数据结构项目函数void printf_face() printf("n编号 名称 购买时间 借出时间 借入时间 归还时间 维修时间 状态n");(5.6) 显示一个记录函数void printf_one(int i) printf("%1s %s %s %s %s %s %s %5sn",eqi.num,eqi.name,eqi.pt,eqi.bt,eqi.lt,eqi.rt,eqi.mt,eqi.st);(5.7)一个任务结束时选择浏览还是返回的函数void printf_back() int w; printf("nn 成功 nn"); printf(" 操作?nnt1.返回t2.退出: bb");scanf("%d",&w);if(w=1) menu();else exit(0);(5.8)修改记录函数modify_data(int,I,int,n)modify_data(int i) int c,w; do printf("n你想修改:nn 1).借出时间 2).归还时间 3.)维修时间 4).状态 "); printf("你想选择?: bb"); scanf("%d",&c); if(c>4|c<1) printf("n选择错误!请重新选择"); getchar(); while(c>4|c<1); do switch(c) case 1:printf("借出时间:");scanf("%s",eqi.bt);break; case 2:printf("归还时间:");scanf("%s",eqi.rt);break; case 3:printf("维修时间:");scanf("%s",eqi.mt);break; case 4:printf("状态:");scanf("%s",eqi.st);break;printf("nNow:n");printf_face();printf_one(i);printf("n确认修改nnt1).Yes 2).No and remodify 3).Back without save bb");scanf("%d",&w); while(w=2); return(w);1.5 上机操作 数据源为了保存数据,需要建立一个eq.txt文件。2. 编译、连接和运行 结果:(1).主菜单函数图1-10 主菜单(2)输入模块在主界面出现后输入1并按nter键,结果如下:图1-11 输入模块图1-12 输入模块(3)添加模块图1-13 添加模块图1-14 添加模块(4) 修改模块图1-15 修改模块图1-16 修改模块(5)删除模块图1-17删除模块图1-18 删除模块(6)查找模块图 1-19 查找模块图1-20 查找模块1.6 总结课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一周之内的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实

    注意事项

    本文(仪器仪表管理-c语言仪器仪表管理课程设计.doc)为本站会员(可****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开