1、目录 1 可行性研究 1 1.1 引言 1 1.2 可行性研究 2 2 需求分析 3 2.1功能需求分析 3 2.2 需求总结 4 2.3分析建模 5 3 概要设计 10 3.1系统功能模块图 10 3.2流程图 10 3.3 E-R模型转化为对象模型 11 4 详细设计 16 4.1前台销售模块 16 4.2后台进货管理模块 18 4.3后台销售管理模块 18 4.4后台库存管理模块 20 4.5后台人员管理模块 21 5 系统实现 23 5.1相关数据库建立 23 5.2前台销售系统的实现 25 5.3后台管理系统的实现 27 6 系统测试 29
2、 6.1测试说明 29 6.2测试项目 29 6.3测试用例 29 6.4 软件测试结论 32 7总结 33 7.1小组总结 33 7.2个人总结 33 超市销售管理系统 第七小组 学号 姓名 具体模块 成绩 备注 041140328 王普德 可行性研究 前台销售模块 系统实现 041140329 李佳新 需求分析 后台进货模块 后台销售模块 041140330 韩冰 后台库存模块 后台人员模块 系统测试 组长 041140331 邵继舜 概要设计 模
3、块用例流程图系统测试 1 可行性研究 1.1 引言 可行性研究的目的是为了在对问题进行研究的同时,以最小的代价在最短的时间内确定问题是否可解,以保证后续的工作能有效完成。在此项目中,通过全面的信息采集和处理,辅助提高超市的决策水平,大大提高超市的运作效率。为超市的管理人员带来的较大的方便。经过对此项目进行详细调查研究,初拟系统实现报告,对软件开发中将要面临的问及其解决方案进行初步设计及合理安排。明确开发风险及其所带来的经济效益。为降低经营成本,提高效益,增强超市扩张力,提供有效的技术保障。
4、现在的超市已经成为人们日常生活中不可缺少的一个组成部分,它的存在给人们的生活带来了很大的方便。做为超市内部的人员,商品和销售的管理工作,对超市的成功经营十分重要。然而传统的管理,主要以人工为主,不但费时费力,风险也较大。21世纪,超市销售的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。技术的提升和管理的升级是销售业的竞争核心。该超市管理系统将用于各种超市的超市进出货,消费者信息和职工信息的管理,实现以计算机辅助形式代替传统的手工查询记录形式,减轻超市管理人员的劳动强度,提高工作质量和效率,从而使超市管理更加合理化和科学化。 1.2 可行性研究
5、 针对超市的特点,为了帮助超市经营者节约人力开销有设备开销,提高超市的处理速度和竞争力,扩大超市的经济效益,我们将开发以下子系统:前台销售系统、后台管理系统,其中这两个子系统又包含其它一些子功能。采用这种方法来对整个超市系统进行高效的管理,达到自动化、科技化的目的。管理可行性分析:超市的经营者大多具备电脑基本操作知识,对于必要的专业操作经短期培训即可;管理基础工作和各项管理制度比较健全,执行严格,原始数据采集完整,保存良好。经济可行性分析:超市管理系统的投入,能够提高工作效率,减少工作人员,从而减少人力资本的投入,根据核算,系统投入三个月后,就能够基本收回开发系统的投资,从经济角度来说,
6、本系33统开发完全必要。技术可行性分析本系统涉及到的技术因素:管理系统的开发方法。使用结构化和面向对象开发方法开发软件系统编程、数据库技术。开发小组能使用Java编程同时熟悉数据库相关知识运行上的可行性:操作简单:简单的操作规则使操作人员能轻松掌握。查询方便:用户可设定任意条件和任意的查询项目进行检索。统计灵活:任意条件下任意项目的产品入库时间、数量等的统计及查询项目均可进行交叉统计。 在经济,技术,管理和社会因素方面都有可行性,可以确定本系统的开发完全必要,而且是可行的,可以立项开发。
7、 2 需求分析 2.1功能需求分析 1.零售前台管理系统功能 (1)商品录入:根据超巿业务特点制定相关功能,可以通过输入唯一编号、扫描条形码、商品名称等来实现精确或模糊的商品扫描录入。该扫描录入方法可以充分保证各种电脑操作水平层次的人员均能准确快速地进行商品扫描录入。 (2)收银业务:通过扫描条形码或者直接输入商品名称(对于同类多件商品采用一次录入加数量的方式)自动计算本次交易的总金额。在顾客付款后,自动计算找零,同时打印交易清单(包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号)。如果顾客是本店会员并持有本人会员卡,则在交易前先扫描会
8、员卡,并对所购物品全部实行9.5折优惠,并将所购物品的总金额累计到该会员的总消费金额中。 会员卡的有效期限为一年,满一年未续卡者,该会员卡将被注销。 (3)安全性:OS登陆、退出、换班与操作锁定等权限验证保护;断电自动保护最大限度防止意外及恶意非法操作。 (4)独立作业:有的断网收银机在网络服务器断开或网络不通的情况下,收银机仍能正常作业 2.后台管理系统功能 (1)进货管理: 根据销售情况及库存情况,自动制定进货计划(亦可手工制定修改),可以避免盲目进货造成商品积压。 按计划单有选择性地进行自动入库登记。 综合查询打印计划进货与入库记录及金额。 (2)销售管理: 商品正常销售、促
9、销与限量、限期及禁止销售控制。 综合查询各种销售明细记录、各地收银员收银记录以及交结账情况等。 按多种方式统计生成销售排行榜,灵活察看和打印商品销售日、月、年报表。 (3)库存管理: 综合查询库存明细记录。 库存状态自动告警提示。如库存过剩、少货、缺货等。软件为您预警,避免库存商品积压损失和缺货。 库存自动盘点计算。 (4)人员管理: 员工、会员、供货商、厂商等基本信息登记管理。 员工操作权限管理。 客户销售权限管理。 2.2 需求总结 客户需求:商品品种多样,商品易找,尽量便宜。 商家需求:必须具备记录仓库存货、销售以及进货情况,通过该系统了解超市进货渠道、商品单价、数量,库存商品
10、的种类、数量,销售商品种类、价格、数量,以便管理员根据以上信息作出经营管理决策。 超市领域专业人士:在性能方面要求系统核算准确,使实存商品、销售商品与所记帐目一致,能够被超市长期有效使用。数据主要来自于入库单、发票,超市销售在营业期间内一直发生,数据也就一直变化。销售商品后开出发票,并且要显示商品价格数额。超市数据资料有些属内部资料,不能为外人所知,系统须有保密措施,设置密码。 系统分析员:查看资料需输入正确密码,销售人员销售货物需输入代号才能打开收银柜。万一泄露密码,应设修改密码的程序,同时密码不能过于简单。 2.3分析建模 使用图形化的分析建模,包括用例图,数据流图,E-R图,其对
11、应图如下: 超市管理总系统用例图: 图2-1 超市管理总系统用例图 超市工作人员工作范围: (1)员工(营业员): l 通过商品条形码扫描输入商品到购买清单 l 操作软件计算交易总金额 l 操作软件输出交易清单 l 对会员进行会员卡扫描以便打折 (2)超市经理: l 操作软件录入商品,供货商,厂商 l 操作软件制定进货计划 l 查询打印计划进货与入库记录 l 操作软件控制商品销售与否 l 查询打印销售情况 l 操作软件生成销售排行榜 l 查询库存明细记录 l 根据软件发出的库存告警进行入货 l 操作软件进行盘点计算 (3)总经理: l 基
12、本信息登记管理 l 员工操作权限管理 l 客户销售权限管理 超市管理系统DFD图: 图2-2 超市管理系统DFD图 超市管理系统CDM模型: 图2-3 超市管理系统CDM模型 系统E-R图: (1)超市中的所有用户(员工)可以销售多种商品,每种商品可由不同用户(工)销售,每个顾客可以购买多种商品,不同商品可由不同顾客购买; (2)每个供货商可以供应多种不同商品,每
13、种商品可由多个供应商供应。 图2-4系统E-R图 3 概要设计 3.1系统功能模块图 超市销售管理系统主要分为前台销售系统和后台销售系统,前台主要负责商品的录入和收银业务两个模块,后台管理系统主要分为进货管理、销售管理、库存管理和人员管理几个模块。 超市销售管理系统 前台销售系统 后台管理系统 商品录入 收银业务 进货管理 销售管理 库存管理 人员管理 图3-1系统功能模块图 3.2流程图 前台销售系统流程图: 图3-2前台销售流程图 后台
14、管理系统用例图: 图3-3 后台管理系统用例图 3.3 E-R模型转化为对象模型 利用powerdesigner软件,从PDM模型中正向工程,生成关系模型,用SQL表示如下(由于篇幅限制,未全部给出): /*==============================================================*/ /* DBMS name: Microsoft SQL Server 2005 */ /* Created on: 2011/7/2 21:43:34
15、 */ /*==============================================================*/ if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('供货') and o.name = 'FK_供货_供货_商品') alter table 供货 drop constraint FK_供货
16、供货_商品 go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('供货') and o.name = 'FK_供货_供货2_供货商') alter table 供货 drop constraint FK_供货_供货2_供货商 go /*================================================
17、/ /* Table: 会员 */ /*==============================================================*/ create table 会员 ( 会员ID char(12) not null, 累计金额 money not null, 注册时间
18、 datetime not null, constraint PK_会员 primary key nonclustered (会员ID) ) go /*==============================================================*/ /* Table: 供货 */ /*===========================================================
19、/ create table 供货 ( 商品ID char(20) not null, 供货ID char(12) not null, 供货日期 datetime not null, 供货金额 money not null, constraint PK_供货 primary key (商品ID, 供货ID) ) g
20、o /*==============================================================*/ /* Index: 供货_FK */ /*==============================================================*/ create index 供货_FK on 供货 ( 商品ID ASC ) go /*==========================================
21、/ /* Table: 供货商 */ /*==============================================================*/ create table 供货商 ( 供货ID char(12) not null, 供货商名称 varchar(20) null, 供货商地址
22、 varchar(30) null, 供货商电话 varchar(11) null, constraint PK_供货商 primary key nonclustered (供货ID) ) go /*==============================================================*/ /* Table: 厂商 */ /*=======
23、/ create table 厂商 ( 厂商ID varchar(12) not null, 厂商名称 varchar(20) null, 厂商地址 varchar(30) null, 厂商电话 varchar(11) null, constra
24、int PK_厂商 primary key nonclustered (厂商ID) ) go /*==============================================================*/ /* Table: 商品 */ /*==============================================================*/ create table 商品 ( 商品ID c
25、har(20) not null, 商品名 varchar(15) not null, 商品价格 money not null, 允许打折 bit null, 促销价格 money null, 允许销售 bit null,
26、 constraint PK_商品 primary key nonclustered (商品ID) ) go /*==============================================================*/ /* Table: 消费 */ /*==============================================================*/ create table 消费 ( 商品ID
27、 char(20) not null, 会员ID char(12) not null, 消费金额 money not null, 购买日期 datetime not null, constraint PK_消费 primary key (商品ID, 会员ID) ) go alter table 供货 add constraint FK_
28、供货_供货2_供货商 foreign key (供货ID) references 供货商 (供货ID) go alter table 消费 add constraint FK_消费_消费_商品 foreign key (商品ID) references 商品 (商品ID) go alter table 生产 add constraint FK_生产_生产_商品 foreign key (商品ID) references 商品 (商品ID) go alter table 销售 add constraint
29、FK_销售_销售_客户 foreign key (客户ID) references 客户 (客户ID) go 4 详细设计 4.1前台销售模块 模块用例图: 图4-1模块用例图 模块用例程序流程图: Start 扫描条形码录入 信息 写入购物单 N 是否完成录入? Y 生成购物单 计算商品总额 商品信息表
30、Y 是否是会员? 会员信息表 计算会员卡打折厚的总额 找零 N 输入实收费用 信息 N 是否等于总费用? Y 商品信息表 从库存中减去该商品 交易信息表 打印发票 Return 4-2模块用例程序流程图 4.2后台进货管理模块 模块用例图: 图4-3模块用例图 4.3后台销售管理模块 模块用例图: 图4-4模块用例图 模块用例程序流程图: 图4-5模块用例程序流程图 图4-6模块用例程序流程图 图4-
31、7模块用例程序流程图 4.4后台库存管理模块 模块用例图: 图4-8模块用例图 模块用例程序流程图: 图4-9模块用例程序流程图 图4-10模块用例程序流程图 4.5后台人员管理模块 会员管理功能用例图: 图4-11会员管理功能用例图 模块用例程序流程图: 图4-13模块用例程序流程图 图4-14模块用例程序流程图 5 系统实现 5.1相关数据库建立 该系统涉及商品进销存管理,人员管理等,相应数据库建立语句如下: /*----------创建数据库----------*/ create
32、 database SuperMarketdb on primary ( name=SuperMarketdb, filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\SuperMarketdb.mdf', size=100MB, maxsize=200MB, filegrowth=20MB ) log on ( name=SuperMarketlog, filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\SuperMarketdb.ldf'
33、 size=60MB, maxsize=200MB, filegrowth=20MB ) go /*----------创建基本表----------*/ use [SuperMarketdb] go /*创建交易表*/ CREATE TABLE Dealing ( DealingID int identity(1,1) Primary key , DealingDate datetime NOT NULL , DealingPrice money NOT NULL , UserName varchar(25) NULL , MemberCar
34、d varchar(20) NULL ) GO /*创建厂商表*/ CREATE TABLE Factory ( FactoryID varchar(10) Primary key , FactoryName varchar(50) NOT NULL , FactoryAddress varchar(250) NULL , FactoryPhone varchar(50) NULL ) GO /*创建会员表*/ CREATE TABLE Member ( MemberID varchar(10) Primary key , MemberCard va
35、rchar(20) NOT NULL , TotalCost money NOT NULL , RegDate datetime NOT NULL ) GO /*创建商品信息表*/ CREATE TABLE MerchInfo ( MerchID int identity(1,1) Primary key , MerchName varchar(50) Unique NOT NULL , MerchPrice money NOT NULL , MerchNum int NOT NULL , CautionNum int NOT NULL , PlanN
36、um int NOT NULL , BarCode varchar(20) Unique NOT NULL , SalesProPrice money NULL , SalesProDateS datetime NULL , SalesProDateE datetime NULL , AllowAbate int NOT NULL , AllowSale int NOT NULL , FactoryID int NOT NULL , ProvideID int NOT NULL ) GO /*创建供应商表*/ CREATE TABLE Provide
37、 ProvideID varchar(10) Primary key , ProvideName varchar(50) NOT NULL , ProvideAddress varchar(250) NULL , ProvidePhone varchar(25) NULL ) GO /*创建销售表*/ CREATE TABLE Sale ( SaleID int identity(1,1) Primary key , MerChID int NOT NULL , SaleDate datetime NOT NULL , SaleNum int NOT
38、 NULL, SalePrice money NOT NULL ) GO /*创建入库表*/ CREATE TABLE Stock ( StockID int identity(1,1) Primary key , MerchID int NOT NULL , MerchNum int NOT NULL , MerchPrice money NULL , TotalPrice money NULL , PlanDate datetime NULL , StockDate datetime NULL, StockState int NOT NULL
39、 ) GO /*创建用户表*/ CREATE TABLE User ( UserID varchar(10) Primary key , UserName varchar(25) NOT NULL , UserPW varchar(50) NOT NULL , UserStyle int NOT NULL , ) 5.2前台销售系统的实现 登陆窗口: 图5-1登录窗口 条码录入窗口: 图5-2条码录入窗口 自动绘制小票窗口: 图5-3自动绘制小
40、票窗口 收银窗口: 图5-4收银窗口 5.3后台管理系统的实现 登陆窗口: 图5-5登陆窗口 后台管理窗口: 图5-6后台管理窗口 图5-7后台管理窗口 6 系统测试 6.1测试说明 完成编码和界面实现后,并不代表就完成了整个系统的制作,接下来就要对超市销售管理系统的功能和稳定性进行软件测试,尽量测试出设计中不合理的部分,并及时作出修改,完善系统。本系统采用黑盒测试,测试方
41、案包括功能测试、输入错误信息、输入不合理数据等,从而检测系统是否能够执行预计功能以及对错误信息是否具有识别功能。 6.2测试项目 (1)前台销售模块测试 主机接受用户输入的各种条形码信息(主机需要实现条形码扫描的快速录入方法)然后经网络传送给服务器。计算出账单,打印购物单,收钱后开发票。(2)后台进货管理模块测试 主机输入货物信息表,输出为打印采购单。并且能够实现相关的查询信息的功能。 (3)后台销售管理模块测试 接受由服务器程序经网络传送到主机的销售信息的表格, 输出销售情况的库存信息,以及各个商品的销售排行榜,支持销售查询功能。 (4)后台库存管理模块
42、测试 实现查询,插入,更改,删除商品信息的功能。 (5)后台人员管理模块测试 实现会员信息,用户管理信息的查询,插入,更改,删除功能。 6.3测试用例 1.用户登陆测试输入 测试用例1 正确输入 【输入】用户lc 密码lc 测试用例2 无该用户 【输入】用户aa 密码aa 测试用例3 密码错误 【输入】用户lc 密码aa 测试用例3 无输入 【输入】用户 密码 用户登陆测试输出 测试用例1 正确输入输出 【期望输出】登入成功显示前台销售管理窗体 【实际输出】登入成功显示前台销售管理窗体 测试用例2 无该用户 【期望输出】提示用户名或密码
43、错误 【实际输出】提示用户名或密码错误 测试用例3 密码错误 【期望输出】提示用户名或密码错误 【实际输出】提示用户名或密码错误 测试用例3 无输入 【期望输出】提示用户名或密码错误 【实际输出】提示用户名或密码错误。 2.商品录入测试输入 测试用例1 正确输入 【输入】条形码:001 商品名称:可口可乐 价格:2.0 测试用例2 以存在的商品 【输入】条形码: 1000001 商品名称:矿泉水 价格:2.0 测试用例3 需要录入的商品信息缺少或不合法 【输入】条形码:空 商品名称:可口可乐 价格:2.0 商品录入测试输出 测试用例
44、1 正确输入 【期望输出】商品录入成功加入商品列表 【实际输出】商品录入成功加入商品列表 测试用例2 以存在的商品 【期望输出】提示商品已经存在 【实际输出】提示商品已经存在 测试用例3 需要录入的商品信息缺少或不合法 【期望输出】提示缺少信息/不合法焦点转移 【实际输出】提示缺少信息/不合法焦点转移。 前台收银测试输入 测试用例1正确输入 【输入】实收50 测试用例2输入比应收的少 【输入】实收10 测试用例3输入非数字 测试用例4没有输入数字 【输入】实收 前台收银测试输出 测试用例1正确输入 【期望输出】应找钱数显
45、示的标签上 【实际输出】应找钱数显示的标签上 测试用例2输入比应收的少 【期望输出】提示输入错误所买货物价格高于所输入的数目请检查 【实际输出】提示输入错误所买货物价格高于所输入的数目请检查 测试用例3输入非数字 【期望输出】请输入数字 【实际输出】请输入数字 测试用例4没有输入数字 【期望输出】没有输入数字请检查 【实际输出】没有输入数字请检查 3.商品查询测试输入 测试用例1正常 【输入】条形码1000001 测试用例2无该商品 【输入】条形码1010001 商品查询测试输出 测试用例1正常 【期望输出】商品列表中显示该
46、商品商品名为“矿泉水” 【实际输出】商品列表中显示该商品商品名为“矿泉水” 测试用例2无该商品 【期望输出】商品列表中为空 【实际输出】商品列表中为空 6.4 软件测试结论 上述的三种类型的输入,输出测试,软件的能力已到达客户的要求,各项结果均以得到充分的测试。在注册用户时对输入数据的不符合以及错误的格式输入都能做出测试对价格进行调整时对输入的不符合数据以及错误格式能做出测试增加商品信息时也能做出正常的测试但是当输入的数据过大或者字符长度过长时可能会使程序发生中断而停止执行。陈述为了把测试数据加工成便于评价的适当形式使得测试结果可以同已知结果进行比较而要用到的转换处理技术如
47、手工方式或自动方式如果是用自动方式整理数据还要说明为进行处理而要用到的硬件、软件资源。阶段测试过程中共发现软件缺陷,经过改正的代码消除了所有以确认的软件缺陷并通过了回归测试。因测试条件所限,未能进行软件的确认测试和系统测试 7总结 7.1小组总结 和传统管理模式相比较,使用本系统,毫无疑问会大大提高超市的运作效率,辅助提高超市的决策水平,管理水平,为降低经营成本, 提高效益,减少差错,节省人力,减少顾客购物时间,增加客流量,提高顾客满意度,增强超市扩张能力, 提供有效的技术
48、保障。传统的超市管理,主要以人工为主,不但费时费力,风险也不小。21世纪,超市销售的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。技术的提升和管理的升级是销售业的竞争核心。该超市管理系统将用于各种超市的商品进出货,消费者信息和职工信息的管理,实现以计算机辅助形式代替传统的手工查询记录形式,减轻超市管理人员的劳动强度,提高工作质量和效率,从而使超市管理更加合理化和科学化。由于开发者能力有限,加上时间仓促,本系统难免会出现一些不足之处,例如本系统只适合小型超市使用,不能适合中大型超市使用超市管理系统涉及范围宽,要解决的问题多,功能复杂,实现困难,但由
49、于限于时间,本系统只能做出其中的一部分功能。 7.2个人总结 王普德个人总结: 通过对可行性的研究、前台销售模块,系统的实现三个模块的设计。让我明白了,丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极
50、度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。 多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。 这次课程设计做的是小型超市管理系统,经过这几天的上网查找和编译,我发现自己在各个方面






