醫藥管理信息系統

github代碼:https://github.com/tenglely/baseproject
醫藥管理信息系統
1. 目錄
2.概述

  1. 項目背景:設計本系統,模擬醫藥超市的部分管理功能。
  2. 業務描述:藥品由專門的採購人員從醫藥經銷商處購進醫藥超市,並將藥品信息記錄入庫,顧客從超市購買藥品需填寫相關個人信息,每次售藥需登記經辦人(醫藥超市員工,即銷售人員)的信息,以及所售藥品的信息。
  3. 開發環境:window10,mysql5.8, Eclipse Jee Neon

3.需求分析

  1. 功能模塊
    1.“信息查詢”功能模塊
    1)查詢顧客信息
    2)查詢經辦人信息
    3)查詢藥品信息
    4)查詢訂單信息
    注:信息查詢可基於單條件查詢也可基於多條件複合查詢。
    2.“信息錄入”功能模塊
    1)錄入顧客信息
    2)錄入經辦人信息
    3)錄入藥品信息
    4)錄入訂單信息
    注:信息錄入時,需要考慮數據信息的完整性、有效性等。
    3.“信息刪除”功能模塊
    1)刪除顧客信息
    2)刪除經辦人信息
    3)刪除藥品信息
    4)刪除訂單信息
    注:可單條記錄刪除,也可批量刪除,執行該項操作時需要考慮刪除所需的約束條件(如:爲顧客提供服務的經辦人信息不能刪除,顧客已購買的藥品信息不能刪除)。
    4.“信息修改”功能模塊
    1)修改顧客信息
    2)修改經辦人信息
    3)修改藥品信息
    注:進行修改操作時,需要保證數據的一致性
    5.“信息瀏覽”功能模塊
    1)瀏覽顧客信息
    2)瀏覽經辦人信息
    3)瀏覽藥品信息
    4)瀏覽訂單信息
    注:通過系統提供的相關界面對client、agency、medicine等數據表中的內容進行瀏覽。
    6.“數據報表”功能模塊
    1)顧客信息報表
    2)經辦人信息報表
    3)藥品信息報表
    4)訂單信息報表
    注:按照一定的格式在相應的窗口界面上顯示顧客、經辦人、藥品、訂單等信息,並提供通過打印機打印輸出的功能。
    7.用戶管理與用戶登陸功能模塊
    系統可根據需要添加、刪除用戶,並可對已有的用戶信息進行修改操作;在添加新用戶時,可定義其操作權限(查詢、更新、瀏覽、報表等權限);用戶密碼可進行隨時修改;各種不同身份的用戶登陸系統後,可享有不同的系統操作權限。

4.概念結構設計
生成基本E-R圖

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
5.邏輯結構設計
在這裏插入圖片描述

6.主要模塊的設計以及代碼
1)給出主要模塊的設計思路及關鍵代碼,並對代碼進行解釋
2)詳細介紹你採用的前臺軟件是如何鏈接後臺數據庫並操縱數據庫,包括鏈接、前臺讀取修改數據、後臺更新數據庫等等(注意:必須結合本系統來介紹)。

  1. 登錄模塊:不同用戶登錄,將顯示不同的界面。管理員跳去管理界面,經辦人跳去經辦人界面,錄藥人員跳去錄藥界面。
    登錄界面:
    在這裏插入圖片描述
    核心代碼:通過用戶名和密碼,查詢一條員工信息,如果不爲null則登錄,再通過sevlet層對用戶類型進行判斷,使其跳去相應界面
    public Agency login(String username, String password) {
    String sql="select ano,aname,asex,aphone,aremark,apassword,aclass from agency where aname=? and apassword=? ";
    return super.get(sql, username,password);
    }

管理員界面:
在這裏插入圖片描述
經辦人界面:
在這裏插入圖片描述
採購人員界面:
在這裏插入圖片描述

2)錄入員工模塊:管理員錄入員工信息,定義員工用戶類型(經辦人,錄藥人員,管理員),不同用戶權限功能不同
在這裏插入圖片描述
public int save(Agency agency) {
String sql=“insert into agency(ano,aname,asex,aphone,aremark,apassword,aclass) values(?,?,?,?,?,?,?)”;
return super.update(sql,agency.getAno(),agency.getAname(),agency.getAsex(),agency.getAphone(),agency.getAremark(),agency.getApassword(),agency.getAclass());
}

