您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 数据结构课程设计报告库存管理系统
11课程设计任务书2011—2012学年第1学期电子与信息工程系计算机科学与技术专业班级课程设计名称:数据结构课程设计设计题目:库存管理系统完成期限:自2012年1月2日至2012年1月6日共1周设计依据、要求及主要内容(可另加附页):一、设计目的熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。二、设计要求(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;(4)认真编写课程设计报告。三、设计内容1)问题描述试设计一库存管理系统,产品信息包括产品编号、名称、价格、数量等(产品编号不重复)。2)基本要求该系统应具有以下功能:1、产品信息录入功能(产品信息用文件保存)--输入2、产品信息浏览功能--输出3、产品入库4、产品出库5、查询和排序功能:1)按价格从大到小排序2)按名称查询6、产品信息删除、修改功能。四、参考文献[1]《数据结构》.王红梅.清华大学出版社[2]《数据结构学习辅导与实验指导》.王红梅.清华大学出版社[3]《C++程序设计》.钱能.清华大学出版社[4]《C++程序设计试验指导》.钱能.清华大学出版社[5]《C++程序设计》.谭浩强.清华大学出版社#includeiostream#includestring12#includeiomanip#includefstreamusingnamespacestd;intcount=0;classCData//定义数据基类{public:CData(){};virtualintCompare(CData&)=0;virtualvoidShow()=0;virtual~CData(){};};classCNode//定义结点基类{private:CData*pData;//用于指向数据类的指针CNode*pNext;//用于指向链表的后向指针public:voidInputData(CData*pdata){pData=pdata;}//输入数据voidShowNode(){pData-Show();}//打印一个节点的数据CData*GetData(){returnpData;}friendclassCList;//定义链表类为基类};classCList{CNode*pHead;//链表头结点指针public:CList(){pHead=0;};~CList(){DeleteList();}voidAddNode(CNode*pnode);//在首部添加结点CNode*DeleteNode(CNode*);//删除一个指定的结点,返回该结点的指针CNode*Search(CData&);//查找一个指定的数据,返回该数据所在的结点在链表的指针,未找到返回0boolIsExist(CData&);voidShowList();//打印整个链表voidDeleteList();//删除整个链表CNode*GetListHead(){returnpHead;}//返回链表首结点CNode*GetListNextNode(CNode*pnode);//返回链表指定结点的下一个结点13};CNode*CList::GetListNextNode(CNode*pnode)//返回链表指定结点的下一个结点{CNode*p1=pnode;returnp1-pNext;};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=p1-pNext;//结点p2始终在p1的后面}if(p1==pHead)//如果要删除的是首结点{pHead=pHead-pNext;//将首结点后移returnpnode;}p2-pNext=p1-pNext;//p1指向被删除的结点,将p2结点与p1后面的结点连接起来returnpnode;}CNode*CList::Search(CData&data)//查找一个指定的数据,返回指针,若未找到返回0{CNode*p1=pHead;14while(p1)//从头结点开始查找{if(p1-pData-Compare(data)==0)returnp1;//找到后返回结点指针p1=p1-pNext;}return0;//搜索完找不到,返回空指针0}voidCList::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:charszName[20];//库存中数据:商品名、商品数量和入库时间unsignedintszNumber;charszTime[20];charszN;CListShList;15public:Repository();//构造函数Repository(char*name,intnumber,char*time);voidSetRecord(char*name,intnumber,char*time);//输入数据函数intCompare(CData&);//比较函数,比较商品名voidShow();voidAddRecord();voidDisplay();voidLookUpRecord();voidDeleteRecord();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;strcpy(szTime,time);szN=name[0];}voidRepository::SetRecord(char*name,intnumber,char*time)//输入数据函数{strcpy(szName,name);szNumber=number;strcpy(szTime,time);szN=name[0];}intRepository::Compare(CData&data)//比较商品名{Repository&temp=(Repository&)data;16returnstrcmp(szName,temp.szName);}voidRepository::Show()//打印一个结点的数据{coutsetw(15)szNamesetw(15)szNumbersetw(15)szTimeendl;}voidRepository::AddRecord()//将记录添加到链表中{CNode*pNode;Repository*pSh;charszName[20],szTime[20];unsignedintszNumber;cout请输入新商品名(输入0退出,并进入系统菜单):;cinszName;while(strcmp(szName,0)){cout请输入新商品入库时间:;cinszTime;cout请输入新商品数量:;cinszNumber;pSh=newRepository;//生成新的数据累对象pSh-SetRecord(szName,szNumber,szTime);//数据类对象赋值pNode=newCNode;//生成新的结点pNode-InputData(pSh);//结点插入链表ShList.AddNode(pNode);count++;cout请输入新商品名(输入0退出,并进入系统菜单);cinszName;}coutendlendl;}voidRepository::Display()//显示全部链表数据{cout当前操作共有count条新商品的添加纪录。\n\n;cout目前库存共有商品信息记录是:\n\n;17coutsetiosflags(ios_base::left)setw(15)商品名setw(15)商品数量setw(15)入库时间endlendl;ShList.ShowList();coutendlendl;system(pause);system(cls);}voidRepository::LookUpRecord()//按照商品名查找{CNode*pLook;charszName[20];cout请输入您需要查找的商品名(输入0退出,并进入系统菜单):;cinszName;while(strcmp(szName,0)){Repositorysh(szName,0,0);//生成结点pLook=ShList.Search(sh);//查找指定结点的数据if(pLook){cout在库存商品信息记录中找到商品:szName,内容是:endl;coutsetw(15)商品名setw(15)商品数量setw(15)入库时间endl;pLook-ShowNode();}elsecout在库存商品信息记录中找不到商品:szName。endl;cout请输入您需要查找的商品名(输入0退出,并进入系统菜单):;cinszName;}coutendlendl;}voidRepository::DeleteRecord()//在链表中删除指定的结点的数据{CNode*pLook;charszName[20];cout请输入您需要删除的商品名(输入0退出,并进入系统菜单):;cinszName;while(strcmp(szName,0)){Repositorysh(szName,0,0);18pLook=ShList.Search(sh);if(pLook)//删除时应先查找出结点{cout在库存商品信息记录中找到商品:szName,内容是:endl;coutsetw(15)商品名setw(15)商品数量setw(15)入库时间endl;pLook-ShowNode();cout请确定是否删除此商品信息记录(Y/N)【确定删除请输入Y或y,取消删除请输入N或n】:;charok;cinok;if(ok=='Y'||ok=='y'){ShList.DeleteNode(pLook);co
本文标题:数据结构课程设计报告库存管理系统
链接地址:https://www.777doc.com/doc-1306875 .html