家电库存管理系统 c++课程设计报告_第1页
家电库存管理系统 c++课程设计报告_第2页
家电库存管理系统 c++课程设计报告_第3页
家电库存管理系统 c++课程设计报告_第4页
家电库存管理系统 c++课程设计报告_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、重庆科技学院综合性设计报告院(系):电子信息工程学院班级:学生姓名:学号:设计地点(单位)计算机科学与工程实验室设计题目:家电库存系统的设计完成日期:2009年9月11日指导教师评语:_成绩(五级记分制):指导教师(签字):重庆科技学院课程设计任务书设计题目:家电库存系统的设计学生姓名课程名称数据结构课程设计专业班级计科普 2008-01,02地 点计算机专业实验室起止时间设 计 内 容 及 要 求以链表结构的有序表表示某商场家电部的库存模型。当有提货或进货时需要对 该链表及时进行维护。每个工作日结束之后,将该链表中的数据以文件形式保存, 每日开始营业之前,需将以文件形式保存的数据恢复成链表结

2、构的有序表。链表结点的数据域包括:类别、型号、品牌、单价和数量,以单价的升序体现链 表的有序性。程序功能包括:初始化、创建表、插入、删除、更新数据,查询及链 表数据与文件之间的转换等。设计参数测试数据要求:家电类别(如:电视机,空调,冰箱等)不少于5种,记录数量 不少于50。进度要求星期一完成任务的讲解、并接受课程设计任务,选定课程设计的题目星期二了解任务的算法、并画出算法的程序流程图星期三对任务的关键技术进行验证、并确定解决办法星期四 编制程序星期五 编制程序星期一调试程序,并试运行星期二 整理课程设计过程中的各参数、进行总结并提出改进意见星期三对改进办法进行实现,并编写课程设计报告星期四编

3、写课程设计报告并准备答辨星期五参加答辨,提交设计报告参 考 资料严蔚敏吴伟民著,数据结构,清华大学出版社,2007.3李春葆著,数据结构教程,清华大学出版社,2005.1Richard F.Gilberg Behrouz A.Forouzan,数据结构的 C+伪码实现(央文版), 人民邮电出版社,2002.1其 它说明1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份 由负责教师留用。2.若填写内容较多可另纸附后。3. 一题多名学生共用的,在设计 内容、参数、要求等方面应有所区别。教研室主任:向毅指导教师:向毅王双明摘要本程序的作用是建立一个简单的家电库存管理系统。当库

4、存信息发生变化时要求能 对链表的信息进行更新并存入文件。每个工作日开始时,需要把磁盘中的商品信息读出 并加入链表中,每个工作日结束之后,在将该链表中的数据以文件形式保存,链表结点 的数据域包括:类别、型号、品牌、单价和数量,以单价的升序体现链表的有序性。程 序功能包括:初始化、创建表、插入、删除、更新数据,查询及链表数据与文件之间的 转换等。程序需要对链表进行初始化、插入、删除、更新数据,查询等操作,还要求对文件 的操作。关键字:链表 数据域插入删除目录 TOC o 1-5 h z 第一部分 设计题目、内容及要求11.1设计题目1 HYPERLINK l bookmark18 o Curren

5、t Document 1.2设计要求1第二部分概要设计22.1链表节点信息说明2 HYPERLINK l bookmark30 o Current Document 2.2总体程序框图3第三部分详细设计43.1初始化数据模块详细设计4 HYPERLINK l bookmark33 o Current Document 初始化数据模块伪码算法4初始化模块程序流程图53.2添加商品模块详细设计6 HYPERLINK l bookmark36 o Current Document 添加信息模块伪码算法6 HYPERLINK l bookmark39 o Current Document 添加商品模块

6、程序流程图73.3删除货物模块详细设计7删除模块伪码算法7删除模块程序流程图93.4查询模块详细设计10查询模块伪码算法10查询模块流程图123.5从文件中读取商品信息13 HYPERLINK l bookmark42 o Current Document 伪码算法13读取信息模块程序流程图143.6数据更新模块详细设计15 HYPERLINK l bookmark45 o Current Document 数据更新模块伪码算法15更新数据模块程序流程图153.6退出并保存商品清单17 HYPERLINK l bookmark48 o Current Document 3.6.1 退出并保存商

