采购管理课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据库技术》课程设计
课题采购管理
班级
学号
姓名
目录
第一章概述
第二章数据库设计
2.1需求分析
2.1.1任务概述
2.1.2需求说明
2.1.3数据流图
2.1.4数据字典
2.2数据库概念设计
2.2.2 全局概念模式设计
2.3 数据库逻辑设计
2.3.1 DBMS的选择
2.3.2 数据模型设计
2.3.3 数据库结构优化和完整性设计
2.4 数据库物理设计
2.5 数据的实施和维护
第一章概述
采购管理系统可帮助采购人员完成采购物料从采购计划的制订、采购申请、采购询价、采购订单、订单跟踪等采购业务的全部过程,每一业务都能有效控制。

采购人员在向供应商发出采购令前不必像以前那样,繁琐地填写大量的各种表格,只需审查系统所产生的每一期间内的采购计划即可。

如遇生产计划变更,采购计划相应变化。

采购人员因有了及时准确的计划信息,他们可从烦琐的事务作业中解脱出来,用更多的时间和精力来进行价值分析,选项择货源和开发更多的合格供应商。

有效地监控采购计划的实施及采购成本的变动情况,帮助采购人员选择最佳的供应,确保采购工作高质量、高效率、低成本地执行,使企业处于最佳的供货关态。

采购的两种类型:
1.存货货物采购收货后入仓,如需使用该货物,必须做发货处理
收货后仓库库存上升,出仓后仓库库存下降
2.消耗品采购收货时直接作为消耗处理无库存处理
采购管理要素:
1.数量就是力量
2.选择综合性供应商
3.本地采购
4.ERP系统的运用
5.及时快速的回款
采购管理作为现代ERP管理中的重要组成部分,在其系统的设计与开发过程中应当遵循软件工程的规范,按照软件系统生命周期的思想,数据库应用系统的设计主要包括以下几个阶段:
1.系统定义和需求分析阶段。

所谓系统定义和需求分析是指调查和分
析企业的各种生产需求,定义系统的应用范围和边界,确定系统的
功能要求,性能要求,输入输出要求以及数据处理要求等。

2.数据库设计和应用软件设计。

根据需求分析的结果,设计数据库的
结构,是数据库设计的核心,包括概念结构设计,逻辑结构设计和
物理结构设计(我们所要求的);而对应用软件进行设计,包括概
要设计和详细设计,其设计目的是实现软件的各项功能;访问数据
库,实现系统的各类需求,提供用户的操作界面。

3.系统的实现。

创建数据库并且装载初始数据;进行软件编码实现。

4.系统的测试和确认。

对新系统进行测试,经用户确认后投入实际运
行。

5.运行和维护。

将新系统投入实际运行,并在运行过程中对系统进行
监控和维护。

综上所述,本系统支持多币种采购,与生产、库存、应付账及质量管理等子系统均有灵活的接口.采购作业计划即可由生产管理系统直接下达,也可
以从中长期采购计划生成或从临时需求中生成。

采购作业计划经审批后生成采购订单,采购订单审批后执行采购。

采购管理子系统与库存、生产、质量及应付账子系统同时使用,效益将更明显。

采购管理系统设计开发的步骤也基本上要遵循数据库系统的设计开发的一般步骤,本系统业务流程,如图1所示。

踪某种物料在一段时间内的预计到货情况,直接为财务部门输送每次到货物料的采购成本,统计本年度在各供应商的采购物料情况。

第二章数据库设计
2.1需求分析
任何软件系统的设计开发,首先都要进行需求分析,即尽可能详细地了解和分析用户的需求及业务流程,包括掌握新系统所要处理的数据的输入,输出和加工的详细情况,明确系统的用途和目标,确定刺痛的功能要求,性能要求,运行环境和将来可能的扩充要求等。

需求分析的工作由系统设计人员及用户合作完成,其结果需经双方确认。

需求分析的结果的数据库设计和应用软件的基础,也是将来系统确认和验收的依据。

按照软件工程规范,需求分析的结果将形成文档——需求规格说明书,对其中的数据需求部分还要求用数据流图和数据字典加以详细描述。

以下以我所做的一个小规模的采购管理为基础,进行采购管理系统的需求分析。

2.1.1 任务概述
采购是企业经营的重要组成部分,它可以体现企业的经营情况和效益。

企业采购管理系统可以有效地提高企业宏观控制和经营管理的质量,是企业现代化管理的重要组成部分。

下面将对企业采购管理系统进行总体设计,介绍系统的总体功能和模块划分,使大家对其形成系统的认识。

参照目标系统的业务流程各个环节,根据各类功能相对独立的原则
进行组合,初步确定本系统的功能结构,如图3所示。

