1、一、项目计划:1、开发背景及目的 随着科学技术的飞速发展,给我们的生活带来了翻天覆地的变化。机械化、自动化、信息化等给我们带来了诸多方便,不仅节省了人力资源同时大大的提高了工作的效益。现在许多大型超市都利用计算机采用数据库管理系统与其他应用软件结合来管理超市的运营,增大了销售员的销售速率并节约了人力资源,最大的实现了经济效益。对于小型超市若也采用数据库管理系统,对于超市经营者而言不仅可以提高其市场竞争力,减少营业员,而且提高销售速率;对于消费者而言购物也变得方便同时可以享受更好的服务。2、项目的确立为了适应时代的发展,避免在激励的市场竞争中被淘汰,最大限度的利用所学知识提高经济效益和给消费者提
2、供更好的服务质量,针对超市的特点,将开发以下一个简单的数据库管理系统。该系统应该能管理销售的具体情况,这就需要一个前台销售系统。另一方面对于商品的采购、销售和库存等信息也应准确掌握,所以还需要一个后台管理系统。商品的买入和售出等就由这两个系统来完成。3、问题的定义(1)商品条形码:每种商品具有唯一的条形码,对于某些价格一样的商品,可以使用自定义条形码。(2)交易清单:包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号。(3)商品积压:在一定时期内,远无法完成销售计划的商品会造成积压。(4)促销:在一定时期内,某些商品会按低于原价的促销价格销售。库存告
3、警提示:当商品的库存数量低于库存报警数量时发出提示。(5)盘点:计算出库存、销售额、盈利等经营指标。二、项目可行性研究:操作方面,该数据库管理系统,为用户提供了简单易懂的用户操作界面,对于前台管理系统销售员可以轻松的掌握其用法,同样管理员也可以轻而易举的掌握后台管理系统的使用方法。技术方面,随着科学技术的发展和其他超市对类似系统的成功运用,我们完全有信心开发一个针对小型超市的管理系统。经济方面, 由于该系统的成功应用只需一台计算机和一些相应的软件等,所需花销较少,但同时又能给超市带来更大的经济效益,所以是非常具有开发效益的。法律可行性方面,该系统符合国家相关政策,符合国家法律法规。三、需求分析
4、:(一)系统的功能描述:随着人民物质文化于精神文化的日益丰富,超市收费管理也越来越多的使用了计算机管理的方式。相对于传统的纸单收费,商品价格记录和计算都花费较长的时间,在统计店内商品库存等都有一定的困难。而计算机收费管理系统采用数据库管理账单的方式,开单、结账、账单都可由计算机生成,极大的节省了时间提高了收费效率,并且方便查询,便于统计相关营业信息。通过日常生活中的购物经历以及对学校现有超市的调查及分析,该系统应该能实现以下几个方面的功能:1、对于前台管理系统应包含的功能:(1)收银业务:通过扫描条形码或者直接输入商品名称时能自动计算本次交易的总金额。对于相同多件商品可以扫描一次然后通过输入数
5、量并计算的方式。(2)找零计算:为避免人工运算出错也为了更加准确的计算销售者与消费者的(3)打印清单:打印交易清单,清单应该包括本次交易的流水账号、商品的商品名、数量、商品的总金额、交易的时间等。(4)会员折扣:现在几乎所有的超市都采用了会员制来提高销售量。如果顾客是本店会员,则在交易前先扫描会员卡或输入会员号,对所购物品给予相应的折扣,并显示原价和折扣后的价钱。同时根据消费增加会员的相应积分。(5)录入商品:可以通过输入唯一编号、扫描条形码、商品名称等来实现精确或模糊的商品扫描录入。为收银业务,打印清单等做准备。(6)安全性:OS登陆、退出、换班与操作锁定等权限验证保护;断电自动保护最大限度
6、防止意外及恶意非法操作。 2、后台管理系统应包含的功能:(1)进货管理: 根据销售情况及库存情况,制定进货计划。另一方面可以根据商品的销售情况判定畅销产品,并可适当的多购入该类产品。对于不畅销的商品则应少购或不购。并且给出各类商品的采购数量、进价、总金额等信息。(2)销售管理: 通过综合查询各种商品的销售记录,包括规定售价及该价格下的销量,促销价及相应销量,会员价及相应销售数量等,按多种方式统计生成销售排行榜,计算出总的进价金额和售出所得金额,求出净收入。(3)库存管理: 通过进货信息和销售信息得出库存信息,从而查看各商品的库存量。(4)提示:当某商品库存数量很少或者很多时能自动的给出提示。提
7、醒管理者采取相应的措施。避免库存的货物堆积和货物短缺等情况的发生,保证超市的更好运营。(5)人员管理:对于超市的员工、会员、供货商等需要一定的了解,所以在此需要对他们基本信息记录管理。(6)权限管理: 不是每一个员工都具有相同的权限,经营者可能会给管理权交给自己信任的员工,因而对超市的所以员工其对系统的操作有权限。(二)系统的功能模块图:通过对系统的需求分析,考虑满足用户对数据库的信息需求、处理需求、安全性与完整性要求,得出了上述所需的系统功能,根据其功能得出系统功能模块图。总体部分超市管理系统前台销售系统后台管理系统前台管理模块前台销售系统打印清单收银业务找零计算会员折扣录入商品安全性后台管
8、理后台管理系统进货管理销售管理库存管理权限管理提示人员管理1、收银业务:扫描条形码或直接输入商品名称时自动计算本次交易的总金额。相同多件商品可扫描一次然后输入数量计算。收银业务扫描或录入计算总额同类多件扫描输入数量计算2、会员折扣:能对商品打折并根据消费情况积分会员折扣商品折扣会员积分增加3、商品录入子系统要求能快速录入商品,因此必须支持条形码扫描商品录入快速商品录入支持条形码扫描4、安全性:OS登陆、退出、换班与操作锁定等权限验证保护;断电自动保护最大限度防止意外及恶意非法操作。 安全性登录等保护断电保护5、进货管理:能制定合理进货计划、自动入库登记、进货与入库记录、查询打印计划。进货管理自
9、动制定进货计划自动入库登记查询打印计划进货与入库记录6、销售管理:查询各种商品的销售记录,统计生成销售排行榜,求出净收入查询商品销售记录销售排行榜销售管理净收入7、库存管理: 通过进货信息和销售信息得出库存信息,从而查看各商品的库存量。查询库存信息库存管理自动盘点计算8、提示:给出库存过多或过少的提示提示商品堆积商品缺货9、人员管理:提供员工、会员、供应商的基本信息。人员管理员工信息会员信息供货商信息10、权限管理:普通员工和管理员操作权限设置。权限管理普通员工权限管理员权限(三)系统的数据流程图:前台管理系统顶层数据流图业务清单商品条形码前台管理系统文档商品信息销售员第0层数据流图商品信息商
10、品条形码业务清单收银业务文档商品录入销售员会员信息息商品信息会员信息商品信息商品信息会员信息表商品信息表后台管理系统顶层数据流图库存信息商品条形码后台管理系统文档商品信息管理员第0层数据流图文档商品信息进货商品信息销售库存业务清单进货管理员库存信息库存信息商品信息销售信息库存信息库存信息表进货信息表销售信息表四、数据库设计(一)概念结构设计:1、分E-R图:用户类型用户ID用户用户姓名用户号用户密码(1)、价格商品名称商品ID(2)、 商 品允许销售允许打折促销价格(3)、供货商名称供货商ID供货商地址供货商电话供货商(4)、厂商地址厂商名称厂商电话厂商ID厂 商(5)、会员会员卡号会员ID注
11、册时间累计金额2、综合E-R图:购买日期消费金额会员卡号厂商ID厂商名称厂商地址厂商电话供货商名称mn生产m1注册时间会员ID累计金额用户用户ID用户密码m供货金额供货日期销售日期供货商电话供货商地址供货商ID供货商销售销售ID商品ID商品名称价格促销价格消费m用户姓名用户类型用户号商品允许打折允许销售供货会员厂商(二)逻辑结构设计:E-R模型转换成关系模型:1、商品信息表(商品编号,商品名称,价格,条形码,促销价格,促销起日期,促销止日期,允许打折,库存数量,库存报警数量,计划进货数,允许销售,厂商编号,供货商编号)2、 用户表(用户编号,用户名称,用户密码,用户类型)3、 会员表(会员编号
12、,会员卡号,累积消费金额,注册日期)4、 销售表(销售编号,商品编号,销售数量,销售金额,销售日期)5、交易表(交易编号,用户名称,交易金额,会员编号,交易日期)6、进货入库表(入库编号,入库商品编号,入库数量,单额,总额,入库日期,计划进货日期,入库状态)7、供货商表(供货商编号,供货商名称,供货商地址,供货商电话)8、厂商表(厂商编号,厂商名称,厂商地址,厂商电话)(三)数据库结构的详细设计:说明:创建名为chaoshi的数据库,创建上述上述八个表:为简便分别在数据库中将商品信息表对应于sp,用户表对应yh,会员表对应hy,销售表对应xs,交易表对应jy,进货入库表对应rk,供货商表对应g
13、h,厂商表对应cs。每个表的每一列具体属性如下: Sp别名数据类型长度主/外键约束中文名SpnoVarchar10PNot null商品编号spNameVarchar40Not null商品名称spPriceMoney4Not null价格spNumInt4Not null库存数量CautionNumInt4Not null库存报警数量PlanNumInt4null计划进货数BarCodeVarchar50Not null条形码SalesProPriceMoney4促销价格SalesProDateSDatetime8促销起日期SalesProDateEDatetime8促销止日期AllowAb
14、ateInt4Not null允许打折AllowSaleInt4Not null允许销售csnoVarchar10FNot null厂商编号ghnoVarchar10FNot null供货商编号yh别名数据类型长度主/外键约束中文名yhnovarchar10PNot null用户编号yhNameVarchar30Not null用户名称yhPWVarchar40Not null用户密码yhStyleInt4Not null用户类型hy别名数据类型长度主/外键约束中文名hynoVarchar10PNot null会员编号hyCardVarchar20Not null会员卡号hyCostMoney
15、4Not null累积消费金额RegDateDatetime8Not null注册日期xs别名数据类型长度主/外键约束中文名xsnoVarchar10PNot null销售编号spnoVarchar10FNot null商品编号xsDateDatetime8Not null销售日期xsNumInt4Not null销售数量xsPriceMoney4Not null销售单额jy别名数据类型长度主/外键约束中文名jynoVarchar20PNot null交易编号jyPriceMoney4Not null交易金额jyDateMoney4Not null交易日期hynoVarchar10会员编号yh
16、NameVarchar30FNot null用户名称rk别名数据类型长度主/外键约束中文名rknoVarchar10PNot null入库编号spnoVarchar10FNot null入库商品编号rkNumInt4Not null入库数量spPriceMoney4Not null单额TotalPriceMoney4Not null总额rkDateDatetime8Datetime入库日期PlanDateDatetime8Datetime计划进货日期rkStateInt4Not null入库状态gh别名数据类型长度主/外键约束中文名ghnovarchar10PNot null供货商编号ghNa
17、meVarchar50Not null供货商名称ghAddressVarchar300供货商地址ghPhoneVarchar30供货商电话cs别名数据类型长度主/外键约束中文名csnovarchar10PNot null厂商编号csNameVarchar50Not null厂商名称csAddressVarchar300厂商地址csPhoneVarchar30厂商电话/*-创建数据库-*/create database chaoshion primary(name=chaoshi,filename=C:Program FilesMicrosoft SQL ServerMSSQLDatachaos
18、hi.mdf,size=50MB,maxsize=100MB,filegrowth=10)log on(name=chaoshilog,filename=C:Program FilesMicrosoft SQL ServerMSSQLDatachaoshi.ldf,size=50MB,maxsize=100MB,filegrowth=10MB)GoGo/*创建商品信息表*/CREATE TABLE sp (spno varchar(10) Primary key ,spName varchar(40) Unique NOT NULL ,spPrice money NOT NULL ,spNum
19、 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 NOT NULL ,AllowSale int NOT NULL ,csno varchar(10) NOT NULL ,ghno varchar(10) NOT NULL) GO/*创建用户表*/CRE
20、ATE TABLE yh (yhno varchar(10) Primary key ,yhName varchar(30) NOT NULL ,yhPW varchar(40) NOT NULL ,yhStyle int NOT NULL ,)GO/*创建会员表*/CREATE TABLE hy (hyno varchar(10) Primary key ,hyCard varchar(20) NOT NULL ,hyCost money NOT NULL ,RegDate datetime NOT NULL )GO/*创建销售表*/CREATE TABLE xs (xsno int ide
21、ntity(1,1) Primary key ,spno varchar(10) NOT NULL ,xsDate datetime NOT NULL ,xsNum int NOT NULL,xsPrice money NOT NULL) GO/*创建交易表*/CREATE TABLE jy (jyno varchar(20) not NULL Primary key ,jyDate datetime NOT NULL ,jyPrice money NOT NULL ,yhName varchar(30) NULL ,hyno varchar(10) NULL) GO/*创建入库表*/CREA
22、TE TABLE rk (rkno varchar(10) Primary key ,spno varchar(10) NOT NULL ,rkNum int NOT NULL ,spPrice money NULL ,TotalPrice money NULL ,PlanDate datetime NULL ,rkDate datetime NULL,rkState int NOT NULL) GO/*创建供应商表*/CREATE TABLE gh (ghno varchar(10) Primary key ,ghName varchar(50) NOT NULL ,ghAddress va
23、rchar(300) NULL ,ghPhone varchar(30) NULL )GO/*创建厂商表*/CREATE TABLE cs (csno varchar(10) Primary key ,csName varchar(50) NOT NULL ,csAddress varchar(300) NULL ,csPhone varchar(30) NULL )GO/*-创建表间约束-*/*商品信息表中厂商编号、供应商编号分别与厂商表、供应商表之间的外键约束*/ALTER TABLE sp ADD CONSTRAINT FK_sp_cs FOREIGN KEY (csno) REFERE
24、NCES cs (csno),CONSTRAINT FK_sp_gh FOREIGN KEY (ghno) REFERENCES gh (ghno)GO/*销售表中商品编号与商品信息表之间的外键约束*/ALTER TABLE xs ADDCONSTRAINT FK_xs_sp FOREIGN KEY(spno) REFERENCES sp (spno) ON DELETE CASCADE GO/*入库表中商品编号与商品信息表之间的外键约束*/ALTER TABLE rk ADDCONSTRAINT FK_rk_sp FOREIGN KEY(spno) REFERENCES sp (spno)
25、ON DELETE CASCADE GO/*-创建视图-*/*创建用于查询交易情况的视图*/CREATE VIEW v_jyASSELECT jyDate as 交易日期, yhName as 用户名称, hyno as 会员编号, jyPrice as 交易金额FROM jy GO/*创建用于查询进货计划的视图*/CREATE VIEW v_rkplanASSELECT rk.rkno as 入库编号, sp.spName as 商品名称, sp.BarCode as 条形码, cs.csName as 厂商, gh.ghName as 供货商, rk.rkNum as 入库数量, rk.P
26、lanDate as 计划进货日期FROM rk,sp,gh,csWhere rk.spno = sp.spno and gh.ghno=sp.ghno and cs.csno=sp.spno and rk.rkState=0 GO/*创建用于查询销售明细记录的视图*/CREATE VIEW v_xsASSELECT sp.spName as 商品名称, sp.BarCode as 条形码, sp.spPrice as 商品价格, xs.xsPrice as 销售价格, xs.xsNum as 销售数量, xs.xsDate as 销售日期FROM xs INNER JOIN sp ON xs
27、.spno = sp.spnoGO/*创建用于查询入库情况的视图*/CREATE VIEW v_rkASSELECT sp.spName as 商品名称, sp.BarCode as 条形码, cs.csName as 厂商, gh.ghName as 供货商, rk.spPrice as 入库价格, rk.rkNum as 入库数量, rk.TotalPrice as 入库总额, rk.rkDate as 入库日期FROM rk,sp,gh,csWhere rk.spno = sp.spno and gh.ghno=sp.ghno and cs.csno=sp.csno and rk.rkS
28、tate=1 GO视图:五、数据库与vb结合:1、连接准备:使用ADO连接数据库Private Sub Command1_Click()Dim CN As New ADODB.ConnectionDim RS As New ADODB.RecordsetCN.Open PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE= & App.Path & chaoshi.mdbRS.Open yh, CN, adOpenKeyset, adLockOptimisticSet MSHFlexGrid1.DataSource = RSMSHFlexGrid1.ColW
29、idth(0) = 100CN.CloseEnd SubPrivate Sub Command2_Click()EndEnd Sub2、主要功能模块设计:(1)、主窗体界面的设计:创建MDI多文档窗体,通过菜单编辑器得到以下界面: (2)、管理员登陆界面模块设计:通过添加frame控件、标签控件、命令按钮控件等得如下界面:为登录窗体添加启动事件:Private Sub FORM_LOAD() Dim I As Integer FRMLOGIN.Icon = LoadPicture(App.Path & picsx.ico) rs1.Open select 用户名 from 系统 , cn, a
30、dOpenKeyset, adLockOptimistic rs1.MoveNext Next I rs1.Close int_dl = 0End Sub设置登录按钮功能:Private Sub Command1_Click()Dim strpassword As StringIf Combo1.Text = Or Text1.Text = Then MsgBox 请选择用户名和输入密码!, vbCritical, 警告 Exit SubEnd Ifrs1.Open select 密码 from 系统 where 用户名= & Combo1.Text & , cn, adOpenKeyset,
31、 adLockOptimisticstrpassword = rs1.Fields(0)rs1.CloseIf Text1.Text = strpassword Then Open App.Path & jxcd1.log For Append As #1 Print #1, 登录者: & Combo1.Text Print #1, Now() MDIForm1.Show Unload MeElse int_dl = int_dl + 1 MsgBox 密码错误!, vbCritical, 警告 Text1.Text = Combo1.ListIndex = -1 If int_dl = 3
32、Then MsgBox 登录错误次数超过三次,请确认后在登录!, vbCritical, 警告 End End If Exit SubEnd IfEnd Sub设置定时器:Private Sub Timer1_Timer()Label1.Caption = Date & & Time()End Sub(3)、进货管理模块的设计新建窗体并将其添加为MDI子窗体,布置frame控件、标签控件、命令按钮控件等,并编写相应的命令按钮程序,最后得到如下界面:(4)、销售管理模块的设计新建窗体并将其添加为MDI子窗体,布置frame控件、标签控件、命令按钮控件等,并编写相应的命令按钮程序,最后得到如下界面:(5)、存货查询模块的设计:例如在商品名处输入:“喜之郎果冻“按下库存数量按钮得: