随着科技的飞速发展,计算机已经广泛的应用于各个领域之中。在医学领域中,计算机主要应用于两个方面:一是医疗设备智能化,以硬件为主。另一种是病例信息管理系统(HIS)以软件建设为主,以提高私人牙科诊所病例的现代化管理水平。本次毕业设计的主要任务是基于B/S模式开发设计一个私人牙科诊所病例管理系统以提高私人牙科诊所病例的现代化管理形象。该系统包括药品管理、挂号管理、开药管理和药房管理四个部分,可以实现药品、患者的录入、删除、修改和查询等功能,特别适应各大中小型私人牙科诊所病例,提高私人牙科诊所病例管理水平,系统设计合理操作简便。
1.1.1 JSP概述
JSP是服务器端脚本环境可以用来创建交互式Web应用程序。当服务器收到对JSP文件的请求时,它处理包含在用于构建发送给浏览器的Web页文件中的服务器端脚本。除服务器端脚本外,JSP文件也可以包含HTML(包括相关的客户端脚本)和COM组件调用,这些组件可执行不同任务,如连接到数据库或处理商业逻辑。
1.对于HTML创作者
HTML创作者,将会发现用JSP编写服务器端脚本可使创建更为复杂、使用的Web应用程序变得十分简单。JSP对于将HTML表单信息存储在数据库中、根据访问者的自选项自定义Web站点或对不同的浏览器使用不同的HTML功能,提供了优异的解决方案。例如,从前要在Web服务器上处理用户输入,必须首先用Perl或C等语言建立传统的公共网关接口(CGI)应用程序。而使用JSP后,仅通过在HTML文档中直接嵌入的简单服务器端脚本,便可以收集HTML表单信息,并传递到数据库。如果已熟悉Microsoft JSPScript或Microsoft(r)Jscript,那么学习JSP将不会感觉到困难。
2.对于高级Web脚本语言编写者
由于JSP使用了中性语言,因此只要熟悉JSPScript、Jscript或PERL等脚本语言,就了解了JSP的使用方法。在JSP页中,可以使用已经装有COM脚本兼容编辑引擎的任何脚本编辑语言。JSP使用java和Jscript脚本引擎,但仍可安装用于PERL、REXX和Python的脚本引擎,他们可从第三方供应商处获得。
3.对于Web开发和编程人员
如果使用Visual Basic、C++或Java等编程语言开发过后端Web应用程序,将会发现JSP是创建Web应用程序灵活而快速的方法。除了添加脚本为应用程序创建HTML界面之外,还可以建立自己的COM组件。可以将应用程序的商业逻辑封装在可重复使用的模块中,以便在脚本、其他组件或其他程序中调用。
4.Active Server Pages模型
当浏览器向Web服务器请求.JSP文件时,服务器断脚本便开始运行。于是Web服务器调用JSP,用它从头至尾处理所请求的文件、执行脚本命令,并将Web页发送到浏览器。
因为脚本运行于服务器而不是客户端,所以Web服务器负责生成发送到浏览器的HTML页等工作。服务器端脚本无法被预先复制,因为返回到浏览器的只是脚本的运行结果,用户无法得知当前页面的脚本命令。
1.1.2 JSP的新特性
JSP新增了许多特性,有助于轻松编写脚本和开发Web应用程序。
(1)新的流控制能力
JSP的Server对象具有两种可用来控制程序流的新方法:Server .Transfer 和Server .Execute。与重定向请求(需要往返于客户端)不同,使用这些方法可将请求直接传送到.JSP文件,而不需要离开服务器。
(2)错误处理
JSP具有新的错误处理能力,可以使用自定义的错误信息.JSP文件来捕捉错误,也可以使用新的Server.GetlastError方法来显示有用信息,如错误描述或发生错误的行号。
(3)无脚本
通常JSP静态内容的处理速度快于服务器端内容的处理速度,因此以前只将.JSP文件扩展名指派给包含JSP功能性的文件。无论何时,如果需要在静态.html文件中添加JSP,只能手工添加.JSP文件扩展名并修正相关超级链接。不过,在JSP的最新版本中,不包含服务器端功能性的.JSP文件的处理速度比以前快了许多。因此,如果正在创建展开的Web应用程序并且其中的文件最终可能需要JSP功能性,现在就可以很方便地为这些文件指派.JSP文件扩展名,而不必考虑他们是否包含静态或服务器端内容。
(4)性能增强的对象
JSP提供流行的可安装组件的性能怎增强版本。这些对象能够可靠的使用与各种Web发布环境。
(5)XML集成
XML(扩展表及语言)允许描述复杂的数据结构或文档,可以在各种应用程序、客户端和服务器之间共享此信息。使用Microsoft Internet Explorer 4.0或根高版本附带的Microsoft XML Parser,可以创建服务器端应用程序,该应用程序允许Web服务器与Internet Explorer4.0(或更高版本)或任何包含XML结息能力的服务器交换XML格式的数据。
(6)Windows脚本组件
JSP支持Microsoft强大的脚本新技术——Windows脚本组件。现在可以将商业逻辑脚本过程转换为可以重复使用的COM组件,该组件可用于Web应用程序和其他组件对象模型(COM)适用的程序。
(7)确定浏览器能力的新方法
JSP具有可确定浏览器准确能力的新特性。当浏览器发送能描述其能力的Cookie(可通过使用简单的客户端脚本来安装这样的Cookie)时,可以创建一个“浏览器能力组件”实例,以便检索随Cookie返回的浏览器属性。可以使用此特性来确定浏览器能力并对应用程序做相应调整。
(8)JSP自动调整
JSP现在可以检测执行请求何时被外外部资源阻断,并自动提供更多县城以便同时执行附加请求和继续正常处理。如果CPU负担过重,JSP将减少线程数量,以便减少因太多费阻断请求同时执行而产生的持续不断的交换。
(9)服务器端包含(使用SRC属性)
现在可以使用HTML(SCRIPT)…(/SCRIPT)标签的SRC属性来完成服务器端包含。当使用SRC属性制定虚拟或相对路径并使用RUNAT=SERVER属性表示服务器端执行时,可以完成与“#Include”命令一样的功能。
(10)编码的JSP脚本
以前Web开发人员禁止他人查看隐藏在脚本后面的逻辑。JSP现在支持Microsoft Visual Basic Scripting Edition(JSPScript)和Microsoft Jscript5.0 附带的新的脚本编码实用程序。Web开发人员可以对客户端和服务器端脚本应用编码方案,以便使程序逻辑(使用非标准ASCCII字符)不可读。已编码的脚本在运行时由脚本引擎解码,因此不需要单独的实用程序。虽然此特性不是专门的安全加密解决方案,但可防止大多数用户无意中查看或复制脚本。
1.3.3 JSP的基本概念
(1)URL
URL(Uniform Resource Location,统一资源定位器)有协议名、web服务器地址、路径名和文件名四部分组成,它只是了文件在Internet中的位置。
(2)HTML
HTML(Hypertext Markup Language,超文本标记语言)是一种用于编写超文本文档的标记语言,它不是一种程序设计语言而是一种结构语言。它具有凭他无关性,无论是何种操作系统,只要有相应的浏览器程序,就可以运行HTML文档。
(3)Web站点
Web站点是计算机网络上的一个位置,它以网页或文档形式提供信息,访问者只需通过Web浏览器链接到站点。
(4)主页
主页是Web站点上一组网页或其他文件的起始页。它是HTML格式的文档,可用来说明站点内容、作者所在公司或部门的新闻、指向其他相关文档的链接或站点作者的个人信息等。
2.系统分析
2.1 需求分析
根据调研情况进行分析,认识到完整的管理系统非常复杂 ,其功能随医院病例规模等条件的变化而不同。目前各种医院病例管理系统的不断涌现,但是大多都是针对大型医院来设计的,而很少考虑到众多私人牙科诊所病例的实际情况,其功能在私人牙科诊所病例并不适用,从而增加了院方不必要的投资。此外,系统一般也不支持远程访问,信息的共享性差。为适应医疗信息管理发展的需要,开发基于B/S结构的私人牙科诊所病例管理系统。该系统应具有以下功能:
- 登陆模块,可分为管理员登陆和普通用户医生登录三个模块。
- 用户注册模块,对用户注册的用户名的要求,不同的用户要求要有不同的用户名。
- 系统管理模块,包括添加管理员,管理员密码的修改。
- 挂号管理模块,包括患者的名字、性别、年龄、现住地址和患者简介。
- 患者管理模块,对患者进行增加、患者删除、患者信息的修改。
- 开药管理模块,对药品的增加、删除、修改、查询,患者病历查
- 科室管理模块,管理员可以新建,修改,删除,科室信息
- 留言管理,管理员可以新建,修改,删除留言信息
- 预约挂号模块,用户可以在线进行预约挂号,用户可以选择普通号和专家号。
2.2 系统设计原则
2.1.1技术可行性
本系统是采用基于Web的程序设计思想进行编制的,利用JSP语句结合Microsoft SQL Server 2000后台数据库开发“私人牙科诊所病例信息管理系统”,可应用于各大中小型私人牙科诊所病例。整个系统由若干个表、窗口、菜单构成的。用户可通过菜单来调用系统的各项功能。
基于Web的程序设计语言JSP,之所以成为功能强大的服务器端程序是因为它为Web编程人员提供了一组功能强大的内置对象,通过这些内置对象,编程人员可以控制Web页面的各个方面。
2.1.2 经济可行性
鉴于次系统是毕业设计,所以本系统不需要多余的格外开发成本,硬件配置和软件配置环境家用机可完全胜任,所以在经济上是可行的。
2.1.3 操作可行性
本设计力求界面简单明了,操作简单,便于上手,使用户可以在最短的时间内熟练掌握各功能。所以在操作上是可行的。
2.1.4 时间可行性
从时间上看,在两个月的时间里学习相关知识,并开发网站,时间上是有点紧,但是不是不可能实现,通过两个多月的努力功能基本实现。
3.概要设计
功能模块的设计是整个系统设计的重要部分,它决定怎么实现系统的功能,不仅要求功能完善,而且还要界面友好,因此,对于一个成功的系统设计,功能模块的设计是关键。
3.1 数据库设计
目前流行的数据库管理系统有Oracle、Mysql DB2、Sybase、MS Access和Microsoft SQL Server等。Oracle和Mysql是性能卓越、稳定可靠的大型数据库管理系统,目前拥有较多的用户。 MS Access 是一种性能可靠、使用方便的小型数据库系统。一般而言,数据库是由特定的操作系统环境上的一个或者一组文件组成的,而数据库管理系统一般是由运行于用户计算机或网络上的远程计算机上面的一整套程序组成的。
根据对数据组织方式的不同,数据库系统分成关系数据库、层次数据库和网状数据库。目前常见的数据库系统上基本上都是关系型数据库系统。在关系型数据库系统中,数据被组织成为二维表格形式,表格中的每个数据行称为一条记录或直接称为行,每一个列有时被称为字段或直接称为列,通过指定行和列定位一个指定的数据项。
一个优秀的数据库系统应具备如下特征:
(1)最大限度的减少数据的重复存储(称为“冗余”),以减少存储空间的占用;
(2)尽可能地提高数据的查询(搜索)速度;
(3)提供灵活的数据组织和统计手段;
(4)保章数据的安全。
本系统采用的数据库是MySQL是一个关系型数据库管理系统 瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的SQL语言是用于访问数据库的最常用标准化语言。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。所有对数据库访问操作的管理信息系统都是根据用户的需求设计的,如果对数据库概念理解不深,那么设计出的数据库,不但访问速度慢,让用户不满意,而且还存在很多的重复数据,大量的浪费计算机资源。所以如何符合逻辑的有组织的设计好数据库,使数据库不仅容易维护,而且还让用户方便快捷的访问操作,这将是一个重点。因此,要设计好数据库,先了解一下关于数据库的基本概念是必要的。
3.2 建立数据库
现在管理数据库的工具是越来越多了 有了他们我们可是很方便的创建数据库删除数据库 还可以通过工具查看数据库的表的结构表中的字段数据进行数据库以及表的设计 极大地方便了我们 。不用再为创建数据库只有使用sql语句提供了方便.。
3.3建立数据库的任务
数据库设计实际上主要是所要处理的数据的表示方法和存储结构的设计。在采用数据库技术之前,这些工作分散在应用程序中进行;在采用数据库技术之后,这些工作可以通过数据库设计集中起来系统地进行。
上图可以看出,进行数据库设计的首要任务是考虑信息需求,也就是数据库要存入什么样的数据。创建数据库并不是仅仅为了存储数据,更主要的目的是从中提取有用的信息。除了考虑数据存储什么数据外,还应考虑存取方式,也就是处理需求。即要根据用户提出的存取要求来设计数据模式和应用程序。
3.4 建立数据库的方法
数据库设计方案应该是将用户需求充分融入其中的,所以同用户进行充分的接触和交流是比不可少的。就设计方法来说,应遵循以下几个步骤:
(1)确定该数据库中需要的表
(2)确定表中需要的字段
(3)明确有唯一值的字段
(4)确定表之间的关系
(5)优化设计
(6)输入数据并新建其他数据库对象
建立私人牙科诊所病例信息管理系统的数据库的操作步骤:
(1)打开企业管理器,在“数据库”上单击鼠标左键,之后在弹出的快捷菜单中选择“新建数据库”命令。保存并命名为“demo”。
(2)在企业管理器,选择“安全性”的“登录”选项单击右键选择“新建登录”创建用户。
(3)选择“demo”中的“表”单击右键弹出快捷菜单选择“新建表”命令,在显示的窗口中设置表中各个字段的名称、数据类型、长度和允许空等信息,并保存。
(4)选择用户信息表,单击鼠标右键。在弹出的快捷菜单中选择“打开表”然后选择“返回所有行”命令,在显示的窗口中输入表的信息,然后关闭窗口,完成在表中输入信息的工作。
这样名为demo的数据库就建成了,系统建立的数据库文件扩展名为.sql,文件主名是在database name编辑框中键入的数据库名称。
3.5 数据项和数据结构
用户身份,包括的数据项:用户身份ID号、用户身份名称
用户登录信息,包括的数据项有:用户名称、用户密码、用户身份、用户登录次数图3-2所示:
用户登录日志信息,包括的数据项有:日志记录编号、用户编号、登录时间、离开时间
3.6 建立数据表
在系统数据库设计中,数据表的设计是关键,如何根据系统要实现的功能合理地设计数据表,将关系到整个系统数据表的运行效率甚至整个系统的成败,在表设计中要注意遵循数据库计数的原则。
规范化逻辑数据库设计包括使用正规的方法来讲数据分为多个相关的表。拥有大量窄表(列较少的表)是规范化数据库的特征。而拥有少量宽表(列较多的表)是非规范化的特征。数据库表设计理论的基本原理是:每个表都应有一个惟一的行标识符,可以使用列或列集将任何单个记录同表中的所有其他记录去区别开来。每个表都应有一个ID列,任何两个记录都不可以共享同一ID值。作为表的唯一行标识符的一列或多列是表的主键。同是,表应只能存储单一类型实体的数据并且应避免可为空的列,更重要的是表不应有重复的值或列。
因为私人牙科诊所病例信息管理系统包括挂号信息管理、药品管理等模块,还有其他子模块构成,包括的数据比较多,每一个表都要确定主关键字。这样本系统所有的表结构都建成了。
表3-1 sysuser表
字段 | 字段名 | 数据类型 | 长度 | 说明 |
1 | id | Int | 4 | 编号 |
2 | uname | varchar | 50 | |
3 | upass | varchar | 50 | |
4 | tname | varchar | 50 | |
5 | sex | varchar | 50 | |
6 | birth | varchar | 50 | |
7 | tel | varchar | 50 | |
8 | ismarage | varchar | 50 | |
9 | addr | varchar | 50 | |
10 | | varchar | 50 | |
11 | idcard | varchar | 50 | |
12 | byschool | varchar | 50 | |
13 | utype | varchar | 50 | |
14 | dept | varchar | 50 |
表 3-2 notice信息表
字段 | 字段名 | 数据类型 | 长度 | 说明 |
1 | id | Int | 4 | 编号 |
2 | title | varchar | 50 | |
3 | note | varchar | 50 | |
4 | savetime | varchar | 50 |
表 3-3 zd信息表
字段 | 字段名 | 数据类型 | 长度 | 说明 |
1 | ghno | Int | 4 | 编号 |
2 | bg | varchar | 50 | |
3 | zd | varchar | 50 | |
4 | info | varchar | 50 | |
5 | numinfo | varchar | 50 | |
6 | oper | varchar | 50 | |
7 | savetime | varchar | 50 | |
8 | qystatus | varchar | 50 | |
9 | fkstatus | varchar | 50 | |
10 | totalprice | varchar | 50 | |
11 | sfoper | varchar | 50 | |
12 | sfsavetime | varchar | 50 | |
13 | fyoper | varchar | 50 | |
14 | fysavetime | varchar | 50 |
4. 详细设计
4.1 模块的设计
(1)管理员登录:包括用户名、密码 ,注册用户
实现管理员登陆界面的部分代码如下:
<title>私人牙科诊所病例管理系统 </title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<LINK href="admin/css/admin.css" type="text/css" rel="stylesheet">
</head>
<%
String message = (String)request.getAttribute("message");
if(message == null){
message = "";
}
if (!message.trim().equals("")){
out.println("<script language='javascript'>");
out.println("alert('"+message+"');");
out.println("</script>");
}
request.removeAttribute("message");
String code=yzm.getCheckCode();
%>
<body onload=document.f1.uname.focus();>
<form action="/srykzsblmis/studysite?ac=login" method="post" name="f1" onsubmit="return ck()">
<TABLE height="100%" cellSpacing=0 cellPadding=0 width="100%" bgColor=#002779
border=0>
<TR>
<TD align=middle>
<TABLE cellSpacing=0 cellPadding=0 width=468 border=0>
<TR>
<TD align="center"><font size="4" color="white"><b>私人牙科诊所病例管理系统 </b></font></TR>
<TR>
<TD><IMG height=147 src="admin/images/login_2.jpg"
width=468></TD></TR></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=468 bgColor=#ffffff border=0>
<TR>
<TD width=16><IMG height=122 src="admin/images/login_3.jpg"
width=16></TD>
<TD align=middle>
<TABLE cellSpacing=0 cellPadding=0 width=230 border=0>
<TR height=5>
<TD width=5></TD>
<TD width=56></TD>
<TD></TD></TR>
<TR height=36>
<TD></TD>
<TD>用户名</TD>
<TD><INPUT
style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid"
maxLength=30 size=24 name=uname></TD></TR>
<TR height=36>
<TD> </TD>
<TD>口 令</TD>
<TD><INPUT
style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid"
type=password maxLength=30 size=24 name=upass></TD></TR>
<TR >
<TD> </TD>
<TD>验证码</TD>
<TD><input type="text" style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid"
size="5" id="yzm" name="yzm" class=input onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
onkeyup="value=value.replace(/[\W]/g,'')"><%=code %></TD></TR>
<TR height=5>
<TD colSpan=3></TD></TR>
<TR>
<TD> </TD>
<TD> </TD>
<TD><INPUT type=image height=18 width=70
src="admin/images/bt_login.gif"></TD></TR></TABLE></TD>
(2)普通用户登录:只有合法的用户在输入正确的密码后方可进入系统,否则将提示密码或用户名输入错误,并询问用户是否重新输入
实现普通用户登录的部分代码如下:
<jsp:include page="top.jsp"></jsp:include>
<%HashMap user = (HashMap)session.getAttribute("user");
CommDAO dao = new CommDAO();
HashMap map = dao.select("select * from patient where id='"+user.get("id")+"' ").get(0);%>
<div style="margin-top:10px;text-align:center;">
<table width=800 border="0" cellpadding="0" cellspacing="0">
<tr height=320 bgcolor="#1FA9FE" style="color:white;font-weight:bold;">
<td align="center" width=110 bgcolor="#ECECED" valign="top" style="">
<jsp:include page="menu.jsp"></jsp:include>
</td>
<td align="center" bgcolor="white" style="padding-left:20px;padding-top:15px;color:Black;font-weight:normal;" valign="top">
<form action="/srykzsblmis/studysite?ac=userinfo&id=<%=map.get("id") %>" name="f1" method="post" onsubmit="return ck()">
<table border=0 style="font-size:12px">
<tr bgcolor="#ffffff">
<td width=130 >
登录名称:
</td>
<td width=570 align="left">
<input name="uname" type="text" id="uname" style="width:150px;" />
</td>
</tr>
<tr bgcolor="#ffffff">
<td >
登录密码:
</td>
<td align="left">
<input name="upass" type="password" id="upass" style="width:150px;" />
</td>
</tr>
<tr bgcolor="#ffffff">
<td >
重复密码:
</td>
<td align="left">
<input name="upass1" type="password" id="upass1" style="width:150px;" />
</td>
</tr>
<tr bgcolor="#ffffff">
<td>病人姓名</td>
<td><input type="text" id="tname" name="tname" size="5"/>*</td>
</tr>
<tr bgcolor="#ffffff">
<td>性别</td>
<td>
<select id="sex" name="sex">
<option value="男">男</option>
<option value="女">女</option>
</select>
</td>
</tr>
<tr bgcolor="#ffffff">
<td>年龄</td>
<td><input type="text" id="age" name="age" size="2"/>*</td>
</tr>
<tr bgcolor="#ffffff">
<td>身份证</td>
<td><input type="text" id="idcard" name="idcard" />*</td>
</tr>
<tr bgcolor="#ffffff">
<td>电话</td>
<td><input type="text" id="tel" name="tel" />*</td>
</tr>
<tr bgcolor="#ffffff">
<td>住址</td>
<td><input type="text" id="addr" name="addr" />*</td>
</tr>
<tr height=60>
<td align="center" colspan="2">
<input type="submit" value="提交">
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
<div style="margin-top:10px;height:1px;background-color:#1FA9FE;text-align:center;width:800px;">
</div>
</div>
<jsp:include page="foot.jsp"></jsp:include>
</center>
<script type="text/javascript">
function ck(){
if(f1.upass.value==""){
alert("密码不能为空");
return false;
}if(f1.upass1.value==""){
alert("再次输入密码");
return false;
}if(f1.upass1.value!=f1.upass.value){
alert("两次密码不一致");
return false;
}if(f1.tname.value==""){
alert("姓名不能为空");
return false;
}if(f1.sex.value==""){
alert("性别不能为空");
return false;
}if(f1.idcard.value==""){
alert("身份证不能为空");
return false;
}
}
<%
String suc = (String)request.getAttribute("suc");
String no = (String)request.getAttribute("no");
if(no!=null)
{
%>
alert("已存在的用户名");
<%}
if(suc!=null)
{
%>
alert("修改成功");
location.replace("/srykzsblmis/userinfo.jsp");
<%}%>
</script>
</body>
</html>
<%=Info.tform(map)%>
用户注册包括用户名、登录密码、密码确认,
实现用户注册的部分代码如下:
<title>私人牙科诊所病例管理系统</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<STYLE type=text/css>
BODY
{
padding-right: 0px;
padding-left: 0px;
padding-bottom: 0px;
margin: 0px;
padding-top: 0px;
font-size: 12px;
}
.STYLE2 {
FONT-SIZE: 12px
}
.STYLE3 {
FONT-WEIGHT: bold
}
.style7 {
FONT-FAMILY: "黑体", "方正美黑简体", "华文细黑"; COLOR: #646464; FONT-SIZE: 18px
}
BODY {
BACKGROUND-IMAGE: url(img/lbg.gif); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 12px; PADDING-TOP: 0px
}
.tb {
WIDTH: 926px
}
.td2 {
TEXT-ALIGN: left; PADDING-LEFT: 80px; BACKGROUND-REPEAT: no-repeat; HEIGHT: 100%
}
.txtBox {
BORDER-BOTTOM: #e7ad01 1px solid; BORDER-LEFT: #e7ad01 1px solid; WIDTH: 130px; HEIGHT: 20px; COLOR: #000000; FONT-SIZE: 13px; BORDER-TOP: #e7ad01 1px solid; BORDER-RIGHT: #e7ad01 1px solid
}
#div1 {
}
#diqu {
TEXT-ALIGN: center; WIDTH: 588px; BACKGROUND: url(images/2009_index_04.gif) no-repeat; COLOR: #2e466f
}
#diqu A {
COLOR: #2e466f
}
.pageWidth {
TEXT-ALIGN: left; MARGIN: 0px auto; WIDTH: 850px; BACKGROUND: #ffffff
}
#nav {
PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 1em 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 16px; FONT-WEIGHT: 200; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px
}
#nav LI {
FONT-FAMILY: "宋体"; FLOAT: left; FONT-SIZE: 14px; MARGIN-RIGHT: 1px
}
#nav LI A {
TEXT-ALIGN: center; LINE-HEIGHT: 35px; MARGIN: 0em 0px 0px; WIDTH: 120.5px; DISPLAY: block; BACKGROUND: #f6ad79; COLOR: #000000; FONT-SIZE: 14px; TEXT-DECORATION: none; PADDING-TOP: 5px
}
.bi:hover SPAN {
TEXT-ALIGN: center; LINE-HEIGHT: 35px; MARGIN: 0em 0px 0px; WIDTH: 120.5px; DISPLAY: block; BACKGROUND: #f6ad79; COLOR: #000000; FONT-SIZE: 14px; TEXT-DECORATION: none; PADDING-TOP: 5px
}
#nav LI A:hover {
BACKGROUND: #dc3e0b; COLOR: #ffffff; FONT-SIZE: 14px; CURSOR: hand; PADDING-TOP: 0px
}
.bi:hover SPAN {
BACKGROUND: #dc3e0b; COLOR: #ffffff; FONT-SIZE: 14px; CURSOR: hand; PADDING-TOP: 0px
}
.bi:hover SPAN {
PADDING-TOP: 5px
}
.la {
COLOR: #044a8e; TEXT-DECORATION: none
}
.la:hover {
TEXT-DECORATION: underline
}
</STYLE>
<LINK rel=stylesheet type=text/css href="/frontfile/css.css">
</head>
<body>
<jsp:include page="top.jsp"></jsp:include>
<div style="margin-top:10px;text-align:center;">
<table width=800 border="0" cellpadding="0" cellspacing="0">
<tr height=320 bgcolor="#1FA9FE" style="color:white;font-weight:bold;">
<td align="center" width=800 bgcolor="#ECECED" valign="top" style="">
<div style="margin-left:20px;font-size:16px;font-weight:bold;color:#044A8E;margin-top:20px;text-align:center;">
用户注册
</div>
<hr>
<div style="font-size:12px;color:#044A8E;margin-top:20px;text-align:center;font-weight:normal;">
<form action="/srykzsblmis/studysite?ac=regedit" name="f1" method="post">
<table border=0 width=700 style="font-size:12px">
<tr bgcolor="#ffffff">
<td width=130 >
登录名称:
</td>
<td width=570 align="left">
<input name="uname" type="text" id="uname" style="width:150px;" />
</td>
</tr>
<tr bgcolor="#ffffff">
<td >
登录密码:
</td>
<td align="left">
<input name="upass" type="password" id="upass" style="width:150px;" />
</td>
</tr>
<tr bgcolor="#ffffff">
<td >
重复密码:
</td>
<td align="left">
<input name="upass1" type="password" id="upass1" style="width:150px;" />
</td>
</tr>
<tr bgcolor="#ffffff">
<td>病人姓名</td>
<td><input type="text" id="tname" name="tname" size="5"/>*</td>
</tr>
<tr bgcolor="#ffffff">
<td>性别</td>
<td>
<select id="sex" name="sex">
<option value="男">男</option>
<option value="女">女</option>
</select>
</td>
</tr>
<tr bgcolor="#ffffff">
<td>年龄</td>
<td><input type="text" id="age" name="age" size="2"/>*</td>
</tr>
<tr bgcolor="#ffffff">
<td>身份证</td>
<td><input type="text" id="idcard" name="idcard" />*</td>
</tr>
<tr bgcolor="#ffffff">
<td>电话</td>
<td><input type="text" id="tel" name="tel" />*</td>
</tr>
<tr bgcolor="#ffffff">
<td>住址</td>
<td><input type="text" id="addr" name="addr" />*</td>
</tr>
<tr height=60>
<td align="center" colspan="2">
<img src="images/reg.png" border="0" onclick="ck()"/>
</td>
</tr>
</table>
</form>
</div>
</td>
</tr>
</table>
<div style="margin-top:10px;height:1px;background-color:#1FA9FE;text-align:center;width:800px;">
</div>
</div>
<jsp:include page="foot.jsp"></jsp:include>
<script type="text/javascript">
function ck(){
if(f1.uname.value==""){
alert("用户名不能为空");
return false;
}if(f1.upass.value==""){
alert("密码不能为空");
return false;
}if(f1.upass1.value==""){
alert("再次输入密码");
return false;
}if(f1.upass1.value!=f1.upass.value){
alert("两次密码不一致");
return false;
}if(f1.tname.value==""){
alert("姓名不能为空");
return false;
}if(f1.sex.value==""){
alert("性别不能为空");
return false;
}if(f1.idcard.value==""){
alert("身份证不能为空");
return false;
}else{
f1.submit();
}
系统管理模块是私人牙科诊所病例信息管理系统中一个基础的部分,在本模块中包括管理员对自身密码的重新设置,可以定时更换密码,确保资料的安全;同时还有登陆日志模块,记录每一次登陆信息,如果出现特殊情况,可以查询登陆日志查询,增加了系统的安全性和保密性,便于控制和管理
实现系统界面的部分代码如下:
//添加科室
if(ac.equals("deptadd")){
String deptname = request.getParameter("deptname");
String tel = request.getParameter("tel");
String addr = request.getParameter("addr");
String delstatus = "0";
String sql = "insert into dept (deptname,tel,addr,delstatus) values('"+deptname+"','"+tel+"','"+addr+"','"+delstatus+"')";
dao.commOper(sql);
request.setAttribute("suc", "");
go("/admin/deptadd.jsp", request, response);
}
//修改科室
if(ac.equals("deptedit")){
String id = request.getParameter("id");
String tel = request.getParameter("tel");
String addr = request.getParameter("addr");
String deptname = request.getParameter("deptname");
String sql = "update dept set deptname='"+deptname+"',tel='"+tel+"',addr='"+addr+"' where id= "+id;
dao.commOper(sql);
request.setAttribute("suc", "");
go("/admin/deptadd.jsp", request, response);
}
//添加药品、处置
if(ac.equals("ypcfadd")){
String yno = request.getParameter("yno");
String cksql = "select * from ypcf where yno='"+yno+"'";
ArrayList cklist = (ArrayList)dao.select(cksql);
if(cklist.size()!=0){
request.getParameter("no");
go("/admin/ypcfadd.jsp", request, response);
}else{
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 delstatus = "0";
String sql = "insert into ypcf (yno,yname,gg,price,company,delstatus,type)values('"+yno+"','"+yname+"','"+gg+"','"+price+"','"+company+"','"+delstatus+"','"+type+"')";
dao.commOper(sql);
request.setAttribute("suc", "");
go("/admin/ypcfadd.jsp", request, response);
4.1.4 挂号管理模块
挂号管理模块是私人牙科诊所病例信息管理系统中一个部分,本模块主要实现后台管理,包括添加、删除、修改,患者挂号添加功能
4.1.5病例管理模块
医生可以对病人病例信息进行管理,在本模块中包括所有患者的信息的添加、删除、修改,增加患者
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现