基于java的药店管理系统的设计与实现论文内容摘要:

出了较高的要求,这就要求我们项目开发人员在设计时,尽量开发出用户使用界面友好的GUI,同时尽量避免在前台呈现时涉及到专业知识;最好可做到“傻瓜式”使用。 实在不行,可以在页面上添加帮助文档,帮助用户尽快熟悉产品的使用。 系统的标准性系统在开发和使用的过程中会难免会涉及到很多计算机硬件、软件。 所有这些都要符合主流国际、国家和行业标准,以求该系统在一般计算机上都可以使用。 可行性分析 经济可行性 经济可行性研究是对组织的经济现状和投资能力进行分析,对系统建设运行和维护费用进行估算,对系统建成后可能取得的社会和经济效益进行估计。 由于本系统是为工作者提供方便快捷网络化办公内容,登陆本系统,即可使用系统,系统成本主要集中在系统软件的开发上,当系统投入运行后可以为人们节约大量的时间和精力。 所带来的方便及效益远远大于系统软件的开发成本。 在经济上完全可行。 技术可行性药店管理系统采用Eclipse开发工具等当今流行的开源框架等技术应用到模块制作当中,结合药店管理系统的特点,设计基于java (swing组件)开发的药店管理系统。 其中:前台用Swing 组件技术以及awt event事件响应实现前台GUI界面的开发以及相应得事件响应,后台采用SQL Server数据库进行相关数据库的存储,二者之间的联系则采用SQL相关增删改语句编写成java类来实现,这三大部分尽量发挥各自的特点充分协调工作。 尽量可以实现预想的功能,使得后期的维护和返工率达到最低。 管理可行性药店管理系统由若干个模块组成,开发运行后,平时的维护与管理简单快捷。 同时,采用模块化编程,降低了错误产生次数,提高了开发效率。 对于完成同样功能的进程,采用同一个程序启多个子进程的方式。 配置文件采用标准格式文本文件进行配置,采用普通的标准格式文本文件简单,清楚,容易维护。 系统目标该药店管理系统致力于实现以上描述的全部功能,从而可以实现人事办公的智能化,提高企业的工作效率,尽最大努力符合我国各大小型药品销售企业的管理需求,从而在后期可以投入到实际使用中。 4 系统总体设计 系统功能模块图 药品管理系统模块是用JAVA SWING进行设计,SQL Server作为后台数据库管理系统。 系统管理模块分为用户登录、用户注册、销售管理、药品管理、供应商管理、会员管理、用户管理。 销售管理模块主要实现店内销售和收银工作的处理;药品管理模块主要有新增药品,修改药品,查询药品,删除用户以及药品信息列表;供应商管理模块主要有新增供应商,修改供应商信息,查询供应商,删除已无合作的供应商以及供应商信息列表;会员管理模块主要有新增会员,修改会员,查询会员、删除会员以及会员信息列表;用户管理模块主要是新增用户,修改用户,查询用户,删除用户以及用户信息列表。 系统体系结构框图如图41所示: 图41 药店管理系统功能模块 系统流程图依据软件工程的基本原理,综合以上分析给出系统流程图如图42所示。 图42 系统的处理流程图 说明: 用户第一次使用本系统,需要通过注册界面注册成为本系统的合法用户,然后首先要做的事情是将药品入库,即将店内现有的以及要用到的药品以及共全部导入系统方可进行销售行为。 根据以上的这些分析,可以得到系统的总的流程图,如图43所示: 图43 总体流程图说明:用户登陆系统时,系统判断用户的级别,如果身份是经理,则可以进行系统用户的用户管理,以及剩下的全部功能;如果只是普通员工,则只可以进行相应的销售管理,进货管理,坏货转移,职工管理。 用户点击退出按钮时,退出系统。 5 数据库设计 数据库的逻辑设计根据上面的需求分析和总体设计可知,本系统主要涉及到以下几个实体类:药品、药品类别、药品入库单、药品销售单、供应商、会员、系统用户。 总ER图如图51所示: 图51 药店管理系统的总ER图 依据数据库设计的方法,可按照本系统数据特点设计相应的实体关系可知,该药店管理系统一共涉及到8个实体,其名称及属性分别如下图所示(对应于图52至59): 药品类别 药品类别ID药品类别名称类别描述图52 类别信息实体图 用户ID 药品medicinemedicine medicine medicine药品编码库存药品名称售价所属类别生产日期 保质期供应商进价图53 药品实体图图54 药品销售实体图4. 进货单的实体图 进货单 供应商名称进货总价进货时间数量药品编码药品名称所属类别经手员工进货单号 进价图55进货单实体图 供应商合作开始时间银行账户供应商编号邮政编码供应商地址 联系电话主要负责人供应商名称图56供应商实体图图57会员实体图 系统用户 密码用户ID用户类型 账号图58用户实体图8. 收银表的实体图 收银表药品名称 单价药品ID 销售数量 总价图59收银表实体图药品管理管理系统主要涉及到8个表,即:药品信息表、药品类别表、供应商表和会员表、系统用户表、药品入库表、销售表和收银信息表。 药品信息表:这张表是用来存储药品信息的。 药品添加以后它的信息就会储存到这张表中,其中包含:药品编号、药品名称、化学名称、规格、药品类别、剂型、批号及厂商。 其中药品名称是主键,非空且唯一。 其余信息可以为空,并在数据表建立的时候给他们相应的规定好数据类型。 药品类别表:这张表是用来存储入药品类别信息的,所有药品类别信息都包含在这张表中。 包括:药品类别单号、药品类别编号、描述。 其中药品类别名称是主键,非空且唯一。 供应商表:这张表是用来存储与药店有业务往来的供应商的相关信息的,包括:供应商编码、供应商名称、供应商地址、主要负责人、负责人联系电话、邮政编码、银行账户、合作开始日期。 其中供应商编码是主键,非空且唯一。 药品入库表:进货单表:用来存储药店进货时的进货详细信息,包括:进货单号、进货时间、药品名称、药品编码、供应商名称、药品类别、进货单价、进货数量、进货金额、经手员工。 其中进货单号是主键,非空且唯一;销售单表:这张表是用来存储出库表单息的,所有出库信息都包含在这张表单中。 它的字段有:销售单号、批号、数量、销售日期及经手人。 其中销售单号是主键,非空且唯一。 会员表:这张表是用来存储与药店有业务往来的会员的相关信息的,包括:会员编码、会员姓名、联系电话、拥有的积分。 其中会员编码是主键,非空且唯一。 系统用户表:这张表是用来存储该店员工的相关信息的,包括:用户ID,用户账号、用户密码、用户类型。 其中用户编码是主键,非空且唯一。 数据库的物理设计 做过软件开发的同学应该都知道,一般只有在对系统进行全面的分析,确定了系统涉及到哪些类,并对这些类的系统的属性有了明显的认知之后再回去在数据库中建立相应的表,这是因为在程序设计的时候,所有与数据库相关的增删改查的操作全部是以这些这些表为基础进行的,如果一开始盲目地建立表,后期发现不合适,再想修改,涉及到的工程将会非常大。 所以我将数据库的物理设计放到需求分析、总体设计、和数据库逻辑设计之后。 至此,根据上面的分析,在SQL Server 数据库中设计了相应的表如下所示,每个表格表示为数据库中的一个表。 (对应于图510至517)图510 药品类别信息表图511 药品信息表图512进货单信息表 图513供应商信息表图514 系统用户信息表图515 销售单信息表 图516 会员信息表 图517收银信息表6 详细设计与系统实现 登陆模块的实现该模块的特色是用户在登陆的时候有两种身份可供选择:经理和普通员工。 只有以经理身份登陆的时候才能拥有查看和修改其他员工信息的权利。 另外此界面还提供了跳转到系统用户的注册界面的按钮,方便初次使用该系统的用户实现系统账号的注册。 同时可通过点击下面的登陆按钮进行登陆,注册按钮跳转到注册界面,重置按钮清空填写信息,可重新填写。 登陆界面如图61所示:图61 登陆界面关键代码:界面设计代码:() if (() == bt_login) { UserInfo user1 = new UserInfo()。 (name)。 (pwd)。 (type)。 try { valid = (user1)。 } catch (SQLException e1) { // TODO 自动生成的 catch 块 ()。 } if (() || ()) (null, 用户名或账号不能为空。 )。 else if (() == =====请选择=====) (null, 请选择一种身份)。 else if (valid) { if (type == 经理) { (null, 登陆成功。 欢迎您,经理。 )。 new MainFrame()。 dispose()。 } else { (null, 登陆成功。 欢迎您,普通职工。 )。 new SecondFrame()。 dispose()。 } } else { (null, 对不起,该用户未注册或用户名密码错误。 )。 ()。 ()。 (0)。 } }连接数据库代码:()public static boolean loginhefa(UserInfo user1) throws SQLException { boolean va = false。 Connection conn = ()。 String name = ()。 String pwd = ()。 String id = ()。 String sql = select * from UserInfo where userName=39。 + name + 39。 and userPwd=39。 + pwd + 39。 and userType=39。 + id + 39。 Statement s = ()。 ResultSet rs = (sql)。 try { if (()) { va = true。 } else { (())。 } } catch (SQLException e) { ()。 } finally { (conn)。 } return va。 } 注册模块的实现 该模块的特色在于注册用户时,系统会自动检测是否以存在相同的用户名,并且在注册成功之后会自动形成该用户的用户ID。 同时可通过注册按钮成功注册成为该系统的用户,也可以通过重置按钮清空已填写的信息,返回按钮则可以返回到登陆界面。 注册界面如图61所示:62注册界面关键代码:界面代码:()if (() == bt_register) { if (() || ()) { (null, 账户或密码都不能为空)。 } else if ((=====请选择=====)) { (null, 请选择一种身份。 )。 } else { try { flag = (user)。 } catch (SQLException e1) { // TODO 自动生成的 catch 块 ()。 } if (flag != 0) { (null, 恭喜。 注册成功,请登录)。 new Login()。 ()。 } else { (null, 该用户已存在)。 } } }连接数据库代码:()public static int addUser(UserInfo user) throws SQLException { int flag = 0。 try { Connection conn = ()。 Statement s = ()。 if (user != null) { // 验证账号不允许重复 String sql = select * from UserInfo where userName=39。 + () + 39。 ResultSet rs = (sql)。 if (rs != null amp。 amp。 ()) {// 说明该数据库中已经存在该账号,不能添加 flag = 0。 } else { sql = insert into UserInfo values(39。 + () + 39。 ,39。 + () + 39。 ,39。 + () + 39。 )。 flag = (sql)。 } } (conn。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。