资源描述
学 号
数据结构课程设计
设计说明书
库存管理系统
起止日期: 2011年 1月 10 日 至 2011 年 1月15日
学生姓名
班级
成绩
指导教师(签字)
电子与信息工程系
2011年 1 月15日
天津城市建设学院
课程设计任务书
2010—2011学年第1学期
电子与信息工程 系 软件工程 专业 班级
课程设计名称: 数据结构课程设计
设计题目: 库存管理系统
完成期限:自 2011 年 12 月 12 日至 2011 年 12 月 16 日共 1 周
设计依据:c++程序设计
要求:熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。
主要内容:
1)问题描述
试设计一库存管理系统,产品信息包括产品编号、名称、价格、数量等(产品编号不重复)。
2) 基本要求
该系统应具有以下功能:
1、产品信息录入功能(产品信息用文件保存)--输入?
2、产品信息浏览功能 --输出?
3、产品入库
4、产品出库
5、查询和排序功能:
1)按价格从大到小排序
2)按名称查询
6、产品信息删除、修改功能。
目录
一、设计目的 4
二、设计要求 4
三、设计内容 4
(1)需求分析 4
(2)问题求解 4
(3)总体设计 5
(4)详细设计 6
(5)关键源程序清单 7
(6)执行结果: 12
四、参考文献 15
一、设计目的
熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。
二、设计要求
(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;
(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩.凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;
(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;
(4)认真编写课程设计报告。
三、设计内容
(1)需求分析
程序的功能、输入输出的要求
1、从文件中加载数据;
2、 增加一个产品的信息;
3、 保存数据;
4、 显示所有产品的信息;
5、 删除某个产品的信息;
6、 用名称查找某个产品的信息;
7、 用编号查找某个产品的信息;
8、 退出。
(2)问题求解
首先,定义一个包含产品的编号、名称、价格、数量等的输入产品信息类(class Provider),紧接着,定义一个输入产品信息函数( void input()),输入定义好的类中的数据成员。接着定义产品输出的函数(void output()).这部分是产品输入输出。定义节点类(class Node),节点类中包含一个指向节点(Node)的指针变量(next)和节点成员函数.
定义产品信息的目录类(class List),有成员函数两个,一个List成员函数、一个增加产品信息的成员函数(void addNode())。定义一个显示产品的信息的函数(void XSNode()),用它来输入产品的信息。定义查询函数(void queryNode1(char *TName)、void queryNode2(char *TID))
分别用指向编号和名称的地址来查询。还有定义删除和储存产品信息的函数(void delNode(char *TName)和void saveList())。
(3)总体设计
程序设计组成框图(如下):
库 存
管 理
系 统
功能显示
产品入库
保存数据
显示产品信息
产品出库
用名称查找某个产品信息
用编号查找某个产品信息
退出
流程图(如下):
开始
选择功能
显示功能
增加产品信息
保存数据
显示产品信息
删除产品信息
按名称查询
按编号查询
1
2
3
4
5
6
7
退出系统
(4)详细设计
函数功能
1、void input() 通过函数输入产品信息
2、void output() 通过函数输出产品信息
3、Node( ) 通过函数使指针指向下个地址
4、List() 通过函数使指针指向首地址
5、void addNode() 通过函数添加产品信息
6、void XSNode() 通过函数显示产品所有信息
7、void queryNode1(char *TName) 通过函数查询产品信息
8、void queryNode2(char *TName) 同上
9、void delNode(char *TName) 通过函数删除产品信息
10、void saveList() 通过函数储存产品信息
11、ofs。open(”data.txt”); 通过函数输出文本文件
12、ifs.open(”data。txt”); 通过函数输入文本文件
13、~List() 通数过定义析构函数,释放空间
14、int main() 通过主函数调用其他函数;
(5)关键源程序清单
清单中应有足够的注释问题描述和功能设计。
源程序:
#include<iostream〉
#include<fstream〉
#include〈string>
#define NULL 0
using namespace std;
class Provider //定义输入产品的信息的类
{
public:
char ID[10];//定义编号
char Name[10];
char Values[10];
char Num[10];
void input() //定义输入产品信息函数
{
cout<〈”请输入产品的信息:"〈<endl;
cout〈<” ID号:”;
cin>>ID;
cout<〈" 名称:";
cin>〉Name;
cout〈〈" 价格:";
cin〉>Values;
cout〈<” 数量:”;
cin〉〉Num;
}
void output() //定函数义输出信息
{
cout<〈"产品的信息显示如下:”<<endl;
cout<〈"ID号:"<〈ID<<endl;
cout〈<”名称:"<<Name〈<endl;
cout<〈”价格:”<<Values〈〈endl;
cout〈<"数量:”〈<Num<<endl;
}
};
//*******************************************************************
class Node //定义节点
{
public:
Provider data;
Node *next; //定义next为指向Node类对象的指针变量
Node( )
{ next=NULL;}
};
//*******************************************************************
class List //定义产品信息目录类
{
public:
Node *start;
List()
{ start=NULL;}
void addNode() //添加一个产品的信息
{
Node *p;
p=new Node(); //链表
p-〉data。input();
p—>next=start;
start=p;
}
//*******************************************************************
void XSNode() //显示所有产品的信息
{
Node *p;
for(p=start;p!=NULL;p=p-〉next)
p—〉data.output();
}
//********************************************************************
void queryNode1(char *TName) //利用名称查询产品信息
{
Node *p;
for(p=start;p!=NULL;p=p—〉next)
{
if(strcmp(p-〉data.Name,TName)==0)
{
cout<〈"产品的信息显示如下:"<〈endl;
cout<<"ID号:”<<p->data.ID〈〈endl;
cout<<”名称:”<〈p->data。Name〈〈endl;
cout<〈”价格"〈〈p-〉data。Values<〈endl;
cout〈〈"数量:”〈<p->data。Num〈<endl;
return;
}
}
cout〈<”没找到你要的产品!!!”<〈endl;
}
//*****************************************************************
void queryNode2(char *TID) //利用编号查询产品信息
{
Node *p;
for(p=start;p!=NULL;p=p-〉next)
{
if(strcmp(p—〉data.ID,TID)==0)
{
cout<〈"产品的信息显示如下:"〈〈endl;
cout〈〈”ID号:”〈〈p—〉data。ID<〈endl;
cout〈<”名称:"<〈p—〉data。Name<〈endl;
cout〈〈"价格:”〈<p—>data。Values<〈endl;
cout〈〈”数量:”〈<p->data.Num<〈endl;
return;
}
}
cout〈〈”没找到你要的产品!!!"〈〈endl;
}
//********************************************************************
void delNode(char *TName) //删除产品信息
{
Node *p,*c;
for(p=start,c=start;c!=NULL;c=c—>next)
{
if(strcmp(TName,c-〉data。Name)==0)
{
p—〉next=c-〉next;
if(start==c)
{
start=c—〉next;
}
delete c;
cout<<"删除已成功!!"〈〈endl;
return;
}
p=c;
}
cout<〈"没找到你要删除的产品!!!”〈<endl;
}
//********************************************************************
void saveList() //储存产品信息
{
Node *p;
ofstream ofs;
ofs.open(”data.txt”);
for(p=start;p!=NULL;p=p->next)
{
ofs<<p—>data.ID〈〈” ";
ofs〈〈p->data.Name<〈” ";
ofs〈<p->data。Values〈<" ";
ofs〈〈p—〉data。Num<<” ”;
}
ofs。close();
}
void initList()
{
ifstream ifs;
ifs.open("data.txt”);
while(!ifs.eof())
{
Node *p;
p=new Node();
ifs>〉p->data。ID;
ifs〉>p—〉data。Name;
ifs〉>p—〉data.Values;
ifs〉〉p->data.Num;
p—>next=start;
start=p;
}
ifs.close();
Node *p;
p=start;
start=start-〉next;
delete p;
}
~List() //定义析构函数,释放空间
{
Node *c;
for(c=start;c!=NULL;)
{
Node *p;
p=c;
c=c->next;
delete p;
}
}
};
//*************************************************************8
int main()
{
List p1;
char ch;
char tmpstr[50];
while(true)
{
cout<<" ***********************************”〈<endl;
cout<<" 1、产品入库信息;”<〈endl;
cout〈<” 2、保存产品信息;”〈<endl;
cout<<” 3、显示产品信息;"<〈endl;
cout〈<" 4、产品出库信息;”<〈endl;
cout〈<” 5、用名称查找产品信息;"〈〈endl;
cout〈<” 6、用编号查找产品信息;”<〈endl;
cout〈〈" 0、退出;”〈<endl;
cout<<" ***********************************"<<endl;
cout<<"请选择:”;
cin>〉ch;
switch(ch)
{
case '1’:
p1.addNode();break;
case '2’:
p1。saveList();break;
case '3’:
p1.XSNode();break;
case ’4':
cout<〈"请输入出库产品的名称:";
cin>>tmpstr;
p1.delNode(tmpstr);break;
case '5':
cout<<"请输入你要查找的产品的名称:";
cin〉>tmpstr;
p1.queryNode1(tmpstr);break;
case '6':
cout<〈”请输入你要查找的产品的编号:";
cin〉>tmpstr;
p1.queryNode2(tmpstr);break;
case ’0’:
return 0;
default:
cout〈<”选择错误,请再次选择!!!"〈<endl;
}
}
return 0;
}
(6)执行结果:
四、参考文献
[1]《数据结构》. 王红梅. 清华大学出版社
[2]《数据结构学习辅导与实验指导》。 王红梅. 清华大学出版社
[3]《C++程序设计》. 钱能。 清华大学出版社
[4]《C++程序设计试验指导》。 钱能。 清华大学出版社
[5]《C++程序设计》。谭浩强. 清华大学出版社
11
1
展开阅读全文