软件设计作业:医院患者管理系统详细设计.doc
医院患者管理系统详细设计医院患者管理系统详细设计1.导言导言1.1 目的目的该文档的目的是描述医院患者挂你系统系统项目的详细设计,其主要内容包括:·系统功能简介;·系统详细设计简述;·各个模块的三层划分;本文档的预期的读者是:·开发人员;·项目管理人员;·测试人员。1.2 范围范围该文档定义了系统的各个模块和模块接口,但未确定单位的具体实现,这部分内容将在程序实现中确定。1.3 编写说明编写说明JSP:Java Server Page(Java 服务器页面)的缩写,一个脚本化的语言。MVC:Model-View-Control(模式视图控制)的缩写,表示一个三层的结构体系。1.4 术语定义术语定义Struct:一种框架体系结构。1.6 版本更新信息版本更新信息本文档版更新记录如表 31 所列。表 C-1 版本更新记录修改编号修改日期修改后版本修改位置修改内容概述0002010.6.21.0全部初始发布版本2.系统设计概述系统设计概述根据宠物医院患者管理系统系统的概要设计,本系统按照功能分解,可以分为客户端子系统和管理端子系统。它们的关系如图 3-1 所示,以下将对各个部分分别进行详细设计。图 3-1 系统结构图3. 详细设计概述详细设计概述由于本系统采用了基于 struct 体系结构的设计,即 MVC 的三层设计模式,并采用面向对象的 Java 语言以及 JSP 的脚本语言实现。在整个开发过程中,尽可能采用复用的原则,例如采用标签库,统一数据库的基本操作,统一结果显示等。本文档的详细设计主要地按照 struct 的 MVC 的三个层次分别编制视图层、控制层和模型层模块的伪代码,为下一步的编码提供基础。伪代码(Pseudocode)是一种算法描述语言。使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言实现。因此,伪代码必须结构清晰,代码简单,可主动性好,并且类似自然语言。4 客户端模块设计客户端模块设计客户端运行在公用网上,患者者可以查看可预约医生的信息信息。当患者希望预约某位医生时,填写自己的基本信息,后完成预约。预约信息提交后可以查看自己的预约信息。客户端的页面设计如表 3-1 所列。表 3-1 客户端的页面设计界面JSP功能描述主页面main.jsp客户端的主页面患者注册(宠物)register.jsp患者完成注册兽医信息getDoctorInfo.jsp显示某兽医信息病例信息getHistory.jsp显示自己的病例信息登录login.jsp患者登录取消预约cancleAppointment.jsp患者取消预约主治医生信息getCurrentDoctorInfo.jsp显示患者的主治医生信息登出logout.jsp患者用户注销代码示例:4.1 患者预约宠物医院患者管理系统预约登录“;elseint m=patient.makeAppointment(did,day,ap);switch(m)case 1:_makeAppointment=“预约成功“;break;case 0:_makeAppointment=“一般异常“;break;case -1:_makeAppointment=“数据库异常“;break;case -2:_makeAppointment=“已预约“;break;case -3:_makeAppointment=“输入信息有误“;break;%>4.2 查询病例查询病例医院患者管理系统病历查询登录“;elseint g=patient.getHistory();switch(g)case 1:_getHistory=“查询成功“;rs=patient.getResultSet();break;case 0:_getHistory=“一般异常“;break;case -1:_getHistory=“数据库异常“;break;%>医生编号症状诊断处方治疗是否结束治疗开始时间治疗结束时间5 管理员端模块设计管理员端模块设计界面JSP功能描述主页面main.jsp客户端的主页面患者(宠物)注册register.jsp患者完成注册兽医信息getDoctorInfo.jsp显示某兽医信息病例信息getHistory.jsp显示自己的病例信息登录login.jsp患者登录取消预约cancleAppointment.jsp患者取消预约兽医信息getCurrentDoctorInfo.jsp显示患者的兽医生信息登出logout.jsp患者用户注销6 医生端模块设计医生端模块设计界面JSP功能描述主页面main.jsp医生端的主页面患者病例getPatientHistory.jsp患者完成注册预约患者信息getPatientInQueue.jsp查询预约患者信息病例信息getHistory.jsp显示自己的病例信息登录login.jsp患者登录修改病历updateHistory.jsp修改病历信息更改密码updatePassword.jsp医生修改密码登出logout.jsp患者用户注销7 数据库的基本操作数据库的基本操作所有的模块都需要进行数据库的操作,应该有一个通用的、高质量的数据库操作模块,其实所有的模型层的模块也都在调用这个模块。8 .配置文件配置文件1.使用的是 j2EE 所以必有 web.xml2.使用使用 Struts 技术,并且使用分发 Action 技术,即 SwitchAction,所以struts 的 配 置文件有 5 个.struts-config.xmlstruts-config-admin.xmlstruts-config-departmentchoose.xmlstruts-config-login.xmlstruts-config-teacher.xml3.使用 Spring 技术,所以有文件 applicationContext.xml5.1 web.xml 配置文件医院患者管理系统编码医院患者管理系统编码实现实现1.编码格式规范编码格式规范1.11.1 缩进排版4 个空格作为缩进排版的一个单位。1.2 行工度尽量避免一行的长度超过 80 个字符,用于文档中的例子应该使用更短的行长,长度一般不超过 70 个字符。1.31.3 空行空行将逻辑相关的代码段分隔开,以提高可读性。下列情况应该总是使用两个空行:·一个源文件的两个片段(section)之间;·类声明和接口声明之间。下列情况应该总是使用一个空行:·两个方法之间;·方法内的局部变量和方法的第一条语句之间;·块注释或单行注释之前;·一个方法内的两个逻辑段之间,用以提高可读性。2.命名规范命名规范命名规范使程序更易读,从而更易于理解。它们也可以提供一些有关标识符功能的信息,以助于理解代码。2.1 包(Packages) Hospital.admin.模块名.功能 本次写的内容2.2 类(Classes)类名是一个名词,采用大小写混合的方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像URL,HTML) 。2.3 接口(Interfaces)大小写规则与类名相似。2.4 方法(Methods)方法名是一个动词,采用大小写混合的方式,第一个单词的首字母大写,其后单词的首字母大写。2.5 变量(Variabies)采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。变量名应简短且富于描述。变量名的选用应该易于记忆,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为 i, j, k, m 和 n,它们一般用于整形;c, d, e,它们一般用于字符型。3.声明规范声明规范3.1 每行声明变量的数量推荐一行一个声明,因为这样以利于写注释。亦即:Int leve1;/indentation leve1Int size;/size of table4.目录规范目录规范开发环境是 MyEclipse,开发之后的代码需要部署到 Tomcat 服务器环境上。所以开发环境的目录结构与运行环境的目录结构是一致的,只是在部署的运行环境中,可以不设置源代码的目录5.代码实例代码实例5.1 添加医生账户医院患者管理系统系统添加医生帐户请先登录“;elseif(request.getParameter(“add“)!=null)age=Integer.parseInt(request.getParameter(“age“);name=request.getParameter(“name“);sex=Integer.parseInt(request.getParameter(“sex“);did=request.getParameter(“did“);level=request.getParameter(“level“);section=request.getParameter(“section“);spe=request.getParameter(“spe“);spt=request.getParameter(“spDay“);phone=request.getParameter(“phone“);tryspDays=Util.parseSpDays(spt);catch(NumberFormatException nfe)_addDoctor=“非法输入“;int a=admin.addDoctor(did,name,age,sex,level,spe,spDays,phone,section);switch(a)case 1:_addDoctor=“插入成功“;break;case 0:_addDoctor=“一般异常“;break;case -1:_addDoctor=“数据库异常“;break;case -2:_addDoctor=“医生已存在“;break;%>编号:姓名:年龄:性别(0-男性,1-女性):职称:特长:电话:科室:预约信息(14 个整数,分别表示周日上午、周日下午、周一上午,以逗号分隔):5.2 修改患者病例信息修改患者病例信息医院患者管理系统更改病历登录“;/return;ResultSet rs=null;int hid=Integer.parseInt(request.getParameter(“hid“);doctor.getPatientHistory(hid);rs=doctor.getResultSet();rs.next();if(request.getParameter(“update“)!=null)String description=request.getParameter(“description“);String diagnose=request.getParameter(“diagnose“);String rx=request.getParameter(“rx“);int u=doctor.updateHistory(hid,description,rx,diagnose);switch(u)case 1:_updateHistory=“修改成功“;break;case 0:_updateHistory=“一般异常“;break;case -1:_updateHistory=“数据库异常“;break;case -2:_updateHistory=“非法 HID 值或无权更改该病人病历“;break;%>&update=true“ method=“POST“>症状:“/>诊断:“/>处方:“/>