软件工程课程设计超市仓库管理系统Word格式.docx
《软件工程课程设计超市仓库管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计超市仓库管理系统Word格式.docx(26页珍藏版)》请在冰豆网上搜索。
超市需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息。
面对不同种类的信息,需要合理的数据库结构来保存数据信息,需要有效的程序结构支持各种数据操作的执行。
1.3系统开发平台
通过研究超市仓库管理系统任务书,并对该系统进行实际需求分析,该系统采用了面向对象的VC软件作为开发工具,其功能强大、安全、跨平台、简单、适用于网络。
该系统数据库采用了我们较为熟悉的SQL数据库作为该系统的后台数据库支持。
1.4系统运行环境
Windows系统具有完全可视化窗体,直观、高效的面向对象的图形用户界面,具有普遍的使用人群,所以我们决定该超市仓库管理系统将运行在WINDOWS操作系统下。
在WINDOWS95/98/2000/XP下等都可以运行。
本次课程设计是在WINDOWSXP下运行的。
采用VC作为开发工具,SQL数据库作为该系统的后台数据库支持创建超市仓库管理系统。
第二章可行性研究
2.1技术可行性研究
在IT行业中从业的工作人员一般都要求掌握计算机技术,具有一定的软硬件基础,会使用各种管理软件,熟悉IT产品。
因为,有的超市对员工的素质要求比较高,从管理层到下面的销售人员,都要求具有一定的计算机基础,所以在新系统投入使用时,只要对员工进行少量的培训,系统的功能和使用方法就基本上能够是系统顺利运行。
在软件开发方面,由于编程语言较多,而VC语言是一种面向对象的编程工具,VC语言是一种代码简单,易懂和维护的编程语言,为开发超市库存管理系统提供技术支持。
VC不仅基于不同的平台开发,而且可以在不同的系统上进行移植,从而加快了软件的开发,促进了发展。
超市库存管理系统就是基于这种简单的语言,以SQL作为数据库的后台,访问数据库,使软件的开发更为简单,同时也提高了开发的速度。
2.2经济可行性研究
因为通过网络传递销售信息可以不受距离的限制,因此可以借阅许多的人力和物力,方便管理,由此可以减少不必要的开支,同时该系统可以提高超市的销售效率,即提高了超市的经济效益,所以从经济上完全是可行的。
1.超市有能力承担系统开发费用
开发新系统的工作是一项间距复杂的工作,它的投资主要是人力和物力的投资。
对于本系统的开发者来说,其主要投资还是在人力和物力两个方面。
如果是企业自己安排人手开发系统的话,其主要的投资还是在人力资源上,从系统的业务需求调查到系统的分析编码制作都是需要巨大的人力投入的。
软件企业作为一个简短的高科技产业,其员工要求都比一般企业的要求要高,而且对系统开发及软件产业了解比较多,所以在自我开发管理系统的过程中,企业自己比较容易安排人手,这样就可以为企业借阅大部分的额外开支。
同时软件就其它产品来说,属于高端行业,无论是产品的价格还是质量都比较高,而经营产品的经销商或者是商家都要求有雄厚的资金支持。
所以,在系统的开发过程中,企业完全有能力承担开发费用。
2.新系统将为企业带来经济效益
管理系统是一个信息化、智能化和先进管理理念的集合体。
而管理是一个动态过程,在其运行过程中要采取多项措施。
所以在管理中获得经济效益是一个综合效益,要对它进行直接定量的分析是比较困难的。
一般新系统带来的经济效益是简介的,其最主要的表现就是减少了企业管理费用和人力开支。
而其它一些繁琐的食物都通过新系统来加以分析解决,不仅节省了大量的时间,还为企业的各项决策提供了宝贵的资料,为企业带来巨大的经济效益。
2.3操作可行性研究
本系统采用基于Windows的图形用户界面,而该系统是大家熟悉的操作系统,对于那些有一般的计算机知识的人员就可以轻松上手。
而整个超市管理系统采用最友好的交互界面,简介明了,不需要对数据库进行深入的了解。
由此,该系统的操作是可行的,有必要开发该系统。
综合以上三方面,该系统具有很高的开发可行性,无论是从技术上或者经济上还是操作上。
第三章需求分析
3.1功能需求
本系统采用自定向下方法开发,
为了适应社会的发展和超市管理的需要,可以在原有功能之上进行对系统功能的补充和调整,从而进一步完善其需要。
通过以上的需求分析,初步确定该系统功能主要包括以下几个模块:
1.系统登录:
根据提供的用户名、初始密码进行登录验证,如果成功则进入系统,否则提示无法登录。
2.商品入库:
根据商品编号的首字母来进行商品的分类,如果输入的商品在数据库中存在,则给出已有的信息,可以修改数量;
如果输入的商品不存在,则需要输入全部信息。
3.商品出库:
用于商品从仓库售出的处理模块。
通过调用该模块,用户将商品的出库信息添加到仓库信息中
4.商品查询:
分类列出数据库里全部的商品信息。
5.商品更改、删除:
当商品售出对数量进行修改,或对其他信息进行修改,商品删除,商品数量为0则进行删除。
3.2数据流图
1.超市仓库管理系统顶层数据流图如下:
图3.1超市仓库管理系统顶层数据流
2.超市仓库管理系统0层数据流图如下:
图3.2超市仓库管理系统顶层数据流
3.入库信息管理1层数据流图如下:
图3.3入库信息管理1层数据流
4.出库信息管理1层数据流图如下:
图3.4出库信息管理1层数据流
3.3数据字典
数据字典是关于数据的信息的集合,它的作用是在软件分析和设计过程中提供关于数据的描述信息。
数据字典和数据流图共同构成系统的逻辑模型。
数据字典定义数据的方法就是对数据自顶向下地分解,当分解到不需要进一步定义,每个和工程有关的人员都清楚其含义的元素时,这种分解过程就结束了。
本仓库管理系统根据划分的模块定义了如下数据字典:
3.4建立E-R图
通常使用实体-联系图来建立数据模型,可以把实体-联系图简称为E-R图,相应地可以把E-R图描绘的数据模型称为E-R模型。
E-R图中包含了实体(即数据对象)、关系和属性等三种基本成分。
通常,用矩形框代表实体,用连接相关实体的菱形框表示关系,用椭圆或圆角矩形表示实体或关系的属性,并用直线把实体(或关系)与其属性连接起来。
1.超市仓库管理系统数据库E-R模型,如图3.5所示:
图3.5超市仓库管理系统数据库E-R模型
2.预订单实体E-R图如下:
图3.6预定单实体E-R
3.入库单实体E-R图如下:
图3.7入库单实体E-R
4.商品库存实体E-R图如下:
图3.8商品库存实体E-R
5.商品信息实体E-R图如下:
图3.9商品信息实体E-R
6.商品出库单实体E-R图如下:
图3.10商品出库单实体E-R
第四章概要设计
4.1系统设计
1.系统分成系统登录、商品入库、商品出库、商品查询、商品更改、删除等几个功能模块。
但这些模块都进行集中式管理。
2.分层的模块化程序设计思想,整个系统采用模块化结构设计。
作为应用程序有较强的可操作性和扩展性。
3.合理的数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。
每个模块又包含多项子功能:
(1)登录模块:
对登陆系统的用户进行身份验证,确定用户是否拥有使用该系统的资格,任何用户登陆系统都调用此模块。
(2)进行身份验证:
(3)商品入库:
用于新的商品添加到仓库的处理模块
(4)入库的商品信息:
(5)商品查询:
供系统使用人员对商品信息进行查询的模块。
(6)列出商品信息:
(7)商品修改:
供系统使用人员对商品信息进行修改的模块。
(8)对商品进行修改:
选择需修改的商品信息进行修改。
(9)商品出库:
用于旧的商品从仓库中输出。
(10)出库的商品信息:
根据商品编号的首字母来进行商品的分类,如果输入的商品在数据库中存在,则选择输出,可以修改数量;
如果输入的商品不存在,则不需要输出。
(11)商品删除:
用于商品数量的删除。
(12)商品数量的删除:
商品数量是零。
4系统功能模块设计
在系统功能分析的基础上,考虑到Visualc++程序编制的特点,得到如下图所示的系统功能模块图。
图4.1系统功能模块
4.2系统状态转换图设计
状态图(也叫状态转换图)通过描绘系统状态及引起系统转换的事件来表示系统的行为。
此外,状态图还指明了作为特定事件的结果系统将做哪些动作。
因此,可以用状态图建立软件系统的行为模型。
在状态图中第一的状态主要有:
初态、终态和中间状态,在一张状态图中只能有一个初态,而终态则可以有0个至多个。
在状态图中,初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示。
中间状态用圆角矩形表示,可以使用两条水平横线把它分成上、中、下3个部分,分别防止状态名、状态变量和活动表。
事件是在某个特定时刻发生的事情,它是对引起系统动作或(或)从一个状态转换到另一个状态的外界事件的抽象。
状态图中两个状态之间带箭头的连线表示状态转换,箭头指明了转换的方向。
状态转换通常是由事件触发的,在这种情况下应该在表示状态转换的箭头上标出触发事件表达式。
1.超市仓库管理登陆转换图如下:
图4.2超市仓库管理登陆转换图
2.超市仓库管理入库、出库状态转换图如下:
图4.3.超市仓库管理入库、出库状态转换
第五章详细设计
超市仓库管理系统它主要包括系统登录、商品入库、商品出库、商品查询、商品更改、删除等几个功能模块。
本次课程设计主要对系统登陆模块、商品入库模块进行详细设计。
5.1物理结构设计
数据库的物理结构设计是指为给顶的一个逻辑数据模型选择最适合应用环境的物理结构。
关系数据库的物理结构主要是指数据的存取方法和存储结构。
数据库的物理结构设计分为两个部分,首先是确定数据库的物理结构,其次是对所设计的物理结构进行评估。
1.确定数据库的物理结构
为确定数据库的物理结构,设计人员必须了解下面的几个问题。
(1)详细了解给定的DBMS的功能和特点,特别是该DBMS所提供的物理环境和功能;
(2)熟悉应用环境,了解所设计的应用系统中各部分的重要程度、处理频率、对响应时间的要求,并把它们作为物理结构设计过程中平衡时间和空间效率时的依据;
(3)了解外存设备的特性,如分块原则、块因子大小的规定、设备的I/O特性等。
2.在对上述问题进行了全面的了解之后,就可以进行物理结构的设计了。
一般地,物理结构设计的内容包括如下几个方面。
(1)确定数据的存储结构。
在此过程中需考虑存取时间、空间效率和维护代价间的平衡,如在引入冗余数据以加快存取速度时应兼顾系统的空间效率。
(2)选择合适的存取路径,例如确定应该为哪些关系模式建立索引,索引关键字是什么等。
(3)确定数据的存放位置,例如确定数据存放在一个磁盘上还是多个磁盘上,什么数据该存放在高速存储器上,什么应该存放在低速存储器上等。
(4)确定存取分布,许多DBMS都提供了一些存储分配参数供设计者使用,例如缓冲区的大小和个数、块的长度、块因子的大小等,设计者必须规定其中的一些参数的位置。
数据库表的结构具体情况如下:
表5-1预定单表
字段名称
数据类型
说明
预定单号
int(4)
主键,不能为空
商品号
不能为空
商品名
char(50)
数量
价格
money(8)
供应商
可以为空
采购员
Char(10)
收货时间
表5-2入库单表
入库单编号
不能为空,主键
Char(50)
入库时间
datetime(8)
char(10)
仓库管理人员
表5-3商品库存表
商品最大库存
商品现有库存
表5-4出库单表
出库数量
仓库管理员
出库时间
表5-6商品信息表
商品数量
商品产地
生产日期
Datetime(8)
保质期
商品进价
备注
3.评估物理结构
由于在物理设计过程中需要考虑的因素很多,包括时间和空间效率、维护代价和用户的要求等,对这些因素进行权衡后,可能会产生多种物理设计方案。
这一阶段需对各种可能的设计方案进行评价,评价的重点是系统的时间和空间效率,并从多个方案中选出较优的物理结构。
5.2逻辑结构设计
数据库逻辑结构设计的任务是根据E-R模型和需求分析所产生的文档,并综合考虑所选择的具体DBMS的特点,设计出整个数据库的逻辑结构。
一般来说,选择哪一种DBMS存放数据,是由系统分析员和用户(一般是企业的高级管理人员)决定的。
需要考虑的因素包括DBMS产品的性能和价格,以及所设计的应用系统的功能复杂程度。
如果选择的是关系型DBMS产品,那么逻辑结构的设计就是指设计数据库中所包含的各个关系模式的结构,包括关系模式的名称、每一关系模式中各属性的名称、数据类型和取值范围等内容。
逻辑结构的设计过程是:
首先,根据需求阶段的设计结果和具体的DBMS产品的特点,将全局E-R模型转换成一个初始的关系模型。
然后,对其中的每个关系模式进行分析,判断是否存在不合理的关系模式,如有则利用关系模式的规范化方法消除之。
将超市仓库管理系统的E-R图转换成关系模式为:
(1)预订单(预订单号,商品号,商品名,数量,价格,供应商,采购员,收货时间);
(2)入库单(入库单编号,商品号,商品名,数量,价格,入库时间,采购员,仓库管理人员,预订单号);
(3)商品库存表(商品号,商品名,商品最大库存,商品现有库存);
(4)出库单(出库数量,商品号,商品名,仓库管理员,出库时间);
(5)商品信息(商品号,商品名,商品数量,商品产地,生产日期,保质期,商品进价,备注);
5.3模块功能设计
本次课程设计主要对系统登陆模块、商品入库模块、商品出库模块进行详细设计。
1.登陆功能模块
⑴功能描述
⑵主要算法
if用户名and口令正确
以该用户身份进入系统总控制界面并获得响应系统权限
else
提示“用户名或口令错误”
累计错误三次,自动关闭本系统
endif
2.产品出库功能模块
产品出库功能模块是用于产品从仓库售出的处理模块。
通过调用该模块,用户将产品的出库信息添加到仓库信息中。
⑵调用方式
用户在主控制界面中选择相应选项打开产品出库界面,在界面中填写相应出库信息。
⑶主要算法
①产品名下拉列表:
选择出库产品的名称。
②出库量输入框:
用于输入售出的产品的数量。
(按产品类型确定单位)
③出库按钮触发的处理:
将用户填写的产品出库信息添加到库存的产品信息中。
④重置按钮触发的处理:
将用户填写的产品入库信息清空重新填写。
⑤退出按钮触发的处理:
关闭产品出库窗口并返回主控制界面。
第六章编码与测试
本次课程设计主要对系统登陆模块、商品出库模块进行编码与测试。
6.1系统编码
1.登陆模块
(1)功能:
用户输入用户名和密码后,系统进行验证,验证通过进入程序的主界面。
图6.1登陆模块界面
(2)部分主要代码如下:
publicboolVeri(stringtb_table,stringId,stringPwd)
{
DataClass.MyMeansMyClass=newSMMS.DataClass.MyMeans();
booljud=false;
if(Id!
="
"
&
&
Pwd!
)
SqlDataReadertemDR=MyClass.getcom("
select*from"
+
tb_table+"
whereUserName='
+Id.Trim()+"
'
andPass='
+Pwd.Trim()+"
);
jud=temDR.Read();
if(jud)
DataClass.MyMeans.Login_Name=Id.Trim();
DataClass.MyMeans.Login_ID=temDR.GetString(0);
DataClass.MyMeans.My_con.Close();
DataClass.MyMeans.My_con.Dispose();
}
else