7、品伪码算法17 HYPERLINK l bookmark51 o Current Document 退出并保存商品程序流程图17第四部分 调试分析184.1问题回顾和分析18 HYPERLINK l bookmark58 o Current Document 4.2经验和体会18 HYPERLINK l bookmark61 o Current Document 第五部分用户使用说明19第六部分测试结果206.1初始化模块测试图20 HYPERLINK l bookmark75 o Current Document 6.2添加商品模块测试图21 HYPERLINK l bookmark78 o

8、 Current Document 6.3删除商品模块测试图22 HYPERLINK l bookmark81 o Current Document 6.4查询模块测试图23 HYPERLINK l bookmark84 o Current Document 6.5读取商品信息测试图24 HYPERLINK l bookmark87 o Current Document 致谢26 HYPERLINK l bookmark90 o Current Document 参考文献27第一部分设计题目、内容及要求1.1设计题目以链表结构的有序表表示某商场家电部的库存模型。当有提货或进货时需要对 该链表及

9、时进行维护。每个工作日结束之后,将该链表中的数据以文件形式保存,每日 开始营业之前,需将以文件形式保存的数据恢复成链表结构的有序表。链表结点的数据域包括:类别、型号、品牌、单价和数量,以单价的升序体现链表 的有序性。程序功能包括:初始化、创建表、插入、删除、更新数据,查询及链表数据 与文件之间的转换等。1.2设计要求要求实现以下功能(1)初始化并创建链表:能够初始化并创建商品信息表并按照单价的升序排列;(2)插入及删除:能够添加新商品信息并且当商品由于某种原因(损坏,售出及 其他原因)而不得不删除之时能够顺利地实现删除操作;(3)更新数据:当商品的价格或者数量变动的时候能够作出相应的改变;(4

10、)查询:能够按照某种要求需求商品的信息,并决定是否购买该商品,然后作 出相应的数据更新;(5)链表与文件之间的转换:能够成功地将链表中的信息写入文件,并能根据需 要读出文件中的信息。第二部分概要设计2.1链表节点信息说明表1各数据类型名称及其表示意义名称数据类型表示的意义Species字符家电的类型(包括电视机,空调等类型)Xinghao字符串家电的型号Pinpai字符串家电的品牌Danjia浮点型家电价格,为浮点型Shuliang整型家电的数量Data节点信息,包括以上数据信息next指针指向由Date和next组成节点表中,Species表示家电的类型,用一个大写字母代替。例如“D”表示电

11、视机,“K” 表示空调,“B”表示冰箱,“J”表示电脑,“X”表示洗衣机。Xinghao和Pinpai都是以 字符串的形式表示的,Danjia表示一个商品的价格,而Shuliang这表示某种商品的库存 量。Date则是数据域,包括以上五项。而next则表示指向下一个节点的指针。这就是 一个商品种类的全部信息,用一个节点的空间来储存该类型商品的信息。而在以后的删 除和插入以及查询操作中在某些情况下只需对商品的库存量做一些修改久可以达到目 的,非常方便。2.2总体程序框图选择是否进入系统选择进入的模块0添删查从退更出并保存商品信息商品清单中读取信息询并决定是否购买除商品信息品信息结束输入i值决定下

