数据结构课程设计报告库存管理系统Word文档格式.docx

上传人:b****5 文档编号:18156872 上传时间:2022-12-13 格式:DOCX 页数:17 大小:18.99KB
下载 相关 举报
数据结构课程设计报告库存管理系统Word文档格式.docx_第1页
第1页 / 共17页
数据结构课程设计报告库存管理系统Word文档格式.docx_第2页
第2页 / 共17页
数据结构课程设计报告库存管理系统Word文档格式.docx_第3页
第3页 / 共17页
数据结构课程设计报告库存管理系统Word文档格式.docx_第4页
第4页 / 共17页
数据结构课程设计报告库存管理系统Word文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

数据结构课程设计报告库存管理系统Word文档格式.docx

《数据结构课程设计报告库存管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告库存管理系统Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

数据结构课程设计报告库存管理系统Word文档格式.docx

[5]《C++程序设计》.谭浩强.清华大学出版社

#include<

iostream>

string>

iomanip>

fstream>

usingnamespacestd;

intcount=0;

classCData//定义数据基类

{

public:

CData(){};

virtualintCompare(CData&

)=0;

virtualvoidShow()=0;

virtual~CData(){};

};

classCNode//定义结点基类

private:

CData*pData;

//用于指向数据类的指针

CNode*pNext;

//用于指向链表的后向指针

voidInputData(CData*pdata){pData=pdata;

}//输入数据

voidShowNode(){pData->

Show();

}//打印一个节点的数据

CData*GetData(){returnpData;

}

friendclassCList;

//定义链表类为基类

classCList

CNode*pHead;

//链表头结点指针

