超市收银管理系统软件工程课程设计实验报告Word格式文档下载.docx
《超市收银管理系统软件工程课程设计实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《超市收银管理系统软件工程课程设计实验报告Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
2.3可选的方案
2.3.1方案一
本系统采取C/S模式,这是由于本系统用于一般的超市,而非用于网上购物,C/S模式利于移植,避免了B/S模式应用程序所要求的服务器相关软件环境配置的复杂性,而且无需借助网络,能够以更快的速度进行操作和响应,相对也显得安全一些。
编程语言采用Java,图形界面用JavaSwing,尽管Java的程序效率不是最高的,而且Swing的界面跟Windows风格不太符合,但Java有一点是不可比拟的,即用其开发的程序具有跨平台性,由于是C/S模式的桌面应用程序,跨平台性就显得特别重要。
数据库采用MySQL,其体积小、速度快、总体拥有成本低,而且开放源码,其可靠性也丝毫不逊色。
这种轻量而强大的数据库是开发这种中小型桌面软件系统的绝佳选择。
开发环境用的是MyEclipse,它对JavaSwing的支持尤其好,实现了所见即所得的开发方式。
2.3.2方案二
本课题采用visualc的技术实现,VC是面向对象的语言,同时,微软在其中提供了大量的可用控件,使得我们在搭建页面时能够方便使用,而省去了大量代码的使用。
此编程工具与数据库的连接也很完善。
数据库采用MySQL,其体积小、速度快、总体拥有成本低,而且开放源码,其可靠性也丝毫不逊色。
开发环境用的是Visualstudio2010。
2.4所建议的系统
2.4.1系统说明
采用与MicrosoftSQLServer2000的连接,经过对于超市收银管理系统的分析后,系统所涉及到的数据包括:
货物名称、货物货号、货物数量、供应商名称、入库单、系统管理、销售业绩管理等。
具体如下:
1进货功能的数据需求
主要包括:
进货货号,进货名称,收货人,供货商,进货日期,进货单位,进货数量等。
2库存信息的数据需求
货物库存数量,货物名称,货物货号等。
3出货功能的数据需求
销售日期,商品货号,商品名称,销售单价,销售数量,收银员编号等。
4销售业绩的数据需求
销售起止时间,销售员编号,货物名称,货物货号和总销售额等。
2.4.2高层数据流图
图2.1高层数据流图
2.5经济可行性
成本包括:
开发项目的费用支出和时间消耗,服务器的配置,硬件设备的更新和升级,系统管理维护费用。
其中服务器的配置、硬件设备的更新和升级都是一次性投资。
项目取得的收益:
通过提升工作效率带来的销售收益以及减少工作人员带来的成本收益。
从长远看来,这是一项可观的收益,相对于项目支出的一次性较大费用来说,一个成功的收费管理系统获得的收益将是长期的、持续性的,因此,构建收费管理系统在经济上可行。
2.6技术可行性
随着软件编程技术的不断增加,功能的不断加强,和网络技术的不断成熟,信息安全的不断完善以及开发工具的日益进步,采用计算机系统来管理超市要求数据的采集、更新能够完整、准确和及时,所以开发通用的超市收银系统已经完全可以做到。
2.7操作可行性
当今社会,计算机对人们来说已并不陌生,它已经走进千家万户,即使是并没有太高文化水平的人也能够熟练操作计算机。
对于此套超市管理系统,它拥有简洁的界面,能让人熟练操作,因此面对超市的普通员工,它的操作是完全可行的。
对于超市的管理员,熟悉这套系统就更加容易,利用这套系统,使得超市管理的工作将变得简单快捷。
3需求分析
3.1需求概述
本系统主要分成四个功能模块,每个模块都独立的完成了自己的功能,以下是对各功能模块的说明:
(1)用户信息管理功能。
该功能模块可以实现系统用户对自己基本信息的修改,不过只限于对登录密码的修改,因为用户帐号都是超市为了方便管理而事先分配好了的,是不能改变的。
出于对用户信息的安全性考虑,只能修改当前登录的用户的密码。
(2)商品入库信息管理功能。
该功能模块是实现对即将入库的商品的统计,由于商品信息的庞大、复杂,在入库前需要对其进行详细地记录管理,为商品的库存管理打下良好的基础。
需要记录的内容有:
入库商品的商品号、名称、类型、价格、同类商品的数量、采购员、验收员、生产厂商、产地、入库时间等。
同时能够实现对商品入库信息的添加、修改、删除和查询功能。
(3)商品库存信息管理功能。
该功能模块是当入库的商品放入超市后,对库存商品进行统计管理,主要入库信息来源于
(2)中的商品入库信息记录。
库存商品的名称、类型、入库价格、销售价格、库存量、入库时间、有效期等,同时能够实现对商品库存信息的添加、修改、删除和查询功能。
在商品批量销售后,在表中能够同时删除相应的商品的数量。
(4)商品销售信息管理功能。
该功能模块是把要销售的商品从超市中取出来,并对库存商品进行相应的记录管理,并且把顾客的购买信息打印下来给顾客做凭证。
出售商品的名称、类型、销售价格、数量、销售时间等,同时能够实现对商品销售信息的添加、修改、删除和查询功能。
3.2需求模型
3.2.1数据模型
为了把系统的数据要求清楚、准确地描述出来,系统分析员通常建立一个概念性的数据模型(E-R图)。
它描述了从用户角度看到的数据,它反映了用户的显示环境,而且与在软件中的实现方法无关。
本系统的E-R图,如图3.1
图3.1超市收银管理管理系统E-R图
3.2.2功能模型
超市收银管理系统功能模型图,如图3.2
图3.2超市收银管理系统功能模型图
3.2.3行为模型
(a)(b)
图3.3超市收银管理系统行为模型图
3.2.4数据字典
在对数据库需求分析后,得到一个数据字典。
数据字典则是系统中各类数据描述的集合,是进行详细的数据手机和数据分析获得的主要成果。
数据字典通常包括数据项、数据结构、数据流、数据存储。
其中数据项是数据最小组成单位,若干个数据项可以组成一个数据结构,数据字典通过对数据项和数据结构的定义来描述数据流、数据存储和逻辑内容,
本系统的数据字典包括以下内容。
1数据元素
(1)数据元素名称:
cno
别名:
货物号
简述:
货物的编号
数据类型:
字符串型
长度:
10
取值范围:
“000000001”-“999999999”
(2)数据名称:
用户名
某用户的名称
文本型
50
“000..001”-“999..999”
2数据流
(1)数据流名称:
(2)数据流名称:
销售日期
货物卖出的日期
(3)数据流名称:
数量
货物卖出的数量
(4)数据流名称:
进货信息
货物信息、库存数量信息、进货时间信息
数据流组成:
进货信息=货物信息+库存数量信息+进货时间信息
(5)数据流名称:
出货信息
货物信息、卖出数量信息、卖出时间信息
货物信息+卖出数量信息+卖出时间信息
3处理逻辑条目
(1)处理逻辑名称:
登陆
根据用户名称、密码和权限登陆到系统主菜单
输入的数据流:
用户名、密码
处理:
根据用户权限来实现对货物管理
输出的数据流:
货物信息
(2)处理逻辑名称:
进货管理
入库货物的货物号来实现入库管理
根据所入库货物的货物号,增加此商品的库存
库存信息
(3)处理逻辑名称:
出货管理
出库货物的货物号来实现出库管理
根据所出库货物的货物号,减少此商品的库存
更新完的库存信息
4数据存储
数据存储名称:
商品信息表
记录商品的信息
数据存储结构:
货物号,货物名称,库存数量,进出货时间,
关键字:
库存数量
4总体设计
4.1系统体系结构
系统整体功能层次图,如图4.1
图4.1整体功能层次图
前台功能层次图,如图4.2
图4.2前台功能层次图
后台功能层次图,如图4.3
图4.3后台功能层次图
4.2模块详细说明
IPO表
系统:
超市收银管理系统
模块:
商品销售模块
编号:
2
作者:
李林
日期:
3月6号
被调用:
调用:
数据库
输入:
商品条形码
输出:
商品信息
处理:
计算商品总额
局部数据元素:
GNum
GName
SellPrice
UserAccount
注释:
商品名称
售价
操作员
4.3数据库设计
商品信息表记载的是商品的详细信息,含商品编号、名称、、售价、库存量。
具体的各字段属性说明和类型如下表2。
表4.1商品信息表(Goods)
序号
属性名
字段名
类型
长度
NULL
1
商品编号
GoodsID
Int
4
×
varchar
3
30
进价
BuyPrice
money
5
6
库存量
StockNum
int
7
厂家
Producer
nvarchar
100
√
订单细节表记载的是商品的销售信息,含订单号、流水线编号、商品条形码、商品销售数量。
具体的各字段属性说明和类型如下表4.2
表4.2订单细节表(SaleDetail)
订单编号
Did
流水线编号
SaleAccount
20
JoinTime
商品销售数量
SaleNum
4.3.1数据库选择方案论证
建立一个数据库我们有多种选择,现在市场上有各种各样的数据库,而且每一种数据库都有其自身的特点,不能说哪一种更好,只是在其中寻找一种能更好地适应系统需求、更好地满足用户的要求以及适应开发人员的习惯。
在本系统中,作为小型超市的收费系统是一个比较小的应用系统,它所产生和处理的数据量也比较小。
因此,没有必要使用像SQL
Server和Oracle这样的大型数据库。
首先考虑的数据库是开源的Mysql数据库,因为它在计算机上的应用比较普及,是开发小型数据库系统的比较理想的选择,所以,在本系统中我选择了Mysql数据库。
Mysql作为一个数据库管理系统,采取关系型数据库模式。
与其他的数据库系统相比,Mysql简单易学,并且功能强大,利用它可以方便地实现对信息保存、维护、查询、统计、交流、发布,这些功能对一个一般用户而言已经足够了。
4.3.2数据库表设计
用户的需求具体体现在对商品信息,销售信息,折扣信息,客户信息的更新和查询,以及由此涉及到的财务数据的更新、查询和保存。
这就要求数据库结构充分满足各种信息的输出和输入。
搜集基本数据、数据结构和数据处理的流程,组成一个详尽的数据字典,为后面的具体设计打下基础。
通过上述系统功能分析,总结出如下的需求信息:
1.用户分为管理员、和收银员。
管理员具有管理和查询表项的功能,收银员结账并维护vip客户表信息;
2.涉及到的数据有商品信息表、供应商表、销售情况表、雇员表、值班表、vip客户表,折扣表;
3.管理员和收银员具有不同的操作权限;
4.管理员具有新建用户和分配权限的权力。
经过上述系统功能分析和需求总结,考虑到将来功能上的扩展,设计如下面所示的数据项和数据结构。
1、商品信息表,是实体表,包括:
商品编号、商品名、供应商编号、单价、数量。
商品编号是主键。
2、供应商表,是实体表,包括:
供应商编号、地址、联系电话。
供应商编号是主键。
3、销售情况表,是关系表,包括:
商品编号、销售日期、销售数量。
4、雇员表,是实体表,包括:
员工编号、密码、员工姓名。
员工编号是主键。
5、值班表,是关系表,包括:
员工编号、值班日期。
这两个一起作为主键。
6、vip客户表,是实体表,包括:
会员编号、姓名、积分、联系电话。
会员编号是主键。
7、折扣表,是关系表,包括:
商品编号、折扣、打折日期。
5详细设计
5.1人机界面设计
商品销售界面如图5.1
图5.1商品销售界面
5.2过程设计
其中按商品条形码查询商品信息用数据库查询完成。
代码如下:
privatevoidAddGoods_Click(objectsender,EventArgse)
{
stringgoodsNum=this.txtGoodsNum.Text.Trim();
GoodsBllgoodsBll=newGoodsBll();
if(goodsNum=="
"
)
MessageBox.Show("
请输入商品条形码!
);
return;
}
else
intgoodsCount=1;
Goodsgoods=goodsBll.GetGoodsByNum(goodsNum);
if(goods!
=null)
if(lvGoods.Items.Count>
0)
boolexist=false;
foreach(ListViewItemgoodsIteminlvGoods.Items)
if(goodsItem.SubItems[1].Text==goodsNum)
exist=true;
goodsItem.SubItems[0].Text=(int.Parse(goodsItem.SubItems[0].Text)+1).ToString();
goodsItem.SubItems[4].Text=string.Format("
{0:
F2}"
(int.Parse(goodsItem.SubItems[0].Text)*goods.SalePrice));
sumGoods+=1;
if(!
exist)
ListViewItemlvItem=lvGoods.Items.Add(goodsCount.ToString());
lvItem.SubItems.Add(goods.GNum);
lvItem.SubItems.Add(goods.GName);
lvItem.SubItems.Add(string.Format("
goods.SalePrice));
goods.SalePrice*goodsCount));
lvItem.SubItems.Add(CashierLogin.m_cashier.UserAccount);
lvItem.SubItems.Add(goods.ID.ToString());
this.txtGoodsNum.Text="
;
该商品不存在!
this.lblSumMoney.Text=getSumMoney().ToString();
this.lblSumCount.Text=sumGoods.ToString();
this.txtSumMoney.Text=this.lblSumMoney.Text;
计算商品总金额。
代码如下:
privatedecimalgetSumMoney()
decimaltotalMoney=0;
foreach(ListViewItemlvIteminthis.lvGoods.Items)
totalMoney+=Decimal.Parse(lvItem.SubItems[4].Text);
returntotalMoney;
6测试
6.1白盒测试
目的:
是否能通过商品条形码正常查询展示商品信息
结果:
查询正常。
如图6.1。
图6.1商品销售测试图
6.2黑盒测试
商品销售模块是否正常查询商品并计算总额收银。
商品销售模块可以正常收银。
如图6.2。
图6.2商品收银测试图
7结论
由于时间仓促,加上个人能力、经验存在局限性,软件还存在些许的不足需要改善。
如用户界面单一,控件的摆放不美观。
还有有些业务逻辑存在着明显的不合理,如收银员在输入商品条形码时,不能控制商品的数量,只能一个个输入,和麻烦费事。
还有汇总统计时只以表格的形式显示,查看商品销售状况时不直观。
并且没有统计超市的营业额。
这样不合理。
我觉得永远不会有完美的代码,在做项目过程中要尽可能贴近用户的需求,用户感觉好,软件的质量才高。
因此在做之前要做好需求分析。
8参考文献
[1]王立福,麻志毅。
《软件工程》(第二版)。
北京:
北京大学出版社,2001。
[2]ThomasM.Connolly,CarolynE.Eegg著.数据库设计教程(第2版).北京:
机械工业出版社.2003.4
[3]张怀勇。
数据结构与算法分析--C++描述(第3版).北京:
人民邮电出版社.2007.1
[4]张海藩著.软件工程导论(第4版).北京:
清华大学出版社.2003.11