数据结构-家电库存管理系统课程设计报告_第1页
数据结构-家电库存管理系统课程设计报告_第2页
数据结构-家电库存管理系统课程设计报告_第3页
数据结构-家电库存管理系统课程设计报告_第4页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、重庆科技学院数据结构课程设计报告学院:_电气与信息工程学院 _ 专业班级 : 计科 2010-01学生姓名 :阳勇学号 : 2010441798设计地点(单位) _ _计算机基础自主学习中心_ _ _设计题目 :_家电库存管理系统的设计_ _完成日期: 2012 年 1月 13 日指导教师评语 : _ _ _成绩(五级记分制) :_ _指导教师(签字) :_ _重庆科技学院课程设计任务书设计题目: 家电库存管理系统的设计学生姓名阳勇课程名称数据结构课程设计专业班级计科 2010-01,02,03,04地点计算机基础自主学习中心起止时间设以链表结构的有序表表示某商场家电部的库存模型。当有提货或进

2、货时需要对该计链表及时进行维护。每次退出程序时,将该链表中的数据以文件形式保存在磁盘上,内每次启动程序时,需将以文件形式保存的数据恢复成链表结构的有序表。容链表结点的数据域包括:类别、型号、品牌、重量、单价、数量、生产日期、厂及要家名称,默认按类别、品牌升序排好序。程序功能包括:创建链表、插入、删除、修改、查询、排序等。求设计测试数据要求:参家电类别(如:电视机,空调,冰箱等)不少于5 种,记录数量不少于 500。数2011.12.31完成任务的讲解、并接受课程设计任务,选定课程设计的题目2012.01.04了解任务的算法、并画出算法的程序流程图,对任务的关键技术进行验进证、并确定解决办法20

3、12.01.05-2012.01.06编制程序度2012.01.09对程序进行调试,设计测试用例进行测试要2012.01.10整理课程设计的过程、并进行总结,完善程序功能求2012.01.11编写课程设计报告初稿2012.01.12完善课程设计报告、并准备答辨2012.01.13提交课程设计报告和程序,进行答辨参1严蔚敏 吴伟民, 数据结构,清华大学出版社, 2007.3考2李春葆 ,数据结构教程,清华大学出版社,2005.1资3(美) Stephen Prata,C Primer Plus 中文版(第五版) ,人民邮电出版社, 2005.2料其它说 1. 本表应在每次实施前一周由负责教师填写

4、二份,学院审批后交学院教务办备案,一份由负责教师留用。 2. 若填写内容较多可另纸附后。 3. 一题多名学生共用的,在设计明 内容、参数、要求等方面应有所区别。系主任:雷亮指导教师:向毅 / 彭军 / 王双明 / 龙冯文 / 黄永文2011年12月26 日摘要随着信息技术的飞速发展 , 人们对信息管理技术要求也越来越高以适应飞速发展的经济。本次课程设计针对当前的需求,设计一个家电仓库信息的管理系统以方便商家更快捷更有效的对仓库货品的信息进行管理,给商家创造更多的价值!该系统整体运用了数据结构的知识,它是将货品信息按链表形式来储存的。将所有的货品分类储存在数据链表的每一个节点中, 每个节点也包含

5、了一种类型家电的所有信息。即是,建一个链表,链表中有许多个节点,节点中储存了不同类型的数据;这样我们就很容易的将货品信息管理起来了!该系统进行了精心的规划,有齐全的信息管理功能。方便用户使用,用户能够很快的找到自己所需要的信息并且有添加、删除、修改、查询、排序、保存等功能提高了用户对信息的管理效率!关键词: 信息数据结构链表管理目录1系统需求分析说明书 . .11.1系统软件界面介绍 . .11.2系统设计要求 . .11.3系统的设计 . .22系统分析与设计 . .32.1系统分析 . .32.2系统功能分析 . .43代码实现 . .73.1链表创建函数代码解释 . .73.2插入节点函

6、数代码解释 . .73.3删除节点函数代码解释 . .83.4查找函数代码解释 . .83.5货品信息修改函数代码解释 . .93.6信息读取函数代码解释 . .104系统功能实现 . .114.1仓库链表建立函数实现 .114.2修改信息函数实现 . .114.3新增货品插入函数实现 . .124.4删除函数实现 . .124.5修改函数的实现 . .134.6插入节点函数实现 . .135系统使用说明书 . .146总结 . .15参考文献 . .16致谢 . .171 系统需求分析说明书1.1 系统软件界面介绍1.1 系统界面该系统的软件界面就是以在C+编译后生成的一个系统菜单, 菜单有

