当前位置:文档之家› 医院药品管理系统

医院药品管理系统

医院药品管理系统目录一、项目开发文档 (1)1 项目需求分析 (1)2 概要设计 (6)3 详细设计 (7)4 项目文档清单 (13)5 项目命名约定 (13)6 项目测试 (13)二、项目开发进度 (14)三、项目成果软件 (15)四、软件安装使用说明 (21)五、项目总结 (24)附录1 项目成果软件代码 (25)一、项目开发文档1 项目需求分析1.1 项目目标医院单位的药品信息和数据纷乱复杂,整理统计费力费时。

要做好对医院药品的管理,医院就必须快速准确地获取药品的信息,这就要求及时统计数据并方便查看,以及对药品的数据信息进行维护。

本软件是利用NetBeans 5.5设计开发的医院药品信息管理系统,是医院信息系统的一个重要组成部分,可实现对医院药品信息的分类管理和数据分析,从而使信息整理快速、准确、简单,以便于相关部门给予统筹安排,从而提高改进传统的管理方法,提高医院药品管理水平。

特点:多目标性:对一个项目而言,项目目标往往不是单一的,而是一个多目标系统,希望通过一个项目的实施,实现一系列的目标,满足多方面的需求。

我们本次的项目是为了实现医院药品管理员可以简单的管理药品。

在简单的层次上又有效科学的管理药品入库、出库等。

优先性:项目是一个多目标的系统,不同目标在项目的不同阶段,根据不同需要,其重要性也不一样。

本项目主要目标是可以对库存的药品入库日期、出库日期、有效期、库存量等方面信息进行增删该查。

对有药品库存不足时会对医院药品管理员提示。

层次性:本项目的最高层次的目标是医院药品管理员可以简单科学的管理药品。

本项目的最低层次的目标是医院药品管理员可以对所有的药品信息增加、删除、修改、查询。

1.2 功能描述医院药品平时储存在库房,由库房为医院进药。

医院销售药品由药房管理,药房药品不足是可以向库房申请补足。

库房:1、药品入库:根据供货单输入入库药品属性及数量等,入库同时修改相应药品的库存数量,打印入库单。

2、药品出库:主要是往各药房发药,包括退还给药品供应商,同时打印药品出库单。

3、药品调价:调整药品的现行售价,包括批发价、零售价。

药库进行价格调整后,各药房立即执行调整后的价格,同时打印调价单。

4、药品盘点:对库存药品进行盘点,打印盘点标表,盘点后打印盈亏单。

5、药品报损:对药品损失进行报损,记录报损原因,报损批准人,打印报损单。

6、药品调拨:库房间药品相互调拨。

7、与药品供应商结帐:根据入库药品的入库价与数量同药品供应商进行结帐。

8、统计查询:对现存药品、短缺、积压药品、药品出库情况等进行查询,打印查询结果;生成采购计划。

9、信息维护:药品特征维护、药房信息维护、供货单位维护、药品目录维护。

药房:1、药品需求申请:统计出低于限定库存数量的药品,发出需求药品申请,打印药品需求申请单。

2、医嘱处方发药:每天根据住院病房医生开的处方,打印发药单,进行发药,减少药房相应药品的库存数量。

3、其它情况发药:临时取药、急诊取药、打印发药单,进行发药,减少药房相应药品的库存数量。

4、药品盘存:对药房药品进行盘点,打印盘点标表,盘点后打印盈亏单。

5、药品报损:对药品损失进行报损,记录报损原因,报损批准人,打印报损单。

6、药品调拨:医院各药房间药品的相互调拨。

7、门诊发药:输入病人就诊号或处方号可调出处方、打印处方。

8、统计查询:查询药品情况、短缺药品、医生用药情况,打印查询结果。

1.3可行性分析1.系统可行性:随着计算机的普及,人们对计算机的认识及需求有了明显的增加。

计算机对于大量信息的管理的优势更是显而易见。

对于一个只要企业来说,这方面的需要尤其重要。

有了这个药品库存管理系统,管理员的工作任务就可能会事半功倍。

药品管理是医院药品管理的核心,是节流增收最有潜力的环节。

