收藏 分销(赏)

实验设备管理系统C语言课程设计报告.doc

上传人:人****来 文档编号:3989615 上传时间:2024-07-24 格式:DOC 页数:18 大小:79.04KB
下载 相关 举报
实验设备管理系统C语言课程设计报告.doc_第1页
第1页 / 共18页
实验设备管理系统C语言课程设计报告.doc_第2页
第2页 / 共18页
实验设备管理系统C语言课程设计报告.doc_第3页
第3页 / 共18页
实验设备管理系统C语言课程设计报告.doc_第4页
第4页 / 共18页
实验设备管理系统C语言课程设计报告.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、长江大学电子信息学院电子信息学院C语言程序设计课程设计设计报告课课题题目: 实验设备管理系统 班 级: 通信11302班 姓 名: 王焱章 班级序号: 19 同组成员: 王炳辉、杨继玲 完成时间: 2015 年 7 月 9 日目录一、课题题目2二、设计目的2三、总体设计2四、详细设计4五、调试与测试8六、课程设计心得及体会9七、源程序清单与执行结果11附:指导老师意见22一、课题题目实验设备管理系统二、设计目的1。加深对讲授内容的理解,尤其是一些语法规则;2。熟悉C语言程序设计的结构化编程的思想,掌握数据的基本类型、自定义类型、函数、文件和指针等知识,能运用这些知识进行综合编程,熟练应用;3.

2、能够综合运用所学知识,编程解决实际问题;4。培养团队分工合作的意识,最终使学生提高;编程技能和解决实际问题的能力。三、总体设计(1)系统组成框图(2)系统流程图开始定义结构体指针分配内存空间显示目录,用于功能选择输入n,n=0?是否n属于(19)?提示输入错误否是各功能模块选择结束开始四、详细设计(1)主函数:显示主界面void main()Node equip;是否输入0-9? equip = (Node*)malloc(sizeof(Node)); equipnext=NULL;int flag;否是 printf(”tttt实验室设备管理系统n);执行相应子程序输出“输入错误!” whi

3、le(1) system(cls”); printf(” *目录*n”);结束 printf(”n 1。添加记录n”); printf(”n 2。修改记录n”); printf(n 3。显示记录n”);printf(”n 4。查询设备n”);printf(n 5。删除设备记录n);printf(n 6。用文件保存n”);printf(n 7.简单的帮助n);printf(n 8.分类统计n”);printf(”n 9。从文件输出n”); printf(n 0。退出n”); printf(n 请输入你要操作的序号:n”);printf(n 提示:输入0则返回主菜单!n); scanf(d,&fl

4、ag); switch(flag) case 0: system(”cls”);printf(n提示:已经退出系统,ByeBye!n”);break; case 1: system(cls”);Add(equip); break; /添加记录 case 2: system(”cls);Modify(equip); break;/修改记录 case 3: system(”cls”);Disp(equip); break;/显示记录case 4: system(cls”);search(equip); break;/查询设备case 5: system(”cls);delet(equip); br

5、eak;/删除设备记录case 6: system(”cls);Save(equip); break;/用文件保存case 7: system(”cls”);help(); break;/简单的帮助case 8: system(cls”);Classify(equip); break;/分类统计case 9: system(”cls);Read_From_File(); break;/从文件输出 default: printf(n提示:输入错误!n); break; scanf(%d”,flag); (2)添加记录模块:主要功能就是添加设备信息,包括设备编号、设备名称、设备种类、是否报废、报废

6、日期、购买日期、价格等信息。void Add(Node *equip) /添加记录添加记录模块Node p,*r,*s;int id; /先用于输入ID,也用于判断是否跳出循环r=equip; /s=equip-next; /使s为第一个有用的结点if(r!=NULL)输入设备的详细信息 while(r-next!=NULL) /使r为最后一个有用的结点r=rnext; /将指针置于最末尾0while(1)主菜单 printf(”n请你输入设备ID号输入0表示结束:”); scanf(”d”,id);1 if(id=0)break; p=(Node *)malloc(sizeof(Node))

7、; /申请空间 pnext=NULL; pdata.ID=id; while(1) if(Same(equip,p-data.ID)=1) printf(n你输入了相同的设备ID号,请重新输入!输入0表示结束:); scanf(%d”,&id); pdata。ID=id; else break; if(id=0) break; printf(”n请输入设备名称:”); scanf(”s”,p-data.name); printf(n请输入设备种类:”) scanf(”s”,p-data。kind); printf(n请输入报废日期:”); scanf(”d,&p-data.over); pri

