超市库存管理系统.docx

上传人:b****5 文档编号:8287458 上传时间:2023-01-30 格式:DOCX 页数:19 大小:350.51KB
下载 相关 举报
超市库存管理系统.docx_第1页
第1页 / 共19页
超市库存管理系统.docx_第2页
第2页 / 共19页
超市库存管理系统.docx_第3页
第3页 / 共19页
超市库存管理系统.docx_第4页
第4页 / 共19页
超市库存管理系统.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

超市库存管理系统.docx

《超市库存管理系统.docx》由会员分享,可在线阅读,更多相关《超市库存管理系统.docx(19页珍藏版)》请在冰豆网上搜索。

超市库存管理系统.docx

超市库存管理系统

课程设计报告

 

学院:

计算机学院·软件学院

课程名称:

面向对象程序设计

专业班级:

网络工程

学生姓名:

学号:

指导教师:

 

完成时间:

2013年6月9日

 

超市库存管理系统设计与实现

1绪论

1.1项目背景及意义

随着我国经济持续发展,人们的生活水平不断提高,人们对生活物品的需要大大提升,大大小小的超市随着人们的需求而出现,超市中的商品数目以及样式急剧增加,有关商品的各种信息量也成倍增长。

超市时时刻刻都需要对商品各种信息进行统计分析。

因此对超市管理有了更高的要求,尤其对于库存商品的管理要求更高。

现在的超市库存商品数量很大,品种规格很多,传统的手工业务处理,大大降低了效率,而且容易出错,商品需求的计算较复杂,采用人工来处理费时费力,效率低且难免出错,产品规格、型号、品种较多,商品品种多且零碎,造成库存管理复杂,无法随时了解物品的收发存储情况,商品的出入库、物料移动、盘点、货物补订等业务处理过程,非常复杂、繁琐,依靠传统的手工处理或者个别部门电脑处理,不仅浪费大量的人力、物力、时间,而且精确程度低,再加上盲目采购,造成大量的库存积压或者短缺,商品的基础数据复杂而繁多,企业传统的卡片式管理,显然已不能适应高效率的商品更换,需求,储备动态变化的要求,不能监控商品的存储数量和商品的安全存储时间,不能及时准确的了解需要补充的库存商品名称及其数量,也不能及时的得知需要盘点的商品以及其盘点结果未能随时对现存的商品进行模拟预算,并且不能再保证销售的前提下,最大程度的降低库存,不能及时得知某种商品的收、发、存的状况;不能及时对库存的商品进行销售配比的模拟预算。

社会在不断进步,科学技术和管理也在迅速发展,这使得超市企业得到了前所未有的发展机遇,但是同时也必须面对市场竞争的严重挑战,在日趋激烈的竞争环境下,超市企业要求发展,就需要对其进行科学的管理,尤其是在超市运营中起着关键作用的库存管理。

现在一般的超市都采用计算机智能化管理,采用计算机作为工具的实用的计算机超市库存管理程序来帮助管理员进行更有效的超市库存管理工作。

用现今很发达的计算机科学来处理商品库存内部的信息流通和使用,这样就可以实现数据信息的共享,控制好数据,使得库存有统一的管理,提高信息的利用率,而且大大节省了人力物力,这样就可以很大程度的提高超市的企业的经营效率。

1.2开发环境和工具

由于本系统是基于Visual C++平台的,所以采用C++技术作为主要开发工具,系统前台界面采用常用的Microsoft Visual C++6.0开发软件,后台数据库采用MicrosoftAccess2003。

2.需求分析

2.1业务流程分析

超市的库存管理业务流程如下:

当超市货架某商品缺货时,发出缺货通知,然后检查仓库是否有该商品。

如果仓库有货,领取商品,并记录库存台账,统计报表;如果仓库没有货物,或者检查货物存量低于安全库存,发出订货单并采购货物。

商品入库,记录库存台账,并统计报表。

业务流程图如图1所示:

 

 

图1超市库存管理流程图

2.2功能分析

功能分析的任务是弄清楚客户对于目标系统的功能需求。