12、一步操作图2-1总体程序框图第三部分详细设计3.1初始化数据模块详细设计初始化数据模块伪码算法int Inticial(ListNode &p) while(i != 2) scanf(&pp-Date); pp-next = p-next;p-next = pp; scanf(&i); Paixu(p);Display(p);ListTxt(p);return OK; 其中,排序函数伪码算法如下:int Paixu(ListNode &head) p = q = head-next; while(p != NULL) q = p-next;min = p-Date;while(q != NU

13、LL)if(q-Date.Danjia Date;q-Date = p-Date;p-Date = min;q = q-next;p = p-next;Display(head);return OK;其次,由链表读入信息到文件函数伪码算法如下:int ListTxt(ListNode &head)FILE *fp; p = head-next;if(p = NULL)exit(0);if(fp = fopen(e:a.txt,w) = NULL)exit(0);while(p != NULL)fprintf(fp,p-Date);p = p-next;if(fclose(fp)exit(0);

14、return 1;初始化模块程序流程图图3-1数据初始化模块程序流程图3.2添加商品模块详细设计添加信息模块伪码算法int Insert(ListNode &head,Node &a)p = head-next;if(p = NULL)exit(0);while(p = p-next)p = p-next;q-Date = a.Date;q-next = p-next;p-next = q;ListTxt(head);return OK;在上面的算法中,首先要查看一下商品信息表示否为空,是则退出,否则 继续操作。在进入该模块之前,有关插入的商品的信息已经初始化完成,直接 通过引用就可以使用。本

15、模块首先将要插入商品的有关信息映射到一个节点的 数据域,然后将该节点插入到商品信息表中,再排序即可。添加商品模块程序流程图图3-2添加商品信息模块程序流程图3.3删除货物模块详细设计删除模块伪码算法int Delete(ListNode &head,Node &a) if(p = NULL)exit(0); scanf(&choice); switch(choice)case 1: scanf(a.Species);while(p != NULL) if(strcmp(p-Date.Species,a.Species)=0)printf(p-Date);i+;p = p-next; if(i

16、= 1)break;elsep = head;scanf(&number);while(count next-Date.Species,a.Species) = 0)count +;p = p-next;while(strcmp(p-next-Date.Species,a.Species) != 0)p = p-next;if(p-next-Date.Shulianga.Shuliang)p-next-Date.Shuliang-=a.Shuliang;else s = p-next; p-next = p-next-next; free(s);Display(head); break;cas

17、e 2: scanf(a.XingHao); while(p !=NULL) if(strcmp(p-Date.XingHao,a.XingHao) = 0)printf(p-Date);i +;p = p-next; if(i = 1)break;else p = head;scanf(&number);while(count next-Date.XingHao,a.XingHao) = 0)count +;p = p-next;while(strcmp(p-Date.XingHao,a.XingHao) != 0) p = p-next; if(p-next-Date.Shuliang a

18、.Shuliang) p-next-Date.Shuliang -= a.Shuliang;else s = p-next; p-next = p-next-next; Display(head);break; ListTxt(head);return OK;删除模块程序流程图由于本模块流程图中有类似的操作,所以只给出其中一种情况下的流程图, 其他两种情况下的流程图省略不写。另外,此图还省略了其他不重要的操作。图3-3删除模块流程图3.4查询模块详细设计查询模块伪码算法int Search(ListNode &head,Node &a) if(p = NULL) getch();system(

19、cls);scanf(&choice); switch(choice) case 1:scanf(a.Species);while(p !=NULL) if(strcmp(p-Date.Species,a.Species) = 0)printf(p-Date);i+; p = p-next;if(i = 1)printf(*对不起,没有找到相关商品的信息! n);else scanf(&choice1);switch(choice1) case 1:p = head;scanf(&a.Shuliang);while(count next-Date.Species,a.Species) = 0)

20、 count +; p = p-next; while(strcmp(p-next-Date.Species,a.Species) != 0) p = p-next;if(p-next-Date.Shuliang a.Shuliang)p-next-Date.Shuliang -= a.Shuliang;elses = p-next;p-next = p-next-next; free(s); break;case 2:break;break;case 2:case 1:p = head;scanf(&a.Shuliang);while(count next-Date.XingHao,a.Xi

21、ngHao = 0)count +;p = p-next; while(strcmp(p-next-Date.XingHao,a.XingHao) != 0)p = p-next;if(p-next-Date.Shuliang a.Shuliang)p-next-Date.Shuliang -= a.Shuliang;elses = p-next;p-next = p-next-next; free(s); break;case 2:break;break;case 3:case 1:p = head;scanf(&a.Shuliang);while(count next-Date.Brand

22、,a.Brand) = 0) count +;p = p-next; while(strcmp(p-next-Date.Brand,a.Brand) != 0)p = p-next;if(p-next-Date.Shuliang a.Shuliang)p-next-Date.Shuliang -= a.Shuliang;elses = p-next;p-next = p-next-next; free(s); break;case 2:break;break default:getch();exit(0);return 1;查询模块流程图由于本模块流程图比较复杂,因此省略了一些不是很重要的部分

23、。图3-4查询模块流程图3.5从文件中读取商品信息伪码算法int TxtList(ListNode &head) q-next = NULL;FILE *fp;if(fp = fopen(e:a.txt,r) = NULL)exit(0);while(!feof(fp) p = (ListNode)malloc(sizeof(Node);fscanf(fp,p-Date);p-next = q-next;q-next = p; q-next = q-next-next;if(Getlenth(q) = 0) scanf(&choice); if(choice = 1) Inticial(q);

24、ListTxt(q); s = q-next;while(s != NULL)printf(s-Date);s = s-next; fclose(fp);return 1;读取信息模块程序流程图3.6数据更新模块详细设计数据更新模块伪码算法int Gengxin(ListNode &head) char a40;char b20;double d;while(p != NULL)printf(p-Date);p = p-next;n +;while(choice1 != 2)scanf(&k);p = head;for(int count = 0;count next;printf(p-Dat

25、e);scanf(&choice);switch(choice)case 1:scanf(fp);strcpy(p-Date.Species,fp);break;case 2:scanf(a);strcpy(p-Date.XingHao,a);break;case 3:scanf(b);strcpy(p-Date.Brand,b);break;case 4:scanf(&d);p-Date.Danjia = d;break;case5:scanf(&number);p-Date.Shuliang= umber;break;default:printf(p-Date);scanf(&choice

26、1);ListTxt(head);return 1;更新数据模块程序流程图图3-6更新数据模块流程图3.6退出并保存商品清单退出并保存商品伪码算法int ListTxt(ListNode &head) FILE *fp; p = head-next; if(p = NULL)exit(0);if(fp = fopen(e:a.txt,w) = NULL)exit(0);while(p != NULL)fprintf(fp,p-Date);p = p-next; if(fclose(fp)exit(0); return 1;退出并保存商品程序流程图图3-7退出并保存商品程序流程图第四部分调试分析

27、4.1问题回顾和分析编写完程序之后,调试过程中出现不少问题。主要包括以下几个。首先,刚开始发现了一些由于粗心而出现的小问题,包括数据的输入忘了 加取地址符,以及忘了晴空缓冲区等等。后来就发现了一些函数也存在问题。 最先发现的是排序模块。此模块采用的是冒泡排序法,但是由于有一段时间没 有编程,所以对以前学过的知识有点生疏,进而在内存空间的分配以及排序的 顺序上出现了一些问题。最后,通过调试发现了其中的问题,进而采取了相应 的措施改正了错误。其次,是删除模块。由于此模块“规模”比较宏大,所以出现的问题也最 多。首先是不能够选择通过哪种方式进行删除,然后在商品的时候,相应商品 的数量不会做出应该有的

28、改变,甚至还出现一堆乱码。后来,通过单步调试找 出了问题的原因并作出了相应的修改,最后结果差强人意。再次,则是在从文件中往内存中读取信息的时候出现的一个问题,即因为 Feof函数的问题,从而在每次读取信息的时候都会多读出一个节点的信息,多 余信息通过乱码的形式显示出来,最后是通过向其他同学请教才解决的,因此 我又学到了一些知识。最后,则是内存空间的释放问题。当其他模块的问题都解决之后,本以为 已经没有错误了,没想到每当程序运行完之后都会出现一个错误提示,后来才 发现是释放空间的模块出现了问题,同样,在找到问题之后终于解决了问题, 最终才勉强能够运行。4.2经验和体会通过做这个程序,我认识到了要

29、想做出一个好的程序,首先必须了解到它 必须能够实现的功能以及涉及到知识点。然后将整个程序分为几个模块分别编 写好,才能达到预期的效果。在编写完程序时要尽量避免一些低级错误的出现。第五部分用户使用说明本程序能够基本上实现包括初始化、插入及删除、查询及购买、链表与文 件之间的转换以及更新数据等一系列操作。本程序分为几个模块,分别是数据初始化,添加商品信息,删除商品信息, 查询及购买商品,将链表中的商品信息写入到文件,将文件中的商品信息读入 链表并输出以及数据的更新等等。如果没有初始化数据的话,进入此模块就可以根据提示创建商品信息表。进入此模块可以根据系统的提示添加商品信息,并自己决定添加商品的 种

30、类和数量等信息。进入此模块可以定量地删除你想要删除的商品,可以根据类型,型号和 品牌查询,然后删除。进入此模块,可以输入你想要查找的商品的类型,型号和品牌进行查询, 如果有的话可以决定是否购特定数量的该商品。进入此模块,可以将已经创建好的商品清单中的商品信息输出到屏幕。进入此模块,系统会自动保存商品信息,然后安全推出。进入此模块,你可以修改某一种产品的某项数据,比如某一件商品的类 型活着型号等等。每一个程序都不能说已经最好,只能不断改进,才能更好。本程序虽然基 本上实现了应该有的功能,但还有很多不足,限于当前水平问题,未能做出相 应的修改,望用户谅解并给予我们一定得支持,我们一定会将程序做的更

31、好, 以回报广大客户对我们的厚爱,谢谢!第六部分测试结果6.1初始化模块测试图g D :我的文档 DebuQ、KeCheng01.exe购.息统 否简系 是品理管 决取清存 普品电ffl-信信信;家品品物品度据入商商货商品霎进建加腐商出新迎创添删查从退更依*1 .*2.0*4.5.6.*7.欢迎进入初始化模块请输入您的选择:1请输入该商品类型:D请输入该商品型号FD请输入该商品品牌FDD请输入该商品单价T3请输入该商品数量桨3: D 我的文档 Debug1., KeCheng01.exe11、这是第2条记录2退出欢迎进入初始化模块陷输入该商品类型泅 #输入该商品型号:BB 输入该商品品牌:BB

32、E #输入该商品单价H3 输入该商品数量 扁选择&继续初始化 1忙输入该商品型号:DDDD 输入该商品品牌:DDDDD 输入该商品单价= 1654 肩输入该商品数量口6*输入该商品类型:D图6-2数据初始化模块测试图(2)为了方便,商品类型在此只输入一个特定字符代表一种商品类型。6.2添加商品模块测试图图6-3添加商品信息模块测试图(1)6.3删除商品模块测试图。D:我的文档Debug . KeCheng01.exe*345*6*7从退更是品 决戡清 普品 心息-94 g信 富度据 农商品靠 葡商出新购息否信请撤入您的选择:3请输入您要删用的商品信息; 请端入要删除高品而数量光请选择您要的删除

33、方式通过类型删除2 .通过型号删除3 通过品牌删除1. d花请耗入SW 除商品的类型W共改下是矮笑型,型号,品牌,单价,数量输出DD DDD 1326.00000032漏输入您型删除的商邑序列号:1*输出删除痂商商品蓿怠表二DDDBBBBBBBDDDDDDDD以下是按照商品的类型,型号,品牌,单价,数量依次列出的13.000000 2313.000000 631321.000000 231326.000000 221654.000000 36DDBBBBDDDDDD请输入您的选择H 继续删除2 退出6-5图6-6删除商品信息模块测试图(2)因为删除数量没有超过库存量,因此只需要对库存量做一下修改即可。6.4查询模块测试图图6-7查询模块测试图(1)图6-8查询模块测试图(2)在以上两幅图中,图(1)表示按照型号查询到目标商品之后购买的操作,图(2)表示的是按照类型查询到目标商品之后没有购买的操作。6.5读取商品信息测试图g D:我的文6DebugKeC

温馨提示

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

评论

0/150

提交评论