考虑到商品
的收款付款以及其类型都由财务部门管理,但逻辑上与采购的订单
等都是独立的,故把其也归到采购管理里面来。

删除和查看采购订单和退货信息。

更改采购订单和退货单状态。

查看采购订单和退货单的商品出入库情况。

3.财务管理
添加,修改,删除和查看收付款信息。

添加,修改,删除,查看和审核发票信息。

查看客户收付款信息。

4.统计汇总
按商品统计采购信息。

按商品类别统计采购信息。

按采购人员统计采购信息。

5.用户管理
修改密码。

退出系统。

只有采购管理员用户能够进入本系统。

2.1.3数据流图
在需求说明的基础上,为了更清楚,直观地表达系统对数据的需求,常采用数据流图。

用数据流图来表示时要抓住数据处理这个中心环节,着重表达数据的流动(输入,输出)和处理的过程。

数据流图(图4——图8)。

图8 采购收货管理数据流程图(第二层数据流)
部门申请信息
部门查询数据流图
上面的数据流图部分来自互联网。

通过数据流程图我们能比较清晰的了解到系统的相关工作原理和步骤。

2.1.4 数据字典
数据字典主要是对数据结构(数据元素),数据存储和数据处理进行更详细的定义。

1.请购单
含义说明:生产部门以及库存管理系统提出请购单(原始数据)。

组成:编号,商品号,厂家,用途,估价,数量,申请部门
备注:商品号即该商品的唯一编码号,用来唯一确定该项商品。

2.供货信息
含义说明:厂家或商品供应零售商可供货物信息(原始数据)。

组成:供货单位,商品号,数量,单价,厂家
3.供货商
含义说明:供货单位的基本信息(是原始数据,在发送订单和财务结算时需要这些信息)。

组成:单位名称,地址,联系人,电话,E-mail,开户行,账号
4.预定信息
含义说明:采购管理预定功能提供相关部门欲采购信息。

组成:订单编号,商品号,供货单位,单价,数量,金额,日期。

数据来源:图书预定。

6.商品信息
含义说明:记录商品编号信息,从产品采购到编号入库,每一个商品号对应一个产品。

组成:商品号,商品名,供货单位,价格,日期,用途,当前库存量,标志。

7.部门信息
含义说明:记录与部门相关的基本信息(属原始数据)。

组成:职位,身份确定,姓名,性别,地址,联系方式
备注:身份及相关部门的负责人和职位等信息。

8.申请采购记录
含义说明:申请采购部门所采的记录,保存起来。

组成:商品号,商品名,职位,到货日期。

数据来源:申请采购
通常的数据字典中,还包括对数据项的定义,也就是对数据结构和数据存储中的每个组成项目进行定义,如请购单中的数据项有:编号,商品号,厂家,用途,估价,数量,申请部门等。

数据项的定义内容包括:数据项的名称,
含义,数据类型,长度,取值范围以及与其他数据的相互关系等。

这些数据项的定义内容,将是下阶段实体和表的属性定义的依据。

由于时间问题在这里我就不作补充了,如有感兴趣的可以自己了解下。

2.2 数据概念设计
我们采用实体和联系表示数据库的概念结构,即用E-R图表示数据库的概念结构。

这一阶段的设计工作是建立在全面阶段需求分析的基础上,也就是根据需求分析的结果,特别是根据数据流图和数据字典的内容,将所涉及的数据元素归纳,抽象为一个个实体集,以及实体集与实体集间的联系。

概念结构设计是通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS概念模型,它数据库设计的关键。

设计概念结构通常有四类方法: 1.自顶向下
自顶向下即首先定义全局概念结构的框架,然后逐步细化。

2.自底向上
自底向上即首先定义各局部应用的概念结构,然后将他们集合起来,得到全局概念结构。

3.逐步扩张
逐步扩张是首先定义最重要的核心概念结构,然后向外扩张,以滚雪球的方式逐步生成其他概念结构,直到总体概念结构。

数据库的概念结构又称为数据库的概念模式。

数据库的概念模式独立于具体的DBMS,是数据库高层的数据结构。

数据库概念设计是数据库设计中最重要的工作阶段。

数据库概念设计通常可分为两步,第一步是局部概念模式设计,又称局部视图设计,是将各部分的数据流图分别转化为局部E-R图;第二步是全局概念模式设计,又称视图集成,是将局部E-R图合并为一个整体。

2.2.1局部概念模式设计
1.预订货物
把请购单和相应的供货信息看做实体集,把预订作为两个实体集见的联系。

预订时根据根据供需双方的情况,确定每种货物的预订数量和金额。

对应如下E-R图所示:
2.商品验收入库
商品的验收入库主要涉及两个实体集,一个是商品信息一个是申请采购记录其E-R图如下:
将上述局部的概念模式设计的E-R图集成起来,及得到全局概念模式的E-R图。

