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

上传人:小飞机 文档编号:3844512 上传时间:2023-03-24 格式:DOC 页数:23 大小:229.50KB
返回 下载 相关 举报
实验设备管理系统C语言课程设计报告.doc_第1页
第1页 / 共23页
实验设备管理系统C语言课程设计报告.doc_第2页
第2页 / 共23页
实验设备管理系统C语言课程设计报告.doc_第3页
第3页 / 共23页
实验设备管理系统C语言课程设计报告.doc_第4页
第4页 / 共23页
实验设备管理系统C语言课程设计报告.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《实验设备管理系统C语言课程设计报告.doc》由会员分享,可在线阅读,更多相关《实验设备管理系统C语言课程设计报告.doc(23页珍藏版)》请在三一办公上搜索。

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); equip-next=NULL;int flag;否是 printf(tttt实验室设备管理系统n);执行相应子程序输出“输入错误!” while(1) sys

3、tem(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,&flag); switch(flag) case 0

4、: 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); break;/删除设备记录 case 6: system(cls)

5、;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)添加记录模块:主要功能就是添加设备信息,包括设备编号、设备名称、设备种类、是否报废、报废日期、购买日期、价格等信息。void Add(Node *equ

6、ip) /添加记录添加记录模块Node *p,*r,*s;int id; /先用于输入ID,也用于判断是否跳出循环r=equip; /s=equip-next; /使s为第一个有用的结点if(r!=NULL)输入设备的详细信息 while(r-next!=NULL) /使r为最后一个有用的结点r=r-next; /将指针置于最末尾0while(1)主菜单 printf(n请你输入设备ID号:); scanf(%d,&id);1 if(id=0)break; p=(Node *)malloc(sizeof(Node); /申请空间 p-next=NULL; p-data.ID=id; while

7、(1) if(Same(equip,p-data.ID)=1) printf(n你输入了相同的设备ID号,请重新输入!:); scanf(%d,&id); p-data.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); printf(n请输入设备是否报废:); scanf(%s,&p-data.yesno); printf(n

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

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

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

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

12、(tttt显示结果n); printf(设备编号 设备名称 设备种类 报废日期 是否报废 购买时间 价格n);返回主菜单while(p)printf(n%-11d%-11s%-11s%-11d%-11s%-11d%-5dn,p-data.ID,p-data.name,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price); p=p-next;五、调试与测试(调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施)调试过程:设置断点,一步一步进行执行并输出执行结果。调试过程中曾出现过出现结果与预期不符、死循环

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

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

15、,时间正在消磨我的意志。没有了柳暗花明的一天,那么我怎么能说经受住了考验?然而,人的精神是不会败倒的。我鼓起勇气,到处问,到处查资料,黄天不负有心人,我的程序设计终于得以问世。课程设计到此算是基本结束,在程序设计中暴露出的我自身的问题却是非常明显!首先,基础掌握不牢固。许多基本语法尚没有熟练掌握,在设计过程中仍需请教其它同学,更重要研究课本,设计效率底。其次,经典算法掌握不牢。在编写程序的时候常常会停下来求助于书本,查看各种算法。再次,程序量过大的时候,头绪理不清。杂乱无章,无系统性,不便调试和阅览,自己也易于出错。比如说少加分号,大括号,忘了先定义后使用的原则。回顾这几天,我感慨颇多,的确,

16、自从拿到题目到完成整个编程,从理论到实践,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,文件,函数通过这次课程设计之后,我们把前面所学过的知

17、识又重新温故了一遍。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!最后,对给过我帮助的所有同学和指导老师再次表示忠心的感谢!七、源程序清单与执行结果源程序清单:#include stdio.h#include stdlib.h#include string.hint number = 0;struct shebeiint ID;char name100;char kind50;int over;char yesno50;int time;int price;typedef struct n

18、odestruct shebei data;struct node *next; /建立一个链表Node;int Same(Node *equip,int i) if(!equip-next) return -1; int flag=0; Node *p; p=equip-next; while(p) if(p-data.ID=i) flag=1; return flag; p=p-next; return flag;/*添加记录模块*/void Add(Node *equip) /添加记录Node *p,*r,*s;int id; /先用于输入ID,也用于判断是否跳出循环r=equip; /

19、s=equip-next; /使s为第一个有用的结点if(r!=NULL) while(r-next!=NULL) /使r为最后一个有用的结点r=r-next; /将指针置于最末尾while(1) printf(n请你输入设备ID号:); scanf(%d,&id); if(id=0)break; p=(Node *)malloc(sizeof(Node); /申请空间 p-next=NULL; p-data.ID=id; while(1) if(Same(equip,p-data.ID)=1) printf(n你输入了相同的设备ID号,请重新输入!:); scanf(%d,&id); p-d

20、ata.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); printf(n请输入设备是否报废:); scanf(%s,&p-data.yesno); printf(n请输入设备购买时间:); scanf(%d,&p-data.time); printf(n请输入设备价格:); scanf(%d,&p-data.price);

21、 printf(n提示:已经完成一条记录的添加。n);printf(n提示:输入0则返回主菜单!n);r-next=p;number+;/*修改记录模块*/void Modify(Node *equip) /修改Node *p;int find;if(!equip-next) printf(n提示:没有资料可以修改!n); return;printf(请输入要修改的设备ID号:);scanf(%d,&find); p=equip-next; while(p!=NULL) if(p-data.ID=find) /如果找到的话返回的是符合要求 break; p=p-next; if(p) /若找到

22、 /printf(请输入你想修改设备的IDn); printf(请输入新设备名称(原来是 %s ):,p-data.name); scanf(%s,p-data.name); printf(请输入新设备设备种类名称(原来是 %s ):,p-data.kind); scanf(%s,p-data.kind); printf(请输入新设备报废日期名称(原来是 %d ):,p-data.over); scanf(%d,&p-data.over); printf(请输入新设备是否报废(原来是 %s ):,p-data.yesno); scanf(%s,p-data.yesno); printf(请输入

23、新设备购买时间(原来是 %d ):,p-data.time); scanf(%d,&p-data.time); printf(请输入新设备价格(原来是 %d ):,p-data.price); scanf(%d,&p-data.price); printf(n提示:该项记录资料已经成功修改!n); else printf(n提示:你要修改的信息不存在!n);/*输出记录模块*/void Disp(Node *equip)/输出记录Node *p;p=equip-next;if(!p) printf(n提示:没有记录可以显示!n); return; printf(tttt显示结果n); prin

24、tf(设备编号 设备名称 设备种类 报废日期 是否报废 购买时间 价格n);while(p)printf(n%-11d%-11s%-11s%-11d%-11s%-11d%-5dn,p-data.ID,p-data.name,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price); p=p-next;/*查询设备模块*/void search(Node *equip)/数据查询函数Node *p; p=equip-next; int find;if(!p) printf(n提示:没有记录可以显示!n); / return;el

25、seprintf(请输入要查询设备设备的ID:);scanf(%d,&find);while(p)if(p-data.ID=find)printf(tttt显示结果n); printf(设备编号 设备名称 设备种类 报废日期 是否报废 购买时间 价格n);printf(n%-11d%-11s%-11s%-11d%-11s%-11d%-5dn,p-data.ID,p-data.name,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price); break;p=p-next;printf(-n没有您要查找的设备了.n);/*删除

26、记录模块*/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-next; while(p-data.ID!=num) if(p-next=NULL) break; pre=p; p=p-next; pre-next=p-next; free(p);/*简单帮助模块*/void help()printf(在主界面输入1-7的数字n再按回

27、车键可以进入到相应的功能界面进行操作n另外:系统保存的文件存放在D:设备管理系统,请勿随便删除!n);/*分类统计模块*/void Classify(Node *equip)/统计Node *p;int sel;int flag2=0;char find20;if(equip-next=NULL)printf(无可操作的设备信息!n);return;printf(提示:n=0退出n=1按设备类别统计n=2按设备名称统计n);scanf(%d,&sel);p=equip-next;if(sel=1)printf(n输入你要统计分类的类别:);scanf(%s,find);while(p!=NUL

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

29、:);scanf(%s,find);while(p)if(strcmp(p-data.name,find)=0) flag2+;printf(同名设备有:n设备编号 设备名称 设备种类 报废日期 是否报废 购买时间 价格n);printf(n%-11d%-11s%-11s%-11d%-11s%-11d%-5dn,p-data.ID,p-data.name,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price);p=p-next;printf(n按设备名称%s统计分类的结果有%d个n,find,flag2);else if(s

30、el=0)return;/*保存文件模块*/void Save(Node *equip) FILE * fp; Node *p; int i; if(equip-next=NULL)printf(无可操作的设备信息!n);return; fp=fopen(D:实验设备信息统计.txt,w+); if(fp=NULL) printf(文件不存在); exit(0); p=equip-next; for(i=0;idata.ID,p-data.name,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price); p=p-next;

31、 Else fprintf(fp,n%-11d%-11s%-11s%-11d%-11s%-11d%-5dn,p-data.ID,p-data.name,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price); p=p-next; getchar(); printf(n文件保存完毕,请在D盘查看,文件名“实验设备信息统计”,总数为:n%d,number); fclose(fp);/*文件输出模块*/void Read_From_File() FILE * fp; Node *p; p=(Node*)malloc(sizeof(

32、Node); p-next=NULL; fp=fopen(D:EquipManage.txt,r+); if(fp=NULL) printf(文件不存在); exit(0); for(p;!feof(fp);p=p-next) fscanf(fp,n%-11d%-11s%-11s%-11d%-11s%-11d%-5dn,p-data.ID,p-data.name,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price); /*主函数*/void main()Node *equip; equip = (Node*)malloc(

33、sizeof(Node); equip-next=NULL;int flag; printf(tttt实验室设备管理系统n); while(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,&flag); switch(flag) case 0: system(cls);printf(n提示:已经退出系统,ByeBye!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号