




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序设计基础课程设计课题名称 力学实验设备管理系统设计 专 业 班 级 姓 名 学 号 指导教师 陈世基 2012年 06 月 12 日目录第1章 设计目的 .1第2章 总体设计2第3章 详细设计5第4章 调试与测试15第5章 总结与体会19参考文献 . 20附:源程序清单和执行结果.21第1章 设计目的本次C语言课程设计是对本学期程序设计基础课程的实际应用,通过课程设计主要达到如下目的:1. 巩固和加深对C语言课程的基本知识的理解和掌握。 2. 掌握C语言编程和程序调试的基本技能。 3. 利用C语言进行基本的软件设计。 4. 掌握书写程序设计说明文档的能力。 5. 提高运用C语言解
2、决实际问题的能力。第2章 总体设计2.1力学实验设备管理系统的要求通过该系统实现对力学实验设备信息进行录入、修改、统计、查询、保存等操作的管理。实验设备信息包括:设备编号,设备种类,设备名称(如烧杯、酒精灯等),设备价格,设备购入日期,是否报废,报废日期等。主要功能:1)、能够完成对设备的录入和修改2)、对设备进行分类统计3)、设备的破损耗费和遗损处理4)、设备的查询5)、将设备信息保存到文件中2.2流程图根据设计要求,画出如下流程图:开 始 菜 单 1录入2显示3修改4删除5查询6.退出a.名称b.编号结 束2.3设置的主要函数void userinterface()/*菜单函数*/void
3、 showall()/*显示*/void add()/*增加成员*/void delet()/*删除*/void find()/*查找*/void findchoice(int a) /*选择查找方式函数*/void modify()/*修改信息*/void save()/*把信息保存到磁盘*/void esc()/*退出*/void choices()/*为下一步操作做选择*/void load()/*读数据*/第2章 详细设计3.1函数以及调用关系void userinterface()/*菜单函数*/开始添加记录查找记录显示记录删除记录修改记录结束Menu_select退出保存 1 2
4、3 4 5 6 Break Break Break Break Break break void showall();/*显示函数*/开始调用save( )head=NULL = =N NNNNNNNNNULL NULL NULLhhhhhead hhhhhead=NULL显示信息 真 假 真退出结束void add()/*增加设备函数*/ 开始 输入编号Record=0 假 真输入数据( 名称、种类、价格、购买日期、报废日期、是否报废)继续添加结束 void delet()/*删除函数*/ 开始 输入要删除学生学号 输入numNum=!0 真 假删除成功Choices()结 束void fi
5、nd()/*查找函数*开始开始按种类查找按编号查找 判断显示要查找内容没有找到退 出 void find() 真 假 void modify()/*修改信息函数*/ 开始 输入编号Record=0 假 真输入数据( 新的名称、种类、价格、购买日期、报废日期、是否报废)结束void save();/*把信息保存到磁盘*/退 出关闭文件开始打开文件数据写入文件void load();/*读数据*/开始关闭文件读出数据打开文件退 出3.2结构的应用Ifelse结构if(strcmp(passwords,b)!=0) printf("r口令错误,按任意键继续"); else bre
6、ak;switch结构switch(choice) case 1:add();break; case 2:system("cls");find();break; case 3:system("cls");showall();break; case 4:system("cls");delet();break; case 5:system("cls");modify();break;case 0:system("cls");esc();while结构while(stu->record!=0)
7、head=insert(head,stu);printf("nntt*添加成功*!n");stu=(struct addbook*)malloc(LEN);printf("nnttt当输入的设备编号为0时,停止添加!");printf("ntt请输入编号:");scanf("%d",&stu->record);getchar();/*用来接受scanf里输入的回车符号*/printf("ntt请输入名称:");gets(stu->name);printf("ntt请
8、输入种类:");gets(stu->kind);printf("ntt请输入价格:");gets(stu->price);printf("ntt请输入购买日期(如20100101):");scanf("%ld",&stu->purtime); getchar();printf("ntt请输入报废日期(如20100101):");scanf("%ld",&stu->scrtime); getchar(); printf("ntt请输入是否
9、报废(S或F):");gets(stu->scrap);stu->next = NULL;dowhile结构doprintf("%-8d%-8s%-8s%-8s%ld %ldtt%-8sn",s->record,s->name,s->kind,s->price,s->purtime,s->scrtime,s->scrap); s = s->next; while(s!=NULL);LP:choices();for结构for(j=0;j<strlen(b);j+) passwordsj=getch()
10、; printf("*"); 第4章 调试与测试4.1调试执行程序时,显示如下信息:输入一组数据后,显示菜单:选择不同的选项,执行相应的功能。选择1,添加设备信息。选择2查找设备信息,可按三种方式查找。3.1.5选择3,可显示信息。选择4,删除设备信息。选择5,修改设备信息。选择0,保存并退出。4.2测试及其解决问题在测试过程中,关于购买日期和报废日期,输入正常,显示则成了乱码,经过仔细检查发现在定义变量的出现了问题,及时改正。另外由于疏忽,没有将密码函数链接到主函数中,使得密码功能没有体现,及时调整。显示内容与表头进行调整对齐,由于显示函数和查找函数都有显示功能,需要同时
11、调整。第5章 总结与体会这一次课程设计可谓是让我焦头烂额,手足无措啊。因为我们在大一的时候并没有学过C语言这一门课程,这学期才开始接触这门课程,让我们设计一个无懈可击的程序简直比登天还难。刚开始感觉确实有点力不从心,但是经过几天的学习、摸索,我的程序也终于初具雏形了,我别提有多高兴。虽然在许多的功能方面有所欠缺,但是我觉得我是在进步的。经过几天的上机实践学习,给我的不只是疲惫更多的是收获。课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此
12、作为二十一世纪的大学生来说掌握计算机开发技术是十分重要的。在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。老天不会让我太过顺利,他在这最后的时刻设置的障碍,是要考验我的能力,他要置我于死地?在这个问题的解决上,我打了退堂鼓,我不能忍受长时间的无功而反,时间正在消磨我的意志。没有了柳暗花明的一天,那么我怎么能说经受住了考验?谢谢老师的那句话,她说:人
13、力有所不能及,然而,人的精神是不会败倒的。我鼓起勇气,到处问,到处查资料,黄天不负有心人,我的程序设计终于得以问世。 课程设计到此算是基本结束,在程序设计中暴露出的我自身的问题却是非常明显! 首先,基础掌握不牢固。许多基本语法尚没有熟练掌握,在设计过程中仍需请教其它同学,更重要研究课本,设计效率底。 其次,经典算法掌握不牢。在编写程序的时候常常会停下来求助于书本,查看各种算法。再次,程序量过大的时候,头绪理不清。杂乱无章,无系统性,不便调试和阅览,自己也易于出错。比如说少加分号,大括号,忘了先定义后使用的原则。 回顾这一周,我感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,可以学到很
14、多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,函数,算法通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。 在程序已经初步写成的时候,心情
15、很激动也很紧张,在没有进行测试之前心还是放不下来。刚进行测试,检查没有错误,可执行起来却出现了很大的问题。首先是程序不具有存储功能,显示乱码,再就是密码功能没有实现。经过一遍又一遍仔细检查终于意义解决。当程序完全运行成功的时候,那种喜悦感死无法用言语来形容的。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在陈老师的辛勤指导下,终于游逆而解。同时,在陈老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和指导老师再次表示忠心的感谢!参考文献【1】谭浩强,张基温。C语言程序设计教程。第三版。北京:高等教育出版社,2006【2】谭浩强,张基温。C语言习题集与上
16、机指导。第三版。北京:高等教育出版社,2006【3】谭浩强。C程序设计(第三版)。北京:清华大学,2005【4】谭浩强。C程序设计(第二版)。北京:清华大学,1999附:源程序清单和执行结果#include<stdio.h>#include<string.h>#include<stdlib.h>#include<process.h>#include<malloc.h>#include<conio.h>#define LEN sizeof(struct addbook)struct addbookint record;/*编
17、号*/char name15;/*名称*/char kind5;/*种类*/char price8;/*价格*/ unsigned long purtime;/*购买日期*/unsigned long scrtime;/*报废日期*/ char scrap6; /*是否报废*/struct addbook *next;/*指向结构体数据类型的指针*/;FILE *fp;struct addbook *p,*head=NULL,*s,*t,*p1,*p2;void userinterface();/*菜单函数*/void showall();/*显示*/void add();/*增加设备*/vo
18、id delet();/*删除*/void find();/*查找*/void findchoice(int a); /*选择查找方式函数*/void modify();/*修改信息*/void save();/*把信息保存到磁盘*/void esc();/*退出*/void choices();/*为下一步操作做选择*/void load();/*读数据*/struct addbook *del(struct addbook *head,int num);/*链表结点的删除*/struct addbook *insert(struct addbook*head,struct addbook
19、*stud);/*链表中结点的插入,stud为要插入的结点的指针*/void starwindows() system("color 1f"); static char passwords80,b="123" int i=0,j; while(1) printf("请输入密码nn"); for(j=0;j<strlen(b);j+) passwordsj=getch(); printf("*"); if(strcmp(passwords,b)!=0) printf("r口令错误,按任意键继续&quo
20、t;); else break; getch(); i+; if(i=3)exit(0); printf("ok");getch(); void main() int n;if(fp = fopen("d:C语言程序设计01.txt","r+")=NULL) printf("nnttt 文件不存在!n"); if(fp = fopen("ghps.txt","wb")=NULL) printf("文件打开错误!n"); exit(0); if(fgetc(
21、fp)=-1) printf("tt*欢迎使用力学实验设备管理系统*n");printf("ntt这里没有信息,现在您必须添加信息.n");p=(struct addbook*)malloc(LEN);printf("ntt请输入编号:");scanf("%d",&p->record);getchar();/*用来接受scaf里输入的回车符号*/printf("ntt请输入名称:");gets(p->name);printf("ntt请输入种类:");ge
22、ts(p->kind);printf("ntt请输入价格:");gets(p->price);printf("ntt请输入购买日期(如20100101):");scanf("%ld",&p->purtime); getchar();printf("ntt请输入报废日期(如20100101):");scanf("%ld",&p->scrtime); getchar(); printf("ntt请输入是否报废(S或F):");gets(p-
23、>scrap);p->next = NULL;head = p;fwrite(p,LEN,1,fp);/*将信息写入磁盘*/fclose(fp);printf("nttt添加成功!n");printf("nntt!要进行别的操作,请重新打开程序!n");exit(0);rewind(fp); /* 重建文件指针 */n=0;p1=p2 = (struct addbook*)malloc(LEN);fread(p1,LEN,1,fp);/*读出文件中的信息*/head = NULL; while(!feof(fp)n=n+1;if(n=1) h
24、ead = p1;else p2->next = p1;p2=p1; p1 = (struct addbook*)malloc(LEN); fread(p1,LEN,1,fp);p2->next=NULL; fclose(fp);userinterface();save();void userinterface() int choice; printf("ntt *n"); printf("ttt 欢迎使用力学实验设备管理系统" ); printf("ntt *n"); printf("nnt *请选择你的操作*
25、n"); printf("ttt +-+"); printf("tttttt | 1 增加设备信息 |n"); printf("ttt | 2 查找设备信息 |n"); printf("ttt | 3 显示所有信息 |n"); printf("ttt | 4 删除设备信息 |n"); printf("ttt | 5 修改设备信息 |n"); printf("ttt | 0 退出和保存 |n"); printf("ttt +-+n&quo
26、t;); printf("nnttttttt制作:蒋美幸nnn"); Loop1:printf("请输入您的选择:(0-5):"); scanf("%d",&choice);getchar();if(choice>=0&&choice<6) switch(choice) case 1:add();break; case 2:system("cls");find();break; case 3:system("cls");showall();break; cas
27、e 4:system("cls"); void starwindows()delet();break; case 5:system("cls"); void starwindows()modify();break;case 0:system("cls");esc(); else printf("输入错误,请重新选择!n");goto Loop1; void add() struct addbook *stu; stu=(struct addbook*)malloc(LEN);printf("nnttt当输
28、入的设备编号为0时,停止添加!");printf("ntt请输入编号:");scanf("%d",&stu->record); getchar();/*用来接受scanf里输入的回车符号*/printf("ntt请输入名称:");gets(stu->name);printf("ntt请输入种类:");gets(stu->kind);printf("ntt请输入价格:");gets(stu->price);printf("ntt请输入购买日期(如
29、20100101):"); scanf("%ld",&stu->purtime);getchar();printf("ntt请输入报废日期(如20100101):");scanf("%ld",&stu->scrtime); getchar(); printf("ntt请输入是否报废(S或F):");gets(stu->scrap);stu->next = NULL;while(stu->record!=0) head=insert(head,stu);prin
30、tf("nntt*添加成功*!n");stu=(struct addbook*)malloc(LEN);printf("nnttt当输入的设备编号为0时,停止添加!");printf("ntt请输入编号:");scanf("%d",&stu->record);getchar();/*用来接受scanf里输入的回车符号*/printf("ntt请输入名称:");gets(stu->name);printf("ntt请输入种类:");gets(stu->
31、kind);printf("ntt请输入价格:");gets(stu->price);printf("ntt请输入购买日期(如20100101):");scanf("%ld",&stu->purtime); getchar();printf("ntt请输入报废日期(如20100101):");scanf("%ld",&stu->scrtime); getchar(); printf("ntt请输入是否报废(S或F):");gets(stu-&
32、gt;scrap);stu->next = NULL;printf("nnttt添加结束!n");choices();void find() int i;printf("ntt请选择查找方式:n");printf("tt1.按编号查找。n");printf("tt2.按名称查找。n");printf("tt3.按种类查找。n");printf("tt4.返回菜单。n");printf("tt0.退出。n");printf("nnt*请输入您
33、的选择*n");scanf("%d",&i);getchar();if(i>=0&&i<5)switch(i)case 1:case 2:case 3:findchoice(i);break;case 4:userinterface();break;case 0:esc();break;else printf("nnttt选择错误!n");choices();void showall() s = head;if(head=NULL)printf("ntt!这里没有信息!n");goto L
34、P;printf("nnn");printf("编号t名称t种类t价格t购买日期t报废日期t是否报废");printf("nn"); doprintf("%-8d%-8s%-8s%-8s%ld %ldtt%-8sn",s->record,s->name,s->kind,s->price,s->purtime,s->scrtime,s->scrap); s = s->next; while(s!=NULL);LP:choices();void delet() /* 删除
35、函数 */int num;printf("nn请输入要删除的设备编号。当输入编号为0时停止删除操作。n");scanf("%d",&num);getchar();while(num!=0)head=del(head,num);printf("nn请输入要删除的设备编号。当输入编号为0时停止删除操作。n");scanf("%d",&num);getchar();printf("nntt*删除结束*n");choices();void modify() /* 修改函数 */int n
36、um;printf("请输入要修改的设备编号n");scanf("%d",&num);getchar();p=head;doif(p->record=num ) if(p->next=NULL) printf("找不到该编号的设备,请确认无误以后再重新输入。n"); else printf("ntt请输入新的名称:");gets(p->name);printf("ntt请输入新的种类:");gets(p->kind);printf("ntt请输入新的价格
37、:");gets(p->price);printf("ntt请输入新的购买日期(如20100101):");scanf("%ld",&p->purtime);getchar();printf("ntt请输入新的报废日期(如20100101):");scanf("%ld",&p->scrtime);getchar(); printf("ntt请输入是否报废(S或F):");gets(p->scrap);printf("ntt修改成功!n&
38、quot;);choices();else p=p->next;while(p!=NULL);printf("tt!没有这个编号的信息,请核对后再输入!nn");choices();void esc() save();printf("nnnttt 谢谢使用本力学实验设备管理系统!n");exit(0);struct addbook *del(struct addbook *head,int num)/*链表结点删除*/struct addbook *h1,*h2;if(head=NULL) printf("链表为空链表。n");
39、goto Loop;h1=head;while(num!=h1->record&&h1->next!=NULL)/*p1指向的不是要删除的结点,并且后面还有结点。*/h2=h1;h1=h1->next;/*p1后移一个结点*/if(num=h1->record)/*找到了*/if(h1=head) printf("nnntt这是遮里最后一个信息,不能删除!nnt如果你真的要删除此信息,请添加其他信息以后再删除.nn");goto Loop;/*这是p1是首结点的情况*/else h2->next=h1->next;prin
40、tf("nntt*删除成功*!n");/*否则将下一结点的地址赋给前一结点地址*/else printf("nntt找不到该结点。n");Loop:return(head);struct addbook *insert(struct addbook*head,struct addbook *stud)/*结点插入,插入时是按编号大小插入*/struct addbook *g0,*g1,*g2;g1=head;g0=stud;if(head=NULL)/*原来的链表是空表*/head=g0;g0->next=NULL;/*使p0指向的结点作为头结点*
41、/elsewhile(g0->record>g1->record&&g1->next!=NULL)g2=g1;g1=g1->next;/*p1后移一个结点*/if(g0->record=g1->record)printf("nttt编号重复!请核对后再输入!nn");choices();else;if(g0->record<g1->record)if(head=g1) head=g0;/*插到原来第一个结点之前*/else g2->next=g0;/*插到p2指向的结点之后*/g0->next=g1;elseg1->next=g0;g0->next=NULL;/*插到最后的结点后*/return(head);void save()/*保存文件*/fp=fopen("ghps.txt","w"); s = head; do fwrite(s,LEN,1,fp); s = s->next; while(s!=NULL);fclose(fp);void findchoice(int a)int num,j=0,i=0;char findname120;char findn
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论