软件工程课程设计仓库管理系统.docx
《软件工程课程设计仓库管理系统.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计仓库管理系统.docx(31页珍藏版)》请在冰豆网上搜索。
软件工程课程设计仓库管理系统
一、需求分析
1、问题背景及描述
随着科学技术的发展,社会进步,计算机迅速的发展,仓库管理的方式也日新月异,以前尽是由人管理的方式现存在很多的缺点:
管理效率低,劳动强度大,信息处置速度低而且准确率也不够令人满意。
为了提高仓库管理效率,减轻劳动强度提高,信息处置速度和准确性;为仓库管理员提供更方便、科学的服务项目。
为仓库管理员提供的一种更先进、科学的服务系统。
于是咱们便选择了由计算机来设计一个仓库管理系统的方案。
让计算机对仓库进行自动管理,仓库管理员可以直接在计算机上实现仓库的信息管理,并能在必然程度上实现自动化。
咱们在现行系统初步伐查的基础上提出了新系统目标,即新系统成立后所要求达到的运行指标,这是系统开发和评价的依据。
2、功能分析
通过初步分析,“仓库管理系统”应该具有以下主要功能:
⒈仓库各类信息的输入,包括入库,出库,还原,需求信息的输入等
⒉仓库管理的各类信息查询,修改和保护
鉴于课程设计的缘故,本系统仅仅实现部份简单功能。
3、成立系统流程图
为了便于问题的论述与展开,在此加入了系统流程图的内容。
通过对仓库管理进程的了解,可以知道仓库管理系统管理仓库信息的大致进程。
首先,用户登岸仓库管理系统,通过一系列对系统的操作后,由系统返回给用户相应的结果。
图1描画了这个大致的流程。
图1仓库管理系统大致处置进程
接下来对图1的黑匣子(仓库管理系统)的内容进行分解。
通过仔细分析与了解,肯定用户对系统的整个操作进程:
用户登岸仓库管理系统,验证用户身份与权限,审核后操作仓库管理系统,用户可以查询仓库里的产品信息,管理员权限可修改和删除相关仓库的信息,用户还可以打印相关报表,还可以查看帮忙文档。
系统会按照用户的操作,给予相应的显示与处置结果。
图2图3图4是分析后得出的系统流程图。
图2仓库管理系统流程图1
图3仓库管理系统流程图2
图4仓库管理系统流程图3
4、成立数据流图
系统流程图虽然很好地描画了具体的系统,可是在系统流程图中把“做什么”和“如何做”这两类不同范围的知识混合在一路。
咱们的目标不是一成不变地复制现有的人工系统,而是开发一个既能够完成现有的所有功能,又能使操作加倍规范或功能加倍完备的新系统,因此,应该着重描画系统的逻辑功能。
数据流图描述数据在软件系统内从输入流动到输出的进程中所经受的变换,通常常利用数据流图成立软件的功能模型。
数据流图是系统逻辑功能的图形表示,图中没有任何的具体物理部件,仅仅描画数据在软件中流动和被处置的逻辑进程,不懂计算机技术的人也容易理解它,因此是分析员与用户之间极好的通信工具。
按照前面划分的系统模块可以取得如下数据流图:
1仓库管理系统整体数据流图
图5仓库管理系统数据流图
5、成立数据字典
数据字典是关于数据的信息的集合,也就是对数据流图中包括的元素的概念的集合。
它的作用是在软件分析和设计进程中提供关于数据的描述信息。
数据字典和数据流图一路组成系统的逻辑模型。
数据字典概念数据的方式就是对数据自顶向下地分解,当分解到不需要进一步概念,每一个和工程有关的人员都清楚其含义的元素时,这种分解进程就结束了。
本仓库管理系统按照划分的模块概念了如下数据字典:
①用户信息表
表名:
user
内容:
记载用户登岸的大体信息
组成:
列名
数据类型
长度
精度
小数
备注
userid
int
4
10
0
主键
username
varchar
50
0
0
不为空
userpwd
varchar
50
0
0
不为空
purview
varchar
50
0
0
不为空
组织:
按录入顺序。
②客户信息表
表名:
customerinfo
内容:
记载客户相关的大体信息
组成:
列名
数据类型
长度
精度
小数
备注
Cid
int
4
10
0
主键
Cname
varchar
50
0
0
不为空
Addr
varchar
50
0
0
不为空
PostCode
int
4
10
0
不为空
Phone
varchar
50
0
0
不为空
组织:
按录入顺序。
③产品类型表
表名:
producttype
内容:
记载产品类型的大体信息
组成:
列名
数据类型
长度
精度
小数
备注
Typeid
int
4
10
0
主键
Typename
varchar
50
0
0
不为空
组织:
按录入顺序。
④库存信息表
表名:
store
内容:
记载产品库存的大体信息
组成:
列名
数据类型
长度
精度
小数
备注
Pid
int
4
10
0
主键
Pname
varchar
50
0
0
不为空
Ptype
varchar
50
0
0
不为空
Pprice
float
8
53
0
不为空
Pnum
int
4
10
0
不为空
MakeDate
datetime
8
0
0
不为空
组织:
按录入顺序。
6、算法描述
分析员以黑匣子的方式记录算法,所谓黑匣子就是不考虑一个功能的具体实现方式,只把它看做给予输入以后就可以够产生必然输出的匣子。
这正是在初期开发阶段分析员对算法应该持有的正确观点,目的是用原理性算法准确地概念功能,算法的细节可以等到以后的详细设计阶段再肯定。
仓库管理系统中主要涉及算法方面的主如果产品的库存数量,随着仓库的利用,入库数量和出库数量随时发生转变,整个仓库中的库存量也就随之转变。
这里采用IPO表记录该算法的初步描述。
图6描画产品库存量初步算法的IPO表
7、成立E-R图
为了把用户的数据要求清楚、准确地描述出来,系统分析员通常成立一个概念性的数据模型,概念性数据模型是一种面向问题的数据模型,它描述从用户角度看到的数据。
通常利用实体-联系图来成立数据模型,可以把实体-联系图简称为E-R图,相应地可以把E-R图描画的数据模型称为E-R模型。
E-R图中包括了实体(即数据对象)、关系和属性等三种大体成份。
通常,用矩形框代表实体,用连接相关实体的菱形框表示关系,用椭圆或圆角矩形表示实体或关系的属性,并用直线把实体(或关系)与其属性连接起来。
图7用户E-R图
图8客户E-R图
图9产品E-R图
图10仓库管理系统联系图
8、成立状态图
状态图(也叫状态转换图)通过描画系统状态及引发系统转换的事件来表示系统的行为。
另外,状态图还指明了作为特定事件的结果系统将做哪些动作。
因此,可以用状态图成立软件系统的行为模型。
状态是可以被观察到的系统行为模式,一个状态代表系统的一种行为模式,状态规定了系统对事件的响应方式。
在状态图中第一的状态主要有:
初态、终态和中间状态,在一张状态图中只能有一个初态,而终态则可以有0个最多个。
在状态图中,初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示。
中间状态用圆角矩形表示,可利用两条水平横线把它分成上、中、下3个部份,别离避免状态名、状态变量和活动表。
事件是在某个特按时刻发生的事情,它是对引发系统动作或(或)从一个状态转换到另一个状态的外界事件的抽象。
状态图中两个状态之间带箭头的连线表示状态转换,箭头指明了转换的方向。
状态转换一般是由事件触发的,在这种情况下应该在表示状态转换的箭头上标出触发事件表达式。
以下是仓库管理系统的状态图:
图11仓库管理系统状态图
二、概要设计
1、软件体系结构模型
大型软件系统老是被分解成一系列子系统,由子系统提供一些相关的服务。
软件体系结构设计进程就是识别出这些子系统,并成立子系统控制和通信的框架,最后给出软件体系结构的一个描述。
系统组成模型
系统组成模型有容器模型、客户-服务器模型和抽象机模型三种。
⑴容器模型
组成一个系统的子系统必然要浇灌换信息,以便能有效地在一路工作。
子系统互换信息、协调工作有两种大体方式:
全数共享书防在一个中央数据库中,所有子系统都能从中存取数据;
每一个子系统用各自的数据库与其他子系统进行数据交互,通过消息传递来实现。
一般情况下,大多数利用大量数据的系统都是围绕共享数据库(或称为容器)组织的,所以,基于一个共享数据库的系统的系统模型称为容器模型。
这个模型适合于数据由一个子系统产生,而其他子系总共享利用的系统结构。
这种类型的系统有命令控制系统、管理信息系统、CAD系统和CASE工具集成系统等。
共享容器模型的长处是能够高效地共享大量的数据,生产数据的子系统不需要关心数据如何被其他子系统利用,可以集中进行备份、保密、访问控制和错误恢复等活动。
其缺点是子系统必然要与容器数据一致,系统变更或进化比较困难,难以集成,和很难将容器散布到多台机械上。
⑵客户-服务器模型
客户-服务器模型的主要组成部份是:
一组给其他子系统提供服务的单机服务器;
一组向服务器请求服务的客户机;
一个连接客户和服务器的网络(可选)。
客户机必需知道可用的服务器的名字和它们所提供的服务,并通过远程挪用获取服务器提供的服务。
反之,服务器没有必要知道客户机的身份,和到底有多少客户机在运行。
客户-服务器模型能够实现基于容器模型的系统,容器就充当了系统的服务器。
子系统需要访问容器,因此扮演了客户机的角色。
固然,当运行大量数据互换时,这种系统就会产生性能问题。
客户-服务器模型的最大长处是:
这是一个散布式结构,通过网络可以很容易地添加新的客户机和服务器,而不会影响系统的其他部份。
⑶抽象机模型
抽象机模型也称为分层模型,是成立子系统的接口模型,它把子系统组织成一系列的层次,每一层提供一组服务,每一层概念为一个抽象机。
每一个抽象机都是由其基层的抽象机的代码组成的。
每一层提供给上一层服务,同时挪用下一层的服务。
每一层的实现只影响相邻层,不会影响到系统的其他各层。
分层的方式支持系统的增量式开发,若一层开发完成,该层提供的服务就可以够被用户利用了。
分层的缺点是:
用这种方式构建系统比较困难。
几乎所有抽象机都需要的大体服务(如文件管理)需要由内层提供,因此,用户的服务可能需要访问较深层的抽象机。
这一点有悖于一个外层只需要访问临近基层抽象机的分层原则。
性能也可能是一个问题,因为需要多层的指令解释进程。
若是层次太多,层次管理就将成为系统的一个重要负担。
按照三种系统组成模型的介绍,很明显地可以知道本仓库管理系统是基于容器模型设计的。
仓库管理系统只利用到一个总数据库,而其中提供的所有服务都直接访问该数据库,因此本仓库管理系统具有容器模型的各类特性。
系统控制模式
软件体系结构除要明确系统组成模型之外,还要给出子系统的控制模式,使子系统能够按照控制模式工作。
在体系结构层次上的控制模式主要反映子系统之间的控制流。
系统控制模式有两种一般性的建模方式,即集中式控制和事件驱动控制。
⑴集中式控制
在集中式控制模型中,一个子系统被概念为系统控制器来负责管理其他系统的执行。
集中式控制模型又可分为挪用-返回模型和管理者模型两类。
①挪用-返回模型。
这是一个自上而下的子进程模型。
控制始于系统(程序)的顶层,在子系统(程序)挪用进程中,控制慢慢传递到更低的层次中。
该模型适用于顺序执行的系统。
②管理者模型。
这是一种适用于并发系统的模型。
一个系统组件被指定为系统管理者,控制其他系统进程的启动、终止和协调。
一个进程就是一个能和其他进程并发执行的子系统或模块。
⑵事件驱动控制
在集中式控制模型中,控制定夺通常决定于一些系统状态变量值。
相反,事件驱动的控制模型是通过外部产生的事件驱动系统的。
有多种不同的基于事件驱动的系统,如电子表格、基于规则的产生式系统等。
下面是两种事件驱动的控制模型。
①广播模型。
发生的事件广播到所有子系统,任何能处置该事件的子系统都会响应。
该模型适用于基于网络的散布式系统。
②中断驱动模型。
由中断处置器对来自外部的中断进行检测,然后在其他组件中处置这些中断。
该模型适用于对按时有严格要求的实时系统。
广播模型中的子系统注册其感兴趣的特别事件,当这些事件发生的时候,控制被转换处处置这些事件的子系统。
所有的事件都可以被发送到所有的子系统,但这样做增加了子系统的开销。
一般地,事件和消息处置器要保护子系统的注册和这些子系统所感兴趣的事件。
广播模型的长处是进化比较简单,处置特别类型事件的新的子系统可以通过在事件处置器中注册这些事件来达到集成;其缺点是子系统彼此竞争地处置事件,这可能会引发冲突。
中断驱动模型只用在硬件实时系统中,要求对一些事件能作出及时响应,这可以与集中式控制模型结合起来利用。
中央管理者处置系统的一般性运转,而中断控制用于对紧急事件作出反映。
而本仓库管理系统显然属于前者,所有的子系统都是由一个总的系统控制的,触发子系统的挪用主要取决于系统状态量的改变。
而且可以看出,仓库管理系统是属于管理者模型的。
2、用面向数据流的方式设计系统软件结构
仓库管理软件结构
在需求分析中,已经利用结构化方式分析了“仓库管理系统”。
因此,可以从图16所示的仓库管理系统流图动身来设计仓库管理系统的结构。
图12仓库管理系统数据流图
下一个设计步骤是完成“第一级分解”。
所谓“第一级分解”就是肯定系统的整体控制结构。
通常,变换分析得出的系统高层结构是一个“三叉”控制结构。
针对“仓库管理”得出的高层控制结构如图16所示。
图13仓库管理的“第一级分解”
再下一个设计步骤是完成“第二级分解”。
所谓“第二级分解”,就是把数据流图中的每一个处置映射成软件结构中的一个适当的模块。
变换分析的映射规则是从变换中心的边界开始沿着输入通路向外移动,把输入通路中每一个处置映射成软件结构中“输入信息处置控制模块”控制下的一个低层模块;然后沿着输出通路向外移动,把输出通路中每一个处置映射成直接或间接接受“输出信息处置控制模块”控制的一个低层模块;最后把变换中心内的每一个处置映射成接受“变换中心控制模块”控制的一个低层模块。
对于“仓库管理”来讲,“第二级分解”的结果如图17所示。
图14仓库管理的“第二级分解”
最后洋设计步骤是对仓库管理的初步结果优化。
结合仓库管理的“第二级分解”图可以将其优化成如下的软件结构图。
图15优化后的仓库管理软件结构
⒉系统帐户管理软件结构
按照数据流图,能够取得系统帐户管理软件结构如下图所示。
图16系统帐户管理软件结构
综合上面的分析,可进一步取得包括系统帐户管理、仓库管理和系统数据管理三大子功能的软件结构如图20所示。
图17仓库管理系统细化的软件结构
结合上述的分析描述,取得仓库管理系统的完整软件结构图,如图21所示。
图18仓库管理系统的完整软件结构
3、数据库逻辑结构设计
数据库逻辑结构设计的任务是按照E-R模型和需求分析所产生的文档,并综合考虑所选择的具体DBMS的特点,设计出整个数据库的逻辑结构。
一般来讲,选择哪一种DBMS寄存数据,是由系统分析员和用户(一般是企业的高级管理人员)决定的。
需要考虑的因素包括DBMS产品的性能和价钱,和所设计的应用系统的功能复杂程度。
若是选择的是关系型DBMS产品,那么逻辑结构的设计就是指设计数据库中所包括的各个关系模式的结构,包括关系模式的名称、每一关系模式中各属性的名称、数据类型和取值范围等内容。
逻辑结构的设计进程是:
首先,按照需求阶段的设计结果和具体的DBMS产品的特点,将全局E-R模型转换成一个初始的关系模型。
然后,对其中的每一个关系模式进行分析,判断是不是存在不合理的关系模式,如有则利用关系模式的规范化方式消除之。
三、详细设计
1、数据库物理结构设计
数据库的物理结构设计是指为给顶的一个逻辑数据模型选择最适合应用环境的物理结构。
关系数据库的物理结构主如果指数据的存取方式和存储结构。
数据库的物理结构设计分为两个部份,首先是肯定数据库的物理结构,其次是对所设计的物理结构进行评估。
肯定数据库的物理结构
为肯定数据库的物理结构,设计人员必需了解下面的几个问题。
①详细了解给定的DBMS的功能和特点,特别是该DBMS所提供的物理环境和功能;
②熟悉应用环境,了解所设计的应用系统中各部份的重要程度、处置频率、对响应时间的要求,并把它们作为物理结构设计进程中平衡时间和空间效率时的依据;
③了解外存设备的特性,如分块原则、块因子大小的规定、设备的I/O特性等。
在对上述问题进行了全面的了解以后,就可以够进行物理结构的设计了。
一般地,物理结构设计的内容包括如下几个方面。
①肯定数据的存储结构。
在此进程中需考虑存取时间、空间效率和保护代价间的平衡,如在引入冗余数据以加速存取速度时应兼顾系统的空间效率。
②选择适合的存取路径,例如肯定应该为哪些关系模式成立索引,索引关键字是什么等。
③肯定数据的寄存位置,例如肯定数据寄存在一个磁盘上仍是多个磁盘上,什么数据该寄存在高速存储器上,什么应该寄存在低速存储器上等。
④肯定存取散布,许多DBMS都提供了一些存储分派参数供设计者利用,例如缓冲区的大小和个数、块的长度、块因子的大小等,设计者必需规定其中的一些参数的位置。
评估物理结构
由于在物理设计进程中需要考虑的因素很多,包括时间和空间效率、保护代价和用户的要求等,对这些因素进行衡量后,可能会产生多种物理设计方案。
这一阶段需对各类可能的设计方案进行评价,评价的重点是系统的时间和空间效率,并从多个方案当选出较优的物理结构。
2、模块进程设计与界面设计
验证用户身份功能模块
⑴功能描述
验证用户身份功能模块用于对登岸系统的用户进行身份验证,肯定用户是不是拥有利用该系统的资格和该用户的权限。
因此,任何用户登岸系统都挪用此模块。
⑵主要算法
if用户名and口令正确
以该用户身份进入系统总控制界面并取得响应系统权限
else
提示“用户名或口令错误”
累计错误三次,自动关闭本系统
endif
系统总控制模块
⑴功能描述
系统总控制模块是系统运行时的主控制程序,通过系统的主菜单集中各子功能模块,用户在该模块中通过选择菜单进入到相应的子模块。
⑵菜单设计
系统菜单设计如下表所示。
表1系统菜单
一级菜单
系统
输入
维护
帮助
二、三
级菜单
客户管理
产品查询
修改产
品信息
系统信息
用户管理
产品入库
退出系统
产品出库
⑶主要算法
每一个菜单项挪用相应模块,实现各自的功能。
以退出系统为例:
if退出系统
提示“确认退出系统?
”
if确认退出
退出仓库管理系统
else
返回到仓库管理系统
endif
endif
其他功能菜单类似。
用户信息管理模块
⑴功能描述
用户信息管理模块是对整个系统的用户进行权限分派的模块,通过挪用该模块,具有查询用户大体信息和修改密码及权限的功能。
系统第一次运行时只有超级用户具有效户权限分派的权限。
⑵挪用方式
用户在主控制界面当选择挪用该模块。
⑶主要算法
①添加按钮触发的处置:
用于添加新的用户,产生添加用户的界面。
(仅限管理员权限)
②删除按钮触发的处置:
用于删除选中的系统用户。
(仅限管理员权限)
③修改密码按钮触发的处置:
用于修改当前用户的密码,产生新的密码修改界面。
修改密码处置流程:
输入原始密码
重复输入原始密码
if两次密码相同
匹配数据库用户密码
if与数据库密码相同
继续输入新密码,修改成功
else
显示“您的密码不正确!
”
else
显示“两次输入不相同!
”
④上一页按钮触发的处置:
显示上一页的记录。
⑤下一页按钮触发的处置:
显示下一页的记录。
⑥首页按钮触发的处置:
显示第一页的记录。
⑦末页按钮触发的处置:
显示最后一页的记录。
⑧退出按钮触发的处置:
关闭用户信息管理窗口并返回主控制界面。
客户信息管理模块
⑴功能描述
客户信息功能模块是供系统利用人员对客户信息进行检索与查询而且进行修改的模块。
通过挪用该模块,能够依照不同的条件组合进行客户信息的查询,并可以对查询到的客户信息进行修改。
⑵挪用方式
用户在主控制界面当选择相应选项打开客户信息界面,在界面中选择相应功能。
⑶主要算法
①查询条件下拉列表:
选择查询的方式,然后于查询框中填写关键字进行搜索。
②添加按钮触发的处置:
用于添加新的客户,产生添加客户的界面。
(仅限管理员权限)
③删除按钮触发的处置:
用于删除选中的客户的信息。
(仅限管理员权限)
④修改按钮触发的处置:
用于修改选中的客户的信息,产生客户信息修改界面。
(仅限管理员权限)
⑤上一页按钮触发的处置:
显示上一页的记录。
⑥下一页按钮触发的处置:
显示下一页的记录。
⑦首页按钮触发的处置:
显示第一页的记录。
⑧末页按钮触发的处置:
显示最后一页的记录。
⑨退出按钮触发的处置:
关闭客户信息管理窗口并返回主控制界面。
产品入库功能模块
⑴功能描述
产品入库功能模块是用于新的产品添加到仓库的处置模块。
通过挪用该模块,用户将产品的入库信息添加到仓库信息中。
⑵挪用方式
用户在主控制界面当选择相应选项打开产品入库界面,在界面中填写相应入库信息。
⑶主要算法
①产品类型下拉列表:
选择入库产品的类型。
②产品名输入框:
用于输入添加的产品的名称。
③产品价钱输入框:
用于输入添加的产品的价钱。
④入库量输入框:
用于输入添加的产品的数量。
(按产品类型肯定单位)
⑤生产日期输入框:
用于填写入库产品的生产日期。
⑥入库按钮触发的处置:
将用户填写的入库产品的信息添加到库存的产品信息中。
⑦重置按钮触发的处置:
将用户填写的产品入库信息清空从头填写。
⑧退出按钮触发的处置:
关闭产品入库窗口并返回主控制界面。
产品出库功能模块
⑴功能描述
产品出库功能模块是用于产品从仓库售出的处置模块。
通过挪用该模块,用户将产品的出库信息添加到仓库信息中。
⑵挪用方式
用户在主控制界面当选择相应选项打开产品出库界面,在界面中填写相应出库信息。
⑶主要算法
①产品名下拉列表:
选择出库产品的名称。
②出库量输入框:
用于输入售出的产品的数量。
(按产品类型肯定单位)
③出库按钮触发的处置:
将用户填写的产品出库信息添加到库存的产品信息中。
④重置按钮触发的处置:
将用户填写的产品入库信息清空从头填写。
⑤退出按钮触发的处置:
关闭产品出库窗口并返回主控制界面。
产品信息管理模块
⑴功能描述
产品信息管理模块是供系统利用人员对产品信息进行检索与查询而且进行修改的模块。
通过挪用该模块,能够依照不同的条件组合进行产品信息的查询,并可以对查询到的产品信息进行修改。
⑵挪用方式
用户在主控制界面当选择相应选项打开产品信息界面,在界面当选择相应功能。
⑶主要算法
①查询条件下拉列表:
选择查询的方式,然后于查询框中填写关键字进行搜索。
②查询按钮触发的处置:
用于按照查询条件和用户输入的条件进行查询产品的相关信息并显示。
③修改按钮触发的处置:
用于修改选中的产品的信息,产生产品信息修改界面。
(仅限管理员权限)
④上一页按钮触发的处置:
显示上一页的记录。
⑤下一页按钮触发的处置:
显示下一页的记录。
⑥首页按钮触发的处置:
显示第一页的记录。
⑦末页按钮触发的处置:
显示最后一页的记录。
⑧退出按钮触发的处置:
关闭产品信息管理窗口并返回主控制界面。
打印功能模块
⑴功能描述
打印功能主要用于打印产品的信息,方便仓库管理信息的整理和保留。
⑵挪用方式
用户在主控制界