《药品存销信息管理系统(全)(共32页).doc》由会员分享,可在线阅读,更多相关《药品存销信息管理系统(全)(共32页).doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上信息工程学院数据库课程设计论文题 目:药品存销信息管理系统学 号:*专业班级:计算机科学与技术103姓 名:*指导老师:*完成日期:2012年01月13日药品存销信息管理系统数据库设计*(信息工程学院计算机科学与技术10级3班)摘 要 本次课程设计是药品存销信息管理系统,伴随着社会的复杂化,传统的“一支笔,一本帐簿”的药品销售管理方式也慢慢的无法适应形势的变化。随着信息技术的发展,计算机已被广泛的用于社会的各个领域,成为推动社会发展的技术动力。因此设计药品存销信息系统是当务之急,本系统包括药品采购,药品存储,药品销售。药品采购包括采购员进货,采购员退货。药品存储包括仓
2、库存储以及仓库管理员管理仓库。药品销售包括顾客买药与顾客退药。本系统包括几个视图来使数据库使用者快速的查询想要得到的信息,本系统包括几个PL/SQL语句块,还包括几个触发器,使得数据得到同步修改,使数据库中的数据更加合理。关键字:数据库;经销存;药品管理系统专心-专注-专业目录引言 随着全球信息技术的飞速发展,尤其是因特网的出现和普及,企业和决策都发生 了根本的改变。采用信息技术促进、改造药店的生产、经营、管理,有效采集和处理 信息,增强企业决策的有效性,适应全球发展的要求,将成为企业发展的必由之路。 信息管理系统已经成为现代企业的一个重要标志和衡量企业综合实力的重要组成部分。但是,信息管理系
3、统的开发却非常困难。开发一个成功的企业信息管理系统,不仅要有方方面面的专业知识,还要充分分析企业内部、外部环境的变化和关系,以及 在信息管理系统开发过程中所涉及的设备、技术上的复杂性。这就需要系统开发者不断总结经验,不断探索更好的方法和技术。如今药品无论在任何时候都是一个国家最重要的东西,也是对一个人最需要的东西,药品管理正处于一个高速发展的时期。药品的信息在供应商与销售部和顾客之间大量的流通,因此,建立一个合适的数据库来管理这些数据是必不可少的。这样药品存销信息管理系统就这样诞生了,它可以高效的来管理这些数据,是药品高效的发货和供应。本次数据库设计严格按照书上的要求和设计数据库步骤,从需求分
4、析,概念设计,逻辑设计,物理设计,到数据库最后的建立、运行。1.需求分析主要包括内容:处理对象及组织;信息处理及系统功能;数据库系统性能需要,数据库系统开发环境需求等。在阐述信息及其处理过程时,要辅助业务流程图、数据流程图及数据字典。对上述三个问题可以以附录的形式详细罗列,但正文中必须指明做了哪些业务流程图、数据流程图和数据字典的规模。1.1需求分析阶段处理对象及组织(1)熟悉业务并绘制业务路程图;(2)根据业务流程图明确有哪些数据流动,绘制数据流程图;(3)建立数据字典,其中包括数据项、数据结构、数据流、数据存储、处理过程等。1.2信息处理及系统功能1.2.1数据流程图药品存销信息管理系统数
5、据流程图如下(3) 第一层数据流程图图1-1第一层数据流程图 (2)第二层数据流程图进货图1-2 进货数据流程图(4) 第二层数据流程图销售图1-3 销售数据流程图(5) 第二层数据流程图存储 图1-4 存储数据流程图1.2.2数据字典 包含数据项、数据结构、数据流、处理逻辑、数据存储定义(详见附录1)。2数据库结构设计2.1 概念设计阶段要求:(1)能真实、充分地反映现实世界,包括事物与事物之间的联系,能满足用户对数据的处理要求,是对现实世界的一个真实模型;(2)易于理解,因此可以用它和不熟悉计算机的用户交换意见;(3)易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充;(4)易
6、于向关系、网状、层次等各种数据模型转换。2.2.1 分E-R图的建立建立分E-R图的思想: 对需求分析阶段收集到的数据进行分类、组织(聚集),形成实体、实体的属性,标识实体的码,确定实体之间的联系类型(1:1,1:n,m:n),设计分E-R图;参照数据流程图画出分E-R图(1) 进货时的分E-R图图2-1 进货时的分E-R图(2) 销售时的分E-R图图2-2销售时的分E-R图(3) 盘存时的分E-R图图2-3盘存时的分E-R图2.1.2 全局/整体E-R图1.每次集成局部E-R图是,分两步走(1)合并。解决各分E-R图之间的冲突,将各分E-R图合并起来生成初步的E-R图。 (2)修改和重构。消
7、除不必要的冗余。总E-R图图2-4 总E-R图2.2 逻辑设计概念设计阶段是独立于任何一种数据模型的,而逻辑设计阶段则与现实结合起来,逻辑设计的任务就是将概念设计阶段设计好的基本E-R图转换为与项目所支持的数据模型相符合的逻辑结构。具体任务包括将E-R图转换成关系模型、模型优化、数据库模式定义、用户模式设计。2.2.1 建立关系模式转化规则:一个实体型转换为一个关系模式,实体的属性就是关系的属性,实体的码就是关系的码。一个1:1联系可以转换为一个独立关系模式,也可以与任意一端关系模式合并;一个1:N联系可以转换为一个独立关系模式,也可以与n端实对应的关系模式合并;一个M:N联系转换为一个独立关
8、系模式,具有相同码的关系模式可以合并根据以上转化规则可得供应商(供应商的编号,供应商的名称,供应商的地址,供应商的联系电话)供应商的编号-供应商的名称,供应商的编号-供应商的地址,供应商的编号-供应商的联系电话药品(药品的编号,药品名称,药品重量,药品类别,药品单价,药品生产日期,药品保质期)药品的编号-药品名称,药品的编号-药品重量,药品的编号-药品类别,药品的编号-药品单价,药品的编号-药品生产日期,药品的编号-药品保质期顾客(顾客姓名,顾客编号,顾客年龄,顾客联系电话,顾客地址,顾客邮编)顾客编号-顾客姓名,顾客编号-顾客年龄,顾客编号-顾客联系电话,顾客编号-顾客地址,顾客编号-顾客邮
9、编仓库(仓库编号,仓库当前库存量,仓库最大库存量,仓库最小库存量)仓库编号-仓库当前容量,仓库编号-仓库最大容量,仓库编号-仓库最小容量工作人员(人员编号,人员名称,人员电话,人员地址,人员类型)人员编号-人员名称,人员编号-人员电话,人员编号-人员地址,人员编号-人员类型销售员售货(人员编号,顾客编号,货物编号,购买数量,销售日期)(人员编号,顾客编号)-货物编号,(人员编号,顾客编号)-购买数量(人员编号,顾客编号)-销售日期顾客退货(人员编号,顾客编号,退货数量,退货日期)(人员编号,顾客编号)-退货数量,(人员编号,顾客编号)-退货日期采购员进货(供应商编号,采购员编号,进货数量,进货
10、日期)(供应商编号,采购员编号)-进货数量,(供应商编号,采购员编号)-进货日期采购员退货(供应商编号,采购员编号,退货数量,退货日期)2.2.2 关系模式规范化处理以上关系模式中的各实体和联系之间不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF。2.2.3 用户子模式建立表2-1 关系外模式序号视图名称作用备注1price查询各种商品的单价2StorageNow查询目前仓库货物数量3Workweight查询采购员的采购信息4worksale查询售货员买了多少东西2.2.4 关系模式逻辑结构定义详细的逻辑结构定义见附录23 数据库物理设计3.1 物理设计阶段目标和任
11、务数据库的物理设计是为逻辑数据模型选取一个最合适应用需求的物理结构的过程,在这个阶段中需要完成的任务是:(1) 确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;(2) 对物理结构进行评价,评价的重点是时间和空间效率。3.2数据存储方面3.2.1 建立索引的原则建立索引一般有以下三个原则:(1) 如果一个或一组属性经常在查询条件中出现,则考虑在这个属性上建立索引。(2) 如果一个经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引。(3) 如果一个或一组属性经常在连接操作的连接条件中出现,则考虑在这个属性上建立索引。表3.1 索引所在表名索引名称索引类型建立索引的项供
12、应商信息表supplier_index唯一SupNumber药品信息表goods_index唯一Gnumber客户信息表customer_index唯一Cusnum4数据库实施与测试主要包括数据库实施和测试两个部分。4.1 数据库实施4.1.1 数据库及数据库对象建立主要包括:数据库、基本表、视图、索引、触发器以及存储过程;对于具体的DDL语句以及相关代码,见附录3。(1) 建立索引: Create unique index supplie_index on Supplier(SupNumber); Create unique index goods_index on Goods(Gnumbe
13、r); Create unique index customer_index on Customer(Cusnum);(2)创建的视图如表4.1 所示 表4.1 视图序号视图名称作用备注1price查询各种商品的单价2StorageNow查询目前仓库货物数量3Workweight查询采购员的采购信息4worksale查询售货员买了多少东西(3) 创建的存储过程如表 4.2所示:表4.2 存储过程 编号存储过程名称作用P1SupPhone输入一个供应商编号查询其电话号码P2goodsprice查询哪些药品大于20P3Storagenow输入仓库号查询其剩余货物量P4worker_Insert向员
14、工基本信息表插入一个元组P5Book_Insert向订单基本信息表插入一个元组P6sale_Insert向销售单基本信息表插入一个元组P7Return_Insert向退货单基本信息表插入一个元组P8Person_delete从员工基本信息表中删除一个元组(4)创建的触发器如表 4.3 所示:表4.3 触发器编号触发器名作用T1book当向订货单插入一条数据时修改仓库数据T2return采购员退货触发器T3DeCustomer删除顾客信息的同时删除其他表中关于此人的信息4.1.2 数据入库将10张表导入到数据库中5总结十天数据库实习已经结束,实习期间有三门重要的考试,使我们一边应付考试,一边做实
15、习,晚上还要上通宵自习,感觉真的很累,有很多问题感到很难解决,还好,这些问题在不断的思考中被解决了。这次数据库实习让我学到了很多的东西,原来上课的时候总感到有些不足,因为自己不知道数据库到底在现实生活中有什么用处,因此感觉数据库与现实生活没有多大联系。通过这次数据库实习让我了解了数据库的重要性,知道了数据库在现实生活中到底怎么用。原来看课本上的数据库设计步骤总是不能理解,不知道应该怎么用,通过本次实习,使我深刻的理解了每一个步骤到底是干什么的,怎么干,应该得到哪些东西。 通过本次实习,我学习了很多数据库开发的技巧,例如如何画数据流程图,然后怎样从数据流程图中抽取出实体,如何画E-R图等等,这些
16、东西都为自己开发数据库提供了很多技巧。这也让我明白了团里合作的重要性,当自己遇到不懂得地方时,通过与同学和老师的交流,使得我对一些问题得到了更加深刻的理解,使得我能够按时完成本次数据库实习。 非常感谢学院能够安排本次数据库实习,同时感谢老师细心,耐心详细的讲解,没有他们本次数据库实习不可能圆满结束。6附录附录1 :数据字典:(1) 数据项: 表6-1DI-1SupNumber供应商的编号varchar(20)DI-2SupName供应商的名称varchar(20)DI-3SupAddress供应商的地址varchar(20)DI-4SupPhone供应商的联系电话varchar(20)DI-5
17、Gnumber药品的编号varchar(20)DI-6Gname药品名称varchar(20)DI-7Gweight药品重量floatDI-8Gtype药品类别varchar(20)DI-9Gprice药品单价floatDI-10Gdate药品生产日期dateDI-11Gstodate药品保质期intDI-12Cusname顾客姓名varchar(20)DI-13Cusnum顾客编号varchar(20)DI-14Cusage顾客年龄intDI-15CusPhone顾客联系电话varchar(20)DI-16CusAddress顾客地址varchar(20)DI-17Cusnumber顾客邮编
18、varchar(20)DI-18Gthdate顾客退货时间dateDI-19Gjhdate顾客购药日期dateDI-20Jhdate进货日期dateDI-21Thdate退货日期dateDI-22StorageSno仓库编号intDI-23StorageNow仓库目前库存intDI-24StorageMin仓库最小容量intDI-25StorageMax仓库最大容量intDI-26StoragePho仓库联系电话varchar(20)DI-27mannum人员编号varchar(20)DI-28manname人员名称varchar(20)DI-29manPho人员电话varchar(20)DI
19、-30manAdd人员地址varchar(20)DI-31mantype人员类型varchar(20)(2) 数据结构表6-2数据结构编号数据结构名数据结构含义组成DS-1Supplier供应商SupNumber SupName SupAddress SupPhoneDS-2Customer顾客Cusname Cusage CusPhone CusAddress CusnumberDS-3Goods货物Gnumber Gname Gtype Gweight Gprice GdateDS-4Storage仓库StorageSno StorageMax StoragePho StorageAdmD
20、S-5StorageManager仓库管理员Stonumber Stoname StoAddress StoPhoneDS-6Delvebook发货单SupName Gnumber Gname Gtype Gweight Gprice GdateDS-7Orderbook订货单SupNumber SupName Purmannum Gnumber Gweight JhdateDS-8Returnbook1退货单SupNumber Purmannum Gnumber Gweight ThdateDS-9Salebook顾客购药单Salemannum Cusname Gnumber Gname G
21、type Gweight Gprice GjhdateDS-10Rerurnbook2顾客退货单Salemannum Cusname Gnumber Gname Gtype Gweight Gprice GthdateDS-11Deposit仓库库存StorageSno Stonumber Gnumber GweightDS-12Saleman售货员Salemannum Salemanname SalemanPho SalemanAddDS-13Purchase采购员Purmannum Purmanname PurmanPho PurmanAdd(3) 数据流表6-3数据流编号数据流名称简述数
22、据流来源数据流去向数据流组成数据流量高峰流量F1采购部订货单药店向供应商提供药品需求单采购部供应商商品编码+商品名称+进货量+商品进价15次/月30次/月F2采购发货单供应商发出的收货单供应商检验货物的模块商品编码+商品名称+进货量+商品进价15次/月30次/月F3库存清单库存帐目共采购部参考的单据库存账目采购部差库模块商品编码+商品名称+库存量30次/月60次/月F4采购部退货单采购部向提供商发出的退货单检验货物的模块供应商商品编码+商品名称+退货量5次/月10次/月F5顾客购物单顾客购买药物是开的订单销售人员顾客商品编号+商品名称+购买量+商品售价+购买日期60次/月100次/月F6顾客退
23、货单顾客将要退药的单据发给销售部顾客退货模块确认退货模块商品编号+销售人员编号+购买量+退货日期10次/月20次/月F7不合格单采购部检查到的不合格药品的单子检验货物的模块退货模块药品编号+药品重量+退货日期5次/月10次/月F8合格单检验货物模块填写的合格药品的单据检验货物的模块入库管理模块药品编号+药品名称10次/月20次/月F9入库单库管理员填写的要入库药品的清单库管员仓库药品编号+药品数量15次/月30次/月(4) 处理逻辑表6-4处理逻辑编号处理逻辑名称简述输入的数据流处理输出的数据流处理频率P1.1采购查库采购部采购依据F1库存清单根据清单确认采购商品F2采购订货单30次/月P1.
24、2验货采购部检验来货F3采购发货单根据发货单检验商品F4不合格单,F6合格单15次/月P1.3采购退货检验不合格退去F4不合格单确认退货F5采购退货单10次/月P1.4入库检验合格入库F6检验合格单登记库存帐目F7入库单15次/月P2.1销售销售部向顾客卖货F9顾客订单导购提货F10销售单1000次/月附录2 基本表的建立:货物 表6-5属性名类型取值范围是否为主键是否可为空Gnumbervarchar(20)YNGnamevarchar(20)NNGweightFloat0NYGtypevarchar(20)NYGpriceFloat0NYGdateDateNYGstodateInt0NY供
25、应商 表6-6属性名类型取值范围是否为主键是否可为空SupNumbervarchar(20)YNSupNamevarchar(20)NYSupAddressvarchar(20)NYSupPhonevarchar(20)NY仓库 表6-7属性名类型取值范围是否为主键是否可为空StorageSnoInt0YNStorageMinInt0 and =0and0NYMannumVarchar(20)NNJhdateDateNN工作人员 表6-8属性名类型取值范围是否为主键是否可为空mannumvarchar(20)YNmannamevarchar(20)NNmanPhovarchar(20)NYma
26、nAddvarchar(20)NYmantypevarchar(20)NN顾客 表6-9属性名类型取值范围是否为主键是否可为空Cusnamevarchar(20)NNCusageInt0NYCusnumVarchar(20)YNCusPhonevarchar(20)NYCusAddressvarchar(20)NYCusnumbervarchar(20)NY仓库货物 表6-10属性名类型取值范围是否为主键是否可为空StorageSnoIntYNGnumbervarchar(20)YNStorageNowInt0NN订货单 表6-11属性名类型取值范围是否为主键是否可为空SupNumbervar
27、char(20)YNmannumvarchar(20)YNGnumbervarchar(20)YNGweightFloat0NYGpriceFloat0NYJhdateDateNY退货单 表6-12属性名类型取值范围是否为主键是否可为空SupNumbervarchar(20)YNmannumvarchar(20)YNGnumbervarchar(20)YNGweightFloat0NYThdateDateNY销售员售货 表6-13属性名类型取值范围是否为主键是否可为空mannumvarchar(20)YNGnumbervarchar(20)YNCusnumvarchar(20)YNGweigh
28、tFloat0NYGpriceFloat0NYGjhdateDateNY顾客退货 表6-14属性名类型取值范围是否为主键是否可为空mannumvarchar(20)YNGnumbervarchar(20)YNCusnumvarchar(20)YNGweightFloatNYGthdateDateNY2.SQL语言实现创建货物表create table Goods(Gnumber varchar(20) primary key,Gname varchar(20) not null,Gweight float check (Gweight0),Gtype varchar(20),Gprice fl
29、oat check (Gprice0),Gdate date,Gstodate int check(Gstodate0) 创建供应商表create table Supplier(SupNumber varchar(20) primary key,SupName varchar(20) not null,SupAddress varchar(20),SupPhone varchar(20)创建仓库存储表create table Storageage( StorageSno int primary key,StorageMin int check(storagemin0),StorageNow i
30、nt check(storagenow0 and storagenow0 and storagemax0)订货单create table Orderbook(SupNumber varchar(20),mannum varchar(20),Gnumber varchar(20),Gweight float check (Gweight0),Gprice float check (Gprice0),Jhdate date,primary key (SupNumber,mannum,Gnumber),foreign key (SupNumber) references Supplier(SupNu
31、mber),foreign key (mannum) references Worker(mannum),foreign key (Gnumber) references Goods(Gnumber)退货单create table Returnbook1( SupNumber varchar(20),mannum varchar(20),Gnumber varchar(20),Gweight float check(Gweight0),Thdate date,primary key (SupNumber,mannum,Gnumber),foreign key (SupNumber) refer
32、ences Supplier(SupNumber),foreign key (mannum) references Worker(mannum),foreign key (Gnumber) references Goods(Gnumber)销售员售货create table Salebook( mannum varchar(20),Gnumber varchar(20),Cusnum varchar(20),Gweight float check(Gweight0),Gprice float check(Gprice0),Gjhdate date,primary key(mannum,Gnum
33、ber,Cusnum),foreign key (mannum) references Worker(mannum),foreign key (Gnumber) references Goods(Gnumber),foreign key (Cusnum) references Customer(Cusnum)顾客退货create table Rerurnbook2(mannum varchar(20),Gnumber varchar(20),Cusnum varchar(20),Gweight float check(Gweight0),Gthdate date,primary key(man
34、num,Gnumber,Cusnum),foreign key (mannum) references Worker(mannum),foreign key (Gnumber) references Goods(Gnumber),foreign key (Cusnum) references Customer(Cusnum)附录3 一.数据库视图1. 创建各种商品的单价的视图create view priceasselect Gname,Gpricefrom goodsselect gname,gpricefrom price2. 查询目前仓库货物数量的试图create view Storag
35、eNowasselect StorageSno,StorageNowfrom mangerselect StorageSno,StorageNowfrom storagenow3. 查询采购员的采购信息create view Workweightasselect mannum,Gweightfrom orderbookselect *from workweight4.查询售货员卖了多少东西二. 存储过程1.输入一个供应商编号查询其电话号码create or replace procedure SupPhone(v_supsno in Supplier.Supnumber%type,v_supp
36、hone out Supplier.Supphone%type)isbegin select supphone into v_supphone from Supplier where v_supsno=supnumber; end;测试declarea varchar2(10):=4;b varchar2(20);beginsupphone(a,b);dbms_output.put_line(b);end;结果输出2. 查询哪些药品价格大于20(用游标)create or replace procedure goodspriceis v_Gname goods.gname%type; v_Gp
37、rice Goods.Gprice%type; cursor c1 is select Gname, Gprice from Goods where Gweight20;begin open c1; loop fetch c1 into v_Gname,v_Gprice; exit when c1%notfound; dbms_output.put_line(v_Gname|-|v_Gprice); end loop; close c1;end;检验:begin goodsprice;end;输出结果3.输入仓库号查询其剩余货物量create or replace procedure Stor
38、agenow1(v_storagesno in Storageage.Storagesno%type,v_storagenow out Storageage.Storagenow%type)isbegin select Storagenow into v_storagenow From manger where v_storagesno=Storagesno; end;测试declare a int:=5; b int; beginStoragenow1(a,b); dbms_output.put_line(b); end;输出结果4.向员工基本信息表插入一个元组create or replace proce