商店进销存管理系统.docx
《商店进销存管理系统.docx》由会员分享,可在线阅读,更多相关《商店进销存管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
商店进销存管理系统
《数据库类课程设计》
系统开发报告
学号:
xxxxxxxxxxxxxxxxxxx
姓名:
xxxxxxxxxxxxxx
题目:
企业员工薪资管理
指导教师:
xxxxxx
提交时间:
2016年7月4日
一绪论
随着计算机技术的飞速发展和经济体制改革的不断深入,传统企业管理方法、手段以及工作效率已不能适应新的发展需要,无法很好地完成员工工资管理工作.提高公司企业管理水平的主要途径是更新管理者的思想,增强对管理活动的科学认识。
基于 SQL server数据库技术建立一个通用工资管理系统,该系统为提供了查询、增加记录、删除等功能,功能比较的齐全,并对工资进行了统计如津贴管理、报表统计等。
基本上能满足管理员和公司的要求。
此次数据库课程设计的主要设计如下:
原理分析、程序设计过程、程序实现和程序调试以及数据库的设计。
需求分析、概要结构设计、逻辑结构设计、物理结构设计和数据库的实施和维护.
二员工薪资管理系统概述
1、现状分析
随着企业人员数量增加,企业的工资管理工作也变得越来越复杂。
早期的工资统计和发放都是使用人工方式处理纸质材料,不仅花费财务人员大量的时间且不易保存,往往由于个人的因素抄写不慎或计算疏忽,出现工资发放错误的现象。
早期工资管理多采取纸质材料和具有较强的时间限制。
随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上都提出更高的要求。
建设一个科学高效的信息管理系统是解决这一问题的必由之路。
企业内部财务管理是该企业运用现代化技术创造更多更高的经济效益的主要因素之一。
工资管理作为企业内部的一种财务管理也是如此,由于企业职工人数较多,每一位职工的具体实际情况也不尽相同,各项工资条款的发放,如果没有一个完整的管理系统对企业和员工的工作都带来许多的不便。
基于以上原因,企业工资管理系统使用电脑安全保存、快速计算、全面统计,实现工资管理的系统化、规范化、自动化。
2、系统目标
商店进销存管理系统实现进货入库库存和销售出库库存的详情记录,对商品的信息进行详情的记录方便查阅一目了然,同时实现查阅指点时间内的进货情况和销售情况,并通过规则限定商品的单位为‘只’、‘件’、“箱”。
3、系统特点
入库和出库时自动修改对应商品的总库存;在指定时间内查询各种商品的进货数量和销售数量;通过规则限制单位。
三商店进销存管理系统数据库设计
1、需求分析
随着社会发展,人类的生产、生活越来越离不开信息。
谁拥有了更多更有效的信息,谁就将在竞争中处于有利地位.信息产业正在成为一个国家的支柱。
数据作为信息的载体,其管理工具数据库对于信息技术的重要性,正日益得到人们的重视。
只有拥有了先进的数据库技术,才能有效地管理好浩如烟海的数据,并从中提取出对自己有用的信息来加以利用。
数据库在一个信息管理系统中占有非常重要的地位,数据库设计的好坏将直接影响到系统的效率以及实现的结果。
合理的数据库结构设计可以提高数据库存储效率,保证数据的完整性和一致性,让系统具有较快的响应速度。
根据对商店进销存管理系统的管理内容和数据流程的分析,设计数据项和数据结构如下:
商品类别:
类别号、类别名
供应商:
供应商编号、供应商名称、地址、联系电话
业务员:
业务员编号、省份证号、姓名、性别、联系电话
商品信息:
商品编号、商品名称、单价
仓库信息:
仓库编号、名称、电话、地址
入库:
仓库编号、商品编号、入库数量、入库时间
出库:
仓库编号、商品编号、出库数量、出库时间
库存:
仓库编号、商品编号、供应商编号、商品类别、商品数量
转库:
转出仓库编号、转入仓库编号、商品编号、数量、时间
2、数据库物理结构分析
2.1设计策略
由于该系统主要用于商店的商品管理,其中商品的进货、入库、出库、销售,商品的增删减是主要功能,所以应用程序主要就是实现这几个功能.
2。
2系统总体结构图
商店进销存管理系统
商品进销存模块
仓库信息模块
业务员信息模块
商品信息模块
3、数据库概念结构设计
随着社会发展,人类的生产、生活越来越离不开信息。
谁拥有了更多更有效的信息,谁就将在竞争中处于有利地位。
信息产业正在成为一个国家的支柱。
数据作为信息的载体,其管理工具数据库对于信息技术的重要性,正日益得到人们的重视。
只有拥有了先进的数据库技术,才能有效地管理好浩如烟海的数据,并从中提取出对自己有用的信息来加以利用。
数据库在一个信息管理系统中占有非常重要的地位,数据库设计的好坏将直接影响到系统的效率以及实现的结果。
合理的数据库结构设计可以提高数据库存储效率,保证数据的完整性和一致性,让系统具有较快的响应速度。
根据对商店进销存管理系统的管理内容和数据流程的分析,设计数据项和数据结构如下:
商品类别:
类别号、类别名
供应商:
供应商编号、供应商名称、地址、联系电话
业务员:
业务员编号、省份证号、姓名、性别、联系电话
商品信息:
商品编号、商品名称、单价
仓库信息:
仓库编号、名称、电话、地址
入库:
仓库编号、商品编号、入库数量、入库时间
出库:
仓库编号、商品编号、出库数量、出库时间
库存:
仓库编号、商品编号、供应商编号、商品类别、商品数量
转库:
转出仓库编号、转入仓库编号、商品编号、数量、时间
3、数据库概念结构设计
这一设计阶段是在需求分析的基础上而进行的,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑设计打下基础。
概念结构的主要特点是:
(1)。
能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求。
是对现实世界的一个真实模型.
(2).易于理解,从而可以用它和不熟悉计算机的用户交换意见,用户的积极参与是数据库的设计成功的关键。
(3).易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充。
(4).易于向关系、网状、层次等各种数据模型转换。
概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定.
根据上面的设计规划出的实体描述E-R图如下面各图所示。
E-R(Entity—Relationship),用来描述实现世界的概念模型。
E—R图提供了表示实体型,属性和联系的方法。
实体型:
用矩形表示,矩形框内写明试题名。
属性:
用椭圆表示,并用无向边将其与相应的实体联系起来。
商品类别
类别名
类别编号
图3—01商品类别E-R图
供应商
联系电话
地址
供应商名称
供应商编号
图3-02供应商E—R图
业务员
姓名
性别
身份证号码
联系电话
业务员编号
图3-03业务员信息E—R图
商品信息
单价
商品名称
商品编号
图3-04商品信息E—R图
仓库信息
名称
地址
电话
仓库编号
联系电话
图3-05仓库信息E—R图
库存
商品类别
供应商
商品编号
数量
仓库编号
图3-06库存E—R图
入库
供应商编号
商品编号
仓库编号
入库时间
图3-07入库E-R图
出库
商品编号
出库时间
出库数量
供应商编号
仓库编号
图3-08出库E-R图
转库
商品编号
数量
转入仓库编号
转出仓库编号
时间
图3—09转库E-R图
联系:
用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:
1,1:
n,或m:
n)。
本系统实体和实体之间的关系E—R图,如图3-10所示:
仓库
入库
供应商
出库
业务员
MNMN
供应商
储存时间
1
储存
数量
商品类别
1
N
商品
图3—10实体之间的关系E—R图
4、数据库逻辑结构设计
概念结构是独立于任何一种数据模型的信息结构。
逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E—R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
[4]
从理论上讲,逻辑结构应该选择最适于相应概念结构的数据模型,然后对支持这种数据模型的各种DBMS进行比较,从中选出最合适的DBMS。
设计逻辑结构时一般要分三步进行:
(1)。
将概念结构转换为一般的关系、网状、层次模型;
(2)。
将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换;
(3)。
对数据模型进行优化。
根据系统的使用以及实现功能的需求分析,在SQLSERVER2008数据库系统设计了以下几个数据表:
具体分析已在上面的E—R图分析好了.下面是各个表的详细设计:
商品类别(category):
字段
类型
是否为空值
约束
说明
CategoryID
Char(8)
否
主键
商品类别编号
CategoryName
Varchar(20)
否
类别名称
供应商(supplier):
字段
类型
是否为空值
约束
说明
SupplierID
Char(8)
否
主键
供应商编号
SupplierName
Varchar(20)
否
供应商名称
Address
Varchar(50)
供应商地址
Phone
Char(11)
供应商电话
业务员(salesman):
字段
类型
是否为空值
约束
说明
SalesmanID
Char(8)
否
主键
业务员编号
IDcard
Char(18)
否
身份证号码
SalesmanName
Varchar(10)
否
姓名
Sex
Bit
否
性别
Phone
Char(11)
电话
商品信息(goods):
字段
类型
是否为空值
约束
说明
GoodsID
Char(8)
否
主键
商品编号
GoodsName
Varchar(10)
否
名称
UnitPrice
Money
否
商品单价
仓库信息(warehouse):
字段
类型
是否为空值
约束
说明
WarehouseID
Char(8)
否
主键
仓库编号
Name
Varchar(10)
否
名称
Phone
Char(11)
否
电话
Address
Varchar(50)
否
地址
库存(replenish):
字段
类型
是否为空值
约束
说明
WarehouseID
Char(8)
否
外键,warehouse表
仓库编号
GoodsID
Char(8)
否
外键,参照goods表
商品编号
SupplierID
Char(8)
否
外键参照
供应商编号
Amount
Int
否
默认为零
商品数量
入库(get):
字段
类型
是否空值
约束
说明
WarehouseID
Char(8)
否
外键参照
仓库编号
GoodsID
Char(8)
否
外键参照
商品编号
CategoryID
Char(8)
否
外键参照
商品类别号
Amount
Int
否
入库数量
Date
Smalldatetime
否
入库时间
出库(put):
字段
类型
是否空值
约束
说明
WarehouseID
Char(8)
否
外键参照
仓库编号
GoodsID
Char(8)
否
外键参照
商品编号
SupplierID
Char(8)
否
外键参照
供应商编号
Amount
Int
否
出库数量
Date
Smalldatetime
否
出库时间
转库(transfer):
字段
类型
是否空值
约束
说明
PutID
Char(8)
否
外键参照
出库编号
GetID
Char(8)
否
外键参照
入库编号
GoodsID
Char(8)
否
外键参照
商品编号
Amount
Char(8)
否
商品数量
Date
Smalldatetime
否
时间
四商店进销存管理系统数据库功能模块的创建代码
1、数据库的创建
createdatabaseshopmanageDB
on
primary
(name=stop,
filename='E:
\study\SQLSERVER\综训项目\stopDB\shopDB.mdf’,
size=4,
maxsize=10,
filegrowth=1)
logon
(name=stoplog,
filename=’E:
\study\SQLSERVER\综训项目\stopDB\stoplog.ldf’,
size=2,
maxsize=4,
filegrowth=1)
2、表的创建
创建category表
createtableCategory
(
CategoryIDChar(8)notnullprimarykey,
CategoryNamevarchar(20)notnull
)
创建supplier表
createtablesupplier
(
supplierIDchar(8)notnullprimarykey,
supplierNamevarchar(20)notnull,
addressvarchar(50),
phonechar(11)
)
创建salesman表
createtablesalesman
(
salesmanIDchar(8)notnullprimarykey,
IDcardchar(18)notnull,
salesmanNamevarchar(10)notnull,
sexbitNOTNULL,
PHONECHAR(11)
)
创建goods表
useshopmanageDB
go
createtablegoods
(
goodsIDchar(8)notnullprimarykey,
goodsNamevarchar(10)notnull,
unitpricemoneynotnull,
categoryIDchar(8)notnullforeignkeyreferencescategory(categoryID),
supplierIDchar(8)notnullforeignkeyreferencessupplier(supplierID)
)
创建warehouse表
createtablewarehouse
(
warehouseIDchar(8)notnullprimarykey,
warehouseNamevarchar(10)notnull,
phonechar(11),
addressvarchar(50)notnull
)
创建replanish表
createtablereplenish
(
warehouseIDchar(8)notnullforeignkeyreferenceswarehouse(warehouseID),
supplierIDchar(8)notnullforeignkeyreferencessupplier(supplierID)
goodsIDchar(8)notnullforeignkeyreferencesgoods(goodsID),
amountintnotnulldefault0,
categoryIDchar(8)notnullforeignkeyreferencescategory(categoryID),
primarykey(warehouseID,goodsID)
)
创建get表
createtableget
(
warehouseIDchar(8)notnullforeignkeyreferenceswarehouse(warehouseID),
supplierIDchar(8)notnullforeignkeyreferencessupplier(supplierID)
goodsIDchar(8)notnullforeignkeyreferencesgoods(goodsID),
amountintnotnulldefault0,
categoryIDchar(8)notnullforeignkeyreferencescategory(categoryID),
riqismalldatetimenotnull,
primarykey(warehouseID,goodsID)
)
创建put表
createtableput
(
warehouseIDchar(8)notnullforeignkeyreferenceswarehouse(warehouseID),
goodsidchar(8)notnullforeignkeyreferencesgoods(goodsid),
amountintnotnull,
riqismalldatetimenotnull,
primarykey(warehouseID,goodsID)
)
3、触发器的创建
为入库创建触发器
createtriggerT_get
onget
forinsert
as
as
declare@warehousechar(8),@supplierchar(8),@goodschar(8),@categorychar(8),@amountint,@unitchar(8),@riqismalldatetime
select@warehouse=warehouseID,@supplier=supplierID,@goods=goodsid,@category=categoryID,@amount=amount,@unit=unit,@riqi=riqi
frominserted
ifexists(selectgoodsIDfromreplenishwhere@warehouse=replenish。
warehouseIDand@goods=replenish.goodsID)
updatereplenishsetreplenish。
amount=replenish。
amount+@amount
where@warehouse=replenish.warehouseIDand@goods=replenish。
goodsID
else
insertreplenish
values(@warehouse,@supplier,@goods,@category,@amount,@unit,@riqi)
为出库创建触发器
altertriggert_put
onput
forinsert
as
declare@warehousechar(8),@goodschar(8),@amountint,@riqismalldatetime
select@warehouse=warehouseID,@goods=goodsid,@amount=amount,@riqi=riqi
frominserted
updatereplenishsetreplenish。
amount=replenish。
amount-@amount
where@warehouse=replenish。
warehouseIDand@goods=replenish.goodsID
为转库创建触发器
createtriggert_re
ontransfer
forinsert
as
declare@putIDchar(8),@getIDchar(8),@goodsIDchar(8),@amountint,@riqismalldatetime
select@putID=putID,@getid=getid,@goodsID=goodsID,@amount=amount,@riqi=riqi
frominserted
insertputvalues(@putID,@goodsID,@amount,@riqi)
insertgetvalues(@getID,@goodsID,@amount,@riqi)
updatereplenishsetamount=amount+amountwherewarehouseID=@getIDandgoodsid=@goodsid
updatereplenishsetamount=amount-amountwherewarehouseid=@putidandgoodsid=@goodsid
4、存储过程的创建
同一时间段销售和进货存储过程
alterprocque
@time1smalldatetime,@time2smalldatetime
as
selectget.goodsid,goodsName,sum(amount)as进货数量
from[get]innerjoingoods
onget。
goodsid=goods。
goodsID
whereriqibetween@time1and@time2
groupby[get].goodsid,goodsName
selectput。
goodsid,goodsName,sum(amount)as销售数量
from[put]innerjoingoods
onput。
goodsid=goods.goodsID
whereriqibetween@time1and@time2
groupbyput.goodsid,goodsName
5、规则的创建
创建规则进行限制
createruler_unit
as
@