《软件工程超市销售管理系统.docx》由会员分享,可在线阅读,更多相关《软件工程超市销售管理系统.docx(36页珍藏版)》请在三一办公上搜索。
1、装订线长 春 大 学 课程设计纸目录1 可行性研究21.1 引言21.1.1 编写目的21.1.2 项目背景21.1.3术语定义21.2 可行性研究31.2.1 项目要求31.2.2 项目目标31.2.3可行性分析31.2.4结论42 需求分析42.1需求陈述42.1.1 需求获取42.1.2功能需求42.1.3 需求总结52.2 功能分析62.2.1零售前台管理系统功能:62.2.2后台管理系统功能62.3 需求提炼分析建模73 概要设计113.1功能模块划分113.2.流程图113.2.1后台管理系统133.3 E-R模型转化为对象模型144 详细设计184.1前台销售模块184.2后台进
2、货管理模块204.3后台销售管理模块204.3.1模块用例图:204.3.2模块用例程序流程图:214.4后台库存管理模块224.4.1模块用例图:224.5后台人员管理模块234.5.1会员管理功能用例图:234.5.2员工销售管理功能用例图:234.6模块用例程序流程图:245 系统实现255.1相关数据库建立255.2前台销售系统的实现275.3后台管理系统286. 系统测试306.1测试项目306.2测试结果316.2 软件需求测试结论326.3 测试结果327总结327.1小组总结327.2个人总结33超市销售管理系统第七小组学号姓名具体模块成绩备注可行性的研究前台销售模块系统的实现
3、 需求分析 后台进货管理后台销售管理系统的实现 概要设计 后台库存管理后台人员管理系统测试 概要设计 用例流程图 系统测试1 可行性研究1.1 引言 可行性研究的目的是为了在对问题进行研究的同时,以最小的代价在最短的时间内确定问题是否可解,以保证后续的工作能有效完成。在此项目中,通过全面的信息采集和处理,辅助提高超市的决策水平,大大提高超市的运作效率。为超市的管理人员带来的较大的方便。经过对此项目进行详细调查研究,初拟系统实现报告,对软件开发中将要面临的问及其解决方案进行初步设计及合理安排。明确开发风险及其所带来的经济效益。为降低经营成本,提高效益,增强超市扩张力,提供有效的技术保障。 现在的
4、超市已经成为人们日常生活中不可缺少的一个组成部分,它的存在给人们的生活带来了很大的方便。做为超市内部的人员,商品和销售的管理工作,对超市的成功经营十分重要。然而传统的管理,主要以人工为主,不但费时费力,风险也较大。21世纪,超市销售的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。技术的提升和管理的升级是销售业的竞争核心。该超市管理系统将用于各种超市的超市进出货,消费者信息和职工信息的管理,实现以计算机辅助形式代替传统的手工查询记录形式,减轻超市管理人员的劳动强度,提高工作质量和效率,从而使超市管理更加合理化和科学化。1.2 可行性研究 针对超市的
5、特点,为了帮助超市经营者节约人力开销有设备开销,提高超市的处理速度和竞争力,扩大超市的经济效益,我们将开发以下子系统:前台销售系统、后台管理系统,其中这两个子系统又包含其它一些子功能。采用这种方法来对整个超市系统进行高效的管理,达到自动化、科技化的目的。管理可行性分析:超市的经营者大多具备电脑基本操作知识,对于必要的专业操作经短期培训即可;管理基础工作和各项管理制度比较健全,执行严格,原始数据采集完整,保存良好。经济可行性分析:超市管理系统的投入,能够提高工作效率,减少工作人员,从而减少人力资本的投入,根据核算,系统投入三个月后,就能够基本收回开发系统的投资,从经济角度来说,本系33统开发完全
6、必要。技术可行性分析本系统涉及到的技术因素:管理系统的开发方法。使用结构化和面向对象开发方法开发软件系统编程、数据库技术。开发小组能使用Java编程同时熟悉数据库相关知识运行上的可行性:操作简单:简单的操作规则使操作人员能轻松掌握。查询方便:用户可设定任意条件和任意的查询项目进行检索。统计灵活:任意条件下任意项目的产品入库时间、数量等的统计及查询项目均可进行交叉统计。在经济,技术,管理和社会因素方面都有可行性,可以确定本系统的开发完全必要,而且是可行的,可以立项开发。2 需求分析2.1功能需求分析1.零售前台管理系统功能(1)商品录入:根据超巿业务特点制定相关功能,可以通过输入唯一编号、扫描条
7、形码、商品名称等来实现精确或模糊的商品扫描录入。该扫描录入方法可以充分保证各种电脑操作水平层次的人员均能准确快速地进行商品扫描录入。(2)收银业务:通过扫描条形码或者直接输入商品名称(对于同类多件商品采用一次录入加数量的方式)自动计算本次交易的总金额。在顾客付款后,自动计算找零,同时打印交易清单(包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号)。如果顾客是本店会员并持有本人会员卡,则在交易前先扫描会员卡,并对所购物品全部实行9.5折优惠,并将所购物品的总金额累计到该会员的总消费金额中。 会员卡的有效期限为一年,满一年未续卡者,该会员卡将被注销。(
8、3)安全性:OS登陆、退出、换班与操作锁定等权限验证保护;断电自动保护最大限度防止意外及恶意非法操作。 (4)独立作业:有的断网收银机在网络服务器断开或网络不通的情况下,收银机仍能正常作业2.后台管理系统功能(1)进货管理: 根据销售情况及库存情况,自动制定进货计划(亦可手工制定修改),可以避免盲目进货造成商品积压。 按计划单有选择性地进行自动入库登记。 综合查询打印计划进货与入库记录及金额。(2)销售管理: 商品正常销售、促销与限量、限期及禁止销售控制。 综合查询各种销售明细记录、各地收银员收银记录以及交结账情况等。 按多种方式统计生成销售排行榜,灵活察看和打印商品销售日、月、年报表。(3)
9、库存管理: 综合查询库存明细记录。 库存状态自动告警提示。如库存过剩、少货、缺货等。软件为您预警,避免库存商品积压损失和缺货。 库存自动盘点计算。(4)人员管理: 员工、会员、供货商、厂商等基本信息登记管理。 员工操作权限管理。 客户销售权限管理。2.2 需求总结客户需求:商品品种多样,商品易找,尽量便宜。商家需求:必须具备记录仓库存货、销售以及进货情况,通过该系统了解超市进货渠道、商品单价、数量,库存商品的种类、数量,销售商品种类、价格、数量,以便管理员根据以上信息作出经营管理决策。超市领域专业人士:在性能方面要求系统核算准确,使实存商品、销售商品与所记帐目一致,能够被超市长期有效使用。数据
10、主要来自于入库单、发票,超市销售在营业期间内一直发生,数据也就一直变化。销售商品后开出发票,并且要显示商品价格数额。超市数据资料有些属内部资料,不能为外人所知,系统须有保密措施,设置密码。系统分析员:查看资料需输入正确密码,销售人员销售货物需输入代号才能打开收银柜。万一泄露密码,应设修改密码的程序,同时密码不能过于简单。2.3分析建模使用图形化的分析建模,包括用例图,数据流图,E-R图,其对应图如下:超市管理总系统用例图:图2-1 超市管理总系统用例图超市工作人员工作范围:(1)员工(营业员):l 通过商品条形码扫描输入商品到购买清单l 操作软件计算交易总金额l 操作软件输出交易清单l 对会员
11、进行会员卡扫描以便打折(2)超市经理:l 操作软件录入商品,供货商,厂商l 操作软件制定进货计划l 查询打印计划进货与入库记录l 操作软件控制商品销售与否l 查询打印销售情况l 操作软件生成销售排行榜l 查询库存明细记录l 根据软件发出的库存告警进行入货l 操作软件进行盘点计算(3)总经理:l 基本信息登记管理l 员工操作权限管理l 客户销售权限管理超市管理系统DFD图:图2-2 超市管理系统DFD图超市管理系统CDM模型:图2-3 超市管理系统CDM模型系统E-R图:(1)超市中的所有用户(员工)可以销售多种商品,每种商品可由不同用户(工)销售,每个顾客可以购买多种商品,不同商品可由不同顾客
12、购买;(2)每个供货商可以供应多种不同商品,每种商品可由多个供应商供应。 图2-4系统E-R图3 概要设计3.1系统功能模块图超市销售管理系统前台销售系统后台管理系统商品录入收银业务进货管理销售管理库存管理人员管理图3-1系统功能模块图3.2流程图前台销售系统流程图: 图3-2前台销售流程图后台管理系统用例图:图3-3 后台管理系统用例图3.3 E-R模型转化为对象模型利用powerdesigner软件,从PDM模型中正向工程,生成关系模型,用SQL表示如下(由于篇幅限制,未全部给出):/*=*/* DBMS name: Microsoft SQL Server 2005 */* Create
13、d on: 2011/7/2 21:43:34 */*=*/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_供货_供货_商品goif exists (select 1 from sys.sysreferences r join sys.sysobjects o
14、 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/*=*/* Table: 会员 */*=*/create table 会员 ( 会员ID char(12) not null, 累计金额 money not null, 注册时间 datetime not null, constraint PK_会员 primary key nonclustered (会员ID)
15、go/*=*/* Table: 供货 */*=*/create table 供货 ( 商品ID char(20) not null, 供货ID char(12) not null, 供货日期 datetime not null, 供货金额 money not null, constraint PK_供货 primary key (商品ID, 供货ID)go/*=*/* Index: 供货_FK */*=*/create index 供货_FK on 供货 (商品ID ASC)go/*=*/* Table: 供货商 */*=*/create table 供货商 ( 供货ID char(12) n
16、ot null, 供货商名称 varchar(20) null, 供货商地址 varchar(30) null, 供货商电话 varchar(11) null, constraint PK_供货商 primary key nonclustered (供货ID)go/*=*/* Table: 厂商 */*=*/create table 厂商 ( 厂商ID varchar(12) not null, 厂商名称 varchar(20) null, 厂商地址 varchar(30) null, 厂商电话 varchar(11) null, constraint PK_厂商 primary key no
17、nclustered (厂商ID)go/*=*/* Table: 商品 */*=*/create table 商品 ( 商品ID char(20) not null, 商品名 varchar(15) not null, 商品价格 money not null, 允许打折 bit null, 促销价格 money null, 允许销售 bit null, constraint PK_商品 primary key nonclustered (商品ID)go/*=*/* Table: 消费 */*=*/create table 消费 ( 商品ID char(20) not null, 会员ID ch
18、ar(12) not null, 消费金额 money not null, 购买日期 datetime not null, constraint PK_消费 primary key (商品ID, 会员ID)goalter table 供货 add constraint FK_供货_供货2_供货商 foreign key (供货ID) references 供货商 (供货ID)goalter table 消费 add constraint FK_消费_消费_商品 foreign key (商品ID) references 商品 (商品ID)goalter table 生产 add constra
19、int FK_生产_生产_商品 foreign key (商品ID) references 商品 (商品ID)goalter table 销售 add constraint FK_销售_销售_客户 foreign key (客户ID) references 客户 (客户ID)go4 详细设计4.1前台销售模块模块用例图:图4-1模块用例图模块用例程序流程图:Start扫描条形码录入信息写入购物单N是否完成录入?Y生成购物单计算商品总额商品信息表Y是否是会员?会员信息表计算会员卡打折厚的总额找零N输入实收费用信息N是否等于总费用?Y商品信息表从库存中减去该商品交易信息表打印发票Return4-2
20、模块用例程序流程图4.2后台进货管理模块模块用例图:图4-3模块用例图4.3后台销售管理模块模块用例图:图4-4模块用例图模块用例程序流程图:图4-5模块用例程序流程图图4-6模块用例程序流程图 图4-7模块用例程序流程图4.4后台库存管理模块模块用例图:图4-8模块用例图模块用例程序流程图:图4-9模块用例程序流程图图4-10模块用例程序流程图4.5后台人员管理模块会员管理功能用例图:图4-11会员管理功能用例图模块用例程序流程图:图4-13模块用例程序流程图图4-14模块用例程序流程图5 系统实现5.1相关数据库建立该系统涉及商品进销存管理,人员管理等,相应数据库建立语句如下:/*-创建数
21、据库-*/create database SuperMarketdbon primary(name=SuperMarketdb,filename=C:Program FilesMicrosoft SQL ServerMSSQLDataSuperMarketdb.mdf,size=100MB,maxsize=200MB,filegrowth=20MB)log on(name=SuperMarketlog,filename=C:Program FilesMicrosoft SQL ServerMSSQLDataSuperMarketdb.ldf,size=60MB,maxsize=200MB,fi
22、legrowth=20MB)go/*-创建基本表-*/use SuperMarketdbgo/*创建交易表*/CREATE TABLE Dealing (DealingID int identity(1,1) Primary key ,DealingDate datetime NOT NULL ,DealingPrice money NOT NULL ,UserName varchar(25) NULL ,MemberCard varchar(20) NULL) GO/*创建厂商表*/CREATE TABLE Factory (FactoryID varchar(10) Primary key
23、 ,FactoryName varchar(50) NOT NULL ,FactoryAddress varchar(250) NULL ,FactoryPhone varchar(50) NULL )GO/*创建会员表*/CREATE TABLE Member (MemberID varchar(10) Primary key ,MemberCard varchar(20) NOT NULL ,TotalCost money NOT NULL ,RegDate datetime NOT NULL )GO/*创建商品信息表*/CREATE TABLE MerchInfo (MerchID in
24、t identity(1,1) Primary key ,MerchName varchar(50) Unique NOT NULL ,MerchPrice money NOT NULL ,MerchNum int NOT NULL ,CautionNum int NOT NULL ,PlanNum int NOT NULL ,BarCode varchar(20) Unique NOT NULL ,SalesProPrice money NULL ,SalesProDateS datetime NULL ,SalesProDateE datetime NULL ,AllowAbate int
25、 NOT NULL ,AllowSale int NOT NULL ,FactoryID int NOT NULL ,ProvideID int NOT NULL) GO/*创建供应商表*/CREATE TABLE Provide (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
26、(1,1) Primary key ,MerChID int NOT NULL ,SaleDate datetime NOT NULL ,SaleNum int NOT 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
27、,StockDate datetime NULL,StockState int NOT NULL) 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自动绘制小票窗口收银窗口:图5-4收银窗口5.3后台管理系统的实现登陆窗口:图5-5登陆窗口后
28、台管理窗口:图5-6后台管理窗口图5-7后台管理窗口6 系统测试6.1测试说明完成编码和界面实现后,并不代表就完成了整个系统的制作,接下来就要对超市销售管理系统的功能和稳定性进行软件测试,尽量测试出设计中不合理的部分,并及时作出修改,完善系统。本系统采用黑盒测试,测试方案包括功能测试、输入错误信息、输入不合理数据等,从而检测系统是否能够执行预计功能以及对错误信息是否具有识别功能。 6.2测试项目(1)前台销售模块测试主机接受用户输入的各种条形码信息(主机需要实现条形码扫描的快速录入方法)然后经网络传送给服务器。计算出账单,打印购物单,收钱后开发票。(2)后台进货管理模块测试主机输入货物信息表,
29、输出为打印采购单。并且能够实现相关的查询信息的功能。 (3)后台销售管理模块测试接受由服务器程序经网络传送到主机的销售信息的表格, 输出销售情况的库存信息,以及各个商品的销售排行榜,支持销售查询功能。(4)后台库存管理模块测试实现查询,插入,更改,删除商品信息的功能。(5)后台人员管理模块测试实现会员信息,用户管理信息的查询,插入,更改,删除功能。6.3测试用例6.2测试结果6.2.1 数据录入模块测试6.2.2 输入本次测试针对数据录入模块的测试,我们采用文档输入方式进行数据录入。针对错误信息,我们给出提示 本项测试所用到的输入数据类型有:a, 服务器错误,登录名密码正确b, 服务器正确,登
30、录名密码错误c, 服务器正确,登录名密码正确,数据库不存在d, 服务器正确,登录名密码正确,数据库存在e, 服务器正确,登录名密码正确,数据库存在,表已建立f, 服务器正确,登录名密码正确,数据库存在,表没有建好6.2.3输出a,输出:连接服务器错误b,输出:用户名或密码错误c,输出:创建数据库成功d,输出:数据库已存在e,输出:新建测试用例成功f,输出:测试用例已存在6.2.4过程 本系统测试采用边输入数据,边记录结果的方式,依次测试系统的各个输入测试要求直到输入完成6.2.5 前台销售模块测试6.2.6输入 本项测试所用到的输入数据类型有:a,条形码正确,数量合适b,条形码错误,数量合适c
31、,条形码正确但是不允许出售,数量合适d,条形码正确可以出售,数量过多6.2.7 输出a,输出:添加到购物单b,输出:条形码不存在c,输出:该商品不允许出售d,输出:该商品数量不足6.2.8 过程 本系统测试采用边输入数据,边记录结果的方式,依次测试系统的各个输入测试要求直到输入完成6.2 软件需求测试结论上述的三种类型的输入,输出测试,软件的能力已到达客户的要求,各项结果均以得到充分的测试。 6.3 测试结果在两个阶段测试过程中共发现软件缺陷20个,经软件开发人员确认的缺陷为20个,经过改正的代码消除了所有以确认的软件缺陷并通过了回归测试。因测试条件所限,未能进行软件的确认测试和系统测试。7总
32、结7.1小组总结和传统管理模式相比较,使用本系统,毫无疑问会大大提高超市的运作效率,辅助提高超市的决策水平,管理水平,为降低经营成本, 提高效益,减少差错,节省人力,减少顾客购物时间,增加客流量,提高顾客满意度,增强超市扩张能力, 提供有效的技术保障。传统的超市管理,主要以人工为主,不但费时费力,风险也不小。21世纪,超市销售的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。技术的提升和管理的升级是销售业的竞争核心。该超市管理系统将用于各种超市的商品进出货,消费者信息和职工信息的管理,实现以计算机辅助形式代替传统的手工查询记录形式,减轻超市管理人员
33、的劳动强度,提高工作质量和效率,从而使超市管理更加合理化和科学化。由于开发者能力有限,加上时间仓促,本系统难免会出现一些不足之处,例如本系统只适合小型超市使用,不能适合中大型超市使用超市管理系统涉及范围宽,要解决的问题多,功能复杂,实现困难,但由于限于时间,本系统只能做出其中的一部分功能。7.2个人总结个人总结:通过对可行性的研究、前台销售模块,系统的实现三个模块的设计。让我明白了,丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科
34、幻电影也是一个很好的途径。 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。多与别人交流。三人行必有我师,也许在一次和别人不经意的谈
35、话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。这次课程设计做的是小型超市管理系统,经过这几天的上网查找和编译,我发现自己在各个方面还有很多不足,希望经过这次的实践后,不断学习,努力充实自己,开拓眼界,转换思维,不断提升自身能力,具有更好的编程能力。个人总结:通过对需求分析、后台进货管理模块、后台销售管理模块、系统的实现四个模块的设计。让我知道了理论知识需要用实践来证明,亲身体验才能领悟软件工程的妙用。虽然软件工程这门课程没有安排太多的实验课时,但我课后花费了大量时间去实践。我感觉到学习这门课花费了大量的时间思考,从而换取了宝贵的经验。学习软件工程的过程是痛苦的,它已经不单纯是一种学习的目的,更重要是我是要培养一种学习的习惯学习这门课之前,虽然对软件工程的基本内容和概念有所了解,但是并没有充分意识到它的重要性,总是将它排列在诸多专业课和编程水平之后。软件工程是我们开设课程中最有吸引力的一门课,在