药品信息管理系统 课程设计.doc_第1页
药品信息管理系统 课程设计.doc_第2页
药品信息管理系统 课程设计.doc_第3页
药品信息管理系统 课程设计.doc_第4页
药品信息管理系统 课程设计.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档辽 宁 科 技 大 学课程设计报告设计题目: 药品信息管理系统 学院、系: 电信 专业班级: 计算机141班 学生姓名: 梁君玮 指导教师: 刘扬 王莉 成 绩: 2017年 12月 1日目录1.概述41.1实验目标41.2运行环境、工具及框架42需求分析42.1顶层流程42.2中层流程52.3底层流程52.3.1登录系统52.3.2进药操作62.3.3售药操作62.3.4库存管理72.3.5单据管理72.3.6外键:供应商管理(扩展功能)82.3.7外键:客户管理(扩展功能)83概要设计93.1 E-R图94总体设计94.1数据库设计94.1.1使用PowerDesigner设计数据库模型94.1.2生成建表语句104.2系统功能设计134.2.1使用Rational Rose设计系统用例图134.2.2系统功能描述135应用程序的编程实现145.1建库145.2设计网页165.2.1前端目录结构165.2.2举例(进药页):175.3添加配置225.3.1逻辑架构225.3.2Hibernate配置事务及实体类235.4代码目录结构(MVC)245.5编写后台代码(java)245.5.1实体类245.5.2数据持久层(hibernate)265.5.3服务层(使用Spring的Service注解)285.5.4控制层(SpringMVC)296测试和运行311. 概述1.1实验目标为了检验自己从大一到现在为止的学习收获,运用所学软件工程课程及数据库课程所学习的理论知识同实践相结合,建立工程化思想,使用面向对象语言(java)开发一个小型MIS系统,锻炼自己解决实际问题的能力,为毕业设计打下良好的基础。本次实验从前端到后台、从设计分析到实现并完成都是通过自己的慢慢积累并查阅相关框架资料(包括使用建模工具)完成,也算是一个微型的web全栈设计了。1.2运行环境、工具及框架本次设计的是基于jdk1.8的web项目,使用工具及运行环境如下:编程语言:java、HTML、css、js等后端框架:Spring+SpringMVC+Hibernate前端脚本:jQuery、jstl、el、jsp等日志记录:log4j、logging设计工具:Rational Rose、Microsoft Visio数据库:MySQL5.7数据库工具:PowerDesigner、navicatformysql编译工具:eclipse、WebStorm服务器:tomcat测试系统环境:wind7、wind10、Linux(centOS7)2需求分析使用visio工具建立数据流图(使用三层数据流图):2.1顶层流程2.2中层流程2.3底层流程2.3.1登录系统2.3.2进药操作2.3.3售药操作2.3.4库存管理 2.3.5单据管理2.3.6外键:供应商管理(扩展功能)2.3.7外键:客户管理(扩展功能)3概要设计3.1 E-R图4总体设计4.1数据库设计4.1.1使用PowerDesigner设计数据库模型4.1.2生成建表语句/*=*/* DBMS name: MySQL 5.0 */* Created on: 2017/12/7 20:19:35 */*=*/drop table if exists t_customer;drop table if exists t_enter;drop table if exists t_inventory;drop table if exists t_manufacturers;drop table if exists t_sell;drop table if exists t_supplier;drop table if exists t_user;/*=*/* Table: t_customer */*=*/create table t_customer( c_id varchar(255) not null, c_name varchar(255), c_address varchar(255), c_postal varchar(255), c_phone varchar(255), c_poxy varchar(255), primary key (c_id);/*=*/* Table: t_enter */*=*/create table t_enter( document_number varchar(255) not null, medicine_id varchar(255), procurement_price double(10,2), procurement_number int(10), procurement_date varchar(255), specification varchar(255), m_id varchar(255), s_id varchar(255), primary key (document_number);/*=*/* Table: t_inventory */*=*/create table t_inventory( medicine_id varchar(255) not null, medicine_name varchar(255), inventory_number int(10), specification varchar(255), retail_price double(10,2), m_id varchar(255), primary key (medicine_id);/*=*/* Table: t_manufacturers */*=*/create table t_manufacturers( m_id varchar(255) not null, m_name varchar(255) not null, m_address varchar(255), m_postal varchar(255), m_phone varchar(255), m_fax varchar(255), primary key (m_id);/*=*/* Table: t_sell */*=*/create table t_sell( document_number int(10) not null, medicine_id varchar(255), c_id varchar(255), sell_number int(10), sell_date date, unit_price double(10,2), primary key (document_number);/*=*/* Table: t_supplier */*=*/create table t_supplier( s_id varchar(255) not null, s_name varchar(255) not null, s_address varchar(255), s_postal varchar(255), s_fax varchar(255), s_phone varchar(255), primary key (s_id);/*=*/* Table: t_user */*=*/create table t_user( login_id varchar(255) not null, password varchar(255) not null, username varchar(255), primary key (login_id);alter table t_enter add constraint FK_Reference_1 foreign key (medicine_id) references t_inventory (medicine_id) on delete restrict on update restrict;alter table t_enter add constraint FK_Reference_3 foreign key (m_id) references t_manufacturers (m_id) on delete restrict on update restrict;alter table t_enter add constraint FK_Reference_4 foreign key (s_id) references t_supplier (s_id) on delete restrict on update restrict;alter table t_inventory add constraint FK_Reference_5 foreign key (m_id) references t_manufacturers (m_id) on delete restrict on update restrict;alter table t_sell add constraint FK_Reference_2 foreign key (medicine_id) references t_inventory (medicine_id) on delete restrict on update restrict;alter table t_sell add constraint FK_Reference_7 foreign key (c_id) references t_customer (c_id) on delete restrict on update restrict;4.2系统功能设计4.2.1使用Rational Rose设计系统用例图4.2.2系统功能描述实现基本功能:药品数据库进药表(单据号,药品编码,采购价,采购数量,采购日期,供应商)售药表(顾客号,药品编码,销售数量,销售日期,单价)库存表(药品编码,药品名称,库存量,生产厂家,规格,零售价)单据号:编程自动生成(从1开始,每次加1)。顾客号:编程自动生成(从1开始,每次加1)。进药:当进新药(第一次进此药)时,用户需要输入(药品编码,药品名称,采购价,采购数量,采购日期,供应商,生产厂家,规格,零售价)当进的药品是已经进过的药品时,用户输入完药品代码时,窗体的文本框中将自动显示药品名称,生产厂家,规格,零售价,用户只需要输入采购价,采购数量,采购日期,供应商。售药:只需要用户输入药品编码,销售数量;单价,药品名称将自动显示,日期调用系统当前日期。一次售药可以销售多种药品,最后一起结帐。显示应收药款,实收金额,找零。库存查询:按药品代码,药品名称查询。进药查询:按药品代码,药品名称,采购日期查询。售药查询:按药品代码,药品名称、销售日期查询。5应用程序的编程实现5.1建库在navicatformysql中运行sql脚本:生成数据库如下:库存表:售药表(其他表不一一列举出来了):5.2设计网页编码采用utf-8、使用css文件保持页面风格统一。5.2.1前端目录结构5.2.2举例(进药页):主菜单和顶部代码:base href=药品信息管理系统body margin-top: 0;margin-left: 0;ul li list-style: none;acolor:black;$(function() window.open(main/enter/index.jsp, workFrame););function show(where) window.open(main/+where + /index.jsp, workFrame);药品信息管理系统一一梁君玮用户:$username未登录 注销进药售药库存查询进药查询售药查询供应商客户进药页面代码:base href=进药function selectMedicine(index) window.open(main/enter/choose_medicine.jsp, 请选择药品,width=800, height=410, scrollbars=no);var rowIndex = 0;function addOneLineOnClick() var row = tblFlowCardDetail.insertRow(tblFlowCardDetail.rows.length);var col = row.insertCell(0);col.innerHTML = ;col = row.insertCell(1);col.innerHTML = ;col = row.insertCell(2);col.innerHTML = ;col = row.insertCell(3);col.innerHTML = ;col = row.insertCell(4);col.innerHTML = ;col = row.insertCell(5);col.innerHTML = ;col = row.insertCell(6);col.innerHTML = ;col = row.insertCell(7);col.innerHTML = ;col = row.insertCell(8);col.innerHTML = ;row.setAttribute(id, row + rowIndex);row.setAttribute(name, row + rowIndex);rowIndex+;function DeleteRow(rowTag) var i = tblFlowCardDetail.rowsrowTag.rowIndex;var j;for (j = i; j = rowIndex; j+) tblFlowCardDetail.rowsj.cells0.childNodes1.index-; tblFlowCardDetail.deleteRow(i);rowIndex-;   分销商库存管理>>盘点结果维护>>添加*供应商代码:  供应商名称: *药品编码药品名称采购价采购数量采购日期生产厂家规格零售价删除    页面如下:5.3添加配置5.3.1逻辑架构分层MVC(view-controller-service-dao-VO-db)框架使用的是SSH(Spring+SpringMVC+Hibernate)使用Spring集成SpringMVC和Hibernate,使用配置文件的方式:5.3.2Hibernate配置事务及实体类数据源连接池使用c3p0:5.4代码目录结构(MVC)5.5编写后台代码(java)5.5.1实体类使用hibernate和jdk自带的注解建立实体类例(进药实体类):package com.ljw.medicine.beans;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.ManyToOne;import javax.persistence.Table;import org.hibernate.annotations.GenericGenerator;/* * ClassName:Enter * company: * Description:进药实体类 * date 2017年11月30日 下午7:12:28 * author 梁君玮 */EntityTablepublic class Enter IdGeneratedValue(generator=xxx)GenericGenerator(name=xxx,strategy=native)private Integer document_id;/单据号ManyToOne(targetEntity=Inventory.class,cascade=CascadeType.ALL)private Inventory inventory;/药品private double procurement_price;/采购价private int procurement_number;/采购数量private String procurement_date;/采购日期ManyToOne(targetEntity=Supplier.class,cascade=CascadeType.ALL)private Supplier supplier;/供应商public Integer getDocument_number() return document_id;public void setDocument_number(Integer document_id) this.document_id = document_id;public Inventory getInventory() return inventory;public void setInventory(Inventory inventory) this.inventory = inventory;public double getProcurement_price() return procurement_price;public void setProcurement_price(double procurement_price) curement_price = procurement_price;public int getProcurement_number() return procurement_number;public void setProcurement_number(int procurement_number) curement_number = procurement_number;public String getProcurement_date() return procurement_date;public void setProcurement_date(String procurement_date) curement_date = procurement_date;public Supplier getSupplier() return supplier;public void setSupplier(Supplier supplier) this.supplier = supplier;5.5.2数据持久层(hibernate)例(进药):package com.ljw.medicine.dao.impl;import java.util.List;import java.util.Map;import org.hibernate.SessionFactory;import org.hibernate.query.Query;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import com.ljw.medicine.beans.Enter;import com.ljw.medicine.dao.EnterDao;/* * ClassName:EnterDaoImpl * company: * Description:进药信息持久层实现类 * date 2017年11月30日 下午7:22:32 * author 梁君玮 */Repositorypublic class EnterDaoImpl implements EnterDao Autowiredpublic final void setSessionFactory(SessionFactory sessionFactory) this.sessionFactory = sessionFactory; private SessionFactory sessionFactory;/* * 批量保存创建的进药信息 */Overridepublic void saveCreateEnter(List enterList) sessionFactory.getCurrentSession().save(enterList);/* * 根据条件分页查询进药信息列表 */Overridepublic List queryEnterForPageByCondition(Map map) Enter enter = (Enter) map.get(enter);Integer skipNumber = (Integer) map.get(skipNumber);Integer pageSize = (Integer) map.get(pageSize);String hql = from Enter where inventory.m_id like :m_id and inventory.m_name like :m_name and procurement_date like :procurement_date and supplier like :supplier order by procurement_date desc ;SuppressWarnings(unchecked)Query query = sessionFactory.getCurrentSession().createQuery(hql).setParameter(m_id, %+enter.getInventory().getM_id()+%) .setParameter(m_name,%+ enter.getInventory().getM_name()+%).setParameter(procurement_date,%+ enter.getProcurement_date()+%).setParameter(supplier,%+ enter.getSupplier().getS_id()+%).setFirstResult(skipNumber).setMaxResults(pageSize);return query.list();/* * 根据条件查询进药信息的总条数 */Overridepublic Long queryCountOfEnterByCondition(Map map) Enter enter = (Enter) map.get(enter);String hql = select count(s_id) from Enter where inventory.m_id like :m_id and inventory.m_name like :m_name and procurement_date like :procurement_date and supplier like :supplier order by procurement_date desc;SuppressWarnings(unchecked)Query query = sessionFactory.getCurrentSession().createQuery(hql).setParameter(m_id, %+enter.getInventory().getM_id()+%) .setParameter(m_name,%+ enter.getInventory().getM_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论