本药库管理系统是按照卫生部新的财务制度的要求设计的,采用药品分类国家标准编码体系,实现了发药与库存管理一体化。

支持药品多种规格的变换,加权平均等多种仓库管理模式。

支持药品有效期管理,防止药物的过期浪费,可以根据现有的库存、药品有效期以及往年同期的药品消耗情况制定采购计划、失效预报或应暂停采购的药品清单,方便领导决策。

本系统主要有以下几个功能模块:(1)系统登录模块,登录系统。

(2)系统设置模块,管理系统用户及密码。

(3)基本信息管理模块,录入药品基本信息,供货商及客户的相关信息。

(4)药品管理模块,库存药品信息,药品的报损。

(5)其他信息管理模块,流通资金,业务员管理,数据备份,数据库初值。

有了这个药品库存管理系统,管理员的工作任务就可能会事半功倍。

在本系统的可行性分析过程中,通过调查分析医院药品库存管理所具备的能力及实现的方法。

确定总体结构,利用SQL Server数据库所具有的能力,以最简洁最容易的方法,对药品名称、编码、种类等属性进行增加、修改、删除、查询。

使用Java/JSP应用程序编程,还可以清晰的看到入库出库信息,这有利于医院药品管理员有效的对药品仓库的管理。

药品管理系统的规模、设备状况、维护和修改系统程序,都需要相关的操作人员。

2.技术可行性药品管理系统采用MVC模式,MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。

系统是由网络和网页实现的。

所以本系统使用Java技术编程,应用界面友好且功能强大的DREAMWEAVER作为开发工具,服务器端脚本用JSP/JAVA脚本来编写,客户端脚本也用Java来编写,数据库使用SQL Server 20005 数据库,服务器是TOMCAT 5.0 。

使用 Struts,会话管理,过滤器以及数据库集成技术,构建健壮的Web 应用程序。

使用Java Server Pages技术(JSP页面)编写网页。

使用Model2设计良好的Web应用程序能够容易的移植到复杂的J2EE架构。

通过MVC模式编写的,具有极其良好的可扩展性。

它可以轻松实现以下功能:①实现一个模型的多个视图;②采用多个控制器;③当模型改变时,所有视图将自动刷新;④所有的控制器将相互独立工作。

本团队在大学的学习中,已经学过这几门语言。

热爱计算机科学,有一种奋发向上刻苦钻研的精神,经过大学两年的学习,这些课程已熟练掌握,本系统是在学校开发,遇到问题可以与同学一起研究,再加上导师的指导。

因此在技术上能够适应本系统的开发。

3.使用可行性本系统主要是对制药公司的药品库存的管理,能够及时的登录存入的药品和减少销售药品的数量;能够对每一种药品的各种信息进行汇总,比如药品编号、药品名、生产日期、过期日期、主要订购商等等;并且能提供对药品各种信息的查询;对生产和销售的药品每月月底做一个汇总,同时对每月的盈利情况进行汇总;当药品的存储数量低于某一数量的时候,系统要能自动提示管理员该药品该再进货(生产)了;同时当某一种药品的数量超过了某一数值的时候管理系统又能自动提示管理员该暂时减少或者停止该药的进货(生产)量;对已经过期的药品应该注销,同时提醒管理员销毁或者处理该药品。

本项目开发在技术方面采用Java/JSP应用程序编程与数据库相结合方法来实现。

要求所有数据信息的储存都由数据库来完成。

使用到局域网连接技术、JSP/NetBean 5.5开发技术、SQL Server2005服务器端的T-SQL语言数据库开发技术,这些都是非常成熟的技术。

本系统采用先进的开发技术,开发的程序具有WINDOWS图形用户界面,和WINDOWS 特性风格,界面直观易懂,操作简洁,使用非常方便。

1.4 运行环境2 概要设计报告碎着计算机的普及,人们对计算机的认识及需求有了明显的增加。

计算机对于大量信息的管理的优势更是显而易见。

对于一个只要企业来说,这方面的需要尤其重要。

有了这个药品库存管理系统,管理员的工作任务就可能会事半功倍。

根据目标、功能描述、数据流程图的分析和系统的初步方案,新系统目标应设置为:及时接收新药品的信息;查询每种药品的库存情况;药品库存不足时及时提醒;库存药品过期及时上报销毁或退还给原厂商等功能。

