数据库课程设计(药店)最终版

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据库设计与管理课程设计报告题目:药店药品管理信息系统专业:信息管理与信息系统班级:110506姓名:学号:2011191指导教师:赵学期:2013-2014-1药店药品管理信息系统一、概述题目:药店药品管理信息系统背景:随着科学技术的飞速发展,电脑已经基本进入家家户户,计算机技术也在社会生产生活各个领域得到了广泛的运用。与此同时,企业之间的经营正在面临着日渐激烈的竞争,越来越多的企业开始意识到提高企业管理水平的重要性和实现信息化管理的迫切性。药品管理是一项琐碎、复杂而又十分细致的工作。但是小型药店药品管理仍是人工管理,在全新的市场竞争环境下,药店管理和运营效率已经成为药店成败得失的关键所在。手工方式下的信息处理工作量大,容易出现错误,针对这一情况,我用SQLServer2000设计了药店药品管理信息系统,用以提高人们买药时的效率,减小药店工作人员的工作量,提高管理水平。任务:它包括药店药品的购进管理、药品的出售管理、药品的存储管理等几大功能模块,并提供了对各个功能模块的查询、更新、统计等功能。该管理系统不仅能够保证各种核算准确无误,还可以利用计算机进行有关数据的统计分析。使药品管理工作系统化、自动化、规范化,从而提高运行效率,加强企业管理。二、需求分析1.药品购进业务在药品库存表中,可根据柜台销售药品的情况对药品的需求以及库存信息获得药品的需求量。购进药品后,购药人员将药品进行药物存储,不同的药品放入不同的存储柜中。为此,我在数据库中保存了药品信息,包括药品编号、药品名称、药品类别、生产商、进药单价、买药单价,方便查询药品的基本信息,了解药品盈利情况(单个药品盈利=买药单价-进药单价)、哪种品牌的药品比较畅销等。2.药品的出售管理在药品出售表中,可以及时了解到药品销售情况,并且结合药品信息表,从而得出每种药品的利润。为此,我在数据库中保存了顾客信息,包括买药人编号、买药人姓名、性别、年龄、联系电话、住址,便于药品出现问题时及时与当事人联系。以及销售信息,具体有药品编号、买药人编号、处理时间、药品数量、售出方式。3.药品的存储管理在药品库存表中,可以及时了解到药品的剩余库存,当发现库存不够时,可以及时的向供应商请求供货。为此,我在数据库中保存了柜台信息,包括柜台名称、柜台编号,记录药品的摆放位置,方便取药。以及库存信息,包括药品编号、柜台编号、库存数量,便于及时查找药品存放位置,节约售药和取药时间。三、数据库概念结构设计E-R图图3-1表3-2实体、联系与关系模式表实体/联系关系模式药品药品(药品编号,药品名称,药品分类,生产商,进药单价,买药单价)买药人买药人员(买药人编号,买药人姓名,性别,年龄,电话,住址)柜台柜台(柜台编号、柜台名称)售出售出:{药品编号、买药人编号、药品数量、售出时间、售出方式}库存存储:{药品编号、柜台编号、库存数量}四、数据库逻辑结构设计1.数据库名称:DrugSale2.包含的数据文件名为DrugSale_Data,存储位置为“D:\SQL吴娇”日志文件名为DrugSale_Log,存储位置为“D:\SQL吴娇”。3.E-R图转为5个表,都符合三范式要求,具体表结构的列表如下表所示:表4-1Drug属性名数据类型说明是否为空主键/外键取值范围Dnochar(5)药品编号否主键Dnamechar(20)药品名称否Dclasschar(8)药品分类Dbrandchar(10)生产商Dprice1float进药单价否大于零Dprice2float售药单价否大于零表4-2Patient属性名数据类型说明是否为空主键/外键取值范围Pnochar(5)买药人编号否主键Pnamechar(10)买药人姓名否Pageint年龄1-150Psexchar(2)性别男、女Pphonechar(11)电话否Paddresschar(20)住址表4-3Storage属性名数据类型说明是否为空主键/外键取值范围Lnochar(5)柜台编号否主键Lnamechar(20)柜台名称否表4-4DBuy属性名数据类型说明是否为空主键/外键取值范围Pnochar(5)买药人编号否外键主键Dnochar(5)药品编号否外键Time_SDsmalldatetime售出时间Quantityint销售数量否大于零DealChar(4)售出方式否售出表4-5Stored属性名数据类型说明是否为空主键/外键取值范围Dnochar(5)药品编号否外键主键Lnochar(5)柜台编号否外键LeftQuantityint库存数量否不小于零五、数据库物理实现1.数据库建立(1)创建数据库DrugSale,如图5-1所示:图5-1(2)生成数据文件和日志文件,如图5-2和5-3所示:图5-2图5-32.数据表建立(1)创建药品信息表Drug,如图5-4,数据表设计表窗口图如5-5,表浏览窗口图如图5-6所示:图5-4图5-5图5-6(2)创建顾客信息表Patient,如表5-7,数据表设计表窗口图如5-8,表浏览窗口图如图5-9所示:图5-7图5-8图5-9(3)创建柜台表Storage,如图5-10,数据表设计表窗口图如5-11,表浏览窗口图如图5-12:图5-10图5-11图5-12(4)创建销售表DBuy,如图5-13,数据表设计表窗口图如5-14,表浏览窗口图如5-15所示:图5-13图5-14图5-15(5)创建库存表Stored如5-16,数据表设计表窗口图如5-17,表浏览窗口图如图5-18所示:图5-16图5-17图5-183.数据库安全完整性实现(1)在创建药品信息表Drug时,就已经将药品编号Dno列声明为主键。语句为Dnochar(5)primarykeynotnull验证结果截图如5-19:图5-19(2)在创建顾客信息表Patient时,就已经将买药人编号Pno列声明为主键。语句为Pnochar(5)primarykeynotnull验证结果截图如5-20:图5-20(3)在创建柜台信息表Storage时,就已经将柜台编号Lno列声明为主键。语句为Lnochar(5)primarykeynotnull验证结果截图如5-21:图5-21(4)在创建销售信息表DBuy时,就已经将柜台编号Pno,Dno列声明为主键。语句为primarykey(Pno,Dno),验证结果截图如5-22:图5-22(5)在创建库存表Store时,就已经将柜台编号Pno,Dno列声明为主键。语句为primarykey(Pno,Dno),验证结果截图如5-23:图5-23(6)在创建药品信息表Drug时,就已经为列Dprice1,Dprice2定义了列级检查约束,使其值必须大于0。语句为check(Dprice10),check(Dprice20)验证结果截图如5-24:图5-24(7)在创建顾客信息表Patient时,为列Psex定义了列级检查约束,使其输入值只能是“男”或“女”。语句为check(Psex='男'orPsex='女')验证结果截图如5-25:图5-25同时为列Page定义了列级检查约束,使其值必须大于1并且小于等于150。语句为check(Page=1andPage=150)。验证结果截图如5-26:图5-26(8)在创建销售表DBuy时,就已经为列Quantity定义了列级检查约束,使其值必须大于0,同时为列Deal定义了列级检查约束,使其输入只能是“售出”。语句为check(Quantity0),check(Deal='售出')验证结果截图如5-27:图5-27(9)在创建库存表Stored时,就已经为列LeftQuantity定义了列级检查约束,使其值必须大于0。语句为check(LeftQuantity0),验证结果截图如5-28:图5-28(10)为销售表DBuy建立插入触发器,使在插入销售记录时,能自动更新库存表的库存数量LeftQuantity,使库存数量=库存数量-销售数量(LeftQuantity=LeftQuantity-Quantity),操作如图5-29:图5-29图5-30在插入数据前销售表DBuy的数据如图5-31:图5-31插入数据后,销售表DBuy的数据如图5-32:图5-32插入数据前,库存表Stored的数据如图5-33:图5-33插入数据后,库存表Stored的数据如图5-34:图5-34(库存表Stored的D002的库存数量从21变为12)4.数据操作实现(1)建立存储过程,用于向药品信息表插入数据,操作如图5-35:图5-35插入数据前,药品信息表Drug的数据如图5-36:图5-36插入数据后,药品信息表Drug的数据如图5-37:图5-37(2)建立存储过程,用于更新顾客信息表,将编号为“P002”的顾客电话改为“13500040023”,操作过程如图5-38:图5-38(3)建立存储过程,用于删除药品信息表,将编号为“D009”的药品删除操作过程如5-39:图5-39删除数据前,药品信息表中的数据如图5-40:图5-40删除数据后,药品信息表中的数据如图5-41:图5-41(4)建立存储过程,在销售表DBuy中查询编号为D002的药品的销售数量操作过程如5-42:图5-42(5)建立存储过程,在销售表DBuy中查询编号为D005的药品的利润,操作过程如5-43:图5-43(6)建立存储过程,在库存表Stored中查询编号为L01的柜台的库存药品,操作过程5-44:图5-44六、心得体会一周的课程设计一下就过去了,在这次的课程设计中我不仅检验了我所学到的知识,也得到了很多启示。还好在课程设计前我就已经开始为我的数据库设计,不然的话,一周的时间都不够用。但也应为提前创建了数据库和表,我发现我做的和老师要求的有很多不同,比如主键、外键、检查约束我就已经在创建表的时候就声明了,以至于在做数据库完整性的时候给自己造成了不小的麻烦。老师在动员大会的时候虽然简单讲了该做什么,但是真的到做报告的时候还是遇到了很多问题。在创建数据库和创建表的时候,还没遇到什么问题,但是到了数据完整性的时候,完全就不知道该怎么做了,只知道做规则、约束、默认值和触发器,但是到底怎么做却不知道,只能翻书随便找了一个很简单的例子,随便的套用上去,但是到了周三老师帮我们改报告的时候,经过老师的提醒,才知道,应该要做的东西有很多。比如约束,在创建销售表DBuy时,我就已经声明了检查约束,要求销售数量始终大于0,售出方式为“售出”。我之前只会声明检查约束,却不知道该怎么来验证我已经声明了该声明,最后老师告诉我们可以故意输入错误的信息,这样系统就会给出错误提示,就可以把该提示信息截图截下来,同样的,在为销售表DBuy建立插入触发器时,也可以用这种方法来验证,数据是否插入到该表中。这给我一个启示,在学习的过程中,我们肯定会犯很多很多的错误,但是并不是所有的错误都是没有利用价值的,有些错误可以提醒我们,有些错误可以给我们指明正确的道路,而有些错误,却可以帮我们验证自己做的正确的事情。错误并不可怕,可怕的是自己不敢行动,不敢付诸实践,不敢努力,在发现错误并且改正的错误的过程中,提升自己的能力。除此之外,在数据操作的实现中,我第一遍做的增、删、改、查全都是很简单的做法,没有用的存储过程,因为我觉得这样做也是增、删、改、查,用存储过程做也是增、删、改、查,那我就偷懒做简单的吧,可是最后老师却说一定要用存储过程中,开始我还不理解,但是后来一句话点醒了我,我们做的数据库是给客户用的,一定要充分考虑到客户是否方便操作,所有的功能一定要以客户为中心,而我为了图方便,图简单做的增、删、改、查只是方便自己,却没有方便顾客,所有就一定要做存储过程,它是独立存在于数据表之外的数据库对象,先创建存储过程,以后就可以直接多次调用,不必重新编写,执行的速度很快,同时还可以防止把数据库中表的细节暴露给用户,保证表中数据的安全性。这样做,才是真正的数据库,才真正以客户为中心,考虑客户的需求。这告诉我,做任何事情,都要以一个基本点为中心,考虑他

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功