超市管理系统完整版.docx
《超市管理系统完整版.docx》由会员分享,可在线阅读,更多相关《超市管理系统完整版.docx(24页珍藏版)》请在冰点文库上搜索。
超市管理系统完整版
课程设计说明书
课程名称:
大型数据库应用
课题名称:
超市管理系统班级:
计本041
姓名:
02号左文兵
姓名:
27号董子冰
姓名:
31号刘子豪
指导教师:
满君丰副教授
湖南工业大学计算机与通信学院
2007年12月20日
1绪论.2
1.1课题背景2
1.2系统开发关键技术介绍2
2系统分析.4
2.1用户工作流程4
2.2用户业务需求4
3系统设计.5
3.1设计思想5
3.2系统功能结构图5
3.3模块功能设计6
4系统数据库设计.7
4.1系统数据库的建立7
4.2系统E-R图7
4.3各个数据表的创建9
4.4存储过程设计11
4.5数据库的连接11
5系统实现13
5.1系统实现工具与支持平台13
5.2系统界面13
5.3系统主要功能实现16
1.前台16
2.后台17
5.4系统核心代码17
6总结与展望21
6.1收获与体会21
6.2
错误!
未定义书签错误!
未定义书签错误!
未定义书签
未来的展望21
参考文献.
致谢.
课程设计检查表.
1绪论
1.1课题背景
21世纪,超市的竞争也进入到了一个全新的领域,随着超市的发展,其经营管理也变得愈加复杂,迫切地需要引入新的管理技术。
超市形态的高速发展,其经营管理也变得愈加复杂,日常所需要处理的数据量也逐渐增大,商业运转的中间环节也越来越多,原始的人工管理已无法应对这复杂的市场。
超市需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息。
竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。
技术的提升和管理的升级是超市业的竞争核心。
零售领域目前呈多元发展趋势,多种业态:
超市、仓储店、便利店、特许加盟店、专卖店、货仓等相互并存。
如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市营业者努力追求的目标。
为了大大提高超市的运作效率;通过全面的信息采集和处理,辅助提高超市的决策水平;使用本系统,可以迅速提升超市的管理水平,为降低经营成本,提高效益,增强超市扩张力,提供有效的技术保障。
针对超市的特点,为了帮助超市解决现在面临的问题,提高小型超市的竞争力,我们将开发以下系统:
前台POS销售系统、后台管理系统,其中这两个子系统又包含其它一些子功能。
1.2系统开发关键技术介绍
本系统采用的是微软公司的MicrosoftVisualBasic6.0开发工具做为开发系统程序。
在连接数据库上,利用ADO对象模型,创建几个简单的对象和数据来源进行连接,然后从中取得所需要的数据,进行数据访问操作后保存。
在连接数据库上,以往在数据访问应用程序开发中,不管是使用DAO或RDO对象来访问数据来源,都会对这些对象模型众多而且复杂的组成结构印象深刻。
但利用ADO对象模型,就可以只创建几个简单的对象和数据来源进行连接,然后从中取得所需要的数据,进行数据访问操作后保存。
ADO(ActiveXDataObjects)对象模型主要由三个对象成员:
Connection、Command与Recordset对象;以及三个集合对象:
Errors、Parameters与Fields对象所组成。
ADO对象模型与DAO、RDO另一个较大的差异,在于某些ADO对象可以直接
创建而不需依据上下层按顺序产生,比如我们可以直接创建一个Command对象而不需
要先行创建该对象的上层Connection对象,ADO会在该Comman对d象产生时自动创建上层Connection对象。
下面给出ADO对象间的关系(如下图1):
图1.2ADO对象关系图
2系统分析
2.1用户工作流程
本系统主要解决超市的基本管理问题,其中又分别包括后台管理和前台管
理,后台包括进货管理,销售管理,库存情况的查询,以及基本用户人员的帐号管理。
前台包括商品录入,收银业务。
2.2用户业务需求
(1)进货管理:
根据销售情况及库存情况,自动制定进货计划(亦可手工制定修改),可以避免盲目进货造成商品积压。
按计划单有选择性地进行自动入库登记。
综合查询打印计划进货与入库记录及金额。
(2)销售管理:
商品正常销售、促销与限量、限期及禁止销售控制。
综合查询各种销售明细记录、各地收银员收银记录以及交结账情况等。
按多种方式统计生成销售排行榜,灵活察看和打印商品销售日、月、年报表。
(3)库存管理:
综合查询库存明细记录。
库存状态自动告警提示。
如库存过剩、少货、缺货等。
软件为您预警,避免库存商品积压损失和缺货。
库存自动盘点计算。
(4)人员管理:
员工、会员、供货商、厂商等基本信息登记管理。
员工操作权限管理。
客户销售权限管理。
(5)收银业务:
通过扫描条形码或者直接输入商品名称(对于同类多件商品采用一次录入加数量的方式)自动计算本次交易的总金额。
在顾客付款后,自动计算找零,同时打印交易清单(包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号)。
如果顾客是本店会员并持有本人会员卡,则在交易前先扫描会员卡,并对所购物品全部实行95折优惠,并将所购物品的总金额累计到该会员的总消费金额中。
会员卡的有效期限为一年,满一年未续卡者,该会员卡将被注销。
3系统设计
3.1设计思想
(1)系统分成前台和后台几个相对独立的模块,但这些模块都进行集中式管理。
(2)分层的模块化程序设计思想,整个系统采用模块化结构设计。
作为应用程序有较强的可操作性和扩展性。
(3)本系统使用的数据库设计是Oracle+ODBC+AD控O制,同时也尽可能地使用了VB的各种高级控件。
(4)在SQL语言的使用上,也使用了较多的技巧,例如组合查询技术,希望通过此次设计能够提供自己各个方面的能力。
3.2系统功能结构图
根据对超市管理系统进行的可行性分析和结构化程序设计的要求,得到系统总体结构如图5-1所示:
图3-1超市管理系统功能结构图
3.3模块功能设计
根据上述系统总体思想的分析,本系统共包括六大模块,分别是商品录入管
理模块,收银业务管理模块,人员管理模块,销售管理模块,进货管理模块,库存管理模块。
每个模块的功能如下:
1.商品录入管理模块:
(1)实现商品的快速录入以快速更新数据;
(2)实现支持商品的条形码扫描录入;
2.收银业务管理模块:
(1)实现交易总额计算;
(2)实现交易总额的查询;
3.人员管理模块功能:
(1)实现员工信息的查询;
(2)实现员工信息的更新,包括增加、删除、修改功能;
(3)实现员工操作权限管理;
4.销售管理模块功能:
(1)实现销售信息的查询;
(2)实现商品销售的控制;
5.进货管理模块功能:
(1)实现进货信息的查询;
(2)实现进货信息的更新,包括增加、删除、修改功能;
6.库存管理模块功能:
(1)实现商品明细记录的查询;
(2)实现商品信息的更新,包括增加、删除、修改功能;
(3)实现库存状态自动告警;
(4)实现库存信息的更新,包括增加、删除、修改功能。
4系统数据库设计
4.1系统数据库的建立
数据库应该设计成层次清晰的,高效的,实用数据库,该系统是采用三层架构设计的,可通过应用服务器的扩展来实现新功能的添加。
系统对数据记录的操作也因为其课程设计中定义的数据操作方式和操作内容而注定不会产生脏数据及数据读写的不一致性,故在数据库设计方面未采用触发器。
我们认为在扩展应用服务器至多种功能后,将应用服务器分为控制部分和客户应用部分,此时在控制部分添加触发器来防止数据读写的不一致性,这已经超出了本次课程设计所涉及的范围,在此不做过多的陈述。
4.2系统E-R图
1.E-R模型
超市管理系统数据库E-R模型:
用户
商品
图4.8系统E-R模型图
4.3各个数据表的创建
由数据模型利用Oracle10g进行数据库的详细设计,其基本表的设计如下:
表4.1商品表(Merchandise)
字段名
字段类型
长度
主/外键
字段值约束
对应中文名
MerchID
int
4
P
Notnull
商品编号
MerchName
Varchar
50
Notnull
商品名称
MerchPrice
Money
4
Notnull
价格
MerchNum
Int
4
Notnull
库存数量
CautionNum
Int
4
Notnull
库存报警数量
PlanNum
Int
4
null
计划进货数
BarCode
Varchar
50
Notnull
条形码
SalesProPrice
Money
4
促销价格
SalesProDateS
Datetime
8
促销起日期
SalesProDateE
Datetime
8
促销止日期
AllowAbate
Int
4
Notnull
允许打折
AllowSale
Int
4
Notnull
允许销售
FactoryID
Varchar
10
F
Notnull
厂商编号
ProvideID
Varchar
10
F
Notnull
供货商编号
表4.2用户表(User)
字段名
字段类型
长度
主/外键
字段值约束
对应中文名
UserID
varchar
10
P
Notnull
用户编号
UserName
Varchar
25
Notnull
用户名称
UserPW
Varchar
50
Notnull
用户密码
UserStyle
Int
4
Notnull
用户类型
表4.3会员表(Menber)
字段名
字段类型
长度
主/外键
字段值约束
对应中文名
MemberID
Varchar
10
P
Notnull
会员编号
MemberCard
Varchar
20
Notnull
会员卡号
TotalCost
Money
4
Notnull
累积消费金额
RegDate
Datetime
8
Notnull
注册日期
表4.4销售表(Sale)
字段名
字段类型
长度
主/外键
字段值约束
对应中文名
SaleID
Varchar
10
P
Notnull
销售编号
MerChID
Varchar
10
F
Notnull
商品编号
SaleDate
Datetime
8
Notnull
销售日期
SaleNum
Int
4
Notnull
销售数量
SalePrice
Money
4
Notnull
销售单额
表4.5交易表(Dealing)
字段名
字段类型
长度
主/外键
字段值约束
对应中文名
DealingID
Varchar
10
P
Notnull
交易编号
DealingPrice
Money
4
Notnull
交易金额
DealingDate
Money
4
Notnull
交易日期
MemberID
Varchar
10
会员卡号
UserName
Varchar
10
F
Notnull
用户名称
表4.6入库纪录表(Stock)
字段名
字段类型
长度
主/外键
字段值约束
对应中文名
StockID
Varchar
10
P
Notnull
入库编号
MerchID
Varchar
10
F
Notnull
入库商品编号
MerchNum
Int
4
Notnull
入库数量
MerchPrice
Money
4
Notnull
单额
TotalPrice
Money
4
Notnull
总额
StockDate
Datetime
8
Datetime
入库日期
PlanDate
Datetime
8
Datetime
计划进货日期
StockState
Int
4
Notnull
入库状态
表4.7供货商表(Provide)
字段名
字段类型
长度
主/外键
字段值约束
对应中文名
ProvideID
varchar
10
P
Notnull
供货商编号
ProvideName
Varchar
50
Notnull
供货商名称
ProvideAddress
Varchar
250
供货商地址
ProvidePhone
Varchar
25
供货商电话
表4.8厂商表(Provide)
字段名
字段类型
长度
主/外键
字段值约束
对应中文名
FactoryID
varchar
10
P
Notnull
厂商编号
FactoryName
Varchar
50
Notnull
厂商名称
FactoryAddress
Varchar
250
厂商地址
FactoryPhone
Varchar
25
厂商电话
4.4存储过程设计
创建用于用户登陆的存储过程:
createorreplaceprocedureset_User
(sUserIDinintidentity,sUserPWinvarchar,sUserNameinvarchar,sUserStyleinnumber)as
begin
updateUser
setUserName=sUserName,UserPW=sUserPW,UserStyle=sUserStylewhereUserID=sUserID;
ifSQL%NOTFOUNDTHEN
insertintoUser(UserID,UserPW,UserName,UserStyle)
values(sUserID,sUserPW,UserName,sUserStyle);
endif;
endset_User;
4.5数据库的连接
应用程序与Oracle10g数据库的连接是通过创建ADO数据源,然后在程序中利用代码与数据库建立连接来实现的。
具体实现方法是:
在模块中声明调用ADO连接控件,这样便能在任何时间连接数据库了。
使用ADOConnection对象连接到Oracle10g。
在查询等按钮的单击事件中访问数据库。
可以使用应用程序配置文件建立一条到数据库服务器的连接,返回一个关键字ConnectionString,在实体数据链路层定义一个用于存储过程的一个基类
,使用SqlConnection
database=Supermarket;
"ConnectionStr
DBdata.cs在这个基类中接受该关键字ConnectionString连接数据库。
配置文件连接数据库的代码:
。
存储过程基类接受该关键字的代码:
System.Configuration.ConfigurationSettings.AppSettings[ing"].ToString();
5系统实现
5.1系统实现工具与支持平台
(1)用户界面
本系统采用MicrosoftVisualBasic6.0设计,用户交互界面采用的是基于Windows的窗口界面。
(2)硬件接口运行本系统的硬件基本要求如下:
CPU:
IntelP3及以上;内存:
512MB及以上;硬盘:
40GB及以上。
(3)软件接口数据库服务器:
Oracle10g。
ADO对象模型
5.2系统界面
下面为运行后的界面图
图5.1系统登录界面
图5.2系统管理界面
图5.3销售管理员界面
图5.4进货管理界面
图5.5会员管理界面
图5.6厂商/供货商管理界面
5.3系统主要功能实现
1.前台
前台仅包括销售商品时必须且仅需的功能,尽可能地做到简化操作程序,利于收银员快捷、准确地进行收款。
功能包括前台交易开单、收款、退货、会员卡、折扣和优惠等;下载后台资料和将清款后的业务数据上传后台;完成前台交易中的扫描条码或输入商品编码、收款、打印收据、弹出银箱等一系列操作。
支持多种收款方式:
顾客交款、营业员收款。
支持会员制折扣卡销售,可以采用严格会员制或自由会员制。
记录顾客信息、累计顾客消费金额等功能。
支持多种付款方式:
现金、支票、记帐、赠券等。
支持多种促销方式:
折扣、折让、VIP优惠卡、赠送。
收款员非常规操作记录,有助于减少财务损失,方便汇总打印各种营业报表。
该系统包含两个对象,包括收银员和客户。
系统用例:
收银员:
结算收款
客户:
结帐
2.后台
充分利用数据库的大容量、高效率等特点,为用户提供强大的功能支持,对超市进货业务、库房业务进行管理,并处理分公司销售数据和后台批发业务,利用商业流通超市的商品管理和往来客户管理,为经营管理者提供分析与决策必需的数据和信息。
该后台包含3个对象,包括:
超市经理,销售管理员,进货管理员。
系统用例:
超市经理:
操作软件录入商品,供货商,厂商;操作软件制定进货计划;查询打印计划进货与入库记录;操作软件控制商品销售与否;查询打印销售情况;操作软件生成销售排行榜;查询库存明细记录;根据软件发出的库存告警进行入货;操作软件进行盘点计算。
销售管理员:
销售管理,因为要向系统提供货架管理信息,所以也参与货源管理
进货管理员:
具体采购进货,采购单查询。
5.4系统核心代码
此处指选取主要代码进行说明,数据库连接、用户登陆、主窗体
数据库连接:
在基类DBdat中打开数据库链接对象,
publicclassDBdat{
privatestaticSqlConnectionMyConnection;
privatestaticreadonlystringRETURNVALUE="RETURNVALUE";privatestaticreadonlyStringStringConnection=
System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"].ToString()
publicstaticvoidOpen(){//打开链接对象if(MyConnection==null){
MyConnection=newSqlConnection(StringConnection);}if(MyConnection.State==ConnectionState.Closed){
MyConnection.Open();///打开数据库连接
}}
///关闭链接对象
登陆
PrivateSuballen_Click()
EndSub
PrivateSubcboUser_GotFocus()cboUser.SelAll
EndSub
PrivateSubcmdExit_Click()
UnloadMe
EndSub
PrivateSubcmdOK_Click()//
'如果还没有服务器信息
IfstrSQLServer=""ThenMsgBox"您必须先设置cmdServer_ClickExitSub
EndIf
IfcboUser.Text=""Then//MsgBox"请填写用户名。
cboUser.SetFocuscboUser.SetFocusExitSub
EndIf
IftxtPW.Text=""Then//MsgBox"请填写密码。
txtPW.SetFocusExitSub
EndIf
OnErrorGoToaaaa//
检查是否连接服务器
SQL服务器信息。
",vbInformation
填写用户名
",vbInformation
填写密码
",vbInformation
检查是否存在用户
sqlConnectcnMain,strSQLServer,strSQLUser,strSQLPW,strSQLDBDimrsAsNewADODB.Recordset,strMD5AsString
strMD5=GetMD5(txtPW.Text)
rs.Open"Select*From[User]WhereUserStyle>1",cnMain,1,1
Ifrs.EOFThen
MsgBox"找不到任何用户!
",vbCriticalcnMain.Close
Else
DoUntilrs.EOF
IfStrComp(rs("UserName"),cboUser.Text,1)=0AndStrComp(rs("UserPW"),GetMD5(txtPW.Text),1)=0ThencurUserName=rs("UserName")curUserStyle=CLng(rs("UserStyle"))cboUser.AddItemcurUserName,0
SaveUserList
frmMain.Icon=Me.Icon
UnloadMe//卸载主窗体
frmMain.Show//显示主窗体
ExitSub
EndIf
rs.MoveNext
Loop
EndIf
MsgBox"用户名或密码错误,登陆失败!
",vbCriticalcnMain.Close
ExitSub
aaaa:
MsgBoxErr.Description,vbCritical
If