《超市库存管理系统.doc》由会员分享,可在线阅读,更多相关《超市库存管理系统.doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除课 程 设 计 报 告学 院: 计算机学院软件学院 课程名称: 面向对象程序设计 专业班级: 网络工程 学生姓名: 学号: 指导教师: 完成时间:2013年6月9日目录1绪论31.1项目背景及意义31.2开发环境和工具32.需求分析42.1 业务流程分析42.2 功能分析43 系统设计53.1 系统功能模块设计53.2 数据库设计63.2.1 系统数据流图63.2.2 数据库逻辑设计73.2.3 数据库物理设计84.系统实现105.总结17超市库存管理系统设计与实现1绪论1.1项目背景及意义 随着我国经济持续发展,人们的生活水平不断提高,人们对生
2、活物品的需要大大提升,大大小小的超市随着人们的需求而出现,超市中的商品数目以及样式急剧增加,有关商品的各种信息量也成倍增长。超市时时刻刻都需要对商品各种信息进行统计分析。因此对超市管理有了更高的要求,尤其对于库存商品的管理要求更高。现在的超市库存商品数量很大,品种规格很多,传统的手工业务处理,大大降低了效率,而且容易出错,商品需求的计算较复杂,采用人工来处理费时费力,效率低且难免出错,产品规格、型号、品种较多,商品品种多且零碎,造成库存管理复杂,无法随时了解物品的收发存储情况,商品的出入库、物料移动、盘点、货物补订等业务处理过程,非常复杂、繁琐,依靠传统的手工处理或者个别部门电脑处理,不仅浪费
3、大量的人力、物力、时间,而且精确程度低,再加上盲目采购,造成大量的库存积压或者短缺,商品的基础数据复杂而繁多,企业传统的卡片式管理,显然已不能适应高效率的商品更换,需求,储备动态变化的要求,不能监控商品的存储数量和商品的安全存储时间,不能及时准确的了解需要补充的库存商品名称及其数量,也不能及时的得知需要盘点的商品以及其盘点结果未能随时对现存的商品进行模拟预算,并且不能再保证销售的前提下,最大程度的降低库存,不能及时得知某种商品的收、发、存的状况;不能及时对库存的商品进行销售配比的模拟预算。社会在不断进步,科学技术和管理也在迅速发展,这使得超市企业得到了前所未有的发展机遇,但是同时也必须面对市场
4、竞争的严重挑战,在日趋激烈的竞争环境下,超市企业要求发展,就需要对其进行科学的管理,尤其是在超市运营中起着关键作用的库存管理。现在一般的超市都采用计算机智能化管理,采用计算机作为工具的实用的计算机超市库存管理程序来帮助管理员进行更有效的超市库存管理工作。用现今很发达的计算机科学来处理商品库存内部的信息流通和使用,这样就可以实现数据信息的共享,控制好数据,使得库存有统一的管理,提高信息的利用率,而且大大节省了人力物力,这样就可以很大程度的提高超市的企业的经营效率。1.2开发环境和工具由于本系统是基于VisualC+平台的,所以采用C+技术作为主要开发工具,系统前台界面采用常用的Microsoft
5、VisualC+6.0开发软件,后台数据库采用Microsoft Access 2003。2.需求分析2.1 业务流程分析订货单采购入库单入库货架货品检查缺货通知单递交处理仓库检查存货出货单出库超市的库存管理业务流程如下:当超市货架某商品缺货时,发出缺货通知,然后检查仓库是否有该商品。如果仓库有货,领取商品,并记录库存台账,统计报表;如果仓库没有货物,或者检查货物存量低于安全库存,发出订货单并采购货物。商品入库,记录库存台账,并统计报表。业务流程图如图1所示: 无 有图1 超市库存管理流程图2.2 功能分析功能分析的任务是弄清楚客户对于目标系统的功能需求。超市库存管理主要是为了更好更高效率的帮
6、助超市管理好超市的库存商品,及时的补充商品能够在超市的行业竞争中有优势。其中包括商品的查询,能够及时的了解商品的需求情况;商品的信息,了解商品的总体数量以及商品的详细分类;供货商的信息,能够准确无误的找到最好的商品来源;报表信息,能够清晰的看到整个经营过程的盈亏,及时做出正确的营业决定。根据对系统目标和业务流程的分析,本系统的功能需求可以归纳为以下具体功能:(1)库存商品信息查询功能:对于商品的各信息的及时了解掌握,才能更加有效率的管理好超市的运营情况。该模块主要用于用户对于超市货架上的物品在一段时间的运营后查询货架上的物品的数量剩余,以此确定需要补充的货物;仓库的商品储存的查询以及运营报表的
7、查询。可按商品的类别、商品名称、生产厂家进行查询。如存在则输出相应的信息,如不存在则提示不存在并提示修改已有商品信息,对于不再需要存储的商品也可删除物品的记录。(2)超市商品管理功能: 该功能主要完成商品从供货商处运达后的商品入库检验,商品分类,以及商品的入库登记;当货架商品不足时,从库存商品调用的商品数量,商品类型等的统计以及管理。商品分类包括:商品名称,品牌,类型,保质期,价格,生产厂家,供货来源等详细信息。(3)供货商信息管理功能: 由于每种商品的代理商都不止一家且相同供货商之间提供的商品质量也不是完全相同所以通过该功能记录各供货商的电话,地址,能够提供的商品类型,提供商品质量优劣等情况
8、。在商品不足需要订购的时候,给用户最合适的供货来源。(4)部门管理功能:该模块主要实现对采购部,销售部人员基本信息管理的功能。对所以员工的信息进行登记管理,包括添加、修改、删除、查询操作。3 系统设计3.1 系统功能模块设计从前面的业务流程与功能分析可以设计六个功能模块,分别是销售部信息管理模块、库存商品信息管理模块、入库商品信息管理模块、出库商品信息管理模块、供货商信息管理模块、采购部信息管理模块。系统整体功能如图2所示:超市库存管理系统库存商品信息管理模块供货商信息管理模块入库商品信息管理模块销售部信息管理模块出库商品信息管理模块采购部信息管理模块图2 系统整体功能图其中各模块的功能包括:
9、库存商品信息管理模块:查询商品库存总量、商品库存状况。入库商品信息管理模块:登记入库商品信息、修改入库商品信息、删除入库商品信息。出库商品信息管理模块:登记出库商品信息、修改出库商品信息、删除出库商品信息。供货商信息管理模块:添加供应商信息、修改供应商信息、删除供应商信息、查询供应商信息。采购部信息管理模块:添加采购部人员信息、修改采购部人员信息、删除采购部人员信息、查询采购部人员信息。销售部信息管理模块:添加销售部人员信息、修改销售部人员信息、删除销售部人员信息、查询销售部人员信息。3.2 数据库设计3.2.1 系统数据流图货架缺货通知仓库库存统计统计出库出库商品信息采购通知采购信息供应商入
10、库入库商品信息不足数据流图是用来描述系统数据流程的工具,它将数据独立抽象出来,通过图形方式描述信息的来龙去脉和实际流程。对超市库存管理系统及各功能模块进行数据流程分析,可得到超市库存管理系统的各个模块处理数据的过程,如图3所示:图3 系统数据流程图3.2.2 数据库逻辑设计概念模型是数据库系统的核心和基础,在管理信息系统中,概念模型:体现了设计者对现实世界的认识,描述了软件系统的整体概括。人们研究把现实世界中的事物抽象为不依赖与具体机器的信息结构,又接近人们的思维,并具有丰富语义的概念模型,然后再把概念模型转换为具体的机器上DBMS支持的数据模型。概念模型的描述工具通常是使用E-R模型图。该模
11、型不依赖于具体的硬件环境和DBMS。概念模型设计的常用方法是实体关系方法(E-R方法)。用实体关系方法对具体数据进行抽象加工,将实体集合抽象成实体类型,用实体间的关系反映现实世界事物间的内在关系。首先可以进行局部E-R模型,然后把各局部E-R模型综合成一个全局的E-R模型,最后对全局E-R模型进行优化,最后得到的。在需求分析和逻辑设计之间增加概念设计阶段,可以使设计人员仅从用户的角度看待数据及处理要求和约束。表达概念设计的结果称为概念模型,对概念模型有以下要求:(1)有丰富的语义表达能力,能表达用户的各种需求。(2)易于交流和理解,从而可以用它和不熟悉计算机的用户交换意见。(3)要易于更改。当
12、应用环境和应用要求改变时,概念模型要能很容易的修改和扩充以反映这种变化。(4)易于向各种数据模型转换。超市库存管理系统的E-R图如图4所示:m11mm供货商名称姓名出库销售部门电话人员编号供货商编号仓库商品商品名称仓库编号库存量入库日期出库日期销售人员编号采购人员编号供应商编号供应商名称供应商电话商品编号供应商供应商地址供应商邮编银行账号供应采购存储姓名电话采购部门人员编号供货价格商品名称1图4 系统E-R图结合E-R图可得到数据库管理系统的关系模型如下:(1)供应商信息表:(供应商编号、供应商名称、地址、电话、邮编、银行账号)(2)入库信息表:(商品编号、名称、入库数量、单价、入库日期、供货
13、商、采购部门编号)(3)出库信息表:(商品编号、名称、出库数量、销售部门编号、出库日期)(4)采购部人员信息表:(编号、姓名、电话)(5)销售部人员信息表:(编号、姓名、电话)以上括号外的名称是表名,括号内为字段名。3.2.3 数据库物理设计根据在数据库概念设计中给出的数据库驾校管理系统的关系模型,可以设计数据表结构。其中包括以下表:Supplier,GoodsIn, GoodsOut,Buy,Sell。下面具体介绍数据库中各表的结构:(1)表名:Supplier,即:供应商信息表,存蓄供应商的相关信息,其结构如表1所示。表1 供应商信息表 字段名称字段类型字段长度字段属性是否为空sup_no
14、varchar50供应商编号NOT NULLsup_namevarchar50供应商名称NOT NULLsup_addressvarchar50供应商地址NOT NULLsup_numvarchar50供应商电话NOT NULLpro_namevachar50商品名称NOT NULLsup_prisevarchar50供货价格NUT NULLpro_novarchar50商品编号NOT NULLsup_postvarchar50供应商邮编NOT NULLsup_bankvarchar50银行账号NOT NULL(2)表名:GoodsIn,即:商品入库信息表,存蓄入库商品的信息,其结构如表2所示
15、。表2 商品入库信息表字段名称字段类型字段长度字段属性是否为空GoodsNOvarchar50商品编号NOT NULLGoodsNamevarchar50商品名称NOT NULLQuantityvarchar50入库数量NOT NULLPricevarchar50单价NOT NULLSupplier_novarchar50供货商编号NOT NULLSupplier_namevarchar50供货商名称NOT NULLPurchaseUnitNovarchar50采购人员编号NOT NULLDatavarchar50入库日期NOT NULL(3)表名:GoodsOut,即:商品出库信息表,存储商
16、品出库的相关信息,其结构如表3所示。表3 商品出库信息表字段名称字段类型字段长度字段属性是否为空GoodsNovarchar50商品编号NOT NULLGoodsNamevarchar50商品名称NOT NULLQuantityvarchar50出库数量NOT NULLSalesUnitNovarchar50销售人员编号NOT NULLDatavarchar500入库日期NOT NULL(4)表名:Sell,即:销售部门人员信息表,存储销售部门的相关人员信息,其结构如表4所示。表4 销售部门人员信息表字段名称字段类型字段长度字段属性是否为空sell_novarchar50工号NOT NULLs
17、ell _namevarchar50名称NOT NULLsell _numvarchar50电话NOT NULL(5)表名:Buy,即:采购部门人员信息表,存储采购部门的相关人员信息,其结构如表5所示。表5 采购部门人员信息表字段名称字段类型字段长度字段属性是否为空buy_novarchar50工号NOT NULLbuy_namevarchar50名称NOT NULLbuy_numvarchar50电话NOT NULL4.系统实现(1)数据库连接,数据源名Database Example For C+,下面是连接数据库信息表的代码:CString CBuySet:GetDefaultConne
18、ct()return _T(ODBC;DSN=Database Example For C+);/连接数据库信息表BuyCString CSellSet:GetDefaultConnect()return _T(ODBC;DSN=Database Example For C+);/连接数据库信息表SellCString CSupplierSet:GetDefaultConnect()return _T(ODBC;DSN=Database Example For C+);/连接数据库信息表SupplierCString CProInSet:GetDefaultConnect()return _T
19、(ODBC;DSN=Database Example For C+);/连接数据库信息表GoodsInCString CProOutSet:GetDefaultConnect()return _T(ODBC;DSN=Database Example For C+);/连接数据库信息表GoodsOut(2)添加入库商品信息的代码CProInAddDlg dlg; /调用添加的编辑对话框if(dlg.DoModal()=IDOK)CProInSet m_pSet1;m_pSet1.Open(); /打开商品入库信息表while(!m_pSet1.IsEOF()if(dlg.m_GoodsNo1=m
20、_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=dl
21、g.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_i
22、n_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 ;CProInAlterDlg dlg;/调用修改的编辑对话框if(dlg.DoModal()=IDOK)if(m_Goods_No!=dlg
23、.m_GoodsNo2)MessageBox(不能修改编号);return ;CProInSet m_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_
24、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)删除入库商品信息的代码void CProInDlg:OnInDel() int nItem=m_in_list.GetSelectionMark();/得到列表的选择项if(nItem=-1) /没选中要删除的入
25、库商品信息AfxMessageBox(请选择待删除的入库商品信息);return ;CString s;int choose=MessageBox(确定删除选择的出库商品信息,提问,MB_YESNO|MB_ICONQUESTION);/是否删除该入库商品信息 if(choose=IDYES)/选择该行的第一列数据CString strItem=m_in_list.GetItemText(nItem,0);m_in_list.DeleteItem(nItem);CProInSet m_pSet;m_pSet.Open();while(!m_pSet.IsEOF()if(m_pSet.m_Good
26、sNO=strItem)CRecordsetStatus s;m_pSet.GetStatus(s);m_pSet.Delete();if(s.m_lCurrentRecord=0) /不加这里会导致出现一个空记录m_pSet.MoveNext();elsem_pSet.MoveFirst();break;elsem_pSet.MoveNext();m_pSet.Close();删除入库商品信息的过程(5)库存商品信息管理模块查询的代码void CProCheckDlg:OnProcheck() CProInSet m_pSet,check;CProOutSet check1;int flag
27、=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;elsecheck.MoveNext(); /下移一条记录if(flag=0) /没有找到相关记录 MessageBox(要查询的编号不存在请重新输入); return ;
28、int num=atoi(check.m_Quantity.GetBuffer(3);int num2=atoi(check1.m_Quantity.GetBuffer(3);int sum=0;sum=num-num2; /计算剩余的库存商品数量CString S,b;S.Format(%d,sum);CString str;/保存当前字段的文本值for(int i=0;i8;i+) /添加当前记录的字段信息if(i7)check.GetFieldValue(i,str);if(i=0)m_check_list.InsertItem(nItem,str); m_check_list.SetI
29、temText(nItem,0,str);else if(i=1)m_check_list.SetItemText(nItem,1,str);else if(i=2) m_check_list.SetItemText(nItem,2,S);else if(i=3)m_check_list.SetItemText(nItem,3,str);else if(i=4)m_check_list.SetItemText(nItem,4,str);else if(i=5)m_check_list.SetItemText(nItem,5,str);else if(i=6)m_check_list.SetIt
30、emText(nItem,6,str);else if(i=7)m_check_list.SetItemText(nItem,7,check1.m_SalesUnitNo);if(sum=0) /判断库存商品是否充足MessageBox(商品已售完请尽快进货或删除相关信息);if(sum0)MessageBox(商品出库数量信息有误请修改);查询库存商品信息的过程5.总结 经过一个多月的时间,管理系统的实验已经结束。通过这次管理系统设计的学习,不仅加深了我们对管理系统的认识,同时也使我们的实践能力得到了提高。在最开始的时候,大家都认为这个很难,无从下手,并且大家对这些数据资料一点都不了解,进度有些慢。但在接下来的时间里,通过老师的讲解以及我们一起探讨相关的工序,我们明白了相关的原理和设计方法。我们组做的是超市库存管理系统,由于是第一次做,所以系统还存在很多不足的地方。系统只能对数据库进行添加、修改、删除,查询这些基本的操作,还有很多地方需要改善。一分耕耘一分收获,只有自己亲身体验、亲自动手动脑,才能获得更多的知识,得到更多的经验,从而体会到成功的喜悦。在此,衷心感谢C+任课彭老师的细心教导与耐心的讲解。面向对象程序设计课程设计评分表学生姓名学号项 目评 分 指导教师签名: 日 期:_2013年1月 10 日_【精品文档】第 17 页