版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖北汽车工业学院课程设计HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYC 语言程序设计课程设计报告课设题目:汽车零部件采购管理专 业:自动化班 级:K自动化191姓 名:小 恩成 绩:完成日期:2020.6.302020.7.7指导教师:1 目录课程设计题目与要求3题目:3题目描述3题目要求3输入要求3输出要求3实现要求4系统设计4系统模块设计5详细设计5主要模块的实现6主要模块流程图6信息输入:6编号查询:7零件查询:8修改信息:8删除信息:9打开记录:9保存记录:10测试结果10欢迎界面10菜单栏11采购信息录入12编号查询采购信息12零件名查找采购信息
2、13修改采购信息13删除采购信息13打开文件里信息14保存信息14退出程序15课程设计总结15五程序源代码161 课程设计题目与要求1.1 题目:汽车零部件采购管理程序1.2 题目描述已知在汽车生产时,需要向零部件生产厂商采购零部件,设计一个汽车零部件采购管理程序,以方便采购管理部门对采购零部件的管理。该单位每次采购都有一个采购编号,每次采购一种零部件。该程序应该具有如下功能(1)能从键盘输入采购信息。(2)指定采购编号,显示采购的零部件信息。(3)指定零部件名称,显示该零部件的所有采购信息。(4)给定采购编号,修改采购信息。(5)给定采购编号,删除采购信息。1.3 题目要求(1)按照分析、设
3、计、编码、调试、测试的软件过程完成这个应用程序。(2)采购信息包括:采购编号、零部件名称、采购日期、采购员、采购数量、采购单价、供货单位。(3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。1.4 输入要求(1)应用程序运行后在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。程序根据用户输入的信息完成相应的处理,实现要求的功能。(2)能对输入的数据进行简单的校验,例如,采购日期必须是一个合法的日期格式,采购编号是唯一的(一次采购对应一个采购编号)。1.5 输出要求(1
4、)应用程序运行后,要在屏幕上显示一个菜单。(2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式以及结束方式等。(3)在程序完成处理后,要清楚地给出程序的处理结果。例如,在给定采购编号删除采购信息时,如果该采购编号不存在,要提示没能删除,如果删除成功要提示删除成功。1.6 实现要求(1)在程序中使用链表存储采购信息。(2)采用模块化程序设计的方法,将程序中的各项功能用函数实现。提示(1)使用结构体表示采购信息,一个结点保存一条采购信息扩展功能(1)提供一些统计功能。例如根据零部件名称统计采购数量,根据采购员统计采购的次数。(2)采购信息从文件读入。(3)将采购信息保存到文
5、件中。菜单栏欢迎界面开始127654302 系统设计如上图;该程序是从开始到欢迎界面,然后进入菜单栏,在菜单栏里可以输入对应的序号进入想要的功能。第一的序号对应的功能是可以通过键盘输入采购信息;第二个序号的功能是用户可以通过输入编号来查询有关这个编号的采购信息;第三个序号的功能是可以通过输入零件名来查找有关这个零件的信息;第四个序号的功能是可以通过选择对应的编号来修改采购信息;第五个序号的功能是通过输入对应的序号来删除采购信息;第六个序号的功能是用户可以输入对应文件的路径地址来打开这个文件里面的采购信息;第七个序号的功能是用户可以把刚刚录入的采购信息存入所选文件中;最后一个就是退出这个程序了。
6、2.1 系统模块设计(1)菜单界面:构造函数 void interface1( );实现系统主菜单的显示。(2) 功能选择:构造函数 void option( );实现进入对应的功能区域。(3)信息输入:构造函数 void input ( );实现对采购信息的输入。(4)编号查询:构造函数 实现快速查到对应编号。(5)零件查询:构造函数 实现对于一个零件的全部信息查找。(6)修改信息:构造函数 实现对应编号信息的修改。(7)删除信息:构造函数 实现对应编号的删除信息(8)打开记录:构造函数 实现对一个文件里的信息进行读取(9)保存记录:构造函数 实现对录入信息的保存(10)增添信息:构造函数
7、实现多次添加信息(11)时间校验:构造函数 实现对日期的校验2.2 详细设计/*头文件*/ #include #include #include #include /*函数声明*/ struct Stu *create(int n);struct Stu *find(struct Stu* h,int key);/链表查找 void print(struct Stu *head);void interface1(); /菜单栏 void option(); /进入选择 void input(); /输入采购信息void Purchase(); /通过编号查询采购信息void Purchase_
8、history(); /查找零件采购历史void amend();/修改采购信息void xdelete();/删除采购信息void open();/打开采购历史记录void hold();/将采购信息存入文件void return1(); /返回主菜单 void insert(struct Stu *list, int n); /增添采购信息 int time(int y,int m,int d); /时间校验 void color(short x);/改变颜色 /*全局变量 */ struct Stu *head; /struct Stu *node,*end;int j1000;int
9、d=0;2.3 主要模块的实现系统以主函数 int main()为入口,首先显示系统欢迎界面。然后调用void interface1();函数显示主菜单界面,其次调用 void option();函数进行功能选择;最后对这两个函数进行无限循环。3 主要模块流程图3.1.1 信息输入:3.1.2 编号查询:3.1.3 零件查询:3.1.4 修改信息: 3.1.5 删除信息: 3.1.6 打开记录:3.1.7 保存记录:4 测试结果4.1 欢迎界面4.2 菜单栏4.3 采购信息录入4.4 编号查询采购信息4.5 零件名查找采购信息4.6 修改采购信息4.7 删除采购信息4.8 打开文件里信息4.9
10、 保存信息4.10 退出程序5 课程设计总结在疫情期间,我们克服困难继续学习知识。我对大学我们要学的新知识十分感兴趣,比如说我们学的 c 语言,在这个学期我们开始接触了 c 语言这门学科。这是一门让我们更加了解程序的课,也是刚刚接触,对此感到十分陌生,不过经过一段时间的学习之后才开始有了初步的认识。虽然不能去学校,但是老师在上课的时候会给我们讲解学习的知识,会对我们不知道的知识,遇到的难题一一讲解。并在学习通上发布一些练习,视频和有关的知识点,让我们课后不理解的可以再看一下视频,还是不理解还可以去群里咨询老师。刚开始的时候,我们对此一窍不通,并不知道我们要怎么去敲那些代码。在整个学习的过程中我
11、们逐渐认识到自己还有很多的知识没学好,基础知识没理清,而且很多的东西还要去翻书,去网上搜索,求助于同学,尽我们自己最大的努力去解决碰到的难题,逐渐克服这些问题后。我们发现 c 语言也并不是特别的难,只要你把平时学的知识掌握好,平时作业还是很简单的。在做这个程序时因为学的不够深,老是很难了解为什么会报错。然后经常进百度找原因,找程序,所以只有多动手,经常编写程序,才能发现我们学习上的漏洞和自己的不足,并在实践中解决这些问题,才能不断提高自己的知识。这一门课让我更加了解我的C语言水平,哪里还不足,哪里需要改进!6 五程序源代码/*头文件*/ #include #include #include #
12、include /*函数声明*/ struct Stu *create(int n);struct Stu *find(struct Stu* h,int key);/链表查找 void print(struct Stu *head);void interface1(); /菜单栏 void option(); /进入选择 void input(); /输入采购信息void Purchase(); /通过编号查询采购信息void Purchase_history(); /查找零件采购历史void amend();/修改采购信息void xdelete();/删除采购信息void open();
13、/打开采购历史记录void hold();/将采购信息存入文件void return1(); /返回主菜单 void insert(struct Stu *list, int n); /增添采购信息 int time(int y,int m,int d); /时间校验 void color(short x);/改变颜色 /*全局变量 */ struct Stu *head; /struct Stu *node,*end;float j1000;int d=0; /*结构体*/ struct Stufloat number; /采购编号char name_part50; /零部件名称int ye
14、ar,month,day; /采购日期char name20;/采购员float count; /采购数量float money; / 采购单价char site50 ; /供货单位struct Stu *next;/* 主函数 */int main()color(10); printf(nntttttn);printf(tttttn); printf(ttttt 欢迎使用汽车零部件采购管理系统 n);printf(ttttt n);printf(ttttt 制作人:小恩 n);printf(ttttt 指导老师:吴年志 n);printf(ttttt n);printf(tttttn);pr
15、intf(tttttn);printf(nttttt 按任意键进入菜单栏.); fflush(stdin); getch(); color(7);system(cls); while(1) interface1();option(); return 0;/*创建链表*/ struct Stu *create(int n)struct Stu *head,*node,*end;/定义头节点,普通节点,尾节点 int i,count=0,k,num;d=0; head = (struct Stu *)malloc(sizeof(struct Stu); /给头节点申请内存 end = head;
16、/若是空表,则头尾地址一致 for( i=0;inumber);ji = node-number;for(k=0;knumber)color(4);printf(输入的编号不能相同!重新输入编号:n);color(7);i=i-1;num=1;break;if(num=0)printf(t零部件名称:);scanf(%s ,&node-name_part);printf(t采购日期 :);scanf(%d %d %d ,&node-year,&node-month,&node-day);for(;time(node-year,node-month,node-day)=0;)fflush(std
17、in); color(4);printf(输入的时间格式不对!请重新输入:);color(7);scanf(%d %d %d ,&node-year,&node-month,&node-day);printf(t采 购 员 :);scanf(%s ,&node-name);printf(t采购数量 :);scanf(%f ,&node-count);printf(t采购单价 :);scanf(%f ,&node-money);printf(t供货单位 :);scanf(%s ,&node-site);printf(nn);end-next = node;/让上一个节点的数据域指向当前节点 en
18、d = node; d+; /end指向当前节点,最终end指向尾节点 if(i=n-1)color(2);printf(是否还需要添加?n不需要输入0,需要添加多少直接输入多少!:);scanf(%d,&count);n += count;color(7); end-next = NULL; /给end的指针域置空 return head; /返回头节点的地址 /*打印输出*/ void print(struct Stu *head)struct Stu *p = head;int j =1,count=0;d=0;if(p!=NULL)while(p-next != NULL) p = p
19、-next;color(1);if(count=0) printf(nn采购编号 零部件名称 采购日期 采购员 采购数量 采购单价 供货单位n);color(7);/只输出一次 count=1;printf(%4.0f %12s %7d %d %d %7s,p-number,p-name_part,p-year,p-month,p-day,p-name);printf(%9.0f %9.2f %8s n,p-count,p-money,p-site);j+;d+;else color(4);printf(没有信息!请先输入采购信息!n);color(7);/printf(%d,d);/*菜单栏
20、*/ void interface1()fflush(stdin);color(9);printf(nn*n);printf(* 汽车零部件采购管理 *n);printf(*n);printf( 1.输入采购信息n);printf( 2.编号查询采购信息n);printf( 3.查找零件采购历史n);printf( 4.修改采购信息n);printf( 5.删除采购信息n);printf( 6.打开采购历史记录n);printf( 7.将采购信息存入文件n);printf( 0.退出n);printf(*n);color(7);printf(请输入你的序号(07):);return; /*选择
21、功能*/ void option()char i;fflush(stdin);scanf(%c,&i);fflush(stdin); /去掉无用值 printf(nn); switch(i) case 0: exit(0); case 1:input(); break;case 2:Purchase(); break;case 3:Purchase_history(); break;case 4:amend(); break;/修改采购信息case 5:xdelete(); break;case 6:open(); break;case 7:hold(); break;default:prin
22、tf(输入有误!请重新按要求输入!nn);return; return; /*输入信息*/ void input()int n;struct Stu *p=head; /head = NULL; /创建头指针 if(p=NULL)printf(请输入你录入信息的个数:);if(scanf(%d,&n)=1)fflush(stdin);color(2);printf(按提示输入,以回车进入下一个输入!n);printf(时间输入年月日分别以空格代替n);color(7);/printf(采购编号 零部件名称 采购日期 采购员 采购数量 采购单价 供货单位n);head = create(n);p
23、rint(head);else printf(输入的值不是数字!);else color(2);printf(你还需添加几个:);color(7);fflush(stdin);scanf(%d,&n);insert(head,n );print(head); return1();return; /*查找编号*/struct Stu* find(struct Stu* head,int key) struct Stu *p; for(p=head;p&p-number!=key;p=p-next); /while(p-next != NULL) return(p);/*以编号查询*/ void
24、Purchase()int i,count=0;struct Stu* p=head; system(cls);print(head);if(p!=NULL) printf(请输入要查询的编号:);while(count=0) scanf(%d,&i);if(i=(int)i)p = find(head,i);if(p!=NULL) printf(nn采购编号 零部件名称 采购日期 采购员 采购数量 采购单价 供货单位n);printf(%4.0f %12s %7d %d %d %7s,p-number,p-name_part,p-year,p-month,p-day,p-name);prin
25、tf(%9.0f %9.2f %8s nnn,p-count,p-money,p-site);color(2);printf(找到以上结果.n);color(7);return1();else color(4);printf(你输入的编号无效!nnn);color(7);count=1; else color(4);printf(输入的值不是数字!请重新输入:);color(7); else return1(); return;/*查找零件采购历史*/void Purchase_history()struct Stu *p=head;int count=0;char name25;system
26、(cls);printf(请输入需要查询的零件名:);scanf(%s,&name);fflush(stdin);if(p!=NULL) while(!count) for(p=head;p!=NULL;p=p-next) if(strcmp(p-name_part,name)=0) if(count=0) printf(nn采购编号 零部件名称 采购日期 采购员 采购数量 采购单价 供货单位n); count=1;printf(%4.0f %12s %7d %d %d %7s,p-number,p-name_part,p-year,p-month,p-day,p-name);printf(%
27、9.0f %9.2f %8s n,p-count,p-money,p-site); if(count=0)color(2);printf(找不到结果!请重新输入零件名(退出输入8):);color(7);scanf(%s,&name);fflush(stdin);if(strcmp(name,8)=0) return1();return; else color(4);printf(链表里无信息,请先输入采购信息!nn);color(7);if(count=1)color(2);printf(找到以上结果.n);color(7); return1();return;/*修改采购信息*/void
28、amend() int i,k,num;struct Stu* p=head;while (p != NULL) ji=p-number;p = p-next;i+;system(cls);print(head);printf(请输入要修改的编号:);scanf(%d,&i); fflush(stdin);p = find(head,i);if(p!=NULL) printf(nt原信息:ttt修改成:n); printf(t采购编号 :%-20.0f,p-number);num=(int)p-number;printf(t采购编号 :);scanf(%f ,&p-number); for(k
29、=0;knumber&num!=p-number)color(4);printf(编号重复,请重新输入:);color(7); fflush(stdin);scanf(%f ,&p-number);k=0;printf(t零部件名称:%-20s,p-name_part); printf(t零部件名称:);scanf(%s ,&p-name_part);printf(t采购日期 :%d %d %d ,p-year,p-month,p-day); printf(tt采购日期 :);scanf(%d %d %d ,&p-year,&p-month,&p-day);for(;time(p-year,p
30、-month,p-day)=0;) fflush(stdin);color(4);printf(t输入的时间格式不对!请重新输入:); scanf(%d %d %d ,&p-year,&p-month,&p-day);color(7);printf(t采 购 员 :%-20s,p-name); printf(t采 购 员 :);scanf(%s ,&p-name);printf(t采购数量 :%-20.2f,p-count); printf(t采购数量 :);scanf(%f ,&p-count);printf(t采购单价 :%-20.2f,p-money); printf(t采购单价 :);
31、scanf(%f ,&p-money);printf(t供货单位 :%-20s,p-site); printf(t供货单位 :);scanf(%s ,&p-site);printf(n修改成:n); printf(采购编号 零部件名称 采购日期 采购员 采购数量 采购单价 供货单位n);printf(%4.0f %12s %7d %d %d %7s,p-number,p-name_part,p-year,p-month,p-day,p-name);printf(%9.0f %9.2f %8s n,p-count,p-money,p-site);else printf(你输入的编号无效!nnn)
32、;return1();return;/*删除采购信息*/void xdelete()int i ,n=0;struct Stu* p;struct Stu* t=head;system(cls);print(head);printf(请输入要删除的编号:);fflush(stdin);scanf(%d,&i); p = find(head,i);if(p!=NULL) printf(需要删除的信息:); printf(采购编号 零部件名称 采购日期 采购员 采购数量 采购单价 供货单位n);printf(%4.0f %12s %7d %d %d %7s,p-number,p-name_part
33、,p-year,p-month,p-day,p-name);printf(%9.0f %9.2f %8s n,p-count,p-money,p-site);color(2);printf(n确定删除输入1,不删除任意键:);color(7); fflush(stdin); scanf(%d,&n); if (n=1) t-next = p-next;free(p);color(10);puts(删除成功!n);color(7); else color(4);printf(你输入的编号无效!nnn);color(7);return1();return;/*打开采购历史记录*/void open
34、()FILE *fp;/*文件指针*/int count=0;char s25;struct Stu *p,*end; /定义头节点,普通节点,尾节点 system(cls);head = (struct Stu *)malloc(sizeof(struct Stu); /给头节点申请内存 end = head; /若是空表,则头尾地址一致 printf(要打开文件的地址:);fflush(stdin); scanf(%s,&s);fflush(stdin); fp=fopen(s,r);/*以只读方式打开文件*/if(fp=NULL)color(4);puts(文件打开失败!);color(
35、7);return1();return; while(!feof(fp) /利用for循环向链表中添加数据 p = (struct Stu *)malloc(sizeof(struct Stu);/给普通节点申请内存空间 fscanf(fp,%f %s %d%d%d %s %f %f %sn,&p-number,&p-name_part,&p-year,&p-month,&p-day,&p-name,&p-count,&p-money,&p-site);if(count=0)color(1);printf(文件里的结果如下:n采购编号 零部件名称 采购日期 采购员 采购数量 采购单价 供货单位
36、n);color(7);count=1; printf(%4.0f %12s %8d %d %d %6s %9.0f %9.2f %8sn,p-number,p-name_part,p-year,p-month,p-day,p-name,p-count,p-money,p-site);end-next = p;/让上一个节点的数据域指向当前节点 end = p; /end指向当前节点,最终end指向尾节点 end-next = NULL; fclose(fp);return1(); return; /*将采购信息存入文件*/void hold()int i=0;char s25; FILE *
37、fp;/文件指针struct Stu *p=head;system(cls);printf(要保存的地址:);fflush(stdin); scanf(%s,&s);fflush(stdin); fp=fopen(s,a);/*以只在文件末尾写的方式打开文件*/if(fp=NULL) color(4);puts(文件打开失败!);return1();color(7);return; if(p!=NULL)for(;p!=NULL;p=p-next)if(i=0)i=1;continue; /去掉首指针 fprintf(fp,%4.0f %12s %7d %d %d %7s %9.0f %9.2f %8s n,p-number,p-name_part,p-year,p-month,p-day,p-name,p-count,p-money,p-site);fclose(fp);color(2);printf(已完成保存!n);color(7);else color(4);printf(链表里无信息,请先输入采购信息!nn);color(7);return1();return;/*清除返回菜单*/void return1() fflush(stdin)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026学年天津市六年级数学期末评估快速提分题详细参考解析详细答案和解析
- 2027年备考安全员之江苏省A证(企业负责人)题库附答案(典型题)
- 2025-2026学年辽宁省开原市初中历史九年级期末下册自测基础巩固题(附答案)
- 2026学年湖南省长沙市三年级数学期末高分高频考点卷(详细参考解析)详细答案和解析
- 2026学年山东省菏泽市六年级语文期末自测黑金考题(附答案)详细答案和解析
- 2025-2026学年四川省阿坝州初中生物七年级期末下册高分重点试题(附答案)
- 2026江苏省安全员-B证考试题库附答案
- 2026公共卫生执业医师考试全真模拟试题(含答案)
- 2025年评标专家培训考试题及答案解析
- 2025年产前筛查及产前诊断规范考试题库(附含答案)
- 新苏教版六上数学第4单元第3课《比的意义(3)》课件
- 智能体时代AI基础设施发展研究报告2026-中国电信
- 吉林省前期物业服务合同9篇
- 老年人常见代谢性疾病的防控
- 成都兴城投资集团有限公司成都天府绿道生态农业科技有限公司2026年招聘农业项目管理等岗位考试模拟试题及答案解析
- 地下综合管廊质量通病和防治
- 幽门螺杆菌感染处理 2026 指南解读
- 第14课 丝绸之路的开通与经营西域 课件(任务驱动型教学)
- 长期照护师培训课程大纲
- GB/T 1345-2026水泥细度检验方法筛析法
- 机械制图(高职)全套教学课件
评论
0/150
提交评论