在这个过程,应消除原先各图中存在的冲突和不一致的地方,进行必要的合并和重构。

上面的局部E-R图去掉多余的部分,进行修改得到下面的总的E-R图:
将数据库概念模式映射为数据逻辑模式,也就是把E-R图模型转换为关系模型。

具体转换的方法是:分别将每个实体集转换为关系,再将每个联系集也转换为关系。

于是由上面的E-R图得出以下关系模式。

1.将实体集映射为关系
请购单(编号,商品名,厂家,价格,数量,申请部门)
供货商(单位名称,地址,联系人,电话,E-mail,开户行,账号)
其余的信息同上结合E-R图编制出来,这里不作一一解释。

2.3.3 数据库结构优化和完整性设计
从以上的E-R图得到了几个有关采购管理的表。

这样的数据结构通常还需要优化。

其优化结构一般包括三步:首先检查是否存在冗余的表和可以合并的表;第二步是按照关系数据库的规划化理论,检查每一个表是否达到优化(一般遵循第三范式);第三步对照需求,检查每一项功能所需的数据是否dou有相应的数据库表的支撑。

1.表的合并
一般来说,主码相同的两个表可以合并。

我们知道,由“一对多”或“多对一”的联系集映射得来的表,其主码与代表“多”端实体集的表相同,故通常由由“一对多”或“多对一”联系集映射得来的表可以合并到代表“多”端实体集的表中去。

以下为我优化上面的E-R图而得。

采购报价表(报价编号,商品编号,客户编号,报价金额,创建日期,备注)采购订单表(采购退货编号,采购订单编号,状态:创建审核入库完成,退货日期,商品金额,其他费用,总费用,备注,创建人,创建日期)采购商品表(编号,商品编号,采购订单编号,客户编号,购买数量,单价,备注,订单和退货标记:0-订单;1-退货,是否审核:0-未审核;1-审核)
类型信息表(类型编号,类型名称,类型的分类)
发票信息表(发票编号,客户编号,发票抬头,发票类型编号,发票金额,出票日期,发票状态:0-创建;1-审核,备注)
由上面的整合后我得到了相关的5个表。

2.规划化
3.检查需求的每一项功能
4.完整性设计
完整性设计是为了确定每个表的主码,外码和被参照的关系。

如采购报价表中商品编号是外码,它参照采购商品表中的商品编号等等。

具体的表见下面数据库表的结构说明。

采购报价表PurchareQuote
类型信息表Types
采购订单表PurchaseOrder
采购商品表 PurProductList
发票信息表Invoice
部门表Departments
需要说明的是,数据库设计的结果并不唯一。

从不同的角度和观点出发,就可能得到不同的结果。

本章给出的采购系统的数据库设计的结果也不一定最优。

另外在数据库的基本表结构确定之后,还应根据应用需求进行外模式的设计,即根据需要定义必要的视图。

此外,还要进行数据库的安全性设计,包括用户的管理和授权,实体对象的权限控制,数据库的维护和备份等。

2.4 数据库物理设计
物理设计的目的不仅要保证存储数据的适当结构,而且要以适当的方式对性能提供保证。

数据库物理设计主要设计以下几个方面的工作:
数据库的数据文件的分布结构。

这种结构主要是确定数据库的存储空间的分配,数据文件的存放路径等。

确定索引的结构。

索引的设计是否合理对数据库系统运行的效率有非常大的影响特别在海量数据的情况下甚至有决定性的影响。

还有索引的数量并不是越多越好。

2.5 数据的实施和维护
1、建立数据库、数据表、视图、相应的完整性约束、加载数据,建立索
引、视图等系统必要的对象。

建数据库:
create database采购管理系统
on
(name=采购管理系统,
filename='E:\采购管理系统.mdf',
size= 5mb,
maxsize= 50mb,
filegrowth= 1mb)
log on
(name=采购管理系统_log,
filename='E:\采购管理系统_log.ldf',
size= 2mb,
maxsize= 50mb,
filegrowth= 10%)
go
创建表:PurchaseQuote
use采购管理系统
go
create table PurchaseQuote
(报价编号int identity(1,1)primary key not null,
商品编号int null,
客户编号int null,
报价金额decimal(15,2)null,
创建日期datetime null,
备注varchar(2000)collate chinese_PRC_CI_as null,
)
创建表:PurchaseOrder
use采购管理系统
create table PurchaseOrder
(采购订货编号varchar(50)primary key not null,
采购订单编号int null,
状态varchar(20)null,
退货日期varchar(50)null,
商品金额decimal(9,2)null,
其他费用decimal(9,0)null,
总费用decimal(9,2)null,
创建人varchar(20)null,
创建日期datetime null,
备注varchar(2000)collate chinese_PRC_CI_as null, )
创建表:PurProductList
use采购管理系统
create table PurProductList
(编号int primary key not null,
商品编号int null,
采购订单编号varchar(50)null,
客户编号int null,
购买数量int null,
单价decimal(9,2)null,
备注varchar(2000)collate chinese_PRC_CI_as null, 订单和退货标记tinyint null,
是否审核tinyint null,
)
创建Departments表:
use采购管理系统
create table Departments
(部门编号int primary key not null,
部门名称varchar(50)null,
部门职能描述varchar(250)null,
上级部门编号int null,
)
创建表:types
use采购管理系统
create table types
(类型编号int primary key not null,
类型名称varchar(50)null,
类型分类tinyint null,
)
以上是数据库和表的创建。

