《C语言课程设计-汽车零部件质检管理系统(共13页).doc》由会员分享,可在线阅读,更多相关《C语言课程设计-汽车零部件质检管理系统(共13页).doc(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYC语言程序设计实训报告实训题目: 汽车零部件质检管理系统 专 业: 班 级: 姓 名: 成 绩: 完成日期: 指导教师: 课设报告内容:一、-设计题目与要求二、-系统设计三、-程序测试与运行结果四、-实训总结五、-程序源代码一、课设题目与要求:汽车零部件质检管理程序题目描述已知在汽车零部件生产过程中,需要对生产的零部件进行质量检测,保证生产质量,以便对出现生产质量问题的责任人进行考核,设计一个汽车零部件质检管理程序,该程序应该具有完成如下功能:(1)能从键盘输入质检信息。(2)指定质检
2、编号,显示质检信息。(3)指定生产者,显示质检信息。(4)指定质检编号,修改质检信息。(5)指定质检编号,删除质检信息。 题目要求:(1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。(2) 质检信息包括:质检编号、零部件名称、生产者、生产部门、质检结果(合格/不合格)、质量问题(设计缺陷/装配质量/加工质量)、质检员、质检日期。(3) 为程序设计windows窗口,在该窗口上以按钮的形式为用户提供“菜单”,通过点击各个功能项对应的按钮完成操作。输入要求: (1)用户可以根据需求,选定相应的操作项目。进入每个操作后,通过窗口的文本框,从键盘输入相应的信息。程序根据用户输入的信息完
3、成相应的处理,实现要求的功能。 (2)能对输入的数据进行简单的校验,例如,质检日期必须是一个合法的日期格式,质检编号是唯一的(一个质检编号对应一次质检的质检信息)。输出要求: (1)应用程序运行后,要在屏幕上显示一个按钮形式的“菜单”。 (2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式以及结束方式等。(3)在程序完成处理后,要清楚地给出程序的处理结果。例如,在给定质检编号删除质检信息时,如果该质检信息不存在,要提示没能删除,如果删除成功要提示删除成功。实现要求: (1)在程序中使用链表存储质检信息。 (2)采用模块化程序设计的方法,将程序中的各项功能用函数实现。提示
4、: (1)使用结构体表示质检信息,一个结点保存一条质检信息。 扩展功能: (1)提供一些统计功能。例如统计生产者质检不合格的次数,统计各种质量问题出现次数。 (2)质检信息从文件读入。 (3)将质检信息保存到文件中。二、系统设计(1)系统功能模块划分读取文件输入质检信息通过质检编号显示质检信息通过生产者显示质检信息指定质检编号修改信息指定质检编号删除信息保存文件(2)主函数的流程分析与设计统计保存文件指定质检编号删除质检信息指定质检编号显示质检信息通过生产者显示质检信息通过质检编号显示质检信息输入质检信息读入文件菜单三、程序测试与运行结果void menu() /菜单 system(cls);
5、system(color f0);printf(ttt*n);printf(ttt* 菜单 *n);printf(ttt*n);printf(ttt* 1.读入文件 *n);printf(ttt* 2.输入质检信息 *n);printf(ttt* 3.通过质检编号显示质检信息 *n);printf(ttt* 4.通过生产者显示质检信息 *n);printf(ttt* 5.指定质检编号修改信息 *n);printf(ttt* 6.指定质检编号删除信息 *n);printf(ttt* 7.统计 *n);printf(ttt* 8.保存文件 *n);printf(ttt* 0.退出 *n);prin
6、tf(ttt*n);printf(ttt 请输入选项(07):);void readFile() / 读取文件FILE *fp;struct qualityTesting *sp,*newp,*sp2;fp = fopen(data.txt,r);if(fp = NULL) printf(文件打开失败!); exit(0);headp = (struct qualityTesting *) malloc(sizeof(struct qualityTesting);headp-next = NULL;sp =headp; while(!feof(fp) newp = (struct qualit
7、yTesting *) malloc(sizeof(struct qualityTesting);fscanf(fp,%d%s%s%s%s%s%s%s ,&(newp-quality_number),&(newp-part_name),&(newp-producer),&(newp-production),&(newp-result),&(newp-problem),&(newp-quality_person),&(newp-data);count+;newp-next = NULL;sp-next = newp;sp = sp-next; sp-next = NULL;headp1 = sp
8、;fclose(fp);printf(计数器:%dn,count); printf(文件录入成功!n);sp2=headp-next;while(sp2!=NULL)printf(%d %s %s %s %s %s %s %s n,sp2-quality_number,sp2-part_name,sp2-producer,sp2-production,sp2-result,sp2-problem,sp2-quality_person,sp2-data);sp2=sp2-next; system(pause);void input() /输入质检信息 struct qualityTesting
9、*sp,*newp;int cho=1;sp = headp1;while(cho != 0) newp = (struct qualityTesting *) malloc(sizeof(struct qualityTesting);printf(请输入质检信息n);printf(质检编号:);scanf(%d,&(newp-quality_number);printf(零件名称:);scanf(%s,&(newp-part_name);printf(生产者:);scanf(%s,&(newp-producer);printf(生产部门:);scanf(%s,&(newp-productio
10、n);printf(质检结果(合格/不合格):);scanf(%s,&(newp-result);printf(质检问题(设计缺陷/装配质量/加工质量):);scanf(%s,&(newp-problem);printf(质检员:);scanf(%s,&(newp-quality_person);printf(质检日期:);scanf(%s,&(newp-data);newp-next = NULL;sp-next = newp;sp=sp-next;count+;printf(继续输入请输入数字键(退出:0);scanf(%d,&cho);sp-next = NULL;void qualit
11、y_number_search() /通过质检编号显示质检信息 struct qualityTesting *sp;int number;sp = headp-next;printf(n请输入质检编号:);scanf(%d,&number);while(sp != NULL) if(sp-quality_number = number) printf(%d %s %s %s %s %s %s %s n,sp-quality_number,sp-part_name,sp-producer,sp-production,sp-result,sp-problem,sp-quality_person,s
12、p-data);break;sp = sp-next;system(pause);void producer_search() /通过生产者显示质检信息 struct qualityTesting *sp;char name10;sp = headp-next;printf(n请输入生产者:);scanf(%s,&name);while(sp != NULL) if(strcmp(sp-producer,name) = 0) printf(%d %s %s %s %s %s %s %s n,sp-quality_number,sp-part_name,sp-producer,sp-produc
13、tion,sp-result,sp-problem,sp-quality_person,sp-data);break;sp = sp-next;system(pause);void quality_number_change() /指定质检编号修改信息 struct qualityTesting *sp;int number;sp = headp-next;printf(n请输入质检编号:);scanf(%d,&number);while(sp != NULL) if(sp-quality_number = number)printf(请输入质检信息n); printf(质检编号:); sca
14、nf(%d,&(sp-quality_number); printf(零件名称:); scanf(%s,&(sp-part_name); printf(生产者:); scanf(%s,&(sp-producer); printf(生产部门:); scanf(%s,&(sp-production); printf(质检结果(合格/不合格):); scanf(%s,&(sp-result); printf(质检问题(设计缺陷/装配质量/加工质量):); scanf(%s,&(sp-problem); printf(质检员:); scanf(%s,&(sp-quality_person); prin
15、tf(质检日期:); scanf(%s,&(sp-data); break;sp = sp-next;printf(修改成功!);system(pause);void quality_number_delete() /指定质检编号删除信息 struct qualityTesting *sp,*fellowp;int number;sp = headp-next;fellowp = headp;printf(n请输入质检编号:);scanf(%d,&number);while(sp != NULL) if(sp-quality_number = number) fellowp-next = sp
16、-next;free(sp); flag=1;count-; break;fellowp = sp;sp = sp-next;if(flag = 1) printf(删除成功!);else printf(删除失败!);system(pause);void saveFile() /保存文件struct qualityTesting *sp,*fellowp;FILE *fp2;sp = headp-next;fellowp = headp;fp2 = fopen(data.txt,w);while(sp != NULL) fprintf(fp2,%d %s %s %s %s %s %s %s n
17、,sp-quality_number,sp-part_name,sp-producer,sp-production,sp-result,sp-problem,sp-quality_person,sp-data);fellowp = sp;sp = sp-next;free(fellowp);printf(保存成功!(链表清空完毕);system(pause);void add() /统计struct qualityTesting *sp;sp = headp-next;while(sp != NULL) if(strcmp(sp-result,不合格) = 0)a+;if(strcmp(sp-
18、problem,设计缺陷) = 0)b+;if(strcmp(sp-problem,装配质量) = 0)c+;if(strcmp(sp-problem,加工质量) = 0)d+;sp = sp-next;printf(不合格次数:%dn,a);printf(设计缺陷次数:%dn,b);printf(装配质量次数:%dn,c);printf(加工质量次数:%dn,d);system(pause);四、实训总结 通过本次实训,我发现我在c语言的学习上还存在很多的问题,而且对于一些基础知识的掌握还是不够熟练,本次实训的代码中很多地方都需要用到链表的知识,但是我发现我对链表的掌握很差,而且代码中的链表
19、方面的知识还是在同学的的帮助下完成的,所以,在本次实训过后我发现我对链表方面知识的掌握有了进一步的提高。 而且在本次实训中,我发现c语言的学习其实并不是原来想象的那么难,只要对一些基本的知识点掌握的比较熟练了之后,对于一些简单的程序都可以很好的独立完成。所以作为一个计算机专业的学生,在以后的学习和其他各类计算机语言中,我要加强对基础知识的掌握,平时勤加练习,争取今早的掌握。 同时在本次实训中,我也遇到了一些困难和问题,但同时我也学会了一些面对困难时所必须的态度,这都是本次实训所带给我的。最后,我想说,虽然我的c语言基础不是很好,但是,我相信,只要我肯努力,我的c语言成绩肯定会更进一步的。五、程
20、序源代码#include#include#include#includestruct qualityTesting /结构体:质检信息int quality_number; /质检编号char part_name20; /零件名称char producer30; /生产者char production30; /生产部门char result10; /质检结果(合格/不合格)char problem30; /质检问题(设计缺陷/装配质量/加工质量)char quality_person30; /质检员char data30; /质检日期struct qualityTesting *next;st
21、ruct qualityTesting *headp,*headp1; /头结点int count=0; /计数器int flag =0; /判断删除是否成功int a=0; /统计不合格数量int b=0,c=0,d=0; /统计各种质量问题出现次数void menu() /菜单 system(cls);system(color f0);printf(ttt*n);printf(ttt* 菜单 *n);printf(ttt*n);printf(ttt* 1.读入文件 *n);printf(ttt* 2.输入质检信息 *n);printf(ttt* 3.通过质检编号显示质检信息 *n);pri
22、ntf(ttt* 4.通过生产者显示质检信息 *n);printf(ttt* 5.指定质检编号修改信息 *n);printf(ttt* 6.指定质检编号删除信息 *n);printf(ttt* 7.统计 *n);printf(ttt* 8.保存文件 *n);printf(ttt* 0.退出 *n);printf(ttt*n);printf(ttt 请输入选项(07):);void readFile() / 读取文件FILE *fp;struct qualityTesting *sp,*newp,*sp2;fp = fopen(data.txt,r);if(fp = NULL) printf(文
23、件打开失败!); exit(0);headp = (struct qualityTesting *) malloc(sizeof(struct qualityTesting);headp-next = NULL;sp =headp; while(!feof(fp) newp = (struct qualityTesting *) malloc(sizeof(struct qualityTesting);fscanf(fp,%d%s%s%s%s%s%s%s ,&(newp-quality_number),&(newp-part_name),&(newp-producer),&(newp-prod
24、uction),&(newp-result),&(newp-problem),&(newp-quality_person),&(newp-data);count+;newp-next = NULL;sp-next = newp;sp = sp-next; sp-next = NULL;headp1 = sp;fclose(fp);printf(计数器:%dn,count); printf(文件录入成功!n);sp2=headp-next;while(sp2!=NULL)printf(%d %s %s %s %s %s %s %s n,sp2-quality_number,sp2-part_na
25、me,sp2-producer,sp2-production,sp2-result,sp2-problem,sp2-quality_person,sp2-data);sp2=sp2-next; system(pause);void input() /输入质检信息 struct qualityTesting *sp,*newp;int cho=1;sp = headp1;while(cho != 0) newp = (struct qualityTesting *) malloc(sizeof(struct qualityTesting);printf(请输入质检信息n);printf(质检编号
26、:);scanf(%d,&(newp-quality_number);printf(零件名称:);scanf(%s,&(newp-part_name);printf(生产者:);scanf(%s,&(newp-producer);printf(生产部门:);scanf(%s,&(newp-production);printf(质检结果(合格/不合格):);scanf(%s,&(newp-result);printf(质检问题(设计缺陷/装配质量/加工质量):);scanf(%s,&(newp-problem);printf(质检员:);scanf(%s,&(newp-quality_perso
27、n);printf(质检日期:);scanf(%s,&(newp-data);newp-next = NULL;sp-next = newp;sp=sp-next;count+;printf(继续输入请输入数字键(退出:0);scanf(%d,&cho);sp-next = NULL;void quality_number_search() /通过质检编号显示质检信息 struct qualityTesting *sp;int number;sp = headp-next;printf(n请输入质检编号:);scanf(%d,&number);while(sp != NULL) if(sp-q
28、uality_number = number) printf(%d %s %s %s %s %s %s %s n,sp-quality_number,sp-part_name,sp-producer,sp-production,sp-result,sp-problem,sp-quality_person,sp-data);break;sp = sp-next;system(pause);void producer_search() /通过生产者显示质检信息 struct qualityTesting *sp;char name10;sp = headp-next;printf(n请输入生产者:
29、);scanf(%s,&name);while(sp != NULL) if(strcmp(sp-producer,name) = 0) printf(%d %s %s %s %s %s %s %s n,sp-quality_number,sp-part_name,sp-producer,sp-production,sp-result,sp-problem,sp-quality_person,sp-data);break;sp = sp-next;system(pause);void quality_number_change() /指定质检编号修改信息 struct qualityTesti
30、ng *sp;int number;sp = headp-next;printf(n请输入质检编号:);scanf(%d,&number);while(sp != NULL) if(sp-quality_number = number)printf(请输入质检信息n); printf(质检编号:); scanf(%d,&(sp-quality_number); printf(零件名称:); scanf(%s,&(sp-part_name); printf(生产者:); scanf(%s,&(sp-producer); printf(生产部门:); scanf(%s,&(sp-productio
31、n); printf(质检结果(合格/不合格):); scanf(%s,&(sp-result); printf(质检问题(设计缺陷/装配质量/加工质量):); scanf(%s,&(sp-problem); printf(质检员:); scanf(%s,&(sp-quality_person); printf(质检日期:); scanf(%s,&(sp-data); break;sp = sp-next;printf(修改成功!);system(pause);void quality_number_delete() /指定质检编号删除信息 struct qualityTesting *sp,
32、*fellowp;int number;sp = headp-next;fellowp = headp;printf(n请输入质检编号:);scanf(%d,&number);while(sp != NULL) if(sp-quality_number = number) fellowp-next = sp-next;free(sp); flag=1;count-; break;fellowp = sp;sp = sp-next;if(flag = 1) printf(删除成功!);else printf(删除失败!);system(pause);void saveFile() /保存文件st
33、ruct qualityTesting *sp,*fellowp;FILE *fp2;sp = headp-next;fellowp = headp;fp2 = fopen(data.txt,w);while(sp != NULL) fprintf(fp2,%d %s %s %s %s %s %s %s n,sp-quality_number,sp-part_name,sp-producer,sp-production,sp-result,sp-problem,sp-quality_person,sp-data);fellowp = sp;sp = sp-next;free(fellowp);printf(保存成功!(链表清空完毕);system(pause);void add() /统计struct qualityTesting *sp;sp = headp-next;while(sp != NULL) if(strcmp(sp-result,不合格) = 0)a+;if(strcmp(sp-problem,设计缺陷) = 0)b+;if(strcmp(sp-problem,装配质量) = 0)c+;if(strcmp(sp-problem,加工质量) = 0)d+;sp = sp-next;printf(不合格次数:%dn,a);printf(设计缺陷次数:%dn,
限制150内