汽车零部件采购管理程序ds_第1页
汽车零部件采购管理程序ds_第2页
汽车零部件采购管理程序ds_第3页
汽车零部件采购管理程序ds_第4页
汽车零部件采购管理程序ds_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1、精品文档陶北疙4 4曲学院hubei university of automotive technologyc语言程序设计课程设计报告课设题目:汽车零部件采购管理专 业:电子信息工程(汽车电子)班级:t1323-15姓名:徐倩成 绩:完成日期:2014年19周指导教师:吴年志目录c语言程序设计0课程设计报告01 .课程设at目的12 .需求分析22.1 要求22.2 任务描述32.3 运行环境42.4 开发工具43 .总体设计43.1 系统流设计43.2 系统模块设计54 .详细设计64.1 数据结设计64.2 模块接口设计71)所有函数声明 72)全局变量93)主要模块的实现94.3 主要功

2、能模块的流程图 105 .运行结果 1 35.1 欢迎界面 1 35.2 主菜单页面135.3 信息查询页面 145.4 统计菜单页面 145.5 显示信息页面 1 55.6 退出页面 1 56 .程序调试与测试 166.1 主菜单选择测试 166.2 采购信息未从文件读入 1 76.3 采购信息输入调试187 .问题与不足 2 18 .建议 229 .编程体会 222210 .程序源代码-1 .课程设计目的1) 通过课程设计, 加深对结构化程序设计思想的理解, 能对 系统功能进行分析,并设计合理的模块化结构。2) 通过课程设计,进一步掌握c 语言中重要的数据结构。掌握并熟练运用指针、链表、结

3、构体、文件等数据结构。3) 通过课程设计, 提高程序开发能力, 能运用合理的控制流 编写清晰高效的程序。4) 通过课程设计,培养c 语言知识运用和自学能力,真正的把课堂上获得的知识运用起来, 培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。5) 通过课程设计,加强了自己的程序分析能力。2 . 需求分析2.1 要求1) 遵循软件开发过程的基本规范; 能灵活应用, 初步具备运用 c 程序解决实际问题的能力。2) 运用结构化程序设计方法, 按照课程设计题目要求, 完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试c 程序等过程。3) 学会利用数组、结构体、链表进行相关

4、信息表示。4) 功能模块划分清晰, 系统结构图符合功能操作要求, 且有详尽的功能描述5) 各主要功能模块有详尽的流程图及描述, 用函数的形式实现,且调用入口、功能、出口等关系正确。6) 所设计的 c 程序较好的可读性和可靠性;程序书写风格规范,注释清晰。7) 界面友好(良好的人机互交) ,凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。8) 程序经上机调试通过,不应出现语法型、 功能型错误,并获得满意的结果。9) 学会通过各功能性测试用例测试程序的能力, 尽可能避免原则性错误的出现。10) 掌握编写、调试和测试c 语言程序的基本技巧,充分理解结构化程序设计的基本方法。1

5、1) c 语言课程设计报告的内容反应实际设计过程,且符合格式要求,无抄袭现象。2.2 任务描述已知在汽车生产时,需要向零部件生产厂商采购零部件,设计一个汽车零部件采购管理程序,以方便采购管理部门对采购零部件的管理。该单位每次采购都有一个采购编号,每次采购一种零部件。该程序应该具有如下功能1) 添加并保存采购信息: 输入采购编号, 零部件名称,采购员名字,采购日期,采购价格,采购数量,供货单位,需要判断采购价格和数量是否大于零,采购编号是否已存在,采购日期是否合法(形如*-*-* ,例如 2013-09-08) 。2) 根据采购编号查询零部件采购信息3) 根据零部件名称查询其采购信息4) 根据采

