课设题目:汽车零部件质检管理程序_第1页
课设题目:汽车零部件质检管理程序_第2页
课设题目:汽车零部件质检管理程序_第3页
课设题目:汽车零部件质检管理程序_第4页
课设题目:汽车零部件质检管理程序_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课设题目:汽车零部件质检管理程序专 业:电子信息科学与技术车联网班 级:T1323-11姓 名:邢小双成 绩:完成日期: 指导老师:张吴波目 录1、课程设计题目及要求:22、系统设计:3系统流设计:3系统模块设计:3详细设计:4数据结构设计:4模块接口设计:5以下是几个主要模块的流程图:63、程序测试与运行结果:9 显示课设题目及作者信息:9显示欢送界面:9读入文件信息:10显示主菜单:10添加信息:11删除信息:12查询功能:14查找信息:28修改信息:30统计功能:37保存功能:38显示课设题目及要求:38退出程序:404、课程设计总结:415、程序源代码:411、课程设计题目及要求:汽车

2、零部件质检管理程序题目描述: 在汽车零部件生产过程中,需要对生产的零部件进行质量检测,保证生产质量,以便对出现生产质量问题的责任人进行考核,设计一个汽车零部件质检管理程序,该程序应该具有完成如下功能: (1)能从键盘输入质检信息。 (2)指定质检编号,显示质检信息。 (3)指定生产者,显示质检信息。 (4)指定质检编号,修改质检信息。 (5)指定质检编号,删除质检信息。题目要求: (1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。 (2) 质检信息包括:质检编号、零部件名称、生产者、生产部门、质检结果合格/不合格、质量问题(设计缺陷/装配质量/加工质量)、质检员、质检日期。 (

3、3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作工程。输入要求: (1)应用程序运行后在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作工程。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。程序根据用户输入的信息完成相应的处理,实现要求的功能。 (2)能对输入的数据进行简单的校验,例如,质检日期必须是一个合法的日期格式,质检编号是唯一的一个质检编号对应一次质检的质检信息。输出要求: (1)应用程序运行后,要在屏幕上显示一个菜单。 (2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式以及结束方式等。 (

4、3)在程序完成处理后,要清楚地给出程序的处理结果。例如,在给定质检编号删除质检信息时,如果该质检信息不存在,要提示没能删除,如果删除成功要提示删除成功。实现要求: (1)在程序中使用链表存储质检信息。 (2)采用模块化程序设计的方法,将程序中的各项功能用函数实现。提示: (1)使用结构体表示质检信息,一个结点保存一条质检信息。扩展功能: (1)提供一些统计功能。例如统计生产者质检不合格的次数,统计各种质量问题出现次数。 (2)质检信息从文件读入。 (3)将质检信息保存到文件中。显示作者信息2、系统设计:系统流设计:本系统的功能模块如图:显示欢送界面读入有相关信息的文件主菜单退出程序显示题目保存

5、质检信息统计汽车零部件数量修改质检信息查找是否需要修改的质检信息查询功能菜单浏览全部质检信息删除汽车零部件质检信息添加汽车零部件质检信息系统模块设计:1) 显示作者信息:构造函数void author(),实现课程设计题目及作者信息的显示。2) 显示欢送界面:构造函数void welcome(),实现“欢送使用本程序以及“welcome图案的显示。3) 读入文件:构造函数void readdata(),实现汽车零部件质检信息的读入。4) 显示主菜单:构建函数int mainmenu(),实现主菜单的显示。5) 添加质检信息:构建函数void insert(),实现质检信息的添加。6) 删除质检

6、信息:构建函数void del(),实现质检信息的删除。7) 浏览全部质检信息:构建函数void see(),实现全部质检的浏览。8) 查询功能菜单:构建函数void menu(),实现查询菜单的显示。9) 查找是否需要修改的质检信息:构建函数void change(),实现查找信息并显示信息。10) 修改质检信息:构建函数void modify(),实现通过输入编号修改相应的质检信息。11) 统计汽车零部件数量:构建函数void pass_unpass_num(),实现统计合格与不合格零部件的数量以及总数量。12) 保存质检信息:构建函数void writedata(),实现对质检信息的保存