接口设计由于各模块功能单一,所以上层模块与下层模块之间存在调用与返回的关系,同层模块之间没有联系。

3 详细设计报告3.1 E-R图3.2 表结构1. Medicine(药品)表3.3 用例图3.4 分析模型管理员管理系统流程图:药品价格、数量3.5 类图4 项目文档清单5 项目命名约定类名:大写字母开头如:Medical类属性:采用匈牙利命名法(即第一个字母小写并表明数据类型)如:name 类方法:每个单词均为大写字母开头如:getCode()变量:采用匈牙利命名法(即第一个字母小写并表明数据类型)如:Code 环境变量:全部大写如:Medicine6 项目测试二、项目开发进度三、项目成果软件a.登陆界面b.进入用户操作界面1.显示所有药品2.增加药品3.更新药品4.删除药品c. 静态页面2.系统介绍3.技术可行性5.药房介绍四、项目安装说明第一步打开SQL2005,建立数据库。

进入SQL。

第二步打开文件夹Medicines.sql第三步打开NetBeans 5.5 第四步打开项目第五步运行项目五、项目总结不知不觉,三个星期的设计结束了。

在这三个星期的设计,让我们受益非浅。

自我们学计算机专业以来,始终认为一个完整的程序就相当于一个优秀的软件产品,只要程序编得精致、具体、详细,所开发的软件就绝对完美、实用。

在这次设计《药品管理系统》中,我们组所有的成员都齐心制作。

刚开始设计时遇到了一些困难,因为学过的NetBeans 5.5已经有些忘了,再加上自己还要上课和写毕业论文,时间的安排上也很紧迫,编程的进度比较缓慢。

在设计中还会遇到一些功能不知该如何实现的困难,在两位老师的热情帮助下,我们渐渐的复习了NetBeans 5.5控件的使用方法、NetBeans 5.5的编程语法,之后的编程过程也相对得心应手,基本完成了预期计划的要求。

但是系统功能还没有完全完善,有待进一步加强。

通过这次毕业设计,我们进一步加深对基础理论的理解,扩大专业知识面,对收集资料、查阅文献、方案制定等实践方面得到了很好的锻练,促进对所学知识应用能力的提高。

同时,发现问题、分析归纳、综合比较的逻辑分析能力、处理问题等能力也得到了提高。

但是在这次毕业设计过程中,还是发现了自己很多不足之处,也遇到了许多问题和困难,而这些困难大多是三年中不注重自己系统学习,学有所用造成的,这让我认识到系统的学习和锻炼的重要性,基础知识掌握不仅要多,而且要会运用它,那样的话设计才会更全面、更顺利、更完美。

