序设计语言书写的程序。具体来说就是把经过总体设计得到的各个模块详细的加以描述。
本系统采用支持面向对象的Eclipse作为开发工具,运用了J2SE的SWing的技术,更加的方便了程序员的工作。程序对系统配置要求较高。在此给出软件系统的主要模块,如图4.1所示。
图4.1 主程序模块图
根据以上主程序的模块图,我们可以得出下面的关于各个模块的程序流程图,如图4.2所示。
图4.2 总体流程图
说明:用户登陆系统时,系统判断用户的级别,如果为系统管理员,则可以进行用户的用户管理,如果是管理员,则可以进行相应的销售管理,进货管理,坏货转移,职工管理,管理员点击退出按钮时,退出系统。
失败
操作成功
成功
图4.3 用户登陆流程
说明:用户根据已知的用户名和密码登录系统,只有登录成功才能进行系列的用户管理、库存管理、销售管理,职工管理的操作。
登陆
录入药品
失败
成功
成功
图4.4 药品创始流程
登陆
输入库存
操作成功
操作失败
成功
图4.5 存货创始流程
登陆
操作失败 销售单录入
操作成功
成功
图4.6 销售流程
登陆
录入坏货信息
操作失败
操作成功
成功
图4.7 坏货转移流程
说明:用户登陆后进行药品的相关管理,通过药品创始,为系统初始化一些药品及添加新的代售药品。通过存货创始将具体进货的药品录入库存中,销售成功则对库存做相应的修改。当药品损坏或者过期时,应当对库存做相应的调整。
用户
登陆
录入职员信息
操作成功
成功
失败
图4.7 职员管理
说明:管理员通过职工管理模块进行职工的管理,添加职工后,录入到职员列表中。
4.2 程序输入输出描述
4.2.1 用户登陆模块
1.输入项目:输入用户名及密码。
2.输出项目:打开系统。
4.2.2 用户管理模块
1.输入项目:与用户相关的所有信息。
2.输出项目:操作结果的显示,出错弹出对话框。
4.2.3 销售管理模块
1.输入项目:选择药品编号,药品的进销价格。
2.输出项目:操作结果的显示,出错弹出对话框。
4.2.4 进货管理模块
1.进货项目:供应商的详细信息,仓库的详细信息,药品的数量。
2.输出项目:药品的有关资料的显示,进货单列表
4.2.5 坏货管理模块
1.输入项目:发生意外无法使用的药品编号。
2.输出项目:操作结果的显示。
4.2.6 职工管理模块
1.输入项目:职工的详细信息。
2.输出项目:根据用户的输入显示相应的结果。
4.3 数据库的设计
4.3.1 数据库的概念结构设计和ER图
在需求分析阶段已完成该系统所有的数据分析。根据该阶段所建立的概念模型,已经得出满足系统设计要求的几个关系描述,该阶段的主要工作就是把前一阶段的成果转化为具体的数据库。
概念结构设计就是要找出实体和他们之间的联系,去除非本质的东西。
实体是名词,在ER 图中设计中就是所说的表。比如"药品","库存"。
行为是动词,在ER 图中设计时一般不考虑行为,它是业务逻辑,在详细设计才有设计,是方法。比如 "销售","进货"等等。
在设计ER图时时强调的是不同实体之间关系,不是行为。比如:药品 "销售" 库存,"转移"是一种关系,不是行为。在某种情况下,"销售"是一个关系表,将"药品"和"库存"联系起来。
在找出实体后,我们要根据分析来定义实体的属性,就是表的列。比如药品有ID,名称,进价,销价,简介等等; 库存有ID,名称,数量等等。
"库存"可拥有 0-MANY 的"药品",而药品同样属于0-MANY 的库存。所以是多对多的关系
根据以上的分析给出下面的概念结构设计得E-R图如图4.3所示。
图4.8 用户E-R图
图4.9 药品E-R图
图4.10 供应商E-R图
图4.11 库存E-R图
图4.12 供应商E-R图
图4.12 职员E-R图
n
1
m
m
n
n
n
1
图4.13 实体联系E-R图
4.3.2 数据库的逻辑设计
药品管理管理系统主要涉及到4个表,即:药品信息表、药品入库表、药品出库表和库存表。
药品信息表:这张表是用来存储药品信息的。药品添加以后它的信息就会储存到这张表中,其中包含:药品编号、药品名称、化学名称、规格、药品类别、剂型、批号及厂商。其中药品编号是主键,非空且唯一。其余信息可以为空,并在数据表建立的时候给他们相应的规定好数据类型。
药品入库表:这张表是用来存储入库表单信息的,所有入库单信息都包含在这张表中。包括:入库单号、药品编号、批号、入库日期、有效日期、进价、预售价、数量、整量单位、散量单位及验收人。其中入库单号是主键,非空且唯一。
药品出库表:这张表是用来存储出库表单信息的,所有出库信息都包含在这张表单中。它的字段有:出库单号、药品编号、批号、数量、出库日期及验收人。其中出库单号是主键,非空且唯一。
药品库存表:这张表是用来存储库存信息的,所有初始化的库存信息和出库入库信息改变后的信息都会被记录下来。它字段有:库存号、药品编号、批号、药品名称、数量、整量单位、散量单位、入库日期、有效日期、进价、预售价、库存下限及验收人。
4.3.3 数据库的物理设计
数据库设计有几个范式,一般我们要做到的是第三范式,即数据表中没有冗余字段以及同一个表中的字段没有函数依赖关系,冗余字段即在一个表中已经保存过的信息,在另一个表中就不应该存在,如果需要的话,可以通过表间的关联来得到,函数依赖性就是一个表中的字段间不应该有计算关系,如一个表中有单价字段、数量字段,就不应该有一个总金额字段。如果程序运行过程中需要总金额,可以实时计算。不过在一些较常用的表中,我们可以适当地保留冗余字段,这样,在程序运行过程中可以减少由于表间互相关联而使用速度降低等问题。这就是所谓的第四范式。数据表设计时,最好不要使用用户输入的信息作为主键,每一个数据表自己定义一个主键,添加信息是由程序自动添加,这样就可以减少数据更新时产生的错误。表与表相关联的外键最好是由程序自动生成的主键,这样数据库就比较规范了。另外,数据表设计时一般都应该有一些标志字段,标志字段可以定义成CHAR(1)或BIT型。建议实际应用中定义成CHAR(1)字段可以存储多种可能的状态,在最初设计时,可能我们没有考虑到的一些情况,在程序后来的开发中,可以通过设计标志字段为不同的 值来解决,这样就避免了修改数据库结构。
数据库初期设计时一定要谨慎,把所有可能的情况都考虑进去,即使当时没有用到,也要将它留在数据库中作为备用字段以便将来扩充。
程序一旦开始编码,就应该尽量避免再修改数据库。因为如果数据库结构一旦改变,所有与修改的数据表相关的业务都有可能受到影响,而某些影响还很难看到,这样就容易形成一个恶性循环。错误越改越多,越改越乱,最终导致程序的失败。PB的数据窗口与其他语言的数据控件不一样,它的很多东西是预编译的。即使你一个模块已经调试无误,但只要数据库结构改动。相应的模块就一定要重新修改,否则一定会出问题。
药品管理系统数据库中各个表的设计结果如下面几个表格所示。每个表格表示为数据库中的一个表。
表4.14 药品信息表
Medicine 列名 数据类型 允许空值 默认值 描述 mid(PK)
上一篇:
电信维护系统
下一篇:
计算机网络毕业论文