超市库存管理主要是为了更好更高效率的帮助超市管理好超市的库存商品,及时的补充商品能够在超市的行业竞争中有优势。

其中包括商品的查询,能够及时的了解商品的需求情况;商品的信息,了解商品的总体数量以及商品的详细分类;供货商的信息,能够准确无误的找到最好的商品来源;报表信息,能够清晰的看到整个经营过程的盈亏,及时做出正确的营业决定。

根据对系统目标和业务流程的分析,本系统的功能需求可以归纳为以下具体功能:

(1)库存商品信息查询功能:

对于商品的各信息的及时了解掌握,才能更加有效率的管理好超市的运营情况。

该模块主要用于用户对于超市货架上的物品在一段时间的运营后查询货架上的物品的数量剩余,以此确定需要补充的货物;仓库的商品储存的查询以及运营报表的查询。

可按商品的类别、商品名称、生产厂家进行查询。

如存在则输出相应的信息,如不存在则提示不存在并提示修改已有商品信息,对于不再需要存储的商品也可删除物品的记录。

(2)超市商品管理功能:

该功能主要完成商品从供货商处运达后的商品入库检验,商品分类,以及商品的入库登记;当货架商品不足时,从库存商品调用的商品数量,商品类型等的统计以及管理。

商品分类包括:

商品名称,品牌,类型,保质期,价格,生产厂家,供货来源等详细信息。

(3)供货商信息管理功能:

由于每种商品的代理商都不止一家且相同供货商之间提供的商品质量也不是完全相同所以通过该功能记录各供货商的电话,地址,能够提供的商品类型,提供商品质量优劣等情况。

在商品不足需要订购的时候,给用户最合适的供货来源。

(4)部门管理功能:

该模块主要实现对采购部,销售部人员基本信息管理的功能。

对所以员工的信息进行登记管理,包括添加、修改、删除、查询操作。

3系统设计

3.1系统功能模块设计

从前面的业务流程与功能分析可以设计六个功能模块,分别是销售部信息管理模块、库存商品信息管理模块、入库商品信息管理模块、出库商品信息管理模块、供货商信息管理模块、采购部信息管理模块。

系统整体功能如图2所示:

 

图2系统整体功能图

其中各模块的功能包括:

库存商品信息管理模块:

查询商品库存总量、商品库存状况。

入库商品信息管理模块:

登记入库商品信息、修改入库商品信息、删除入库商品信息。

出库商品信息管理模块:

登记出库商品信息、修改出库商品信息、删除出库商品信息。

供货商信息管理模块:

添加供应商信息、修改供应商信息、删除供应商信息、查询供应商信息。

采购部信息管理模块:

添加采购部人员信息、修改采购部人员信息、删除采购部人员信息、查询采购部人员信息。

销售部信息管理模块:

添加销售部人员信息、修改销售部人员信息、删除销售部人员信息、查询销售部人员信息。

3.2数据库设计

3.2.1系统数据流图

数据流图是用来描述系统数据流程的工具,它将数据独立抽象出来,通过图形方式描述信息的来龙去脉和实际流程。

对超市库存管理系统及各功能模块进行数据流程分析,可得到超市库存管理系统的各个模块处理数据的过程,如图3所示:

 

图3系统数据流程图

3.2.2数据库逻辑设计

概念模型是数据库系统的核心和基础,在管理信息系统中,概念模型:

体现了设计者对现实世界的认识,描述了软件系统的整体概括。

人们研究把现实世界中的事物抽象为不依赖与具体机器的信息结构,又接近人们的思维,并具有丰富语义的概念模型,然后再把概念模型转换为具体的机器上DBMS支持的数据模型。

概念模型的描述工具通常是使用E-R模型图。

该模型不依赖于具体的硬件环境和DBMS。

概念模型设计的常用方法是实体关系方法(E-R方法)。

用实体关系方法对具体数据进行抽象加工,将实体集合抽象成实体类型,用实体间的关系反映现实世界事物间的内在关系。

首先可以进行局部E-R模型,然后把各局部E-R模型综合成一个全局的E-R模型,最后对全局E-R模型进行优化,最后得到的。

