第1页共12页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共12页课程设计任务书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++程序设计》.谭浩强.清华大学出版社#include#include#include#include第2页共12页第1页共12页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共12页usingnamespacestd;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);//返回链表指定结点的下一个结点};CNode*CList::GetListNextNode(CNode*pnode)//返回链表指定结点的下一个结点{CNode*p1=pnode;returnp1->pNext;第3页共12页第2页共12页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共12页};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;while(p1)//从头结点开始查找{if(p1->pData->Compare(data)==0)returnp1;//找到后返回结点指针p1=p1->pNext;}return0;//搜索完找不到,返回空指针0}第4...