6、购编号修改已有采购信息:需要判断修改后的采购编号的唯一性,采购日期的合法性(形如*-*-* ,例如 2013-09-08) 。5) 根据采购编号删除此条采购信息6) 统计功能2.3 运行环境vc+6.0编译环境2.4 开发工具c语百3 .总体设计3.1 系统流设计程序整体功能结构如图一所示:开始显示课程以及学生信息显示主菜单,输入选择读 取 文 件 中 的 采 购 信 息添 加 并 保 存 采 购 信 息由 采 购 编 号 查 找令 部 件 采 购 信 息修由改令并部保件存名采称购查信找息其采购信息删 除 并 保 存 余 下 采 购 信 息统 计 采 购信 息显示所有采购信息根据零部件名称统计

7、其总数量根据采购员名字统计其采购次数3.2 系统模块设计1 ) 封面模块 函数 void huanying() 和函数 void byebye() 构成封面模块,构造和谐人机环境。2)菜单模块函数void menu()和函数void choise()构成选择菜单,二级菜单void tongji()构成统计功能菜单。3)查询模块 函数 void numshow() 和函数 void nameshow() 分别实现根据采购编号和零部件名称查询采购信息的功能,其中会有其他函数辅助。4) 信息处理模块函数void change()实现信息修改功能,函数void disapperr()实现信息删除功能,

8、void input()实现信 息添加功能,void save()实现信息保存功能,void listcg()实现 信息显示功能,其中会有其他函数辅助。5)统计模块 函数int number()实现根据零部件名称统计其 总数量功能,int times()实现根据采购员名字显示其采购次数 的功能,其中会有其他函数辅助。6)日期审查模块函数void checkdate()使用标志位方法实现对时间的审查。4.详细设计 4.1数据结构设计根据系统要求,采购信息包括数据项名称数据项系统表示数据类型数据长度备注米购编勺p1-buynum字符串10零部件名称p1-itemna me字符串10采购日期p1-d

9、ay字符串30采购员名字p1-buyerna me字符串10采购数量p1-count整型4采购价格p1-price单精度8供货单位p1-source字符串10为了能实现系统的优越性和购信息记录表c语言的精华米用链表的建立米, 示意图如下 z3_可编辑4.2模块接口设计1)所有函数声明viod 除 huanying();生信息*/*封面函数,显示课程题目,学void menu();/*主菜单函数,显示各项功能void choise();*/*根据主菜单选择并执行功能*/void readinto(); /* 读 取 文 件 内 的 采 购 信 息*/void input();件中*/void l

10、istcg();*/void numshow();并显示 */* 从键盘添加采购信息并保存到文/* 显 示 所 有 采 购 信 息/* 根据采购编号查询对应采购信息void nameshow(); /* 根据零部件名称查询其采购信息并显示 */void change(); /* 根据采购编号修改并显示采购信息*/void disapper();/* 根据采购编号删除并显示余下采购信息 */void tongji();/* 统计功能菜单, 显示两项统计功能*/int number();/* 根据零部件名称统计其购买总数量*/int times();/* 根据采购员名字统计其采购次数*/ int

11、checktime(int year,int month,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()显示课 程名 称 和学生

12、 信息 , 调用 void menu() 和 void choise() 实现功能显示和功能选择。接着,按照用户的要求,调用 void numshow() 或 void nameshow() 实现查询功能,或调用 void change(),void disapper() 实现修改和删除功能 不管是删除还是修改还是添加都要调用void save()实 现信 息保 存 功 能 。 添加 和 修 改 时 还 要调 用 int checktime(int year,int month,int day) 函数对时间审查。当不需要再执行各项功能时,调用void byebye() 退出管理器。4.3主要功

13、能模块的流程图1)封面模块(以欢迎界面为例,退由界面与此类似)2)菜单模块3)查询模块(返回主菜单页面主菜单显示编号对应采购信息4)信息处理模块(以添加采购信息为例)5)统计模块(以根据零部件名称统计采购总数量为例)6)日期审查模块5.运行结果5.1欢迎界面语言课程设干联系方式请接回车键维线课程题目:片岸零部件采购管理栏芹20130231s3ilh7729tl2g7 (白弓1砰0)keshe慢狗抒言谕入法半5.2主菜单5.3 信息查询页面以回华自束,:2人口的主月0j y.鹿810%徐置_ 1 8 - - 一春千;:7叶匹输入法半i il号名ta hl- vh i- sb - li5.6 退由

