仓库管理系统课程设计.docx
《仓库管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《仓库管理系统课程设计.docx(55页珍藏版)》请在冰豆网上搜索。
![仓库管理系统课程设计.docx](https://file1.bdocx.com/fileroot1/2022-11/25/27572fbb-c457-4481-b9d0-03c1f48ebc1f/27572fbb-c457-4481-b9d0-03c1f48ebc1f1.gif)
仓库管理系统课程设计
仓库管理系统
一、课程设计的内
1、学习与实践数据库应用程序开发流程;
2、学习使用某一种数据库服务,学会数据库应用程序编程,安装配置系统开发环境;
3、设计和实现仓库管理系统;
4、撰写课程设计报告。
二、课程设计的要求与数据
系统应该实现以下功能:
(1)进、出库管理。
对进、出库信息进行记录。
(2)查询功能。
仓库管理对查询要求高,通过主菜单记录当前操作用户的用户编号,保证了对进、出库信息录入负责人的确认。
(3)部门资料管理与库存报表生成。
资料管理包括了人员信息管理,财政支出信息管理,以及各项业务单据的资料管理。
报表主要分类为:
日报表,月报表,销售报表,入库报表等等。
(4)由于计算机能存贮大量的数据,而且数据只要一次存入,便可多次重复使用,所以管理数据达到完整,统一,原始记录能保证及时,准确。
(5)许多重复性的工作,都可由计算机去执行,从而使管理人员从事务性工作解脱出来,真正变为从事一些信息的分析,判断,决策等创造性的工作。
数据自己自行编造测试。
论文要求结构严谨、格式规范,内容正确、文字通顺。
三、课程设计应完成的工作
该系统主要分为三大功能:
管理员功能、信息安全功能、一般用户功能、报表生成。
(1)管理员功能:
产品入库登记、确认入库信息、删除库内信息、借出信息登记、产品分类管理、添加人员、删除人员、查询库内信息。
(2)信息安全功能:
人员权限区分、事件记录、数据警告、数据备份、数据恢复;
(3)一般用户功能:
查询库内信息、查询出库信息、查询入库信息、修改本用户密码;
(4)报表生成:
库存信息报表生成。
五、应收集的资料及主要参考文献
[1]MySQL5.1参考手册
[2]D
[3]数据库系统概论(第四版)王珊萨师煊高等教育出版社2006.5
[4]软件工程(第二版)李代平等编著清华大学出版社2008.1
[5]MySQL开发者SQL权威指南(荷)RickF.vanderLans著许杰星李强等译机械工业出版社2008.1
[6]学习MySQL(影印版)SeyedM.M."Saied"Tabagbogbi&HugbE.Williams著南京:
东南大学出版社2007.6
[7]C++Builder程序员成长攻略蒙祖强龚涛等编著北京:
中国水利水电出版社2007.1
相关技术介绍
1.1MySQL
MySQL是最受欢迎的开源SQL数据库管理系统,它由MySQLAB开发、发布和支持。
MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。
MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。
MySQL的特性:
1)使用C和C++编写,用众多不同的编译器进行了测试,能够工作在众多不同的平台上。
2)使用GNUAutomake、Autoconf和Libtool进行移植。
3)提供了用于C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl的API。
4)采用核心线程的完全多线程如果有多个CPU,它能方便地使用这些CPU。
5)提供了事务性和非事务性存储引擎。
6)使用了极快的“B树”磁盘表(MyISAM)和索引压缩。
7)添加另一个存储引擎相对简单。
如果打算为内部数据库添加一个SQL接口,该特性十分有用。
8)极快的基于线程的内存分配系统。
9)通过使用优化的“单扫描多连接”,能实现极快的连接。
10)存储器中的哈希表用作临时表。
11)SQL函数是使用高度优化的类库实现的,运行很快。
通常,在完成查询初始化后,不存在存储器分配。
12)采用Purify(商业内存溢出检测器)以及GPL工具Valgrind测试了MySQL代码。
13)服务器可作为单独程序运行在客户端/服务器联网环境下。
它也可作为库提供,可嵌入(链接)到独立的应用程序中。
这类应用程序可单独使用,也能在网络环境下使用。
简言之,MYSQL具有功能强,使用简单,管理方便,运行速度快,可靠性高,安全保密等特点。
1.2BorlandC++Builder集成开发环境
BorlandC++Builder(以下简称BCB)是Borland公司(现更名为Inprise)继Delphi之后推出的又一个优秀的可视化编程环境,它在32位Windows环境下为我们提供了一种极具吸引力的快速Windows应用程序开发系统(RAD)。
它基于最流行的面向对象程序设计语言C++,采用领先的数据库技术,并结合使用了图形用户界面(GUI)的许多先进特性和设计思想。
VCL是可视化组件库的简称,它是一个面向对象的函数库,完全支持所有面向对象编程的标准概念如继承、多态和封装等。
C++Builder的集成开发环境提供了120多个VCL组件,使开发人员不需太多编码,就能够实现很多复杂的功能,体现了软件的“重用性”原则。
C++Builder的用户界面也非常友好,易于使用,并且采用了停驻式(docking)工具条,可以自由组合集成开发环境窗口和工具条的排放方式。
在编码过程中,还可以使用CodeExplorer技术对源代码进行管理。
CodeCompletion技术使编译器能够自动列出VCL组件的可用属性和方法供程序员选择,而不必手工输入冗长的代码。
C++Builder含有20多个数据感知控件。
在许多情况下,甚至不须要编写任何程序代码,便可以开发一个复杂的应用程序。
C++Builder还提供了强大的Borland数据库引擎,这是一种非常成熟的数据库连接技术,它提供了3种访问数据库的方式:
一是可以直接存取dBase、FoxPro、Paradox等文件型数据库生成的DB、DBF文件;二是提供了标准的ODBC接口;三是提供了高效的SQLLinks数据库驱动程序,允许直接存取Oracle、Informix、SyBase、MSSQLServer、DB2和InterBase。
此外,C++Builder还提供了一组ADO控件,使C++Builder编程人员不用依靠BDE来创建应用程序,可直接使用ADO存取数据。
C++Builder率先引入了多层数据库应用模型,通过C++Builder提供的多层分布式应用服务(MIDAS)可以轻松开发出高可靠性、高效率、高负载的分布式数据处理系统。
此外,还可以通过ActiveForm或InterBaseExpress为多层数据库应用程序创建基于Web的客户端,这样用户通过普通的浏览器就可以与远程数据库系统进行交互。
在C++cBuilder6中,MIDAS更名为DataSnap、DataSnap强化了MIDAS原有的功能,并改善了MIDAS的执行效率,更方便使用。
1.3MyDAC组件库
MyDAC,全称为MySQLDataAccessComponents(MySQL数据访问组件),支持BorlandDelphi,C++Builder和Kylix。
它提供访问MySQL数据库的一种方式,可以代替标准的BorlandDatabaseEngine(BDE)或dbExpress。
MyDAC能够通过MySQLclient或MySQLnetworkprotocol工作。
假如直接使用MySQLprotocol协议MyDAC不需要clientlibrary,仅需要TCP/IPprotocol。
这个特征允许编译真正的瘦客户数据库应用。
在基于MySQL的client/server应用中使用BDE或dbExpress有些不足,许多情况下BDE和dbExpress不能够使用服务器的特殊特征,还有BDE必须容忍过多的资源使用,限制一个应用程序的分发和管理。
使用BDE:
[MySQL]<->[ODBC]<->[BDE]<->[Application]
通过MySQL接口:
[MySQL]<->[Clientlibrary]<->[Application]
使用MySQL网络协议:
[MySQL]<->[Application]
二、需求分析
2.1功能需求及用户需求
2.1.1功能需求
该系统主要分为三大功能:
管理员功能、信息安全功能、一般用户功能、报表生成。
(1)管理员功能:
产品入库登记、确认入库信息、删除库内信息、借出信息登记、产品分类管理、添加人员、删除人员、查询库内信息。
(2)信息安全功能:
人员权限区分、事件记录、数据警告、计划备份、即时备份、数据恢复;
(3)一般用户功能:
查询库内信息、查询出库信息、查询入库信息、修改本用户密码;
(4)报表生成:
库存信息报表生成。
2.1.2用户需求
根据用户需求,该系统应该实现以下功能:
(1)进、出库管理。
对进、出库信息进行记录。
(2)查询功能。
仓库管理对查询要求高,通过主菜单记录当前操作用户的用户编号,保证了对进、出库信息录入负责人的确认。
(3)部门资料管理与库存报表生成。
资料管理包括了人员信息管理,财政支出信息管理,以及各项业务单据的资料管理。
报表主要分类为:
日报表,月报表,销售报表,入库报表等等。
(4)由于计算机能存贮大量的数据,而且数据只要一次存入,便可多次重复使用,所以管理数据达到完整,统一,原始记录能保证及时,准确。
(5)许多重复性的工作,都可由计算机去执行,从而使管理人员从事务性工作解脱出来,真正变为从事一些信息的分析,判断,决策等创造性的工作。
2.2系统流图
2.3数据描述
2.3.1数据字典
2.3.1.1基本数据项及数据结构
●零部件信息。
包括的数据项有零件号、零件名称、规格、单价、描述。
●仓库信息。
包括的数据项有仓库号、已用库存、库存总量、负责人、电话号码。
●供应商信息。
包括的数据项有编号、供应商、电话号码、地址。
●部门信息。
包括的数据项有部门号、名称、电话。
数据项名称
别名
简述
类型
长度
取值范围
零件号
-
零件的编号
字符型
7
第1位:
进口/国产(I/D)
第2-4位:
类别
第5-7位:
物资编号
零件名称
-
零件的名称
字符型
20
-
规格
-
零件规格
字符型
10
单价
-
零件的单位价格
货币型
6
默认计量单位:
元
描述
-
零件描述/说明
文本型
-
-
仓库号
-
仓库的编号
字符型
3
-
已用库存
-
仓库已用存储容量
数值型
6
>0:
仓库非空
=0:
空仓库
<0:
不允许
库存总量
-
仓库总存储容量
数值型
6
>0:
物资存量
=0:
空仓库
<0:
不允许
负责人
-
仓库负责人
字符型
20
-
供应商编号
-
供应商编号
字符型
3
-
供应商
-
供应商名称
字符型
20
-
地址
-
供应商联系地址
文本
-
-
部门号
-
公司部门编号
字符型
3
-
部门名
-
公司部门名称
字符型
20
-
电话
-
电话号码
字符型
15
-
2.3.1.2数据流条目
名称
别名
简述
来源
去向
入库单
-
入库单位在把相应的零件送人仓库时必须填写的单据
供应商
库存
出库单
-
领料人员从仓库中领取零件时必须填写的单据
库存
公司部门
客户
还库单
-
零件使用后归还入库必须填写的单据
公司部门
库存
需求单
-
对新零件需求所填写的单据
公司部门
库存
采购单
-
购买新零件所填写的单据
采购员
供应商
2.3.1.3数据存储条目
名称
别名
简述
组织方式
查询要求
仓库库存
-
存放
索引文件,以仓库编号为关键字
要求立即查询
零件库存
-
存放
索引文件,以零件编号为关键字
要求立即查询
2.3.1.4加工条目
加工名
激发条件
优先级
输入
输出
零件入库
接收到
合格
入库单时
普通
合格
入库单
库存满,
零件成功入库
加工逻辑
根据库存记录。
Loop:
If(入库物资的数量+物资现有存量)<=该物资库存量临界值
Then物资存入仓库;
物资现有存量=物资现有存量+入库物资的数量;
Else物资库存已足,
If物资现有存量=该物资库存量临界值
Then结束,入库失败
Endif;
调整入库单;
gotoloop,
直到(入库物资的数量+物资现有存量)<=该物资库存
量临界值;
Endif;
零件入库;
统计仓库库存已用量;
加工名
激发条件
优先级
输入
输出
零件出库
接收到
合格
出库单时
普通
合格
出库单
库存量不足,
零件成功出库
加工逻辑
根据库存记录。
Loop:
零件是否存在?
是:
If需求单物资的数量<该物资库存量的临界值
Then零件出库
物资现有存量=物资现有存量-出库零件的数量;
Else物资短缺,
If物资现有存量<=物资最少存量
Then结束,出库失败
Endif;
调整入库单;
gotoloop,
直到(物资现有存量-出库零件的数量)>=该物资库
存量临界值;
Endif;
否:
零件不存在,gotoloop;
零件入库;
统计仓库库存已用量;
2.3.2数据流图
1)本系统的顶层数据流图
2)细化后的数据流图
3)货物入库信息管理细化
4)货物出库信息管理细化
2.4安全性和完整性要求
2.4.1安全性要求
系统安全性要求至少达到TCSEC(TDI)的C1级。
即只提供了非常初级的自主安全保护。
能够实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播。
实行用户标识与鉴别,具有数据备份和日志审计功能。
2.4.2完整性要求
每个关系中都至少要有一个主键,并且都有一个聚集索引(ClusteredIndex)。
关系与关系之间通过主外键关联。
定义属性上的约束条件,定义触发器。
三、概念结构设计
1)库存实体E-R图:
2)入库实体E-R图:
3)出库实体E-R图:
4)部门需求实体E-R图:
5)还库实体E-R图:
6)计划采购实体E-R图:
7)实体和实体之间的关系图如图所示:
8)仓库管理E-R图如图所示
四、逻辑结构设计
4.1关系模型设计
1)仓库表storehouse
NO.
字段名
代码
类型
约束
1
仓库号
stoID
Char(3)
主键
2
已用库存
Used_volume
Smallint
非空,默认0,unsigned,<=All_volume
3
库存总量
All_volume
Smallint
非空,默认10000,unsigned
4
负责人
principal
Varchar(20)
非空
5
电话号码
stoTEL
Varchar(15)
2)零件表parts
NO.
字段名
代码
类型
约束
1
零件号
parID
Char(7)
主键
2
名称
part
Varchar(20)
非空
3
规格
spec
Char(10)
4
单价
price
Decimal(6,2)
非空,默认0,unsigned
5
计量单位
mensuration
Char(4)
非空,默认“元”
6
描述
description
Text
3)供应商supplier
NO.
字段名
代码
类型
约束
1
编号
supID
Char(3)
主键
2
供应商
supName
Varchar(20)
非空
3
电话号码
supTEL
Varchar(15)
非空
4
地址
address
Text
4)部门表dept
NO.
字段名
代码
类型
约束
1
部门号
depID
Char(3)
主键
2
名称
depName
Varchar(20)
非空
3
电话
depTEL
Varchar(15)
5)库存表storage
NO.
字段名
代码
类型
约束
1
仓库号
stoID
Char(3)
主键,与storehouse表中的stoID外键关联,级联删除、更新
2
零件号
parID
Char(7)
主键,与parts表中的parID外键关联,级联删除、更新
3
现有存量
Now_volume
Smallint
非空,默认0,>=Min_volume,<=Max_volume
4
最小存量
Min_volume
Smallint
非空,默认0,unsigned
5
最大存量
Max_volume
Smallint
非空,默认0,unsigned
6)供应表supply
NO.
字段名
代码
类型
约束
1
供应商号
supID
Char(3)
主键,与supplier表中的supID外键关联,级联删除、更新
2
零件号
parID
Char(7)
主键,与parts表中的parID外键关联,级联删除、更新
3
供应量
supVolume
Smallint
非空,默认0,unsigned
4
供应时间
supDate
Timestamp
非空
7)部门需求表demand
NO.
字段名
代码
类型
约束
1
零件号
parID
Char(7)
主键,与parts表中的parID外键关联,级联删除、更新
2
部门号
depID
Char(3)
主键,与dept表中的depID外键关联,级联更新、删除
3
需求数量
demVolume
Smallint
非空,默认0,unsigned
4
开始时间
startTime
Timestamp
非空
5
结束时间
endTime
Timestamp
非空
8)零件归还表restore
NO.
字段名
代码
类型
约束
0
编号
resID
Smallint
主键,AUTO_INCREMENT
1
仓库号
stoID
Char(3)
主键,与storehouse表中的stoID外键关联,级联删除、更新
2
零件号
parID
Char(7)
主键,与parts表中的parID外键关联,级联更新、删除
3
部门号
depID
Char(3)
主键,与dept表中的depID外键关联,级联更新、删除
4
归还数量
resVolume
Smallint
非空,默认0,unsigned
5
经手人
cmaker
Varchar(20)
非空
6
归还者
returner
Varchar(20)
非空
7
归还时间
resDate
Timestamp
非空
9)零部件采购计划表stock
NO.
字段名
代码
类型
约束
1
零件号
parID
Char(7)
主键,与parts表中的parID外键关联,级联更新、删除
2
采购量
stoVolume
Smallint
非空,默认0,unsigned
3
供应商号
supID
Char(3)
与supplier表中的supID外键关联
4
采购时间
stoDate
Timestamp
主键
5
采购员
buyer
Varchar(20)
10)入库表warehousing
NO.
字段名
代码
类型
约束
0
编号
inID
Smallint
主键,AUTO_INCREMENT
1
仓库号
stoID
Char(3)
主键,与storehouse表中的stoID外键关联,级联删除、更新
2
供应商号
supID
Char(3)
非空,与supplier表中的supID外键关联
3
零件号
parID
Char(7)
主键,与parts表中的parID外键关联,级联更新、删除
4
入库数量
inVolume
Smallint
非空,默认0,unsigned
5
经手人
cmaker
Varchar(20)
非空
6
入库时间
inDate
Timestamp
非空,默认当前时间
11)出库表stockout
NO.
字段名
代码
类型
约束
0
编号
outID
smallint
主键,,AUTO_INCREMENT
1
仓库号
stoID
Char(3)
主键,与storehouse表中的stoID外键关联,级联删除、更新
2
零件号
parID
Char(7)
主键,与parts表中的parID外键关联,级联更新、删除
3
出库数量
outVolume
Smallint
非空,默认0,unsigned
4
使用者
user
Varchar(20)
非空
5
经手人
cmaker
Varchar(20)
非空
6
领取人
receiptor
Varchar(20)
非空
7
出库时间
outDate
Timestamp
非空,默认当前时间
4.2用户子模式设计
1)仓库信息视图storehouse_view
NO.
字段名
代码
类型
备注
1
仓库号
stoID
Char(3)
连storehouse表
2
已用库存
Used_volume
Int
连storehouse表
3
库存总量
All_volume
Int
连storehouse表
4
负责人
principal
Varchar(20)
连storehouse表
6
电话号码
stoTEL
Varchar(15)
连storehouse表
2)零部件库存视图parts_storage_view
NO.
字段名
代码
类型
备注
1
仓库号
stoID
Char(3)
连storage表
2
零件号
parID
Char(7)
连parts表
3
名称
part
Varchar(20)
连parts表
4
规格
spec
Char(10)
连parts表
5
单价
price
Decimal