1、汽车零部件采购管理程序HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYC语言程序设计课程设计报告课设题目: 汽车零部件采购管理 专 业: 电子信息工程(汽车电子) 班 级: T1323-15 *成 绩: 完成日期: 2014年19周 * *1.课程设计目的-1 主菜单页面-13 采购信息输入调试-181.课程设计目的1)通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。2)通过课程设计,进一步掌握C语言中重要的数据结构。掌握并熟练运用指针、链表、结构体、文件等数据结构。3)通过课程设计,提高程序开发能力,能运用合理的控
2、制流编写清晰高效的程序。4)通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。5)通过课程设计,加强了自己的程序分析能力。2.需求分析 要求1)遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力。2)运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。3)学会利用数组、结构体、链表进行相关信息表示。4)功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述5)各主要功能模块有详尽的流程图及描述,
3、用函数的形式实现,且调用入口、功能、出口等关系正确。6)所设计的C程序较好的可读性和可靠性;程序书写风格规范,注释清晰。7)界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。8)程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。9)学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。10)掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。11)C语言课程设计报告的内容反应实际设计过程,且符合格式要求,无抄袭现象。任务描述已知在汽车生产时,需要向零部件生产厂商采购零部件,设计一个汽车零部件
4、采购管理程序,以方便采购管理部门对采购零部件的管理。该单位每次采购都有一个采购编号,每次采购一种零部件。该程序应该具有如下功能1)添加并保存采购信息:输入采购编号,零部件名称,采购员名字,采购日期,采购价格,采购数量,供货单位,需要判断采购价格和数量是否大于零,采购编号是否已存在,采购日期是否合法(形如*-*-*,例如2013-09-08)。2)根据采购编号查询零部件采购信息3)根据零部件名称查询其采购信息4)根据采购编号修改已有采购信息:需要判断修改后的采购编号的唯一性,采购日期的合法性(形如*-*-*,例如2013-09-08)。5)根据采购编号删除此条采购信息6)统计功能运行环境VC+编
5、译环境开发工具C语言3.总体设计 系统流设计 程序整体功能结构如图一所示:系统模块设计1) 封面模块 函数void huanying()和函数void byebye()构成封面模块,构造和谐人机环境。2) 菜单模块 函数void menu()和函数void choise()构成选择菜单,二级菜单void tongji()构成统计功能菜单。3) 查询模块 函数void numshow()和函数void nameshow()分别实现根据采购编号和零部件名称查询采购信息的功能,其中会有其他函数辅助。4) 信息处理模块 函数void change()实现信息修改功能,函数void disapperr(
6、)实现信息删除功能,void input()实现信息添加功能,void save()实现信息保存功能,void listCG()实现信息显示功能,其中会有其他函数辅助。5)统计模块 函数int number()实现根据零部件名称统计其总数量功能,int times()实现根据采购员名字显示其采购次数的功能,其中会有其他函数辅助。6)日期审查模块 函数 void checkdate()使用标志位方法实现对时间的审查。4.详细设计数据结构设计根据系统要求,采购信息包括:数据项名称数据项系统表示数据类型数据长度备注采购编号P1-buynum字符串10零部件名称P1-itemname字符串10采购日期
7、P1-day字符串30采购员名字P1-buyername字符串10采购数量P1-count整型4采购价格P1-price单精度8供货单位P1-source字符串10为了能实现系统的优越性和c语言的精华采用链表的建立采购信息记录表,示意图如下: 模块接口设计1)所有函数声明viod huanying(); /*封面函数,显示课程题目,学生信息*/ void menu(); /*主菜单函数,显示各项功能*/void choise(); /*根据主菜单选择并执行功能*/void readinto(); /*读取文件内的采购信息*/void input(); /*从键盘添加采购信息并保存到文件中*/v
8、oid listCG(); /*显示所有采购信息*/void numshow(); /*根据采购编号查询对应采购信息并显示*/void nameshow(); /*根据零部件名称查询其采购信息并显示*/void change(); /*根据采购编号修改并显示采购信息*/void disapper(); /*根据采购编号删除并显示余下采购信息*/void tongji(); /*统计功能菜单,显示两项统计功能*/int number(); /*根据零部件名称统计其购买总数量*/int times(); /*根据采购员名字统计其采购次数*/int checktime(int year,int mo
9、nth,int day );/*审查日期输入是否符合要求*/void byebye(); /*告别界面*/void save(); /*保存采购信息*/2)全局变量1,用于存储采购信息的结构体struct buy;2,判断文件是否正确读入的标志位变量int flag;3,用于存储采购信息的结构体指针:struct buy *head=NULL,*p,*p1,*p2,*p3.3)主要模块的实现系统以 int main()为入口,首先调用void huanying()显示课程名称和学生信息,调用void menu()和void choise()实现功能显示和功能选择。接着,按照用户的要求,调用vo
10、id numshow()或void nameshow()实现查询功能,或调用void change(),void disapper()实现修改和删除功能.不管是删除还是修改还是添加都要调用void save()实现信息保存功能。添加和修改时还要调用int checktime(int year,int month,int day)函数对时间审查。当不需要再执行各项功能时,调用void byebye()退出管理器。主要功能模块的流程图1)封面模块(以欢迎界面为例,退出界面与此类似) 2)菜单模块3)查询模块(以根据采购编号查询采购信息为例)4)信息处理模块(以添加采购信息为例)5)5)统计模块(以
11、根据零部件名称统计采购总数量为例)6)日期审查模块5.运行结果 欢迎界面 主菜单 信息查询页面 统计菜单页面 显示信息页面 退出页面6.程序调试与测试测试数据:采购编号001001001002001003001004零部件名称活塞轮胎后视镜方向盘采购日期2013-09-272013-04-232013-09-082013-09-07采购员名字刘尧徐倩卫添翼李林琳采购数量90679089采购价格供货单位汽院十堰黄冈河南 主菜单选择测试 若用户输入错误选项,则如图显示:采购信息未从文件读入采购信息的输入测试1)若添加的采购编号已存在,则如图显示:2)若添加的采购信息日期格式输入错误,则如图显示3)
12、若查询的采购编号输入错误,则如图显示4)若查询的零部件名称输入错误,则如图显示5)若输入价格为负数时,如图显示6)若输入的数量为负值时,如图显示7.问题与不足1、需求分析中存在的问题 每次只能从键盘中添加一条采购信息,当遇到需要添加多条信息时,比较麻烦。统计功能太少,如果要求几个零部件的总价,无法实现。2、程序中存在的缺陷 每次运行其他功能前都要先从文件中读入,比较耗时。有些功能输入错误时无法重新输入,而是直接跳到主菜单。缓存较多。8.建议题目应更加贴近生活,这样可以让同学们看到c语言的有用之处,激发同学们的学习热情。课程设计的题目涉及范围应该更广。程序设计的功能应相对更加复杂一点,这样有利培
13、养同学们的分析问题,解决问题的能力,同时也能提高同学们对代码的掌握能力。再者,就是验收时应该要学生画出链表结构图,帮助他们更加深刻的掌握知识。9.编程体会 经历了编c语言课程设计后,我对这一学期c语言所学内容有了更加深刻的了解和掌握,特别是一直不懂的链表和指针,现在发现自己都能运用了,很开心自己的进步。所以,虽然写程序的过程中,遇到各种问题,调试的时候也是遇到各种令人头大的问题,但能借助课程设计提高自己对指针和链表的熟练度,提高自己对c语言编程的熟练度,也希望学校可以多开设一些这样的课程,既是让我们对自己所学知识的一个综合理解与使用,也可以提高我们的动手实践能力、对知识的运用能力,更是一个让我
14、们学会独立思考的好机会。10.程序源代码#include #include #include #include #include #include#define LEN sizeof(struct buy) /申请结构体空间#define N 100/*申明程序中运用的函数*/void huanying(); /封面函数void readinto(); /读取文件void input(); /添加采购信息void listCG(); /显示采购信息void numshow(); /根据采购编号显示采购信息void nameshow(); /根据零部件名称显示采购信息void change();
15、 /修改采购信息void disapper(); /删除采购信息void menu(); /显示主菜单void choise(); /选择所需功能void tongji(); /统计功能菜单int number(); /根据零部件名称统计采购的零部件总数量int times(); /根据采购员名字统计采购的零部件总数量int checkdate(int year,int month,int day); /检测时间void byebye(); /告别界面void save(); /保存文件 /*定义全局变量*/struct buy /定义结构体 char buynum10; char itemn
16、ame10; char day30; char buyername10; int count; float price; char source10; struct buy *next;int flag=0;/*flag为文件是否以正确读入的标志位*/struct buy *head=NULL,*p,*p1,*p2,*p3; /*定义结构体指针*/*主函数*/int main() huanying(); getch(); while(1) menu(); /*显示主菜单*/ choise(); /*显示选择功能*/ return 0;/*封面函数*/void huanying() printf
17、(nnntt*n); printf(tt* *n); printf(tt* c语言课程设计 *n); printf(tt* *n); printf(tt* 学生姓名:徐倩 *n); printf(tt* 指导老师:吴年志 *n); printf(tt* 班级:T1323-15 *n); printf(tt* 学号:538 *n); printf(tt* 联系方式:(69180) *n); printf(tt* *n); printf(tt* 课程题目:汽车零部件采购管理程序 *n); printf(tt* *n); printf(tt*n); fflush(stdin); printf(请按回
18、车键继续);/*告别界面*/void byebye() printf(nnntt*n); printf(tt* *n); printf(tt* *n); printf(tt* *n); printf(tt* *n); printf(tt* *n); printf(tt* *n); printf(tt* *n); printf(tt* *n); printf(tt* *n); printf(tt* *n); printf(tt* 欢迎下次使用 *n); printf(tt*n);/*主菜单函数*/void menu() system(cls); printf(nnntt*欢迎使用汽车零部件管理系
19、统*n); printf(tt | tttt|n); printf(tt |tt1,读取采购信息ttt|n); printf(tt | tttt|n); printf(tt |tt2,从键盘添加并保存采购信息t|n); printf(tt | tttt|n); printf(tt |tt3,根据采购编号查找零件信息t|n); printf(tt | tttt|n); printf(tt |tt4,根据零部件名称查找采购信息t|n); printf(tt | tttt|n); printf(tt |tt5,修改并保存采购信息tt|n); printf(tt | tttt|n); printf(t
20、t |tt6,删除并保存余下采购信息t|n); printf(tt | tttt|n); printf(tt |tt7,统计采购信息ttt|n); printf(tt | tttt|n); printf(tt |tt8,显示采购信息ttt|n); printf(tt | tttt|n); printf(tt |tt0,退出管理系统ttt|n); printf(tt*n);/*读入文件函数*/void readinto() FILE *fp; /*文件指针*/ int n=0; if(fp=fopen(,r)=NULL) /*打开文件时无此文件*/ printf(文件打开错误:n); exit(
21、0); p1=(struct buy *)malloc(LEN); head=p1; p1-next =NULL; while(!feof(fp) /*读取文件内的信息*/ fscanf(fp,%s%s%s%s%d%f%s, p1-buynum,p1-itemname,p1-day,p1-buyername,&p1-count,&p1-price,p1-source); p2=(struct buy *)malloc(LEN); /*p2指向新申请的节点*/ p1-next =p2; p3=p1; p1=p2; p1-next =NULL; free(p2); p3-next=NULL; fc
22、lose(fp); /*关闭文件*/ flag=1; printf(文件读取成功!n); listCG(); /*选择所需功能函数*/void choise() int n; printf(-请从键盘输入您的选择(0-8内的整数):); scanf(%d,&n); while(n8) printf(输入不合法,请再输入一次:); scanf(%d,&n); switch(n) case 1:system(cls); /*清屏*/ readinto(); break; case 2:system(cls); input(); break; case 3:system(cls); numshow(); break; case 4:system(cls); nameshow(); break; case 5:system(cls); change(); break; case 6:system(cls); disapper(); break; case 7:system(cls); tongji(); break; case 8:system(cls); listCG(); break; case 0:system(cls); byebye(); exit(0); /*从键盘添加并保存采购信息函数*/void input() int n=0,i=0,k; char ch;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1