物资管理系统数据分析报告

news2024/11/23 20:04:16

目     录

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系统分析

用户活动及活动图

(1)供应商主要参与活动有:

①提供产品资料;

②提供供应商个人(企业)资料;

③记录供应商品的信息;

(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数据存储的总体设计

   按用途分类可把本系统文件分成以下几种:

  1. 主文件:系统中的主文件是最重要的共享文件,主要存放具有固定值属性的数据。它需要长期保存,并不断更新。
  2. 处理文件:处理文件包含下一次更新文件所需要的全部记录,本系统中的处理文件如新闻登录日志文件、待审核项目信息文件。

3.3系统功能模块设计

通过对系统的数据流图进行分析,进一步进行功能分解,直到分解成含义明确,功能单一的功能模块,从而得到系统的功能模块结构图。

图3.1系统的功能模块结构

4数据库详细设计

4.1数据库设计

数据库的设计是指对一个给定的应用环境,构造数据库模式,建立数据库及其应用系统,满足各种用户需求。作为信息资源开发、管理和服务的一种有效的手段,数据库技术的应用已越来越广泛,从小型的单项事务处理系统到大型的信息系统大都用先进的数据库技术来保持系统数据的安全性、完整性和共享性。对一个实际的系统来说,数据库表的设计在遵循数据库理论的同时,必须能用开发工具来实现用户在各方面提出的功能要求。

4.1.1E-R图:

在系统的数据库设计中,先要对系统分析得到的数据字典中的数据存储进行分析,分析各数据存储之间的关系,然后才能得出系统的关系模式。可以采用E-R图的方法来进行数据结构分析,E-R设计方法是一种通过E-R图来描述现实世界信息结构的DB设计方法。E-R图由实体、属性、联系三部分组成。

各分E-R图说明如下:

  1. 仓库负责人E-R图:

  1. 供应商E-R图:

  1. 员工E-R图:

  1. 商品销售清单E-R图:

  1. 客户E-R图:

  1. 商品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.7:员工信息表

表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修改数据的存储过程

create proc MerID_update_proc

@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

5.5视图建立

/*1,由商品类别表“MerID”建立一个视图,该视图由商品类别表的所有列构成*/

create view 商品类别(商品类别代码,类别说明)

as

select* from MerID

/*2,由客户信息表“GueInfor”建立一个视图,该视图由客户信息表的所有列构成*/

create view 客户信息(客户编码,客户名称,联系人,联系电话,所在城市)

as

select* from GueInfor

/*3,由供应商信息表“FirmInfor”建立一个视图,该视图由供应商信息表的所有列构成*/

create view 供应商信息(供应商编码,供应商名称,联系人,联系电话,所在城市)

as

select* from FirmInfor

5.6建立触发器

/*建立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课程设计小结

    本次课程设计调查了一些商品销售、供应等,根据其具体情况,设计仓储物资管理系统。加深了对数据库课程知识的理解。由于时间仓促,软件还有很多不足之处,如:商品信息查询部分不够完善,软件代码交冗余、效率不高等等,都相关功能缺乏认识造成的。在今后的学习中我们会加强理论的实践的结合,通过不断摸索来弥补自己在软件制作方面的差距。

在这一个星期的课程设计中,我们回顾了很多以前的东西,也发现了很多的问题,以前都没遇见过的,收获很大,在对不同的功能代码是不一定可以完整的执行的,不过大概都是一样的,只有一些小的细节。我们觉得每一次的课程设计,都是让我们对原有的知识从了解表面到深入本质,从个体学习到整体把握的跳跃,对新知识的汲取,更是让我们把课本的知识应用到实际中,让我们了解了我们的学习有什么用,能够解决什么样的问题,增加我们的自信和学习的动力。在学习过程中,我也能过上网查了不少资料,也看了一些别人设计的图书馆管理信息系统的设计报告,学以致用,自我创新,独立完成了这份自己的报告,从中在学到用,从用又到学,不断修改,系统更新。虽然不能达到完善系统,但也做到了尽善尽美,加强理论学习对完善系统会有很多帮助,不管怎么说,对这次做的课程设计自己觉得还算满意。

通过这次课程设计,我们进一步掌握了数据库知识,也让我们知道了学这门课的作用是什么,会应用于哪些,不会再迷茫。并且还拓展了一些知识,让我们学到了很多课本上学不到的知识,也学会了遇到问题时,如何去解决它,攻克它,而不是以为依赖别人。这次课程设计,我们收获很大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1003663.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spark的五种Join策略解析】

join基本流程 Spark将参与Join的两张表抽象为流式遍历表(streamIter)和查找表(buildIter),通常streamIter为大表,buildIter为小表,我们不用担心哪个表为streamIter,哪个表为buildIter,这个spark会根据join语句自动帮我…

硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题

前言 不管面试 Java 、C/C、Python 等开发岗位, TCP 的知识点可以说是的必问的了。 任 TCP 虐我千百遍,我仍待 TCP 如初恋。 遥想小林当年校招时常因 TCP 面试题被刷,真是又爱又狠…. 过去不会没关系,今天就让我们来消除这份恐…

hadoop运行WordCount时,Input path does not exist错误原因

修改配置文件core-site.xml 为如下所示 vim /usr/local/hadoop/etc/hadoop/core-site.xmlxml文件改为 <configuration></configuration>如果将core-site.xml文件变动为原来的内容&#xff0c;则程序将不再去hdfs://localhost:9000下寻找input文件&#xff0c;而是…

解决uniapp局部页面(scrollview)下拉刷新出现不能复位的问题

问题所在&#xff1a;&#xff08;困扰了我一天&#xff09; 局部页面自定义刷新出现下拉页面不能复位的问题 看下解决后的效果 废话不多说直接上代码 <view class"content"><scroll-view class"section" :style"{height:300px}" :re…

IDEA设置方法分割线

IDEA设置方法分割线 最近在学习视频教程的时候&#xff0c;总是能看到一些大佬用的IDEA与自己的仿佛不是一个软件&#xff01; 如下图&#xff1a; 看到一些老师用IDEA时&#xff0c;方法上都会有一条横线。感觉这样很方便&#xff0c;于是乎自己设置了一下。现在分享给大家&…

react处理跨域

如果是新建的react项目&#xff0c;没有将webpack的配置文件释放出来的话&#xff0c;请先运行 npm run eject 根目录会出现config文件夹&#xff0c;找到path.js就可以看到proxy的配置&#xff0c;默认读取的是src/setupProxy.js 那么我们可以在src目录下新建setupProxy.js…

快解析内网穿透如何帮你轻松实现外网远程连接?

外网相信大家多少了解一点&#xff0c;其实就是连接不同地区局域网&#xff0c;或者是城域网计算机通信的远程网&#xff0c;因此被称为广域网或者公网。在这个互联网信息时代&#xff0c;很多用户还是不知道怎么连接外网&#xff1f;外网远程桌面连接的步骤是怎样的&#xff1…

【Samba】win 11 不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接

win11 遇到不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接 原因 之前使用两个用户登录过&#xff0c;没有释放 解决方案1 1、打开cmd命令窗口&#xff1a; net use * /del /y 命令中断开所有连接. 2、重新登录 解决方案2 删除后重启

【Linux问题】日期校准

问题 请求阿里云对象存储返回 The difference between the reguest time and the current time is too large. 规定时间和当前时间之间的差异太大。 由于虚拟机出现问题导致服务器时间不准 正常的服务器时间 异常的服务器时间 设置一下时间就好 校准时间 安装 yum insta…

winscope怎么实现user版本上导出方案设计探讨-千里马android framework车载车机手机系统开发

背景 在马哥给讲解怎么用winscope来分析各种闪黑&#xff0c;黑屏等问题后&#xff0c;很多买课的同学都开始使用这个工具用于实际公司的项目了&#xff0c;但是很多同学又开始发现有一个问题&#xff0c;那就发现在user版本的手机设备上发现无法抓取相关的winscope&#xff0…

在 CentOS 7 上安装中文字体

在 CentOS 7 上安装中文字体 1. 安装中文字体包&#xff1a;2. 配置字体&#xff1a;3. 更新字体缓存&#xff1a; 在 CentOS 7 上安装中文字体可以按照以下步骤进行&#xff1a; 1. 安装中文字体包&#xff1a; sudo yum install -y fontconfig sudo yum install -y cjkuni-…

MobaXterm-Chinese中文版本安装及简单使用

项目原地址&#xff1a; https://mobaxterm.mobatek.net/download.html 1.开源中文版 项目地址&#xff1a; https://github.com/RipplePiam/MobaXterm-Chinese-Simplified?loginfrom_csdn 本仓库旨在对 MobaXterm Home Edition &#xff08;Portable edition&#xff09; 进…

新闻轮播图

一、效果图 二、vue中html部分 <div class"swiper-container" ref"swiperDom"><div class"swiper-wrapper"><div class"swiper-slide" v-for"(item,index) in newsImageList" :key"index"><…

【语义分割 01】Open MMLab介绍

1 Tutorial https://github.com/TommyZihao/MMSegmentation_Tutorials https://github.com/TommyZihao/Train_Custom_Dataset https://github.com/TommyZihao/aidlux_tutorial OpenMMLab是一个由中国开发者主导的具有世界影响力的人工智能计算机视觉开源算法体系, 至今已经开…

剪辑的视频太大怎么办?一分钟学会压缩视频

当我们剪辑视频时&#xff0c;常常会遇到视频文件过大&#xff0c;导致传输不变、存储空间不足等问题&#xff0c;那么如何解决这个问题呢&#xff1f;下面就给大家分享几个压缩视频文件大小的方法&#xff0c;轻松解决剪辑视频太大的问题~ 一、使用视频压缩工具 这边给大家分…

树型结构和二叉树的概念及特性

目录 1. 树型结构 1.1 树的概念 1.2重要专有名词概念 1.3 树的表示形式 1.4 树的应用 ​编辑 2. 二叉树 2.1 概念 2.2 两种特殊的二叉树 2.3 二叉树的性质 3.有关二叉树性质的练习题 1. 树型结构 1.1 树的概念 树是一种 非线性 的数据结构&#xff0c;它是由 n …

CAD ObjectArx 二次开发 创建工具栏实现点击button出现抽屉式菜单

实现在CAD中创建工具栏并添加菜单命令&#xff0c;如下图 参照文章&#xff1a; cad—菜单&#xff0c;工具栏&#xff0c;屏幕菜单&#xff0c;增强工具栏 主要实现路径是通过创建一个可停靠窗口&#xff0c;并在其中创建toolbutton并给button点击事件添加命令&#xff0c;将…

【EI会议征稿】2023年第五届光电材料与器件国际学术会议(ICOMD 2023)

2023年第五届光电材料与器件国际学术会议&#xff08;ICOMD 2023&#xff09; 2023 5th International Conference on Optoelectronic Materials and Devices (ICOMD 2023) 第五届光电材料与器件国际学术会议&#xff08;ICOMD 2023&#xff09;将于2023年11月17-19日在中国重…

常见的除静电设备有哪些?

在工业生产中&#xff0c;往往会产生大量的静电和灰尘&#xff0c;影响设备运行效率。这时候我们就需要除静电设备了&#xff0c;常用到的静电消除器有离子风枪、离子风机、离子风棒、离子风嘴等。 离子风枪是一种手持式静电消除器&#xff0c;风力大、除尘效果好是它的特点。…

OJ练习第169题——课程表 IV

课程表 IV 力扣链接&#xff1a;1462. 课程表 IV 题目描述 你总共需要上 numCourses 门课&#xff0c;课程编号依次为 0 到 numCourses-1 。你会得到一个数组 prerequisite &#xff0c;其中 prerequisites[i] [ai, bi] 表示如果你想选 bi 课程&#xff0c;你 必须 先选 a…