(库存管理)数据结构课程设计报告库存管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计任务书
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
using namespace std;
int count=0;
class CData //定义数据基类
{
public:
CData(){};
virtual int Compare(CData &)=0;
virtual void Show()=0;
virtual ~CData(){};
};
class CNode //定义结点基类
{
private:
CData *pData; //用于指向数据类的指针
CNode *pNext; //用于指向链表的后向指针
public:
void InputData(CData *pdata){pData=pdata;} //输入数据
void ShowNode(){pData->Show();} //打印一个节点的数据
CData *GetData(){return pData;}
friend class CList; //定义链表类为基类
};
class CList
{
CNode *pHead; //链表头结点指针
public:
CList(){pHead=0;};
~CList(){DeleteList();}
void AddNode(CNode *pnode); //在首部添加结点
CNode *DeleteNode(CNode *); //删除一个指定的结点,返回该结点的指针
CNode *Search(CData &); //查找一个指定的数据,返回该数据所在的结点在链表的指针,未找到返回0
bool IsExist(CData &);
void ShowList(); //打印整个链表
void DeleteList(); //删除整个链表
CNode *GetListHead(){return pHead;} //返回链表首结点
CNode *GetListNextNode(CNode *pnode); //返回链表指定结点的下一个结点
};
CNode *CList::GetListNextNode(CNode *pnode) //返回链表指定结点的下一个结点
{
CNode *p1=pnode;
return p1->pNext;
};
void CList::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; //将首结点后移
return pnode;
}
p2->pNext=p1->pNext; //p1指向被删除的结点,将p2结点与p1后面的结点连接起来return pnode;
}
CNode *CList::Search(CData &data) //查找一个指定的数据,返回指针,若未找到返回0 {
CNode *p1=pHead;