7、八个选项供用户选择即有创建仓库链表,信息查找等功能!在菜单下面有供用户选择系统项目的输入指令,当用户输入 0-7 中的数字后就会实现相应的功能!如果输入错误后界面会弹出警告让用户重新输入!1.2 系统设计要求第一,该系统的设计对设计者的要求比较高。想要设计该系统,必须对C语言知识掌握牢固,以及C+、数据结构知识灵活运用。例如:主菜单供客户选择的选择项就需要用到 C 语言的 switch条件语句来实现不同的选择功能。数据结构中的数据封装也是必不可少的。1.3 系统的设计系统设计分为几大模块进行设计的。第一大模块总体规划设计,这部分主要是封装头文件,这里要定义好数据结构体,即要把一类家电信息打包成

8、一个节点类型的数据然后再创建链表数据和指向节点数的节点。该过程就是数据结构中的抽象数据类型ADT,这样将就轻松的把不同类型数据管理起来了!头文件也包含了所有子函数的头。第二大模块是主函数的设计,主函数的功能是要建立一个仓库管理的链表,然后一一实现系统所有的功能即是在不同的情况对子函数的调用。第三大模块是各个函数功能的实现,该部分是系统的核心部分,在写子函数的时候必须考虑周全;否则就会出现内存出错的情况系统就会崩溃掉,信息就很可能丢失。会给用户带来巨大的损失!该系统设计模块图如图1.2 所示:头文件封装链子表函的数系统总体结构设设计计系统主界面设计图 1.2 系统模块设计2 系统分析与设计2.1

9、 系统分析系统主要工作流程是从打开系统后进入功能选择,选择不同的选项进行操作后就返回系统首页。其运行流程图如图2.1 所示:主菜单Switch12345678创信新信信保读结建息增息息存取束链查信删修信文程表找息除改息件序返回图 2.1 系统流程图2.2 系统功能分析系统功能的实现主要是靠各个子函数来实现的。1) 仓库链表的创建:当用户选择功能号1 时,就进行仓库链表的建立。仓库建立流程图如图2.2 所示 :入口建立链表完成链表建立返回图 2.2仓库链表建立2) 仓库货品信息查找:信息查找流程图如图2.3 所示:入口查找方式查名退询称出所查查有询询返回图 2.3 信息查找流程图3) 新增货品信

10、息插入:新增货品信息插入流程图如图2.4 所示:入口输入信息完成链表插入返回图 2.4 信息插入流程图4) 删除已卖出的货品信息:删除信息流程图如图2.5 所示:入口查找方式编号查询名称查询删除返回图 2.5 删除信息流程图5) 库存货品信息修改库存货品信息修改流程图如图2.6 所示:入口查找方式编号查询名称查询选择修改12345678修修修修修修修修改改改改改改改改商时厂重类编单型标间家量别号价号返回首页图 2.6 信息修改流程图6)信息保存直接选功能号6 即可保存到文件。7) 仓库信息读取:仓库信息读取流程图如图2.7 所示:入口读入信息信息显示返回图 2.7 信息读取流程图3 代码实现3

