资源描述
洛 阳 理 工 学 院
课 程 设 计 报 告
课程名称 数据库课程设计
设计题目 药店管理系统
专 业 计算机科学与技术
班 级
学 号
姓 名
完毕日期 .12.30
课 程 设 计 任 务 书
设计题目: 药店管理系统
设计内容与规定:
设计内容:设计实现药店管理系统。可以实现药物库存管理、销售信息管理和查询功能:
库存管理:涉及药物入库、出库管理,药物库存报警,药物有效期管理(过期报警)。
销售管理:依照实际销售自动生成销售单据。如果是会员,则药物价格按95折计算。
查询及记录功能:对指定期间段内出/入库进行查询/记录,对药物有效期进行查询/记录,对药物过期进行查询/记录,对指定期间段内药物销售进行查询/记录以及利润查询/记录等。能帮顾客查询药物信息,能按品名、生产厂家、药物类别、存货量进行查询。
设计规定:
1.完毕数据库概念构造设计、逻辑构造设计、物理构造设计;
2.创立数据库,完毕表、存储过程、触发器等数据库对象设计;
3.用JAVA语言,完毕信息系统某些程序界面设计与调试运营。
指引教师:
年 12 月 24 日
课 程 设 计 评 语
成绩:
指引教师:_______________
年 1 月 3日
目录
1概述 1
1.1本设计背景和意义 1
1.2采用数据开发工具及应用开发工具 1
2需求分析 1
2.1功能需求 1
2.2数据需求 1
3概念构造设计 2
4逻辑构造设计 2
4.1建立关系模式 3
4.2关系模式规范化解决 3
5物理构造设计 3
5.1建立数据库 3
5.2数据表创立 3
5.2存储过程创立 6
5.3数据触发器创立 11
6 JAVA对数据库系统实现 12
6.1登录界面及系统主界面 12
6.2库存管理 13
6.3销售管理 14
6.4信息查询 15
7设计总结 17
附录 18
1概述
1.1本设计背景和意义
理解到某些药店由于规模较小没有专业药店管理系统,本设计可以适应于规模较小药店。通过运用数据库库技术,不但可以使药店管理更加以便,并且还能提高数据对的性。该药店管理系统以进货、存储、销售为重要业务,分别实现其她详细功能。
1.2采用数据开发工具及应用开发工具
本设计采用数据开发工具为SQL Server ,应用开发工具为Eclipse
2需求分析
2.1功能需求
药店管理系统可以实现药物库存、销售信息管理和查询功能,依照实际销售自动生成销售单据。能帮顾客查询药物信息,能按品名、生产厂家、药物类别、存货量进行查询。
2.2数据需求
通过对学校附近药店调研以及在网上查找资料,药店药物管理系统解决对象重要涉及:药物信息、供应商信息、顾客信息、药物销售信息、药物存储信息等几种方面。依照市场需求需要数据构成如下需要数据有操作员、会员、药物、订单、厂家、进货单这些实体构成数据有,操作人员需要涉及:账号、密码、姓名、联系电话、邮箱、地址;会员表:账号、姓名、年龄、联系电话、邮箱、地址;药物信息中具有:药物ID、药物名、类别、生产日期、有效期、进价、售价、生产厂家;订单详情中具有有:订单编号、药物名、购买数量、售价、购买人员、销售日期;厂家信息涉及:厂家编号、厂家名、电话、地址;进药表、药物ID、操作员、进药日期、进药数量
3概念构造设计
将需求分析阶段得到顾客需求抽象为信息构造即概念模型过程就是概念构造设计,它是整个数据库设计核心,它通过对顾客需求进行综合、归纳、抽象,形成一种独立于详细DBMS概念模型。
依照需求分析,在该系统中存在如下实体集:药物信息实体集、顾客信息实体集、厂家信息实体集、销售信息实体集等等。
存储
N
仓库
N
1
年龄
姓名
账号
电话
邮箱
编号
品名
数量
售价
买家
日期
账号
密码
姓名
电话
邮箱
地址
药物
操作员
订单
会员
提交
参照
解决
厂家
生产
1
1
厂名
类别
ID
电话
地址
名称
编号
编号
数量
生产期
有效期
进价
售价
批次
ID
依照需求做出E-R图如下图2-1
N
1
N
管理
姓名
N
1
N
N
总体E-R图2-3-1
4逻辑构造设计
4.1建立关系模式
操作人员(账号、密码、姓名、联系电话、邮箱、地址)
会员(账号、姓名、年龄、联系电话、邮箱、地址)
药物(药物ID、药物名称、类别、生产厂家编号)
仓库(批次ID、药物ID、药物名、类别、生产日期、有效期、进价、售价、生产厂家)
订单详情(订单编号、药物名、购买数量、售价、购买人员、销售日期、操作员姓名)
厂家(厂家编号、厂家名、电话、地址)
进药(药物ID、操作员姓名、进药日期、进药数量)
4.2关系模式规范化解决
依照函数依赖关系,分析得每一种关系模式均满足3NF。
5物理构造设计
5.1建立数据库
物理设计时为逻辑数据模型选用一种最适当应用环境物理构造(涉及存储构造和存取办法),数据库物理构造普通分为两步:
(1)拟定数据库物理构造,在关系数据库中重要指存取办法和存储构造;
(2)对物理构造进行评价,评价重点是时间和空间效率。
由于本次课程设计数据库数据量不大,再加上数据库实行软件会自动建立某些索引,因此这里没有必要特别建立索引。
需要创立一种数据库文献,命名为DrugControl
创立数据库语句为create database DrugControl
5.2数据表创立
(1)创立Drug表,如图5-1
create table Drug(--品名
Dno varchar(10) primary key,--药物编号
Dname varchar(20) not null,--药物名
Dclass varchar(20),--药物类别
Sname varchar(20)--生产厂家
)
图5-1
(2)创立供应商Suppliter表如图5-2
create table Supplier(--供应商
Sno varchar(10) primary key,
Sname varchar(20) not null,
Sphone char(11),
Semail varchar(20),
Saddress varchar(50))
图 5-2
(3)创立管理员表Opert如图5-3
create table Opert(--管理员
Mno varchar(10) primary key,
Mpassw varchar(20),
Mname varchar(20) not null
Mphone char(11),
Memail varchar(20),
Maddress varchar(50)
)
图5-3
(4)创立会员表Customer如图5-4
create table Customer(--会员
Cno varchar(10) primary key,
Cname varchar(20) not null,
Cage int check(Cage>0 or Cage is null),
Cphone char(11),
Cemail varchar(20),
Caddress varchar(50)
)
图5-4
(5)创立库存表Dugstore如图5-5
create table Drugstore(--库存
Lno varchar(10) primary key,--入库编号
Dno varchar(10) ,--药物编号
Dname varchar(20) not null,--药物名
Dclass varchar(20),--药物类别
Pquantity int,--药物数量
Idate date,--入库时间
out_date date,
Dbidd float,
Dprice float,
Sname varchar(20),--厂家名
Mname varchar(20),--操作员姓名
foreign key(Dno) references Drug(Dno),
)
图 5-5
(6)创立出售表Sale如图5-6
create table Sale(--出售
Slno varchar(10),
Dno varchar(10),
Cno varchar(10),
Ddprice float,
Mquantity int,--销售数量
Amoney float,
Idate date,--销售日期
foreign key(Dno) references Drug(Dno),
)
图5-6
(7)创立缺货单A如图5-7
create table Absence(--缺货单
Lno varchar(10) primary key,
Dno varchar(10),
Pquantity int,
Pdade date,
Astate varchar(10),
foreign key(Dno) references Drug(Dno)
)
图 5-7
(8)数据视图创立
依照需求仅需要创立一种视图就可以完毕所需要功能,需要创立视图为“即将过期药物”如图5-8
create view 即将过期药物单(Lno,Dname,Dclass,Pquantity,lessdate)
as
select Lno ,Dname,Dclass,Pquantity,DATEDIFF(day,GETDATE(),out_date)
from Drugstore
图5-8
5.2存储过程创立
(1)创立增长会员存储过程
*增长会员*/
create procedure 增长会员
@Cname varchar(20),
@Cage int,
@Cphone char(11),
@Ccemail varchar(20),
@Caddress varchar(50)
as
declare @i int,@n varchar(10)
select @i=max(cast(substring(Cno,2,len(Cno)-1)as int))+1 from Customer --获取最大值+1
select @n=substring('C0000',1,5-len(@i))+cast(@i as varchar(5))--转换成编号
insert into Customer values(@n,@Cname,@Cage,@Cphone,@Ccemail,@Caddress)
验证存储过程如图5-9
exec 增长会员 '没','12','111111','','理工'
图5-9
(2)创立增长操作人员存储过程
/*增长操作人员*/
create procedure 增长操作员
@Mpassw varchar(20),
@Mname varchar(20),
@Mmphone char(11),
@Mmemail varchar(20),
@Mmaddress varchar(50)
as
declare @i int,@n varchar(10)
select @i=max(cast(substring(Mno,2,len(Mno)-1)as int))+1 from Opert --获取最大值+1
select @n=substring('C0000',1,5-len(@i))+cast(@i as varchar(5))--转换成编号
insert into Opert values(@n,@Mpassw,@Mname,@Mmphone,@Mmemail,@Mmaddress)
验证存储过程如图5-10
exec 增长操作员 '1','感冒','11111111','','洛阳理工'
图5-10
(3)创立增长品名存储过程
/*增长品名*/
create procedure 增长品名
@Dname varchar(20),
@Dclass varchar(20),
@Sname varchar(20)
as
declare @i int,@n varchar(10)
select @i=max(cast(substring(Dno,2,len(Dno)-1)as int))+1 from Drug --获取最大值+1
select @n=substring('D0000',1,5-len(@i))+cast(@i as varchar(5))--转换成编号
insert into Drug values(@n,@Dname,@Dclass,@Sname)
验证存储过程如图5-11
exec 增长品名 '感冒灵颗粒','感冒用药类','蜀川'
图5-11
(4)创立增长入库存储过程
/*增长入库*/
create procedure 增长药物
@Ddno varchar(10),--入库编号
@Dname varchar(20),
@Dclass varchar(20),
@Pquantity int,
@Sname varchar(20),
@Out_date date,
@Dbidd float,
@Dprice float,
@Mname varchar(20)
as
declare @i int,@n varchar(10)
select @i=max(cast(substring(Lno,2,len(Lno)-1)as int))+1 from Drugstore --获取最大值+1
select @n=substring('D0000',1,5-len(@i))+cast(@i as varchar(5))--转换成编号
insert into Drugstore values(@n,@Ddno,@Dname,@Dclass,@Pquantity,GETDATE(),@Out_date,@Dbidd,@Dprice,@Sname,@Mname)
验证存储过程如图5-12
exec 增长药物
'D0002','感冒灵颗粒','感冒用药类',5,'蜀川','-11-11','1','2','ll'
图5-12
(5)创立增长供应商存储过程
/*增长供应商*/
create procedure 增长供应商
@Sname varchar(20),
@Sphone char(12),
@Saddress varchar(50),
@Semail varchar(20)
as
declare @i int,@n varchar(10)
select @i=max(cast(substring(Sno,2,len(Sno)-1)as int))+1 from Supplier --获取最大值+1
select @n=substring('S0000',1,5-len(@i))+cast(@i as varchar(5))--转换成编号
insert into Supplier values(@n,@Sname,@Sphone,@Semail,@Saddress)
验证存储过程如图5-13
exec 增长供应商 '111','222','洛阳理工',''
图5-13
(6)创立增长销售存储过程
/*增长销售单*/
create procedure 增长订单
@Dno varchar(20),
@Cno varchar(20),
@Ddprice float,
@Mquantity int
as
declare @i int,@n varchar(10)
select @i=max(cast(substring(Slno,2,len(Slno)-1)as int))+1 from Sale --获取最大值+1
select @n=substring('M0000',1,5-len(@i))+cast(@i as varchar(5))--转换成编号
insert into Sale values(@n,@Dno,@Cno,@Ddprice,@Mquantity,,getdate())
update Drugstore
set Pquantity=Pquantity-@Mquantity
where Lno=@Dno
验证存储过程如图5-14
exec 增长订单 'M0003','D0002','C0001',22,15,440
图5-14
(7)创立缺货单存储过程
/*更新缺货单*/
create procedure 更新缺货单
as
declare @Dno varchar(5),@Pquantity int,@i int,@n varchar(5),@Astate varchar(10),@con int
declare c cursor for select Dno,sum(Pquantity) from Drugstore group by Dno
open c
fetch c into @Dno,@Pquantity
while(@@FETCH_STATUS=0)
begin
if(@Pquantity<20)
begin
declare c1 cursor for select count(Astate),Astate from Absence group by Dno,Astate
open c1
fetch c1 into @con,@Astate
while(@@FETCH_STATUS=0)
begin
if(@Astate='未解决' and @con=1)
begin
update Absence set Astate='已解决' where Dno=@Dno
end
fetch c1 into @con,@Astate
end
close c1
deallocate c1
select @i=max(cast(substring(Lno,2,len(Lno)-1)as int))+1 from Absence /*获取最大值+1*/
select @n=substring('L0000',1,5-len(@i))+cast(@i as varchar(5))/*转换成编号*/
insert into Absence values(@n,@Dno,200-@Pquantity,getdate(),'未解决')
end
if(@Pquantity>19)
begin
declare c3 cursor for select count(Astate),Astate from Absence group by Dno,Astate
open c3
fetch c3 into @con,@Astate
while(@@FETCH_STATUS=0)
begin
if(@Astate='未解决' and @con=1)
begin
update Absence set Astate='已解决' where Dno=@Dno
end
fetch c3 into @con,@Astate
end
close c3
deallocate c3
end
fetch c into @Dno,@Pquantity
end
close c
deallocate c
5.3数据触发器创立
依照数据规定在出售过程中会浮现库存局限性即需要创立触发器需要达到功能为在库存表中更新数据时执行存储过程缺货单
create trigger Drug_short on Drugstore
after update
as
begin
exec 更新缺货单;
end;
验证触发器如图5-14
update Drugstore set Pquantity=1 where Dno='D0002'
如图5-15原缺货单
图5-15执行过后
6 Java对数据库系统实现
1
6.1登录界面及系统主界面
(1)药店登录界面如图6-1
图6-1
(2)药店主页面如图6-2
图6-2
6.2库存管理
(1)入库管理界面如图6-3可以依照名称和药物类型进行搜索单击要入库药物会在下面文本框中显示出来防止药物入库错误
图6-3
(2)增长药物界面如图6-4,可以进行药物类型输入,增长药物类型扩充药物库
图6-4
(3)修改药物信息页面如图6-5,可以对药物信息更改,用来修改和删除药物信息
图6-5
6.3销售管理
销售管理页面如图6-6,用来出售药物,可以实时获取购买数量和会员ID中输入信息,如果输入对的会员ID后并且在数据库中检测到有这个会员信息则会自动在背面会员由否改为是,计算总价时候打折,在提交订单后库中数量减少并且插入销售表。
图6-6
6.4信息查询
(1)进行利润查询如图6-7,如果是匿名顾客购买就显示为匿名,可以依照销售中出售时间来进行规定期间内利润查询并且可以显示出来每笔订单和总价
图6-7
(2)缺货单查询如图6-8,如果在售卖中数量低于20,就会自动在缺货单中显示出来,并且在添加药物后自动将状态改成已解决,缺货详情中不再浮现,除非售卖后数量再次低于20
图6-8
(3)过期药物显示如图6-9,并且支持销毁已过期药物。
图6-9
7设计总结
通过这次课设,我对数据库理解有了深一步结识,从需求分析到数据库运营和维护,每一某些都是不可省掉,都需要咱们认真地思考、设计,从中我更加深刻理解了关系模式、E-R图等内容。这次课程设计咱们使用语言是SQL SERVER ,让我再次理解并掌握了SQL SERVER 功能及存储过程,也学习Java软件操作,有两手准备。实习中,遇到问题后才发现自己知识很有限,才发现基本重要性,让我又拿起课本认认真真地学习了一遍。生活也需要咱们一步一步规划,认认真真地做好每一件事,解决好遇到每一种问题,发现自己局限性,并加以修正。
这次课程设计可以说看起来比较容易,真做起来却困难重重,深刻体会到要做好一种项目,真不容易!在此后学习中咱们会加强理论实践结合,通过不断练习、摸索来弥补自己局限性。不能由于困难就失去信心!人如果没有自信,没有目的,就不也许把事情做好!相信可以,就会可以,一定可以!
附录
参照文献
[1] 郑阿奇.SQL Server实用教程(第2版)[M].北京:电子工业出版社,.
[2] 王珊,萨师煊.数据库系统概论(第四版)[M].北京:高等教诲出版社,
.
[3].张桂珠 刘丽 陈爱国 Java面向对象程序设计(第2版)北京邮电大学出版社
[4]毕广吉.Java程序设计实例教程[M]. 北京:冶金工业出版社,
[5].王保罗.Java面向对象程序设计[M]. 北京:清华大学出版社,
[6].高林,周海燕.Jsp网上书店系统与案例分析[M]. 北京:人民邮电出版社,
[7].刘腾红,孙细明.信息系统分析与设计[M]. 北京:科学出版社,
[8].林邦杰,彻底研究java.北京:电子工业出版社,
展开阅读全文