3)信息操作模塊:管理員可以在此模塊對顧客信息,員工信息,藥品信息,訂單信息進行查詢、修改、刪除操作
右側列表:
在這裏插入圖片描述
顧客信息操作:點擊詳細查詢會下滑出查詢項(模糊、多值查詢),右側可進行單項刪除、修改操作。點擊編號可查詢該用戶所有訂單。
在這裏插入圖片描述

查詢顧客信息語句代碼:
public List getNameList(String cname) {
String sql=“select cno,cname,csex,cage,caddress,cphone,cremark from client where 1=1”;
sql=sql+" and cname=’"+cname+"’";
return super.getList(sql);
}

@Override
public List<Client> find(String csex, String cage) {
	String sql="select cno,cname,csex,cage,caddress,cphone,cremark from client where 1=1";
	if(csex!=null && !"".equals(csex)){
			sql=sql+" and csex='"+csex+"'";
		}
	if(cage!=null && !"".equals(cage)){
		int a=Integer.parseInt(cage);
			sql=sql+" and cage="+a;
		}
	return super.getList(sql);
}

修改顧客信息語句代碼:
public int updateUserById(Client client) {
String sql=“update client set cname=?,csex=?,cage=?,caddress=?,cphone=?,cremark=? where cno=?;”;
return super.update(sql,client.getCname(),client.getCsex(),client.getCage(),client.getCaddress(),client.getCphone(),client.getCremark(),client.getCno());
}
刪除顧客信息語句代碼:
public int deleteUserById(int id) {
String sql=“delete from client where cno=?;”;
return super.update(sql, id);
}

員工信息操作:點擊詳細查詢會下滑出查詢項(模糊、多值查詢),右側可進行單項刪除、修改操作
在這裏插入圖片描述
查詢員工信息語句代碼:
public Agency get(int ano) {
String sql=“select ano,aname,asex,aphone,aremark,apassword,aclass from agency where ano=?”;
return super.get(sql, ano);
}
public List getAll() {
String sql=“select ano,aname,asex,aphone,aremark,apassword,aclass from agency”;
return super.getList(sql);
}
public List find(String aname, String aphone) {
String sql=“select ano,aname,asex,aphone,aremark,apassword,aclass from agency where 1=1”;
//記得空格
if(aname!=null && !"".equals(aname)){
sql=sql+" and aname like ‘%"+aname+"%’";
}
if(aphone!=null && !"".equals(aphone)){
sql=sql+" and aphone like ‘%"+aphone+"%’";
}
System.out.println(sql);
return super.getList(sql);
}

修改員工信息語句代碼
public int updateUserById(Agency agency) {
String sql=“update agency set aname=?,asex=?,aphone=?,aremark=?,apassword=?,aclass=? where ano=?;”;
return super.update(sql,agency.getAname(),agency.getAsex(),agency.getAphone(),agency.getAremark(),agency.getApassword(),agency.getAclass(),agency.getAno());
}
刪除員工信息語句代碼
public int deleteUserById(int id) {
String sql=“delete from agency where ano=?;”;
return super.update(sql, id);
}

藥品信息操作:點擊詳細查詢會下滑出查詢項(模糊、多值查詢),右側可進行單項刪除、修改操作(已用過的藥品無法刪除,點擊刪除會顯示提示信息)
在這裏插入圖片描述
查詢藥品信息語句代碼:
public Medicine get(int mno) {
String sql=“select mno,mname,mmode,mefficacy,mprice,mcount from medicine where mno=?”;
return super.get(sql,mno);
}

public List getAll() {
String sql=“select mno,mname,mmode,mefficacy,mprice,mcount from medicine”;
return super.getList(sql);
}

public List find(String mname) {
String sql=“select mno,mname,mmode,mefficacy,mprice,mcount from medicine where 1=1”;
if(mname!=null&& !"".equals(mname)){
sql=sql+" and mname like ‘%"+mname+"%’";
}
return super.getList(sql);
}
修改藥品信息語句代碼:
public int updateUserById(Medicine medicine) {
String sql=“update medicine set mname=?,mmode=?,mefficacy=?,mprice=?,mcount=? where mno=?;”;
return super.update(sql,medicine.getMname(),medicine.getMmode(),medicine.getMefficacy(),medicine.getMprice(),medicine.getMcount(),medicine.getMno());
}
刪除藥品信息語句代碼:
public int deleteUserById(int id) {
String sql=“delete from medicine where mno=?;”;
return super.update(sql, id);
}

