软件工程超市管理系统1.docx
《软件工程超市管理系统1.docx》由会员分享,可在线阅读,更多相关《软件工程超市管理系统1.docx(25页珍藏版)》请在冰豆网上搜索。
软件工程超市管理系统1
项目应用开发
说明书
项目名称:
超市信息管理系统
开发人员:
蒋伟成、张连升、胡晨
廖兴立、张义、刘浩
*******
班级:
计算机11-01BJ班
专业:
计算机科学与技术
开发时间:
2013.11.11-2013.12.27
1可行性分析…………………………………………………………1
1.1引言……………………………………………………………1
1.2可行性分析的前提……………………………………………1
1.3可行性分析……………………………………………………1
1.4结论……………………………………………………………1
2需求分析……………………………………………………………1
2.1引言……………………………………………………………1
2.2综合要求………………………………………………………1
2.3数据模型………………………………………………………1
2.4功能模型………………………………………………………1
2.5活动模型………………………………………………………1
2.6层次方框图……………………………………………………1
2.7数据字典………………………………………………………1
2.8IPO表…………………………………………………………1
3总体设计……………………………………………………………1
3.1数据结构设计…………………………………………………1
3.2数据库逻辑设计………………………………………………1
3.3数据库物理设计………………………………………………1
3.4界面设计………………………………………………………1
4详细设计……………………………………………………………1
5代码编程……………………………………………………………1
6测试设计……………………………………………………………1
1.可行性分析
1.1引言
编写目的
在此项目中,通过全面的信息采集和处理,辅助提高超市的决策水平,大大提高超市的运作效率。
为超市的管理人员带来的较大的方便。
经过对此项目进行详细调查研究,初拟系统实现报告,对软件开发中将要面临的问及其解决方案进行初步设计及合理安排。
明确开发风险及其所带来的经济效益。
为降低经营成本,提高效益,增强超市扩张力,提供有效的技术保障。
项目背景
在这个科技发展迅速的、竞争激烈的社会,超市销售的竞争也进入到了一个全新的领域,而是技术的竞争、管理的竞争、人才的竞争。
技术的提升和管理的升级是销售业的竞争核心。
能够以最小的投入获得更大的收益才能在这遍地成林的超市竞争中生存,所以开发一款经济适用的超市管理系统是势在必行的。
参考资料
[1]《软件工程》,马林,马雪英,王衍,中国铁道出版社;
1.2可行性分析的前提
基本要求
功能要求:
提高销售人员对商品的销售效率,对销售记录进行统计分析,对商品的库存以及进货进行有效的管理。
性能要求:
响应快速,系统资源占用少。
输入要求:
简单必要的键盘输入,方便快捷的鼠标点击。
输出要求:
直观精简的界面显示。
项目目标
本系统力求让超市的运营便捷化、系统化、高效化,从而极大地节约人力和物力资源,扩大超市的经济效益,提高超市的竞争力。
通过对超市经营方式的考察,为了更好地贴切用户的使用,本系统划分为两个子系统:
前台销售系统、后台管理系统,其中这两个子系统又包含其它一些子功能。
采用这种方法从而实现对超市整个的情况进行高效的管理,让超市达到自动化、科技化的目标。
条件和限制
运行环境:
CPU奔腾4以上,内存512M以上,目前Windows的主流操作系统。
开发环境:
SQLServer2005数据库和MicrosoftVisualC++6.0编程环境。
时间限制:
2013年11月11日至2013年12月27日。
人员要求:
6人。
1.3可行性分析
技术可行性
从技术条件来看,我们现在身处的信息化社会信息技术快速发展,信息管理技术也日趋完善,使我们有条件来完成超市管理系统的开发。
随着信息技术的发展,特别是网络技术和数据库系统的发展,在软件开发方面,可以采用现行主流的开发技术,硬件技术方面则可以充分利用日益增强的存储能力,通讯能力和处理速度来保证系统开发技术的准备。
现在的超市对员工的要求比较高,从管理到销售,都要求具有一定的计算机基础,所以在新系统投入使用时,只要对员工进行少量的培训,系统的功能和使用方法就基本上能够使系统顺利运行。
经济可行性
超市信息管理系统的投入,能够提高工作效率,减少工作人员,从而减少人力资本的投入,并且该系统满足以下两个特点:
◆超市有能力承担系统开发费用;
◆新系统将为企业带来经济效益。
所以从经济角度来说,本系统的开发是可行的。
操作可行性
该管理系统采用基于Windows的图形用户界面,而该系统是大家熟悉的操作系统,对于那些有一般计算机知识的人员就可以掌握,而整个超市管理系统采用最友好的交互界面,简洁明了,不需要对数据库进行深入的了解,从人员管理来讲不会因人员知识基础问题影响该系统在超市的运行与使用。
1.4结论
通过对技术、经济、操作三个主要方面的可行性分析,可以确定本系统的开发完全有必要的,而且是可行的,可以立项开发。
2.需求分析
2.1引言
系统概述
软件需求分析是软件工程中的一个极为重要的环节。
需求分析做得好坏与否,直接关系到以后所开发软件质量的高低。
因此,我们按照功能的需求,从综合要求、详细的数据说明、概念模型设计、逻辑模型设计、物理模型设计这五大方面对需求规格说明这个模块进行描述。
参考资料
[1]《UML基础与Rose建模案例》第3版,吴建,郑潮,汪杰,人民邮电出版社;
[2]《数据库系统概论》第4版,王珊,萨师煊,高等教育出版社;
2.2综合要求
功能要求
通过网上资料的查阅以及自己的亲身体验,我们开发小组对超市的运营管理已经有了详细的了解。
进行详细的分析和讨论超市系统的工作过程后,我们从功能上将该系统分为三大部分,具体描述如下:
Ø系统登录模块
账号密码验证:
软件启动后,在登录窗口中,我们可以填入登录的账号与密码,点击确定,系统能够对账号密码进行验证,只有验证成功的人才能使用该系统相应的功能,从而保证了系统的安全性。
前后台选择:
登录窗口提供前后台的选择,不同身份的人所拥有的账号有不同的权限,根据自己的权限,对登录身份进行正确的选择,才能进入相应的操作界面,从而保证超市内部之间的条理性。
Ø前台零售管理系统
商品查找:
零售员根据超巿业务特点制定的相关功能,通过输入唯一编号来实现精确的商品查找,在商品编号不确定的情况下,可以直接输入商品名称,也能实现商品查找的功能。
查找到所需要的商品时,系统会显示出商品的详细信息。
商品录入:
零售员查找到所要购买的商品,选择购买数量(自行判断,防止购买数量超过库存数量)后,点击添加商品按钮则能将该商品添加到本次购物的销售单上,同时更新此次购物商品的总花销。
确定交易:
当商品录入结束后,零售员输入收取的金额,系统根据此次购物的商品的总价格与收取的金额,自动计算出找零金额,同时将该次购物的销售单存入数据库,以便后台信息的分析。
Ø后台信息管理系统
商品查看与修改:
该功能给管理者展示商品的详细信息,管理者能够很容易监控商品的状态,同时,管理者能够根据不同情况适时地对商品特定相关的信息进行修改,从而达到超市运营的灵活性。
销售统计:
前台零售系统每确定一笔交易,就会把相关的的销售信息透明地传递到后台的销售统计系统中,管理员可以按照时间段查询超市商品的销售记录。
根据得到的信息,系统自行地对销售记录进行分析,提供这期间超市的盈亏情况,以及最热商品,最冷商品,最佳盈利商品,最差盈利商品。
因此,管理者能够根据系统分析得到的信息对超市做出相应的决策。
库存管理:
综合查询库存明细记录,管理员填写待进货商品的相关信息,避免库存商品积压损失和缺货。
当进货规模达到一定时,管理员就可以进行统一进货,商品进库后,自动修改库存量。
人员管理:
显示超市的工作人员,根据实际情况,管理员对超市人员进行增加或删减,同时提供密码修改功能。
性能要求
易于操作的交互式图形界面,响应快速,资源占用少。
运行要求
CPU奔腾4以上,内存512M以上,目前Windows的主流操作系统。
将来可能提出来的要求
随着超市规模的扩张,提供用户vip会员服务以及供应商信息管理功能。
2.3数据模型
2.4功能模型
(1)顶层数据流图
(2)0层数据流图
(3)1层数据流图
0.1职工登录
0.2前台管理
0.3进货管理
0.4销售管理
2.5活动模型
2.6层次方框图
2.7数据字典
编号
数据名
匈牙利命名
数据类型
取值范围
1
职工编号
szStaffId
CString
‘000’-‘999’
说明
职工的唯一标识
2
正确密码
szLoginPassword
CString
‘000’-‘999’
说明
职工正确的登录密码
3
输入密码
szInputPassword
CString
‘000’-‘999’
说明
职工使用键盘输入的密码
4
验证结果
bVerificationResult
bool
ture;false
说明
密码验证所得到的结果
5
客户编号
szCustomerId
CString
‘000’-‘999’
说明
客户的唯一标识
6
商品编号
szMerchId
CString
‘000’-‘999’
说明
商品的唯一标识
7
商品单价
iMerchPrice
int
0-10000
说明
单个商品的销售价格
8
购买数量
iDealingNum
int
0-10000
说明
客户购买某样商品的数量
9
客户购买信息
pPurchaseInfo
PurchaseInfo*
---
说明
所有交易商品及其数量
10
总金额
iTotalMoney
int
0-10000
说明
客户购买所有商品的总价
11
付款额
iPaymentMoney
int
0-10000
说明
客户所付总金额
12
找零
iChange
int
0-10000
说明
应反还给客户的金额
13
进货查询信号
bStockQuerySignal
bool
ture;false
说明
激活进货查询功能
14
进货信息
pStockInfo
StockInfo*
---
说明
进货商品信息顺序表
15
进货商品编号
szStockMerchId
CString
‘000’-‘999’
说明
进货的商品编号
16
进货商品数量
iStockNum
int
0-10000
说明
进货的商品数量
17
进货总额
iStockTotalMoney
int
0-10000
说明
所有进货商品的总价
18
入库编号
szSupplyId
CString
‘000’-‘999’
说明
入库商品的唯一标识
19
供货商编号
szProvideId
CString
‘000’-‘999’
说明
供货商的唯一标识
20
入库数量
iSupplyNum
int
0-10000
说明
入库商品的数量
21
销售状况
iAllowSale
int
0,1
说明
充许销售或禁止销售
22
限量
iCautionNum
int
0-10000
说明
销售的最大数量
23
促销起始日期
szSalesProDateS
CString
‘20131101’-‘20141101’
说明
促销活动的开始时间
24
促销终止日期
szSalesProDateE
CString
‘20131101’-‘20141101’
说明
促销活动的结束时间
2.8IPO表
编号
函数名
返回类型
参数列表
返回值
0.1.1
VerifyPassword
bool
szStaffId,
szInputPassword
bVerificationResult
说明
查询职工表得到对应职工的登录密码,然后比较正确密码与输入密码,得到验证结果
0.2.1
TSTradeInfo
bool
pPurchaseInfo
szMerchId,
iDealingNum
ture;false
说明
暂存交易信息,补充商品信息,如查询商品表得到对应商品的单价
0.2.2
CalculateTotalMoney
int
szCustomerId,
pPurchaseInfo
iTotalMoney
说明
先查询客户表得到对应客户的VIP身份,
然后计算总价=总价+商品单价*购买数量,最后判断客户VIP身份。
如果为VIP,总金额=总价*0.8;否则,总金额=总价
0.2.3
CalculateChange
int
iTotalMoney
iPaymentMoney
iChange
说明
找零金额=付款额-总金额
0.2.4
Transaction
bool
szCustomerId,
pPurchaseInfo
ture;false
说明
依次查询商品表对应商品数量,计算商品的剩余数量,再修改商品表的商品数量,最后添加记录到销售表。
0.3.1
SelectStock
bool
pStockInfo
ture;false
说明
查询进货表,暂存进货信息。
0.3.2
CalculateStockTotalMoney
int
pStockInfo
iStockTotalMoney
说明
依次查询商品表得到对应商品单价,计算进货总额=进货总额+进货商品数量*商品单价。
0.3.3
UpdateStock
bool
pStockInfo,
szStockMerchId,
iStockNum
ture;false
说明
更新进货信息,修改进货表。
0.3.4
UpdateSupply
bool
pSupplyInfo
ture;false
说明
添加记录到供货表,减少进货表中对应商品的数量,添加商品表中对应商品的数量
0.4.1
SelectManage
bool
szMerchId
ture;false
说明
查询管理表
0.4.2
UpdateManage
bool
iAllowSale
iCautionNum
szSalesProDateS
szSalesProDateE
ture;false
说明
修改管理表中对应商品的消息
3.总体设计
3.1数据结构设计
(1)客户购买信息
StructPurchaseInfo{
intNum;//商品种类的数量
intMax;
StructInfo{
StringszMerchId;
intiMerchPrice;
intiDealingNum;
}*pInfo;
}*pPurchaseInfo;//客户购买信息(顺序表)
(2)进货信息
StructStockInfo{
intNum;//商品种类的数量
intMax;
StructInfo{
StringszStockMerchId;
StringszMerchId;
intiStockNum;
}*pInfo;
}*pStockInfo;//进货信息(顺序表)
(3)入库信息
StructSupplyInfo{
intNum;//商品种类的数量
intMax;
StructInfo{
StringszSupplyId;
StringszProvideId;
StringszMerchId;
intiSupplyNum;
}*pInfo;
}*pSupplyInfo;//入库信息(顺序表)
(4)管理信息
StructSaleManageInfo{
intiAllowSale;
intiCautionNum;
StringszSalesProDateS;
StringszSalesProDateE;
}*pSaleManageInfo;//管理信息(集合)
3.2数据库逻辑设计
(1)客户(客户编号,客户姓名,客户VIP身份)
(2)商品(商品编号,商品名称,商品单价,商品数量,商品限量,
销售状况,促销起始日期,促销终止日期)
(3)职工(职工编号,职工姓名,职工密码,职工类别)
(4)供货商(供货商编号,供货商名称,供货商地址,供货商电话)
(5)销售(销售编号,客户编号,商品编号,销售数量)
(6)进货(进货编号,商品编号,进货数量)
(7)入库(入库编号,供货商编号,商品编号,入库数量)
3.3数据库物理设计
(1)客户表(Customers)
(2)商品表(MerchInfo)
(3)职工表(StaffBill)(4)供货商表(Provide)
(5)销售表(Dealing)(6)进货表(Stock)
(7)入库表(Supply)
3.4界面设计
(1)登录界面
(2)销售界面
(3)进货界面
(4)入库界面
(5)销售管理界面
4.详细设计
4.1职工登录设计(张连升)
4.2前台管理设计(蒋伟成)
4.3进货管理设计(刘浩)
(1)管理员添加进货单
管理员添加进货单的操作,管理员填写好相应的进货单项之后,系统自动把进货单信息写入数据库中,修改了进货单数据库中的内容,同时数据库也自动的修改了柜存信息中的内容。
(2)管理员修改进货单
管理员通过修改操作对进货单信息中的表项进行修改,然后更新数据库,同时数据库会自动修改柜存信息中的相应项。
(3)管理员删除进货单
管理员执行删除操作删除进货信息中的信息,更新进货信息中的表单,同时数据库自动修改柜存信息中的相应项。
(4)管理员添加物品信息
管理员添加物品信息的操作,管理员填写好相应的物品信息之后,系统自动把物品信息写入数据库中,修改了物品信息数据库中的内容。
(5)管理员修改物品信息
管理员通过修改操作对物品信息中的表项进行修改,然后更新数据库。
(6)管理员删除物品信息
管理员执行删除操作删除进货信息中的信息,更新进货信息中的表单
(7)管理员查询进货单
管理员按照要求字段,输入查询信息,系统自动访问数据库,显示出管理员需要查询的信息。
(8)管理员查询物品信息
管理员按照要求字段,输入查询信息,系统自动访问数据库,显示出管理员需要查询的信息。
(9)管理员查询柜存信息
管理员按照要求字段,输入查询信息,系统自动访问数据库,显示出管理员需要查询的信息。
状态图:
状态图主要描述了系统在各个状态之间的转换关系。
在系统登陆成功之后,通过点击系统管理界面上的各个菜单跳转到各个不同的子功能中,添加、修改、删除操作都是对数据库中的数据进行操作,然后更新数据库中的表单,查询操作主要是访问数据库中的数据,然后把查询结果显示出来,各个操作执行完成之后都可以直接返回到系统操作界面,执行其他操作。
4.4销售管理设计(胡晨)
(1)查询商品管理信息
(2)更新商品管理信息
5.代码编程
5.1职工登录编程
5.2前台管理编程
5.3进货管理编程
5.4销售管理编程
(1)查询商品管理信息
//连接数据库
………
//1.查询商品表商品信息
AfxMessageBox(szMerchId);
CStringSQLCommand="SELECTMerchName,AllowSale,
CautionNum,SalesProDateS,SalesProDateE
FROMMerchInfowhereMerchID="+szMerchId+";";
m_pRecordset->Open(_variant_t(SQLCommand),m_pConnection.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
//2.为成员管理信息指针分配空间
pSaleManageInfo=(SaleManageInfo*)malloc(sizeof(SaleManageInfo));
//3.将商品信息存储在管理信息
//定义中间变量和数据类型装换
_variant_tMerchName=m_pRecordset->GetCollect("MerchName");
_variant_tAllowSale=m_pRecordset->GetCollect("AllowSale");
_variant_tCautionNum=m_pRecordset->GetCollect("CautionNum");
_variant_tSalesProDateS=m_pRecordset->GetCollect("SalesProDateS");
_variant_tSalesProDateE=m_pRecordset->GetCollect("SalesProDateE");
COleDateTimedas=COleDateTime(SalesProDateS.date);
COleDateTimedae=COleDateTime(SalesProDateE.date);
//赋值和数据类型装换
pSaleManageInfo->szMerchName.CString:
:
CString();
pSaleManageInfo->szMerchName=(LPCTSTR)(_bstr_t)MerchName;
pSaleManageInfo->iAllowSale=AllowSale.iVal;
pSaleManageInfo->iCautionNum=CautionNum.iVal;
pSaleManageInfo->szSalesProDateS.CString:
:
CString();
pSaleManageInfo->szSalesProDateS=das.Format("%Y-%m-%d%H:
%M:
%S");
pSaleManageInfo->szSalesProDateE.CString:
:
CString();
pSaleManageInfo->szSalesProDateE=dae.Format("%Y-%m-%d%H:
%M:
%S");
result=true;
//释放空间
………
(2)更新商品管理信息
//连接数据库
………
//1.得到sql连接的指针
m_pRecordset->Open(_variant_