关系图:
插入数据:
insert into Departments
values('1001','生产部','进行生产作业','0001')
insert into PurchaseOrder
values('9001','8001','审核','暂缺','100.00','50.00','150.00','生产部','2008-01-01','暂无')
insert into PurchaseQuote
values('2001','3001','4001','100.00','无')
insert into types
values('6001','螺丝','9')
所插入数据同上这里不一一列举出来了。

创建索引:
use采购管理系统
create index商品编号_index
on departments
go
exec sp_helpindex商品编号_index
创建视图:
create view departments视图(部门编号,部门名称,职能,上级部门编号) as
select*
from departments
go
select*from departments视图
2、在建立好的数据表中实现记录和约束条件的的增加、删除和修改;记录的增加,删除和修改:
select
部门名称as departments,
创建人as purchaseorder
into ##123
from departments
update types set类型编号='6002'
where类型分类= 9
上面的一些约束象主关键字,外主关键字约束等的增加,删除和修改的操作我们学过的SQL Server 2005中有很详细的介绍,我就不一一演示出来了。

3、实现各种查询(简单查询、模糊查询、连接查询、嵌套查询等)
4、设计一个存储过程,要求在存储过程中使用游标;设计一个触发器,
实现表间的级联删除或修改。

update departments
set部门编号=''
select*from departments
alter table学生
add领导名称varchar(10)
create procedure proc_领导名称
@部门名称varchar(10),@部门编号varchar(10),@领导名称varchar(10) as
declare cursor_no_xf cursor
for
select部门名称,部门编号from departments
where(部门编号is null or部门编号=0)
open cursor_no_xf
fetch next from cursor_no_xf into @部门编号,@部门名称while@@fetch_status=0
begin
select 部门名称,部门编号from departments
update departments set 部门编号=@部门编号where部门名称=@部门名称and领导名称= @领导名称
fetch next from cursor_no_xf into @部门编号,@部门名称
end
close cursor_no_xf
deallocate cursor_no_xf
5、设计一个触发器,实现表间的级联删除或修改。

触发器设计实现表间的级联修改。

create trigger trig_update
on departments
for insert,update
as
declare @部门编号varchar(20),@部门名称varchar(20),@部门职能描述
varchar(20),@上级部门编号varchar(20)
select @部门编号=部门编号,@部门名称=部门名称,@部门职能描述=
部门职能描述,@上级部门编号=上级部门编号
from inserted
if update(上级部门编号)
update departments set上级部门编号=@上级部门编号
where部门编号= @部门编号
else
if update(部门名称)
update departments set部门名称= @部门名称where @部门编号=部门编号
else
print'该列值不能改!'
rollback transaction
print'该数值已成功修改!'
测试:update部门名称
set上级部门编号4 =1001 where部门编号=’1001’
触发器设计实现表间的级联删除
create trigger trig_delete
on departments
for delete
as
declare @t int,@部门编号char(6)
set @t = 0
select @t = count(部门编号),@部门编号= 部门编号
from deleted
group by部门编号
if @部门编号='1001'
begin
print('对不起,该条记录不允许删除!')
rollback transaction
end
else
print('OK!已经成功删除该记录了!')
delete from purchaseorder
where部门编号=@部门编号
update departments
set部门编号= 部门编号-@t
delete from departments
where 部门编号= @部门编号
update departments
set 部门编号= 部门编号-@t
where部门编号= @部门编号
检测:
delete from departments
where部门编号 = '1001'
由于自己时间没计划好后面两道题做的比较粗糙。

心得体会:
这是自己做的第一个课程设计,刚开始的时候感觉没有什么头绪,慢慢的深入后也感觉挺有意思的。

但是可能自己前面的知识掌握不牢靠,在做到存储过程中还是出了点问题,开始时不能实现,后来经过修改基本能达到要求。

由于自己时间的原因后面的题目做的并不怎么好,希望自己能够在寒假中间有所改进。

好好的学习一下SQL,为以后毕业设计打下点基础。

相关文档
最新文档