《C语言库存管理课程设计3620.docx》由会员分享,可在线阅读,更多相关《C语言库存管理课程设计3620.docx(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学 号:01200803349003066课 程 设 计计题 目库存模型型维护学 院管理学院院专 业信息管理理与信息息系统班 级08033姓 名黄勇彪指导教师师王庆国20100年07月12日课程设计计任务书书学生姓名名:黄勇勇彪 专专业班级级: 信管00803指导教师师:王庆庆国 工工作单位位: 管理学学院 题 目目:库存存模型维维护初始条件件:以链式结结构的有有序表表表示某商商厦家电电部的库库存模型型。当有有提货或或进货的的业务要要求时,需需要对该该有序表表及时进进行维护护。每个个工作日日结束之之后,将将链式结结构的有有序表中中的数据据以文件件的形式式保存;每天营营业之初初需要将将文件形形式
2、的数数据恢复复成链式式结构的的有序表表。要求完成成的主要要任务: (包包括课程程设计工工作量及及其技术术要求、说说明书撰撰写等具具体要求求)链式结构构的有序序表的结结点结构构的数据据域应包包括家电电名称、品品牌、型型号、单单价及数数量,以以结点中中单价值值的非减减序列体体现着有有序性。日日常的维维护操作作应包括括初始化化、创建建表、插插入、删删除、更更新数据据、打印印、查询询以及链链式结构构的有序序表与文文件之间间的数据据转换。时间安排排:序号设计内容容所用时间间1问题分析析和任务务定义0.5天天2数据类型型和系统统设计0.5天天3编码实现现和静态态检查3天4上机准备备和上机机调试2天5总结和
3、整整理设计计报告1天合 计7天指导教师师签名: 20010年 07月02日系主任(或或责任教教师)签签名: 20110年 07月02日武汉理工大学应用数据结构课程设计说明书库存模型型维护1. 需求分析析1.1 背景分析析在商场中中,各种种商品的的库存量量在每天天的销售售与进货货过程中中会发生生不断的的变化,而而由于商商场是零零售经营营,所以以每天涉涉及库存存的维护护是一个个比较麻麻烦的问问题,另另一方面面,由于于受市场场和物价价,居民民消费水水品的影影响,商商品的价价格在不不同的时时间内会会发生一一定的变变化,部部分商品品也会由由于科技技的发展展,或者者消费者者的价值值取向,审审美观等等方面的
4、的影响,会会淘汰掉掉,这既既涉及到到库存价价格的变变化,以以及商品品的变化化,作为为一个大大型商场场,没有有好的库库存管理理方案,将将会是一一场灾难难,所以以,库存存管理系系统是必必需的。为为此,我我用所学学的C语语言设计计了这样样一个实实现库存存模型维维护的程程序,从从而实现现商场家家电部门门的库存存维护,其其中包括括商品的的初始化化,商品品的录入入,淘汰汰商品的的删除,以以及商品品信息的的更新,商商品信息息的打印印,以及及库存商商品文件件与程序序中表的的转换。1.2 功能分分析1.商商品信息息的输入入形式:以手动动输入或或者从文文件中读读取。商商品结构构体中(商商品号,商商品名,商商品品牌
5、,商商品单价价,商品品数量)是是要求输输入的,其其中商品品号和商商品数量量的数据据类型是是整型,商商品名和和商品品品牌的数数据类型型是字符符串型,商商品单价价是浮点点型。2.输输出的形形式包括括以单行行为一商商品信息息的屏幕幕输出和和输出到到文件。包包括按商商品号的的顺序输输出和按按商品价价格高低低输出两两种。3.商商品的初初始化,商商品的录录入,按按商品号号的排序序,按商商品号排排序输出出,按商商品价格格排序,按按商品价格排排序输出出,指定定商品的的查询,淘淘汰商品品的删除除,以及及商品信信息的更更新,商商品信息息的打印印,以及及库存商商品文件件与程序序中表的的转换。4.测测试数据据,如下下
6、截图:当库存存文件记记录为空空时,输输出库存存文件,结结果如下下:当库存文文件记录录为空时时,删除除记录,结结果如下下:当库存文文件记录录为空时时,排序序输出记记录,结结果如下下:当库存文文件记录录为空时时,出货货操作时时,结果果如下:当库存文文件记录录为空时时,查询询操作时时,结果果如下:当库存文文件记录录为空时时,修改改操作时时,结果果如下:2. 概要设计计2.1 商品结结构体数数据类型型如下typeedeff sttrucct nnodee /定义结结构体innt nno;/产产品号chhar namme110;/产产品名chhar kinnd110;/产产品种类类flloatt prr
7、icee;/产产品单价价innt nnum;/产产品库存存数量innt ppno;/产产品号指指针innt ppnumm;/产产品库存存数量指指针innt pppriice;/产产品价格格指针EmmpTyype;2.2 主函数数的流程程图如下下3. 详细设计计3.1 函数天天用关系系#inccludde#inncluude#deefinne MMaxSSizee 1000typpedeef sstruuct nodde /定义义结构体体innt nno;/产产品号chhar namme110;/产产品名chhar kinnd110;/产产品种类类flloatt prricee;/产产品单价价i
8、nnt nnum;/产产品库存存数量innt ppno;/产产品号指指针int pnuum;/产产品库存存数量指指针innt pppriice;/产产品价格格指针EmmpTyype;voiid RReaddFille(EEmpTTypee emmp,innt &n) /对库库存文件件读取的的函数voiid CCleaarupp(EmmpTyype empp,intt &nn)/清清空库存存文件中中的记录录的函数数voiid SSaveeFille(EEmpTTypee emmp,innt &n)/将将商品记记录保存存到商品品库库文文件的函函数voiid IInpuutEmmp(EEmpTTyp
9、ee emmp,innt &n)/插插入新的的记录函函数voiid OOutpputFFilee(EmmpTyype empp,intt n)/输输出库存存文件中中所有记记录的函函数voiid PPurcchasse(EEmpTTypee emmp,innt nn)/进进货记录录些如山山品库存存文件的的函数voiid SShipppinng(EEmpTTypee emmp,innt nn)/出出货记录录保存到到商品文文件的函函数voiid DDisppno(EmppTyppe eemp,iint n)/按按商品号号排序输输出库存存文件的的函数voiid DDispppriice(EmppTyp
10、pe eemp,iint n)/按按商品价价格排序序输出的的函数voiid IInquuiryy(EmmpTyype empp,intt n)/查查询商品品记录的的函数voiid MModiify(EmppTyppe eemp,iint n)/修修改商品品记录的的函数voiid DDeleete(EmppTyppe eemp,iint &n)/删删除文件件中商品品记录的的函数intt Coompaarisson(chaar aa,chaar bb) /字符符串比较较voiid mmainn() dooublledummmy;duummyy=siin(00.0);EmmpTyype emppMa
11、axSiize;innt kk, nn,t,h;chhar a110=hyyb00;chhar b110;chhar c110=hxx12330;chhar d110;prrinttf( 欢迎迎登陆黄黄勇彪的的库存维维护系统统!n);prrinttf( =n);prrinttf(请输入入您的登登录名:);sccanff(%s,b);t=Commparrisoon(aa,b);iff (tt!=00)pprinntf(对不不起,登登录名错错误!);ellsepprinntf(请输输入您的的密码:);sscannf(%s,d);hh=Coompaarisson(c,dd);iif (h!=0)pr
12、iintff(对对不起,密密码错误误!);eelseepriintff( 欢迎使使用黄勇勇彪的库库存维护护系统!n);priintff( =nn);ReaddFille(eemp,n);doprinntf( 1:输入新新产品记记录 2:输出库库存信息息n );prinntf( 3:清清空库存存记录 4:删除记记录nn);prinntf( 5: 按产产品号排排序输出出 6:按按价格排排序输出出n);prinntf( 7:进货登登记 8:出货登登记nn);prinntf( 9:查询记记录 100:修改改记录n);prinntf( 0:存储退退出nn);prinntf(请选选择操作作0-10:);s
13、cannf(%d,&kk);swittch(k)casee 1:InpputEEmp(empp,n);breaak;casee 2:OuttputtFille(eemp,n);breaak;casee 3:Cleearuup(eemp,n);breaak;casee 4:Delletee(emmp,nn);breaak;casee 5:Disspnoo(emmp,nn);breaak;casee 6:Disspprricee(emmp,nn);breaak;casee 7:Purrchaase(empp,n);breaak;casee 8:Shiippiing(empp,n);breaak;c
14、asee 9:Inqquirry(eemp,n);breaak;casee 100:Moodiffy(eemp,n);breaak;casee 0:SavveFiile(empp,n);breaak;whiile(k!=0);3.2 函数调调用关系系结构图图4. 调试分析析4.1 遇到的的问题1,调试试的过程程中遇到到了居多多问题,首首先是单单价作为为浮点数数的输出出问题,在在输出过过程中,一一直未能能正常输输出,最最后想到到了以前前也遇到到类似问问题,查查阅资料料,发现现在函数数开始添添加库头头函数#inccludde,程序序中加入入douublee duummyy=siin(00.0);即
15、可可解决该该问题,其其次是文文件和顺顺序表的的转换问问题,即即文件的的读和写写,当然然这些在在课本上上都是能能够找到到的,输输出格式式问题,这这个也花花了相当当长的时时间,由由于缺乏乏经验,在在控制输输出格式式时,再再三调试试才是文文件中的的记录合合理输出出,还有有各个函函数的编编制问题题,虽然然说起来来都是很很简单的的几句话话,但是是在实际际操作过过程中却却需要大大量的时时间去解解决这些些细碎的的问题。2,在设设计系统统登陆,涉涉及字符符数组的的比较,其其中用字字符数组组常量存存储用户户名,而而登录时时输入的的用户名名存储在在另一字字符数组组中,然然后调用用设计的的字符比比较函数数进行比比较
16、,看看输入的的用户名名与字符符常量数数组中存存储的字字符串是是否一致致,是一一致,则则进行第第二步的的密码校校验,当当然密码码校验和和用户名名校验类类似。在在这其中中,关于于字符常常量数组组应该是是什么,一一直存在在着偏差差,例如如:开始始我以为为应该设设为charr a10=hhyb,但是是在调试试过程中中,一直直未能正正确,后后翻看以以前教材材,查看看关于字字符数组组的知识识,才知知道,键键盘输入入的字符符数组是是以“0”结尾的的,后通通过调试试,完成成了这一一功能,虽虽然这是是自己额额外添加加的功能能,但是是还是收收获不少少,其次次是感觉觉自己的的知识不不够牢固固,有一一种“知识用用时方
17、恨恨少”的感觉觉。3,在涉涉及到CC语言编编程时,关关于使用用的环境境问题是是大家问问我问的的最多的的问题,其其实我个个人也遇遇到了同同样的麻麻烦,因因为以前前C语言言的程序序设计动动用的是是TC,总总的感觉觉是TCC编程时时,函数数内部调调试比较较好使,但但是涉及及多个文文件链接接时的工工程文件件时,就就显得有有些繁琐琐,没有有像VCC和VSS那样清清晰的文文件结构构,除此此之外,TTC的界界面单调调,但是是总的来来说TCC的关键键字显示示对于编编程人员员来说,有有很好的的提示作作用,而而且他也也可以结结合文本本文件编编程,而而VS则则属于大大型工程程编辑的的,其界界面,支支持中文文等方面面
18、就是其其强势的的一面,以以前一直直没怎么么使用VVS,但但是这次次,为了了提高系系统的可可阅读性性,及良良好的人人机界面面,采用用了VSS,从TTC到VVS,还还是存在在一些代代码的区区别,当当然修改改后的效效果是显显著的,界界面支持持中文,是是库存管管理一目目了然。4,算法法的分析析,在时时间复杂杂度和空空间复杂杂度上,我我的程序序可能存存在一些些问题,因因为我用用的是顺顺序表结结合指针针,我个个人认为为,同样样的问题题,用简简单的方方式解决决是最高高效的,况况且我们们课程设设计的时时间有限限,顺序序表比链链表掌握握的基础础好一些些,所以以我选择择了最适适合我的的方式,导导致了在在进行产产品
19、信息息删除时时,时间间复杂度度稍高,但但是这并并不存在在很大的的问题。在在时间和和空间复复杂度上上,基本本上也得得到了很很好的控控制。4.2 经验和和体会编程过程程中必须须要有明明确的思思路,只只有有明明确的思思路,才才会少走走弯路,所所谓“磨刀不不误砍柴柴工”,有了了明确的的路线,你你的工作作便会事事半功倍倍!其其次是编编程过程程中,要要有恒心心,要敢敢于创新新,当然然,在遇遇到麻烦烦时,不不要忘了了查阅工工具书,好好比喻CC语言函函数速查查手册,这这样同样样会让你你事半功功倍。最最后就是是学习的的工程中中要勇于于动手实实践,没没有实践践,再好好的理论论基础也也是空谈谈,在我我们班的的很多同
20、同学便是是这样,考考试成绩绩相当牛牛,动起起手来确确实四处处碰壁。这这也证实实了强大大的思想想并不能能支撑一一个完美美的现实实。5. 用户使用用说明5.1 登陆提提示登陆名为为:hyyb登录密密码为:hx1123登陆界界面如下下:5.2 成功登登陆后操操作第一步,选选择你要要进行的的操作(程程序会提提示你),第第二步,按按照你选选择的操操作,进进行输入入等步骤骤即可(程程序会提提示)。简简单,一一目了然然的操作作提示,使使整个程程序更加加和谐化化!附加说明明:关于生生成的hhyb.exee文件,貌貌似需要要安装VVS。具体体的还未未验证。6. 测试结果果6.1 运行测测试库存维护护系统登登陆界
21、面面:初始操操作界面面,如下下:插入一一组新的的商品记记录,如如下:(插插入新产产品5号号产品的的信息)输出库存存文件中中的商品品记录,如如下:将库文件件中的商商品按商商品号排排序并输输出,如如下:将库存文文件中的的商品按按单价排排序并输输出,如如下:进货操作作,如下下:(11号商品品进货55件)出货操作作,如下下:(11号商品品出货115件)按商品号号查询某某一商品品的操作作,如下下:(查查询5号号商品的的信息)更新商品品信息的的操作,如如下:(修改商商品5的的编号,价价格,数数量)删除商品品信息的的操作,如如下:(删删除2号号产品)6.2 库存信信息文件件保存商品品信息到到库存文文件goo
22、od.datt,如下下:7. 附录代码如下下:#inccludde stddafxx.h#inccluddesstdiio.hh#inccluddemmathh.h#deffinee MaaxSiize 1000typeedeff sttrucct nnodee/定定义商品品记录结结构体intt noo;chaar nnamee100;chaar kkindd100;flooat priice;intt nuum;intt pnno;/指指向下一一产品的的产品号号intt pnnum;/指指向下一一产品的的数量intt pppricce;/指指向下一一产品的的单价EmppTyppe;voidd
23、 ReeadFFilee(EmmpTyype empp,intt &nn)/读读取库存存文件并并存入eemp数数组FILLE *fp;/定定义文件件指针lonng llenggth;intt i;if(fpp=foopenn(ggoodd.daat,rbb)=NNULLL)/判判断文件件是否可可读n=0;reeturrn;fseeek(fp,0,22);/文文件指针针移到文文件尾lenngthh=fttelll(fpp);/llenggth求求出文件件长度rewwindd(fpp);/文文件位置置指针指指向文件件首n=llenggth/sizzeoff(EmmpTyype);if(n!=0)n
24、-; elsseemmp00.ppno=empp0.pnnum=empp0.pppricce=-1; /n=00时,初初始化指指针 forr(i=0;ii 文件不不能打开开n);reeturrn;empp0.pnno=eemp0.pnuum=eemp0.pprricee=-11;n=00;fcllosee(fpp);priintff( =nn);voidd SaaveFFilee(EmmpTyype empp,intt &nn)/将将empp数组存存入库存存文件intt i;FILLE *fp;if(fpp=foopenn(ggoodd.daat,wbb)=NNULLL)prrinttf( 文
25、件不不能打开开n);reeturrn;if(n11) foor(ii=0;i输入入产品号号,产品品名,品品牌,价价格,数数量:n);n+;scaanf(%dd%s%s%ff%d,&eempn.no,&emmpnn.nnamee,&eempn.kinnd,&emppn.prricee,&eempn.numm);forr(i=0;ii=nn-2;i+)iff(emmpii.nno=emppn.noo)eempi.numm=emmpii.nnum+emppn.nuum;nn=n-1;emppn.pnno=eempn.pnuum=eempn.pprricee=0;priintff( =nn);void
26、d OuutpuutFiile(EmppTyppe eemp,iint n)/输输出库存存文件的的所有记记录intt i;if(n 没任何何记录n); reeturrn;forr(i=1;ii%3d%10ss%100s %.2ff %dn,emppi.noo,emmpii.nnamee,emmpii.kkindd,emmpii.ppricce,eempi.numm);priintff( =nn);voidd Puurchhasee(EmmpTyype empp,intt n) /库库存已有有商品的的进货 intt noo,nuum,ii;intt fllag=0;priintff(请请输入进进
27、货产品品的产品品号,数数量:n);scaanf(%dd%d,&nno,&numm);forr(i=1;ii=nn;i+)iff(emmpii.nno=no)emppi.nuum=eempi.numm+nuum;fflagg=fllag+1;if(flaag=0)priintff(该该产品是是第一次次入库,请请选择操操作,进进行产品品详细登登记!n);/如果果输入的的是新产产品,提提示应该该进行新新品登记记操作priintff( =nn);voidd Shhipppingg(EmmpTyype empp,intt n)/库库存已有有商品出出货 intt noo,nuum,ii;intt flla
28、g=0;if(n 没任何何记录,无无法出货货!n); reeturrn;priintff(请请输入出出货产品品的产品品号,数数量:n);scaanf(%dd%d,&nno,&numm);forr(i=1;ii=nn;i+)iff(emmpii.nno=no)emppi.nuum=eempi.numm-nuum;fflagg=fllag+1;if(flaag=0)priintff(n);priintff( =nn);voidd Diispnno(EEmpTTypee emmp,innt nn)/按按商品号号排序输输出库存存商品记记录innt ii=2,j;intt k=empp0.pnno;if
29、(n 没有产产品记录录,不能能按产品品号排序序!n); reeturrn;empp0.pnno=11;emmp11.ppno=-1;whiile(i=n) j=0; whhilee(emmpjj.ppno!=-11 & emmpeempj.pnoo.nno%3d%10ss%100s %.2ff %dn,emppk.noo,emmpkk.nnamee,emmpkk.kkindd,emmpkk.ppricce,eempk.numm);k=emppk.pnno;priintff( =nn);voidd Diispppricce(EEmpTTypee emmp,innt nn)/按按价格排排序输出出库
30、存商商品记录录innt ii=2,j;intt k=empp0.pppricce;if(n 没有产产品记录录,不能能按价格格排序!nn); reeturrn;empp0.pppricce=11;emmp11.pppriice=-1;whiile(i=n) j=0; whhilee(emmpjj.pppriice!=-11 & emmpeempj.pprricee.ppricce%33d%110s%10ss %.2f %dnn,eempk.no,emppk.naame,emppk.kiind,emppk.prricee,emmpkk.nnum);k=eempk.pprricee;priintff
31、( =nn);voidd Innquiiry(EmppTyppe eemp,iint n)/查查询库存存中某一一商品记记录intt noo,i;if(n 没任何何记录,不不能查询询!n); reeturrn;priintff(请请输入你你要查询询的产品品号:n);scaanf(%dd,&no);forr(i=0;ii%3dd%100s%110s %.22f %ddn,emmpii.nno,eempi.namme,eempi.kinnd,eempi.priice,emppi.nuum);priintff( =nn);voidd Moodiffy(EEmpTTypee emmp,innt nn)/
32、修修改商品品记录intt NOO,noo,nuum,ii,j;chaar nnamee100;chaar kkindd100;flooat priice;intt fllag=0;if(n 没任何何记录,无无法修改改!n); reeturrn;priintff(请请输入你你要修改改的产品品的产品品号:n);scaanf(%dd,&NO);forr(j=0;jj=nn;j+)iff(emmpjj.nno=NO)fflagg=fllag+1;if(flaag=0) prrinttf(库存中中没有该该产品!);elsseprrinttf(请输入入你修改改后的信信息产品品号,价价格,数数量:n);sccanff(%d%ff%d,&nno,&priice,&nuum);foor(ii=0;i=n;ii+)iif(eempi.no=NOO)emppi.noo=noo;emmpii.ppricce=ppricce;eempi.numm=nuum;priintff( =