訂單信息操作:點擊詳細查詢會下滑出查詢項(模糊、多值查詢),右側可進行單項刪除操作。點擊經辦人編號會顯示操作該訂單的經辦人信息,點擊顧客編號會顯示該訂單顧客信息,點擊藥品編號會顯示該訂單所購藥品信息。(當刪除一個顧客所有的訂單後,該顧客信息也會刪除)
在這裏插入圖片描述
查詢訂單信息語句代碼:
public List getAll() {
String sql=“select sno,ano,cno,mno,csymptom,num,price,date from buy”;
return super.getList(sql);
}

public List find(int ano) {
String sql=“select sno,ano,cno,mno,csymptom,num,price,date from buy where 1=1”;
sql=sql+" and ano="+ano;
return super.getList(sql);
}

public List findByCno(int cno) {
String sql=“select sno,ano,cno,mno,csymptom,num,price,date from buy where 1=1”;
sql=sql+" and cno="+cno;
return super.getList(sql);
}

public List findByMno(int mno) {
String sql=“select sno,ano,cno,mno,csymptom,num,price,date from buy where 1=1”;
sql=sql+" and mno="+mno;
return super.getList(sql);
}

public List findBySno(int sno) {
String sql=“select sno,ano,cno,mno,csymptom,num,price,date from buy where 1=1”;
sql=sql+" and sno="+sno;
return super.getList(sql);
}

public Buy get(int sno) {
String sql=“select sno,ano,cno,mno,csymptom,num,price,date from buy where sno=?”;
return super.get(sql, sno);
}

刪除訂單信息語句代碼:
public int deleteUserById(int id) {
String sql=“delete from buy where sno=?;”;
return super.update(sql, id);
}

4)批量刪除模塊:管理員對顧客信息、員工信息、藥品信息、訂單信息進行批量刪除(勾選刪除項(可全選),然後點擊刪除勾選項)

批量刪除顧客信息界面:
在這裏插入圖片描述
核心代碼:獲取勾選的顧客信息的編號的數組,一一刪除
private void delemore(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
String[] moreC=req.getParameterValues(“moreC”);
int[] a=new int[100];
for(int i=0;i<moreC.length;i++){
a[i]=Integer.parseInt(moreC[i]);
System.out.println(a[i]);
}
int q=0;
for(int j:a){
q=0;
q=clientService.deleteUserById(j);
}
if(q==0){
req.getRequestDispatcher("/seetable?table=client").forward(req, resp);
}else{
resp.sendRedirect(req.getContextPath()+"/error.jsp");
}
}

批量刪除員工信息界面:
在這裏插入圖片描述
核心代碼:獲取勾選的員工信息的編號的數組,一一刪除
private void delemore(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
String[] moreA=req.getParameterValues(“moreA”);
int[] a=new int[100];
for(int i=0;i<moreA.length;i++){
a[i]=Integer.parseInt(moreA[i]);
System.out.println(a[i]);
}
int q=0;
for(int j:a){
q=0;
q=agencyService.deleteUserById(j);
}
if(q==0){
req.getRequestDispatcher("/seetable?table=agency").forward(req, resp);
}else{
resp.sendRedirect(req.getContextPath()+"/error.jsp");
}
}

批量刪除藥物信息界面:
在這裏插入圖片描述
批量刪除訂單信息界面:
在這裏插入圖片描述
核心代碼:獲取勾選的訂單信息的編號的數組,一一刪除
private void delemore(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
String[] moreB=req.getParameterValues(“moreB”);
int[] a=new int[100];
for(int i=0;i<moreB.length;i++){
a[i]=Integer.parseInt(moreB[i]);
System.out.println(a[i]);
}
int q=0;
for(int j:a){
q=0;
q=buyService.deleteUserById(j);
}
if(q==0){
req.getRequestDispatcher("/seetable?table=buy").forward(req, resp);
}else{
resp.sendRedirect(req.getContextPath()+"/error.jsp");
}
}

