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






