版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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<stdio.h>#include<string.h>#include<malloc.h>#include <stdlib.h>#include<conio.h>#define LEN sizeof(struct information)/*结构体定义*/struct informationchar qid15;char qname15;char producer15;char pd15;char qresult15;char qproblem15;char qpersons15;char time12;
11、struct information *next;/*函数声明*/void createRec();/*新建质检信息*/void loadRec();/*从磁盘文件导入质检信息到内存*/void searchRecqid();/*查询质检信息(根据质检编号)*/void searchRecpro(); /*查询质检信息(根据生产者)*/void modifyRec();/*修改质检信息*/void deleteRec();/*删除质检信息*/void listRec();/*显示所有质检信息*/void writeInfo();/*保存质检信息*/void exit0();/*退出*/int
12、menu_select();/*主菜单*/int fqid(char a); /判断质检编号是否已被输入/int check(char date) /判断日期是否合法/int year,month,day,i,leap; /要求格式判断/for(i=0,year=0;i<4;i+)year=year*10+(datei-'0');for(i=5,month=0;i<7;i+)month=month*10+(datei-'0');for(i=8,day=0;i<10;i+)day=day*10+(datei-'0');if(mon
13、th<0|month>12)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|month=12)if(day<0|day>31)return 0;elsereturn 1;if(month=4|month=6|month=9|month=11)if(day<0|day>30)return 0;elsereturn 1;if(leap=1&&month=
14、2)if(day<0|day>29)return 0;elsereturn 1;if(leap=0&&month=2)if(day<0|day>28)return 0;elsereturn 1;return 0;/*链表操作所用结构体指针*/struct information *head=NULL,*p1,*p2,*p3,*p0;/*定义结构体指针head 为头指针p1 为输入数据缓存空间指针p2 为尾指针*/*质检记录保存标志全局变量*/intwriteinfo_flag=0;/*主函数*/int main() loadRec(); system(&
15、quot;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"); deleteRec();br
16、eak;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;/*主
17、菜单*/int menu_select()int c,flag=1; char w10;printf("tt*菜单*n");printf("ttt1.新建质检信息n");printf("ttt2.查询质检信息(质检编号)n");printf("ttt3.查询质检信息(生产者)n");printf("ttt4.修改质检信息n");printf("ttt5.删除质检信息n");printf("ttt6.显示所有信息n");printf("ttt7.保
18、存质检信息n");printf("ttt0.退出(任何情况下按Ctrl+C 退出程序)n"); printf("tt*n");printf("n 输入你的选择(07):");doscanf("%s", w);if(strlen(w) != 1)flag = 0;printf("n选择错误,请正确输入你的选择(07):");else if(strcmp(w,"0") < 0 | strcmp(w, "7") > 0) flag = 0;
19、 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 *)mallo
20、c(LEN);/*开辟一个新单元*/memset(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
21、=NULL;free(p2);p3->next=NULL;printf("n %d项信息输入完毕,按任意键返回.n",n);getch();system("cls");/*清屏*/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!=
22、NULL)p3=p3->next;printf("n 质检信息数据库已存在,新建质检信息将接续在信息库的后面,按任意键继续.:n");getchar();system("cls");/*清屏*/p3->next=p1=(struct information *)malloc(LEN);/*开辟一个新单元*/ elsehead=p1=(struct information *)malloc(LEN);/*开辟一个新单元*/ p1->next =NULL; printf("n请输入质检编号:");scanf("
23、%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(&qu
24、ot;%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
25、("%s",p1->time);while(p1->time4!='-')|(p1->time7!='-')|strlen(p1->time)!=10|check(p1->time)=0)/*判断开始统计的时间输入是否合法*/ printf("入住时间输入不合法,请重新输入:"); scanf("%s",p1->time); getchar();p2=(struct information *)malloc(LEN);/*开辟一个新单元*/p1->next =p
26、2;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(p1=NULL) printf("nn质检信息数据库为空! n"); printf("n 按任意键返回.n"); getch
27、(); 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,
28、p1->producer,p1->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(
29、p1=NULL) printf("nn质检信息数据库为空! n"); printf("n 按任意键返回.n"); getch(); system("cls");/*清屏*/ return ; printf("nn 请输入生产者以便查证:"); scanf("%s",producer); printf("n质检编号 零件名称 生产者 生产部门 质检结果 质检问题 质检员 质检日期n"); while(p1!=NULL) if(strcmp(p1->producer,pro
30、ducer )=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;continue; else p1=p1->next ; if(p1=NULL) printf("nn%d项质检信息输入完毕!n",i); printf("n
31、按任意键返回.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(strcmp(qid,p
32、1->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(
33、"%s",p1->qname);printf("n请输入生产者:");scanf("%s",p1->producer);printf("n请输入生产部门:");scanf("%s",p1->pd);printf("n请输入质检结果(合格/不合格):");scanf("%s",p1->qresult);printf("n请输入质检问题(无/设计缺陷/装配质量/加工质量):");scanf("%s"
34、;,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("质检时间输入不合法,请
35、重新输入:"); scanf("%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=NUL
36、L) getchar();printf("n 质检信息数据库为空,不能删除,按任意键将返回:n");system("cls");/*清屏*/return;p1=head;printf("n请输入要删除的质检号:");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)fre
37、e(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");system("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%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机床主传动系统课程设计
- (2024版)高清晰度卫星遥感服务合同
- 机器人机座结构课程设计
- 机器人技术课程设计
- 机器人工程设计课程设计
- 机器人在线课程设计
- 机制管理课程设计
- 浙江省丽水四校2019-2020学年高一10月份(联考)阶段检测化学试题
- 本地水库承包方案
- 医疗行业合同管理系统建设方案
- YD_T 3956-2021 电信网和互联网数据安全评估规范_(高清版)
- 杭州会展业发展与对策研究文献综述
- 完整版方法验证报告模板最终
- 2022年物业管理师《物业管理实务》考试题库大全-下(多选题、简答)
- 大班科学活动教案《豆豆家族》含PPT课件
- 压力管道检验员在线考试习题与答案
- 【精品试卷】部编人教版(统编)一年级上册语文第一单元测试卷含答案
- 金属有机化学ppt课件
- 应急管理试题库
- 工地观摩学习心得体会三篇
- 当当网与电子商务47条标准
评论
0/150
提交评论