资源描述
药品仓库管理系统的设计与研发
63
2020年4月19日
文档仅供参考
毕业综合训练
(毕业论文/设计形式用)
课题名称 药品仓库管理系统的设计与研发
学 院 信息工程学院
专 业
班 级
姓 名 学号
指导老师
毕业综合训练任务书
学院 信息工程学院 专业 计算机应用技术专业 年级 级
班级 姓名 起止日期
题目 药品仓库管理系统的设计与研发
1.毕业综合训练任务及要求(根据题目性质对学生提出具体要求)
能更有效的分类药品的种类与详细信息,便于今后药品的管理存放。
2.毕业综合训练的原始资料及依据(包括做调研的背景,研究条件、应用环境等)
该程序主要适用于药品仓库的管理应用,经过设计这个软件能够有利于减少资源的浪费和药品种类存放的安全性,将管理方面的漏洞降至最低。
3.主要参考资料、文献
[1] 侯维瑞 英语语体 上海:上海外语教育出版社,1988
[2][美]Rogers Cadenhead. Java编程入门经典.梅兴文译.第4版.北京:人民邮电出版社,
[3]陈轶.姚晓昆编著.Java程序设计实验指导.北京:清华大学出版社,
[4] 吴其庆编著.Java程序设计实例教程.北京:冶金工业出版社,
[5]李春葆,曾慧.SQL Server 学习与上机指导[M]. 北京:清华大学出版社, .6.
[6]施霞萍等编著.Java程序设计教程 第2版.北京:机械工业出版社,
[7]宛延闿等编著.实用Java程序设计教程.北京:机械工业出版社,
[8]耿祥义,张跃平.<JSP实用教程>.清华大学出版社, 5月1日:1-354月.
[9]陈刚.Eclipse从入门到精通[M].北京:清华大学出版社, :416-417.
[10]孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社, : 1-9.
[11](美)格罗夫 著,章小莉 等译. SQL完全手册(第二版)[M].北京:电子工业出版社, :12-14.
[12]王虎,张俊.管理信息系统[M].武汉:武汉理工大学出版社, .7.
13]东方华人.ASP.NET数据库开发[M]. 北京:清华大学出版社, .6.
指导教师评语
建议成绩:
优 良 中 及格 不及格
指导教师签字
年 月 日
目录
第一章 绪论.................................................................5
1.1系统开发背景.............................................................5
1.2问题定义.................................................................6
1.3解决方法.................................................................6
1.4技术可行性研究...........................................................6
1.5经济可行性研究...........................................................7
1.6操作可行性研究...........................................................7
第二章 需求分析.............................................................8
2.1功能性需求分析...........................................................8
(1) 系统用户管理...........................................................8
(2) 药品进货管理...........................................................8
(3) 药品销售管理...........................................................8
(4) 库存转移管理...........................................................8
(5) 职工管理...............................................................8
(6) 查询与报表分析.........................................................8
2.2业务流程.................................................................9
2.3 系统功能结构设计图......................................................9
2.4非功能性需求分析.........................................................9
(1) 系统处理的准确性和及时性...............................................9
(2) 系统的开放性和系统的可扩充性...........................................9
(3) 系统的易用性和易维护性................................................10
(4) 系统的标准性..........................................................10
(5) 系统的先进性..........................................................10
(6) 系统的响应速度........................................................10
第三章 详细设计..................................................10
3.1程序流程图..............................................................10
3.2 系统体系结构...........................................................15
第四章 数据库设计..........................................................16
4.1数据库逻辑设计 ..........................16
4.1.1 数据库的概念结构设计和ER图..........................................16
第五章编码实现.............................................................19
5.1 用户登陆模块........................................................19
5.2 用户管理模块....................................................22
5.3 进货销售模块......................................................29
5.4 进货管理模块......................................................31
5.5 职员管理模块.......................................................34
5.6 坏货转移模块........................................................36
第六章 系统测试以及软件安装.............................................38
6.1软件测试基础理论........................................................38
6.2软件测试目的..........................................................38
6.3测试计划和要点.........................................................38
6.4部分测试图..............................................................39
6.5测试结论................................................................40
总结 41
致谢...................................................................42
参考文献..................................................................43
第一章 绪论
1.1系统开发背景
随着现代科学技术的迅猛发展,计算机技术已渗透到各个领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入数字化时代,有巨大的数据信息等待着加工处理和传输,这使得对数据库的进一步开发和利用显得尤为迫切。实习期间,我们经过对市场的调查,针对现在各中小药品公司对销售业务的实际需要,开发了这套药品销售系统。在开发过程中,我们针对当前各药品公司管理特点和技术人员的实际水平,采用Window基于图形界面这一易学易用的操作系统环境,在系统设计过程中,我们尽量采用一些易懂易读的接口界面,使用户能够在短期内完全掌握。在功能方面,我们借鉴现在市场上流行的财务软件的特点,抛去泛泛不实用的缺点,使我们设计的系统在功能上极贴近中小药品公司的使用要求。在设计过程中,我们始终把系统的正确性放在首位,力求数据的完整,处理的正确性。在此基础上优化程序代码,加速系统运行和减少对系统资源的占用。作为一家中小型药品公司,她们的主要业务是销售产品,当前系统运做中存在很多题,所有的进货单,出货单都是人工填写,耗时而且易出现错误;库存也是人工记帐,无法随时掌握最准确的存货情况;对于销售数据,往往要花好多时间和精力去计算每个业务员的销售业绩,每项药品的销售状况,为了解决上述问题,提高经济效益,准备导入进销存系统进行销售,采购,库存等的计算机化管理。经过三个月的设计开发,现在已完全达到预期效果,实现了最初设定的目标。
1.2 问题定义
药品库房管理系统用计算机管理医院药方药品管理的一种计算机应用技术的创新,在计算机还未普及之前医院药房药品管理都是由工作人员手工书写的方式来操作的.现在一般的医院药方都采用计算机智能化管理,采用计算机作为工具的实用的计算机药方库存管理程序来帮助管理员进行更有效的药品管理工作。药方管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。
1.3解决方法
药品按类管理:因此需要有一药品类型信息药品必须属于一个药品类型,如果一个药品类品存在药品或存在下级药品类型则该类型不该删除,需要记录供应商信息,在涉及药品数量的地方,要给出相应的单位,在进货信息中要包含供应商等信息。药品销售信息单中要包含登记药品,销售数量单价等信息,药品报损要有报损原因。进货,销售,报损操作要有相应操作员信息。只有管理员登陆之后才能够使用系统,默认的管理员不能够删除进货,销售,库存,报损信息都要能够添加,修改,删除,分类,查找。
1.4技术可行性研究
在IT行业中从业的工作人员一般都要求懂计算机,具有一定软硬件基础,会使用各种管理软件,熟悉IT产品。因为,药品公司中的对员工素质要求比较高,从管理层到下面的营销人员,都要求具有一定的IT背景,因此在新系统投入使用时,只要对员工进行少量的培训,系统的功能和使用方法就基本上能够使系统顺利的运行了。
1.5经济可行性研究
因为经过网络传递销售信息,能够不受距离的限制,因此能够节约许多的人力和物力,方便管理,由此能够减少不必要的开支,同时该系统能够提高企业的销售效率,即提高了企业的经济效益,因此从经济上是完全可行的。
⑴企业有能力承担研发开支
开发新系统的工作是一项艰巨复杂的工作,它的投资主要是人力和物力的投资。对于本系统的开发来说,其主要投资还是在人力和物力两个方面。如果是企业自己安排人手开发系统的话,其主要的投资还是在人力资源上,从系统的业务需求调查到系统的分析编码制作都是需要巨大的人力投入的。药品公司作为一个尖端的高科技产业,其员工要求都比一般企业的要求要高,而且对系统开发及软件产业了解比较多,因此在自我开发管理系统的过程中,企业自己比较容易安排人手,这样就能够为企业节约大部分的额外开支。同时药品公司就其它产品还说,属于高端行业,无论是产品的价格还是质量都比较高,而经营产品的经销商或者是商家都要求有雄厚的资金的作支持。因此,在系统的开发过程中,企业完全有能力承担开发费用。
⑵新系统将为企业带来经济效益
管理系统是一个信息化、智能化和先进管理理念的集合体。而管理是一个动态过程,在其运行过程中要采取多项措施。因此在管理中获得经济效益是一个综合效益,要对她进行直接定量的分析是比较困难的。一般新系统带来的经济效益是间接的,其最主要的表现就是减少了企业的管理费用和人力开支。而其它一些烦琐的事物都经过新系统来加以分析解决,不但节省了大量的时间,还为企业的各项决策提供了宝贵的资料,为企业带来巨大的经济效益。
1.6操作可行性研究
本系统采用Windows图形界面,是大家熟悉的操作系统,对于用户只需要具有一般的计算机知识的人员都能够轻松上手。而且整个销售系统采用最友好的交互界面,简洁明了,不需要对数据库非常了解。由此,该系统的操作是可行的,有必要推广该系统!
综合以上三方面,该系统具有很高的开发可行性,无论是从技术上经济上还是操作上。故此,能够设计该系统流程图,建立数据字典。
第二章需求分析
2.1功能性需求分析
药品管理系统是为了加强药品管理,以便更好地对药品进行监督和管理,对售药机构人员的工作,起到了高效性、准确性管理而开发。本系统主要包含系统用户管理模块、药品管理模块、销售管理模块、进货管理模块、存货转移管理模块。药品管理系统是以合理、全面、准确的药品编码体系为基础,提供了对药品数量、金额、有效期的全面管理,统一的药价管理机制规范了药品的价格。系统能随时提供药库的库存、药品流向和消耗,还能根据现有库存,药品有效期提供采购计划或应暂停采购的药品清单,以提高资金的利用率,避免不必要的损失,方便快捷的途径对药基本信息进行定期的更新和删除等管理
(1)系统用户管理:允许添加删除用户(只有管理员才能够修改),任意权限的用户允许更改自己的密码,添加或删除职工,修改职工,对药品进行销售和库存的控制的资料。
(2) 药品进货管理:当企业需要增加新的销售药品时,利用此模块能够添加新的药品信息,删除旧的药品信息,修改已存在的药品信息,提供所有与药品相关的各类信息,初始化库存,初始化供应商相关信息。
(3)药品销售管理:药品统一的价格销售,对已查询销售单,能够对药品的价格进行控制。
(4)库存转移管理:实际生活中容易发生药品过期和损毁,此时利用此模块对过期的药品和损毁的药品进行清理。
(5)职工管理:对药品企业进行职工的管理,对职工进行增加,修改,删除,查询等操作。
(6)查询与报表分析:此功能并未单独作为一个模块,而是分布在各个模块中,各个模块产生业务时,能够在各模块的相应功能按钮上选择查询
2.2业务流程
本统开发目标是服务于药品库房管理人员,方便工作人员,对过往药品存放,发放收费票据记录,对信息的分类管理等,同时力求做到界面人性化,功能齐全,数据存储安全。
功能划分:药品管理系统分为系统用户管理、药品销售管理、药品库存管理、进货管理、职工管理、查询与报表分析。
2.3系统功能结构设计图:
系统程序登陆
主界面
出库
入
库
数据维护
窗口
帮助
2.4 非功能性需求分析:
为了保证系统能够长期、安全、稳定、可靠、高效的运行,药品管理系统应该满足以下的性能需求:
(1)、系统处理的准确性和及时性 系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足学校对信息处理的需求。
(2)、系统的开放性和系统的可扩充性 药品管理系统在开发过程中,应该充分考虑以后的可扩充性。例如用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应经过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,能够简单的加入和减少系统的模块,配置系统的硬件。经过软件的修补、替换完成系统的升级和更新换代。
(3)、系统的易用性和易维护性 图书管理系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。
(4)、系统的标准性 系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。所有这些都要符合主流国际、国家和行业标准。
(5)、系统的先进性 当前计算系统的技术发展相当快,作为药品管理系统工程,在系统的生命周期尽量做到系统的先进,充分完成企业信息处理的要求而不至于落后。这一方面经过系统的开放性和可扩充性,不断改进系统的功能完成。另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品。
(6)、系统的响应速度 药品管理系统系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信息。在进行统计分析时,根据所需数据量的不同而从秒级到分钟级,原则是保证操作人员不会因为速度问题而影响工作效率。
第三章详细设计
3.1程序流程图
依据软件工程的基本原理,详细设计阶段的根本任务是确定应该怎样具体实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在系统实现阶段能够把这个描述直接翻译成用某种程序设计语言书写的程序。具体来说就是把经过总体设计得到的各个模块详细的加以描述。
本系统采用支持面向对象的Eclipse作为开发工具,运用了J2SE的SWing的技术,更加的方便了程序员的工作。程序对系统配置要求较高。在此给出软件系统的主要模块
职工管理
坏货转移
进货管理
用户管理
销售管理
主程序模块图
根据以上主程序的模块图,我们能够得出下面的关于各个模块的程序流程图
结束
退出系统
职工管理
坏货转移
进货管理
销售管理
用户管理
管理员
系统管理员
用户类型
开始
说明:用户登陆系统时,系统判断用户的级别,如果为系统管理员,则能够进行用户的用户管理,如果是管理员,则能够进行相应的销售管理,进货管理,坏货转移,职工管理,管理员点击退出按钮时,退出系统
用户管理
用户核对
用户登陆
用户管理操作
用户登陆流程图
说明:用户根据已知的用户名和密码登录系统,只有登录成功才能进行系列的用户管理、库存管理、销售管理,职工管理的操作。
用户
核对药品信息
药品添加
药品表
药品创始流程图
库存表
库存创始
库存管理
用户
操作失败 操作成功
存货创始流程图
核对信息
销售管理
用户
操作失败 操作成功
库存表
销售流程图
用户
库存表
核对信息
坏货转移
录入坏货信息
操作失败 操作成功
成功
坏货转移流程图
说明:用户登陆后进行药品的相关管理,经过药品创始,为系统初始化一些药品及添加新的代售药品。经过存货创始将具体进货的药品录入库存中,销售成功则对库存做相应的修改。当药品损坏或者过期时,应当对库存做相应的调整
核对信息
职员管理
用户
录入职员信息
操作成功
失败
成功
职员列表
图4.7 职员管理图
说明:管理员经过职工管理模块进行职工的管理,添加职工后,录入到职员列表中。
3.2系统体系结构
3.2.1 用户登陆模块
1.输入项目:输入用户名及密码。
2.输出项目:打开系统。
3.2.2 用户管理模块
1.输入项目:与用户相关的所有信息。
2.输出项目:操作结果的显示,出错弹出对话框。
3.2.3 销售管理模块
1.输入项目:选择药品编号,药品的进销价格。
2.输出项目:操作结果的显示,出错弹出对话框。
3.2.4 进货管理模块
1.进货项目:供应商的详细信息,仓库的详细信息,药品的数量。
2.输出项目:药品的有关资料的显示,进货单列表
3.2.5 坏货管理模块
1.输入项目:发生意外无法使用的药品编号。
2.输出项目:操作结果的显示。
3.2.6 职工管理模块
1.输入项目:职工的详细信息。
2.输出项目:根据用户的输入显示相应的结果。
第四章数据库设计
4.1 数据库逻辑设计
4.1.1 数据库的概念结构设计和ER图
在需求分析阶段已完成该系统所有的数据分析。根据该阶段所建立的概念模型,已经得出满足系统设计要求的几个关系描述,该阶段的主要工作就是把前一阶段的成果转化为具体的数据库。
概念结构设计就是要找出实体和她们之间的联系,去除非本质的东西。
实体是名词,在ER 图中设计中就是所说的表。比如”药品”,”库存”。
行为是动词,在ER 图中设计时一般不考虑行为,它是业务逻辑,在详细设计才有设计,是方法。比如 ”销售”,”进货”等等。
在设计ER图时时强调的是不同实体之间关系,不是行为。比如:药品 "销售" 库存,”转移”是一种关系,不是行为。在某种情况下,”销售”是一个关系表,将”药品”和”库存”联系起来。
在找出实体后,我们要根据分析来定义实体的属性,就是表的列。比如药品有ID,名称,进价,销价,简介等等; 库存有ID,名称,数量等等。
”库存”可拥有 0-MANY 的”药品”,而药品同样属于0-MANY 的库存。因此是多对多的关系
根据以上的分析给出下面的概念结构设计得E-R图如图4.3所示。
第五章编码实现
5.1 用户登录模块
用户登陆界面如图5.1所示:
图5.1药品登陆界面
关键代码如下:
//显示出图形界面,Login.java
public Login(String msg) {
super(msg);
setLayout(new BorderLayout());
login_message = new JTextField("用户登陆");
login_message.setEditable(false);
login = new JButton("登陆");
regeist = new JButton("注册");
setVisible(true);
add(login_message,"North");
JPanel btn = new JPanel();
btn.setLayout(new GridLayout(1,2));
btn.add(login);
btn.add(regeist);
add(btn,"South");
JPanel input = new JPanel();
JLabel unameLabel = new JLabel("用户名:");
uname = new JTextField("",20);
JLabel pwdLabel = new JLabel("密码 :");
pwd = new JPasswordField("",20);
input.setLayout(new GridLayout(2,2));
input.add(unameLabel);
input.add(uname);
input.add(pwdLabel);
input.add(pwd);
add(input,"Center");
login.addActionListener(new loginListener());
regeist.addActionListener(new regeistListener());
}
class loginListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
UserDao ud = new UserDao();
if(ud.login(uname.getText().trim(), pwd.getText().trim())) {
new MainGui().start();
setVisible(false);
} else {
JOptionPane.showMessageDialog(null, "您的输入不正确,请重输","警告", 1);
}
}
loginListener() {
}
}
//数据库中检查是使用UserDao.java
public boolean login(String username,String password) {
Connection conn = DB.getConn();
Statement stmt = DB.getStatement(conn);
String sql = "select * from user where username='" + username +"'";
ResultSet rs = DB.getResultSet(stmt, sql);
try {
while(rs.next()) {
String dbpassword = rs.getString("password");
if(dbpassword != null && dbpassword.equals(password))
return true;
}
} catch (SQLException e) {
System.out.println("用户登陆连接数据库异常,系统退出");
System.exit(-1);
}
return false;
}
5.2 用户管理模块
用户管理界面5.2所示:
图5.2 用户管理界面
关键代码如下:(点击”续接”时系统执行的操作)
//UserDao.java
//用户注册
public boolean regeist(User user) {
Connection conn = DB.getConn();
Statement stmt = DB.getStatement(conn);
String sql = "insert into user(username,password,rank) values('" + user.getUsername() +"','" + user.getPassword() + "',"+user.getRank()+")";
System.out.println(sql);
try {
stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "添加失败,您输入的用户已存在","警告", 1);
return false;
}
JOptionPane.showMessageDialog(null, "恭喜您,添加成功","恭喜", 1);
return true;
}
//查询用户
public String[] findUser() {
Connection conn = DB.getConn();
Statement stmt = DB.getStatement(conn);
String sql = "select * from user";
String[] userlist = new String[128];
System.out.println(sql);
try {
ResultSet rs = stmt.executeQuery(sql);
int i = 0;
while(rs.next()) {
userlist[i] = rs.getString("username");
i++;
}
} catch (SQLException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "查找用户失败","警告", 1);
return null;
}
return userlist;
}
//删除用户
public boolean delUser(String username) {
Connection conn = DB.getConn();
Statement stmt = DB.getStatement(conn);
String sql = "delete from user where username = '" + username + "' and rank = 0";
String[] userlist = new String[]{};
System.out.println(sql);
try {
stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "删除用户失败","警告", 1);
return false;
}
return true;
}
//修改用户
public boolean modify(User user) {
Connection conn = DB.getConn();
Statement stmt = DB.getStatement(conn);
String sql = "update user set username = '" + user.getUsername()+"',password='"+
user.getPassword()+"',rank="+user.getRank()+" where username ='"+user.getUsername()+"'";
System.out.println(sql);
try {
stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "修改失败","警告", 1);
return false;
}
JOptionPane.showMessageDialog(null, "恭喜您,修改成功","恭喜", 1);
return true;
}
//显示模块 com.ahut.frame.usermgr
用户添加核心代码:
//显示用户添加界面
JPanel editPanel = new JPanel();
editPanel.setBorder(BorderFactory.createTitledBorder("添加用户"));
editPanel.setLayout(new GridLayout(2,1));
JPanel upPanel = new JPanel();
upPanel.setBorder(BorderFactory.createTitledBorder("用户信息"));
upPanel.setL
展开阅读全文