5)數據報表模塊:管理員點擊相應表,打印輸出成.xml文件
在這裏插入圖片描述
核心代碼:修改jsp頭爲以下,然後在內傳入需導出值
<%@ page language=“java” import=“java.util.,java.io.” pageEncoding=“UTF-8”%>
<%@ page contentType=“application/msexcel” %>
<%
response.setHeader(“Content-disposition”,“attachment; filename=test.xls”);
%>

6)登記模塊:經辦人幫顧客選擇其要購買藥品及數量,填寫顧客信息及症狀,提交
登記顧客界面:
在這裏插入圖片描述
核心代碼:獲取頁面信息,生成一條顧客信息,和一條或多條訂單信息(購買的一種藥品爲一個訂單),還需減去相應藥品的庫存數量
private void AgencyAdd(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
String cname=req.getParameter(“cname”);
int cage=Integer.valueOf(req.getParameter(“cage”));
String Csex=req.getParameter(“csex”);
String caddress=req.getParameter(“caddress”);
String cphone=req.getParameter(“cphone”);
String csymptom=req.getParameter(“csymptom”);
int ano=Integer.valueOf(req.getParameter(“ano”));
String cremark=req.getParameter(“cremark”);
HttpSession session=req.getSession();
String num[]=(String[])session.getAttribute(“num”);
Client client=new Client();
System.out.println(client.getCno());
client.setCname(cname);
client.setCage(cage);
client.setCsex(Csex);
client.setCaddress(caddress);
client.setCphone(cphone);
client.setCremark(cremark);
clientService.save(client);
int cno = 0;
List clients=clientService.getAll();
for(Client cc:clients)
cno=cc.getCno();
System.out.println(cno);
List list=(List)session.getAttribute(“mlist”);
int j=0,i=0;
for(Medicine m:list)
{
if(num[i]!=null&&num[i]!=""){
j=0;
System.out.println(num[i]);
Buy buy=new Buy();
buy.setCno(cno);
buy.setCsymptom(csymptom);
buy.setMno(m.getMno());
buy.setAno(ano);
buy.setNum(Integer.valueOf(num[i]));
Date date=new Date();
buy.setDate(date);
buy.setPrice(Integer.valueOf(num[i])*m.getMprice());
System.out.println(buy);
//當前庫存=原來-購買的
Medicine medicine=medicineService.get(m.getMno());
int count=medicine.getMcount()-Integer.valueOf(num[i]);
medicine.setMcount(count);
int row=medicineService.updateUserById(medicine);
j=buyService.save(buy);
}
i++;
}
if(j>0){
req.getRequestDispatcher("/findBySno.bdo?ano="+ano+"&use=‘use’").forward(req, resp);
}else{
resp.sendRedirect(req.getContextPath()+"/error.jsp");
}

}

選擇需買藥品界面(勾選需購藥品及數量,可多選):
在這裏插入圖片描述
7)訂單記錄模塊:經辦人可於此查看、刪除自己登記過的訂單信息。點擊顧客編號會顯示該訂單顧客信息,點擊藥品編號會顯示該訂單所購藥品信息。

8)錄藥模塊:採購人員於此錄入藥品信息
在這裏插入圖片描述
錄藥語句代碼:
public int save(Medicine medicine) {
String sql=“insert into medicine(mno,mname,mmode,mefficacy,mprice,mcount) values(?,?,?,?,?,?)”;
return super.update(sql,medicine.getMno(),medicine.getMname(),medicine.getMmode(),medicine.getMefficacy(),medicine.getMprice(),medicine.getMcount());
}

9)管理藥品模塊:採購人員對藥品進行刪除、修改操作
在這裏插入圖片描述

10)員工修改信息模塊:點擊修改個人信息,經辦人或採購人員對自身信息進行修改(用戶類型不可修改,只有管理員可修改)
在這裏插入圖片描述
修改員工信息語句代碼:
public int updateUserById(Agency agency) {
String sql=“update agency set aname=?,asex=?,aphone=?,aremark=?,apassword=?,aclass=? where ano=?;”;
return super.update(sql,agency.getAname(),agency.getAsex(),agency.getAphone(),agency.getAremark(),agency.getApassword(),agency.getAclass(),agency.getAno());
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章