CList(){pHead=0;

~CList(){DeleteList();

}

voidAddNode(CNode*pnode);

//在首部添加结点

CNode*DeleteNode(CNode*);

//删除一个指定的结点,返回该结点的指针

CNode*Search(CData&

);

//查找一个指定的数据,返回该数据所在的结点在链表的指针,未找到返回0

boolIsExist(CData&

voidShowList();

//打印整个链表

voidDeleteList();

//删除整个链表

CNode*GetListHead(){returnpHead;

}//返回链表首结点

CNode*GetListNextNode(CNode*pnode);

//返回链表指定结点的下一个结点

CNode*CList:

:

GetListNextNode(CNode*pnode)//返回链表指定结点的下一个结点

CNode*p1=pnode;

returnp1->

pNext;

voidCList:

AddNode(CNode*pnode)//在首部添加结点

if(pHead==0)//如果是空链表,插入的结点是唯一的结点

{

pHead=pnode;

pnode->

pNext=0;

return;

}

else//否则,插入到链表首部

pNext=pHead;

DeleteNode(CNode*pnode)//删除一个指定的结点,返回该结点的指针

CNode*p1,*p2;

p1=pHead;

//指向首结点

while(p1!

=pnode&

&

p1->

pNext!

=0)//寻找要删除的结点

p2=p1;

p1=p1->

//结点p2始终在p1的后面

if(p1==pHead)//如果要删除的是首结点

pHead=pHead->

//将首结点后移

returnpnode;

p2->

pNext=p1->

//p1指向被删除的结点,将p2结点与p1后面的结点连接起来

Search(CData&

data)//查找一个指定的数据,返回指针,若未找到返回0

CNode*p1=pHead;

while(p1)//从头结点开始查找

if(p1->

pData->

Compare(data)==0)

returnp1;

//找到后返回结点指针

return0;

//搜索完找不到,返回空指针0

ShowList()//打印整个链表

while(p1)

p1->

DeleteList()//删除整个链表结点

deletep1->

pData;

deletep2;

classRepository:

publicCData//库存为记录,为数据基类的公有派生类

private:

charszName[20];

//库存中数据:

商品名、商品数量和入库时间

unsignedintszNumber;

charszTime[20];

charszN;

CListShList;

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,"

Repository(char*name,intnumber,char*time)

strcpy(szName,name);

szNumber=number;

strcpy(szTime,time);

szN=name[0];

voidRepository:

SetRecord(char*name,intnumber,char*time)//输入数据函数

intRepository:

Compare(CData&

data)//比较商品名

Repository&

temp=(Repository&

)data;

returnstrcmp(szName,temp.szName);

Show()//打印一个结点的数据

cout<

<

setw(15)<

szName<

szNumber<

szTime<

endl;

AddRecord()//将记录添加到链表中

CNode*pNode;

Repository*pSh;

charszName[20],szTime[20];

"

请输入新商品名(输入0退出,并进入系统菜单):

;

cin>

>

szName;

while(strcmp(szName,"

0"

))

请输入新商品入库时间:

"

szTime;

请输入新商品数量:

szNumber;

pSh=newRepository;

//生成新的数据累对象

pSh->

SetRecord(szName,szNumber,szTime);

//数据类对象赋值

pNode=newCNode;

//生成新的结点

pNode->

InputData(pSh);

//结点插入链表

ShList.AddNode(pNode);

count++;

请输入新商品名(输入0退出,并进入系统菜单)"

endl<

Display()//显示全部链表数据

当前操作共有"

count<

条新商品的添加纪录。

\n\n"

目前库存共有商品信息记录是:

setiosflags(ios_base:

left)<

商品名"

商品数量"

入库时间"

ShList.ShowList();

system("

pause"

cls"

LookUpRecord()//按照商品名查找

CNode*pLook;

请输入您需要查找的商品名(输入0退出,并进入系统菜单):

while(strcmp(szName,"

Repositorysh(szName,0,"

//生成结点

pLook=ShList.Search(sh);

//查找指定结点的数据

if(pLook)

在库存商品信息记录中找到商品:

内容是:

pLook->

ShowNode();

else

在库存商品信息记录中找不到商品:

请输入您需要查找的商品名(输入0退出,并进入系统菜单):

DeleteRecord()//在链表中删除指定的结点的数据

请输入您需要删除的商品名(输入0退出,并进入系统菜单):

if(pLook)//删除时应先查找出结点

请确定是否删除此商品信息记录(Y/N)

【确定删除请输入Y或y,取消删除请输入N或n】:

charok;

ok;

if(ok=='

Y'

||ok=='

y'

ShList.DeleteNode(pLook);

的信息记录删除成功!

deletepLook;

count--;

elseif(ok=='

N'

n'

的信息记录删除失败!

else

ModifyRecord()//修改商品记录

请输入您需要修改的商品名(输入0退出,并进入系统菜单):

if(pLook)//修改时应先查找出结点

-----下面开始修改-----"

请输入修改后的商品名:

请输入修改后的商品数量:

请输入修改后的商品入库时间:

请确定是否修改此记录(Yes(Y)orNo(N)):

的信息记录修改成功!

的信息记录修改失败!

在库存商品信息记录中找不到"

"

请输入您需要修改的商品名(输入0退出,并进入系统菜单):

Output()

请输入您需要出库的商品名(输入0退出,并进入系统菜单):

pSh=(Repository*)pLook->

GetData();

if(0==pSh->

szNumber)

该商品缺货,请及时补充!

请输入您要取出的商品数量:

请确定是否取出该商品(Yes(Y)orNo(N)):

if(ok=='

if(pSh->

=szNumber)

您要求的商品数量大于仓库中的数量,故全部输出"

pSh->

个商品"

szNumber=0;

{

szNumber-=szNumber;

您已取出"

成功取出!

您取消了该操作"

请输入您需要出库的商品名(输入0退出,并进入系统菜单):

SaveToFile()//将链表中的数据保存在文件中

ofstreamoutfile("

repository.dat"

ios:

binary);

if(!

outfile)

数据文件打开错误,没有将数据存入文件!

\n"

CNode*pnode;

stringstrName,strNumber;

pnode=ShList.GetListHead();

//取出链表首结点指针

while(pnode)

pSh=(Repository*)pnode->

//返回结点指向的数据域指针

outfile.write((char*)pSh,sizeof(Repository));

//将数据域写入文件

pnode=ShList.GetListNextNode(pnode);

//取下一结点的指针

outfile.close();

ReadFromFile()//在程序开始先查找有无数据文件,找到后读取文件数据

ifstreaminfile("

infile)

没有数据文件,请您先添加!

while(!

infile.eof())

//定义数据域对象

infile.read((char*)pSh,sizeof(Repository));

//数据域对象内容生成结点

//将结点加入链表

ShList.DeleteNode(pNode);

//由于文件多读一次,所以将首结点删除

infile.close();

Operate(string&

strChoice)//根据主菜单选项进行操作

if(strChoice=="

1"

AddRecord();

elseif(strChoice=="

2"

Display();

3"

LookUpRecord();

4"

DeleteRecord();

elseif(strChoice=="

5"

ModifyRecord();

6"

Output();

SaveToFile();

elsecout<

对不起,您的输入有误,请重新输入您的选择:

voidmain()

Repositoryrepository;

*******************************************************************\n\n"

欢迎进入库存管理系统\n\n"

******************************************************************

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1