14、页面匚; u 5e i5a t e口 u 5ktq p新dubu qe弓 h rit 1 rkekkkjt rnxnxmbmmxmxiwiitxnmlk 汽利 a:ktj*xnak ksrkn jt k e kx k ju 胃 k jr 国 啤 k0 0pm欢迎下次使用理薜*宜逑mmr壮属隆概m * kress any ke当 to continue.搜狗拼音输入法6.程序调试与测试测试数据:米购编号001001001002001003001004零部件名称活塞轮胎后视镜方向盘采购日期2013-09272013-04232013-09-082013-0907采购员名字刘尧徐倩卫添翼李桃琳采购数

15、量90679089采购价格90.00000078.00000078.00000067.000000供货单位汽院十堰黄冈河南6.1 主菜单选择测试若用户输入错误选项,则如图显示6.2采购信息未从文件读入6.3 采购信息的输入测试1 ) 若添加的采购编号已存在,则如图显匚; u sesa c pde 5ktq p工 期建文fwdebu qe写 h e j it 1 wke 一-=甘-0胄 面s例3i 0复回 购蜉叫f7gh返 石等dr叶暹 的名驷三毒立思 蜉八件日吊发食衽(形如四川醴.以回本遴给柬)!时应零部件信息如下.采购编号:腼1的2明狗抖音输a法2)若添加的采购信息日期格式输入错误,则如图显

16、示i:ei j酣:001005 si经埠耨簿、2ml 日日 txms 部购购购购购购ffl:沏的乡如 期外如 崩曲如以叵之键结我; 以叵生键结束3 反叵全键结束3 储三键维瑞:口,sfi13-g9-90名字文字或英文字符串型,以回车链给束m2013-6-89 2013-g2-2921413981 2013-09-033)若查询的采购编号输入错误,则如图显示c:use rsa c edr5ktq p新建文件夹dubu qg h ej m 1 exe人的口任后历直:找由果瓜信旦. 里回返回!存垃u :请核对您的桑物葬号是否辅人正蘸!4)若查询的零部件名称输入错误,则如图显示5)若输入价格为负数时,

17、如图显示6)若输入的数量为负值时,如图显示091009搜狗拼音输二键工匚中? 2012-019-08反回奉键结束巢冯梦博 以同车硬结审.-?b7.问题与不足1、需求分析中存在的问题每次只能从键盘中添加一条采购信息,当遇到需要添加多条信 息时,比较麻烦。统计功能太少,如果要求几个零部件的总价,无法 实现。2、程序中存在的缺陷每次运行其他功能前都要先从文件中读入,比较耗时。有些功能 输入错误时无法重新输入,而是直接跳到主菜单。缓存较多。8. 建议题目应更加贴近生活,这样可以让同学们看到 c 语言的有用之处,激发同学们的学习热情。课程设计的题目涉及范围应该更广。程序设计的功能应相对更加复杂一点,这样

18、有利培养同学们的分析问题,解决问题的能力,同时也能提高同学们对代码的掌握能力。再者,就是验收时应该要学生画出链表结构图,帮助他们更加深刻的掌握知识。9. 编程体会经历了编 c 语言课程设计后, 我对这一学期 c 语言所学内容有了更加深刻的了解和掌握, 特别是一直不懂的链表和指针, 现在发现自己都能运用了,很开心自己的进步。所以,虽然写程序的过程中,遇到各种问题, 调试的时候也是遇到各种令人头大的问题, 但能借助课程设计提高自己对指针和链表的熟练度, 提高自己对c 语言编程的熟练度, 也希望学校可以多开设一些这样的课程, 既是让我们对自己所学知识的一个综合理解与使用, 也可以提高我们的动手实践能

19、力、 对知识的运用能力,更是一个让我们学会独立思考的好机会。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();/根据零部件名称显示