7、。13) 显示题目:构建函数void show_work(),实现课设题目及要求内容的显示。14) 退出程序:构建函数void exit0(),实现程序的退出并保存。详细设计:数据结构设计:根据系统要求,系统中需要保存的数据信息,其结构如下:数据项名称数据项系统表示数据类型数据长度零部件编号num20字符数组20零部件名称name20字符数组20零部件生产者producter20字符数组20零部件生产部门factory20字符数组20零部件质检结果result20字符数组20零部件质检问题problem20字符数组20零部件质检员inspector20字符数组20为了实现无限制的增加零部件质检

8、信息,采用链表结构保存零部件质检信息,在增加零部件质检信息时,创立一个零部件质检信息的节点,将其插入到链表中,示意图如下:汽车零部件信息1汽车零部件信息3汽车零部件信息2为此,先声明一个类型为struct product的结构体以及struct date inspect_time的时间结构体,struct product其成员为汽车零部件的各项质检信息,通过对指针、链表、文件等数据结构的操作,实现对汽车零部件质检信息的导入、添加、删除、修改、查询、存盘、浏览等一系列操作。结构体定义如下:struct productchar num20;char name20;char producter20;

9、char factory20;char result20;char problem20;char inspector20;struct date inspect_time;struct product*next;2模块接口设计:1函数声明如下:void author();/*显示作者信息*/void welcome();/*显示欢送界面*/int mainmenu();/*显示主菜单*/void readdata();/*读入汽车零部件质检信息数据*/void insert();/*插入汽车零部件质检信息*/void del();/*删除汽车零部件质检信息*/void query();/*显示

10、查询界面*/int menu();/*显示查询菜单*/void query_by_name();/*通过名称查询*/void query_by_num();/*通过编号查询*/void query_by_producter();/*通过生产者查询*/void query_by_factory();/*通过生产部门查询*/void query_by_result();/*通过质检结果查询*/void query_by_inspector();/*通过质检员查询*/void query_by_inspecttime();/*通过质检日期查询*/void change();/*查找需要修改信息的汽车

11、零部件*/void modify();/*修改汽车零部件质检信息*/void pass_unpass_num();/*统计汽车零部件合格和不合格数量*/void see();/*实现全部汽车零部件质检信息浏览*/void timed();/*获取系统时间*/void writedata();/*磁盘保存汽车零部件质检信息记录*/void show_work();/*显示题目*/2定义五个全局变量:Int flag=0 struct product*head=NULL,*p1,*p2,*p33主要模块的实现:系统以int main()为入口,调用void author()函数,显示课程设计和题目

12、要求及作者信息。调用void welcome()函数显示欢送界面。调用void readdata()函数读入文件信息。然后通过调用int mainmenu()函数,进入主菜单界面。系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。2以下是几个主要模块的流程图:1主菜单函数:打印主菜单接收用户选项否是否合法是是否为0是 否退出系统调用对应选项函数2添加汽车零部件质检信息:打印主菜单接收用户选项否是否合法是是否为0是否调用对应选项函数退出系统3信息修改函数:需要修改的零部件编号否是否存在是修改界面回到主菜单实现修改选择修改内容4统计合格与不合格零部件的数量以及总数量:打印主菜单

13、接收用户选项否是否合法是统计合格与不合格零部件的数量以及总数量3、程序测试与运行结果:3.1显示课设题目及作者信息:3.2显示欢送界面:3.3读入文件信息:3.4显示主菜单:3.5添加信息:主菜单中选择1,运行结果:源文件显示:输入3,并输入信息,运行结果:返回并查看信息:新添加的信息被加到了文件中的第三行。3.6删除信息:返回主菜单,选择2,运行结果:输入刚刚添加的信息中的编号123456,运行结果:回到主菜单项选择择3,查看信息,运行结果:3.7查询功能:返回主菜单,选择4进入查询菜单,运行结果:选择1,输入编号,如果输入的编号不合法,运行结果:返回查询菜单再次进行按编号查询功能,输入文件

