仓库管理系统的C 编程.docx
《仓库管理系统的C 编程.docx》由会员分享,可在线阅读,更多相关《仓库管理系统的C 编程.docx(25页珍藏版)》请在冰豆网上搜索。
![仓库管理系统的C 编程.docx](https://file1.bdocx.com/fileroot1/2023-2/6/78b3c6da-ac6b-4bd1-9517-d0693750cdbe/78b3c6da-ac6b-4bd1-9517-d0693750cdbe1.gif)
仓库管理系统的C编程
程序设计实验报告
课题名称:
仓库货物管理系统
学生姓名:
指导教师:
完成日期:
1.2仓库管理有关理论1
1
第2章功能分析
2.1系统的功能分析2
2.2.系统性能要求:
2
第3章程序设计思路
3.1模块流程图3
3.2各模块功能简介3
3.3类、函数的说明8
4.1不足分析9
4.2总结9
附录一参考文献10
附录二
第1章程序设计背景
1.1货物管理系统的意义
仓库管理系统是企业信息管理的主要部分,当库存管理实现计算机辅助核算后,大量的库存信息资源可以得到及时记录,汇总和分析并可通过网络系统迅速传递,提高库存信息的及时性,系统性,全面性和共享程度,有利于形成整个企业的管理信息系统网络,促进整个企业管理向现代化迈进。
一直以来人们使用传统人工的方式管理仓库中的各种物资设备,这种管理方式存在着许多缺点,如:
效率低、另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
作为计算机应用的一部分,使用计算机对产品仓库信息进行管理,具有着人工管理无法比拟的优点,它检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等,可减少更多的人力物力,这些都能够极大地提高货品仓库的管理效率,也是企业仓库管理科学化、正规化,与世界接轨的重要条件。
因此,开发一个仓库管理系统是很有必要的,具有其特有的技术意义和管理意义。
1.2仓库管理有关理论
仓库是物流>物流系统中企业储存原料、半成品、产成品的场所。
仓库经常将大批量的货物在仓库中存放较长时间,而现代物流仓库更强调货物的动态进出,尽量少的货物在仓库中存放尽可能少的时间。
仓库在物流系统中的作用主要有运输整合、产品组合、直接转运、服务、偶发事件的防范和缓冲。
仓库管理的核心探讨——库存。
虽然“库存”不会记入月度损益,但它是资产负债表不可缺少的组成元素。
有很多关于“时间”的财务绩效参数和非财务性绩效参数,例如,及时客户订单交付、现金周转、库存持有天数等等。
对于企业来说,这些周转时间能反映出企业当前的经营状况。
它们的改进必然有助于提高供应链的整体竞争力。
1.3程序准备实现目标
1、设计内容:
制作仓库货物管理系统,实现数据录入、数据输出、数据查询等功。
2、设计要求:
1)可以对货物的存入、取出等操作记录
2)货物信息的查询
3)简单的计算统计功能
第2章功能分析
2.1系统的功能分析:
1.数据录入:
商品入库和商品出库
2.数据查询:
货物的查询
3.维护系统:
货物数据的修改级删除
2.2.系统性能要求:
1.系统安全、可靠;
2.功能齐全;
3.操作方便、界面友好;
4.易于维护和扩充。
第3章程序设计思路
3.1模块框架图
仓库货物管理系统有:
商品入库、商品出库、货物查询、维护系统
3.2各模块功能简介
1货物入库
按
任
意
键
返
回
2查询全部货物
按
任
意
键
返
回
3货物查询
返回
4货物数据的修改
返回
5数据的删除
返回
3.3类、函数及说明
classInventory
{
public:
Stock*pHead;//定义一个头结点
intcount;//定义数量
Inventory();//构造函数
~Inventory();//析构函数
intSave(charfileName[]);//保存所有项目信息到文件
intLoad(charfileName[]);//从文件中读取项目信息
voidMenu();//处理项目信息模块菜单
private:
friendclassOutStocks;//声明友元类
voidDisplay();
voidAddStock(Stock*);//添加一个项目
voidAddStocks();//添加多个项目
intMenuSelect();//显示和处理项目信息模块菜单
};
classStock
{
protected:
intprice;//单价
intamount;//数量
charnum[20];//编号
charname[20];//品名
public:
Stock(void);//构造函数
Stock*next;//定义next指针
voidSetNum(char[]);//声明初始化编号函数
char*GetNum();//获得编号函数
voidSetName(char[]);//初始化名称函数
char*GetName();//获得名称函数
voidSetPrice(int);//声明初始化价格函数
intGetPrice();//获得价格函数
voidSetAmount(int);//初始化数量函数
intGetAmount();//获得数量函数
voidInput(char*a);//声明输入函数
voidAdd(int);//声明添加函数
voidOut(int);//声明出库函数
voidUpdate();//声明更新函数
voidDisplay();//声明打印函数
};
第4章不足分析与总结
4.1不足分析
1.界面不够美观(界面编辑不是特别熟悉,暂时不制作界面)
2.程序只适应与单机,与网络无关联,建议以后增加网络功能
3.可能会有部分漏洞,需要修补改进
4.2总结
经过三周的课程设计,虽然完成了仓库管理系统的设计,但是不可否认,其中还有有很多的不足,在本次设计中,只实现了其基本功能,很多强大的功能还没有实现,仓库管理系统是企业信息管理中不可缺少的一部分,所以要实现它完整的功能还需要很多的改进,比如运用数据库。
在这次课设中运用了面向对象的编程语言C++,通过定义类和对象,以及类的属性和方法实现基本功能,如出库和入库。
这使得我们更进一步熟悉了面向对象机制。
在这次课程设计中,由于对专业知识的掌握不够,我们遇到了很多问题,得到了老师和同学的帮助,借此感谢帮助过我们的老师和同学。
总之,通过课程设计,使我们能把理论知识运用于实践,做出符合实际要求的软件.
附录一
参考资料
《C++程序设计》清华大学出版社
《标准c++库大全》电子工业出版社
《VisualC++6.0编程基础与范例》电子工业出版社
《VisualC++库大全》电子工业出版社
附录二
源代码
头文件Inventory.h:
#pragmaonce
#include"Stock.h"
classInventory
{
public:
Stock*pHead;//定义一个头结点
intcount;//定义数量
Inventory();//构造函数
~Inventory();//析构函数
intSave(charfileName[]);//保存所有项目信息到文件
intLoad(charfileName[]);//从文件中读取项目信息
voidMenu();//处理项目信息模块菜单
private:
friendclassOutStocks;//声明友元类
voidDisplay();
voidAddStock(Stock*);//添加一个项目
voidAddStocks();//添加多个项目
intMenuSelect();//显示和处理项目信息模块菜单
};
头文件:
Stock.h:
#pragmaonce
classStock
{
protected:
intprice;//单价
intamount;//数量
charnum[20];//编号
charname[20];//品名
public:
Stock(void);//构造函数
Stock*next;//定义next指针
voidSetNum(char[]);//声明初始化编号函数
char*GetNum();//获得编号函数
voidSetName(char[]);//初始化名称函数
char*GetName();//获得名称函数
voidSetPrice(int);//声明初始化价格函数
intGetPrice();//获得价格函数
voidSetAmount(int);//初始化数量函数
intGetAmount();//获得数量函数
voidInput(char*a);//声明输入函数
voidAdd(int);//声明添加函数
voidOut(int);//声明出库函数
voidUpdate();//声明更新函数
voidDisplay();//声明打印函数
};
Inventory.cpp:
#include"Search.h"
#include
#include
#include
usingnamespacestd;
externSearchSearch;//寻找Search的定义
Inventory:
:
Inventory()
{
count=0;
pHead=newStock();//给头结点分配储存空间
pHead->next=NULL;//头结点的下一个节点置空
}
Inventory:
:
~Inventory()//析构函数
{
//要将所有节点释放掉
Stock*pCurrent;//定义一个当前指针
pCurrent=pHead;//把头结点赋给当前指针
while(pCurrent->next!
=NULL)//当当前指针指向的下一个节点不为空
{
pHead=pHead->next;//头结点后移一个单位
free(pCurrent);//释放当前节点
pCurrent=pHead;//头结点赋给当前指针
}
free(pCurrent);//释放当前节点
}
voidInventory:
:
AddStock(Stock*pCurrent)
{
charn[5];
while(pCurrent->next!
=NULL)//当pCurrent下一个节点不为空
pCurrent=pCurrent->next;//pCurrent结点后移一个单位
cout<<"\t\t编号:
";
cin>>n;
pCurrent->Input(n);//调用输入函数
pCurrent->next=newStock();//给pCurrent下一个结点分配储存空间
pCurrent=pCurrent->next;//pCurrent结点后移一个单位
pCurrent->next=NULL;//pCurrent下一个节点为空
count++;
}
voidInventory:
:
AddStocks()
{
intn;
cout<<"\n\t\t请输入入库项目数量:
";
cin>>n;
getchar();//消除回车符
if(n<1)
return;
Stock*pCurrent;
pCurrent=pHead;//把头结点赋给当前指针
for(inti=1;i<=n;i++)
{
cout<<"\n\t\t"<
"<AddStock(pCurrent);
}
system("pause");
}
voidInventory:
:
Display()
{
if(count==0)
{
system("cls");
cout<<"\n\n\n\t\t无物品记录。
\n\n\t\t";
system("pause");
return;
}
system("cls");
cout<<"库存物品共"<";
cout<<"\n┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";
cout<<"┃序号编号品名单价数量总价┃\n";
cout<<"┠─────────────────────────────────────┨\n";
cout<<"┃┃\n";
Stock*pCurrent;
pCurrent=pHead;//把头结点赋给当前指针
for(inti=1;pCurrent->next!
=NULL;i++)
{
cout<<"┃"<pCurrent->Display();//调用打印函数
cout<<"┃"<pCurrent=pCurrent->next;//pCurrent结点后移一个单位
}
cout<<"┃┃\n";
cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";
system("pause");
}
intInventory:
:
Save(charfileName[])
{
ofstreamoFile(fileName,ios:
:
out|ios:
:
binary);//二进制方式写入文件
if(!
oFile)
{
cout<<"\t\t文件“"<"<return0;
}
oFile.write((char*)&count,sizeof(int));
Stock*pCurrent;
pCurrent=pHead;//把头结点赋给当前指针
while(pCurrent!
=NULL)//pCurrent指针不为空
{
oFile.write((char*)pCurrent,sizeof(*pCurrent));
pCurrent=pCurrent->next;//pCurrent结点后移一个单位
}
oFile.close();//别忘了关闭文件流
return1;
}
intInventory:
:
Load(charfileName[])
{
ifstreamiFile(fileName,ios:
:
in|ios:
:
binary);
if(!
iFile)
{
cout<<"\t\t文件“"<"<return0;
}
iFile.read((char*)&count,sizeof(int));
if(iFile.peek()!
=EOF)//文件内容不为空
{
//第一个节点需单独读取
pHead=newStock();
iFile.read((char*)pHead,sizeof(*pHead));
}
else
{
pHead=NULL;//头结点为空
return1;
}
Stock*pCurrent;
pCurrent=pHead;//把头结点赋给当前指针
while(iFile.peek()!
=EOF)//后续节点循环读取
{
pCurrent->next=newStock();//给pCurrent下一个结点分配储存空间
iFile.read((char*)&(*(pCurrent->next)),sizeof(*(pCurrent->next)));
pCurrent=pCurrent->next;//pCurrent结点后移一个单位
}
pCurrent->next=NULL;
iFile.close();//别忘了关闭文件流
return1;
}
intInventory:
:
MenuSelect()
{
chars[5];
intcn;
system("cls");
cout<<"\n┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";
cout<<"┠─────────────物品信息管理───ver0.9测试版────┨\n";
cout<<"┃┃\n";
cout<<"┃1.增加记录┃\n";
cout<<"┃2.显示全部物品┃\n";
cout<<"┃3.查找货物信息┃\n";
cout<<"┃4.修改货物信息┃\n";
cout<<"┃5.删除货物信息┃\n";
cout<<"┃┃\n";
cout<<"┃6.保存库存记录┃\n";
cout<<"┃7.读取库存记录┃\n";
cout<<"┃0.返回┃\n";
cout<<"┃┃\n";
cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";
cout<<"\n";
cout<<"\t\t请按键选择选择:
";
for(;;)
{
gets_s(s);
cn=atoi(s);
if(cn>7)
cout<<"\n\t\t输入错误,请按目录选择:
";
else
break;
}
returncn;
}
voidInventory:
:
Menu()
{
for(;;)
{
switch(MenuSelect())
{
case1:
AddStocks();//调用增加函数
break;
case2:
Display();//调用打印函数
break;
case3:
:
:
Search.Menu
(1);//调用查找函数
break;
case4:
:
:
Search.UpdateMenu
(1);
break;
case5:
:
:
Search.DeleteMenu
(1);
break;
case6:
if(Save("Stock.data"))
cout<<"\t\t项目信息保存成功!
\n"<else
cout<<"\t\t项目信息保存失败!
\n"<system("pause");
break;
case7:
if(Load("Stock.data"))
cout<<"\t\t项目信息读取成功!
\n"<else
cout<<"\t\t项目信息读取失败!
\n"<system("pause");
break;
case0:
return;
}
}
}
Stock.cpp:
#include"Stock.h"
#include
#include
usingnamespacestd;
Stock:
:
Stock(void)
{
amount=0;
next=NULL;
}
voidStock:
:
SetNum(charn[])
{
strcpy_s(num,n);
}
char*Stock:
:
GetNum()
{
returnnum;
}
voidStock:
:
SetName(charn[])
{
strcpy_s(name,n);
}
char*Stock:
:
GetName()
{
returnname;
}
voidStock:
:
SetPrice(intn)
{
price=n;
}
intStock:
:
GetPrice()
{
returnprice;
}
voidStock:
:
SetAmount(intn)
{
amount=n;
}
intStock:
:
GetAmount()
{
returnamount;
}
voidStock:
:
Input(char*a)
{
intn;
charch[10];
SetNum(a);
cout<<"\t\t品名:
";
cin>>ch;
SetName(ch);
cout<<"\t\t单价:
";
cin>>n;
getchar();
SetPrice(n);
}
voidStock:
:
Add(intn)
{
amount+=n;
}
voidStock:
:
Out(intn)
{
amount-=n;
}
voidStock:
:
Update()
{
intn;
charch[10];
cout<<"\t\t编号:
";
cin.getline(ch,'\n');
SetNum(ch);
cout<<"\t\t品名:
";
cin.getline(ch,'\n');
SetName(ch);
cout<<"\t\t单价:
";
cin>>n;
getchar();
SetPrice(n);
cout<<"\t\t数量:
";
cin>>n;
getchar();
SetAmount(n);
}
voidStock:
:
Display()
{
cout<<<"\t\b\b"<<<"\t\b\b\b\b"<<<<"\t"<}