医院挂号管理系统的开发和设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

管理系信息管理综合实训报告
课程名称信息管理综合实训
专业班级 14级信息管理与信息系统班
选题医院挂号系统
成绩
201X年
(3)
1 需求分析 (4)
1.1 应用背景 (4)
1.2医院挂号管理信息系统简介 (5)
1.3设计目标 (5)
2 系统的开发环境及技术简介 (6)
2.1 系统开发环境 (6)
2.1.1 MyEclipse (6)
2.1.2 数据库简介 (6)
2.1.3 Tomcat (7)
2.2系统开发的思想与技术 (7)
2.2.1JSP技术与MVC模式以及系统的基本框架 (7)
2.2.2 S.S.H框架的优点 (8)
3 系统概要设计 (12)
3.1 总体功能模块 (12)
3.2系统管理员功能模块 (12)
3.3挂号管理员的功能模块 (13)
3.4医生的功能模块 (13)
3.7病人的功能模块 (14)
3.8 系统业务描述 (14)
3.9 程序流程图 (15)
4系统详细设计与实现 (16)
4.1系统和数据库的配置 (16)
4.2概念模型设计 (16)
4.3数据库逻辑模型 (18)
4.4数据库表结构 (18)
4.5平台数据表的设计 (19)
5系统功能实现 (23)
5.1程序的类图 (23)
5.1.1病历Bingli类图 (23)
5.1.2科室Keshi类图 (24)
5.1.3用户User类图 (25)
5.2程序的时序图 (27)
5.2.1科室模块时序图 (27)
5.2.2 用户模块时序图 (28)
5.3系统功能实现的主要框架 (28)
5.3.1 SSH框架 (28)
5.3.2 hibernate配置文件 (28)
5.3.3 struts配置文件 (30)
5.3.4 spring配置文件 (30)
5.4系统功能实现的主要模块 (32)
5.4.1 登陆页面 (32)
5.4.2 用户管理主页面 (34)
6系统的调试与测试 (35)
6.1软件测试的目的 (35)
6.2软件测试的任务 (36)
6.3测试环境 (36)
6.4测试环境的配置 (37)
6.4.1 创建安装项目 (37)
6.4.2 添加项目输出 (38)
6.4.3 运行项目 (40)
参考文献 (41)
课程设计编写分工 (42)
1 需求分析
1.1 应用背景
随着互联网的发展,网络用户的数量直线上升,网络的应用已经广泛深入到人们的日常生活中,网络的广泛应用,也给医药界到来庞大的发展生机。

在过去几年,国外的医院都开始与互联网公司合作,形成医患系统,将病人的信息电子化,方便保存,方便取出使用。

并且还开发了新的医疗信息化医疗平台,让医生和患者不见面也能了解病人的发展状况,并可以为其远程治疗。

国内的这些应用还不是很成熟,但是国内大部分大型医院已开通网上挂号系统,系统已经初步具备了标准化,管理的制度化、使用方便化等优点,服务于全国各地,为广大患者提供了良好的就医条件。

门诊挂号,是病人去医院看病的第一个步骤,挂到一个满意的号是病人得到医疗服务的前提,如今,看病挂号困难已经成为了多数患者的普遍感受。

现在一些大医院,门诊拥挤成为一种普遍现象,某些热门科室,经常会出现“一号难求”、“专家号难求”,一些路途较远的病人,不能及时挂号看病,导致病情加重;一些人利用医院管理的漏洞,倒买倒卖“专家号”从中获利,这不仅损害了病人的切身利益,也给医院的管理和形象带来了很大的影响。

医院可以通过开通网上预约挂号来缓解以上情况。

患者只需在家中点几下鼠标,就可以挂上满意的号,做到了足不出户选医生,有效地缓解了病人排队挂号的时间。

国内先有周琳等人开展了对预约挂号系统的研究,昆山市中医院实名制预约挂号的经验、施行的措施和效果被陆振华等人给总结了,并为其它医院提供了经验参考。

刘力松等人对北京市一些大医院所推行的门诊预约挂号系统的使用情况也发表文章予以了评价和分析。

目前可以说,门诊预约挂号是一种对患者而言最人性化的服务举措,它比窗口挂号的优势在于优化了就诊流程,节约了患者时间和金钱花费。

江苏省江阴市人民医院实施的网上预约挂号以患者为中心,大大缩短了患者的就诊时间,医院的经济效益和社会营销获得了双丰收。