14、中存在的编号,运行结果:返回选择菜单,选择2,输入不合法的名称,运行结果:输入文件中存在的名称,运行结果:返回选择菜单,选择3,输入不合法的生产者名称,运行结果:返回选择菜单,再次按生产者名称查找信息,输入文件中存在的生产者名称,运行结果:返回查询菜单,选择4,输入不合法的生产部门,运行结果:返回查询菜单,再次按生产部门查询,输入文件中存在的生产部门,运行结果:返回查询菜单,选择5,输入不合法的质检结果,运行结果:返回查询菜单,再次按质检结果查询,输入文件中存在的结果,运行结果:返回查询菜单,选择6,输入不合法的质检员,运行结果:返回选择菜单,再次按质检员查询,输入文件中存在的质检员,运行结果

15、:返回查询菜单,选择7,输入不合法的质检时间,运行结果:返回查询菜单,再次按质检时间查询,输入文件中存在的时间,运行结果:返回查询菜单,选择0,退出到主菜单:3.8查找信息:该功能为查找信息使用户查看该信息是否正确,并无修改功能,修改功能在后文介绍在主菜单中选择5,输入不合法的编号,运行结果:返回主菜单,再次选择5,输入文件中存在的编号,运行结果:3.9修改信息:返回主菜单,选择6,输入不合法的编号,运行结果:返回主菜单,选择6,输入文件中存在的编号,运行结果:返回主菜单,查看全部质检信息:统计功能:返回主菜单,选择7,运行结果:保存功能:返回主菜单,选择8,运行结果:显示课设题目及要求:返回

16、主菜单,选择9,运行结果:课设题目及要求源文件:退出程序:返回主菜单,选择0,运行结果:4、课程设计总结:通过这次C语言课程设计,我对C语言有了更进一步的了解,增强了编程能力,稳固了C语言知识。之前的上机实验是一个知识点一个知识点进行的,而这次是运用了自己所学的所有C语言知识,把知识都串起来,从而实现课设题目要求的功能。编程过程中有很多知识都不懂,但是通过查阅资料以及请教同学最终弄懂了里面一些生疏的地方。对于编程过程中出现的错误,通过反复的调试和修改最终也能按要求运行。但对于一些错误,自己反复修改后依然无法运行,我也认识到了自己编程能力的薄弱,通过请教同学以及查阅资料后才得以解决。编程过程中的

17、错误使我从资料中从同学那里学到了许多,自己的编程能力之所以有提高也正源于此,对于指针和链表知识的缺乏,我会在后期的学习过程中逐步去完善,争取把知识搞透彻。5、程序源代码: /*所有头文件*/#include <stdio.h>#include<string.h>#include <malloc.h>#include <stdlib.h>#include<conio.h>#include <time.h>#define LEN sizeof(struct product)/*定义日期结构体*/struct dateint y

18、ear;int month;int day;/*定义汽车零部件质检信息结构体*/struct productchar num20;char name20;char producter20;char factory20;char result20;char problem20;char inspector20;struct date inspect_time;struct product*next;void author();/*显示作者信息*/void welcome();/*显示欢送界面*/int mainmenu();/*显示主菜单*/void readdata();/*读入汽车零部件质检

19、信息数据*/void insert();/*插入汽车零部件质检信息*/void del();/*删除汽车零部件质检信息*/void query();/*显示查询界面*/int menu();/*显示查询菜单*/void query_by_name();/*通过名称查询*/void query_by_num();/*通过编号查询*/void query_by_producter();/*通过生产者查询*/void query_by_factory();/*通过生产部门查询*/void query_by_result();/*通过质检结果查询*/void query_by_inspector();