20、采购信息void change();/ 修改采购信息void disapper();/ 删除采购信息void menu();/显示主菜单void choise();/选择所需功能void tongji();/ 统计功能菜单int number();/ 根据零部件名称统计采购的零部件总数量int times();/根据采购员名字统计采购的零部件总数量int checkdate(int year,int month,int day);/ 检测时间void byebye();/ 告别界面/ 定义结构体/* 定义全局变量*/ struct buychar buynum10;char itemname1

21、0;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(nnntt*n)

22、;printf(tt*n);printf(tt*c 语 言 课 程 设 计*n);printf(tt*n);printf(tt*学 生 姓 名 : 徐 倩*n);printf(tt*指 导 老 师 : 吴 年 志*n);printf(tt*班 级 : t1323-15*n);printf(tt*学 号 : 20130231538*n);printf(tt*联系方式:69180 )*n);printf(tt*n);printf(tt*课程题目:汽车零部件采购管理程序*n);printf(tt*n);printf(tt*n);可编辑fflush(stdin);printf

23、(请按回车键继续 );告别界面*/*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*欢 迎 使 用 汽 车 零 部 件 管 理 系 统*、m-printf(tt |tttt|n

24、);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(tt |tt6,删除并保存余下采购信息 t|n);printf(tt |

25、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(lingjian.txt,r)=null) /* 打开文件时无此文件*/printf( 文件打开错误:n);exit(0);p1=(struct buy *)malloc(len)