张雪梅等人指出了预约挂号存在的问题,这些问题突出地表现在缺乏科学组织、缺乏医院引导,医院服务方式被动等方面。

总之,目前网上预约挂号这一新的预约形式无论就其使用现状,还是应用技术来看,还有待进行普及和完善,可见,网上预约挂号系统的发展之路还是漫长而崎岖的。

但是在它发展的同时有关于它的一些规章制度也在完善,它的发展前景还是十分可观的,在规章制度的约束下,它会让医疗事业更
上一个台阶的
1.2医院挂号管理信息系统简介
医院预约挂号系统是以病人为中心开展医疗服务的重要改革措施,对于方便群众就医、提高医疗服务水平具有重大意义。

医院施行预约诊疗服务,有利于患者进行就医咨询,提前安排就医计划,减少候诊时间,也有利于医院提升管理水平,提高工作效率和医疗质量,降低医疗安全风险。

当前,国内有许多实施预约诊疗服务的医院,以及从事相关服务的公司,但在系统的标准化、管理的制度化、使用的方便化等许多方面都存在缺陷,甚至部分个人或团体以此作为巨额利润的源泉。

为此,预约诊疗服务不仅没有方便病人就诊、提升医院管理水平,相反,还为许多病人和医院工作者所反感。

为了规范和推动预约诊疗服务,卫生部日前在其官方网站发布了《关于在公立医院施行预约诊疗服务工作的意见(征求意见稿)》,要求在推动医院开展预约诊疗工作的同时,提高对预约诊疗服务工作的认识、加强对预约诊疗服务工作的管理、并认真做好相关组织工作。

医院预约挂号系统包含电脑上网、手机上网、自助预约等多种预约渠道,患者可根据自身习惯,选择任何一种渠道完成预约操作
1.3设计目标
(1)如何从技术层面能保证实现网络环境下患者-医院门诊,医院门诊-患者的实时交流,怎样有效改善患者对医院的就诊流程,为患者提供好的、高效便捷的了解医院和医师的技术平台,增加患者挂号的便捷性和准确性,减少就诊挂号的盲目性;
(2)门诊患者信息库与医生工作站系统如何通过信息技术手段进行连接;
(3)医院门诊专家信息库如何与医院人事管理系统对接以及如何实现医院专家基本信息的管理规范化,在提供专家信息的同时保护信息的真实性;
(4)如何实现网上预约知名专家,安排预约时间段,使患者足不出户即能挂号预约,减少患者的挂号待时间,改善就诊环境,为医院和患者既提供一个良好的治疗环境也为病人提供一个良好的等待治疗的环境,使医患双方都满意。

(5)如何对挂号的相关数据进行总结和分析,为医生和病人提供有价值的数据,使病人找到适合的就诊医生,使医生也能发挥所长,接受自己擅长治疗的病人。

2 系统的开发环境及技术简介
2.1 系统开发环境
2.1.1 MyEclipse
在开发本平台中所用到的开发工具就是知名的java项目开发工具MyEclipse。

MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的一种扩展,利用MyEclipse,我们可以在数据库和J2EE的开发、发布,以及在应用程序服务器的整合当中极大地提高系统的工作效率。

MyEclipse是一个功能非常丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。

在结构上,MyEclipse的特征可以被分为7类: J2EE模型,WEB开发工具,EJB开发工具,应用程序服务器的连接器,J2EE项目部署服务,数据库服务,MyEclipse整合帮助。

对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。

MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。

简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。

2.1.2 数据库简介
数据库使用的是MySQL开源数据库。

MySQL的特性:使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。

支持AIX、FreeBSD、HP-UX、Mac OS、OpenBSD、OS/2 Wrap、
Solaris、Windows等多种操作系统。

为多种编程语言提供API。

这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。

支持多线程充分利用CPU资源。

优化的SQL查询算法,有效地提高查询速度。

既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。

提供TCP/IP、ODBC和JDBC等多种数据库连接途径。

提供用于管理、检查、优化数据库操作的管理工具。

可以处理拥有上千万条记录的大型数据库。

MySQL的应用:与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。

对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体成本。

2.1.3 Tomcat
Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。

Tomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。

实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

这里的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。

另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。

2.2系统开发的思想与技术
2.2.1JSP技术与MVC模式以及系统的基本框架
本系统采用jsp技术,基于MVC模式开发,使用SSH框架(struts2、spring、
hibernate)来增加系统的开发速度。

所谓的MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。

