(库存管理)数据结构课程设计报告库存管理系统

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档