8、ntf(n请输入设备是否报废:); scanf(”%s,&p-data.yesno); printf(n请输入设备购买时间:); scanf(%d,pdata。time); printf(”n请输入设备价格:”); scanf(”d,pdata。price); printf(”n提示:已经完成一条记录的添加。n”);printf(”n提示:输入0则返回主菜单!n”);rnext=p;number+;(3)修改记录模块:主要功能就是对己输入设备信息进行修改,在没有设备信息的情况下将输出“没有资料可以修改!”,在有设备信息的情况下就调用修改函数对输入编号所对应的设备信息进行修改。void Modi

9、fy(Node equip) /修改记录输入要修改的设备号Node p;int find;if(!equipnext)是否找到该设备 printf(n提示:没有资料可以修改!n); return;printf(请输入要修改的设备ID号:);否是显示找到该设备,调用修改函数scanf(”%d,find); p=equip-next;显示没有记录 while(p!=NULL)对设备信息进行修改 if(p-data.ID=find) /如果找到的话返回的是符合要求 break; p=pnext; 返回主菜单 if(p) /若找到 /printf(”请输入你想修改设备的IDn); printf(”请输

10、入新设备名称(原来是 s ):”,p-data。name); scanf(”s,p-data.name); printf(”请输入新设备设备种类名称(原来是 s ):,pdata。kind); scanf(”s”,p-data。kind); printf(请输入新设备报废日期名称(原来是 d ):,pdata。over); scanf(d”,pdata。over); printf(”请输入新设备是否报废(原来是 s ):,p-data.yesno); scanf(”%s”,p-data。yesno); printf(”请输入新设备购买时间(原来是 d ):”,pdata。time); scan

11、f(”d”,&pdata.time); printf(请输入新设备价格(原来是 %d ):”,p-data。price); scanf(”d,&pdata。price); printf(”n提示:该项记录资料已经成功修改!n”); else printf(”n提示:你要修改的信息不存在!n”);(4)输出记录模块:主要功能就是将所输入设备信息通过显示屏进行输出展示,在没有设备信息的情况下将输出“没有记录可以显示!,在有设备信息的情况下将通过窗口输出所有设备记录信息。输出记录模块void Disp(Node equip)/输出记录Node p;是否有记录p=equipnext;if(!p)显示设

12、备记录 printf(n提示:没有记录可以显示!n”);否是显示无记录 return; printf(”tttt显示结果n”); printf(”设备编号 设备名称 设备种类 报废日期 是否报废 购买时间 价格n”);返回主菜单while(p)printf(n%-11d%-11s11s11d%11s%11d%-5dn”,p-data。ID,p-data。name,pdata。kind,p-data。over,pdata.yesno,pdata。time,pdata。price); p=p-next;五、调试与测试(调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施)调试过

13、程:设置断点,一步一步进行执行并输出执行结果.调试过程中曾出现过出现结果与预期不符、死循环、乱码等情况,经过仔细查找及检查,一步一步执行程序找到出错部位,结合个人所学以及网上资料,还有同学的帮助,最终发现是空指针乱用,遇到死循环,指针乱指,逻辑错误等问题,最终及时改正.调试方法:设置断点分步调试调试过程部分截图:六、课程设计心得及体会这一次课程设计着实考验了我们对C语言知识的掌握情况。真可谓是让我无从下手,焦头烂额啊.因为我们在大二上学期学的C语言程序设计这门课程,大二下期末就让我们进行系统的C语言编程训练,让我们设计一个无懈可击的程序,这简直比登天还难。刚开始感觉确实有点力不从心,但是经过开

14、始的学习、摸索,我的程序也终于初具雏形了.虽然在许多的功能方面有所欠缺,但是我觉得我是在进步的。经过的慢慢上机实践学习,给我的不只是疲惫更多的是收获。课程设计是培养学生综合运用所学知识发现、提出、分析和解决实际问题、锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在.因此作为二十一世纪的大学生来说掌握计算机开发技术是十分重要的.在本次实践中,给我印象最为深刻的是在文件查询程序的编译过程中,先有我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。老天不会让我太过顺利,他在这最后的时刻设置的障碍,是要

15、考验我的能力,他要置我于死地?在这个问题的解决上,我打了退堂鼓,我不能忍受长时间的无功而反,时间正在消磨我的意志。没有了柳暗花明的一天,那么我怎么能说经受住了考验?然而,人的精神是不会败倒的。我鼓起勇气,到处问,到处查资料,黄天不负有心人,我的程序设计终于得以问世。课程设计到此算是基本结束,在程序设计中暴露出的我自身的问题却是非常明显!首先,基础掌握不牢固。许多基本语法尚没有熟练掌握,在设计过程中仍需请教其它同学,更重要研究课本,设计效率底.其次,经典算法掌握不牢.在编写程序的时候常常会停下来求助于书本,查看各种算法.再次,程序量过大的时候,头绪理不清。杂乱无章,无系统性,不便调试和阅览,自己

