餐厅库存管理信息系统设计.docx
编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第20页 共20页数据库课程设计题 目:餐厅库存管理系统组 员: 餐厅库存管理信息系统 目录一 本信息系统简介3二 需求分析3 1.餐厅整体的业务流程分析3 2.业务流程分析43.数据流程分析54.管理功能分析6三 数据库的设计7 1. 概念结构设计:E-R图7 2逻辑结构设计:关系模式83. 数据库设计代码94. 以上代码运行效果12四 界面设计14操作流程14五 源代码15六 系统运行效果16七 总结和体会19一 本管理系统简介 仓库库存管理系统是一个企业不可缺少的部分,它的内容对于企业的决策者和管理者来说都至关重要,所以仓库库存管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理仓库中的各种物资设备,这种管理方式存在着许多缺点,如:效率低、另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对物资信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事劳资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。 因此,开发这样一套库存管理软件成为很有必要的事情。结合我们的实际能力和实用的原则,此次数据库实习我组选做我校餐厅的库存管理系统的设计和开发。这次实习得到了餐厅经理一些数据和管理流程上的帮助,而且希望能在完善我们的系统之后能应用在我校餐厅的实际运营中。在此次系统开发中我组分工协作,各个部分进展协调有序,目标明确。二 需求分析1.餐厅整体的业务流程分析 订购库存生产销售后续工作处理图1 餐厅的业务流程图通过研究整个餐厅的业务流程来把握库存在其中的位置,来把握库存和其他部分的联系。然而根据对餐厅的调查,他们的仓库自行执行采购的任务,而那些不需要入库的物料则由采购部门来采购,因此得到库存业务流程图如下2.业务流程分析供货商财务部门仓库应付款处理验货编制入库单2份存档付款应付帐生产部门发出领料请求盘点编制领料单1份存档发货供货交入库单发出物料需求 图2 业务流程图库存的业务流程可分为入库流程和出库流程,描述如下:(一) 入库流程: 1 仓库经过盘点,初步拟定需求量向供应商发出物料需要。 2 供货商接到需要信息发货给仓库。 3 仓库对货物验收,验收完毕后开出入库单两份一份给供货商,一份存档,而且不予付款。 4 经过重复以上三个过程,一定时期后(例如一个月后),供货商拿入库单和仓库存档的入库单到财务部门结账。此时供货商交出入库单。(二)出库流程: 1 生产部门提出物料需求。 2 仓库盘点看是否有足够的物料,有了就以领料单的形式记录下来领料数据。没有了就开始进货。 从库存的业务流程描述来看,可以得知我们主要处理两类数据,那就是入库单信息和出库单信息。3.数据流程分析报表数据付款单文件订购计划订购单文件库存数据领料单付款数据供货数据订购数据供应商财务分析库存管理采购员生产部门库存文件经理图3 数据流程图数据流程图的基本成分包括系统的外部实体、处理过程、数据存储和系统中的数据流。此餐厅库存管理系统的外部实体有仓库管理和库存分析,仓库管理包括接收供货商送达的物品和存储库存文件,接收生产部门的领料单并且发出物品,经过库存盘点给库存分析部门提供完整、及时的库存数据。库存分析根据仓库管理部门提供的库存记录制定订购计划、发出订购单和当仓库收到物品后发出付款单。功能执行部门包括订购员、供货商、生产部门、经理,当一份订购单由库存分析部门发出后,供应商收到订单准备物品,之后将物品送于仓库,仓库管理部门收到物品之后给库存分析部门一份库存数据,再由库存分析部门生成报表送于经理。4.管理功能分析 餐厅库存管理系统 系统登录模块入库业务模块领料业务模块在库物料业务模块供货商业务模块经理登录管理员登录入库单录入入库单查询入库单打印领料单查询领料单录入领料单打印现存物料查询现存物料打印供货商资料录入供货商资料查询全部物料查询全部物料打印 图4 管理功能图<1> 系统登录模块经理可以查询仓库的物料综合信息,作为采购依据。管理员可以通过管理界面添加或删除用户,添加新管理员或删除原有管理员,验证用户的合法性,阻止非法用户登录。<2> 入库模块包括填写入库单,更新,删除出库记录,入库记录的查询及打印<3> 出库模块包括填写出库单,更新,删除出库记录,出库记录的查询及打印<4> 在库物料业务模块包括现存物料查询及打印,包括每种物料查询,全部物料查询及打印三 数据库的设计1.概念结构设计:E-R图这一设计阶段是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。即E-R图的方法进行数据结构分析,E-R图由实体、属性、联系三部分组成。该系统的E-R图,如下图所示:保管物 品入库单仓 库aa物品进库物品出库领料单供货商供应订购单接受订单订 购1nnn11mnmm1 图5 E-R图实体:物品:一个物品可有多个供应商提供,每个物品有物品编号、计量单位、保质期、供货商:一个供货商可以提供多种物品,供应商有供应商号、地址、联系方式、入库单:入库单有入库单编号、数量、单价、入库时间、验收人、领料单:领料单编号、数量、领料时间、领料人、仓库:有多个仓库,不用物品存于不同的仓库2.数据库逻辑结构设计:关系模式E-R图向关系模型的转化要解决的问题是如何将实体和实体间的联系转化为关系模式,如何确定这些关系模式的属性和代码。餐厅库存信息管理系统涉及的实体有: 由E-R图转换得到的5个关系模式如下所示,有下划线的属性为主码: 物品:物品编号、物品名称、仓库号、计量单位、现存量、平均日用量、保质期 供应商:供应商编号、供应商名称、供应物品名称、地址、联系方式入库单:入库单编号、物品编号、供应商名称、数量、单价、入库时间、验收人领料单:领料单编号、物品编号、数量、领取时间、领料人仓库:仓库号、物品编号通过对以上关系模式的分析,结合本系统的功能及所选开发工具和数据库系统的特点,对系统数据库进行设计,建立一个具有良好的数据组织结构的数据库,应遵循的原则有:(1)可能减少数据冗余和重复(2)结构设计和操作设计相结合(3)数据结构具有相对的稳定性由于数据库中所保存的数据是系统中非常重要的资源,所以在数据库设计时一定要注意数据结构的安全性、完整性,并发控制与恢复,而一般的数据库管理系统都提供了一定的数据保护功能。以下是在建数据库及根据系统的实际需要中所用到的表:(1) 物品表列名数据类型主关键字外部关键字参照的表取值说明物品编号intYes不允许为空物品名称varchar(40)不允许为空仓库号char(8)Yes仓库不允许为空计量单位Char(8)现存量Double正值平均日用量Double保质期Int(2) 供应商表列名数据类型主关键字外部关键字参照的表取值说明供应商编号intYes不允许为空供应商名称varchar(40)供应物品编号char(8)Yes物品不允许为空地址varchar(40)联系方式char(12)数字字符(3)入库单表列名数据类型主关键字外部关键字参照的表取值说明入库单编号intYes不允许为空物品编号intYes物品表不允许为空数量smallint0单价smallmoney0入库时间Datetime默认是系统日期验收人char(8)不允许为空供应商编号varchar(40)Yes供应商不允许为空(4)领料单表列名数据类型主关键字外部关键字参照的表取值说明领料单编号intYes不允许为空物品编号intYes物品表不允许为空数量smallint0领取时间Datetime默认是系统日期领料人char(8)不允许为空(5)仓库表列名数据类型主关键字外部关键字参照的表取值说明仓库号char(8)Yes不允许为空物品编号varchar(8)Yes物品表不允许为空3. 数据库设计代码:/*-创建数据库-*/CREATE DATABASE 库存ON(NAME=order_dat,FILENAME='c:mssqldataorderdat.mdf',SIZE=20,MAXSIZE=50,FILEGROWTH=5)LOG ON(NAME=order_log,FILENAME='d:mssqllogorderlog.ldf',SIZE=20MB,MAXSIZE=25MB,FILEGROWTH=5MB)/*-创建基本表-*/use 库存goCreate table 仓库(仓库号 char (8) primary key not null,物品编号 int not null foreign key references 物品) use 库存goCreate table 物品(物品编号 int primary key not null,物品名称 varchar(40) not null ,计量单位 char(8),平均日用量 int,保质期 int)use 库存goCreate table 供应商(供应商编号 int not null primary key ,供应商名称 varchar (40) ,供应物品编号 int not null foreign key references 物品,地址 varchar (40),联系方式 Char (11) check( 联系方式Like '0-90-90-90-90-90-90-90-90-90-90-9') )use 库存goCreate table 入库单(入库单编号 int primary key,物品编号 int not null foreign key references 物品,数量 smallint check(数量>0),单价 smallmoney check(单价>0),入库时间 Datetime default getdate(),仓库号 char(8) not null foreign key references 仓库,验收人 Char (8) not null ,供应商编号 int not null foreign key references 供应商)use 库存goCreate table 领料单(领料单编号 int not null primary key,物品编号 int not null foreign key references 物品,数量 smallint check(数量>0),领料时间 Datetime default getdate(),仓库号 char(8) not null foreign key references 仓库,领料人 Char (8) not null )/*-创建试验数据-*/insert into 仓库 values('zhu','10') insert into 仓库 values('fu','20') insert into 物品 values('10','米','斤','10','300')insert into 物品 values('20','面','斤','20','300')insert into 物品 values('30','花生米','袋','30','300')insert into 物品 values('40','食用油','斤','10','300')insert into 物品 values('50','鸡蛋','筐','10','30')insert into 供应商 values('10011','李小朋','10','郑州','65987121515')insert into 供应商 values('10012','王莎莎','20','新郑','65987121536')insert into 供应商 values('10013','赵鑫','30','巩义','65987121525')insert into 供应商 values('10014','孙利','40','中牟','65987125535')insert into 供应商 values('10015','王亮','50','七里河','65987245273')insert into 入库单 values('20011','10','80',$15,' 2009.01.15 ','zhu','张才得','10011')insert into 入库单 values('20012','20','90',$16,' 2009.02.06 ','fu','鲁山','10012')insert into 入库单 values('20013','30','110',$13,' 2009.03.15 ','zhu','钱中','10013')insert into 入库单 values('20014','40','105',$18,' 2009.03.12 ','zhu','吴单','10014')insert into 入库单 values('20015','50','145',$19,' 2009.03.25 ','zhu','张虎','10015')insert into 领料单 values('30011','10','55',' 2010.01.04 ','zhu','李涛')insert into 领料单 values('30012','20','86',' 2010.01.09 ','fu','赵屏')insert into 领料单 values('30013','30','40',' 2010.08.05 ','zhu','陈个')insert into 领料单 values('30014','40','38',' 2010.04.07 ','zhu','梁德')insert into 领料单 values('30015','50','25',' 2010.09.06 ','zhu','宋平')/*-创建索引-*/*在物品表上建立一个以物品编号、仓库号为索引项的唯一索引*/CREATE unique INDEX wu_cang_idx ON 物品(物品编号 desc)GO/*在供应商表上建立一个以供应商编号、供应物品编号为索引项的唯一索引*/CREATE unique INDEX gongsha_gongwu_idx ON 供应商(供应商编号,供应物品编号)GO/*在入库单表上建立一个以入库单编号、物品编号为索引项的唯一索引*/CREATE unique INDEX rubian_wubian_idx ON 入库单(入库单编号,物品编号)GO/*在领料单表上建立一个以领料单编号、物品编号为索引项的唯一索引*/CREATE unique INDEX ling_wubian_idx ON 领料单(领料单编号,物品编号)GO/*在仓库表上建立一个以物品编号、仓库号为索引项的唯一索引*/CREATE unique INDEX wu_cang_idx ON 仓库(物品编号,仓库号 )GO/*-创建视图-*/Create view 仓库视图 as select *from 仓库Create view 供应商视图 as select *from 供应商Create view 入库单视图 as select *from 入库单Create view 领料单视图 as select *from 领料单Create view 物品视图 as select *from 物品/*-查询视图-*/select * from 仓库 select * from 供应商select * from 入库单select * from 领料单select * from 物品/*-插入数据功能-*/insert into 仓库 values('zhu','60')insert into 物品 values('60','白菜','筐','10','40')insert into 供应商 values('10016','李单','60','安阳','65987121546')insert into 入库单 values('20016','60','90',$17,' 2009.01.11 ','zhu','张戴','10016')insert into 领料单 values('30016','60','26',' 2010.01.04 ','fu','李南')/*-查询功能-*/*查询入库单中物品编号,数量,仓库号,供应商编号-*/select 物品编号,数量,仓库号,供应商编号 from 入库单 /*查询领料单中物品编号,数量*/select 物品编号,数量 from 领料单4. 以上代码运行效果:/*-视图执行截图-*/*-查询功能执行结果截图-*/四:界面设计:操作流程: 登录输入用户名和密码经理界面用户是经理级别时用户是管理员级别时管理员界面销售信息输出现存物料信息人事信息输出领料单录入入库信息输出出库信息输出现库存两输出采购信息输出添加和删除用户财务信息输出入库单录入入库单查询领料单查询供应商查询按钮按钮五:源代码:/*登录窗口代码*/void Ccdengludlg:OndengluOK() 、CString str;UpdateData();if(m_name.IsEmpty()MessageBox("请输入用户名!");return;str="SELECT * FROM 用户信息 WHERE 用户名='"str=str+m_name;str=str+"'"str=str+"AND 密码='"str=str+m_mima;str=str+"'" /相当于SQL语句SELECT *FROM用户信息WHERE用户名='m_name' AND 密码='m_secret' if(!set.Open(AFX_DB_USE_DEFAULT_TYPE,str) MessageBox("用户信息表打开失败!");return; if(set.IsEOF()MessageBox("登录失败!用户名和密码不匹配!"); return;/六:系统运行效果;七总结和体会 第 20 页 共 20 页