汽车零部件质检管理程序设计课程论文.doc

上传人:scccc 文档编号:11181758 上传时间:2021-07-10 格式:DOC 页数:33 大小:558.97KB
返回 下载 相关 举报
汽车零部件质检管理程序设计课程论文.doc_第1页
第1页 / 共33页
汽车零部件质检管理程序设计课程论文.doc_第2页
第2页 / 共33页
汽车零部件质检管理程序设计课程论文.doc_第3页
第3页 / 共33页
汽车零部件质检管理程序设计课程论文.doc_第4页
第4页 / 共33页
汽车零部件质检管理程序设计课程论文.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《汽车零部件质检管理程序设计课程论文.doc》由会员分享,可在线阅读,更多相关《汽车零部件质检管理程序设计课程论文.doc(33页珍藏版)》请在三一文库上搜索。

1、目录1、 课程设计题目与要求.12、 系统设计.23、 程序测试与运行结果.84、 课程设计总结.145、 程序源代码.151、 课程设计与题目1、 题目描述: 已知在汽车零部件生产过程中,需要对生产的零部件进行质量检测,保证生产质量,以便对出现生产质量问题的责任人进行考核,设计一个汽车零部件质检管理程序,该程序应该具有完成如下功能: (1)能从键盘输入质检信息。 (2)指定质检编号,显示质检信息。 (3)指定生产者,显示质检信息。 (4)指定质检编号,修改质检信息。 (5)指定质检编号,删除质检信息。 2、 题目要求: (1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。 (2

2、)质检信息包括:质检编号、零部件名称、生产者、生产部门、质检结果(合格/不合格)、质量问题(设计缺陷/装配质量/加工质量)、质检员、质检日期。 (3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。3、输入要求: (1)应用程序运行后在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。程序根据用户输入的信息完成相应的处理,实现要求的功能。 (2)能对输入的数据进行简单的校验,例如,质检日期必须是一个合法的日期格式,质检编号是唯一的(一个质检编号对应一次质检的质检信息)。4

3、、输出要求: (1)应用程序运行后,要在屏幕上显示一个菜单。 (2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式以及结束方式等。 (3)在程序完成处理后,要清楚地给出程序的处理结果。例如,在给定质检编号删除质检信息时,如果该质检信息不存在,要提示没能删除,如果删除成功要提示删除成功。5、实现要求 (1)在程序中使用链表存储质检信息。(2)采用模块化程序设计的方法,将程序中的各项功能用函数实现。2、 系统设计1、分析题目 根据题目要求,质检信息可以从文本文件中存取,所以本程序应该提供读写文件,显示、查询、修改记录,保存文件等操作,此外,还应该提供键盘式选择菜单实现功能。

4、2、总体设计主函数界面 根据需求分析,可以把这个系统的设计分为添加、修改、查询、显示、删除五大模块,其中查询模块可以分为两个子模块,子模块下面还有子函数;系统功能模块图如下所示:删除质检信息修改质检信息查询质检信息添加质检信息显示质检信息显示质检信息按生产者查询按质检编号查询3、 模块设计 (1)数据结构设计根据系统要求,系统中需要保存的数据信息,其结构如下:数据项名称数据项系统表示数据类型数据长度质检编号qid字符串15零件名称qname字符串15生产者producer字符串15生产部门pd字符串15质检结果qresult字符串15质检问题qproblem字符串15质检员qpersons字符

5、串15质检日期time字符串12(2)、结构体定义如下:struct information char qid15; char qname15; char producer15; char pd15; char qresult15; char qproblem15; char qpersons15; char time12; struct information *next;(3)、函数声明void createRec(); /*新建质检信息*/void loadRec(); /*从磁盘文件导入质检信息到内存*/void searchRecqid(); /*查询质检信息(根据质检编号)*/vo

6、id searchRecpro(); /*查询质检信息(根据生产者)*/void modifyRec(); /*修改质检信息*/void deleteRec(); /*删除质检信息*/void listRec(); /*显示所有质检信息*/void writeInfo(); /*保存质检信息*/void exit0(); /*退出*/int menu_select(); *主菜单*/int fqid(char a); /判断质检编号是否已被输入/int check(char date) /判断日期是否合法/(4)、定义两个全局变量:/*链表操作所用结构体指针*/struct student *

7、head=NULL,*p1,*p2,*p3,p0;/*定义结构体指针head 为头指针p1 为输入数据缓存空间指针p2 为尾指针 p0为调用链表循环时所用指针*/*学生记录保存标志全局变量*/Int writeinfo_flag=0;显示主菜单(5)主函数流程图接受用户选项N是否合法YNY是否为0调用对应函数退出系统主菜单(6)添加质检信息函数流程图接受用户信息N是否合法Y根据提示输入质检信息保存并返回主菜单查询函数设计(根据质检编号)主菜单接受用户信息N是否合法Y输入查询质检编码显示质检信息保存并返回主菜单主菜单查询函数设计(根据生产者)接受用户信息是否合法N输入查询生产者Y输入查询生产者显

8、示质检信息保存并返回主菜单主菜单(6) 修改质检信息函数设计接受用户信息N是否合法Y输入修改质检编号输入修改后的质检信息保存并返回主菜单主菜单(7) 删除质检信息函数设计接受用户信息是否合法NY输入删除质检编号显示删除结果保存并返回主菜单三、程序测试与运行结果1、 主菜单界面若输入的数字不是07,则会提示输入错误2、添加信息界面若输入的质检编号已经存在。会提示编号以存在,重新输入。若输入的时间结构不正确,会提示输入不合法,请重新输入。3、修改界面4、查询信息界面(学号查询)若输入的质检编号是不存在的质检编号,在提示找不到该质检编号。(2)、按生产者查询6、删除信息界面若要删除的质检信息不存在,

9、则提示找不到信息。7、显示全部信息界面8、保存信息界面四、课程设计总结 本次C语言课程设计非常有意义,它锻炼了我们解决实际问题的能力。由于本人对编程感兴趣,在编程方面有一定基础,因此尝试着由自己完成整个系统,在设计的过程里也遇到了很多麻烦,但是通过查询参考书和网络,一个个疑难迎刃而解。通过这次实践课,不只是强化了我们C语言编程的能力,更重要的是使我们学会了一种工作方法,学会了如何规划、组织、设计、实施项目,从整体到局部,从局部又到整体。 在编程过程中,我尝试将质检结果和质检问题一起输入,但是总是出现错误,没有办法显示正确的结果,最后实在没办法,只能放弃,采取分开输入的方法。五、源代码/*所使用

10、的有头文件*/#include#include#include#include #include#define LEN sizeof(struct information)/*结构体定义*/struct informationchar qid15;char qname15;char producer15;char pd15;char qresult15;char qproblem15;char qpersons15;char time12;struct information *next;/*函数声明*/void createRec();/*新建质检信息*/void loadRec();/*从

11、磁盘文件导入质检信息到内存*/void searchRecqid();/*查询质检信息(根据质检编号)*/void searchRecpro(); /*查询质检信息(根据生产者)*/void modifyRec();/*修改质检信息*/void deleteRec();/*删除质检信息*/void listRec();/*显示所有质检信息*/void writeInfo();/*保存质检信息*/void exit0();/*退出*/int menu_select();/*主菜单*/int fqid(char a); /判断质检编号是否已被输入/int check(char date) /判断日

12、期是否合法/int year,month,day,i,leap; /要求格式判断/for(i=0,year=0;i4;i+)year=year*10+(datei-0);for(i=5,month=0;i7;i+)month=month*10+(datei-0);for(i=8,day=0;i10;i+)day=day*10+(datei-0);if(month12)return 0;else /日期存在判断/leap=(year%4=0&year%100!=0|year%400=0);if(month=1|month=3|month=5|month=7|month=8|month=10|mo

13、nth=12)if(day31)return 0;elsereturn 1;if(month=4|month=6|month=9|month=11)if(day30)return 0;elsereturn 1;if(leap=1&month=2)if(day29)return 0;elsereturn 1;if(leap=0&month=2)if(day28)return 0;elsereturn 1;return 0;/*链表操作所用结构体指针*/struct information *head=NULL,*p1,*p2,*p3,*p0;/*定义结构体指针head 为头指针p1 为输入数据缓

14、存空间指针p2 为尾指针*/*质检记录保存标志全局变量*/intwriteinfo_flag=0;/*主函数*/int main() loadRec(); system(cls); for(;)switch(menu_select()case 1: system(cls); createRec();break;case 2: system(cls); searchRecqid();break;case 3: system(cls); searchRecpro();break;case 4: system(cls); modifyRec();break;case 5: system(cls);

15、deleteRec();break;case 6: system(cls); listRec();break;case 7: system(cls); writeInfo();break;case 0: system(cls); exit0();return 0;default :getchar();printf(n 选择错误,请正确输入你的选择(07),:);printf(n 按任意键返回.n);getchar();system(cls);/*清屏*/ return 0;/*主菜单*/int menu_select()int c,flag=1; char w10;printf(tt*菜单*n

16、);printf(ttt1.新建质检信息n);printf(ttt2.查询质检信息(质检编号)n);printf(ttt3.查询质检信息(生产者)n);printf(ttt4.修改质检信息n);printf(ttt5.删除质检信息n);printf(ttt6.显示所有信息n);printf(ttt7.保存质检信息n);printf(ttt0.退出(任何情况下按Ctrl+C 退出程序)n); printf(tt*n);printf(n 输入你的选择(07):);doscanf(%s, w);if(strlen(w) != 1)flag = 0;printf(n选择错误,请正确输入你的选择(07)

17、:);else if(strcmp(w,0) 0) flag = 0; printf(n选择错误,请正确输入你的选择(07):);else flag = 1;c = atoi(w);while(!flag);return c;/*从磁盘文件导入质检信息到内存*/void loadRec()FILE *fp;int n=0;if(fp=fopen(LY.txt,r)=NULL)/*打开文件*/printf(文件不存在或无法打开!n);system(pause);return ;head=p1=(struct information *)malloc(LEN);/*开辟一个新单元*/memset(

18、p1,0,LEN);p1-next =NULL;while(!feof(fp)n+;fscanf(fp,%s%s%s%s%s%s%s%sn, p1-qid,p1-qname,p1-producer,p1-pd, p1-qresult,p1-qproblem,p1-qpersons,p1-time);p2=(struct information *)malloc(LEN);p1-next =p2;p3=p1;p1=p2;p1-next =NULL;free(p2);p3-next=NULL;printf(n %d项信息输入完毕,按任意键返回.n,n);getch();system(cls);/*

19、清屏*/writeinfo_flag=0;/*设置保存记录标志*/if( fclose(fp) )/* 关闭文件 */ printf( Can not close the file!n ); exit(0); return ;/*新建质检信息*/void createRec()if(head!=0) p3=head;while( p3-next!=NULL)p3=p3-next;printf(n 质检信息数据库已存在,新建质检信息将接续在信息库的后面,按任意键继续.:n);getchar();system(cls);/*清屏*/p3-next=p1=(struct information *)

20、malloc(LEN);/*开辟一个新单元*/ elsehead=p1=(struct information *)malloc(LEN);/*开辟一个新单元*/ p1-next =NULL; printf(n请输入质检编号:);scanf(%s,p1-qid);while(fqid(p1-qid)=1)printf(n您输入的质检编号已存在,请重新输入:); /验证是否存在/scanf(%s,p1-qid);printf(n请输入零部件名称:);scanf(%s,p1-qname);printf(n请输入生产者:);scanf(%s,p1-producer);printf(n请输入生产部门:

21、);scanf(%s,p1-pd);printf(n请输入质检结果(合格/不合格):);scanf(%s,p1-qresult);printf(n请输入质检问题(无/设计缺陷/装配质量/加工质量):);scanf(%s,p1-qproblem);printf(n请输入质检员:);scanf(%s,p1-qpersons);printf(n请输入质检日期(形如2015-06-20):);scanf(%s,p1-time);while(p1-time4!=-)|(p1-time7!=-)|strlen(p1-time)!=10|check(p1-time)=0)/*判断开始统计的时间输入是否合法*

22、/ printf(入住时间输入不合法,请重新输入:); scanf(%s,p1-time); getchar();p2=(struct information *)malloc(LEN);/*开辟一个新单元*/p1-next =p2;p3=p1;p1=p2;p1-next =NULL;free(p2);p3-next=NULL;printf(n 信息输入完毕,按任意键返回.n);getch();system(cls);/*清屏*/writeinfo_flag=1;return;/*查询质检信息(根据质检编号)*/void searchRecqid()char qid10;p1=head; if

23、(p1=NULL) printf(nn质检信息数据库为空! n); printf(n 按任意键返回.n); getch(); system(cls);/*清屏*/ return ; printf(nn 请输入质检编号以便查证:); scanf(%s,qid); printf(n质检编号 零件名称 生产者 生产部门 质检结果 质检问题 质检员 质检日期n); while(p1!=NULL) if(strcmp(p1-qid,qid )=0) printf(%-12s%-12s%-12s%-12s%-12s%-12s%-12s%-12s, p1-qid,p1-qname,p1-producer,p

24、1-pd, p1-qresult,p1-qproblem,p1-qpersons,p1-time);break; else p1=p1-next ; if(p1=NULL) printf(nn找不到该质检信息!n); printf(n 按任意键返回.n); getch(); system(cls);/*查询质检信息(根据生产者)*/ void searchRecpro()int i=0;char producer10;p1=head; if(p1=NULL) printf(nn质检信息数据库为空! n); printf(n 按任意键返回.n); getch(); system(cls);/*清

25、屏*/ return ; printf(nn 请输入生产者以便查证:); scanf(%s,producer); printf(n质检编号 零件名称 生产者 生产部门 质检结果 质检问题 质检员 质检日期n); while(p1!=NULL) if(strcmp(p1-producer,producer )=0) printf(%-12s%-12s%-12s%-12s%-12s%-12s%-12s%-12sn, p1-qid,p1-qname,p1-producer,p1-pd, p1-qresult,p1-qproblem,p1-qpersons,p1-time);i+;p1=p1-next

26、;continue; else p1=p1-next ; if(p1=NULL) printf(nn%d项质检信息输入完毕!n,i); printf(n 按任意键返回.n); getch(); system(cls);/*修改指定质检编号的信息*/void modifyRec()char qid19;if(head=NULL)getchar();printf(n 产品信息数据库为空,不能修改,按任意键将返回:n);getchar();system(cls);/*清屏*/return;p1=head;printf(ntt请输入要修改记录的质检编号:);scanf(%s,qid); while(s

27、trcmp(qid,p1-qid )!=NULL&p1-next!=NULL)p1=p1-next ;if(strcmp(qid,p1-qid )=0)printf(n请输入修改后质检编号:);scanf(%s,p1-qid);while(fqid(p1-qid)=1)printf(n您输入的质检编号已存在,请重新输入:); /验证是否存在/scanf(%s,p1-qid);printf(n请输入零部件名称:);scanf(%s,p1-qname);printf(n请输入生产者:);scanf(%s,p1-producer);printf(n请输入生产部门:);scanf(%s,p1-pd);

28、printf(n请输入质检结果(合格/不合格):);scanf(%s,p1-qresult);printf(n请输入质检问题(无/设计缺陷/装配质量/加工质量):);scanf(%s,p1-qproblem);printf(n请输入质检员:);scanf(%s,p1-qpersons);printf(n请输入质检日期:);scanf(%s,p1-time);while(p1-time4!=-)|(p1-time7!=-)|strlen(p1-time)!=10|check(p1-time)=0)/*判断开始统计的时间输入是否合法*/ printf(质检时间输入不合法,请重新输入:); scan

29、f(%s,p1-time); printf(n1项信息修改完毕。);system(pause);else printf(nn找不到该质检号信息!);printf(按任意键将返回n);getch();system(cls);/*清屏*/writeinfo_flag=1;/*清除保存记录标志*/return;/*删除指定质检编号的记录*/void deleteRec()char qid19;if(head=NULL) getchar();printf(n 质检信息数据库为空,不能删除,按任意键将返回:n);system(cls);/*清屏*/return;p1=head;printf(n请输入要删

30、除的质检号:);scanf(%s,qid);while(strcmp(qid,p1-qid )!=0&p1-next!=NULL)p2=p1;p1=p1-next ;if(strcmp(qid,p1-qid )=0)if(head-next=NULL)free(head);head=NULL;else if(head=p1)head=p1-next;free(p1);elsep2-next=p1-next;free(p1);printf(n删除完毕;);else printf(nn找不到该质检号信息!);getchar();printf(按任意键返回:n);system(pause);syst

31、em(cls);/*清屏*/writeinfo_flag=1;/*清除保存记录标志*/return;/*显示所有信息*/void listRec()if(head=NULL) printf(n数据库中没有学生信息,按任意键返回。n);getch();system(cls);return;printf(tt全部质检信息如下:n);printf(n质检编号 零件名称 生产者 生产部门 质检结果 质检问题 质检员 质检日期n);p1=head;while(p1!=NULL)printf(n%-12s%-12s%-12s%-12s%-12s%-12s%-12s%-12sn, p1-qid,p1-qna

32、me,p1-producer,p1-pd, p1-qresult,p1-qproblem,p1-qpersons,p1-time);p1=p1-next;printf(n按任意键返回!.n);getch();system(cls);/*清屏*/*保存质检记录*/void writeInfo()FILE *fp;/*定义文件指针*/if(head=NULL) printf(n数据库中没有质检信息,按任意键返回。n); getchar(); system(cls); return ;if(writeinfo_flag=0) printf(n数据库中质检信息已保存过,按任意键返回。n);getcha

33、r();getchar();system(cls);return ;if(fp=fopen(LY.txt,w)=NULL)/*打开文件*/printf(n数据库中质检信息无法保存,按任意键返回。n);getch();system(cls);return ;p1=head;while(p1!=NULL)fprintf(fp,%st%st%st%st%st%st%st%sn, p1-qid,p1-qname,p1-producer,p1-pd, p1-qresult,p1-qproblem,p1-qpersons,p1-time);p1=p1-next;fclose(fp);printf(n数据库中质检信息保存完毕,按任意键返回。n);getchar();getchar();system(cls);writeinfo_flag=0;/*设置保存记录标志*/return ;/*退出*/void exit0()if(writeinfo_flag=1)/*修改过记录时,先保存,再退出*/writeInfo();p1=head;while( p1!=NULL)p2=p1-next;free(p1);p1=p2;int fqid(char a) /判断质检编号是否已被输入/int i=0;p0=head;while(p0-next!=NULL)if(strcmp(p

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1