基于javaweb+mysql的jsp+servlet私人牙科诊所病历管理系统医院挂号(java+jsp+css+javascript+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
前台病人:
user1 123456
user2 123456
后台:
管理员账号/密码:admin/123456
挂号人员账号/密码:gh/123456
医生人员账号/密码:doctor/123456
收费人员账号/密码:sf/123456
药房人员账号/密码:yf/123456
预约挂号的操作流程:
1 前台user1:预约挂号
2 后台gh:受理
3 后台doctor:问诊
4 后台sf:收费
5 后台yf:确认取药
6 前台user1:查询病历(就诊信息)
基于javaweb+mysql的JSP+Servlet私人牙科诊所病历管理系统医院挂号(java+jsp+css+javascript+mysql)
项目介绍
本系统分为前后台,包括管理员、病人、挂号人员、收费人员、药房人员、医生人员等角色,其中前台只能由病人角色登录,其它角色可通过后台登录; 管理员角色包含以下功能: 登录页面,增加公告,公告管理,留言管理,增加用户,用户管理,增加科室,科室管理,药品管理,收费统计,挂号统计等功能。
病人角色包含以下功能: 注册账号,用户登录,用户登录后首页,预约挂号,个人信息修改,提交留言等功能。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本; 6.是否Maven项目:否;
技术栈
1.后端技术:Servlet 2.前端技术:JSP+CSS+JavaScript
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中dbconnection.properties配置文件中的数据库配置改为自己的配置; 将项目中src/dao/CommDAO.java中第71行的数据库配置用户名密码改为自己的配置; 4. 运行项目,输入http://localhost:8080/srykzsblmis/ 登录 注:Tomcat中配置路径必须为srykzsblmis 管理员账号/密码:admin/123 病人账号/密码: xm/123 挂号人员账号/密码:gh/123 收费人员账号/密码:sf/123 药房人员账号/密码:yf/123 医生人员账号/密码:doctor1/123
String sex = mm.get("sex").toString();
String age = mm.get("age").toString();
String idcard = mm.get("idcard").toString();
String tel = mm.get("tel").toString();
String addr = mm.get("addr").toString();
String ghdept = map.get("dept").toString();
String price = map.get("type").toString();
String status = "待问诊";
String delstatus = "0";
String oper = "网上预约";
String savetime = Info.getDateStr();
dao.commOper("update yy set ghno ='" + ghno + "' where id=" + id);
dao.commOper("insert into ghinfo (ghno,tname,sex,age,idcard,tel,addr,ghdept,price,status,delstatus,oper,savetime) " +
" values('" + ghno + "','" + tname + "','" + sex + "','" + age + "','" + idcard + "','" + tel + "','" + addr + "','" + ghdept + "','" + price + "','" + status + "','" + delstatus + "','" + oper + "','" + savetime + "') ");
request.setAttribute("suc", "");
go("admin/yy.jsp", request, response);
}
//前台退出
if (ac.equals("frontexit")) {
session.removeAttribute("user");
go("index.jsp", request, response);
}
//添加公告
if (ac.equals("noticeadd")) {
String title = request.getParameter("title");
String note = request.getParameter("note");
String savetime = Info.getDateStr();
String sql = "insert into notice (title,note,savetime) values('" + title + "','" + note + "','" + savetime + "')";
dao.commOper(sql);
request.setAttribute("suc", "");
go("/admin/noticeadd.jsp", request, response);
}
//修改公告
if (ac.equals("noticeedit")) {
String id = request.getParameter("id");
String title = request.getParameter("title");
String note = request.getParameter("note");
String sql = "update notice set title='" + title + "',note='" + note + "' where id= " + id;
dao.commOper(sql);
request.setAttribute("suc", "");
go("/admin/noticeadd.jsp", request, response);
}
//添加留言
if (ac.equals("chatadd")) {
String msg = request.getParameter("msg");
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void go(String url, HttpServletRequest request, HttpServletResponse response) {
try {
request.getRequestDispatcher(url).forward(request, response);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void gor(String url, HttpServletRequest request, HttpServletResponse response) {
try {
response.sendRedirect(url);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
HashMap admin = (HashMap) session.getAttribute("admin");
HashMap user = (HashMap) session.getAttribute("user");
String ac = request.getParameter("ac");
if (ac == null) ac = "";
CommDAO dao = new CommDAO();
String date = Info.getDateStr();
String today = date.substring(0, 10);
String tomonth = date.substring(0, 7);
//登录
if (ac.equals("login")) {
this.currentPage = Integer.parseInt(request
.getParameter("currentPage")) <= 0 ? 1 : Integer
.parseInt(request.getParameter("currentPage"));
} catch (Exception e) {
try {
this.currentPage = Integer.parseInt((String) request
.getSession().getAttribute("currentPage"));
} catch (Exception e1) {
this.currentPage = 1;
}
}
}
/**
*
* @param 下一页的分页链接
* @param 一页最大记录数
* @param 当前HttpServletRequest对象
* @param 数据库操作对象
*/
public static PageManager getPage(String path, int pageSize,
HttpServletRequest request) {
return new PageManager(path, pageSize, request);
}
/**
*
*
* @param hql语句
*
*/
sql += "order by id desc";
ArrayList<HashMap> list = (ArrayList) dao.select(sql);
List<List> rlist = new ArrayList();
DecimalFormat decimal = new DecimalFormat("#.#");
for (HashMap map : list) {
List mlist = new ArrayList();
mlist.add(map.get("ghno"));
mlist.add(decimal.format(Double.valueOf(map.get("price").toString())) + "元");
HashMap dm = dao.select("select * from dept where id=" + map.get("ghdept")).get(0);
mlist.add(dm.get("deptname"));
mlist.add(map.get("oper"));
mlist.add(map.get("savetime"));
rlist.add(mlist);
}
String[] pros = {"挂号编号", "挂号金额", "挂号科室", "操作人", "操作时间"};
Info.writeExcel(request.getRealPath("/upfile/") + "/ghexport.xls", pros, rlist, request, response);
}
if (ac.equals("test")) {
String str = request.getParameter("str");
String sql = "select * from sysuser where uname like '%" + str + "%' or tname like '%" + str + "%' ";
if (str.equals("")) {
sql = "select * from sysuser";
}
System.out.println(sql);
String returnStr = "";
ArrayList<HashMap> list = (ArrayList<HashMap>) dao.select(sql);
System.out.println("aa-=" + list.size());
if (list.size() != 0) {
for (HashMap map : list) {
returnStr += map.get("uname") + "-" + map.get("tname") + "$";
}
out.println(returnStr);
} else {
out.println("");
}
}
if (ac.equals("testadd")) {
String Hidden1 = request.getParameter("Hidden1");
//String str[] = Hidden1.split("\\$");
String cfno = "czd001";
//for(int i=0;i<str.length;i++){
// System.out.println("aaa="+str[i]);
//}
{
File file1=new File(path + "/" + img);
if(file1.exists() ) {
file1.deleteOnExit();
file1.delete();
}}}
}
public static void writeExcel(String fileName,String[] pros,java.util.List<List> list,HttpServletRequest request, HttpServletResponse response){
WritableWorkbook wwb = null;
try {
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File(fileName));
} catch (IOException e) {
e.printStackTrace();
}
if(wwb!=null){
//创建一个可写入的工作表
//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet("sheet1", 0);
ws.setColumnView(0,20);
ws.setColumnView(1,20);
ws.setColumnView(2,20);
ws.setColumnView(3,20);
ws.setColumnView(4,20);
ws.setColumnView(5,20);
try {
for(int i=0;i<pros.length;i++)
{
Label label1 = new Label(i, 0,"");
label1.setString(pros[i]);
ws.addCell(label1);
}
} catch (RowsExceededException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (WriteException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//下面开始添加单元格
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void gor(String url, HttpServletRequest request, HttpServletResponse response) {
try {
response.sendRedirect(url);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
HashMap admin = (HashMap) session.getAttribute("admin");
HashMap user = (HashMap) session.getAttribute("user");
String ac = request.getParameter("ac");
if (ac == null) ac = "";
CommDAO dao = new CommDAO();
String date = Info.getDateStr();
String today = date.substring(0, 10);
String tomonth = date.substring(0, 7);
//登录
if (ac.equals("login")) {
String utype = request.getParameter("utype");
String username = request.getParameter("uname");
String password = request.getParameter("upass");
String sql = "select * from sysuser where uname='" + username + "' and upass='" + password + "' ";
List<HashMap> userlist = dao.select(sql);
if (userlist.size() != 1) {
request.setAttribute("error", "");
go("/admin/login.jsp", request, response);
} else {
go("/admin/ghadd.jsp", request, response);
}
//药品入库
if (ac.equals("yprk")) {
String yno = request.getParameter("yno");
String num = request.getParameter("num");
String type = "in";
String oper = admin.get("uname").toString();
String savetime = Info.getDateStr();
dao.commOper("insert into kcrecord (yno,num,type,savetime,oper) values ('" + yno + "','" + num + "','" + type + "','" + savetime + "','" + oper + "') ");
request.setAttribute("suc", "");
go("/admin/yprk.jsp", request, response);
}
if (ac.equals("export")) {
String sql = "select * from zd where fkstatus='已付款' ";
sql += "order by ghno desc";
ArrayList<HashMap> list = (ArrayList) dao.select(sql);
List<List> rlist = new ArrayList();
DecimalFormat decimal = new DecimalFormat("#.#");
for (HashMap map : list) {
HashMap am = dao.select("select * from ghinfo where ghno='" + map.get("ghno") + "'").get(0);
HashMap mstu = dao.select("select * from zd where ghno='" + map.get("ghno") + "'").get(0);
String info = mstu.get("info").toString();
String numinfo = mstu.get("numinfo").toString();
String yinfo = "";
String a[] = info.split("\\$");
String b[] = numinfo.split("\\$");
for (int i = 0; i < a.length; i++) {
yinfo += a[i] + " 数量:" + b[i] + "<br/>";
}
List mlist = new ArrayList();
mlist.add(map.get("ghno"));
mlist.add(am.get("tname"));
mlist.add(am.get("sex"));
mlist.add(am.get("age"));
mlist.add(mstu.get("bq"));
mlist.add(mstu.get("zd"));
mlist.add(yinfo);
mlist.add(decimal.format(Double.valueOf(map.get("totalprice").toString())) + "元");
mlist.add(map.get("sfoper"));
mlist.add(map.get("sfsavetime"));
rlist.add(mlist);
}
//String[] pros = {"挂号编号","患者姓名","收费金额","收费人","收费时间"};
String[] pros = {"挂号编号", "患者姓名", "性别", "年龄", "病情", "诊断", "药品处置", "收费金额", "收费人", "收费时间"};
Info.writeExcel(request.getRealPath("/upfile/") + "/sfexport.xls", pros, rlist, request, response);
}
if (ac.equals("ghexport")) {
String sql = "select * from ghinfo where 1=1 and delstatus='0'";
response.setHeader("Content-Disposition", new String(sb.toString()
.getBytes(), "ISO8859-1"));
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String filename = request.getParameter("filename");
if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0){
try {
filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else
if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0){
try {
filename = URLEncoder.encode(filename, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
response.setContentType("text/plain");
response.setHeader("Location",filename);
response.reset();
response.setHeader("Cache-Control", "max-age=0" );
response.setHeader("Content-Disposition", "attachment; filename=" + filename);
try {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
OutputStream fos = null;
// File f = new File(request.getRealPath("/upfile/")+"/"+filename);
//System.out.println(f);
bis = new BufferedInputStream((InputStream)new FileInputStream(request.getRealPath("/upfile/")+"/"+filename));
fos = response.getOutputStream();
bos = new BufferedOutputStream(fos);
int bytesRead = 0;
byte[] buffer = new byte[5 * 1024];
while ((bytesRead = bis.read(buffer)) != -1) {
bos.write(buffer, 0, bytesRead);
}
bos.close();
bis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
try {
response.sendRedirect("/srykzsblmis/upload?filename="+fileName.substring(fileName.lastIndexOf("/")+1));
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String a = "A020$A004$";
String[] aa = a.split("\\$");
for(int i=0;i<aa.length;i++){
System.out.println(aa[i]);
}
}
}
public class PageManager {
private PageManager() {
}
}
//患者修改个人信息
if (ac.equals("userinfo")) {
String id = request.getParameter("id");
String upass = request.getParameter("upass");
String tname = request.getParameter("tname");
String sex = request.getParameter("sex");
String age = request.getParameter("age");
String idcard = request.getParameter("idcard");
String tel = request.getParameter("tel");
String addr = request.getParameter("addr");
dao.commOper("update patient set upass='" + upass + "',tname='" + tname + "',sex='" + sex + "',age='" + age + "'," +
" idcard='" + idcard + "',tel='" + tel + "',addr='" + addr + "' where id=" + id);
request.setAttribute("suc", "");
go("/userinfo.jsp", request, response);
}
//用户登陆
if (ac.equals("plogin")) {
String uname = request.getParameter("uname");
String upass = request.getParameter("upass");
ArrayList list = (ArrayList) dao.select("select * from patient where uname='" + uname + "' and upass='" + upass + "' and delstatus='0' ");
if (list.size() == 1) {
session.setAttribute("user", list.get(0));
request.setAttribute("suc", "");
gor("index.jsp", request, response);
} else {
request.setAttribute("no", "");
go("index.jsp", request, response);
}
}
//预约
if (ac.equals("yy")) {
String uid = user.get("id").toString();
String type = request.getParameter("type");
String dept = request.getParameter("id");
String savetime = Info.getDateStr();
dao.commOper("insert into yy (uid,type,dept,ghno,savetime) values ('" + uid + "','" + type + "','" + dept + "','','" + savetime + "') ");
request.setAttribute("suc", "");
go("yy.jsp?id=" + dept, request, response);
}
//挂号受理
if (ac.equals("yysl")) {
System.out.println("aa");
String id = request.getParameter("id");
HashMap map = dao.select("select * from yy where id=" + id).get(0);
}
bos.close();
bis.close();
fos.close();
//new Info().delPic(request.getRealPath("/upfile/")+"/", filename);
} catch (Exception e) {
e.printStackTrace();
}finally{
}
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
public class SetChar extends HttpServlet implements Filter {
private FilterConfig filterConfig;
// Handle the passed-in FilterConfig
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
// Process the request/response pair
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
//添加留言
if (ac.equals("chatadd")) {
String msg = request.getParameter("msg");
String hfmsg = "";
String savetime = Info.getDateStr();
String uid = user.get("id").toString();
String sql = "insert into chat (msg,hfmsg,savetime,uid) values('" + msg + "','" + hfmsg + "','" + savetime + "','" + uid + "')";
dao.commOper(sql);
request.setAttribute("suc", "");
go("chat.jsp", request, response);
}
//回复留言
if (ac.equals("chathf")) {
String id = request.getParameter("id");
String hfmsg = request.getParameter("hfmsg");
String sql = "update chat set hfmsg='" + hfmsg + "' where id= " + id;
dao.commOper(sql);
request.setAttribute("suc", "");
go("/admin/chathf.jsp?id=" + id, request, response);
}
dao.close();
out.flush();
out.close();
}
public void init() throws ServletException {
// Put your code here
}
}
public class PageManager {
private PageManager() {
}
// 默认一页最大记录数
public static final int DEFAULTPAGESIZE = 20;
// 分页段
public static final int segment = 10;
// 当前页数
protected int currentPage;
// 一页长度
protected int pageSize;
// 总页数
protected long pageNumber;
// 总记录数
protected long count;
// 数据
protected Collection collection;
// 数据查询对象
protected CommDAO dao = new CommDAO();
// 表现层代码
protected String info;
// 请求路径
protected String path;
// 服务器请求对象
protected HttpServletRequest request;
/*
* 仅仅只是加到路径中去
*/
protected String parameter = "";
/**
*
* @param 下一页的分页链接
* @param 一页最大记录数
* @param 当前HttpServletRequest对象
public class MainCtrl extends HttpServlet {
public MainCtrl() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void go(String url, HttpServletRequest request, HttpServletResponse response) {
try {
request.getRequestDispatcher(url).forward(request, response);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void gor(String url, HttpServletRequest request, HttpServletResponse response) {
try {
response.sendRedirect(url);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.setAttribute("suc", "");
go("/admin/ypcfadd.jsp", request, response);
}
}
//编辑药品、处置
if (ac.equals("ypcfedit")) {
String id = request.getParameter("id");
String yname = request.getParameter("yname");
String price = request.getParameter("price");
String type = request.getParameter("type");
String gg = request.getParameter("gg");
String company = request.getParameter("company");
if (!type.equals("药品")) {
gg = "";
company = "";
}
String sql = "update ypcf set yname='" + yname + "',gg='" + gg + "',price='" + price + "',company='" + company + "',type='" + type + "' where id=" + id;
dao.commOper(sql);
request.setAttribute("suc", "");
go("/admin/ypcfadd.jsp", request, response);
}
//修改密码
if (ac.equals("uppass")) {
String id = request.getParameter("id");
String upass = request.getParameter("upass");
String tname = request.getParameter("tname");
String sex = request.getParameter("sex");
String birth = request.getParameter("birth");
String tel = request.getParameter("tel");
String ismarage = request.getParameter("ismarage");
String addr = request.getParameter("addr");
String email = request.getParameter("email");
String idcard = request.getParameter("idcard");
String byschool = request.getParameter("byschool");
String sql = "update sysuser set upass='" + upass + "',tname='" + tname + "',sex='" + sex + "' ,birth='" + birth + "',tel='" + tel + "',ismarage='" + ismarage + "',addr='" + addr + "',email='" + email + "'" +
" ,idcard='" + idcard + "',byschool='" + byschool + "' where id=" + id;
dao.commOper(sql);
request.setAttribute("suc", "");
go("/admin/uppass.jsp", request, response);
}
//退出
if (ac.equals("exit")) {
session.removeAttribute("admin");
request.setAttribute("suc", "");
go("/admin/login.jsp", request, response);
}
//新增挂号
if (ac.equals("ghadd")) {
String ghno = request.getParameter("ghno");
String tname = request.getParameter("tname");
String sex = request.getParameter("sex");
String age = request.getParameter("age");
String idcard = request.getParameter("idcard");
e1.printStackTrace();
}
//下面开始添加单元格
int i=1;
for(List t:list){
try {
Iterator it = t.iterator();
int jj=0;
while(it.hasNext())
{
Label label1 = new Label(jj, i,"");
String a = it.next().toString();
label1.setString(a);
ws.addCell(label1);
jj++;
}
i++;
} catch (RowsExceededException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (WriteException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
try {
//从内存中写入文件中
wwb.write();
//关闭资源,释放内存
wwb.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
try {
response.sendRedirect("/srykzsblmis/upload?filename="+fileName.substring(fileName.lastIndexOf("/")+1));
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String a = "A020$A004$";
String[] aa = a.split("\\$");
for(int i=0;i<aa.length;i++){
System.out.println(aa[i]);
* 刷新分页路径
*
*/
protected void refreshUrl() {
StringBuffer buf = new StringBuffer();
buf.append("<font color='#1157B7'>共").append(count);
buf.append("条");
buf.append(" ");
buf.append("第").append(this.currentPage).append("/").append(
this.pageNumber).append("页");
buf.append(" ");
if (this.currentPage == 1)
buf.append("首页");
else
buf.append("<a href='").append(this.path).append("¤tPage=1")
.append(parameter)
.append("' class='ls'>").append("首页")
.append("</a>");
// #1157B7
buf.append(" ");
if (this.currentPage > 1) {
buf.append("<a href='").append(this.path).append("¤tPage=")
.append(currentPage - 1).append(parameter).append(
"' class='ls'>").append("上页")
.append("</a>");
} else {
buf.append("上页");
}
buf.append(" ");
int currentSegment = this.currentPage % segment == 0 ? this.currentPage
/ segment : this.currentPage / segment + 1;
/*for (int i = 1; i <= this.pageNumber; i++) {
if (this.currentPage == i)
buf.append("<font color='red'>").append(i).append("</font>");
else
buf.append("<a href='").append(this.path).append(
"¤tPage=").append(i).append(parameter).append(
"' class='ls'>[").append(i).append(
"]</a>");
}*/
buf.append(" ");
if (this.currentPage < this.pageNumber) {
buf.append("<a href='").append(this.path).append("¤tPage=")
.append(currentPage + 1).append(parameter).append(
"' class='ls'>").append("下页")
.append("</a>");