在需求分析和逻辑设计之间增加概念设计阶段,可以使设计人员仅从用户的角度看待数据及处理要求和约束。

表达概念设计的结果称为概念模型,对概念模型有以下要求:

(1)有丰富的语义表达能力,能表达用户的各种需求。

(2)易于交流和理解,从而可以用它和不熟悉计算机的用户交换意见。

(3)要易于更改。

当应用环境和应用要求改变时,概念模型要能很容易的修改和扩充以反映这种变化。

(4)易于向各种数据模型转换。

超市库存管理系统的E-R图如图4所示:

 

图4系统E-R图

结合E-R图可得到数据库管理系统的关系模型如下:

(1)供应商信息表:

(供应商编号、供应商名称、地址、电话、邮编、银行账号)

(2)入库信息表:

(商品编号、名称、入库数量、单价、入库日期、供货商、采购部门编号)

(3)出库信息表:

(商品编号、名称、出库数量、销售部门编号、出库日期)

(4)采购部人员信息表:

(编号、姓名、电话)

(5)销售部人员信息表:

(编号、姓名、电话)

以上括号外的名称是表名,括号内为字段名。

3.2.3数据库物理设计

根据在数据库概念设计中给出的数据库驾校管理系统的关系模型,可以设计数据表结构。

其中包括以下表:

Supplier,GoodsIn,GoodsOut,Buy,Sell。

下面具体介绍数据库中各表的结构:

(1)表名:

Supplier,即:

供应商信息表,存蓄供应商的相关信息,其结构如表1所示。

表1供应商信息表

字段名称

字段类型

字段长度

字段属性

是否为空

sup_no

varchar

50

供应商编号

NOTNULL

sup_name

varchar

50

供应商名称

NOTNULL

sup_address

varchar

50

供应商地址

NOTNULL

sup_num

varchar

50

供应商电话

NOTNULL

pro_name

vachar

50

商品名称

NOTNULL

sup_prise

varchar

50

供货价格

NUTNULL

pro_no

varchar

50

商品编号

NOTNULL

sup_post

varchar

50

供应商邮编

NOTNULL

sup_bank

varchar

50

银行账号

NOTNULL

(2)表名:

GoodsIn,即:

商品入库信息表,存蓄入库商品的信息,其结构如表2所示。

表2商品入库信息表

字段名称

字段类型

字段长度

字段属性

是否为空

GoodsNO

varchar

50

商品编号

NOTNULL

GoodsName

varchar

50

商品名称

NOTNULL

Quantity

varchar

50

入库数量

NOTNULL

Price

varchar

50

单价

NOTNULL

Supplier_no

varchar

50

供货商编号

NOTNULL

Supplier_name

varchar

50

供货商名称

NOTNULL

PurchaseUnitNo

varchar

50

采购人员编号

NOTNULL

Data

varchar

50

入库日期

NOTNULL

(3)表名:

GoodsOut,即:

商品出库信息表,存储商品出库的相关信息,其结构如表3所示。

表3商品出库信息表

字段名称

字段类型

字段长度

字段属性

是否为空

GoodsNo

varchar

50

商品编号

NOTNULL

GoodsName

varchar

50

商品名称

NOTNULL

Quantity

varchar

50

出库数量

NOTNULL

SalesUnitNo

varchar

50

销售人员编号

NOTNULL

Data

varchar

500

入库日期

NOTNULL

(4)表名:

Sell,即:

销售部门人员信息表,存储销售部门的相关人员信息,其结构如表4所示。

 

表4销售部门人员信息表

字段名称

字段类型

字段长度

字段属性

是否为空

sell_no

varchar

50

工号

NOTNULL

sell_name

varchar

50

名称

NOTNULL

sell_num

varchar

50

电话

NOTNULL

(5)表名:

Buy,即:

采购部门人员信息表,存储采购部门的相关人员信息,其结构如表5所示。

表5采购部门人员信息表

字段名称

字段类型

字段长度

字段属性

是否为空

buy_no

varchar

50

工号

NOTNULL

buy_name

varchar

50

名称

NOTNULL