程序就是用struts2和hibernate这两个框架来实现模型层和控制器这两层,jsp实现视图这一层。

一般来说程序就是在数据库和页面之间起桥梁作用的,jsp页面请求先到action,再到dao,再回到action,回到jsp页面,action主要处理来自页面的请求,dao主要是和数据库的交互,struts2主要用在action,处理来自页面的请求,处理完请求后跳转回页面。

Hibernate主要用在dao,包括对数据库的增、删、改、查的操作,spring控制程序的流程。

2.2.2 S.S.H框架的优点
S.S.H框架是J2EE应用中struts2+spring+hibernate三大免费开源框架的结合使用,它可以看成工具,也是中间件。

他是用来提高我们的开发效率,提高我们软件产品的可维护性、可扩展性乃至敏捷性的。

他们里面有很多优秀的设计理念及模式应用。

比如,struts属于MVC框架,关键是要了解MVC的概念及大致原理;而hibernate属于ORM系统,属于持久层的解决方案,同样需要对ORM 的概念及原理有一个总体的了解。

而spring属于应用程序框架,其核心是IOC 容器以及AOP,Spring中还集成了很多适用东西,比如对JDBC的封装、自己的MVC、对动态语言的简洁访问等,
它由以下3个框架构成:
1.Struts2框架
Struts2是Apache组织的一个开放源码项目。

Struts2是一个比较好的MVC 框架,提供了对开发MVC系统的底层支持,它采用的主要技术是Servlet,JSP 和Custom tag library。

其基本构成如图2.1所示。

图2.1 Struts框架工作流程
2.Spring框架
Spring 的核心是个轻量级(Lightweight)的容器(Container),它是实现IoC(Inversion of Control)容器、非侵入性(No intrusive)的框架,并提供AOP(Aspect-oriented programming)概念的实现方式,提供对持久层(Persistence)、事务(Transaction)的支持,提供MVC Web 框架的实现,并对一些常用的企业服务API(Application Interface)提供一致的模型封装,是一个全方位的应用程序框架(Application framework),除此之外,对于现存的各种框架(Struts、JSF、Hibernate 等),Spring 也提供了与它们相整合的方案。

Spring框架由以下7个部分组成
图2.2 Spring框架构成
3.Hibernate框架
Hibernate 是一个开放源码的 ORM 持久层框架。

作为优秀的持久层框架实现,Hibernate 框架提供了强大、高性能的对象到关系型数据库的持久化服务,开发人员可以使用面向对象的设计进行持久层开发。

简单的说,Hibernate 只是一个将持久化类与数据库表相映射的工具,每个持久化类实例均对应于数据库表中的一个数据行而已。

用户只需直接使用面向对象的方法操作此持久化类实例,即可完成对数据库表数据的插入、删除、修改、读取等操作。

3 系统概要设计
3.1 总体功能模块
本系统分系统管理员、挂号管理员、医生坐诊登录和病人4个用户权限。

总功能图如图3-1所示。

c
图3-1.系统功能模块图
3.2系统管理员功能模块
系统管理员的主要功能有用户管理、科室管理、医生信息管理、病人账户管理。

系统管理员功能图如下所示
图3-2.系统管理员功能图
3.3挂号管理员的功能模块
挂号管理员的主要功能有普通门诊挂号、专家门诊挂号、挂号单查询。

挂号管理员的功能图如图3-3所示
图3-3.挂号管理员的功能图
3.4医生的功能模块
医生的主要功能有诊断管理(病情诊断、医嘱)、修改密码。

医生的功能图如图3-6所示
图3-6.医生的功能图
3.7病人的功能模块
病人的主要功能有病历单查询,修改密码。

病人的功能图如图3-7所示
图3-7.病人的功能图
3.8 系统业务描述
本系统分系统管理员、挂号管理员、医生和病人4个用户权限。

系统管
理员的主要功能有用户管理、科室管理、医生信息管理、病人账户管理;挂号管
病历单查询 病人 修改密码
理员的主要功能有普通门诊挂号、专家门诊挂号、挂号单查询;医生的主要功能有病例信息管理,修改密码;病人的主要功能有修改密码、病历单查询。

3.9 程序流程图
用户登录流程图
4系统详细设计与实现
4.1系统和数据库的配置
系统按通用的B/S(浏览器、服务器)模式进行设计(如图4-1)
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。

合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。

4.2概念模型设计
概念模型设计的典型方法是用E-R图方法,即用实体-联系模型表示。