11、.1 链表创建函数代码解释NODE *creatlist()NODE *Head; Head=new NODE; int i; int k; NODE *P1, *Ptr; P1=(NODE*)malloc(sizeof(NODE); P1=Head;cout<<" 输入仓库电器种类数 :"<<endl; cin>>k;printf(" 请输入电器类别 -型号 -商标 - 重量 - 单价 -编号 -日期 - 厂家 n"); for(i=0;i<k;i+) Ptr=(NODE*)malloc(sizeof(NODE

12、);scanf("%s %s %s %f %lf %s %s %s",Ptr->data.leibie,Ptr->data.xinhao,Ptr->data.brand,&Ptr->data.hei ght,&Ptr->data.price,Ptr->data.no,Ptr->data.date,Ptr->data.factory);P1->link=Ptr;P1=Ptr;P1->link=NULL;return Head;这里使用链表创建函数就可以创建一个链表,并储存货品信息!3.2 插入节点函数

13、代码解释void InsertNode(NODE *head,NODE *p)NODE *p1,*p2;p1=head;p2=p1->link;while(p2!=NULL && strcmp(p2->data.no,p->data.no)<0)p1=p2; /p1指向刚访问过的结点p2=p2->link; /p2指向表的下一个结点p1->link=p; / 插入p 所指向的结点p->link=p2; / 连接表中剩余的结点cout<<" 插入成功! "<<endl;该函数实现了在仓库链表中插

14、入一个节点的功能!3.3 删除节点函数代码解释void deleteNode(NODE *head)/ 卖出货品信息删除char x;NODE *pPre,*pLoc;pLoc=searchList1(head);/ dataOut = pLoc->data; if(pLoc=NULL)printf(" 没有查到要删除的商品信息!n");return ;if(pLoc!=NULL)printf(" 真的要删除该商品吗?(y/n) :");cin>>x;if (x='y'|x='Y')pPre=head;

15、while(pPre!=NULL)&&(pPre->link!=pLoc)pPre=pPre->link;pPre->link=pLoc->link;free(pLoc);printf("delete success!n");该函数实现了对卖出货品信息的删除!3.4 查找函数代码解释NODE *searchList(NODE *head)/货品信息查找char a; char b=' ' while(1)printf("=n");printf(" 1.printf(" 2.pri

16、ntf(" 0.查询所有家电信息n");按商品名称查询n");退出查找系统n");printf("=n");printf("请 选 择:n");a = getch();switch(a)case '0':return 0;break;case '1':list0(head);break;case '2':list1(head);break;default:printf(" 输入错误,请重新输入:n");该函数用switch 语句做成一个多种查找方式

17、的查找函数!3.5 货品信息修改函数代码解释void modify(NODE *head)/库存货品信息修改int m;NODE *P;P=searchList1(head);cout<<" 请输入要修改的商品信息番号!:"<<endl;if (P=NULL)printf(" 没有查到要修改的商品信息!n");return;if(P!=NULL)cout<<endl;printf(" 请输入您选择的功能号<0-8>:n");cin>>m;switch(m)case 1:cou

18、t<<"请输入新的商标信息case 2:cout<<"请输入新的日期信息case 3:cout<<"请输入新的厂家信息case 4:cout<<"请输入新的重量信息case 5:cout<<"请输入新的类别信息case 6:cout<<"请输入新的编号信息case 7:cout<<"请输入新的单价信息case 8:cout<<"请输入新的型号信息case 0:break;P=P->link;"<&l

19、t;endl;cin>>P->data.brand;break; "<<endl;cin>> P->data.date;break; "<<endl;cin>> P->data.factory;break; "<<endl;cin>> P->data.height;break; "<<endl;cin>> P->data.leibie;break; "<<endl;cin>> P-&g

20、t;data.no;break; "<<endl;cin>> P->data.price;break; "<<endl;cin>>P->data.xinhao;break;该函数实现了对节点信息的修改!3.6 信息读取函数代码解释NODE *read_file(NODE *head)NODE *q,*t; head=Initlist(head);t=head;ifstream fin(" 家电库存信息 .txt"); if( !fin )printf("n 打开文件失败 !, 可能没有

21、记录 n"); return NULL; printf(" 类别 -型号 -商 标 -重量 -单价 - 编号 -日期 -厂家 n");while ( !fin.eof() )q=(NODE*)malloc(sizeof(NODE);HOUSEHOLD temp;fin>>temp.leibie;fin>>temp.xinhao;fin>>temp.brand;fin>>temp.height;fin>>temp.price; fin>>temp.no; fin>>temp.date

22、; fin>>temp.factory; q->data = temp;q->link=NULL;t->link=q;t=t->link;printf(" 读取成功 !n");fin.close();return head;该函数将文本文件的数据读出来并生成一个链表!4 系统功能实现4.1仓库链表建立函数实现图 4.1 仓库链表建立函数实现4.2 修改信息函数实现图 4.2 修改信息函数实现4.3 新增货品插入函数实现图 4.3 新增货品插入函数实现4.4 删除函数实现图 4.4 删除函数实现4.5 修改函数的实现图 4.5 修改函数的实

23、现4.6 插入节点函数实现图 4.6 插入节点函数实现5 系统使用说明书1.创建仓库链表:在此目录下,用户可以创建一个新的仓库链表。2.查询记录:在此目录下,用户可以查询所有家电记录和按名称查询家电记录1).查询所有家电记录: 显示所有的家电记录, 如果没有记录则会提示用户输入记录。2).按类别查询家电记录:输入要查询家电的名称后,显示相应家电的信息。3).按品牌查询家电记录:输入要查询家电的品牌后,显示相应家电的信息。4).按型号查询家电记录:输入要查询家电的型号后,显示相应家电的信息。0).退出查询系统:退出查询系统并返回主菜单。3. 插入新增货品信息:在此目录下,用户添加新的纪录。添加完