26、;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,&p 1-price,p1-source);p2=(struct buy *)malloc(len);/*p2 指向新申请的节占 * i点/p1-next =p2;p3=p1;p1=p2;p1-next =null;free(p2);p3-next=null;fclose(fp);/* 关闭文件 */flag=1;printf( 文件读取

27、成功! 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

28、 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;long y,m,d;if(flag=0)printf( 未建立,采购信息数据库为空n);printf( 按任意键返回 );getch();return

29、;printf( 请输入将要添加的采购编号(形如 001002 ,以回车键结束) n);fflush(stdin);scanf(%s,p2-buynum);p1=head;while(p1!=null)if(strcmp(p2-buynum,p1-buynum)=0)/* 找 到 数printf(你输入的采购编号已存在! ! ! );printf(对应零部件信息如下: );printf(采购编号 :%sn,p1-buynum);printf(零部件名称:%sn,p1-itemname);printf(采购日期 :%sn,p1-day);printf(采购员名字:%sn,p1-buyername

30、);printf(采购数量 :%dn,p1-count);printf(采购价格 :%fn,p1-price);printf(供货单位 :%sn,p1-source);n=1;/* 标志位 */printf(请按任意键返回! n);getch();system(cls);break;p1=p1-next;if(n!=1)据库信息中与输入相同的采购编号*/system(cls);p1=head;while(p1-next!=null)p1=p1-next;printf( 请输入 );p2=(struct buy *)malloc(len);/ 开辟一个新单元fflush(stdin);for(i

31、=0;ibuynum);if(i=1)fflush(stdin);printf( 零部件名称(文字或英文字符串型) : );scanf(%s, p2-itemname);if(i=2)doprintf( 采购日期 (形如 *-*-* ,以回车键结束): );fflush(stdin);scanf(%s,p2-day);if(p2-day4=-&p2-day7=-&strlen(p2-day)=10) y=(p2-day0-48)*1000+(p2-day1-48)*100+(p2-day2-48)*10+( p2-day3-48);m=(p2-day5-48)*10+(p2-day6-48);

32、d=(p2-day8-48)*10+(p2-day9-48);k=checkdate(y,m,d);/* 根据函数返回值判断是否要重新输入 */if(k=1)break;while(1);if(i=3)fflush(stdin);printf( 采购员名字(文字或英文字符串型,以回车键结束): );scanf(%s,p2-buyername);if(i=4)fflush(stdin);printf( 采购数量(文字或英文字符串型,以回车键结束) : );scanf(%d, &p2-count);while(p2-countcount);if(i=5)fflush(stdin);printf(

33、采购价格(数字型,以回车键结束) : );scanf(%f,&p2-price);while(p2-priceprice);if(i=6)fflush(stdin);printf( 供货单位(文字或英文字符串型,以回车键结束) : );scanf(%s,p2-source);p2-next=null;p1-next =p2;p1=head;system(cls);printf( 所有信息如下,请核实 );while(p1!=null)printf( 采购编号 :%sn,p1-buynum);printf(零部件名称:%sn,p1-itemname);printf(采购日期 :%sn,p1-da

34、y);printf(采购员名字:%sn,p1-buyername);printf(采购数量 :%dn,p1-count);printf(采购价格 :%fn,p1-price);printf(供货单位 :%sn,p1-source);printf(nnn);p1=p1-next;save();printf(按任意键返回 );fflush(stdin);根据采购编号查找采购信scanf(%c,&ch);/*息函数 */ void numshow()char anum10,ch;p1=head;if(p1=null)printf( 采购信息数据库为空n);printf( 按任意键返回 );getch

35、();system(cls);exit(0);printf( 请输入所查零件编号(形如 000001, 以回车键结束): n);getchar();scanf(%s,anum);while(p1!=null)if(strcmp(anum,p1-buynum)=0)/* 找到与信息数据库中与输入相同的采购编号*/printf(采购编号:%sn,p1-buynum);printf( 零部件名称:%sn,p1-itemname);printf(采购日期:%dn,p1-day);printf( 采购员名字:%sn,p1-buyername);printf(采购数量:%dn,p1-count);prin

36、tf( 采购单价 :%fn,p1-price);printf( 供货单位 :%sn,p1-source);break;elsep1=p1-next;if(p1=null)/*p1=null表示到最后都没有找到与信息数据库中与输入相同的零部件名称*/printf( 文件中没有您所查找的采购信息, 请核对您的采购编号是否输入正确! n);printf( 请按任意键返回返回! );fflush(stdin);scanf(%c,&ch);printf( 按任意键返回 );fflush(stdin);scanf(%c,&ch);根据采购零部件名称查/*找采购信息*/void nameshow()char

37、 aname10,ch;int n=0;p1=head;if(p1=null)printf( 采购信息数据库为空n);printf( 按任意键返回 );getch();system(cls);exit(0);printf( 请输入所查零件名称(以回车键结束): n);fflush(stdin);scanf(%s,aname);while(p1!=null)if(strcmp(p1-itemname,aname)=0)printf( 采购编号: %sn,p1-buynum);printf( 零部件名称: %sn,p1-itemname);printf( 采购日期:%dn,p1-day);prin

38、tf( 采购员名字: %sn,p1-buyername);printf( 采购数量:%dn,p1-count);printf( 采购单价:%fn,p1-price);printf( 供货单位:%sn,p1-source);n=1;elsep1=p1-next;if(n!=1)printf( 文件中没有您所查找的采购信息, 请核对您的零部件名称是否输入正确! n);printf( 请按任意键返回返回! );fflush(stdin);scanf(%c,&ch);printf( 按任意键返回 );fflush(stdin);scanf(%c,&ch);删除并保存余下采购信息函数*/void dis

39、apper()char anum10,ch;if(flag=0)/*flag=0 表 示 未 建 立 文件,标志位法*/printf( 未建立,采购信息数据库为空n);printf( 按任意键返回 );getch();return;if(head=null)printf(n 采购信息数据库为空,无法删除,请按任意键返回 :n);getch();system(cls);return;p1=head;/*p1 指向头结点 */*printf( 请输入要删除的采购信息编号:n);fflush(stdin);scanf(%s,anum);while(strcmp(anum,p1-buynum)!=0&p1-next!=null)/* 找到要删除的学号*/p2=p1;p1=p1-next ;if(strcmp(anum,p1-buynum)=0)if(head-next=null)/* 只有一个节点的情况*/free(head);head=null;elseif(head=p1)/* 要删除的编号在第一个节点中 */head=p1-next;free(p1);elsep2-next=p1-next;free(p1);printf( 已删除! n);listcg();save();elseprintf( 找不到此采购编号对应的采购信息 ,请核您输入的采购编号是否正确 !);pr

温馨提示

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

最新文档

评论

0/150

提交评论