E-R 方法是用E-R图来描述显示世界,E-R图包含三个基本成分:实体、联系、属性。

它直观易懂,能够比较准确地反映现实世界的信息联系,从概念上表示一个数据库的信息组织情况。

(1)t_bingli病例实体图如下
图4.2病例实体图(2)t_keshi科室实体图
图4.3科室实体图(3)t_user用户实体图
图4.4用户实体图
4.3数据库逻辑模型
(1)病历表(主键、是否删除标志、添加时间、电话、籍贯、挂号编号、姓名、年龄、性别、关联的科室ID、关联的医生ID、挂号费、身份证、挂号类型、病情诊断、病情描述、医嘱)
(2)科室表(主键、可是编号、是否删除标志、科室名)
(3)用户表(主键、添加时间、联系方式、密码、用户权限、真实姓名、是否删除标志、用户名、职务、级别、关联的科室ID)
4.4数据库表结构
4.5平台数据表的设计
根据平台的需求分析和功能模块的划分,定义数据库主要包含3张表:病历表t_bingli,科室表t_keshi,用户表t_user。

(1)病历表t_bingli
建表的sql语句为:
CREATE TABLE `t_bingli` (
`id` int(11) NOT NULL auto_increment,
`binglilock` int(11) NOT NULL,
`bingqin` varchar(255) default NULL,
`createtime` datetime default NULL,
`dianhua` varchar(255) default NULL,
`guahaofei` varchar(255) default NULL,
`jiguan` varchar(255) default NULL,
`leixing` varchar(255) default NULL,
`menzhenbianhao` varchar(255) default NULL,
`miaosu` varchar(255) default NULL,
`name` varchar(255) default NULL,
`nianling` varchar(255) default NULL,
`sfz` varchar(255) default NULL,
`xingbie` varchar(255) default NULL,
`yizhu` varchar(255) default NULL,
`keshiid` int(11) default NULL,
`yishengid` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `FK2A136008CBEF9A95` (`keshiid`),
KEY `FK2A1360086C567579` (`yishengid`),
CONSTRAINT `FK2A1360086C567579` FOREIGN KEY (`yishengid`) REFERENCES
`t_user` (`id`),
CONSTRAINT `FK2A136008CBEF9A95` FOREIGN KEY (`keshiid`) REFERENCES `t_keshi` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(2)科室表t_keshi
建表的sql语句为:
CREATE TABLE `t_keshi` (
`id` int(11) NOT NULL auto_increment,
`bianhao` varchar(255) default NULL,
`keshilock` int(11) NOT NULL,
`name` varchar(255) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(3)用户表t_user
建表的sql语句为:
CREATE TABLE `t_user` (
`id` int(11) NOT NULL auto_increment,
`createtime` datetime default NULL,
`jibie` varchar(255) default NULL,
`lianxifangshi` varchar(255) default NULL,
`password` varchar(255) default NULL,
`role` int(11) NOT NULL,
`truename` varchar(255) default NULL,
`userlock` int(11) NOT NULL,
`username` varchar(255) default NULL,
`zhiwu` varchar(255) default NULL,
`keshiid` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `FKCB5540D6CBEF9A95` (`keshiid`),
CONSTRAINT `FKCB5540D6CBEF9A95` FOREIGN KEY (`keshiid`) REFERENCES `t_keshi` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
5系统功能实现5.1程序的类图
5.1.1病历Bingli类图
对应的程序代码:
public class Bingli {
@Id
@GeneratedValue
private int id;
private int binglilock;
private String name;//姓名
private String sfz;//身份证
private String xingbie;//性别
private String nianling;//年龄
private String menzhenbianhao;//挂号编号
private Date createtime;//日期
@ManyToOne
@JoinColumn(name="keshiid")
private Keshi keshi;//科室
@ManyToOne
@JoinColumn(name="yishengid")
private User yisheng;//主治医生
private String dianhua;//电话
private String jiguan;//籍贯
private String guahaofei;//挂号费
private String leixing;//普通挂号专家挂号private String miaosu;//病人病情描述
private String bingqin;//病情诊断
private String yizhu;//医嘱
5.1.2科室Keshi类图
对应的代码:
public class Keshi {
@Id
@GeneratedValue
private int id;
private int keshilock;
private String name;//科室名
private String bianhao;//科室编号5.1.3用户User类图
对应的代码:
public class User {
@Id
@GeneratedValue
private int id;
private String username;//用户名
private String password;//密码
private Date createtime;
private int role;//1表示管理员,2表示挂号管理员,,3表示主治医生,4表示病人,5表示检查化验处,6表示药房处
private String truename;//真实姓名
private String lianxifangshi;//联系方式
private int userlock;//是否删除的标志,0表示未删除,1表示删除
private String zhiwu;//职务
private String jibie;//医生级别
@ManyToOne
@JoinColumn(name="keshiid")
private Keshi keshi;
5.2程序的时序图5.2.1科室模块时序图
5.2.2 用户模块时序图
5.3系统功能实现的主要框架
5.3.1 SSH框架
SSH框架就是struts2,spring,hibernate的简称,运用3个框架的集成协作使用,可以有效的提高代码编写的效率,从而有效的降低程序开发的周期。

5.3.2 hibernate配置文件
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="proxool.pool_alias">DBPool</property>
<property name="proxool.xml">proxool.xml</property>
<property name="connection.provider_class">
org.hibernate.connection.ProxoolConnectionProvider </property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property
name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management --> <property
name="current_session_context_class">thread</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping class="er"/>
<mapping class="yiyuan.model.Keshi"/>
<mapping class="yiyuan.model.Bingli"/>
<mapping class="yiyuan.model.Jiancha"/>
<mapping class="yiyuan.model.Yaopin"/>
<mapping class="yiyuan.model.Jianchadan"/>
<mapping class="yiyuan.model.Chufang"/>
</session-factory>
</hibernate-configuration>
这是Hibernate的配置文件,在该文件中<property
name="proxool.xml">proxool.xml</property>
首先加载了连接池的一个配置,就是加载了数据库的连接信息,
<property name="show_sql">true</property>
<property name="format_sql">true</property>
表示控制台打印SQL语句,并格式化SQL语句
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
表示当前数据库的语言是MYSQL
<mapping class="er"/>
<mapping class="yiyuan.model.Keshi"/>
<mapping class="yiyuan.model.Bingli"/>
<mapping class="yiyuan.model.Jiancha"/>
<mapping class="yiyuan.model.Yaopin"/>
<mapping class="yiyuan.model.Jianchadan"/>
<mapping class="yiyuan.model.Chufang"/>
都表示当前数据库建立起来的表和试题类之间的映射关系,比如<mapping class="er"/>
表示User类和t_user表之间的建立起来的对应关系,其他也都类似
5.3.3 struts配置文件
<struts>
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<package name="index" namespace="/" extends="struts-default"> <action name="method" class="manageAction">
<result type="dispatcher">${url}</result>
<result name="redirect" type="redirect">${url}</result> </action>
<action name="mzmethod" class="menzhenAction">
<result type="dispatcher">${url}</result>
<result name="redirect" type="redirect">${url}</result> </action>
</package>
</struts>这是struts的配置文件,该文件的作用主要起到来自JSP的请求的跳转分配的作用.
该struts配置文件是个总的配置文件。

5.3.4 spring配置文件
Spring 在本项目中主要用到了IOC的功能,就是把对象实例化
<!-- daos -->
<bean id="userDao" class="erDaoImpl" > <property name="sessionFactory"><ref bean="sessionFactory" /></property>
</bean>
<bean id="keshiDao" class="yiyuan.dao.impl.KeshiDaoImpl" > <property name="sessionFactory"><ref bean="sessionFactory" /></property>
</bean>
<bean id="bingliDao" class="yiyuan.dao.impl.BingliDaoImpl" > <property name="sessionFactory"><ref bean="sessionFactory" /></property>
</bean>
<bean id="jianchaDao" class="yiyuan.dao.impl.JianchaDaoImpl" > <property name="sessionFactory"><ref bean="sessionFactory" /></property>
</bean>
<bean id="yaopinDao" class="yiyuan.dao.impl.YaopinDaoImpl" > <property name="sessionFactory"><ref bean="sessionFactory" /></property>
</bean>
<bean id="jianchadanDao"
class="yiyuan.dao.impl.JianchadanDaoImpl" >
<property name="sessionFactory"><ref bean="sessionFactory" /></property>
</bean>
<bean id="chufangDao" class="yiyuan.dao.impl.ChufangDaoImpl" > <property name="sessionFactory"><ref bean="sessionFactory" /></property>
</bean>
本段代码是把DAO实例化的代码,通过spring的IOC模式
<bean id="manageAction" class="yiyuan.action.ManageAction"
scope="prototype">
<property name="userDao"><ref bean="userDao" /></property>
<property name="keshiDao"><ref bean="keshiDao" /></property>
<property name="jianchaDao"><ref bean="jianchaDao"
/></property>
<property name="yaopinDao"><ref bean="yaopinDao" /></property> </bean>
<bean id="menzhenAction" class="yiyuan.action.MenzhenAction" scope="prototype">
<property name="keshiDao"><ref bean="keshiDao" /></property>
<property name="bingliDao"><ref bean="bingliDao" /></property>
<property name="userDao"><ref bean="userDao" /></property>
<property name="jianchadanDao"><ref bean="jianchadanDao"
/></property>
<property name="jianchaDao"><ref bean="jianchaDao"
/></property>
<property name="chufangDao"><ref bean="chufangDao"
/></property>
<property name="yaopinDao"><ref bean="yaopinDao" /></property>
</bean>
本段代码是把ManageAction,和MenzhenAction实例化的代码,原理也是spring的IOC 模式。

5.4系统功能实现的主要模块
5.4.1 登陆页面
登陆代码:
//登入请求
public String login() throws IOException {
HttpServletRequest request = ServletActionContext.getRequest();
String username = request.getParameter("username");
String password = request.getParameter("password");
String role = request.getParameter("role");
User user = userDao.selectBean(" where username = '" + username + "' and password= '" + password + "' and role= "+role+" and userlock=0 ");
if (user != null) {
HttpSession session = request.getSession();
session.setAttribute("user", user);
this.setUrl("index.jsp");
return"redirect";
} else {
HttpServletResponse response =
ServletActionContext.getResponse();
response.setCharacterEncoding("gbk");
response.setContentType("text/html; charset=gbk");
response
.getWriter()
.print(
"<script language=javascript>alert('用户名或者密码错误');window.location.href='login.jsp';</script>");
}
return null;
}
本段代码是程序的登陆代码,首先从获取从页面输入的用户名和密码还有用户的登陆角色,然后调用userDao.selectBean方法,从数据库里取出该条记录进行判断,如果该条记录存在,则说明用户登陆成功,同时把用户信息存在session里面方便调用,如果记录为空,则跳转到登陆页面,同时提醒用户错误信息。

5.4.2 用户管理主页面
代码如下:
//用户管理列表
public String userlist() {
HttpServletRequest request = ServletActionContext.getRequest();
String username = request.getParameter("username");
StringBuffer sb = new StringBuffer();
sb.append(" where ");
if (username != null && !"".equals(username)) {
sb.append("username like '%" + username + "%'");
sb.append(" and ");
request.setAttribute("username", username);
}
sb.append(" userlock=0 and role !=1 and role!=4 order by id desc ");
String where = sb.toString();
int currentpage = 1;
int pagesize = 10;
if (request.getParameter("pagenum") != null) {
currentpage =
Integer.parseInt(request.getParameter("pagenum"));
}
int total = userDao.selectBeanCount(where.replaceAll(" order by id desc ", ""));
request.setAttribute("list",
userDao.selectBeanList((currentpage - 1)
* pagesize, pagesize, where));
request.setAttribute("pagerinfo", Pager.getPagerNormal(total, pagesize,
currentpage, "method!userlist", "共有" + total + "条记录"));
request.setAttribute("url", "method!userlist");
request.setAttribute("url2", "method!user");
request.setAttribute("title", "用户管理");
this.setUrl("user/userlist.jsp");
return SUCCESS;
}
首先通过
String username = request.getParameter("username");
这句代码从页面获取查询的选项,,然后通过
if(username!=null&&!"".equals(username)){
通过这句条件语句分别判断下这个值是否为空,当不为空时则通过StingBuffer 来叠加组装查询的sql语句,最后当sql语句组装好了之后,通过userDao.selectBeanList方法来调用数据库的查询方法来查到符合条件的记录,在通过request.setAttribute方法把查询到的记录传到显示的页面。

同时通过this.setUrl("user/userlist.jsp");
方法指定传回到具体指定的是哪个JSP页面。

通过这样实现对数据查询功能的实现,同时在该用户列表页面定义了对用户信息的增加,修改,删除等操作。

6系统的调试与测试
6.1软件测试的目的
软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方式来做了这个事件。

第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。

第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。

如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。

因此软件测试的第三个目的是保证整个软件开发过程是高质量的。

软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一个。

相关文档
最新文档