目 录
1.需求分析
1.1系统目标与要求
1.2系统分析
1.3业务流程图
2.系统逻辑方案
2.1数据流程图(DFD):
2.2数据字典(简称DD)
3系统总体结构设计
3.1软件系统总体结构设计
3.2数据存储的总体设计
3.3系统功能模块设计
4数据库详细设计
4.1数据库设计
4.2数据库的完整性和安全性
5.数据库操作(SQL Server2000语句完成)
5.1创建仓储物资管理系统
5.2创建各类别索引信息表
5.3建立存储过程向表中插入、修改、删除数据
5.3.1插入数据的存储过程
5.4建立存储过程实现查询
5.5视图建立
5.6建立触发器
6课程设计小结
7参考文献
仓储物资管理系统
1.需求分析
1.1系统目标与要求
要求本系统能够投入实际的使用并且满足基本的功能要求。要求具有较高的可靠性、安全性和易维护性,具有较高的可移植性。
本系统实现了以下的功能:
基本信息模块:包括商品信息、员工信息、客户信息、供应商信息四个子模块
(1)仓库管理模块:仓库编号、仓库名称、仓库负责人。
(2)供应商管理模块:包括供应商个人(企业)信息、供应商供应货物信息查询两个子模块。
(3)客户管理模块:包括客户个人(企业)信息、订货信息查询两个子模块。
(4)员工管理模块:包括员工个人信息查询、员工薪资查询、员工值勤查询三个子模块。
(5)物资信息模块:商品信息查询、入库登记查询、出库登记查询、退货查询、库存查询五个个子模块。
(6)报表管理:财务报表查询、报表打印两个子模块。
(7)系统维护模块:包括数据安全管理、操作员管理、权限设置三个模块
说明:根据对现实仓储物资管理业务,将用户分为二类超级管理员(经理)、普通管理员(操作员)。
1.2系统分析
用户活动及活动图
①提供产品资料;
②提供供应商个人(企业)资料;
③记录供应商品的信息;
(2)员工主要活动有:
①值勤信息;
②记录入库、出库信息;
③记录退货信息;
现金收支是指对进出帐目的记录统计。
(3)顾客主要活动:
①查询商品信息;
②选购商品。
③提供客户个人信息;
(4)仓库负责人主要活动:
①管理员工信息;
②选购商品商品库存信息查询;
③财务状况管理;
1.3业务流程图
2.系统逻辑方案
系统分析的主要成果是系统的逻辑模型。本系统的逻辑模型主要是以系统的数据流图和数据字典为主要描述工具。即在无纸化网络考试系统管理方式和业务流程进行认真分析和研究的基础上,排除现有组织机构和业务分工所造成的信息障碍。
2.1数据流程图(DFD):
数据流图是组织中信息运动的抽象。是在调研的基础上,从系统的科学性、管理的合理性、实际运动的可行性角度出发。将信息处理功能和彼此之间的联系自顶向下,逐层分解,从逻辑上精确地描述系统应具有的数据加工功能、数据输入、数据输出、数据存储及数据来源和去向(外部实体)等项目。
图2.1 数据流程图
在数据流程图中可以很清楚的看到数据的流向,商品信息的数据分别能够流向经理、员工和顾客。商品销售信息的信息也流经理。商品销售信息记录的是商品销售和退还的信息。顾客表信息从顾客流出又可以流回到顾客和员工、经理。
2.2数据字典(简称DD)
绘制DFD,只是对数据处理和彼此之间的联系进行了说明。为进一步明确数据的详细内容和数据加工过程,应将数据流图中的全部数据流及其组成部分的数据元素,数据存储,数据加工,通过数据字典描述清楚,以便于此后系统设计的进行。这就需要开发人员编写详细的数据字典,来描述系统开发过程的细节。
下面列出本系统中的数据项、数据流、数据存储、加工处理和数据结构的数据字典。数据字典可采用图表格式或较紧凑的记录格式描述,本文采用的是图表格式。
数据项的DD表列举如下:
表2.1 商品编号的数据字典
数 据 项 | ||||
系统名:仓储物资管理系统 编号:I001 名称:商品编码 别名: | ||||
数据项值: 类型:字符型 长度:6个字节 取值范围: | ||||
简述:每种商品都具有唯一的编号,它是某种商品的唯一标识符,每种商品都有唯一的编号,如“011976”通常用前两位数字表示入库的年份,中间两位表示类别,最后两位表示该商的序号。如果该类商数超过100种时,可用“0119A0”表示第100种商。 | ||||
修改记录: | 编写 | 日期 | ||
审核 | 日期 |
表2.2 商品名称
数 据 项 | ||||
系统名:仓储物资管理系统 编号:I002 名称:商品名称 别名: | ||||
数据项值: 类型:字符型 长度:32个字节 取值范围: | ||||
简述:每种商品都具有唯一商品标识。 | ||||
修改记录: | 编写 | 日期 | ||
审核 | 日期 |
表2.3 密码
数 据 项 | ||||
系统名:仓储物资管理系统 编号:I003 名称:售价 别名: | ||||
数据项值: 类型:数值型 长度:8个字节 取值范围: | ||||
简述:每种商品都要设置一个销售价格。 | ||||
修改记录: | 编写 | 日期 | ||
审核 | 日期 |
注:因限于篇幅,其余数据项的DD表在此略过。
3系统总体结构设计
3.1软件系统总体结构设计
软件系统总体结构设计的主要任务就是将整个系统合理的划分成各个功能模块,正确处理模块之间与模块内部的联系及它们之间的调用关系和数据联系,定义各模块的内部结构等,本系统的软件总体结构按分解-协调的原则,信息隐蔽抽象的原则,自顶向下的原则,一致性原则,面向用户的原则进行设计。
3.2数据存储的总体设计
按用途分类可把本系统文件分成以下几种:
- 主文件:系统中的主文件是最重要的共享文件,主要存放具有固定值属性的数据。它需要长期保存,并不断更新。
- 处理文件:处理文件包含下一次更新文件所需要的全部记录,本系统中的处理文件如新闻登录日志文件、待审核项目信息文件。
3.3系统功能模块设计
通过对系统的数据流图进行分析,进一步进行功能分解,直到分解成含义明确,功能单一的功能模块,从而得到系统的功能模块结构图。
图3.1系统的功能模块结构
4数据库详细设计
4.1数据库设计
数据库的设计是指对一个给定的应用环境,构造数据库模式,建立数据库及其应用系统,满足各种用户需求。作为信息资源开发、管理和服务的一种有效的手段,数据库技术的应用已越来越广泛,从小型的单项事务处理系统到大型的信息系统大都用先进的数据库技术来保持系统数据的安全性、完整性和共享性。对一个实际的系统来说,数据库表的设计在遵循数据库理论的同时,必须能用开发工具来实现用户在各方面提出的功能要求。
4.1.1E-R图:
在系统的数据库设计中,先要对系统分析得到的数据字典中的数据存储进行分析,分析各数据存储之间的关系,然后才能得出系统的关系模式。可以采用E-R图的方法来进行数据结构分析,E-R设计方法是一种通过E-R图来描述现实世界信息结构的DB设计方法。E-R图由实体、属性、联系三部分组成。
各分E-R图说明如下:
- 仓库负责人E-R图:
- 供应商E-R图:
- 员工E-R图:
- 商品销售清单E-R图:
- 客户E-R图:
- 商品E-R图:
(7)供应E-R图:
(8)查询E-R图:
(9)整体E-R图:
图3.2整体E-R图
4.1.2关系模式与码:
商品信息(商品编号,商品名称,商品类别代号,售价,进价,库存量,供应商,有效期) 外码:商品类别代号、 供应商
员工信息(员工号,姓名,用户名,密码,职位,权限)
客户信息(客户号,客户名称,联系人,联系方式,客户所在城市)
供应商信息(供应商号,供应商名称,联系人,联系方式,供应商所在城市)
供应信息(供应商编号,商品编号,供应日期,供应数量)
查询信息(客户编号,商品编号,查询日期)
商品销售信息(销售编码,出库日期,入库日期,商品编码,商品名称,单价,入库数量,出库数量,供应商编码,销售员编码) 外码:销售员编码、商品编码
4.1.3关系模式优化:
在上述关系模式中,每一个分量都是不可分割的数据项所以都符合第一范式;而且前四个关系模式都是单个属性作为码,没有任何非主属性对码部分函数依赖,在商品销售信息内虽由三个属性作为码,但也不存在非主性对码的部分函数依赖,所以上都符合第二范式;商品信息、商品类别索引、客户信息、供应商信息四个关系模式中都不存在非主属性对码的传递函数依赖,都属于第三范式。
在员工信息关系模式中,员工是按照权限分类的,职位不同权限也不同,这样该关系模式就存在了非主属性对码的传递依赖:职工号->职位,职位->权限,所以就将用员工信息分解为如下现个模式:
①员工信息(员工号,姓名,用户名,用户口令,职位)
②职位权限信息(职位,权限)
本系统不考虑职工信息的管理,为了使销售员编号与销售员的职工号连系起来,并能通过职工姓名和职位来修改用户信息所以把员工的部分信息(职工号,姓名,职位)和经理(用户名,密码)合成了员工信息(员工号,姓名,用户名,密码,职位,权限)以便系统功能的实现,所以在此不采用模式分解。
商品销售信息中有大量的数据冗余,表达不明确,将其分解为如下两个模式:
①商品销售主表(销售编码,出库入库日期,销售员编号,总金额)
②商品销售子表(销售编码,出库入库日期,商品编码,商品名称,单价,数量,供应商)
4.1.4数据库设计
对上述E-R图所需的实体需要的几个关键表的设计如下:
表4.1:商品信息表
merchandiseCode | merchandiseName | MerKindeCode | Price | ListPrice | Number | FirmName | Userfulllife |
1001 | 电扇 | 001 | 140 | 180 | 1435 | 唔亥 | 2010-12-5 |
2002 | 沙发 | 004 | 1500 | 1700 | 4255 | 湘西 | 2010-12-12 |
2003 | 铁锅 | 002 | 120 | 145 | 4235 | 蜀汉 | 2012-10-6 |
2004 | 拖把 | 003 | 154 | 165 | 53532 | 梁林 | 2010-6-5 |
3001 | 文曲星 | 005 | 100 | 108 | 355 | 杜恒 | 2012-9-16 |
表4.2:顾客信息表
GuestCode | GuestName | GLINK | GLinkTell | CITY |
015112 | 杨洋 | 杨希希 | 668401 | 嘉兴 |
065114 | 林丹 | 胡浩那 | 614425 | 广东 |
052114 | 易会挺 | 郝东天 | 659024 | 温州 |
043115 | 华怀起 | 陈建东 | 615874 | 上虞 |
014221 | 熙引 | 何钦娜 | 651283 | 大连 |
025471 | 蓝强 | 胡海少 | 691472 | 上海 |
表4.3:供应商信息表
FirmCODE | FirmNAME | LINK | LinkTell | CITY |
015 | 唔亥 | 肖扬 | 681472 | 湖州 |
014 | 湘西 | 吴江 | 658421 | 杭州 |
051 | 蜀汉 | 林枫 | 65417 | 温州 |
052 | 梁林 | 林楠 | 68417 | 南湖 |
051 | 杜恒 | 吴枫 | 65917 | 宁波 |
表4.4:商品销售主表
SaleNo | WorkNo | SaleDate | Amount |
13 | 075101 | 2009-01-05 00:00:00.000 | 1000.0000 |
15 | 075201 | 2009-01-07 00:00:00.000 | 1500.0000 |
20 | 075215 | 2009-06-01 00:00:00.000 | 800.0000 |
表4.5:商品销售子表
SaleNo | merchandiseCode | merchandiseName | Price | number | Amount |
13 | 1001 | 电扇 | 140 | 20 | 300.0000 |
15 | 2002 | 沙发 | 1500 | 15 | 1200.0000 |
20 | 3001 | 文曲星 | 100 | 20 | 300.0000 |
表4.6:商品类别索引信息表
MerKindCode | KindExplanation |
001 | 电器类 |
002 | 厨房用品 |
003 | 清洁用品 |
004 | 家具类 |
005 | 文具类 |
WorkNo | WNAME | UserRegName | Password | Position | WPower |
075101 | 美美 | zkl01 | 456789 | 员工 | 查询 |
075201 | 娜娜 | zjm01 | 123789 | 员工 | 查询 |
075215 | 佳佳 | wmx05 | 147258 | 员工 | 查询 |
075120 | 冉冉 | zzm20 | 123456 | 员工 | 查询 |
075201 | 肖捷 | ffqff | 124567 | 员工 | 查询 |
表4.8:供应信息表
FirmCode | MerchandiseCode | number | FirmDate |
015 | 1001 | 1435 | 2009-7-1 |
014 | 20002 | 4255 | 2009-3-2 |
051 | 2003 | 4235 | 2008-8-24 |
052 | 2004 | 53532 | 2009-5-28 |
051 | 3001 | 355 | 2010-1-9 |
表4.9:查询信息表
GuestCode | MerchandiseCode | SearchDate |
015112 | 1001 | 2010-2-11 |
065114 | 2002 | 2009-3-27 |
052114 | 2003 | 2008-8-24 |
043115 | 2004 | 2009-5-28 |
014221 | 3001 | 2010-1-9 |
数据库的完整性和安全性
4.2.1数据库的完整性
数据库的完整性是指数据的正确性和相容性。数据库管理系统(DBMS)用一定的机制来检查数据库中的数据是否满足规定的条件——完整性约束条件,数据的约束条件是语义的体现,将作为模式的一部分存入数据库中。
本系统中定义了表与表之间的联系有助于实现完整性规则,一般在程序中实现具体的完整性控制。
实体完整性:要求主键属性的值不为空。
例如:create table MerInfor/*创建商品信息表*/
(MerchandiseCode char(6) constraint M_PRIM PRIMARY KEY,
MerchandiseName varchar(8) NOT NULL,
MerKindeCode char(10) FOREIGN KEY REFERENCES MerID(MerKindeCode),
Price Money,
ListPrice Money,
Number Int,
FirmCode char(10) FOREIGN KEY REFERENCES FirmInfor(FirmCode),
Userfulllife Datetime)
参照完整性:维护实体间的联系,保证关系模式间属性的正确引用。
例如:create table sellMain/*创建商品销售主表*/
(SaleNo int constraint SM_PRIM PRIMARY KEY,
WorkNo char(10) FOREIGN KEY REFERENCES WorkInfor(WorkNo),
SaleDate DateTime,
Amount Money)
4.2.2数据库的安全性
数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏。在数据库系统中,大量的数据集中存放,而且为许多用户直接共享,是宝贵的信息资源,系统的安全保护措施就显得更为重要,它保护数据库防止恶意的破坏和非法的存取。
本系统包括数据库的安全和服务器的安全。采用管理员表示和鉴定的方法实现数据库的安全,此安全管理措施并不在前台开发工具中实现,而是在后台数据库中实现。在登录数据库时,系统让管理员户表示自己的身份,不同的管理员权限不同,系统进行核实,鉴别此管理员是否为合法用户,若是,系统进一步核实用户,通常要求用户输入口令,系统和对用户口令以鉴别用户身份。服务器的安全也是通过用户在登录服务器时输入合法的用户名和密码来实现的。这是一种简单可行的方法,实现起来比较方便。没有采用更加复杂的系统安全管理措施是因为本管理系统一般是应用在校园网中,采用安全管理措施主要是为了防止没有修改权限的用户无意间修改了数据,因此采用用户标识和鉴定的安全管理措施就能够保障数据库的安全性。
5.数据库操作(SQL Server2000语句完成)
数据库的选择和部分重要SQL代码
5.1创建仓储物资管理系统
create database StoragematerialsSystem/*创建仓储物资管理系统*/
use StoragematerialsSystem
5.2创建各类别索引信息表
create table MerInfor/*创建商品信息表*/
(merchandiseCode VARCHAR (6) constraint M_PRIM PRIMARY KEY,
merchandiseName varchar(8) NOT NULL,
MerKindeCode varchar(10) ,
Price Money,
ListPrice Money,
Number Int,
FirmCode char(10),
Userfulllife Datetime )
create table GueInfor/*创建顾客信息表*/
(GuestCODE VARCHAR(10) NOT NULL,
GuestNAME VARCHAR(16) NOT NULL,
GLINK varchar(12),
GLinkTell VARCHAR(11),
CITY VARCHAR(8))
create table sellMain/*创建商品销售主表*/
(SaleNo VARCHAR(4) NOT NULL,
WorkNo VARCHAR(10) NOT NULL,
SaleDate DateTime ,
Amount Money)
create table sellChild/*创建商品销售子表*/
(SaleNo int constraint SC_PRIM PRIMARY KEY,
merchandiseCode VARCHAR(6) NOT NULL,
merchandiseName VARCHAR (32) NOT NULL,
Price money,
number int,
Amount Money )
create table MerID/*创建商品类别索引信息*/
(MerKindeCode CHAR(10)constraint MI_PRI PRIMARY KEY,
KindExplanation VARCHAR(10) NOT NULL)
create table WorkInfor/*创建员工表*/
(WorkNo VARCHAR(10) NOT NULL,
WNAME VARCHAR(12),
UserRegName VARCHAR (6) NOT NULL,
Password VARCHAR(10) NOT NULL ,
Position VARCHAR(10),
WPower VARCHAR (4))
create table FInfor/*创建供应信息表*/
(FirmCODE VARCHAR(10) NOT NULL,
merchandiseCode VARCHAR(16) NOT NULL,
number int,
FirmDate DateTime)
create table SearchInfor/*创建查询信息表*/
(GuestCODE VARCHAR(10) NOT NULL,
merchandiseCode VARCHAR(16) NOT NULL,
SearchDate DateTime)
5.3建立存储过程向表中插入、修改、删除数据
5.3.1插入数据的存储过程
create proc MerInfor_proc
@merchandiseCode varchar(6),@merchandiseName varchar(8),@MerKindeCode char(10),@Price money,@ListPrice money,
@Number int,@FirmName char(10),@Userfulllife Datetime
as
insert into MerInfor(merchandisecode ,merchandiseName,MerKindeCode,Price,ListPrice,
Number,FirmName,Userfulllife) values(@merchandiseCode,@merchandiseName,@MerKindeCode,@Price,@ListPrice,
@Number,@FirmName,@Userfulllife)
exec MerInfor_proc '1001','电扇','001',140,180,'1435','唔亥','2010-12-5'
exec MerInfor_proc '2002','沙发','004',1500,1700,'4255','湘西','2010-12-12'
exec MerInfor_proc '2003','铁锅','002', 120,145,'4235','蜀汉','2012-10-6'
exec MerInfor_proc '2004','拖把','003',154,165,'53532', '梁林','2010-6-5'
exec MerInfor_proc '3001','文曲星','005',100,108,'355','杜恒','2012-9-16'
create proc GueInfor_proc
@GuestCode char(10),@GuestName varchar(16),@GLink varchar(12),@GLinkTell varchar(11),
@City varchar(8)
as
insert into GueInfor(GuestCode,GuestName,GLink,GLinkTell,
City) values(@GuestCode,@GuestName,@GLink,@GLinkTell,@City)
exec GueInfor_proc '015112','杨洋','杨希希','668401','嘉兴'
exec GueInfor_proc '065114','林丹','胡浩那','614425','广东'
exec GueInfor_proc '052114','易会挺','郝东天','659024','温州'
exec GueInfor_proc '043115','华怀起','陈建东','615874','上虞'
exec GueInfor_proc '014221','熙引','何钦娜','651283','大连'
exec GueInfor_proc '025471','蓝强','胡海少','691472','上海'
create proc sellMain_proc
@SaleNo VARCHAR(4),@WorkNo VARCHAR(10),@SaleDate DateTime,@Amount Money
as
insert into sellMain(SaleNo,WorkNo,SaleDate,Amount)
values(@SaleNo,@WorkNo,@SaleDate,@Amount)
exec sellMain_proc '13','075101','2009-1-5',1000
exec sellMain_proc '15','075201','2009-1-7',1500
exec sellMain_proc '20','075215','2009-6-1',800
create proc sellChild_proc
@SaleNo int,@MerchandiseCode char(6),@MerchandiseName varchar(32),@Price Money,@Number Int,@Amount Money
as
insert into sellChild(SaleNo,MerchandiseCode,MerchandiseName,Price,number,Amount)
values(@SaleNo,@MerchandiseCode,@MerchandiseName,@Price,@Number,@Amount)
exec sellChild_proc '13','1001','电扇',140,'20',300
exec sellChild_proc '15','2002','沙发',1500,'15',1200
exec sellChild_proc '20','3001','文曲星',100,'20',300
create proc MerID_proc
@MerKindeCode char(10),@KindExplanation varchar(12)
as
insert into MerID (MerKindeCode,KindExplanation) values(@MerKindeCode ,@KindExplanation )
exec MerID_proc '001','电器类'
exec MerID_proc '002','厨房用品'
exec MerID_proc '003','清洁用品'
exec MerID_proc '004','家具类'
exec MerID_proc '005' ,'文具类'
create proc WorkInfor_proc
@WorkNo char(10),@WName varchar(12),@UserRegName char(6),@Password char(10),@Position char(10),@Power VARCHAR(4)
as
insert into WorkInfor(WorkNo,WName,UserRegName,Password,Position,wPower)
values(@WorkNo,@WName,@UserRegName,@Password,@Position,@Power)
exec WorkInfor_proc '075101','美美','zkl01','456789','员工','查询'
exec WorkInfor_proc '075201','娜娜','zjm01','123789','员工','查询'
exec WorkInfor_proc '075215','佳佳','wmx05','147258','员工','查询'
exec WorkInfor_proc '075120','冉冉','zzm20','123456','员工','查询'
exec workInfor_proc '075201','肖捷','ffqff','124567','员工','查询'
create proc FInfor_proc
@FirmCode char(10),@MerchandiseCode varchar(16),@number int,@FirmDate DateTime
as
insert into FInfor(FirmCode,MerchandiseCode,number,FirmDate)
values(@FirmCode,@MerchandiseCode,@number,@FirmDate)
exec FInfor_proc '015','1001','1435','2009-7-1'
exec FInfor_proc '014','2002','4255','2009-3-2'
exec FInfor_proc '051','2003','4235','2008-8-24'
exec FInfor_proc '052','2004','53532','2009-5-28'
exec FInfor_proc '051','3001','355','2010-1-9'
create proc SearchInfor_proc
@GuestCode char(10),@MerchandiseCode varchar(16),@SearchDate DateTime
as
insert into SearchInfor(GuestCode,MerchandiseCode,SearchDate)
values(@GuestCode,@MerchandiseCode,@SearchDate)
exec SearchInfor_proc '015112','1001','2010-2-1'
exec SearchInfor_proc '065114','2002','2009-3-27'
exec SearchInfor_proc '052114','2003','2008-8-24'
exec SearchInfor_proc '043115','2004','2009-5-28'
exec SearchInfor_proc '014221','3001','2010-1-9'
5.3.2删除数据的存储过程
create proc MerID_delete_proc
@MerKindeCode char(10)
as
delete from MerId
where MerkindeCode=@MerKindeCode
exec MerID_delete_proc '002'
create proc MerInfor_delete_proc
@MerchandiseName varchar(8)
as
delete from MerInfor
where MerchandiseName=@MerchandiseName
create proc GueInfor_delete_proc
@GuestCode char(10)
as
delete from GueInfor
where GuestCode=@GuestCode
create proc FirmInfor_delete_proc
@FirmCode char(10)
as
delete from FirmInfor
where FirmCode=@FirmCode
create proc WorkInfor_delete_proc
@WorkNo char(10)
as
delete from WorkInfor
where WorkNo=@WorkNo
create proc sellMain_delete_proc
@SaleNo int
as
delete from sellMain
where SaleNo=@SaleNo
create proc sellChild_delete_proc
@SaleNo int
as
delete from sellChild
create proc FInfor_delete_proc
@FirmCode char(10)
as
delete from FInfor
where FirmCode=@FirmCode
create proc SearchInfor_delete_proc
@GuestCODE char(10)
as
delete from SearchInfor
where GuestCODE=@GuestCODE
5.3.3修改数据的存储过程
@MerKindeCode char(10),@KindExplanation varchar(12),@MerKindeCode1 char(10)
as
update MerID
set MerKindeCode=@MerKindeCode,KindExplanation=@KindExplanation
where MerKindeCode=@MerKindeCode1
exec MerID_update_proc '004','家具类','001'
create proc MerInfor_update_proc
@MerchandiseCode1 char(6),@MerchandiseName varchar(8),@MerKindeCode char(10),@Price money,@ListPrice money,
@Number int,@FirmCode char(10),@Userfulllife Datetime,@MerchandiseCode char(6)
as
update MerInfor
set MerchandiseCode=@MerchandiseCode1,MerchandiseName=@MerchandiseName,MerKindeCode=@MerKindeCode,Price=@Price,
ListPrice=@ListPrice,Number=@Number,FirmCode=@FirmCode,Userfulllife=@Userfulllife,MerchandiseCode=@MerchandiseCode
where MerKindeCode=@MerKindeCode
create proc GueInfor_update_proc
@GuestCode1 char(10),@GuestName varchar(16),@GLink varchar(12),@GLinkTell varchar(11),
@City varchar(8),@GuestCode char(10)
as
update GueInfor
set GuestCode=@GuestCode1,GuestName=@GuestName,GLink=@GLink,GLinkTell=@GLinkTell,
City=@City
where GuestCode=@GuestCode
create proc FirmInfor_update_proc
@FirmCode1 char(10),@FirmName varchar(16),@Link varchar(12),@LinkTell varchar(11),@City varchar(8),
@FirmCode char(10)
as
update FirmInfor
set FirmCode=@FirmCode1,FirmName=@FirmName,Link=@Link,LinkTell=@LinkTell,City=@City
where FirmCode=@FirmCode
create proc WorkInfor_update_proc
@WorkNo1 char(10),@WName varchar(12),@UserRegName char(6),@Password char(10),@Position char(10),@WPower Int,
@WorkNo char(10)
as
update WorkInfor
set WorkNo=@WorkNo1,WName=@WName,UserRegName=@UserRegName,Password=@Password,Position=@Position,WPower=@WPower
where WorkNo=@WorkNo
create proc sellMain_update_proc
@SaleNo1 int,@WorkNo char(10),@SaleDate DateTime,@Amount Money,@SaleNo int
as
update sellMain
set SaleNo=@SaleNo1,WorkNo=@WorkNo,SaleDate=@SaleDate,Amount=@Amount
where SaleNo=@SaleNo
create proc sellChild_update_proc
@SaleNo1 int,@MerchandiseCode char(6),@MerchandiseName varchar(32),@Price Money,@Number Int,@Uint char(8),@Amount Money,
@SaleNo int
as
update sellChild
set SaleNo=@SaleNo1,MerchandiseCode=@MerchandiseCode,MerchandiseName=@MerchandiseName,Price=@Price,Number=@Number,Amount=@Amount
where SaleNo=@SaleNo
create proc FInfor_update_proc
@FirmCODE1 VARCHAR(10),@merchandiseCode VARCHAR(16),@number int,@FirmDate DateTime
as
update FInfor
set FirmCODE=@FirmCODE1,merchandiseCode=@merchandiseCode,number=@number,FirmDate=@FirmDate
where FirmCODE=@FirmCODE
create proc SearchInfor_update_proc
@GuestCODE VARCHAR(10),@merchandiseCode VARCHAR(16),@SearchDate DateTime
as
update SearchInfor
set GuestCODE=@GuestCODE1,merchandiseCode=@merchandiseCode,SearchDate=@SearchDate
where GuestCODE=@GuestCODE
5.4建立存储过程实现查询
(1) 建立存储过程实现单表查询
/*建立名为“单表查询1”的存储过程,用来查询某种商品的信息*/
create proc 单表查询1
@MerchandiseCode char(6)
AS
select *
from MerInfor
where MerchandiseCode=@MerchandiseCode
/*建立名为“单表查询2”的存储过程,用来查询某个客户的信息*/
create proc 单表查询2
@ GuestName char(11)
AS
select *
from GueInfor
where GuestName =@ GuestName
/*建立名为“单表查询3”的存储过程,用来查询某个员工的信息*/
create proc 单表查询3
@WorkNo char(10)
AS
select *
from WorkInfor
where WorkNo=@WorkNo
/*建立名为“单表查询4”的存储过程,用来查询某个供应商的供应信息*/
create proc 单表查询4
@ FirmCode varchar(1)
AS
select *
from FInfor
where FirmCode =@ FirmCode
/*建立名为“单表查询5”的存储过程,用来查询某个商品编号对应的查询信息*/
create proc 单表查询5
@ MerchandiseCode char(10)
AS
select *
from SearchInfor
where MerchandiseCode =@ MerchandiseCode
(2)建立存储过程实现连接查询
/*建立名为“连接查询1”的存储过程,用来查询某个商品名称对应的商品类型的信息*/
create proc 连接查询1
@MerchandiseName varchar(8)
as
select MerchandiseName ,KindExplanation
from MerInfor,MerID
where MerID.MerKindeCode=MerInfor.MerKindeCode and
MerchandiseName=@MerchandiseName
/*建立名为“连接查询2”的存储过程,用来查询某类商品的销售量*/
create proc 连接查询2
@KindExplanation varchar(12)
as
select KindExplanation,sellChild.Number
from sellChild,MerID,MedInfor
where MerID.MerKindeCode=MerInfor.MerKindeCode and
MerInfor.MerchandiseCode=sellChild.MericineCode and
KindExplanation=@KindExplanation
/*建立名为“连接查询3”的存储过程,用来查询某个销售员销售某种商品的数量*/
create proc 连接查询3
@WName varchar(12),@MerchandiseName varchar(8)
as
select Wname ,MerInfor.MerchandiseName,sellChild.Number
from WorkInfor,sellChild,MerInfor,sellMain
where WorkInfor.WorkNo=sellMain.WorkNo and
sellMain.SaleNo=sellChild.SaleNo and
sellChild.MerchandiseCode=MerInfor.MerchandiseCode and
Wname=@WName and
MerInfor.MerchandiseName=@MerchandiseName
/*建立名为“连接查询4”的存储过程,用来查询某个员工销售的商品类型*/
create proc 连接查询4
@Name varchar(12)
as
select Name,KindExplanation
from sellChild,MerID,MedInfor,sellMain,WorkInfor
where MerInfor.MerchandiseCode=sellChild.MerchandiseCode and
MerID.MerKindeCode=MerInfor.MerKindeCode and
WorkInfor.WorkNo=sellMain.WorkNo and
sellMain.SaleNo=sellChild.SaleNo and
Name=@Name
/*建立名为“连接查询5”的存储过程,用来查询某个供应商提供的商品类型*/
create proc 连接查询5
@FirmName varchar(16)
as
select FirmName,KindExplanation
from MerInfor,MerID,FirmInfor
where MerID.MerKindeCode=MerInfor.MerKindeCode and
MerInfor.FirmCode=FirmInfor.FirmCode and
FirmName=@FirmName
(3)建立存储过程实现嵌套查询
/*建立名为“嵌套查询1”的存储过错,用来查询某类商品的销售量*/
create proc 嵌套查询1
@KindExplanation varchar(12)
as
select Number
from sellChild
where MerchandiseCode In(select MerchandiseCode
from MerID
where KindExplanation=@KindExplanation) /*建立名为“嵌套查询2”的存储过错,用来查询某个供应商提供的商品*/
create proc 嵌套查询2
@FirmName varchar(16)
as
select MerchandiseName
from MerInfor
where FirmCode In (select FirmCode
from FirmInfor
where FirmName=@FirmName)
(4)建立存储过程实现集合查询
/*建立名为“集合查询1”的存储过程,用来查询提供某类商品的供应商数*/
create proc 集合查询1
@MerchandiseName varchar(8)
as
select avg(FirmCode)
from FrimInfor
where FirmCode in(select FirmCode
from MerInfor,FrimInfor
where MerInfor.FirmCode=FrimInfor.FirmCode and MerchandiseName=@MerchandiseName)
/*建立名为“集合查询2”的存储过错,用来查询商品种类数*/
create proc 集合查询2
as
select count(MerKindeCode)
from MerID
/*1,由商品类别表“MerID”建立一个视图,该视图由商品类别表的所有列构成*/
create view 商品类别(商品类别代码,类别说明)
as
select* from MerID
/*2,由客户信息表“GueInfor”建立一个视图,该视图由客户信息表的所有列构成*/
create view 客户信息(客户编码,客户名称,联系人,联系电话,所在城市)
as
select* from GueInfor
/*3,由供应商信息表“FirmInfor”建立一个视图,该视图由供应商信息表的所有列构成*/
create view 供应商信息(供应商编码,供应商名称,联系人,联系电话,所在城市)
as
select* from FirmInfor
/*建立INSERT触发器*/
create trigger MerID_insert on MerID
for insert
as if(select count(*)
from MerID_Mer,inserted
where MerID_Mer.MerKindeCode=inserted.MerKindeCode)=0
rollback transaction
/*建立DELETE触发器*/
create trigger delete_MerID on MerID
for delete
as
select* from MerID
declare @MerKindeCode char(10)
select @MerKindeCode=MerKindeCode from deleted
delete from MerID
where MerKindeCode=@MerKindeCode
select*from MerID
*/建立UPDATE触发器*/
create trigger MerID_update on MerID
for update
as
if update(MerKindeCode)
begin
raiserror('you can not modify this column',16,1)
rollback transaction
end
6课程设计小结
本次课程设计调查了一些商品的销售、供应等,根据其具体情况,设计仓储物资管理系统。加深了对数据库课程知识的理解。由于时间仓促,软件还有很多不足之处,如:商品信息查询部分不够完善,软件代码交冗余、效率不高等等,都相关功能缺乏认识造成的。在今后的学习中我们会加强理论的实践的结合,通过不断摸索来弥补自己在软件制作方面的差距。
在这一个星期的课程设计中,我们回顾了很多以前的东西,也发现了很多的问题,以前都没遇见过的,收获很大,在对不同的功能代码是不一定可以完整的执行的,不过大概都是一样的,只有一些小的细节。我们觉得每一次的课程设计,都是让我们对原有的知识从了解表面到深入本质,从个体学习到整体把握的跳跃,对新知识的汲取,更是让我们把课本的知识应用到实际中,让我们了解了我们的学习有什么用,能够解决什么样的问题,增加我们的自信和学习的动力。在学习过程中,我也能过上网查了不少资料,也看了一些别人设计的图书馆管理信息系统的设计报告,学以致用,自我创新,独立完成了这份自己的报告,从中在学到用,从用又到学,不断修改,系统更新。虽然不能达到完善系统,但也做到了尽善尽美,加强理论学习对完善系统会有很多帮助,不管怎么说,对这次做的课程设计自己觉得还算满意。
通过这次课程设计,我们进一步掌握了数据库知识,也让我们知道了学这门课的作用是什么,会应用于哪些,不会再迷茫。并且还拓展了一些知识,让我们学到了很多课本上学不到的知识,也学会了遇到问题时,如何去解决它,攻克它,而不是以为依赖别人。这次课程设计,我们收获很大。