大作业设计示范文档.docx
- 文档编号:3509418
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:21
- 大小:410.73KB
大作业设计示范文档.docx
《大作业设计示范文档.docx》由会员分享,可在线阅读,更多相关《大作业设计示范文档.docx(21页珍藏版)》请在冰豆网上搜索。
大作业设计示范文档
成绩
《数据库原理》实验设计报告
专业:
班级:
学号
姓名
题目名称:
完成日期:
甘肃政法学院计算机科学学院
一、系统定义:
当今中国零售业发展正盛,大量超市涌现于各个城市,很大程度上改变了人民的消费方式。
大量频繁的物资流通,使得传统低效的人工管理已不合时宜。
本系统以一个统一的界面,给收银员、采购员和管理人员提供了不同的操作及管理功能。
数据库服务器可配置在独立的服务器上,也可配置在一台运行本系统的计算机上。
适用于中小型无连锁店,或连锁店间经济独立的超市的物流管理。
二、需求分析:
(一)系统综合需求
作为一个超市物流管理系统,应该给用户提供方便、友好而简洁的界面进行应用,并对超市的运营过程中物资的流动详细记录归档,并将这些数据进行逻辑上的融合,以便于用户查看、分析及管理。
针对中小型超市的运营模式,有三类核心员工:
收银员、采购员和管理人员,分别有三个核心功能需要实现,销售功能,采购功能,库存管理和员工管理功能。
管理人员的功能应该在此基础上进行扩展,实现销售记录查询,采购记录查询,商品信息查询、添加、删除和修改,以及促销活动的设置。
很多超市实行了会员制度,会员享受优惠待遇。
所以本系统应该引入会员管理的模块,对会员进行注册、删除、查询、消费跟踪。
此外,一个成熟的管理系统不仅应该具有基本的处理、查询功能,还应该有一些分析、后台监控的功能。
所以可以将基本的供销数据进行融合,以图形化的界面展示给用户进行供销情况的分析。
在后台实时监控商品库存量,当低于某一值时,向前台发出预警通知。
最后,本系统中对实际中应该机械化处理的过程,如条形码扫描仪,读卡机等,进行手工操作模拟的简化,加入相应功能模块即可在现实中使用。
(二)系统逻辑模型
1.数据流图:
图1-1系统数据流图
2.数据字典
项目
组成
类型
来源
去向
存储者
使用频度
变动频度
当前打折情况
会员优惠规则,全场优惠规则
数据流
管理人员
收银员
-
频繁
有时
(打折信息)
管理人员
管理人员
(当前优惠规则)
优惠规则
数据存储
-
-
管理人员
销售商品信息
商品编号,售价,销售数量,销售日期,会员编号,收银员工号
数据流
收银员
管理人员
-
频繁
增加频繁,基本无更改
(销售信息)
(历史销售记录)
销售记录
数据存储
-
-
收银员
会员信息
会员编号,姓名,住址,电话,身份证号,消费金额
数据流
管理人员,收银员
管理人员
-
频繁
增加不频繁,基本无更改
(会员资料)
消费清单
商品编号,售价,销售数量,销售日期,会员编号,收银员工号
收银员
管理人员
-
会员信息
会员编号,姓名,住址,电话,身份证号
数据存储
-
-
管理人员
商品信息列表
编号,名称,规格,供应商,售价,库存量
数据流
管理人员,采购员,收银员
管理人员
-
频繁
增加不频繁,更改不频繁
商品信息
数据存储
-
-
管理人员
本次采购信息
采购编号,商品编号,采购价格,采购数量,采购日期,采购员
数据流
采购员
管理人员
-
有时
增加有时,基本无更改
历史采购信息
采购信息
采购记录
采购记录
数据存储
-
-
采购员
表1.1系统数据字典
三、系统设计:
(一)概念结构设计
(二)逻辑结构设计
员工信息表Employee
字段名
类型
NULL
其他
备注
e_id
varchar(10)
PK
员工号
e_name
varchar(10)
Index
员工姓名
e_pwd
varchar(100)
Y
登陆密码
e_position
tinyint
(1)
职位(0:
管理人员1:
收银员2:
采购人员)
e_state
bit
(1)
在职情况
会员信息表Member
字段名
类型
NULL
其他
备注
m_id
bigint(8)
PK
会员编号
m_name
varchar(10)
Index
会员姓名
m_addr
varchar(50)
会员住址
m_tel
varchar(15)
会员电话
m_code
varchar(18)
会员身份证号
m_consume
decimal
会员消费金额
商品信息表Product
字段名
类型
NULL
其他
备注
p_id
bigint(8)
PK
商品编号
p_name
varchar(30)
Index
商品名称
p_scale
varchar(6)
规格
p_price
decimal
商品当前单价
p_manu
varchar(30)
供应商
p_qty
int(5)
Index
库存量
采购记录表Buy
字段名
类型
NULL
其他
备注
b_id
bigint(8)
PK
采购编号
p_id
bigint(8)
Index,FK
商品编号
b_price
decimal
购入价格
b_qty
int(5)
购入数量
b_time
varchar(19)
采购时间
e_id
varchar(10)
FK
采购员工号
销售记录表Sell
字段名
类型
NULL
其他
备注
s_id
bigint(10)
PK
销售编号
p_id
bigint(8)
Index,FK
商品编号
s_price
decimal
销售价格
s_qty
int(5)
销售数量
s_time
varchar(19)
销售时间
e_id
varchar(10)
FK
收银员
m_id
bigint(8)
Y
FK,Index
会员编号
预警日志表Warning
字段名
类型
NULL
其他
备注
w_id
int(4)
PK
预警编号
w_content
text
预警内容
优惠规则表Discount
字段名
类型
NULL
其他
备注
m_all
float
所有会员打折数
d_all
float
全场打折数
部分表关系图:
(三)子模块划分及功能概述
系统设置三种权限:
收银员、采购员和管理人员。
登陆后,可以进入不同的功能模块,在登陆界面可以修改登陆密码。
子模块划分如下:
●收银台POS系统(需要权限:
收银员)
顾客拿商品到收银台时,首先出示会员卡(如果是会员),收银员通过读卡机读取会员卡的会员号,然后通过条形码扫描仪一一扫描商品,获得商品编号,并手动输入购买数量,结算后显示应付金额。
在扫描过程中,结算之前,可以取消某项商品的购买信息。
收银员还可以在这里看到管理人员发送的通知消息。
●采购入库(需要权限:
采购员)
采购员只能采购数据库中已存在的商品。
对每种采购的商品输入采购的商品编号,采购数量,和采购价格,这些商品的信息和采购的信息显示在列表中,结算入库后列表清空,并将数据写入数据库。
●商品及库存管理(需要权限:
管理人员)
1.
引入新商品:
填写商品的名称,规格,供应商和售价,将商品引入超市。
添加后的商品库存量为0,需要采购。
供应商或规格不同的同名商品,应作为不同的商品对待。
2.
商品查询:
可以根据商品的名称,供应商,库存量进行查询,并可以查看所有商品的信息列表。
显示的信息包括编号,名称,规格,供应商和库存量。
3.
删除商品:
只能删除库存量为0的商品,表明不再引进此商品。
支持批量删除。
4.
修改商品信息:
在商品信息列表中选择一行,对其基本信息进行修改。
●会员管理(需要权限:
管理人员)
5.
会员注册:
填写顾客姓名,住址,电话及身份证号,即可注册成为会员,享受优惠待遇。
6.
会员查询:
可以按会员的编号和姓名进行查询,并可以查看所有会员的信息列表。
显示的信息包括编号,姓名,住址,电话,身份证号和累计消费金额。
7.取消会员身份:
删除会员资料,使其会员卡失效。
支持批量删除。
8.
查看消费记录:
在会员信息列表中选择一行,对其详细的消费记录进行查询。
●销售管理(需要权限:
管理人员)
对历史的销售记录进行查看。
可以按商品编号,商品名称或日期进行查询,也可以列出所有的销售记录。
显示信息包括商品编号,商品名称,商品规格,销售数量,销售价格,收银员和销售时间。
●员工管理(需要权限:
管理人员)
9.
增加员工:
添加新上岗的员工的信息。
需要填写工号,姓名,登陆密码和职位。
10.
员工信息列表:
列出了所有员工的信息列表。
显示的信息包括工号,姓名,职位和在职情况。
11.
员工离职:
将离职员工的在职情况置为“离职”。
12.
修改员工信息:
在员工信息列表中选择一行,修改其基本信息(姓名和职位)。
13.
向收银台发送消息:
输入运行本系统的收银台的IP和消息,可以向收银员发送通知消息。
●采购管理(需要权限:
管理人员)
对历史的采购记录进行查看。
可以按商品编号,商品名称或日期进行查询,也可以
列出所有的采购记录。
显示信息包括商品编号,商品名称,商品规格,供应商,采购数量,采购价格,采购时间,采购员和当前库存量。
●供销情况分析(需要权限:
管理人员)
对历史采购及销售数据,用图形的方式显示其供销情况及盈利状况,直观的供管理人员分析。
●优惠规则管理(需要权限:
管理人员)
14.会员优惠规则:
设置对会员购物实行多少折优惠。
15.
全场优惠规则:
设置促销活动,全场商品打折多少。
●缺货报告日志(需要权限:
管理人员)
后台实时监测商品的库存量,当库存量低于某值时,就发出预警,并记入日志。
这里可以查看和清空所有的预警日志。
管理员可控制预警开关,如果打开,则发出报警,否则,只在后台写入日志。
●其他附加功能
1.修改密码,重新登陆
2.配置数据源连接,将数据源连接信息写入配置文件,避免硬编码数据源名,用户名和密码带来的弊端。
3.帮助文档:
解释如何配置服务器及一些常见问题。
4.备份(增量备份和完全备份),恢复数据库。
四、详细设计
(一)开发平台及工具
●开发工具MicrosoftVisualC++6.0
●DBMS:
MicrosoftSQLServer2000
●建模工具:
MicrosoftVisio,SybasePowerDesigner
●第三方库:
Skin++换肤库,MD5加密类
说明:
为了方便的实现多线程及Socket通信等功能,以及个人熟悉程度的因素,选择了VC6.0的开发平台。
而在Windows平台上为数不多的DBMS产品中,Oracle过于庞大,不利于在低配置的机器上运行;Access又过于小型,不能负载大量的数据访问请求,所以选择了适中的MSSQLServer。
为了弥补VC做界面困难的缺陷,软件用了一个换肤的共享库Skin++,以dll形式附带在程序包中。
另外在登陆密码的加密存储中,用到了流行的MD5加密,算法实现来源于。
(二)存储过程及触发器
作为数据库应用系统,数据的一致性需要得到保证,通过单纯的手工编码方式,工作烦琐,容易出错,而且不易于扩展。
采用DBMS的外码约束,Unique约束,触发器的使用来解决这一问题。
在查询效率方面,三表及四表连接查询的过程用存储过程实现。
对商品,采购,销售表的外码没有强制级联删除和级联修改,因不再进购某种商品,或某雇员辞职,不应该影响过去的采购,销售记录。
●查询销售记录的存储过程
CREATEPROCEDURE[dbo].search_sell_rec
@idvarchar(8),
@namevarchar(30),
@timevarchar(30),
@midvarchar(8)
AS
IF(@mid='')
BEGIN
SELECTP.p_idASpid,P.p_nameASpname,P.p_scaleASpscale,
S.s_qtyASsqty,S.s_priceASsprice,S.s_timeASstime,
E.e_nameASenameFROMproductP,sellS,employeeE
WHEREP.p_idlike'%'+@id+'%'andP.p_namelike'%'+@name+'%'
andS.s_timelike'%'+@time+'%'andS.p_id=P.p_id
andS.e_id=E.e_id
ORDERBYS.s_iddesc
END
IF(@mid<>'')
BEGIN
SELECTP.p_idASpid,P.p_nameASpname,P.p_scaleASpscale,
S.s_qtyASsqty,S.s_priceASsprice,S.s_timeASstime,
E.e_nameASename,P.p_qtyASpqtyFROMproductP,
sellS,employeeE
WHEREP.p_idlike'%'+@id+'%'andP.p_namelike'%'+@name+'%'
andS.s_timelike'%'+@time+'%'andS.m_id=@midand
S.p_id=P.p_idandS.e_id=E.e_id
ORDERBYS.s_iddesc
END
GO
●查询采购记录的存储过程
CREATEPROCEDURE[dbo].search_buy_rec
@idvarchar(8),
@namevarchar(30),
@timevarchar(30)
AS
BEGIN
SELECTP.p_idASpid,P.p_nameASpname,P.p_scaleASpscale,P.p_manuASpmanu,
B.b_qtyASbqty,B.b_priceASbprice,B.b_timeASbtime,
E.e_nameASenameFROMproductP,buyB,employeeE
WHEREP.p_idlike'%'+@id+'%'andP.p_namelike'%'+@name+'%'and
B.b_timelike'%'+@time+'%'andB.p_id=P.p_id
andB.e_id=E.e_id
ORDERBYB.b_iddesc
END
GO
●触发器:
采购商品后,自动增长库存量
CREATETRIGGERqty_incON[dbo].[buy]
FORINSERT
AS
UPDATEPSETP.p_qty=P.p_qty+I.b_qty
FROMproductASPINNERJOININSERTEDASI
ONP.p_id=I.p_id
●触发器:
销售商品后,自动减少库存量,并为相应会员增加其消费金额记录
CREATETRIGGERqty_decONdbo.sell
FORINSERT
AS
UPDATEPSETP.p_qty=P.p_qty-I.s_qty
FROMproductASPINNERJOININSERTEDASI
ONP.p_id=I.p_id
DECLARE@membervarchar(10)
DECLARE@consumedecimal(9,2)
SET@member=
(SELECTm_idFROMINSERTED)
SET@consume=
(SELECTs_priceFROMINSERTED)
if@member<>''
BEGIN
UPDATEmemberSETm_consume=m_consume+@consume
WHEREm_id=@member
END
●触发器:
删除商品时,如果库存量不为0,则撤销操作。
并将相应销售及采购记录的编号字段置空
CREATETRIGGERp_delON[dbo].[product]
FORDELETE
AS
DECLARE@qtyint
SET@qty=(SELECTD.p_qtyFROMDELETEDASD)
IF(@qty<>0)
BEGIN
RAISERROR('该商品的库存量不为0,不能删除',0,1)
ROLLBACKTRANSACTION
END
ELSE
UpdateSSETS.p_id=NULL
FROMsellASSINNERJOINDELETEDASD
ONS.p_id=D.p_id
UpdateBSETB.p_id=NULL
FROMbuyASBINNERJOINDELETEDASD
ONB.p_id=D.p_id
COMMITTRANSACTION
●触发器:
删除会员时,将相应销售记录中会员编号字段置空
CREATETRIGGERmem_delON[dbo].[member]
FORDELETE
AS
UPDATEsellSETm_id=nullWHEREm_id=
(SELECTm_idFROMDELETED)
(三)编码设计
系统采用MFC对话框应用程序以方便开发,MFC对常用API做了很好的封装。
每个对话框对应一个类,每个数据库表对应一个类。
根据程序需要,自己再一次做了封装。
1.在数据源连接方面,使用ini配置文件来存储DSN,UID,PWD的信息,以避免硬编码方式带来的种种问题:
不能修改密码,不能换数据库用户等等。
主要采用了GetPrivateProfileString和WritePrivateProfileString两个WindowsAPI。
1.很多数据需要通过列表框来显示,因此封装了一个CListStyle类来设置列表框样式及对其进行通用操作。
#ifndef_LISTSET_H_
#define_LISTSET_H_
classCListStyle
{
protected:
CListCtrl*m_pList;//列表框控件指针
public:
CListStyle();
voidAttachCtrl(CListCtrl*pList);//把对象与列表框关联
voidSetStyle(void);//设置列表框的ExStyle
//为列表框添加Header属性
voidSetCol(CString*pCol,int*pWidth,intsize);
//将上两个函数融合
voidSetStyleAndCol(CString*pCol,int*pWidth,intsize);
//向列表框插入一行数据
voidInsertItems(intnItem,CString*pItem,intsize);
};
#endif
2.由于存储过程不能通过ClassWizard创建类,所以手工完成类建立和RFX数据交换。
3.在需要的地方采用多线程。
⏹程序启动初始化数据库连接时,显示启动画面。
⏹备份数据库时显示进度。
⏹后台监控商品库存量
(四)界面设计
●登陆界面:
●收银台POS界面:
●
采购入库界面:
●
管理人员主界面:
五、参考文献
1.《VisualC++.net2003程序设计》何炜等冶金工业出版社P247-261
2.《数据库系统概论(第三版)》萨师煊等高等教育出版社
3.《Windows用户界面开发》[美]EverettN.McKay著北京大学出版社
4.常州VC编程网用VisualC++开发数据库应用程序
5.MicrosoftMSDN关于MFCODBC部分的文档
六、课程设计总结
小组总结
成员签名:
成员总结
成员一:
成员签名:
成员二:
成员签名:
成员三:
成员签名:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 作业 设计 示范 文档