24、后,系统会返回主菜单并提示用户保存,此时你要可以选择。4. 删除信息:在此目录下,用户删除纪录5. 修改记录:在此目录下,用户在原有的记录上更改记录。更改后, 系统会返回主菜单并提示用户保存,此时你要可以选择 2 保存,如果不选择保存则不会更改。6.保存记录:在此目录下,系统会对变动的信息保存起来!7.读取记录:在此目录下,系统将储存的信息全部读出来!0. 退出系统:提示按 0 键键退出系统。6 总结在为期两周的时间终于完成了本次课程设计。在设计初期准备阶段时做好了充分的准备,包括查询资料、知识的温故等。有了充分的准备后,就可以有个好的开始了。课程设计在设计阶段中遇到不少的问题,但是都一一解决

25、了。在开始阶段的数据封装与函数头做起来比较顺利,第二阶段在总体规划时开始很混乱,但在仔细分析后很快就把总体思路打造好了。最后的也是最困难的问题就是怎样实现各个子函数的功能,由于自己的粗心造成了不少的麻烦!例如,将一个有返回值函数直接调用,而没有进行传值造成了内存错误从而耽误了进度。最后进行仔细调试后才发现这个问题,最后程序就顺利运行了!参考文献1 吴伟民 . 结构( C 语言版) .大学出版社, 20002 周学毛 李健 . 据结构与程序设计 .人民邮电出版社 , 20083 谭浩强 . C 程序设计(第三版) . 清华大学出版设 , 20084 韩永泉 . 高质量程序设计指南 C+/C语言第

26、 3 版 , 20075 苏仕华 . 数据结构与算法解析 . 合肥: 中国科学技术大学出版社, 20046 刘振安 孙忱 刘燕君 . C 程序设计课程设计 . 北京:机械工业出版社, 20047 唐策善,黄刘生 . 数据结构(第二版) . 合肥:中国科学技术大学出版社, 20028 刘大有,唐海鹰 . 数据结构 . 北京:高等教育出版社, 20019 严蔚敏,陈文博 . 数据结构及应用算法教程 . 北京:清华大学出版社, 200110 苏仕华 . 数据结构自学辅导 . 北京:清华大学出版社, 200211 徐孝凯 . 数据结构实用教程 . 北京:清华大学出版社, 199912 苏仕华 . 数据

27、结构课程设计 . 北京:机械工业出版社, 2005致谢经过为期一周的努力,我的课程设计任务也终于如期完成。在设计阶段中遇到不少的问题,但是都一一解决了。有些是通过自己细心的研究和检查把程序调试好,有的问题是自己不懂的知识通过网上搜索以及同学的帮助也顺利的解决了!在此我要感谢帮助过我的老师和同学们,是你们耐心指导才让我顺利的完成了本次课程设计。我也从中学到许多的东西!通过本次课程设计,我对数据结构的知识掌握更牢固了! 也培养了自己勤于思考的良好习惯!也让我收获了不少的东西,感谢所有帮助过我的人!附页:程序代码头文件 .h#include <string>#include <st

28、dlib.h>#include <stdio.h>#include<conio.h>#include "windows.h"#include<iostream>#include<fstream>using namespace std;typedef struct _Householdcharleibie20;charxinhao30;charbrand30;floatheight;doubleprice;charno30;chardate20;charfactory30;intkey;HOUSEHOLD;typedef

29、struct _NODEHOUSEHOLD data;struct _NODE *link;NODE;typedef struct _LINKLISTNODE* Phead;int count;LINKLIST;LINKLIST *creatvoidlist();NODE *creatlist();void InsertNode(NODE *head,NODE *p);void deleteNode(NODE *head);NODE *searchList(NODE *head);NODE *searchList1(NODE *head);void modify(NODE *head);boo

30、l display(NODE *head);NODE *sort(NODE *head);void write_file(NODE *head);NODE *read_file(NODE *head);NODE *Initlist(NODE *p);void list0(NODE *head);void list1(NODE *head);int StrCmp(char na,char name,int y);子函数 .cpp#include"store.h"LINKLIST *creatvoidlist()/创建一个空的仓库链表LINKLIST *p;p = (LINKL

