送水公司的送水系统
发布时间:2018-06-30 01:19:27
发布时间:2018-06-30 01:19:27
分类号 单位代码 11395
密 级 学 号
学生课程设计
题目 | 送水公司的送水系统 |
作者 | XXXXX |
院 (系) | XXXXXX |
专业 | XXXXXX |
指导教师 | XXX |
提交日期 | XXXX年XX月XX日 |
目录
1.引言 2
2.需求分析阶段 3
2.1需求分析阶段目标 3
2.2本系统需完成的功能 3
2.3.数据流图 4
2.4.数据字典 5
3.概念设计阶段 7
3.1引言 7
3.2 E-R图 7
3.2.1局部E-R图 7
3.2.2全局E-R图 9
4.逻辑结构设计 10
4.1将E-R图转换成关系模式 10
4.2逻辑关系图 10
4.3数据库模式定义 10
5.物理结构设计 13
5.1物理设计阶段的目标与任务 13
5.2查询和添加功能模块图 13
6.数据库实施阶段 14
6.1建立数据库 14
6.2各表建立 14
6.3 建立触发器 16
6.4前台设计图 17
6.5数据库主码和外码图 19
7.总结 22
8.致谢 23
现今很多送水服务公司接话时都要询问客户编号、地址和姓名等诸多客户资料,从而导致接电话需要很长时间,而且容易造成客户不满意,接话员也累,效率又低。在用水旺季电话较多时由于接话员效率低,不可避免的会发生漏接电话等情况,失去一定送水客户。在这种情况下,拥有一个专业的针对送水行业上述问题的软件系统就成为同行业中竞争发展的有利优势。
另外,目前市场上这方面的软件系统使用范围比较有限,就算有使用的也很少涉及送水配送业务。目前大多数公司现行的管理系统虽然解决了公司业务上的处理问题,但在员工工作效率、客户信息管理、信息查询分析等方面不完善,需要进一步的优化系统处理业务流程和解决公司以往单人操作系统处理烦琐事务等问题。
因此一个良好的送水系统至关重要。
1.通过信息列表存储员工、客户、供应商、矿泉水、仓库、费用的基本信息和实体之间的联系实现其管理;
2.利用一些实体的属性实现查询、添加、删除、更新操作,建立相应的触发器和存储过程实现对数据的统计、分析,用于作为公司人员、客户、供应商、矿泉水、仓库、费用管理之前事务的总结和以后的计划。
管理员对员工 、客户、矿泉水的类别、供应商的信息、收费、销售订单进行增、删、改、查管理
功能模块图为:
图2-1
员工管理:新建、查询、编辑、删除员工信息、奖惩、权限管理
客户管理:新建、查询、编辑、删除客户信息
矿泉水管理:新建、查询、编辑、删除矿泉水信息,实现时时更新
供应商管理:新建、查询、编辑、删除供应商信息,实现时时更新以保证公司利益
订单管理:新建、查询、订单编辑、删除订单信息
费用管理:新建、查询、编辑、删除财务报表,统计、比较各级阶段的财务情况
进货管理:新建、查询、编辑、删除进货订单信息,与供应商的联系,交易,员工人员分配
销售管理:新建、查询、编辑、删除销售信息,与客户的联系,交易,员工人员分配,做好售后服务等
图2-2进货数据流图
图2-3销售数据流图
图2-4入库出库数据流图
列名 | 说明 | 类型 | 备注 |
PID | 商品ID | INT | 不允许为空,主键 |
Wname | 商品名称 | Char(50) | 不允许为空 |
producttype | 商品型号 | Char(50) | 不允许为空 |
description | 描述 | Char(500) | 不允许为空 |
quantity | 数量 | char(1000) | 不允许为空 |
CID | 顾客ID | INT | 不允许为空,主键 |
Cname | 顾客名称 | Char(30) | 不允许为空 |
Phone | 电话 | Char(20) | 不允许为空 |
address | 详细地址 | Char(30) | 不允许为空 |
SID | 供应商ID | INT | 不允许为空,主键 |
Sname | 供应商名称 | Char(30) | 不允许为空 |
phone | 电话 | Char(20) | 不允许为空 |
address | 详细地址 | Char(50) | 不允许为空 |
postcode | 邮政编码 | Char(6) | 不允许为空 |
QQ号 | Char(50) | 不允许为空 | |
remarks | 备注 | Char(100) | 允许为空 |
HID | 员工ID | INT | 不允许为空,主键 |
Hname | 员工姓名 | Char(30) | 不允许为空 |
phone | 电话 | Char(20) | 不允许为空 |
BID | 进货号ID | INT | 不允许为空,主键 |
SID | 供应商ID | INT | 不允许为空 |
PID | 商品ID | INT | 不允许为空 |
Bdate | 购进时间 | Smalldatetime | 不允许为空 |
Bquantity | 数量 | Char(1000) | 不允许为空 |
Pbuy | 购入价格 | INT | 不允许为空 |
Bstituation | 是否付费 | INT | 不允许为空 |
SellID | 出售ID | INT | 不允许为空,主键 |
CID | 顾客ID | INT | 不允许为空 |
HID | 员工ID | INT | 不允许为空 |
PID | 商品ID | INT | 不允许为空 |
Sdate | 出售时间 | Smalldatetime | 不允许为空 |
Squantity | 商品数量 | INT | 不允许为空 |
Psell | 商品单价 | money | 不允许为空 |
Ssituation | 是否收到费用 | INT | 不允许为空 |
CostID | 费用 | INT | 不允许为空,主键 |
Real With | 应付 | INT | 不允许为空 |
Receivable | 已付 | INT | 不允许为空 |
Cash | 现金 | INT | 不允许为空 |
系统开发的总体目标是实现送水的订单、客户及员工管理,缩短查询的等待时间,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,从而达到送水效率的目的。
主要任务是对矿泉水表、供应商表、员工表、出售详情表、顾客表及费用表的操作及处理。
概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键。
图3-1 商品入库
图3-2 销售图
图3-3配送图
图3-4全局E-R图
员工:{员工ID,员工姓名,电话,备注}
顾客:{顾客ID,顾客姓名,详细地址,电话,备注}
矿泉水:{商品ID,商品名称,描述,数量}
购进:{进货ID,供应商ID,商品ID,购进时间,购入价格,是否付费,备注}
供应商:{供应商编号,单位名称,地址,电话}
费用:{费用ID,应付,已付,现金}
出售:{出售ID,顾客编号,员工ID,商品ID,出售时间,数量,单价,是否收到费用,备注}
注明主码和外码
图4-1
列名 | 说明 | 类型 | 备注 |
PID | 商品ID | INT | 不允许为空,主键 |
Wname | 商品名称 | Char(50) | 不允许为空 |
producttype | 商品型号 | Char(50) | 不允许为空 |
description | 描述 | Char(500) | 不允许为空 |
quantity | 数量 | char(1000) | 不允许为空 |
表4-1 矿products泉水表
列名 | 说明 | 类型 | 备注 |
CID | 顾客ID | INT | 不允许为空,主键 |
Cname | 顾客名称 | Char(30) | 不允许为空 |
Phone | 电话 | Char(20) | 不允许为空 |
address | 详细地址 | Char(30) | 不允许为空 |
remarks | 备注 | Char(100) | 允许为空 |
表4-2 Customers顾客表
列名 | 说明 | 类型 | 备注 |
SID | 供应商ID | INT | 不允许为空,主键 |
Sname | 供应商名称 | Char(30) | 不允许为空 |
phone | 电话 | Char(20) | 不允许为空 |
address | 详细地址 | Char(50) | 不允许为空 |
postcode | 邮政编码 | Char(6) | 不允许为空 |
QQ号 | Char(50) | 不允许为空 | |
remarks | 备注 | Char(100) | 允许为空 |
表4-3 Supplier供应商表
列名 | 说明 | 类型 | 备注 |
HID | 员工ID | INT | 不允许为空,主键 |
Hname | 员工姓名 | Char(30) | 不允许为空 |
phone | 电话 | Char(20) | 不允许为空 |
remarks | 备注 | Char(100) | 允许为空 |
表4-4 hydrotechnic员工表
列名 | 说明 | 类型 | 备注 |
BID | 进货号ID | INT | 不允许为空,主键 |
SID | 供应商ID | INT | 不允许为空 |
PID | 商品ID | INT | 不允许为空 |
Bdate | 购进时间 | Smalldatetime | 不允许为空 |
Bquantity | 数量 | Char(1000) | 不允许为空 |
Pbuy | 购入价格 | INT | 不允许为空 |
Bstituation | 是否付费 | INT | 不允许为空 |
remarks | 备注 | char(100) | 允许为空 |
表4-5 Buying购进表
列名 | 说明 | 类型 | 备注 |
SellID | 出售ID | INT | 不允许为空,主键 |
CID | 顾客ID | INT | 不允许为空 |
HID | 员工ID | INT | 不允许为空 |
PID | 商品ID | INT | 不允许为空 |
Sdate | 出售时间 | Smalldatetime | 不允许为空 |
Squantity | 商品数量 | INT | 不允许为空 |
Psell | 商品单价 | money | 不允许为空 |
Ssituation | 是否收到费用 | INT | 不允许为空 |
remarks | 备注 | Char(100) | 允许为空 |
表4-6Sell出售详情
列名 | 说明 | 类型 | 备注 |
CostID | 费用ID | INT | 不允许为空,主键 |
Deal With | 应付 | INT | 不允许为空 |
Receivable | 已付 | INT | 不允许为空 |
Cash | 现金 | INT | 不允许为空 |
表4-7 Cost费用表
数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:
(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;
(2)对物理结构进行评价,评价的重点是时间和空间效率。
图5-1
CREATE DATABASE 111
(1)供应商表建立
CREATE TABLE supplier (
[SID] [int] NOT NULL,
[Sname] [char](30) NOT NULL,
[phone] [char](20) NOT NULL,
[address] [char](50) NOT NULL,
[postcode] [char](6) NULL,
[qq] [char](50) NULL,
[remarks] [char](200) NULL
(2)矿泉水表的建立
CREATE TABLE products(
[PID] [int] NOT NULL,
[Wname] [char](50) NOT NULL,
[producttype] [char](50) NOT NULL,
[description] [char](500) NULL,
[quantity] [char](1000) NOT NULL,
(3)购进表的建立
CREATE TABLE Buying(
[BID] [int] NOT NULL,
[SID] [int] NOT NULL,
[PID] [int] NOT NULL,
[Bdate] [smalldatetime] NOT NULL,
[Bquantity] [char](1000) NOT NULL,
[Pbuy] money NOT NULL,
[Bsitutation] [int] NOT NULL,
[remarks] [char](1000) NULL
(4)顾客表的建立
CREATE TABLE customers(
[CID] [int] NOT NULL,
[Cname] [char](30) NOT NULL,
[phone] [char](30) NOT NULL,
[address] [char](30) NOT NULL,
[remarks] [char](100) NULL
(5)员工表的建立
CREATE TABLE hydrotechnic(
[HID] [int] NOT NULL,
[Hname] [char](30) NOT NULL,
[phone] [char](20) NOT NULL,
[remarks] [char](100) NULL
(6)出售表的建立
CREATE TABLE Sell(
[SellID] [int] NOT NULL,
[CID] [int] NOT NULL,
[HID] [int] NOT NULL,
[PID] [int] NOT NULL,
[Sdate] [smalldatetime] NOT NULL,
[Squantity] [int] NULL,
[Psell] [money] NOT NULL,
[Ssituation] [int] NOT NULL,
[remarks] [char](100) NULL
(7)费用表的建立
CREATE TABLE Cost(
[CostID] [int] NOT NULL,
[Deal With] [int] NOT NULL,
[Receivable] [int] NOT NULL,
[Cash] [int] NOT NULL
(8)存储过程
查询每月用水量最大的10个用户,并按数量递减
ifobject_id('pro_2','pro')is not null
drop procedure pro_2
go
create procedure pro_2(@yuefen_inint)
as
begin
select top(10) customers.Cname,Sell.Squantity'购水量'
fromSell,customers
whereSell.CID=customers.CID and @yuefen_in=datepart(mm,Sdate)
group by customers.Cname,Sell.Squantity
order by count(Sell.Squantity) desc
end
go
实现购入和销售时矿泉水的增加和减少
矿泉水购入:
create trigger tri_Buying
on Buying for insert
as declare @PID int,@quantity int
select @PID=PID from inserted
update products set quantity=quantity+@quantity where PID=@PID
go
矿泉水销售:
create trigger tri_Sell
on Sell for insert
as declare @PID int,@Squantityint
select @PID=PID from inserted
select @Squantity=Squantity from inserted
update products set quantity=quantity_@Squantity where PID=@PID
go
图6-1 登录
图6-2 功能界面
图6-3订单查询
图6-4 员工信息查询
图6-5 添加订单
图6-6 购进表
图6-7 费用表
图6-8 顾客表
图6-9 矿泉水表
图6-10 出售表
图6-11供应商表
图6-12员工表
这次课程设计使我懂得了许多,也对关于数据库的许多知识有了更深层次的来了解,也认识到了需求分析的重要性,以往的学习都太不在意了,导致有许多方面不懂,请教了别人才知道,而且对C#的一些代码有了一个新的认识,并且学到了如何连接两者。关于数据库范式和聚簇的一些相关知识,所以以后要更加努力的学习,增加自己的学识,用知识来充实和武装自己。
在建立数据库期间,如何建立外键,如何建立check约束,如何自动生成数据关系图刚开始都是问题,但是通过翻阅课本和网上浏览相关资料,这些问题都得到了解决,而且学会了一个课程设计的每个步骤。
该数据库具有员工管理、客户信息管理、矿泉水管理、仓库管理、订单管理、进货管理、销售管理功能,由最初的问题描述,需求分析到后面的概念模型设计、逻辑模型设计、物理设计实现具体的数据库表的创建、数据插入、查询,触发器和存储过程的创建,由于本人能力有限,所以在前台不能实现删除和修改功能。
在这次数据库课程设计的整个过程中,都受到了指导教师尚佩妮老师、林基艳老师细心的指导和关怀。对此,表示忠心的感谢!没有老师的耐心指导,我不可能如此顺利的完成此次课程设计的任务。是两位老师的帮助,让我意识到自己设计中出现的种种问题,并且通过查找资料去解决它。
同时也感谢给过我帮助和鼓励的同学,是他们的帮助与鼓励,在我遇到困难时,为我点亮了希望的灯塔;在我灰心丧气时,带给我力量和信心。