学号:0120803490306课程设计题目库存模型维护学院管理学院专业信息管理与信息系统班级0803姓名黄勇彪指导教师王庆国2010年07月12日课程设计任务书学生姓名:黄勇彪专业班级:信管0803指导教师:王庆国工作单位:管理学院题目:库存模型维护初始条件:以链式结构的有序表表示某商厦家电部的库存模型。当有提货或进货的业务要求时,需要对该有序表及时进行维护。每个工作日结束之后,将链式结构的有序表中的数据以文件的形式保存;每天营业之初需要将文件形式的数据恢复成链式结构的有序表。要求完成的主要任务:(包括课程设计工作量及其技术要求、说明书撰写等具体要求)链式结构的有序表的结点结构的数据域应包括家电名称、品牌、型号、单价及数量,以结点中单价值的非减序列体现着有序性。日常的维护操作应包括初始化、创建表、插入、删除、更新数据、打印、查询以及链式结构的有序表与文件之间的数据转换。时间安排:序号设计内容所用时间1问题分析和任务定义0.5天2数据类型和系统设计0.5天3编码实现和静态检查3天4上机准备和上机调试2天5总结和整理设计报告1天合计7天指导教师签名:2010年07月02日系主任(或责任教师)签名:2010年07月02日武汉理工大学《应用数据结构》课程设计说明书1库存模型维护1.需求分析1.1背景分析在商场中,各种商品的库存量在每天的销售与进货过程中会发生不断的变化,而由于商场是零售经营,所以每天涉及库存的维护是一个比较麻烦的问题,另一方面,由于受市场和物价,居民消费水品的影响,商品的价格在不同的时间内会发生一定的变化,部分商品也会由于科技的发展,或者消费者的价值取向,审美观等方面的影响,会淘汰掉,这既涉及到库存价格的变化,以及商品的变化,作为一个大型商场,没有好的库存管理方案,将会是一场灾难,所以,库存管理系统是必需的。为此,我用所学的C语言设计了这样一个实现库存模型维护的程序,从而实现商场家电部门的库存维护,其中包括商品的初始化,商品的录入,淘汰商品的删除,以及商品信息的更新,商品信息的打印,以及库存商品文件与程序中表的转换。1.2功能分析1.商品信息的输入形式:以手动输入或者从文件中读取。商品结构体中(商品号,商品名,商品品牌,商品单价,商品数量)是要求输入的,其中商品号和商品数量的数据类型是整型,商品名和商品品牌的数据类型是字符串型,商品单价是浮点型。2.输出的形式包括以单行为一商品信息的屏幕输出和输出到文件。包括按商品号的顺序输出和按商品价格高低输出两种。3.商品的初始化,商品的录入,按商品号的排序,按商品号排序输出,按商品价格排序,按商品价格排序输出,指定商品的查询,淘汰商品的删除,以及商品信息的更新,商品信息的打印,以及库存商品文件与程序中表的转换。4.测试数据,如下截图:当库存文件记录为空时,输出库存文件,结果如下:当库存文件记录为空时,删除记录,结果如下:武汉理工大学《应用数据结构》课程设计说明书2当库存文件记录为空时,排序输出记录,结果如下:当库存文件记录为空时,出货操作时,结果如下:当库存文件记录为空时,查询操作时,结果如下:当库存文件记录为空时,修改操作时,结果如下:武汉理工大学《应用数据结构》课程设计说明书32.概要设计2.1商品结构体数据类型如下typedefstructnode{//定义结构体intno;//产品号charname[10];//产品名charkind[10];//产品种类floatprice;//产品单价intnum;//产品库存数量intpno;//产品号指针intpnum;//产品库存数量指针intpprice;//产品价格指针}EmpType;2.2主函数的流程图如下武汉理工大学《应用数据结构》课程设计说明书43.详细设计3.1函数天用关系#includestdio.h#includemath.h#defineMaxSize100typedefstructnode{//定义结构体intno;//产品号charname[10];//产品名charkind[10];//产品种类floatprice;//产品单价intnum;//产品库存数量intpno;//产品号指针intpnum;//产品库存数量指针intpprice;//产品价格指针}EmpType;voidReadFile(EmpTypeemp[],int&n)//对库存文件读取的函数voidClearup(EmpTypeemp[],int&n)//清空库存文件中的记录的函数voidSaveFile(EmpTypeemp[],int&n)//将商品记录保存到商品库库文件的函数voidInputEmp(EmpTypeemp[],int&n)//插入新的记录函数voidOutputFile(EmpTypeemp[],intn)//输出库存文件中所有记录的函数voidPurchase(EmpTypeemp[],intn)//进货记录些如山品库存文件的函数voidShipping(EmpTypeemp[],intn)//出货记录保存到商品文件的函数voidDispno(EmpTypeemp[],intn)//按商品号排序输出库存文件的函数voidDispprice(EmpTypeemp[],intn)//按商品价格排序输出的函数voidInquiry(EmpTypeemp[],intn)//查询商品记录的函数voidModify(EmpTypeemp[],intn)//修改商品记录的函数voidDelete(EmpTypeemp[],int&n)//删除文件中商品记录的函数intComparison(chara[],charb[])//字符串比较voidmain(){doubledummy;dummy=sin(0.0);EmpTypeemp[MaxSize];intk,n,t,h;chara[10]=hyb\0;charb[10];charc[10]=hx123\0;chard[10];printf(欢迎登陆黄勇彪的库存维护系统!!!\n);printf(武汉理工大学《应用数据结构》课程设计说明书5============================================================================\n);printf(请输入您的登录名:);scanf(%s,b);t=Comparison(a,b);if(t!=0)printf(对不起,登录名错误!!);else{printf(请输入您的密码:);scanf(%s,d);h=Comparison(c,d);if(h!=0)printf(对不起,密码错误!!);else{printf(欢迎使用黄勇彪的库存维护系统!!!\n);printf(============================================================================\n);ReadFile(emp,n);do{printf(1:输入新产品记录2:输出库存信息\n);printf(3:清空库存记录4:删除记录\n);printf(5:按产品号排序输出6:按价格排序输出\n);printf(7:进货登记8:出货登记\n);printf(9:查询记录10:修改记录\n);printf(0:存储退出\n);printf(请选择操作0--10:);scanf(%d,&k);switch(k){case1:InputEmp(emp,n);break;case2:OutputFile(emp,n);break;case3:Clearup(emp,n);break;case4:Delete(emp,n);break;case5:Dispno(emp,n);武汉理工大学《应用数据结构》课程设计说明书6break;case6:Dispprice(emp,n);break;case7:Purchase(emp,n);break;case8:Shipping(emp,n);break;case9:Inquiry(emp,n);break;case10:Modify(emp,n);break;case0:SaveFile(emp,n);break;}}while(k!=0);}}}3.2函数调用关系结构图武汉理工大学《应用数据结构》课程设计说明书74.调试分析4.1遇到的问题1,调试的过程中遇到了居多问题,首先是单价作为浮点数的输出问题,在输出过程中,一直未能正常输出,最后想到了以前也遇到类似问题,查阅资料,发现在函数开始添加库头函数#includemath.h,程序中加入doubledummy=sin(0.0);即可解决该问题,其次是文件和顺序表的转换问题,即文件的读和写,当然这些在课本上都是能够找到的,输出格式问题,这个也花了相当长的时间,由于缺乏经验,在控制输出格式时,再三调试才是文件中的记录合理输出,还有各个函数的编制问题,虽然说起来都是很简单的几句话,但是在实际操作过程中却需要大量的时间去解决这些细碎的问题。2,在设计系统登陆,涉及字符数组的比较,其中用字符数组常量存储用户名,而登录时输入的用户名存储在另一字符数组中,然后调用设计的字符比较函数进行比较,看输入的用户名与字符常量数组中存储的字符串是否一致,是一致,则进行第二步的密码校验,当然密码校验和用户名校验类似。在这其中,关于字符常量数组应该是什么,一直存在着偏差,例如:开始我以为应该设为chara[10]=hyb,但是在调试过程中,一直未能正确,后翻看以前教材,查看关于字符数组的知识,才知道,键盘输入的字符数组是以“\0”结尾的,后通过调试,完成了这一功能,虽然这是自己额外添加的功能,但是还是收获不少,其次是感觉自己的知识不够牢固,有一种“知识用时方恨少”的感觉。3,在涉及到C语言编程时,关于使用的环境问题是大家问我问的最多的问题,其实我个人也遇到了同样的麻烦,因为以前C语言的程序设计动用的是TC,总的感觉是TC编程时,函数内部调试比较好使,但是涉及多个文件链接时的工程文件时,就显得有些繁琐,没有像VC和VS那样清晰的文件结构,除此之外,TC的界面单调,但是总的来说TC的关键字显示对于编程人员来说,有很好的提示作用,而且他也可以结合文本文件编程,而VS则属于大型工程编辑的,其界面,支持中文等方面就是其强势的一面,以前一直没怎么使用VS,但是这次,为了提高系统的可阅读性,及良好的人机界面,采用了VS,从TC到VS,还是存在一些代码的区别,当然修改后的效果是显著的,界面支持中文,是库存管理一目了然。4,算法的分析,在时间复杂度和空间复杂度上,我的程序可能存在一些问题,因为我用的是顺序表结合指针,我个人认为,同样的问题,用简单的方式解决是最高效的,况且我们课程设计的时间有限,顺序表比链表掌握的基础好一些,所以我选择了最适合我的方式,导致了在进行产品信息删除时,时间复杂度稍高,但是这并不存在很大的问题。在时间和空间复杂度上,基本上也得到了很好的控制。4.2经验和体会编程过程中必须要有明确的思路,只有有明确的思路,才会少走弯路,所谓“磨刀不误砍柴工”,有了明确的路线,你的工作便会事半功倍!!其次是编程过程中,要有恒心,要敢于创新,当然,在遇到麻烦时,不要忘了查阅工具书,好比喻C语言函数速查手册,这样同样会让你事半功倍。最后就是学习的工程中要勇于动手实践,没有实践,再好的理论基础也是空谈,在我们班的很多同学便是这样,考试成绩相当牛,动起手来确实四处碰壁。这也证实了强大的思想并不能支撑一个完美的现实。武汉理工大学《应用数据结构》课程设计说明书85.用户使用说明5.1登陆提示登陆名为:hyb登录密码为:hx123登陆界面如下:5.2成功登陆后操作第一步,选择你要进行的操作(程序会提示你),第二步,按照你选择的操作,进行输入等步骤即可(程序会提示)。简单,一目了然的操作提示,使整个程序更加和谐化!附加说明:关于生成的hyb.exe文件,貌似需要安装VS。具体的还