16、也易于出错。比如说少加分号,大括号,忘了先定义后使用的原则.回顾这几天,我感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识.通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻

17、,掌握得不够牢固,比如说结构体,指针,文件,函数通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!最后,对给过我帮助的所有同学和指导老师再次表示忠心的感谢!七、源程序清单与执行结果源程序清单:#include ”stdio.h”#include ”stdlib。hinclude string.h”int number = 0;struct shebeiint ID;char name100;char kind50;int over;

18、char yesno50;int time;int price;;typedef struct nodestruct shebei data;struct node *next; /建立一个链表Node;int Same(Node equip,int i) if(!equipnext) return 1; int flag=0; Node p; p=equipnext; while(p) if(p-data。ID=i) flag=1; return flag; p=pnext; return flag;/*添加记录模块*/void Add(Node *equip) /添加记录Node p,r,

19、*s;int id; /先用于输入ID,也用于判断是否跳出循环r=equip; /s=equipnext; /使s为第一个有用的结点if(r!=NULL) while(rnext!=NULL) /使r为最后一个有用的结点r=r-next; /将指针置于最末尾while(1) printf(n请你输入设备ID号data.ID=id; else break; if(id=0) break; printf(”n请输入设备名称:”); scanf(”s”,pdata.name); printf(”n请输入设备种类:); scanf(%s”,p-data。kind); printf(n请输入报废日期:”

20、); scanf(”%d”,pdata。over); printf(”n请输入设备是否报废:”); scanf(”s”,pdata。yesno); printf(”n请输入设备购买时间:); scanf(”d”,pdata。time); printf(n请输入设备价格:); scanf(”d”,p-data。price); printf(n提示:已经完成一条记录的添加.n”);printf(n提示:输入0则返回主菜单!n”);rnext=p;number+;/*修改记录模块*/void Modify(Node equip) /修改Node p;int find;if(!equip-next)

21、printf(”n提示:没有资料可以修改!n”); return;printf(请输入要修改的设备ID号:);scanf(d”,find); p=equip-next; while(p!=NULL) if(p-data.ID=find) /如果找到的话返回的是符合要求 break; p=pnext; if(p) /若找到 /printf(请输入你想修改设备的IDn); printf(请输入新设备名称(原来是 s ):,pdata。name); scanf(”s,pdata。name); printf(请输入新设备设备种类名称(原来是 s ):”,p-data.kind); scanf(”s,p

22、data。kind); printf(”请输入新设备报废日期名称(原来是 d ):,pdata.over); scanf(%d,&pdata。over); printf(”请输入新设备是否报废(原来是 s ):,p-data。yesno); scanf(”s”,p-data。yesno); printf(”请输入新设备购买时间(原来是 d ):”,pdata.time); scanf(”d”,p-data。time); printf(”请输入新设备价格(原来是 d ):,pdata.price); scanf(d”,&pdata.price); printf(n提示:该项记录资料已经成功修改!

23、n”); else printf(”n提示:你要修改的信息不存在!n”);/*输出记录模块*/void Disp(Node equip)/输出记录Node p;p=equipnext;if(!p) printf(”n提示:没有记录可以显示!n); return; printf(tttt显示结果n); printf(设备编号 设备名称 设备种类 报废日期 是否报废 购买时间 价格n);while(p)printf(”n%11d%11s11s%11d%-11s-11d%-5dn,p-data.ID,p-data.name,pdata。kind,p-data。over,p-data.yesno,pd

24、ata。time,p-data。price); p=pnext;/*查询设备模块*/void search(Node *equip)/数据查询函数Node p; p=equip-next; int find;if(!p) printf(”n提示:没有记录可以显示!n);/ return;elseprintf(请输入要查询设备设备的ID:”);scanf(d”,&find);while(p)if(pdata。ID=find)printf(”tttt显示结果n);printf(”设备编号 设备名称 设备种类 报废日期 是否报废 购买时间 价格n);printf(n11d-11s-11s%11d-1

25、1s11d-5dn,pdata。ID,pdata.name,pdata。kind,pdata。over,p-data。yesno,pdata.time,pdata。price); break;p=pnext;printf(”-n没有您要查找的设备了.。.n);/*删除记录模块*/void delet(Node equip)/删除函数*/int num;Node *p,*pre;if(equip-next=NULL)printf(”无可操作的设备信息!n”);return;elseprintf(”请输入要删除的设备的ID:”);scanf(”d,&num); pre=equip; p=pre-n

26、ext; while(pdata。ID!=num) if(pnext=NULL) break; pre=p; p=p-next; prenext=p-next; free(p);/*简单帮助模块*/void help()printf(在主界面输入1-7的数字n再按回车键可以进入到相应的功能界面进行操作n另外:系统保存的文件存放在D:设备管理系统,请勿随便删除!!!n”);/*分类统计模块*/void Classify(Node equip)/统计Node p;int sel;int flag2=0;char find20;if(equipnext=NULL)printf(无可操作的设备信息!n

27、”);return;printf(”提示:n=0退出n=1按设备类别统计n=2按设备名称统计n);scanf(”d,&sel);p=equipnext;if(sel=1)printf(”n输入你要统计分类的类别:”);scanf(”%s,find);while(p!=NULL)if(strcmp(p-data。kind,find)=0) flag2+; printf(”同名设备有:n设备编号 设备名称 设备种类 报废日期 是否报废 购买时间 价格n”);printf(”n%11d-11s%11s11d%-11s11d%-5dn,pdata.ID,pdata.name,p-data.kind,p

28、data。over,pdata.yesno,p-data。time,p-data。price);p=pnext;printf(”n按设备号%s统计的结果有d个n,find,flag2);else if(sel=2)printf(n输入你要统计分类的设备名称:);scanf(%s,find);while(p)if(strcmp(pdata。name,find)=0) flag2+;printf(”同名设备有:n设备编号 设备名称 设备种类 报废日期 是否报废 购买时间 价格n);printf(n%11d11s-11s%-11d11s11d-5dn,p-data.ID,p-data.name,pd

29、ata.kind,pdata。over,pdata。yesno,pdata.time,pdata。price);p=p-next;printf(n按设备名称s统计分类的结果有d个n”,find,flag2);else if(sel=0)return;/*保存文件模块*/void Save(Node *equip) FILE * fp; Node p; int i; if(equipnext=NULL)printf(”无可操作的设备信息!n”);return; fp=fopen(D:实验设备信息统计.txt”,”w+”); if(fp=NULL) printf(”文件不存在); exit(0);

30、 p=equipnext; for(i=0;inumber;i+) if(i=0) fprintf(fp,”n设备编号 设备名称 设备种类 报废日期 是否报废 购买时间 价格nn-11d%-11s11s11d11s11d%5dn”,pdata.ID,pdata。name,pdata.kind,pdata。over,p-data。yesno,pdata.time,pdata.price); p=pnext; Else fprintf(fp,n-11d11s11s11d11s%-11d-5dn”,pdata。ID,pdata。name,p-data.kind,pdata。over,p-data。y

31、esno,p-data.time,p-data。price); p=pnext; getchar(); printf(”n文件保存完毕,请在D盘查看,文件名“实验设备信息统计,总数为:n%d”,number); fclose(fp);/*文件输出模块*/void Read_From_File() FILE fp; Node *p; p=(Node*)malloc(sizeof(Node)); pnext=NULL; fp=fopen(”D:EquipManage。txt,r+”); if(fp=NULL) printf(”文件不存在); exit(0); for(p;!feof(fp);p=p

32、next)fscanf(fp,”n-11d%-11s11s%11d-11s11d-5dn”,p-data。ID,p-data。name,pdata.kind,p-data。over,pdata。yesno,p-data.time,p-data.price); /*主函数*/void main()Node equip; equip = (Node)malloc(sizeof(Node)); equip-next=NULL;int flag; printf(”tttt实验室设备管理系统n”); while(1) system(”cls”); printf( *目录*n); printf(”n 1.

33、添加记录n); printf(”n 2。修改记录n”); printf(”n 3.显示记录n);printf(”n 4.查询设备n);printf(”n 5。删除设备记录n);printf(”n 6。用文件保存n”);printf(”n 7。简单的帮助n);printf(”n 8。分类统计n”);printf(n 9。从文件输出n”); printf(”n 0。退出n); printf(”n 请输入你要操作的序号:n);printf(”n 提示:输入0则返回主菜单!n); scanf(d”,flag); switch(flag) case 0: system(”cls”);printf(”n提示:已经退出系统,ByeBye!n”);break; case 1: system(”cls);Add(equip); break; /添加记录 case 2: system(”cls”);Modify(equip); break;/修改记录 case 3: system(”cls”);Disp(equip);

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服