31、IST*)malloc(sizeof(LINKLIST);if(!p)exit(0);p->count=0;p->Phead=NULL;return p;NODE *creatlist()/ 创建链表NODE *Head;Head=new NODE;int i;int k;NODE *P1, *Ptr;P1=(NODE*)malloc(sizeof(NODE);P1=Head;cout<<" 输入仓库电器种类数:"<<endl;cin>>k;printf(" 请输入电器类别-型号 -商标 - 重量 - 单价 -编号

32、-日期 - 厂家 n");for(i=0;i<k;i+)Ptr=(NODE*)malloc(sizeof(NODE);scanf("%s %s %s %f %lf %s %s %s",Ptr->data.leibie,Ptr->data.xinhao,Ptr->data.brand,&Ptr->data.height,&Ptr->data.price,Ptr->data.no,Ptr->data.date,Ptr->data.factory);P1->link=Ptr;P1=Ptr;P1-

33、>link=NULL;printf(" 添加成功! ");return Head;void InsertNode(NODE *head,NODE *p)/插入新的节点NODE *p1,*p2;p1=head;p2=p1->link;while(p2!=NULL && strcmp(p2->data.no,p->data.no)<0)p1=p2; /p1指向刚访问过的结点p2=p2->link; /p2指向表的下一个结点p1->link=p; / 插入p 所指向的结点p->link=p2; / 连接表中剩余的结点

34、cout<<" 插入成功! "<<endl;void deleteNode(NODE *head)/ 卖出货品信息删除char x;NODE *pPre,*pLoc;pLoc=searchList1(head);/ dataOut = pLoc->data; if(pLoc=NULL)printf(" 没有查到要删除的商品信息!n");return ;if(pLoc!=NULL)printf(" 真的要删除该商品吗?(y/n) :");cin>>x;if (x='y'|x=&#

35、39;Y')pPre=head;while(pPre!=NULL)&&(pPre->link!=pLoc)pPre=pPre->link;pPre->link=pLoc->link;free(pLoc);printf("delete success!n");NODE *searchList1(NODE *head)/货品信息查找NODE *p;char num30;char name30;char pp;printf("=n");printf(" a.printf(" b.按商品编号查询

36、按商品名称查询n");n");printf("=n");printf("请选择:");p=head->link;cin>>pp;getchar();if (pp='a'|pp='A')cout<<" 请输入要查找的商品编号:"<<endl;cin>>num;while (p&&strcmp(p->data.no,num)!=0)p=p->link;if (p=NULL)|strcmp(p->dat

37、a.no,num)>0)p=NULL;else if (pp='b'|pp='B')cout<<"请输入要查找的商品名称:"<<endl;cin>>name;while(p&&strcmp(p->data.leibie,name)!=0)p=p->link;return p;NODE *searchList(NODE *head)/货品信息查找char a;char b=' 'while(1)printf("=n");printf(&qu

38、ot; 1.printf(" 2.printf(" 0.查询所有家电信息n");按商品名称查询n");退出查找系统n");printf("=n");printf("请 选 择:n");a = getch();switch(a)case '0':return 0;break;case '1':list0(head);break;case '2':list1(head);break;default:printf(" 输入错误,请重新输入:n"

39、);void list0(NODE *head)/查询所有家电信息NODE *p;p=head->link;if(p=NULL)printf(" 没有记录,请输入记录n");elseprintf(" 类别 -型号 -商 标 -重量 -单价 -编号 -日期 -厂家 n"); while(p!=NULL)printf("%s%s%s%f%lf %s%s%sn",p->data.leibie,p->data.xinhao,p->data.brand,p->data.height,p->data.price

40、,p->data.no,p->data.date,p->data.factory); p=p->link;void list1(NODE *head)/按名称查询函数NODE *p;p=head;int y;char na20;printf(" 请输入查询家电的名称:");scanf("%s",na);printf(" 你要查询的记录为n");while(p!=NULL)y=StrCmp(na,p->data.leibie,20);if(y=1)p=p->link;elseprintf("

41、 类别 -型号 -商 标 -重量 -单价 -编号 -日期 -厂家 n");printf("%s%s%s%f%lf %s%s%sn",p->data.leibie,p->data.xinhao,p->data.brand,p->data.height,p->data.price,p->data.no,p->data.date,p->data.factory);p=p->link;int StrCmp(char na,char name,int y)/比较数据信息int i =0;int n=0;while(nai

42、)n+;i+;for(i=0;i<n;i+)if(nai!=namei)break;if(i<n)return 1;elsereturn 0;void modify(NODE *head)/库存货品信息修改int m;NODE *P;P=searchList1(head);cout<<" 请输入要修改的商品信息番号!:"<<endl;if (P=NULL)printf(" 没有查到要修改的商品信息!n");return;if(P!=NULL)printf(":-:n");printf(":选择要修改的项目*n");printf(":=*n");printf(":1.修改货品商标*n");printf(":2.修改进货时间*n");printf(":3.修改生产厂家*n");printf(":4.修改货品质量*n");printf(":5.修改货品类别*n");printf(":6.修改货品编号*n");printf(":7.修改货品单价*n");printf(":8.修改货品型号*n&quo

温馨提示

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

评论

0/150

提交评论