附录1 项目成果软件代码1.Model代码package Medicine.model;public class Medical {String code;String name;String address;String date;String dateline;int price;int number;int inventory;public Medical(String code,String name,String address,String date,String dateline,int price,int inventory,int number) {this.code=code;=name;this.address=address;this.number=number;this.dateline=dateline;this.date=date;this.price=price;this.inventory=inventory;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getName() {return name;}public void setName(String name) { = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public String getDateline() {return dateline;}public void setDateline(String dateline) { this.dateline = dateline;}public String getDate() {return date;}public void setDate(String Date) {this.date = date;}public int getPrice() {return price;}public void setPrice(int price) {this.price=price;}public int getInventory() {return inventory;}public void setInventory(int inventory) { this.inventory = inventory;}public boolean equals(Object o) {boolean result = false;if ( o instanceof Medical ) {Medical l = (Medical) o;result = (this.code == l.code);}return result;}public int hashCode() {Integer OID = new Integer(code);return OID.hashCode();}}package Medicine.model;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.sql.DataSource;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import java.util.List;import java.util.LinkedList;import ng.*;public class MedicalDAO {public MedicalDAO() {}List retrieveAll() {DataSource ds = null;Connection connection = null;PreparedStatement stmt = null;ResultSet results = null;List medicinesList = new LinkedList();Medical yaopin = null;try {Context ctx = new InitialContext();if ( ctx == null ) {throw new RuntimeException("JNDI Context could not be found."); }ds = (DataSource)ctx.lookup("java:comp/env/jdbc/MedicinesDB");if ( ds == null ) {throw new RuntimeException("DataSource could not be found."); }connection = ds.getConnection();stmt = connection.prepareStatement(RETRIEVE_ALL_STMT);results = stmt.executeQuery();while ( results.next() ){String code = results.getString("code");//int code=Integer.parseInt(code1);yaopin = new Medical(code,results.getString("Nname"),results.getString("Address"),results.getString("Manufacturing_Date"),results.getString("Dateline"),results.getInt("Price"),results.getInt("Inventory"),results.getInt("Number") );medicinesList.add( yaopin);}return medicinesList;} catch (SQLException se) {throw new RuntimeException("A database error occured. "+ se.getMessage());} catch (NamingException ne) {throw new RuntimeException("A JNDI error occured. "+ ne.getMessage());} finally {if ( results != null ) {try { results.close(); }catch (SQLException se) { se.printStackTrace(System.err); }}if ( stmt != null ) {try { stmt.close(); }catch (SQLException se) { se.printStackTrace(System.err); }}if ( connection != null ) {try { connection.close(); }catch (Exception e) { e.printStackTrace(System.err); }}}}private static final String RETRIEVE_ALL_STMT= "SELECT * FROM medicine";void insert(Medical yaopin) throws Exception {DataSource ds = null;Connection connection = null;PreparedStatement insert_stmt = null;try {Context ctx = new InitialContext();if ( ctx == null ) {throw new RuntimeException("JNDI Context could not be found.");}ds = (DataSource)ctx.lookup("java:comp/env/jdbc/MedicinesDB");if ( ds == null ) {throw new RuntimeException("DataSource could not be found.");}connection = ds.getConnection();insert_stmt = connection.prepareStatement(INSERT_STMT);int yaopin_id =ObjectIdDAO.getNextObjectID(ObjectIdDAO.YAOPIN, connection);String yaopinID=String.valueOf(yaopin_id);insert_stmt.setString(1, yaopinID);insert_stmt.setString(2,new String(.getBytes("ISO8859-1"))); insert_stmt.setString(3,newString(yaopin.address.getBytes("ISO8859-1")));insert_stmt.setString(4,new String(yaopin.date.getBytes("ISO8859-1"))); insert_stmt.setString(5,newString(yaopin.dateline.getBytes("ISO8859-1")));insert_stmt.setInt(6,yaopin.price);insert_stmt.setInt(7,yaopin.inventory);insert_stmt.setInt(8,yaopin.number);insert_stmt.executeUpdate();yaopin.code = yaopinID;}catch (SQLException se) {throw new RuntimeException("A database error occured. " + se.getMessage()); } catch (NamingException ne) {throw new RuntimeException("A JNDI error occured. " + ne.getMessage()); } finally {if ( insert_stmt != null ) {try { insert_stmt.close(); }catch (SQLException se) { se.printStackTrace(System.err); }}if ( connection != null ) {try { connection.close(); }catch (Exception e) { e.printStackTrace(System.err); }}}}private static final String INSERT_STMT= "INSERT INTO medicine (Code, Nname, Address,Manufacturing_Date,Dateline,Price,Inventory,Number) "+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?)";void update(Medical yaopin) throws Exception {DataSource ds = null;Connection connection = null;PreparedStatement updata_stmt = null;try {Context ctx = new InitialContext();if ( ctx == null ) {throw new RuntimeException("JNDI Context could not be found.");}ds = (DataSource)ctx.lookup("java:comp/env/jdbc/MedicinesDB");if ( ds == null ) {throw new RuntimeException("DataSource could not be found.");}connection = ds.getConnection();updata_stmt = connection.prepareStatement(UPDATA_STMT);updata_stmt.setString(8, yaopin.code);updata_stmt.setString(1, new String(.getBytes("ISO8859-1"))); updata_stmt.setString(2, new String(yaopin.address.getBytes("ISO8859-1")));updata_stmt.setString(3, new String(yaopin.date.getBytes("ISO8859-1")));updata_stmt.setString(4, new String(yaopin.dateline.getBytes("ISO8859-1")));updata_stmt.setInt(5,yaopin. price);updata_stmt.setInt(6,yaopin. number);updata_stmt.setInt(7,yaopin. inventory);updata_stmt.executeUpdate();} catch (SQLException se) {throw new RuntimeException("A database error occured. " + se.getMessage()); } catch (NamingException ne) {throw new RuntimeException("A JNDI error occured. " + ne.getMessage()); } finally {if ( updata_stmt != null ) {try { updata_stmt.close(); }catch (SQLException se) { se.printStackTrace(System.err); }}if ( connection != null ) {try { connection.close(); }catch (Exception e) { e.printStackTrace(System.err); }}}}private static final String UPDATA_STMT= "UPDATE medicine SET Nname=?, Address =?,Manufacturing_Date=?,Dateline =?,Price=?,Inventory =?,Number=? WHERE Code =?";Medical retrieveLID(String Code) throws ObjectNotFoundException{DataSource ds = null;Connection connection = null;PreparedStatement stmt = null;ResultSet results = null;Medical yaopin = null;try {Context ctx = new InitialContext();if ( ctx == null ) {throw new RuntimeException("JNDI Context could not be found.");ds = (DataSource)ctx.lookup("java:comp/env/jdbc/MedicinesDB"); if ( ds == null ) {throw new RuntimeException("DataSource could not be found."); }connection = ds.getConnection();stmt = connection.prepareStatement(RETRIEVE1_STMT);stmt.setString(1, Code.trim());results = stmt.executeQuery();while ( results.next() ) {String code = results.getString("Code");yaopin = new Medical(code,results.getString("Nname"),results.getString("Address"),results.getString("Manufacturing_Date"), results.getString("Dateline"),results.getInt("Price"),results.getInt("Inventory"),results.getInt("Number") );}if ( yaopin!= null ) {return yaopin;} else {throw new ObjectNotFoundException();}} catch (SQLException se) {throw new RuntimeException("A database error occured. "+ se.getMessage());} catch (NamingException ne) {throw new RuntimeException("A JNDI error occured. "+ ne.getMessage());} finally {if ( results != null ) {try { results.close(); }catch (SQLException se) { se.printStackTrace(System.err); } }if ( stmt != null ) {try { stmt.close(); }catch (SQLException se) { se.printStackTrace(System.err); } }if ( connection != null ) {try { connection.close(); }catch (Exception e) { e.printStackTrace(System.err); }}}private static final String RETRIEVE1_STMT= "SELECT * FROM medicine WHERE Code=?";void deleteYaopin(String code) throws Exception {DataSource ds = null;Connection connection = null;PreparedStatement delete_stmt = null;try {Context ctx = new InitialContext();if ( ctx == null ) {throw new RuntimeException("JNDI Context could not be found.");}ds = (DataSource)ctx.lookup("java:comp/env/jdbc/MedicinesDB");if ( ds == null ) {throw new RuntimeException("DataSource could not be found.");}connection = ds.getConnection();delete_stmt = connection.prepareStatement(DELETE_STMT);delete_stmt.setString(1,code);delete_stmt.executeUpdate();} catch (SQLException se) {throw new RuntimeException("A database error occured. " + se.getMessage()); } catch (NamingException ne) {throw new RuntimeException("A JNDI error occured. " + ne.getMessage()); } finally {if ( delete_stmt != null ) {try { delete_stmt.close(); }catch (SQLException se) { se.printStackTrace(System.err); }}if ( connection != null ) {try { connection.close(); }catch (Exception e) { e.printStackTrace(System.err); }}}}private static final String DELETE_STMT= "DELETE medicine WHERE Code=?";}package Medicine.model;import java.util.List;import Medicine.model.*;public class MedicalService {private MedicalDAO medicineDataAccess;public MedicalService() {medicineDataAccess = new MedicalDAO();}public List getAllYaoping() {return medicineDataAccess.retrieveAll();}public Medical createYaopin(String code,String name,String address,String Date,String Dateline,int Price,int Inventory,int Number) throws Exception {Medical yaopin=new Medical(code,name,address,Date,Dateline,Price,Inventory,Number);medicineDataAccess.insert(yaopin);return yaopin;}public Medical updateYaopin(String code,String name,String address,String Date,String Dateline,int Price,int Inventory,int Number) throws Exception {Medical yaopin = new Medical(code,name,address,Date,Dateline,Price,Inventory,Number);medicineDataAccess.update(yaopin);return yaopin;}public Medical getYaopin1(String Code) throws ObjectNotFoundException{return medicineDataAccess.retrieveLID(Code);}public void deleteYaopin(String code) throws Exception {medicineDataAccess.deleteYaopin(code);}}package Medicine.model;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class ObjectIdDAO {public static final String YAOPIN = "medicine";public ObjectIdDAO() {}public static int getNextObjectID(String objectClassName,Connection connection) {PreparedStatement query_stmt = null;PreparedStatement incr_stmt = null;ResultSet result = null;int id;try {query_stmt = connection.prepareStatement(NEXT_ID_QUERY);query_stmt.setString(1, objectClassName);result = query_stmt.executeQuery();if ( result.next() ) {id = result.getInt("ID_number");incr_stmt = connection.prepareStatement(UPDATE_ID_CMD);incr_stmt.setInt(1, id + 1);incr_stmt.setString(2, objectClassName);incr_stmt.executeUpdate();} else {throw new RuntimeException("No ObjectID entry for class type: "+ objectClassName);}// Handle any SQL errors} catch (SQLException se) {throw new RuntimeException("A database error occured. " + se.getMessage()); // Clean up JDBC resources} finally {if ( result != null ) {try { result.close(); } catch (SQLException se) {}}if ( query_stmt != null ) {try { query_stmt.close(); } catch (SQLException se) {}}if ( incr_stmt != null ) {try { incr_stmt.close(); } catch (SQLException se) {}}}return id;}private static final String NEXT_ID_QUERY= "SELECT ID_number FROM ObjectIDs WHERE table_name=?";private static final String UPDATE_ID_CMD= "UPDATE ObjectIDs SET ID_number=? WHERE table_name=?";}package Medicine.model;public class ObjectNotFoundException extends Exception {}/** User.java** Created on 2009年4月3日, 上午10:54** To change this template, choose Tools | Template Manager* and open the template in the editor.*/package Medicine.model;public class User {private String username;private String password;private String division;public User(String username,String password,String division) { ername=username;this.password=password;this.division=division;}public void setUsername(String username){ername=username;}public void setPassword(String password){this.password=password;}public void setDivision(String division){this.division=division;}public String getUsername(){return username;}public String getPassword(){return password;}public String getDivision(){return division;}}/** UserDAO.java** Created on 2009年4月3日, 上午10:55** To change this template, choose Tools | Template Manager* and open the template in the editor.*/package Medicine.model;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.sql.DataSource;// JNDI importsimport javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;// Utility importsimport java.util.List;import java.util.LinkedList;public class UserDAO {private static final String RETRIEVE_STMT = "SELECT * FROM UserBase WHERE username=? AND password=? AND division=?";User retrieve(String username, String password,String division)throws Exception {DataSource ds = null;Connection connection = null;PreparedStatement stmt = null;ResultSet results = null;//int num_of_rows = 0;User user = null;try {Context ctx = new InitialContext();if ( ctx == null ) {throw new RuntimeException("JNDI Context could not be found.");}ds = (DataSource)ctx.lookup("java:comp/env/jdbc/MedicinesDB");if ( ds == null ) {throw new RuntimeException("DataSource could not be found.");}connection = ds.getConnection();stmt = connection.prepareStatement(RETRIEVE_STMT);stmt.setString(1, username);stmt.setString(2, password);stmt.setString(3, division);results = stmt.executeQuery();while ( results.next() ) {user=newUser(results.getString("username"),results.getString("password"),results.getStr ing("division"));}return user;}catch (SQLException se) {throw new RuntimeException("A database error occured. " + se.getMessage()); }catch (NamingException ne) {throw new RuntimeException("A JNDI error occured. " + ne.getMessage());}finally {if ( results != null ) {try { results.close(); }catch (SQLException se) { se.printStackTrace(System.err); }}if ( stmt != null ) {try { stmt.close(); }catch (SQLException se) { se.printStackTrace(System.err); }}if ( connection != null ) {try { connection.close(); }catch (Exception e) { e.printStackTrace(System.err); }}}}package Medicine.model;public class UserService {private UserDAO userDataAccess;public UserService() {userDataAccess = new UserDAO();}public User getUser(String username, String password,String division)throws Exception {return userDataAccess.retrieve(username, password,division);}}}2.Controller代码package Medicine.controller;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionMessage;import Medicine.model. MedicalService;import Medicine.model.Medical ;import Medicine.model.ObjectNotFoundException;import Medicine.view.AddyaopinForm;public class AddyaopinAction extends Action {public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response) {response.setContentType("text/html;charset=UTF-8");ActionErrors errors = new ActionErrors();saveMessages(request, errors);try {AddyaopinForm myForm = (AddyaopinForm) form;MedicalService medicineSvc = new MedicalService();Medical medic = medicineSvc.createYaopin(myForm.getCode(),myForm.getName(),myForm.getAddress(),myForm.getDate(),myForm.getDateline(),myForm.getNumber(),myForm.getInventory(),myForm.getPrice());request.setAttribute("yaopin", medic);return mapping.findForward("success");}catch (RuntimeException e){e.printStackTrace(System.err);errors.add(ActionErrors.GLOBAL_ERROR,new ActionMessage("error.unexpectedError",e.getMessage()));return mapping.findForward("error");}catch (Exception e){return mapping.findForward("error");}}}package Medicine.controller;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionMapping;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionMessage;import org.apache.struts.action.ActionErrors;import Medicine.model.*;import Medicine.model.ObjectNotFoundException;import Medicine.view.*;import java.util.*;import javax.servlet.http.*;public class ChaxunYaopinAction1 extends Action{public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request,HttpServletResponse response) {HttpSession session=request.getSession();response.setContentType("text/html;charset=UTF-8");ActionErrors errors = new ActionErrors();saveMessages(request, errors);try {ChaxunyaopinActionForm1 myForm = (ChaxunyaopinActionForm1 ) form; MedicalService medicineSvc = new MedicalService();Medical medic = medicineSvc.getYaopin1(myForm.getCode());if (medic!=null){session.setAttribute("yaopin", medic);return mapping.findForward("success");}else{return mapping.findForward("error");}}catch (RuntimeException e){e.printStackTrace(System.err);errors.add(ActionErrors.GLOBAL_ERROR,new ActionMessage("error.unexpectedError",e.getMessage()));return mapping.findForward("error");}catch (Exception e){return mapping.findForward("error");}}}package Medicine.controller;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionMessage;import org.apache.struts.action.ActionErrors;import Medicine.model.*;import Medicine.model.ObjectNotFoundException;import Medicine.view.*;import java.util.*;import javax.servlet.http.*;public class DeleteYaopinAction extends Action{public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response) {HttpSession session=request.getSession();response.setContentType("text/html;charset=UTF-8");ActionErrors errors = new ActionErrors();saveMessages(request, errors);try {DeleteYaopinActionForm myForm = (DeleteYaopinActionForm) form; MedicalService medicineSvcc = new MedicalService();medicineSvcc.deleteYaopin(myForm.getCode());return mapping.findForward("success");}catch (RuntimeException e){e.printStackTrace(System.err);errors.add(ActionErrors.GLOBAL_ERROR,new ActionMessage("error.unexpectedError",e.getMessage()));return mapping.findForward("error");}catch (Exception e){return mapping.findForward("error");}}}/** LoginServlet.java** Created on 2009年4月15日, 下午3:50*/package Medicine.controller;import java.io.*;import .*;import javax.servlet.*;import javax.servlet.http.*;import Medicine.model.*;public class LoginServlet extends HttpServlet {protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//request.setCharacterEncoding("gb2312");response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();try {UserService userSvc = new UserService();String username=request.getParameter("username");String password=request.getParameter("password");String division=request.getParameter("division");User user=userSvc.getUser(username,password,division);if (user!=null){//.println(username);if (division.equals("admin")){RequestDispatcherview=request.getRequestDispatcher("Login.jsp");view.forward(request,response);return;}if (division.equals("operator")){RequestDispatcherview=request.getRequestDispatcher("Login.jsp");view.forward(request,response);return;}}else{。

相关主题