20、/*通过质检员查询*/void query_by_inspecttime();/*通过质检日期查询*/void change();/*查找需要修改信息的汽车零部件*/void modify();/*修改汽车零部件质检信息*/void pass_unpass_num();/*统计汽车零部件合格和不合格数量*/void see();/*实现全部汽车零部件质检信息浏览*/void writedata();/*磁盘保存汽车零部件质检信息记录*/void show_work();/*显示题目*/;/*退出*/*链表操作所用结构体指针*/struct product*head=NULL,*p1,*p2,*

21、p3;/*定义结构体指针head为头指针,p1为输入数据缓存空间指针,p2为尾指针*/*汽车零部件质检信息记录保存标志全局变量*/int flag=0;/*主函数*/int main() system("color 02"); author(); system("pause"); system("cls"); welcome(); system("pause"); system("cls"); readdata(); for(;) switch(mainmenu() case 1:system(

22、"cls");insert();break; case 2:system("cls");del();break; case 3:system("cls");see();break; case 4:system("cls");query();break; case 5:system("cls");change();break; case 6:system("cls");modify();break; case 7:system("cls");pass_unp

23、ass_num();break; case 8:system("cls");writedata();break; case 9:system("cls");show_work();break; case 0:system("cls");printf("nnnnntt谢谢您的使用!n");writedata();return 0; default: fflush(stdin); printf("nnttt选择错误,请正确输入您的选择010:n"); system("pause"

24、); fflush(stdin); system("cls"); return 0;/*显示作者信息*/void author()printf("nnntt-");printf("ntt*欢送使用本程序*n");printf("tt-");printf("nttt ");printf("nttt 课程名称:汽车零部件质检管理程序 ");printf("nttt 学 号:20210231129 ");printf("nttt 作者姓名:邢小双 &q

25、uot;);printf("nttt 班 级: T1323-11 ");printf("nttt 专 业:车联网 ");printf("nttt 电 话:68003 ");printf("nttt 唯一 QQ: 654133321 ");printf("nttt n "); return ;/*显示欢送界面*/void welcome()printf("nnnt");printf("nt ");printf("nt ");printf(

26、"nt ");printf("nt ");printf("nt n");printf(" nt 祝您使用愉快 ! n");printf("ntt 姓名:邢小双 学号:20210231129 班级:T1323-11 n");printf("ntt 68003 QQ:654133321 n");printf("ntn");return ;/*主菜单函数*/int mainmenu()int select;printf("nnnntt*主菜单*n&qu

27、ot;);printf("tttt 1、添加汽车零部件质检信息n"); printf("tttt 2、删除汽车零部件质检信息n");printf("tttt 3、实现全部汽车零部件质检信息浏览n");printf("tttt 4、显示查询界面n");printf("tttt 5、查找需要修改信息的汽车零部件n"); printf("tttt 6、实现汽车零部件质检信息修改n");printf("tttt 7、统计汽车零部件合格和不合格数量n");print

28、f("tttt 8、磁盘保存汽车零部件质检信息n"); printf("tttt 9、显示题目n");printf("tttt 0、退出程序n");printf("nttt姓名:邢小双 学号:20210231129 班级:T1323-11n"); printf("ttt :68003 QQ:654133321n");printf("tt*n");printf("tt请选择您要进行的操作序号:");scanf("%d",&sele

29、ct);return select;/*从磁盘读入汽车零件质检信息*/void readdata()FILE*fp;int n=0;if(fp=fopen("c:123.txt","r")=NULL) /*翻开文件*/printf("nnnttt文件不存在或无法翻开!n");return;head=p1=(struct product*)malloc(LEN);/*开辟一个新单元*/p1->next=NULL;while(!feof(fp)n+;fscanf(fp,"%s %s %s %s %s %s %d-%d-%d

30、 %s", p1->num,p1->name,p1->producter,p1->factory,p1->result,p1->inspector,&p1->inspect_time.year,&p1->inspect_time.month,&p1->inspect_time.day,p1->problem);if(p1->num0<'0'|p1->num0>'9') n-;break;p2=(struct product *)malloc(LE

31、N); /*开辟一个新单元*/p1->next =p2;p3=p1;p1=p2;p1->next =NULL;free(p2);p3->next=NULL;printf("n %d项信息输入完毕! n",n);system("pause");fflush(stdin);system("cls"); /*清屏*/flag=0; /*设置保存记录标志*/if( fclose(fp) ) /* 关闭文件 */printf( "Can not close the file!n" );exit(0);/*插

32、入汽车零部件质检信息*/void insert ()int n=0,m,i;p1=head;if(head=NULL) /*空数据库插入在第一个位置*/getchar();printf("n(编号输入5个字符,质检日期的年月日用“连接,如:2021-6-25)n");printf("n 汽车零部件质检信息数据库为空,只能插入第一个位置,按任意键将继续。:n");getchar();printf("*n");printf("n编号 名称 生产者 生产部门 质检结果 质检员 质检日期 质检问题 输%d条信息n:",n)

33、;printf("*n");head=(struct product *)malloc(LEN); /*开辟一个新单元*/head->next =NULL;scanf("%s %s %s %s %s %s %d-%d-%d %s",head->num,head->name,head->producter,head->factory,head->result,head->inspector,&head->inspect_time.year,&head->inspect_time.mont

34、h,&head->inspect_time.day,head->problem);printf("n1项信息输入完毕.n");system("pause");getchar();system("cls"); /*清屏*/flag=1; /*去除保存记录标志*/return;/*数据库不为空时,分插入第一个位置,中间位置,最后一个位置三种情况*/do n+;p1=p1->next;while(p1!=0);printf("n(编号输入5个字符,质检日期的年月日用“连接,如:2021-6-25)n&qu

35、ot;);printf("nnnt汽车零部件质检信息数据库中共有%d条记录,请输入添加的信息所在的行数n:n",n);do scanf("%d",&m);if(m<1|m>n+1) printf("nn 输入范围有误,请重新输入希望插入的正确位置(n>=1&&n<=%d):n",n+1);while(m<1|m>n+1);if(m=1) /*插入在数据库的第一个位置*/p1=head;getchar();+printf("*n");printf("

36、;n 编号 名称 生产者 生产部门 质检结果 质检员 质检日期 质检问题 输%d条信息:n",n);printf("*n");head=(struct product *)malloc(LEN); /*开辟一个新单元*/scanf("%s %s %s %s %s %s %d-%d-%d %s",head->num,head->name,head->producter,head->factory,head->result,head->inspector,&head->inspect_time.ye

37、ar,&head->inspect_time.month,&head->inspect_time.day,head->problem);head->next =p1;printf("n1项信息输入完毕,按任意键返回.n");system("cls");getchar();system("cls"); /*清屏*/flag=1; /*去除保存记录标志*/return;if(m=n+1) /*插入在数据库的最后一个位置*/p1=head;while( p1->next!=NULL)p1=p1-

38、>next;printf("*n");printf("n编号 名称 生产者 生产部门 质检结果 质检员 质检日期 质检问题 输入信息:n");printf("*n");p2=(struct product *) malloc(LEN); /*开辟一个新单元*/scanf("%s %s %s %s %s %s %d-%d-%d %s",p2->num,p2->name,p2->producter,p2->factory,p2->result,p2->inspector,&am

39、p;p2->inspect_time.year,&p2->inspect_time.month,&p2->inspect_time.day,p2->problem);p2->next=NULL;p1->next =p2;printf("n1项信息输入完毕,按任意键返回.n");getchar();system("pause");system("cls"); /*清屏*/flag=1; /*去除保存记录标志*/return;/*插入在数据库的中间位置*/p1=head;for(i=1;

40、i<m;i+) p2=p1;p1=p1->next;printf("*n");printf("n编号 名称 生产者 生产部门 质检结果 质检员 质检日期 质检问题 输入信息:n");printf("*n");p3=(struct product *)malloc(LEN); /*开辟一个新单元*/scanf("%s %s %s %s %s %s %d-%d-%d %s", p3->num,p3->name,p3->producter,p3->factory,p3->resu

41、lt,p3->inspector,&p3->inspect_time.year,&p3->inspect_time.month,&p3->inspect_time.day,p3->problem);p3->next=p1;p2->next=p3;printf("n1项信息添加完毕,按任意键返回.n");system("pause");getchar();system("cls"); /*清屏*/flag=1; /*去除保存记录标*/return;/*查找需要修改的汽车零

42、部件质检信息*/void change()char num10;if(head=NULL) getchar();printf("nnn汽车零部件质检信息数据库为空,不能修改,按任意键将返回:n");getchar();system("cls"); /*清屏*/return;p1=head;printf("nnntt请输入要修改记录的汽车零部件编号:n");scanf("%s",num);while(strcmp(num,p1->num )!=0&&p1->next!=NULL)p1=p1

43、->next ;if(strcmp(num,p1->num)=0)strcpy(p1->num,num);printf("tt 汽车零部件名称:");printf("%sn",p1->name);printf("tt 汽车零部件生产者 :");printf("%sn",p1->producter );printf("tt 汽车零部件生产部门:");printf("%sn",p1->factory);printf("tt 汽车零部件

44、质检结果:");printf("%sn",p1->result);printf("tt 汽车零部件质检问题:");printf("%sn",p1->problem);printf("tt 汽车零部件质检员:");printf("%sn",p1->inspector);printf("tt 汽车零部件质检时间;");printf("%d-%d-%dn",p1->inspect_time.year,p1->inspect

45、_time.month,p1->inspect_time.day);elseprintf("nn找不到该汽车零部件质检信息!");getchar();printf("按任意键继续:n");getchar();system("cls"); /*清屏*/flag=1; /*去除保存记录标志*/return;/*删除汽车零部件质检信息*/void del()char num10;if(head=NULL)/*如果头结点为空,说明文件中没有信息*/ getchar();printf("n 汽车零部件质检信息数据库为空,不能删除

46、,按任意键将返回:n");getchar();system ("pause");system("cls"); /*清屏*/return;p1=head;printf("nn请输入要删除的汽车零部件编号:n");scanf("%s",num);while(strcmp(num,p1->num )!=0&&p1->next!=NULL)/*当p1中的num与输入的num不同,并且p1不是尾节点*/ p2=p1;/*把p1给p2*/p1=p1->next ;/*p1的next给

47、p1,使p1指向下一个节点*/if(strcmp(num,p1->num)=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删除完毕;");elseprintf("nn未注册该汽车零部件质检信息!");getchar();printf("按任意键返回:n");getchar();system("cls

48、"); /*清屏*/flag=1; /*去除保存记录标志*/return;/*显示查询界面*/void query() for(;) switch (menu()case 1:system("cls");query_by_num();break;case 2:system("cls");query_by_name();break;case 3:system("cls");query_by_producter();break;case 4:system("cls");query_by_factory();b

49、reak;case 5:system("cls");query_by_result();break; case 6:system("cls");query_by_inspector(); break; case 7:system("cls");query_by_inspecttime(); break;case 0:system("cls");printf("nnnnntt谢谢您的使用!n");return ;default :fflush(stdin);printf("nnttt选择

50、错误,请正确输入你的选择(07):n");system("pause");fflush(stdin);system("cls"); return;/*显示查询菜单*/int menu()int select; printf("nt查询功能菜单n"); printf("tt "); printf("ntt 1,按【编号】查看汽车零部件质检信息 n"); printf("tt 2,按【名称】查看汽车零部件质检信息 n"); printf("tt 3,按【生产者】查看汽车零部件质检信息 n"); printf("tt 4,按【生产部门】查看汽车零部件质检信息 n&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论