buy_num

varchar

50

电话

NOTNULL

4.系统实现

(1)数据库连接,数据源名DatabaseExampleForC++,下面是连接数据库信息表的代码:

CStringCBuySet:

:

GetDefaultConnect()

{

return_T("ODBC;DSN=DatabaseExampleForC++");

}//连接数据库信息表Buy

CStringCSellSet:

:

GetDefaultConnect()

{

return_T("ODBC;DSN=DatabaseExampleForC++");

}//连接数据库信息表Sell

CStringCSupplierSet:

:

GetDefaultConnect()

{

return_T("ODBC;DSN=DatabaseExampleForC++");

}//连接数据库信息表Supplier

CStringCProInSet:

:

GetDefaultConnect()

{

return_T("ODBC;DSN=DatabaseExampleForC++");

}//连接数据库信息表GoodsIn

CStringCProOutSet:

:

GetDefaultConnect()

{

return_T("ODBC;DSN=DatabaseExampleForC++");

}//连接数据库信息表GoodsOut

(2)添加入库商品信息的代码

CProInAddDlgdlg;//调用添加的编辑对话框

if(dlg.DoModal()==IDOK)

{

CProInSetm_pSet1;

m_pSet1.Open();//打开商品入库信息表

while(!

m_pSet1.IsEOF())

{

if(dlg.m_GoodsNo1==m_pSet1.m_GoodsNO)//商品编号重复

{

MessageBox("已存在此货品!

");

return;

}

m_pSet1.MoveNext();

}

m_pSet1.AddNew();//增加一个入库商品信息的记录

m_pSet1.m_Data=dlg.m_Data1;

m_pSet1.m_GoodsName=dlg.m_GoodsName1;

m_pSet1.m_GoodsNO=dlg.m_GoodsNo1;

m_pSet1.m_Quantity=dlg.m_Quantity1;

m_pSet1.m_PurchaseUnitNo=dlg.m_PurchaseUnitNo1;m_pSet1.m_Price=dlg.m_Price1;

m_pSet1.m_Supplier=dlg.m_Supplier1;

m_pSet1.Update();

m_pSet1.Requery();//刷新记录集m_pSet1.Close();

m_in_list.InsertItem(nItem,dlg.m_GoodsNo1);//添加当前记录的字段信息m_in_list.SetItemText(nItem,1,dlg.m_GoodsName1);

m_in_list.SetItemText(nItem,2,dlg.m_Quantity1);

m_in_list.SetItemText(nItem,3,dlg.m_Price1);

m_in_list.SetItemText(nItem,4,dlg.m_Supplier1);

m_in_list.SetItemText(nItem,5,dlg.m_PurchaseUnitNo1);

m_in_list.SetItemText(nItem,6,dlg.m_Data1);

}

添加入库商品信息的过程

(3)修改入库商品信息的代码

if(nItem==-1)//没选择要修改的商品入库信息

{

AfxMessageBox("请选中需要修改的商品入库信息");

return;

}

CProInAlterDlgdlg;//调用修改的编辑对话框if(dlg.DoModal()==IDOK)

{

if(m_Goods_No!

=dlg.m_GoodsNo2)

{

MessageBox("不能修改编号");

return;

}

CProInSetm_pSet1;

m_pSet1.Open();//打开商品入库信息表

while(!

m_pSet1.IsEOF())

{

if(dlg.m_GoodsNo2==m_pSet1.m_GoodsNO)//商品编号重复{

m_pSet1.Edit();

m_pSet1.m_GoodsNO=dlg.m_GoodsNo2;

m_pSet1.m_GoodsName=dlg.m_GoodsName2;

m_pSet1.m_Quantity=dlg.m_Quantity2;

m_pSet1.m_PurchaseUnitNo=dlg.m_PurchaseUnitNo2;

m_pSet1.m_Data=dlg.m_Data2;

m_pSet1.m_Price=dlg.m_Price2;

m_pSet1.m_Supplier=dlg.m_Supplier2;

m_pSet1.Update();

break;

}

m_pSet1.MoveNext();//刷新记录集

}

m_pSet1.Close();//关闭记录集

修改入库商品信息的过程

(4)删除入库商品信息的代码

voidCProInDlg:

:

OnInDel()

{

intnItem=m_in_list.GetSelectionMark();//得到列表的选择项if(nItem==-1)//没选中要删除的入库商品信息

{

AfxMessageBox("请选择待删除的入库商品信息");

return;

}

CStrings;

intchoose=MessageBox("确定删除选择的出库商品信息","提问",MB_YESNO|MB_ICONQUESTION);//是否删除该入库商品信息if(choose==IDYES)//选择该行的第一列数据

{

CStringstrItem=m_in_list.GetItemText(nItem,0);

m_in_list.DeleteItem(nItem);

CProInSetm_pSet;

m_pSet.Open();

while(!

m_pSet.IsEOF())

{

if(m_pSet.m_GoodsNO==strItem)

{

CRecordsetStatuss;

m_pSet.GetStatus(s);

m_pSet.Delete();

if(s.m_lCurrentRecord==0)//不加这里会导致出现一个空记录m_pSet.MoveNext();

else

m_pSet.MoveFirst();

break;

}

else

m_pSet.MoveNext();

}

m_pSet.Close();

}

}

删除入库商品信息的过程

(5)库存商品信息管理模块查询的代码

voidCProCheckDlg:

:

OnProcheck()

{

CProInSetm_pSet,check;

CProOutSetcheck1;

intflag=0;

UpdateData();

m_procheck.TrimLeft();

if(m_procheck.IsEmpty())//输入商品的编号进行查询

{

MessageBox("请输入要查询的商品编号");

return;

}

check.Open();

check1.Open();

while(!

check.IsEOF())//开始查询记录

{

if(check.m_GoodsNO==m_procheck)

{

flag=1;//找到需要查询的记录

break;

}

else

check.MoveNext();//下移一条记录

}

if(flag==0)//没有找到相关记录

{

MessageBox("要查询的编号不存在请重新输入");

return;

}

intnum=atoi(check.m_Quantity.GetBuffer(3));

intnum2=atoi(check1.m_Quantity.GetBuffer(3));

intsum=0;

sum=num-num2;//计算剩余的库存商品数量

CStringS,b;

S.Format("%d",sum);

CStringstr;//保存当前字段的文本值

for(inti=0;i<8;i++)//添加当前记录的字段信息

{

if(i<7)

check.GetFieldValue(i,str);

if(i==0)

{

m_check_list.InsertItem(nItem,str);

m_check_list.SetItemText(nItem,0,str);}

elseif(i==1)

m_check_list.SetItemText(nItem,1,str);

elseif(i==2)

m_check_list.SetItemText(nItem,2,S);

elseif(i==3)

m_check_list.SetItemText(nItem,3,str);

elseif(i==4)

m_check_list.SetItemText(nItem,4,str);

elseif(i==5)

m_check_list.SetItemText(nItem,5,str);

elseif(i==6)

m_check_list.SetItemText(nItem,6,str);

elseif(i==7)

m_check_list.SetItemText(nItem,7,check1.m_SalesUnitNo);

}

if(sum==0)//判断库存商品是否充足

{MessageBox("商品已售完请尽快进货或删除相关信息");}

if(sum<0)

{

MessageBox("商品出库数量信息有误请修改");

}

查询库存商品信息的过程

5.总结

经过一个多月的时间,管理系统的实验已经结束。

通过这次管理系统设计的学习,不仅加深了我们对管理系统的认识,同时也使我们的实践能力得到了提高。

在最开始的时候,大家都认为这个很难,无从下手,并且大家对这些数据资料一点都不了解,进度有些慢。

但在接下来的时间里,通过老师的讲解以及我们一起探讨相关的工序,我们明白了相关的原理和设计方法。

我们组做的是《超市库存管理系统》,由于是第一次做,所以系统还存在很多不足的地方。

系统只能对数据库进行添加、修改、删除,查询这些基本的操作,还有很多地方需要改善。

一分耕耘一分收获

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

当前位置:首页 > 工程科技 > 交通运输

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

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