![数据结构课程设计报告库存管理系统_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/a1228a2c-1a96-47d0-b9c6-def8fbce7e65/a1228a2c-1a96-47d0-b9c6-def8fbce7e651.gif)
![数据结构课程设计报告库存管理系统_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/a1228a2c-1a96-47d0-b9c6-def8fbce7e65/a1228a2c-1a96-47d0-b9c6-def8fbce7e652.gif)
![数据结构课程设计报告库存管理系统_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/a1228a2c-1a96-47d0-b9c6-def8fbce7e65/a1228a2c-1a96-47d0-b9c6-def8fbce7e653.gif)
![数据结构课程设计报告库存管理系统_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/a1228a2c-1a96-47d0-b9c6-def8fbce7e65/a1228a2c-1a96-47d0-b9c6-def8fbce7e654.gif)
![数据结构课程设计报告库存管理系统_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/a1228a2c-1a96-47d0-b9c6-def8fbce7e65/a1228a2c-1a96-47d0-b9c6-def8fbce7e655.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计任务书20112012学年第1学期电子与信息工程系计算机科学与技术专业班级课程设计名称:数据结构课程设计设计题目:库存管理系统完成期限:自2012年1月2日至2012年1月6日共周设计依据、要求及主要内容(可另加附页):一、设计目的熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。二、设计要求(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;(3)学生在接受设
2、计任务后,首先要按设计任务书的要求编写设计进程表;(4)认真编写课程设计报告。三、设计内容1)问题描述试设计一库存管理系统,产品信息包括产品编号、名称、价格、数量等(产品编号不重复)2)基本要求该系统应具有以下功能:1、产品信息录入功能(产品信息用文件保存)一一输入2、产品信息浏览功能一一输出3、产品入库4、产品出库5、查询和排序功能:1 )按价格从大到小排序2 )按名称查询6、产品信息删除、修改功能。四、参考文献1数据结构.王红梅.清华大学出版社2数据结构学习辅导与实验指导.王红梅.清华大学出版社3C+理序设计.钱能.清华大学出版社4C+理序设计试验指导.钱能.清华大学出版社5C+理序设计.
3、谭浩强.清华大学出版社#include<iostream>#include<string>#include<iomanip>#include<fstream>usingnamespacestd;intcount=0;classCData/定义数据基类public:CData();virtualintCompare(CData&)=0;virtualvoidShow()=0;virtualCData();classCNode/定义结点基类private:CData*pData;/用于指向数据类的指针CNode*pNext;/用于指向链表的后
4、向指针public:voidInputData(CData*pdata)pData=pdata;/输入数据voidShowNode()pData->Show();/打印一个节点的数据CData*GetData()returnpData;friendclassCList;/定义链表类为基类;classCListCNode*pHead;/链表头结点指针public:CList()pHead=0;CList()DeleteList();voidAddNode(CNode*pnode);/CNode*DeleteNode(CNode*);/CNode*Search(CData&);/到返
5、回0boolIsExist(CData&);voidShowList();/voidDeleteList();/在首部添加结点删除一个指定的结点,返回该结点的指针查找一个指定的数据,返回该数据所在的结点在链表的指针,未找打印整个链表删除整个链表CNode*GetListHead()returnpHead;/返回链表首结点CNode*GetListNextNode(CNode*pnode);/返回链表指定结点的下一个结点;CNode*CList:GetListNextNode(CNode*pnode)/返回链表指定结点的下一个结点CNode*p1=pnode;returnp1->p
6、Next;voidCList:AddNode(CNode*pnode)/在首部添加结点if(pHead=0)/如果是空链表,插入的结点是唯一的结点pHead=pnode;pnode->pNext=0;return;else/否则,插入到链表首部pnode->pNext=pHead;pHead=pnode;CNode*CList:DeleteNode(CNode*pnode)/删除一个指定的结点,返回该结点的指针CNode*p1,*p2;p1=pHead;/指向首结点while(p1!=pnode&&p1->pNext!=0)/寻找要删除的结点p2=p1;p1=
7、p1->pNext;/结点p2始终在p1的后面if(p1=pHead)/如果要删除的是首结点pHead=pHead->pNext;/将首结点后移returnpnode;p2->pNext=p1->pNext;/p1指向被删除的结点,将p2结点与pl后面的结点连接起来returnpnode;CNode*CList:Search(CData&data)/查找一个指定的数据,返回指针,若未找到返回0CNode*p1=pHead;/从头结点开始查找while(p1)if(p1->pData->Compare(data)=0)returnp1;/找到后返回结点
8、指针p1=p1->pNext;return0;/搜索完找不到,返回空指针0voidCList:ShowList()/打印整个链表CNode*p1=pHead;while(p1)p1->pData->Show();p1=p1->pNext;voidCList:DeleteList()/删除整个链表结点CNode*p1,*p2;p1=pHead;while(p1)deletep1->pData;p2=p1;p1=p1->pNext;deletep2;classRepository:publicCData/库存为记录,为数据基类的公有派生类private:char
9、szName20;/库存中数据:商品名、商品数量和入库时间unsignedintszNumber;charszTime20;charszN;CListShList;public:Repository();/构造函数Repository(char*name,intnumber,char*time);voidSetRecord(char*name,intnumber,char*time);/输入数据函数intCompare(CData&);/比较函数,比较商品名voidShow();voidAddRecord();voidDisplay();voidLookUpRecord();voidD
10、eleteRecord();voidModifyRecord();voidSaveToFile();voidOperate(string&strChoice);voidReadFromFile();voidOutput();Repository:Repository()strcpy(szName,"0");szNumber=0;strcpy(szTime,"0");Repository:Repository(char*name,intnumber,char*time)strcpy(szName,name);szNumber=number;strc
11、py(szTime,time);szN=name0;voidRepository:SetRecord(char*name,intnumber,char*time)/输入数据函数strcpy(szName,name);szNumber=number;strcpy(szTime,time);szN=name0;intRepository:Compare(CData&data)/比较商品名Repository&temp=(Repository&)data;returnstrcmp(szName,temp.szName);voidRepository:Show()/打印一个结点
12、的数据cout<<setw(15)<<szName<<setw(15)<<szNumber<<setw(15)<<szTime<<endl;voidRepository:AddRecord()/将记录添加到链表中CNode*pNode;Repository*pSh;charszName20,szTime20;unsignedintszNumber;cout<<"请输入新商品名(输入0退出,并进入系统菜单)cin>>szName;while(strcmp(szName,"
13、;0")cout<<"请输入新商品入库时间:"cin>>szTime;cout<<"请输入新商品数量:"cin>>szNumber;pSh=newRepository;/pSh->SetRecord(szName,szNumber,szTime);/pNode=newCNode;/pNode->InputData(pSh);/ShList.AddNode(pNode);生成新的数据累对象数据类对象赋值生成新的结点结点插入链表count+;cout<<"请输入新商品
14、名(输入0退出,并进入系统菜单)"cin>>szName;cout<<endl<<endl;voidRepository:Display()/显示全部链表数据cout<<"当前操作共有"<<count<<"条新商品的添加纪录。nn"cout<<"目前库存共有商品信息记录是:nn"cout<<setiosflags(ios_base:left)<<setw(15)<<"商品名"<&l
15、t;setw(15)<<"商品数量"<<setw(15)<<"入库时间"<<endl<<endl;ShList.ShowList();cout<<endl<<endl;system("pause");system("cls");voidRepository:LookUpRecord()/按照商品名查找CNode*pLook;charszName20;cout<<"请输入您需要查找的商品名(输入0退出,并进入系统
16、菜单):"cin>>szName;while(strcmp(szName,"0")Repositorysh(szName,0,"0");/生成结点pLook=ShList.Search(sh);/查找指定结点的数据if(pLook)cout<<"在库存商品信息记录中找到商品:"<<szName<<",内容是:"<<endl;cout<<setw(15)<<"商品名"<<setw(15)<
17、;<"商品数量"<<setw(15)<<"入库时间"<<endl;pLook->ShowNode();elsecout<<"在库存商品信息记录中找不到商品:"<<szName<<"。"<<endl;cout<<"请输入您需要查找的商品名(输入0退出,并进入系统菜单):"cin>>szName;cout<<endl<<endl;voidRepository
18、:DeleteRecord()/在链表中删除指定的结点的数据CNode*pLook;charszName20;cout<<"请输入您需要删除的商品名(输入0退出,并进入系统菜单):"cin>>szName;while(strcmp(szName,"0")Repositorysh(szName,0,"0");pLook=ShList.Search(sh);if(pLook)/删除时应先查找出结点cout<<"在库存商品信息记录中找到商品:"<<szName<<
19、;",内容是:"<<endl;cout<<setw(15)<<"商品名"<<setw(15)<<"商品数量"<<setw(15)<<"入库时间"<<endl;pLook->ShowNode();cout<<"请确定是否删除此商品信息记录(Y/N)【确定删除请输入Y或y,取消删除请输入或n】:"charok;cin>>ok;if(ok='Y'|ok='
20、;y')ShList.DeleteNode(pLook);cout<<szName<<"的信息记录删除成功!"<<endl;deletepLook;count-;elseif(ok='N'|ok='n')cout<<szName<<"的信息记录删除失败!"<<endl;elsecout<<"在库存商品信息记录中找不到商品:"<<szName<<"。"<<en
21、dl;cout<<"请输入您需要删除的商品名(输入0退出,并进入系统菜单):"cin>>szName;cout<<endl<<endl;voidRepository:ModifyRecord()/修改商品记录CNode*pLook;Repository*pSh;charszName20,szTime20;unsignedintszNumber;cout<<"请输入您需要修改的商品名(输入0退出,并进入系统菜单):"cin>>szName;while(strcmp(szName,&qu
22、ot;0")Repositorysh(szName,0,"0");pLook=ShList.Search(sh);修改时应先查找出结点if(pLook)/cout<<"在库存商品信息记录中找到商品:"<<szName<<",内容是:"<<endl;cout<<setw(15)<<"商品名"<<setw(15)<<"商品数量"<<setw(15)<<"入库时间
23、"<<endl;pLook->ShowNode();cout<<"下面开始修改"<<endl<<"请输入修改后的商品名:"cin>>szName;cout<<"请输入修改后的商品数量:"cin>>szNumber;cout<<"请输入修改后的商品入库时间:"cin>>szTime;cout<<"请确定是否修改此记录(Yes(Y)orNo(N):"charok;c
24、in>>ok;if(ok='Y'|ok='y')pSh=newRepository;pSh->SetRecord(szName,szNumber,szTime);pLook->InputData(pSh);cout<<szName<<"的信息记录修改成功!"<<endl;elseif(ok='N'|ok='n')cout<<szName<<"的信息记录修改失败!"<<endl;elsecout&l
25、t;<"在库存商品信息记录中找不到"<<szName<<","<<endl;cout<<"请输入您需要修改的商品名(输入0退出,并进入系统菜单):"cin>>szName;voidRepository:Output()CNode*pLook;Repository*pSh;charszName20;unsignedintszNumber;cout<<"请输入您需要出库的商品名(输入0退出,并进入系统菜单):"cin>>szNam
26、e;while(strcmp(szName,"0")Repositorysh(szName,0,"0");pLook=ShList.Search(sh);if(pLook)/修改时应先查找出结点(pSh=(Repository*)pLook->GetData();cout<<"在库存商品信息记录中找到商品:"<<szName<<",内容是:"<<endl;cout<<setw(15)<<"商品名"<<set
27、w(15)<<"商品数量"<<setw(15)<<"入库时间"<<endl;pLook->ShowNode();if(0=pSh->szNumber)(cout<<"该商品缺货,请及时补充!"<<endl;else(cout<<"请输入您要取出的商品数量:";cin>>szNumber;cout<<"请确定是否取出该商品(Yes(Y)orNo(N):"charok;cin>
28、;>ok;if(ok='Y'|ok='y')(if(pSh->szNumber<=szNumber)(cout<<szName<<"您要求的商品数量大于仓库中的数量,故全部输出<<pSh->szNumber<<"个商品"<<endl;pSh->szNumber=0;else(pSh->szNumber-=szNumber;cout<<szName<<"您已取出"<<szNumber&
29、lt;<"个商品"<<endl;cout<<szName<<"成功取出!"<<endl;elseif(ok='N'|ok='n')cout<<szName<<"您取消了该操作"<<endl;elsecout<<"在库存商品信息记录中找不到"<<szName<<","<<endl;cout<<"请输入您需要出
30、库的商品名(输入0退出,并进入系统菜单):"cin>>szName;voidRepository:SaveToFile()/将链表中的数据保存在文件中ofstreamoutfile("repository.dat",ios:binary);if(!outfile)cout<<"数据文件打开错误,没有将数据存入文件!n"return;CNode*pnode;Repository*pSh;stringstrName,strNumber;pnode=ShList.GetListHead();/取出链表首结点指针while(pn
31、ode)pSh=(Repository*)pnode->GetData();/返回结点指向的数据域指针outfile.write(char*)pSh,sizeof(Repository);/将数据域写入文件pnode=ShList.GetListNextNode(pnode);/取下一结点的指针outfile.close();voidRepository:ReadFromFile()/在程序开始先查找有无数据文件,找到后读取文件数据ifstreaminfile("repository.dat",ios:binary);if(!infile)cout<<&q
32、uot;没有数据文件,请您先添加!nn"return;CNode*pNode;Repository*pSh;while(!infile.eof()pSh=newRepository;/定义数据域对象infile.read(char*)pSh,sizeof(Repository);pNode=newCNode;pNode->InputData(pSh);/数据域对象内容生成结点将结点加入链表ShList.AddNode(pNode);/ShList.DeleteNode(pNode);/由于文件多读一次,所以将首结点删除infile.close();void Repository:Operate(string &strChoice)/根据主菜单选项进行操作if(strChoice="1")AddRecord();elseif(strChoice="2")
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 听评课记录六年级数学
- 2022年新课标八年级上册道德与法第四课 社会生活讲道德 听课评课记录
- 五年级下册数学听评课记录《1总复习:倍数和因数》人教新课标
- 华师大版数学八年级下册《平行四边形边、角的性质》听评课记录
- 数学听评课记录二年级下
- 《青铜器与甲骨文》名师听课评课记录(新部编人教版七年级上册历史)
- 新人教版七年级数学上册2.2《 整式的加减》听评课记录
- 青岛版数学八年级下册《实数》听评课记录1
- 小学二年级口算题
- 乡村振兴银企战略合作协议书范本
- 《新能源汽车技术》课件-第二章 动力电池
- 餐饮业绩效考核表(店长、前厅领班、吧台、厨师长、后厨、服务员、收银员、库管、后勤)3
- NB-T 10609-2021 水电工程拦漂排设计规范
- 艺术课程标准(2022年版)
- 即兴口语(姜燕)-课件-即兴口语第一章PPT-中国传媒大学
- 我的家乡--安徽亳州.PPT
- 餐饮服务单位自查表
- 盐浓度对于绿豆种子萌发影响
- 第六章南方戏剧圈的杂剧创作
- 企业注销鉴证工作底稿
- 财神正朝科仪
评论
0/150
提交评论