第一章系统概述1.1系统开发背景随着科技的不断进步,企业都在不断的注重管理的信息化以完善企业管理,增强企业自身的竞争力。医药业也不例外,通过较完善的信息系统实现自身企业对内部管理的方便性、合理性、快捷性、高效性等要求。以前的手工管理效率低使最明显的缺陷,另外,数据的一致性不好维护,如某个药品信息的记录有所改动(如更改编号),那么该要品的其他记录就与此不一致,造成查询的费时费力。要把全部数据都更改又相当不方便。对药品库存的盘点也很不方便,而且需要较多的人来进行管理操作,而且容易出错,造成数据的不一致。而药品业是关民生的行业,错误信息可能会造成不可收拾的严重后果。因此,运用高效、准确的信息管理系统来替代手工管理是完善医药业管理的有效手段。1.2.系统开发意义利用数据库系统可以很好的对数据进行维护,减少由于数据不一致等错误带来的麻烦。方便数据的更新和查询,降低错误率,方便药品信息的维护及库存的盘点。还可以运用较少的人员,高效的完成对医药的管理。由于社会的发展不断趋于信息化,各个行业都要加强自身的信息化程度以适应社会的发展。而管理信息化正迎合了这个趋势,数据库系统在医药业的应用业实现了医药业执行工具、业务管理等的信息化,在这个信息化社会为医药业的发展增加了新的动力。相信随着社会的不断发展对该类系统的需求会越来越高。医药管理信息系统,即服务于个人,又服务于企业,并最终服务于社会,这是让科技为人类服务的最好例证,其开发意义显而易见。第二章需求分析2.1信息需求(基本信息)药品信息:药品编号,药品名称,药品类别代码,售价,厂价,单位,库存量,有效期至,批准文号等药品分类索引信息:药品类别代码,类别说明等供应商信息:供应商号,供应商名,联系人,联系电话,所在城市等药品销售信息:销售编码,药品编码,药品名称,售价,单位,数量,总额,销售日期等用户信息:职工号,姓名,用户登录名,用户口令,用户身份,用户权限等2.2功能需求系统要实现的主要功能有:(1)对药品信息的维护和管理,能够万册很能够药品信息的添加、修改和删除,并按一定条件查询药品信息。(2)对供应商信息的管理,能够完成信息的添加、修改和删除,并按一定条件查询信息。(3)对用户信息的管理,能够完成信息的添加、修改和删除,并按一定条件查询信息。(4)仓库管理,能够查询库存药品信息,并对库存进行更新、盘点(5)查询功能,要求可以按日期查询,也可按用户选择字段和输入内容查询。2.4数据字典●数据存储及数据流名字:销售信息别名:销售单描述:一次销售结束后所存储的信息并生成单据定义:销售信息=销售编码+药品编码+药品名称+单价+数量+单位+销售日期+总额+销售员编号位置:存储输出给顾客名字:药品信息别名:描述:仓库内存储的所有药品信息(包括所有药品查询的所需信息)定义:药品信息=药品编码+药品名称+药品类别+售价+厂价+单位+库存量+有效期至位置:存储输出供查询名字:用户信息别名:描述:系统用户的信息定义:用户信息=职工号+姓名+用户名+用户口令+职位+权限位置:存储输出供查询及维护名字:供应商信息别名:描述:药品供应商的信息定义:供应商信息=供应商号+供应商名称+联系人+联系电话+所在城市位置:存储输出供查询及维护名字:查询信息描述:用户所提出的查询请求定义:查询信息=[销售管理查询信息|仓库管理查询信息|日常管理查询信息]销售管理查询信息=[药品名称|药品类别]仓库管理查询信息=[药品编码|药品名称|药品类别|过期药品]日常管理查询信息=[药品编码|药品名称|药品类别|过期药品]位置:销售管理系统仓库管理系统日常管理系统名字:更新信息描述:用户操作对库存信息的添加、删除、修改定义:更新信息=[销售管理更新信息|仓库管理更新信息|日常管理更新信息]销售管理更新信息=药品编码+新库存量仓库管理更新信息=药品编码+药品名称+药品类别+售价+厂价+单位+库存量+有效期至日常管理更新信息=[用户更新信息|供应商更新信息]用户更新信息=职工号+姓名+用户名+用户口令+职位+权限供应商更新信息=供应商号+供应商名称+联系人+联系电话+所在城市位置:销售管理系统仓库管理系统日常管理系统名字:查询结果描述:系统完成用户查询请求后所得结果定义:查询结果=[销售管理查询结果|仓库管理查询结果|日常管理查询结果]销售管理查询结果=药品编码+药品名称+药品类别+售价+单位+库存量+有效期至仓库管理查询结果=药品编码+药品名称+药品类别+售价+厂价+单位+库存量+有效期至日常管理查询结果=[药品信息查询结果|销售记录查询结果|用户查询结果|供应商查询结果]药品信息查询结果=药品编码+药品名称+药品类别+售价+厂价+单位+库存量+有效期至销售记录查询结果=销售信息=销售编码+药品编码+药品名称+单价+数量+单位+销售日期+总额+销售员编号用户信息查询结果=职工号+姓名+用户名+用户口令+职位+权限供应商信息查询结果=供应商号+供应商名称+联系人+联系电话+所在城市位置:销售管理系统仓库管理系统日常管理系统●处理名字:处理信息编号:1.1输入:销售信息输出:销售信息名字:生成单据编号:1.2输入:销售信息输出:销售信息+销售单名字:查询处理编号:1.4输入:药品信息输出:查询结果名字:更新库存编号:1.3输入:销售信息输出:更新信息●数据项名字:药品编码别名:描述:唯一地标识库存清单中一种特定药品的关键域定义:药品编码=6{字符}6位置:药品信息销售管理查询信息及结果仓库管理查询信息及结果日常管理查询信息及结果名字:库存量别名:描述:仓库内药品的实际数量定义:库存量=1{数字}4位置:药品信息销售管理更新信息仓库管理更新信息查询结果名字:总额别名:总金额描述:记录每张销售单的总销售额定义:总额=8{货币}8位置:销售信息名字:销售日期别名:描述:记录药品销售的时间定义:销售日期=8{时间}8位置:销售信息第三章总体设计3.1系统E-R图3.1.1系统局部E-R图图3.1供应商、药品实体联系图图3.2药品、药品类别实体联系图图3.3仓库、药品实体联系图图3.4职工、药品实体联系图3.1.2.系统全局E-R图通过对系统局部ER图的优化设计系统的基本ER图如下:图3.53.2关系模式1.关系模式设计该设计以概念结构设计中的E-R图为主要依据,设计出相关的整体逻辑结构。根据总E-R图有五个实体但仓库实体在本系统中作用不大而且仅涉及到一个仓库,所以仓库不再单独设计一张表。再加上一个多对多关系(本系统不考虑供应关系)总共五个关系模式:药品信息(药品编码,药品名称,药品类别代码,售价,厂价,库存量,单位,有效期至)药品类别索引(药品类别代码,类别说明)供应商信息(供应商编码,供应商名称,联系人,联系电话,所在城市)用户信息(职工号,姓名,用户名,用户口令,职位,权限)药品销售信息(销售编码,销售日期,药品编码,药品名称,单价,数量,单位,总额,销售员编码)2.关系模式优化3.2.1中的关系模式中的每一个分量都是不可分的数据项所以都符合第一范式;而且所有的前四个关系模式都是由单个属性作为码,没有任何属性对码部分依赖,在药品销售信息内虽由三个属性作为码,但也不存在属性对码的部分依赖,所以上述模式都符合第二范式;药品信息、药品类别索引、供应商信息三个关系模式中不存在传递依赖,都属于第三范式。在用户信息关系模式中,用户是按照权限分类的,职位不同权限不同,这样该关系模式就存在了非主属性对码的传递依赖:职工号→职位,职位→权限,所以应将用户信息分解为:用户信息(职工号,姓名,用户名,用户口令,职位)职位权限信息(职位,权限)但本系统不考虑职工信息的管理,为了使销售员编号与销售员的职工号连系起来,并能通过职工姓名和职位来修改用户信息所以把员工的部分信息(职工号,姓名,职位)跟用户基本信息(用户名,用户口令,权限)合成了用户信息(职工号,姓名,用户名,用户口令,职位,权限)以便于系统功能的实现,所以在此不采用分解模式,仍采用原模式。药品销售信息中有大量的数据冗余,且不够明确。现将其分解为:药品销售主表(销售编码,销售日期,销售员编号,总金额)药品销售子表(销售编码,销售日期,药品编码,药品名称,单价,数量,单位,金额)其中“金额”由“单价”和“数量”乘积求得,“总金额”由同一销售单内不同药品的“金额”求和得到。这样不仅方便查询销售总额,也加快了合计数据的速度,也有利于程序的实现。用户信息模式和药品销售子表模式是为了降低连接操作,减少外键和索引数目对原模式进行重建或分割得来的。更重要得是,这样不但可以提高查询速度,而且有利于系统实现。3.3数据表设计通过对关系模式的优化,得到六个基本表:表3-1药品信息表字段名字段类型长度主键或外键字段值约束对应中文属性名MedicineCodeChar6PrimaryKeyNotNull药品编码MedicineNameVarchar32NotNull药品名称MedKindCodeChar1ForeignkeyNotNull药品类别代码PriceMoney8售价ListPriceMoney8厂价NumberInt4库存量UnitChar2单位UsefulLifeDatetime8有效期至表3-2供应商信息字段名字段类型长度主键或外键字段值约束对应中文属性名FirmCodeChar4PrimaryKeyNotNull供应商编码FirmNameVarchar16NotNull供应商名称LinkVarchar12联系人LinkTellVarchar11联系电话CityVarchar8所在城市表3-3药品销售主表字段名字段类型长度主键或外键字段值约束对应中文属性名SaleNoint4PrimaryKeyNotNull销售编码WorkNoChar2ForeignkeyNotNull销售员编码SaleDateDateTime8销售日期AmountMoney8总金额表3-4药品销售子表字段名字段类型长度主键或外键字段值约束对应中文属性名SaleNoint4PrimaryKeyNotNull销售编码MedicinecodeChar6ForeignkeyNotNull药品编码MedicineNameVarchar32NotNull药品名称PriceMoney8售价NumberInt4数量UnitChar2单位AmountMoney8金额表3-5药品类别索引信息字段名字段类型长度主键或外键字段值约束对应中文属性名MedKindCodeChar1PrimaryKeyNotNull药品类别代码KindExplanationVarchar16NotNull类别说明表3-6用户信息字段名字段类型长度主键或外键字段值约束对应中文属性名WorkNoChar2PrimaryKeyNotNull职工号NameVarchar12姓名UserRegNameChar3NotNull用户登录名PasswordMoney3NotNull用户口令PositionMoney10用户身份PowerInt10用户权限第四章实现4.1数据库实现根据3.3数据表设计的设计结果,运用DBMSSQLServer2000的企业管理器建立数据库表。药品信息表(MedInfor)设置药品编码(MedicineCode)为主码,药品类别索引表(MedKindInfor)设置药品类别代码(MedKindCode)为主码,销售主表(SaleMainTable)设置销售编码(Saleno)及销售日期(SaleDate)共同作为主码,销售子表(SaleChildTable)设置销售编码(SaleNo)、销售日期(SaleDate)和药品编码(MedcineCode)共同作为主码,用户信息表(UserInfor)设置职工号(WorkNo)作为主码,供应商信息表(FirmInfor)设置供应商编码(FirmCode)为主码。属性的字符类型及长度参照3.3数据表设计结果进行设置每类药品可以有好多种药,每种药只有一个类别,所以药品类别索引表与药品信息表存在一对多的关系,以MedKindInfo