收藏 分享(赏)

药品信息管理系统 课程设计.doc

上传人:精品资料 文档编号:8755002 上传时间:2019-07-10 格式:DOC 页数:35 大小:4.33MB
下载 相关 举报
药品信息管理系统 课程设计.doc_第1页
第1页 / 共35页
药品信息管理系统 课程设计.doc_第2页
第2页 / 共35页
药品信息管理系统 课程设计.doc_第3页
第3页 / 共35页
药品信息管理系统 课程设计.doc_第4页
第4页 / 共35页
药品信息管理系统 课程设计.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、辽 宁 科 技 大 学课 程 设 计 报 告设计题目: 药品信息管理系统 学院、系: 电信 专业班级: 计算机 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

2、 图 .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 实体

3、类 .245.5.2 数据持久层(hibernate) 265.5.3 服务层(使用 Spring 的Service 注解) 285.5.4 控制层(SpringMVC )296测试和运行 311. 概述1.1 实验目标为了检验自己从大一到现在为止的学习收获,运用所学软件工程课程及数据库课程所学习的理论知识同实践相结合,建立工程化思想,使用面向对象语言(java)开发一个小型 MIS 系统,锻炼自己解决实际问题的能力,为毕业设计打下良好的基础。本次实验从前端到后台、从设计分析到实现并完成都是通过自己的慢慢积累并查阅相关框架资料(包括使用建模工具)完成,也算是一个微型的 web 全栈设计了。1.

4、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需求分析使

5、用 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

6、 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)

7、,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

8、(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

9、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 ta

10、ble 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 var

11、char(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 forei

12、gn 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_

13、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

14、_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 系统功能描述实现基本功能:药品数据库进药表(单据号,药品编码,采购价,采购数量,采购日期,供应商)售药表(顾客号,

15、药品编码,销售数量,销售日期,单价)库存表(药品编码,药品名称,库存量,生产厂家,规格,零售价)单据号:编程自动生成(从 1 开始,每次加 1) 。顾客号:编程自动生成(从 1 开始,每次加 1) 。进药:当进新药(第一次进此药)时,用户需要输入( 药品编码,药品名称,采购价,采购数量,采购日期,供应商,生产厂家,规格,零售价)当进的药品是已经进过的药品时,用户输入完药品代码时,窗体的文本框中将自动显示药品名称,生产厂家,规格,零售价,用户只需要输入采购价,采购数量,采购日期,供应商。售药:只需要用户输入药品编码,销售数量;单价,药品名称将自动显示,日期调用系统当前日期。一次售药可以销售多种药

16、品,最后一起结帐。显示应收药款,实收金额,找零。库存查询:按药品代码,药品名称查询。进药查询:按药品代码,药品名称,采购日期查询。售药查询:按药品代码,药品名称、销售日期查询。5应用程序的编程实现5.1 建库在 navicatformysql 中运行 sql 脚本:生成数据库如下:库存表:售药表(其他表不一一列举出来了):5.2 设计网页编码采用 utf-8、使用 css 文件保持页面风格统一。5.2.1 前端目录结构5.2.2 举例(进药页):主菜单和顶部代码:“药品信息管理系 统body margin-top: 0;margin-left: 0;ul li list-style: none

17、;acolor:black;$(function() window.open(“main/enter/index.jsp“, “workFrame“););function show(where) window.open(“main/“+where + “/index.jsp“, “workFrame“);药品信息管理系统一一梁君玮用户:$username未登录注销进药售药库存查询进药查询售药查询供应商客户进药页面代码:“进药function selectMedicine(index) window.open(main/enter/choose_medicine.jsp, 请选择药品,widt

18、h=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(

19、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“, “ro

20、w“ + rowIndex);rowIndex+;function DeleteRow(rowTag) var i = tblFlowCardDetail.rowsrowTag.rowIndex;var j;for (j = i; j 分销商库存管理 盘点结果维护添加*供应商代码:供应商名称: *药品编码药品名称采购价采购数量采购日期生产厂家规格零售价删除页面如下:5.3 添加配置5.3.1 逻辑架构分层 MVC(view-controller-service-dao-VO-db)框架使用的是 SSH(Spring+SpringMVC+Hibernate )使用 Spring 集成 Sprin

21、gMVC 和 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.persi

22、stence.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

23、(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.cl

24、ass,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.inve

25、ntory = inventory;public double getProcurement_price() return procurement_price;public void setProcurement_price(double procurement_price) this.procurement_price = procurement_price;public int getProcurement_number() return procurement_number;public void setProcurement_number(int procurement_number)

26、 this.procurement_number = procurement_number;public String getProcurement_date() return procurement_date;public void setProcurement_date(String procurement_date) this.procurement_date = procurement_date;public Supplier getSupplier() return supplier;public void setSupplier(Supplier supplier) this.su

27、pplier = 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.Reposito

28、ry;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 s

29、essionFactory) this.sessionFactory = sessionFactory; private SessionFactory sessionFactory;/* 批量保存创建的进药信息*/Overridepublic void saveCreateEnter(List enterList) sessionFactory.getCurrentSession().save(enterList);/* 根据条件分页查询进药信息列表*/Overridepublic List queryEnterForPageByCondition(Map map) Enter enter =

30、 (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

31、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.getProcurem

32、ent_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)

33、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“, “%“

34、+enter.getInventory().getM_id()+“%“) .setParameter(“m_name“,“%“+ enter.getInventory().getM_name()+“%“).setParameter(“procurement_date“,“%“+ enter.getProcurement_date()+“%“).setParameter(“supplier“,“%“+ enter.getSupplier().getS_id()+“%“);return query.uniqueResult();5.5.3 服务层(使用 Spring 的Service 注解)例(库

35、存):package com.ljw.medicine.service.impl;import java.util.List;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.ljw.medicine.beans.PaginationVO;import com.ljw.medicine.beans.Inventory;import com.ljw.medicine.d

36、ao.InventoryDao;import com.ljw.medicine.service.InventoryService;/* ClassName:InventoryServiceImpl* company:* Description:药品业务实现类* date 2017 年 11 月 30 日 下午 3:35:35* author 梁君玮*/Servicepublic class InventoryServiceImpl implements InventoryService Autowiredpublic InventoryDao inventoryDao;/* 保存创建的药品*/

37、Overridepublic void saveCreateInventory(Inventory inventory) inventoryDao.saveCreateInventory(inventory);/* 根据条件分页查询药品列表*/Overridepublic PaginationVO queryInventoryForPageByCondition(Map map) List dataList = inventoryDao.queryInventoryForPageByCondition(map);Long count = inventoryDao.queryCountOfInv

38、entoryByCondition(map);PaginationVO vo = new PaginationVO();if(pageNo=null)pageNo=1;Integer skipNumber = (pageNo - 1) * pageSize;map.put(“m_name“, m_name);map.put(“skipNumber“, skipNumber);map.put(“pageSize“, pageSize=null?15:pageSize);PaginationVO vo = inventoryService.queryInventoryForPageByCondition(map);return vo;ResponseBodyRequestMapping(“saveEditInventory.do“)public ModelAndView saveEditInventory(Inventory inventory)ModelAndView mv = new ModelAndView();

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报