光盘商店管理系统需求分析.docx
《光盘商店管理系统需求分析.docx》由会员分享,可在线阅读,更多相关《光盘商店管理系统需求分析.docx(21页珍藏版)》请在冰豆网上搜索。
![光盘商店管理系统需求分析.docx](https://file1.bdocx.com/fileroot1/2023-2/24/f7ce1c5e-5dda-472c-a126-246393cb1488/f7ce1c5e-5dda-472c-a126-246393cb14881.gif)
光盘商店管理系统需求分析
光盘商店管理系统
面向对象系统分析
撰写时间:
2009年12月15日
版权所有:
软件工程实验第四小组
1.引言
1.1编写目的
光盘商店管理系统作为光盘商店管理人员管理商店的系统平台,因此,要求运用该系统能够使商店管理更加合理化、规范化、系统化。
为了设计一个更加完善的系统,我们必须对系统做一个详细的分析。
本次我们小组运用面向对象的分析方法,借助用例图、流程图和类图等形式,完成可行性研究报告,并且对问题域和系统责任进行分析和理解,对系统中的事物和它们之间的关系产生正确的认识,找出了系统所需的类和对象,定义这些类和对象的属性操作,以及它们之间形成的各种关系。
根据本小组之前完成的相关文档和图,包括可行性研究报告、用例图、流程图、发现对象类和建立类图等,在此,我们做了一个总结!
1.2项目背景
开发项目名称:
光盘商店管理系统。
项目任务提出者:
20071181班软件工程实验小组。
项目用户:
光盘商店管理人员。
实现项目单位:
20071181班软件工程实验小组
项目与其他软件,系统的关系:
本项目采用C/S模式,客户端的程序是建立在WindowsXP系统上以.net开发环境的应用程序,服务器端采用WindowsXP为操作系统的工作站,是采用SQL2000的为开发软件的数据库服务程序。
2.需求分析
2.1系统中的用例
需求分析的时候,我们清楚这个系统的责任,具体有哪些人参与其中,每个人的责任和工作以及权限是什么,在此,为了把这些内容描述出来,我们采用了用例图,每个用例表示一个工作内容。
2.1.1、系统中的参与者
图2.1.1参与者
2.1.2、仓库管理员的用例
仓库管理员对光盘商店的仓库进行进出库的管理,主要工作有库存管理与采购管理,我们可以得到仓库管理员的用例图如下:
图2.1.2仓库管理员的用例图
2.1.3、老板的用例
老板也是系统中的用户,可以设置多个不同的老板用户,它在系统中的执行的权限即实际老板的权限,主要工作是:
对系统中各种数据进行查询和分析并做出商店下一阶段的计划或经营决策、对会员进行管理。
因此我们可以得出老板的用例图如下:
图2.1.3老板的用例图
2.1.4、销售员的用例
作为商店,销售员当然是必不可少的,而且一般要设置多个,负责商店的一切销售事物,具体工作有:
光盘销售,光盘订购,光盘出租和会员登记。
因此我们可得出销售员的用例图如下:
图2.1.4销售员的用例图
2.1.5、系统管理员的用例
系统管理员的主要工作有:
用户管理和数据备份。
其用例图如下:
图2.1.5系统管理员的用例图
2.1系统流程
用例图只是描述了系统中的各项业务需求,以及各个角色在系统中的责任与工作,但是并未描述一个角色在做某个工作的时候是如何进行的,因此,列出用例只是我们需求分析的第一步,我们还应该对这些工作的流程进行描述,为此,我们引入了以下的系统流程图。
明确系统流程,我们必须首先确定系统的范围,由用例图进行分析和归纳,我们可以把本光盘商店管理系统分为:
用户管理模块,光盘销售模块,会员信息管理模块,仓库管理模块,系统维护模块,数据查询模块。
2.2.1、用户管理模块
本模块主要是对系统中的管理用户进行一系列管理。
包括用户登录注销、增加删除和修改。
该模块又可分为2个子模块:
·用户登录
·用户信息管理
其中,在用户登录引入了验证码。
验证机制利用系统自动产生随机数法,较有效的防止了穷举法。
用户密码要求加密,加密方法引入MD5,防止直接打开数据库读取密码。
当输入用户ID和密码、验证码其中一项错误时,就返回错误信息,回到登录界面。
由以上描述我们得出本模块的流程如下:
图2.2.1用户管理模块流程图
2.2.2、光盘销售模块
本模块主要是为销售员提供销售管理
该模块又可分为三个子模块:
·商品销售
·商品出租
·商品订购
该子系统如下图所示:
图2.2.2光盘销售模块的流程图
2.2.3、会员信息管理模块
本模块主要是对商店的会员进行管理,包括增加,删除,修改,查询,升级。
该子系统如下图所示:
图2.2.3会员信息管理模块
2.2.4、仓库管理模块
本模块主要是对仓库进行管理,主要包括订货,入库。
图2.2.4仓库管理模块
2.2.5、数据查询模块
本模块主要是对数据库中的数据进行查询,包括报表汇总,盈亏情况,商品销量趋势等。
该子系统如下图所示:
图2.2.5数据查询模块
2.3系统中的对象类
以上我们已经把系统中的用例以及系统的核心流程描述出来了,接下来我们就必须根据用例图和系统流程图把系统中的名词(即对象类)提取出来,并将其尽享抽象,得出系统中涉及到的各个类。
2.3.1、系统中的对象
图2.3.1系统中的对象
2.3.2、系统中的类
对2.3.1中所提到的对象进行抽象,可得到系统中的类如下:
图2.3.2系统中的类
2.1系统核心数据流
以上我们已经把系统中的类分析出来了,那么接下我的分析工作就转移到分析类鱼类之间的关系了,那么我们要如何来得出获得类与类之间的关系呢?
为了解决这个问题,我们引入了数据流图,将系统中的数据流分析出来,并从中分析出个各类之间的关系。
2.4.1、系统最顶层数据流
最顶层数据流图描述的是系统中各个参与者与系统之间的关系,由某个参与者发出的数据通过光盘商店管理系统之后种植与哪一个参与者。
但此时并不考虑数据在系统中是如何流动的,而只是说明是和人将何种数据流入系统,又是何种数据从系统中流出到何人。
那么通过分析,我们得出系统最顶层数据流图如下:
图2.4.1最顶层数据流图
2.4.2、系统详细数据流
对系统最顶层数据流图中的各个数据流进行细化,将每个数据流在系统中的流动细节详细的描述出来,即何时在何地产生何数据通过何路径于何时流向何地。
经过分析,我们可以得出系统详细数据流图如下:
图2.4.2系统详细数据流图
2.5系统中的类图
类图是面向对象分析方法最重要的部分,之前的分析都是为了创建类图,至此我们已经分析了系统用例,参与者,系统流程,对象类和核心数据流,最后我们就可以根据以上的分析结果,特别是对象类和核心数据流两个部分,来创建类图。
2.5.1、类图
以下便是我们的类图:
图2.5.1类图
2.5.2、各个类的详细描述
Store(仓库管理员)
BoolstoreLackOfGoods(Tablet):
缺货登记
输入:
存储量低于下限的光盘的明细表
输出:
登记成功或失败及可能导致失败的原因
BoolstoreStock(Tablet):
采购
输入:
所销售的光盘的明细表
输出:
交易完成
BoolstoreWriteDB(Tablet):
入库
输入:
所入库的光盘的明细表
输出:
相关数据表更新完成
BoolstoreUpdPrice(stringa,doubleb):
价格更新
输入:
光盘编号,价格
输出:
更改成功或失败及失败的原因
Warn(报警)
WarnCDID(光盘编号)=int(15),对应光盘类的光盘编号属性,用于区别不同的光盘
WarnMaxSize(上限)=int(15),某种光盘库存的上限
WarnMinSize(下限)=int(15),某种光盘库存的下限
VoidWarnLackOfGoods(inta):
缺货报警
If(CDNum提示缺货;
If(CDNum>WarnMaxSize):
提示直销;
Managar(系统管理员)
BoolManagarDataCopy():
数据备份
输入:
备份指令
输出:
成功信息或出错提示
BoolManagarAddUser(Usera):
增加用户
输入:
用户资料
输出:
成功信息或出错提示
BoolManagarDelUser(stringa):
删除用户
输入:
用户编号或者姓名
输出:
成功信息或出错提示
SellAffairs(销售事件)
SellBillNum(销售单号)=int(15),每次交易所生成的流水单号,唯一标识一次交易
SellType(销售类型)=char(20),为销售,出租,订购中的一种
SellDate(销售日期)=char(16),表本次交易的日期
SellerID(销售员编号)=int(15),完成某次交易的销售员的编号
DoubleSellCountPrice(stringa,stringb):
销售计费
输入:
商品ID+商品数量Num
输出:
商品总价格TotalPrice
VoidSellWriteDB(stringa,stringb,doublec):
商品入账
输入:
商品ID+商品数量Num+实收钱数RealPriceIn
输出:
发票信息BillInformation+退款钱数PriceOut
VoidSellPrint():
打印发票
Print:
购买商品信息列表GoodList;
VoidSellReadGoodsList(stringa):
查看明细
输入:
商品GoodsID或商品名称GoodsName或商品类别GoodsType或商品voidGoodsPrice():
查询价格
输出:
商品详细信息列表GoodsDetailsList;
BoolSellCancel(stinga):
取消交易
输入:
交易单号SellBillNum+取消交易请求
输出:
取消交易成功提示;
Vip(会员)
VipName(会员姓名):
char,会员的标识符
VipCardNo(会员卡号):
string,每张会员卡的唯一标识符
VipLV(会员等级):
int,决定会员可享有哪些优惠
VipExpenseAmount(消费金额):
double,会员的消费记录
VipRegistrationTime(注册时间):
string,会员注册时间
VipIDNo(身份证号):
string,用于确认会员身份
BoolVipHandleOfLose(stringa):
挂失补办
输入:
身份证号或会员卡号+补办申请
输出:
提示信息
VoidVipConsume(doublea):
消费
输入:
消费金额
输出:
累积消费金额+会员等级+可享受的优惠
BoolVipMakeVipCard(TypeViptv):
办理会员卡
输入:
会员信息
输出:
提示信息
Seller(销售员)
BoolSellerSell(stringa,intb,doublec,stringd):
销售
输入:
光盘号或光盘名+销售数量+实收金额+会员卡号
输出:
光盘相关信息+出错提示或实际应找赎的金额
DoubleSellerReturnRegister(stringa,intb):
退货登记
输入:
光盘名或光盘号+退货数量
输出:
提示信息+实际应退金额
BoolSellerRejectRegister(stringa,intb):
废品登记
输入:
光盘名或光盘号+废品数量
输出:
提示信息
VoidSellerWriteOrderInf(stringa,intb,doublec):
订购信息
输入:
光盘名或光盘号+订购数量+实收押金
输出:
打印订购单
Boss(老板)
VoidbossSelRevenue(Timet1,Timet2):
收入查询
输入:
选择某一段时间,比如某月某年或者时间的起始;
输出:
显示符合条件的收入报表;
VoidbossSelVip(stringa):
会员查询
输入:
会员编号;
输出:
会员的信息(注册时间、会员等级和消费金额等);
VoidbossUpdVip(TypeViptv):
修改会员信息
输入:
修改后的信息;
输出:
将修改后的信息存入数据库;
BoolbossDelVip(stringa):
删除会员
输入:
会员编号;
输出:
将制定的会员从数据库中删除;
VoidbossSelSell(Timet1,Timet2):
销售情况查询
输入:
选择某一段时间(比如某月某年和时间的起始);
输出:
显示符合条件的各种商品销售情况报表;
VoidbossSelStock(Timet1,Timet2):
采购情况查询
输入:
选择某一段时间(比如某月某年和时间的起始);
输出:
显示符合条件的商品采购情况报表;
User(用户)
userNo(用户编号):
string,用户的编号,全局唯一
userPwd(用户密码):
string,用户的密码
userName(用户姓名):
string,用户的姓名
userSex(用户性别):
string,用户的性别
userAge(用户年龄):
int,用户的年龄
VoidAdduser(stringa,stringb,stringc,intd):
增加用户
输入:
userNo,userName,userSex,userAge
输出:
将增加的用户存入数据库
BoolDeluser(stringa):
删除用户
输入:
userNo
输出:
数据库中该用户已被删除
VoidUpduser(stringa):
修改用户
输入:
userNo
输出:
将修改后的用户存入数据库
TypeUserSeluser(stringa):
查询用户
输入:
userNo
输出:
userNo,userName,userSex,userAge
BoolOnsystem(stringa,stringb):
登录系统
输入:
userNo,userPwd
输出:
进入有关部门
BoolOutsystem():
退出系统
CD(光盘)
CDNo(光盘编号):
string,光盘的编号,用来区别不同光盘;
CDName(光盘名称):
string,光盘的名称,用来描述光盘的内容;
CDStyle(光盘种类):
string,光盘的种类;
CDPrice(光盘单价):
double,光盘的单价;
CDHirePrice(光盘出租单价):
double,光盘出租时的单价;
CDInforStore(库存信息表):
double,库存中光盘的信息;
TypeCDCDSelInfor(stringa):
光盘销售信息查询
输入:
光盘编号
输出:
光盘名称,光盘种类,光盘单价和出租价以及库存量
BoolCDUpdStore(TypeCDcd):
修改光盘库存信息
输入:
修改后的信息;
输出:
将修改后的信息存入数据库;
VoidCDOperatorStyle(TypeCDcd):
光盘种类操作
输入:
增加、删除、修改和查看光盘种类
输出:
更新数据库中的光盘信息
Stock(采购事件)
stoNo(采购单号):
string,采购单号,全局唯一
stoMan(经手人):
string,经手人
stoDate(日期):
decimal,采购的日期
stoBwrite(老板签名):
string,老板的签名
DoublestoTally(stringa):
计账
输入:
stoNo
输出:
计算采购光盘的总金额
DoublestoOuttally(stringa):
出账
输入:
stoNo
输出:
计算采购支出的总金额
VoidstoPsell(stringa):
打印销售单
输入:
stoNo
输出:
打印该采购单号的销售单
VoidstoSee(stringa):
查看明细
输入:
stoNo
输出:
显示光盘信息
VoidstoAstock(stringa):
取消采购
输入:
stoNo
输出:
取消采购
3.小结
经过了一个学期的学习和讨论,我们小组成员从中受益匪浅,不仅对本系统的认识也逐步加深,同时,也掌握了面向对象的系统分析的基本方法,学会了合作的精神。
在此,我们归纳汇总了我们小组的学习过程的主要内容,希望能加深对面向对象学习和对本系统认识的印象,当然,也存在不足之处,希望大家能对我们的小结提出的宝贵的意见和建议!
谢谢!