大学生心理咨询的内容有哪些 大学生心理咨询网站的设计与实现毕设论文

  

 大学生心理咨询网站的设计与实现

  院

 系

 计算机学院

 专

 业

 计算机科学与技术

 班

 级

 学

 号

 姓

 名

 指导教师

 负责教师

 XX大学

 20XX年6月

 摘 要

 借助于互联网的优势,网络心理咨询服务作为一种新兴心理咨询方式,成为传统心理咨询方式的有益补充。本文描述了一个大学生心理网站的设计和开发过程,系统功能分为前台功能和后台功能两部分。前台功能由用户使用,用户可以实现注册、登录、修改个人资料、心理测试、用户按关键词检索心理咨询各类文章、发表对文章的评论、在线留言,回复留言等功能。后台功能由管理员使用,管理员可以进行用户管理、网站文章管理、网站文章评论管理、网站公告管理、测试管理等工作。本系统采用JSP技术,以MVC模式进行开发。将显示、逻辑和应用层分开,以便于系统的开发、管理和维护工作,同时提高了系统的灵活性和稳定性。后台采用MySQL作为数据库,提高了网站的性能。

 关键词:大学生心理咨询;JSP;MVC模式;数据库

 Abstract

 As a new way of psychological counseling, the network of psychological services, with the advantages of the Internet, becomes a useful complement of the traditional counseling approach. This article describes a psychological web site’s designing and development process which made by college students. Its system functions are the front-office function and the back-office function. The front-office functions are used by the users, who can register, login, and modify personal information and psychological testing. Users also can search all the psychological services articles by keyword, publish comments on the articles, leave an online message and reply to a message and so on. While the back-office functions are for the administrators. The administrators can manage the users, Web articles, Web articles comments and Website notices, and manage the test management. With the JSP technology, the system was developed under a MVC pattern, the system separate the indication layer and logistics layer from the application layer separately in order to facilitate the development, management and maintenance and increase its flexibility and stability. The background chooses the MySQL as a database to improve its performance.

 Key word : College Students psychology consultation; JSP; MVC mode; database

 目 录

 1 概述 1

 1.1题目背景 1

 1.2项目内容 2

 1.2.1普通用户部分 2

 1.2.2管理员部分 3

 2需求分析与方案论证 5

 2.1角色及权限分析 5

 2.1.1普通用户用例分析 5

 2.1.2管理员用例分析 6

 2.2功能分析 7

 2.2.1普通用户部分 7

 2.2.2管理员部分 7

 2.3方案论证 8

 2.3.1 网站主流开发技术比较 8

 2.3.2 JSP技术概述 9

 2.3.3 Struts实现 MVC的机制 9

 2.4设计工具环境 11

 2.4.1开发平台 11

 2.4.2前台开发工具 11

 2.4.3后台数据库 12

 2.5经济技术分析 12

 2.5.1技术可行性分析 12

 2.5.2经济可行性分析 12

 3概要设计 13

 3.1系统总体功能设计 13

 3.2数据库表结构的设计 13

 3.2.1 用户信息表 13

 3.2.2 管理员信息表 14

 3.2.3 文章表 15

 3.2.4 文章评论表 15

 3.2.5 心理测试类型表 15

 3.2.6 心理测试题目表 16

 3.2.7 心理测试问题表 16

 3.2.8测试问题选项表 17

 3.2.9心理测试答案表 17

 3.2.10 商品表 17

 3.2.11 购买商品表 18

 3.2.12 留言表 18

 3.2.13留言回复表 19

 3.2.14 网站公告表 19

 4详细设计与实现 20

 4.1系统流程图 20

 4.1.1 管理员部分 20

 4.2.2 普通用户部分 20

 4.2 普通用户部分实现 21

 4.2.1 登录功能 21

 4.2.2 注册功能 22

 4.2.3 心理测试功能的实现 23

 4.2.4 心理商城的实现 26

 4.2.5 学生论坛功能的实现 28

 4.2.6 文章的快速查询功能 30

 4.3 管理员部分的功能实现 31

 4.3.1管理员登录 31

 4.3.2增加数据 32

 4.3.3 删除数据 33

 4.3.4 修改数据 34

 5测试 36

 5.1 软件测试定义 36

 5.2软件测试的内容 36

 5.2.1功能测试 36

 5.2.2性能测试 37

 5.2.3子模块的测试 37

 5.2.4 综合测试 38

 5.3测试结果分析 38

 结论 39

 参考文献 40

 致谢 41

 1

 概述

 1.1题目背景

 在计算机技术飞速发展的今天,人们的行为和工作越来越离不开信息网络的支持。Internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体。作为Internet上一种先进的,易于被人们所接受的信息检索手段,World Wide Web(简称WWW)发展十分迅速,成为目前世界上最大的信息资源宝库。据估计,目前Internet上已有上百万个Web站点,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,建设一个好的Web站点对于一个机构的发展十分重要。

 目前,我国大学生多数处于青年中期(18~24岁)这一年龄阶段。在这个阶段,个体的生理发展已接近完成,已具备了成年人的体格及种种生理功能,但其心理尚未成熟。如何促使大学生心理日益成熟,使其成为一个心理健康的成年人,是我们面临的一个主要问题。因为,青年中期是走向成熟的关键期,此时大学生的心理发展不成熟,情绪不稳定,很容易造成心理冲突,如理想与现实的冲突、理智与情感的冲突、独立与依赖的冲突、自尊与自卑的冲突、竞争与求职的冲突等等。这些冲突和矛盾若不能及时得到有效疏导、合理解决,久而久之会形成心理障碍。

 特别是当代大学生在高中阶段为了在激烈的高考竞争中取胜,几乎是全身心投入学习,家长的过度保护、学校的应试教育使这些学生心理比较脆弱,缺乏挫折承受力。进人大学后在学习、生活、交友、恋爱、择业等方面小小的挫折足以使他们中的一些人难以承受,以致出现心理疾病,甚至离校出走、自杀等。从环境因素看,竞争的加剧、生活节奏的加速,使人产生了时间的紧迫感和压力感;随着个人对生活目标的选择机会增多,难以兼顾的矛盾也加剧了大学生内心的冲突,使他们产生了无所适从的焦虑感。再加上各种生理因素、心理因素、社会因素交织在一起,极易造成大学生心理发展中的失衡状态。

 所以,开发一个心理健康的网络平台是很有必要的。开发本网站是为了使更多的大学生了解自己的心理健康的状态,由于现在学习,生活与就业的压力不断的加大,现今的大学生也面临着来自社会与家庭的重重压力,如果得不到老师或家长的正确引导很可能误入歧途,由于现在的大学生很多都有自我封闭的现象,当他们遇到烦恼时大都憋在内心深处,而不会去找老师或者同学探讨解决的方法,久而久之则会使很小的问题酿成相当大的麻烦!现在的大学生几乎每天都离不开电脑与网络,如果可以通过网络的手段来正确的引导大学生的话,这就解决了很多问题,因为大学生们可以在网络中畅所欲言,其他的人也可以给出相应的意见,群众的力量是伟大的,总会有人给出正确的指引!

 1.2项目内容

 本网站采用B/S结构,只要用户装有浏览器就可以随时随地的访问。以目前的技术来看,建立B/S结构的网络应用,相对于C/S结构来说,易于把握,成本也是比较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点访问和操作共同的数据库;它能有效的保护数据平台和管理访问权限,服务器数据库也很安全。特别是在java这样的跨平台语言出现之后,B/S架构软件更是方便,快捷,高效。

 大学生心理咨询网站不同于其他的管理系统软件,它的设计更注重于用户的体验,网站的大多数内容都会在首页让用户一目了然,并设有用户的导航菜单,方便用户的使用。其主要分为两部分:普通用户部分和管理员部分。

 1.2.1普通用户部分

 ●用户管理:包括新账户注册、用户信息修改、用户登录;

 ●文章的查询:用户在首页的导航菜单中可以选择文章的类型,当选择了固

 定文章类型后,页面会自动列出此类型下属的所有的文章的题目,用户选择固定的文章题目后会自动跳到文章内容的页面。用户也可以按关键词检索心理咨询各类文章

 ●文章的评论:用户在浏览文章的同时还可以对文章进行评论,评论的内容

 不可以为空,并且只有用户登录以后才可发表评论,否则系统自动跳转到登录首

 页。

 ●心理测试:用户在首页的导航菜单中可以选择心理测试选项,之后会显示出心理测试的类型,用户可选择测试类型然后进入测试类型下属的测试题目,选

 择固定的题目后就会进入测试的页面,用户可根据自身的情况去选择对应的选项,测试之后可以查看测试的结果!

 ●学生论坛:用户在首页的导航菜单中可以选择学生论坛选项进入论坛,进入论坛后,页面会列出所有留言的题目,用户可点击查看,并可以对其回帖。另

 外只有当用户登录后,用户才可以发表留言,。

 ●心理商城:用户在首页的导航菜单中可选择心理商城选项,进入心理商城

 之后,页面会显示出商品的列表,用户可使用购物车去购买商品,用户只有登陆后才可以进入心理商城,否则跳到登录首页。

 1.2.2管理员部分

 ●用户管理:管理员有删除用户的权利,管理员只有在成功登录的情况下,并进入用户管理菜单才可以进行此操作。

 ●网站文章管理:管理员负责对文章的增加和删除,普通用户不具备这样的

 功能,管理员只有正确登录以后进入文章信息管理菜单才可以进行此类操作。

 ●网站文章评论管理:管理员负责审核用户发表的对文章的评论,并可以删

 除用户发表的评论,管理员只有正确登录以后进入文章信息管理菜单才可以进行此类操作。

 ●心理测试管理:管理员负责新增心理测试与删除心理测试,管理员只有登录以后进入测试管理菜单才能进行此类操作。

 ●留言信息管理:管理员负责审核用户发表的留言,并可以对其删除,管理员只有登录以后进入留言管理菜单才能进行此类操作。

 ●回帖信息管理:管理员负责用户对其他留言的回帖,并可以对其删除,管理员只有登录以后进入回帖管理菜单才能进行此类操作。

 ●网站公告管理:管理员负责网站公告的增加,删除和修改,管理员只有登

 录以后进入公告管理菜单才能进行此类操作。

 ●商品信息管理:管理员负责商品信息的增加,删除和修改,管理员只有登录以后进入商品管理菜单才能进行此类操作。

 ●商品购买信息的管理:管理员负责对用户购买信息的审核与删除,管理员只有登录以后进入购买信息管理菜单才能进行此类操作。

 2需求分析与方案论证

 2.1角色及权限分析

 本网站共分为两种角色,普通用户和管理员,普通的用户只能访问本网站的前台部分,而管理员则负责后台的程序,主要是对数据库各个表的维护。这两种角色的权限不同,所以我们要对权限进行控制,首先看他们的用例图来说明。

 2.1.1普通用户用例分析

 在角色的基础上,可以识别与普通用户相关的用例,从而得到普通用户用例

 模型。如图2.1所示为普通用户的用例图:

 图2.1 普通用户用例图

  普通用户用例图说明:本图主要表示普通用户所能实现的功能,用户可以在首页使用用户名与密码登录本网站,可以通过注册来获取账号与密码,用户只有在登录的条件下才可以发表对文章的评论,购物车功能,论坛的发帖,若在没有登录的情况下去做评论等操作,系统会自动的跳到登录的首页。

 2.1.2管理员用例分析

 在角色的基础上,可以识别与管理员相关的用例,从而得到管理员用例模型。如图2.2所示为管理员的用例图:

 图2.2 管理员用例图

 管理员用例图说明:本图主要表示出了管理员所拥有的功能与权限,管理员也只有在登录的情况下才能做其他操作,管理员对每一张数据库表都要进行维护。

 2.2功能分析

 2.2.1普通用户部分

 根据普通用户的用例图,对普通用户的每一个用例的具体功能的要求做出简单的描述。

 用户管理:包括新账户注册、用户信息修改、用户登录;

 文章的查询:用户在首页的导航菜单中可以选择文章的类型,当选择了固

 定文章类型后,页面会自动列出此类型下属的所有的文章的题目,用户选择固定的文章题目后会自动跳到文章内容的页面。用户也可以按关键词检索心理咨询各类文章

 。

 文章的评论:用户在浏览文章的同时还可以对文章进行评论,评论的内容不可以为空,并且只有用户登录以后才可发表评论,否则系统自动跳转到登录首页。

 心理测试:用户在首页的导航菜单中可以选择心理测试选项,之后会显示出心理测试的类型,用户可选择测试类型然后进入测试类型下属的测试题目,选

 择固定的题目后就会进入测试的页面,用户可根据自身的情况去选择对应的选项,测试之后可以查看测试的结果!

 学生论坛:用户在首页的导航菜单中可以选择学生论坛选项进入论坛,进入论坛后,页面会列出所有留言的题目,用户可点击查看,并可以对其回帖。另

 外只有当用户登录后,用户才可以发表留言。

 心理商城:用户在首页的导航菜单中可选择心理商城选项,进入心理商城之后,页面会显示出商品的列表,用户可使用购物车去购买商品,用户只有登陆后才可以进入心理商城,否则跳到登录首页。

 2.2.2管理员部分

  根据管理员的用例图,对管理员的每一个用例的具体功能的要求做出简单的描述。

 用户管理:管理员有删除用户的权利,管理员只有在成功登录的情况下,并进入用户管理菜单才可以进行此操作。

 网站文章管理:管理员负责对文章的增加和删除,普通用户不具备这样的功能,管理员只有正确登录以后进入文章信息管理菜单才可以进行此类操作。

 网站文章评论管理:管理员负责审核用户发表的对文章的评论,并可以删

 除用户发表的评论,管理员只有正确登录以后进入文章信息管理菜单才可以进行此类操作。

 心理测试管理:管理员负责新增心理测试与删除心理测试,管理员只有登录以后进入测试管理菜单才能进行此类操作。

 留言信息管理:管理员负责审核用户发表的留言,并可以对其删除,管理员只有登录以后进入留言管理菜单才能进行此类操作。

 回帖信息管理:管理员负责用户对其他留言的回帖,并可以对其删除,管理员只有登录以后进入回帖管理菜单才能进行此类操作。

 网站公告管理:管理员负责网站公告的增加,删除和修改,管理员只有登录以后进入公告管理菜单才能进行此类操作。

 商品信息管理:管理员负责商品信息的增加,删除和修改,管理员只有登录以后进入商品管理菜单才能进行此类操作。

 商品购买信息的管理:管理员负责对用户购买信息的审核与删除,管理员只有登录以后进入购买信息管理菜单才能进行此类操作。

 2.3方案论证

 2.3.1 网站主流开发技术比较

 现在的网站开发主要有三种主流技术,即ASP、PHP和JSP。

  一、ASP的特点与不足

 (1) ASP使用了COM组件变的十分强大,但是这样的强大由于Windows NT系统最初的设计问题而会引发大量的安全问题,很容易遭到外部攻击而导致网站瘫痪或者数据丢失。

  (2) ASP是一种Script语言,除了大量使用组件外,没有办法提高其工作效率。

  (3) ASP无法实现跨操作系统的应用。

   二、PHP的特点与不足

 (1) PHP虽然支持许多数据库,可是针对每种数据库的开发语言都完全不同。在数据库进行升级后,需要开发人员进行几乎全部的代码更改工作,这样使程序员的工作量大大增加。

  (2) 安装复杂。

  (3) PHP所有的开发都是基于脚本技术来完成的,所有的源代码都无法编译,所以无法实现商品化。

 2.3.2 JSP技术概述

 使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来产生页面上的动态内容。产生内容的逻辑被封装在标识和JavaBeans群组件中,并且捆绑在小脚本中,所有的脚本在服务器端执行。如果核心逻辑被封装在标识和Beans中,那么其它人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的产生。在服务器端,JSP引擎解释JSP标识,产生所请求的内容(例如,通过存取JavaBeans群组件,使用JDBC技术存取数据库),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。

 2.3.3 Struts实现 MVC的机制

 Struts 通过提供一个控制器ActionServlet实现了Sun的 Model 2 架构,这个控制器可以用来管理JSP页面和ActionMapping来保证表现层之外的控制流决策来实现MVC/层模式,通过Struts的配置文件,JSP可以引用一个逻辑目标。控制器组件在运行时提供准确的URI。 供一个控制器Servlet实现了Sun的 Model 2 架构,其他表现设备之间的流程。

 图2.3 Struts 概览

 图2.4 Struts实现的MVC框架

 (1)模型层(Model)

 在MVC结构中,模型组件提供应用使用的数据和服务的接口。这样,控制器组件不必为操纵应用的数据而嵌入代码。相反,它们与模型组件通信,这些模型组件执行数据访问和操纵。因此,模型组件提供业务逻辑。模型组件有多种不同形式,可简单如一个基本的JavaBean也可以复杂到企业JavaBean(EJB)或WEB服务。

 (2) 视图层(View)

 在MVC结构中,视图组件用来产生到浏览器的应答。因此,视图组件提供的是用户看到的内容。通常而言,视图组件就是简单的JSP或HTML页面。

 (3) 控制器(Controller)

 MVC体系结构的核心是控制器组件。控制器是一个典型的Servlet,为应用接受请求 ,管理在模型层和视图层之间的数据流。因此,它控制着模型层与视图层交互的方式。

 2.4设计工具环境

  2.4.1开发平台

 Eclipse 是基于Java的、开放源代码的可扩展开发平台,它最初由IBM公司投入巨资开发,后来被捐赠给国际开放源代码团体。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括了Java开发工具(Java development Tools,JDT)。虽然大多数用户很乐于将Eclipse当作Java IDE 来用,但Eclipse的目标不仅限于此。Eclipse还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许开发人员构建与Eclipse环境无缝集成工具。

 Eclipse可以集成不同的软件工具开发供应商的产品,任何开发工具厂商都可以将他们的开发工具或组件加入到Eclipse 平台,用户可以通过相同的接口使用不同的工具。也就是说,可以在同一集成环境中同时使用不同开发商开发的软件工具。由于Eclipse具有这种整和不同工具的特性,开发者可以综合性能调节、监测、调试等处理,从而可以在较短的时间内开发出更高性能和质量的应用软件。因此,Eclipse 平台不仅得到了许多开发者和新兴的中小企业软件公司的支持而且得到IBM、Sun、Oracle等大型软件公司的支持。

 2.4.2前台开发工具

 Dreamweaver是美国MACROMEDIA公司开发的集网页制作和管理网站于一身的所见即所得网页编辑器,它是第一套针对专业网页设计师特别发展的视觉化网页开发工具,利用它可以轻而易举地制作出跨越平台限制和跨越浏览器限制的充满动感的网页。

  2.4.3后台数据库

 MySQL是一个精巧的SQL 数据库管理系统,以操作简便著称。由于其强大的功能、丰富的应用编程接口以及精巧的系统结构设计,在基于数据库的应用软件开发中得到了广泛的应用。MySQL 是客户机/服务器模式的分布式系统,由

 SQL服务器、客户端、管理工具和应用编程接口等组成。它平台无关性的优点使其能在多个操作系统上运行。此外,MySQL 还是多线程的,不仅具有运行速度快,可处理大批量数据等特点,还支持多CPU使用。

 2.5经济技术分析

 2.5.1技术可行性分析

 本网站采用的开发技术是J2EE。其中,Java语言是目前比较流行且主流的一门编程语言,功能强大,他的特点和优势如下:跨平台,面向对象,自动的垃圾回收,内置的多线程支持。Java中的J2EE技术无疑是当今因特网应用的最佳技术方案之一,近几年J2EE与JSP技术又有了巨大的发展和变化,围绕J2EE技术的应用性,也产生了大量的WEB开发框架,它们极大的提升了J2EE技术的易用性。同时传统两层C/S结构已经不能满足现代计算机用户的需求,三层WEB模式应运而生。同时伴随着框架技术的飞速发展使得三层WEB模式的开发框架的标准更加严谨,综合以上技术的优点和本网站的特点所以本系统采用基于WEB的三层B/S架构并以struts,hibernate,spring为框架,MyEclipse为开发工具来开发本网站。

 2.5.2经济可行性分析

 开发本网站所用的开发工具JKD,是开源产品,同时本课题所采用的框架技术所包含的Struts,Hibernate,Spring也都是开源的产品,同时本网站的开发所采用开发工具如:MyEclipse,MySql,TomCat都是免费开源的产品,这样就为本课题的开发大大的降低了成本,并且这些技术与工具都是现如今比较主流的并且非常完善的,所以本网站的开发在经济方面是可行的。

 3概要设计

 3.1系统总体功能设计

 系统的总功能模块描述了本网站所实现的所有功能,以及对功能模块的操作权限,普通用户部分与管理员部分相对独立。如图3.1所示:

  图3.1 总体功能模块图

 此图主要表示出了普通用户与管理员分别所能实现的功能,普通的用户所能实现的功能的界面与管理员的界面是完全分离的,功能相对独立,管理员有权对数据库中的每一张表进行维护。

 3.2数据库表结构的设计

 3.2.1 用户信息表

 用户信息表user存储了用户的基本信息,其中用的帐号和密码是登录本网站的凭证。当用户忘记密码,可以通过注册时设置的密码问题找回密码。此表中“ID”为该表的主键;“User_id”是用户帐号,设置为唯一的;“Password”是用户密码,最大长度为16位;“Sex”是用户性别,“0”表示女,“1”表示男。

 表3.1 普通用户表

 属性名

 数据类型

 长度

 允许空

 字段描述

 ID

 int

 5

 否

 用户编号

 User_id

 varchar

 45

 否

 用户账号

 Password

 varchar

 45

 否

 用户密码

 Birthday

 varchar

 45

 是

 用户出生日期

 Sex

 int

 1

 是

 性别

 Name

 varchar

 45

 否

 用户姓名

 Country

 varchar

 45

 是

 国家

 Province

 varchar

 45

 是

 省/自治区

 City

 varchar

 45

 是

 市

 Phone

 varchar

 45

 是

 电话

 Email

 varchar

 45

 否

 邮箱

 Postalcode

 varchar

 45

 是

 邮政编码

 Work

 varchar

 45

 是

 职业

 SchoolAge

 varchar

 45

 是

 学历

 Question

 varchar

 255

 否

 找回密码问题

 Answer

 varchar

 255

 否

 找回密码答案

 3.2.2 管理员信息表

 管理员信息表admin存储了管理员的帐号、密码以及管理员的名字。其中,“ID”为主键;“Admin_ID”为管理员的帐号,数据库设置是唯一的;“Admin_Password”为管理员的登录密码,长度最长为16位。

 表3.2 管理员表

 属性名

 数据类型

 长度

 允许空

 字段描述

 ID

 int

 5

 否

 管理员编号

 Admin_ID

 varchar

 45

 否

 管理员账号

 Admin_Password

 varchar

 45

 否

 管理员密码

 Admin_Name

 varchar

 45

 否

 管理员名字

 3.2.3 文章表

 文章表article主要存储的是文章的编号、文章的类型、文章的标题、文章的内容、发表时间及浏览数量。其中,“Article_ID”为文章编号,是表的主键;“Count”为文章的浏览数量,其默认设置为“0”。

 表3.3 文章表

 属性名

 数据类型

 长度

 允许空

 字段描述

 Article_ID

 int

 5

 否

 文章的编号

 Article_Type

 varchar

 45

 否

 文章的类型

 Article_Name

 varchar

 45

 否

 文章的题目

 Content

 test

 否

 文章的内容

 Show_Time

 varchar

 45

 否

 发表时间

 Count

 int

 6

 否

 点击次数

 3.2.4 文章评论表

  文章评论表article_comment主要存储的是用户对文章的评论内容、评论时间以及评论者的编号。其中,“ID”是主键;“Title_ID”是被评论的文章的编号,作为外键指向文章的表的主键;“User_ID”是评论者的编号,作为外键指向用户表的主键。

 表3.4 文章评论表

 属性名

 数据类型

 长度

 允许空

 字段描述

 ID

 int

 5

 否

 帖子的编号

 Title_ID

 int

 5

 否

 评论的文章编号

 User_ID

 int

 5

 否

 发帖的用户的编号

 Comment_Context

 text

 否

 评论的内容

 ShowTime

 varchar

 45

 否

 发表评论的时间

 3.2.5 心理测试类型表

 心理测试类型表test_type主要存储的是测试题的类型及测试类型说明。其中,“ID”是心理测试的编号,设置为该表主键;“TypeName”是测试题的类型;“Info”是测试类型说明。

 表3.5 心理测试类型表

 属性名

 数据类型

 长度

 允许空

 字段描述

 ID

 int

 5

 否

 心理测试编号

 TypeName

 varchar

 45

 否

 测试的类型

 Info

 varchar

 255

 否

 测试类型说明

 3.2.6 心理测试题目表

 心理测试题目表test_title主要存储的是测试题目的类型及测试题目。其中,“ID”是测试题目的编号,设置为该表的主键;“TypeID”是心理测试类型表的主键,作为该表的外键。

 表3.6 心理测试题目表

 属性名

 数据类型

 长度

 允许空

 字段描述

 ID

 int

 5

 否

 测试题目编号

 TypeID

 int

 5

 否

 测试所属类型

 TestName

 varchar

 50

 否

 测试的题目

 3.2.7 心理测试问题表

 心理测试问题表test_question主要存储的是测试题目的编号、测试内容的所属题目及测试所问的问题。其中,“ID”是测试所问问题的的编号,设置为该表的主键;“Test_ID”是测试内容所属题目的编号,作为该表的外键。

 表3.7 心理测试问题表

 属性名

 数据类型

 长度

 允许空

 字段描述

 ID

 int

 5

 否

 测试所问问题的代号

 Test_ID

 int

 5

 否

 测试内容的所属题目

 Test_Content

 varchar

 255

 否

 测试所问的问题

 3.2.8测试问题选项表

 测试问题选项表test_option主要存储了问题选项的编号、所对应问题的编号、选项内容以及每个答案所对应的分数。“ID”是该表的是主键。

 表3.8 心理测试选项表

 属性名

 数据类型

 长度

 允许空

 字段描述

 ID

 int

 5

 否

 问题选项的代号

 Question_ID

 int

 5

 否

 所对应的问题号

 Option_content

 varchar

 255

 否

 选项内容

 Mark

 int

 5

 否

 分数

 3.2.9心理测试答案表

 心理测试答案表test_result主要存储的是心理测试答案的编号、对应题目的编号、最高分、最低分以及测试结果。当测试结束后,会把用户所选的每一个选项的分数累加起来,累加起来的分数参照分数段对应着它的结果。其中,“ID”是该表的是主键;“TitleID”是外键指向心理测试题目表的主键。

 表3.9 心理测试答案表

 属性名

 数据类型

 长度

 允许空

 字段描述

 ID

 int

 5

 否

 答案的编号

 TitleID

 int

 5

 否

 对应题目号

 MinMark

 int

 5

 否

 最低分

 MaxMark

 int

 5

 否

 最高分

 Result

 Text

 否

 测试结果

 3.2.10 商品表

 商品表Item主要存储的是商品的名称、商品的价格、商品的信息以及商品的数量。其中,“ItemID”是该表的是主键。

 表3.10 商品表

 属性名

 数据类型

 长度

 允许空

 字段描述

 ItemID

 int

 5

 否

 商品代号

 ItemName

 varchar

 20

 否

 商品名

 ItemPrice

 double

 4

 否

 商品价格

 ItemInfo

 varchar

 255

 是

 商品信息

 Count

 int

 4

 是

 商品数量

 3.2.11 购买商品表

 购买商品信息表buy_info主要存储的是购买商品的编号、购买的商品名字、购买者编号、购买者名字以及购买时间。其中,“

 ID”是该表的主键;“Item_ID”是外键指向商品表的主键;“User_id”是外键指向用户表的主键。

 表3.11 购买信息表

 属性名

 数据类型

 长度

 允许空

 字段描述

 ID

 int

 5

 否

 购买的编号

 Item_ID

 int

 5

 否

 购买的商品编号

 Item_name

 varchar

 20

 否

 购买的商品名字

 User_id

 int

 5

 否

 购买者编号

 User_name

 varchar

 20

 否

 购买者名字

 BuyTime

 Date

 否

 购买时间

 3.2.12 留言表

  留言表leave_message只要存储了留言的标题、留言的内容、留言者的信息以及留言时间。其中,“ID”是该表的主键;“User_id”是外键指向用户表的主键。

 表3.12 留言表

 属性名

 数据类型

 长度

 允许空

 字段描述

 ID

 int

 5

 否

 留言的编号

 subject

 varchar

 45

 否

 留言的标题

 message

 test

 否

 留言内容

 User_id

 int

 5

 否

 留言者编号

 time

 varchar

 45

 否

  留言时间

 3.2.13留言回复表

 留言回复表replay主要存储了所回帖的帖子编号、回帖内容及回帖时间。其中,“ID”是该表的主键;“leave_id”是该表的外键,指向留言表的主键。

 表3.13 留言回帖表

 属性名

 数据类型

 长度

 允许空

 字段描述

 ID

 int

 5

 否

 回帖代号

 leave_id

 Int

 5

 否

 所属的留言的代号

 content

 test

 -

 否

 回帖内容

 time

 varchar

 45

 否

 回帖时间

 3.2.14 网站公告表

 网站公告表placard主要存储了公告的内容以及公告的发布时间。其中,“ID”为该表的主键,自增的。

 表3.14 网站公告表

 属性名

 数据类型

 长度

 允许空

 字段描述

 ID

 int

 5

 否

 公告代号

 content

 text

 否

 公告内容

 time

 varchar

 45

 否

 公告发布时间

 4详细设计与实现

 4.1系统流程图

 4.1.1 管理员部分

 管理员的功能流程从登录开始,系统验证管理员账号与密码的有效性,如

 果账号与密码合法则允许管理对每一个功能进行操作。

 图4.1 管理员功能模块图

 4.2.2 普通用户部分

 普通用户的功能流程也是从登录开始,只有合法的登录才会允许用户对其他的功能进行操作。

 图4.2 用户功能模块图

 以后才可以发表留言,否则系统跳到登录首页。

 4.2 普通用户部分实现

 4.2.1 登录功能

  为了提高用户体验,减少页面刷新的情况故而采用AJAX技术,做

 成无刷新登录的效果,当用户输入正确的用户名和密码的时候,立刻局部刷新显示欢迎的页面,使用AJAX就是要异步发送请求,数据提交到action后进行验证,返回请求的结果登录成功后立刻把用户的id存放到session的共享范围里面,在以后拦截用户的非法操作的时候就是判断session范围里面是否存在着用户的id,若存在则允许其操作,若不存在则跳到登录的首页。

 登录的整个执行步骤为:

 1).用户提交登录请求;

 2).验证用户输入数据是否为空;

 3). FormBean封装用户提交的数据;

 4). action接受用户在表单中提交的登录的数据,然后调用业务逻辑层中的登录方法public boolean login(String userid,String password);

 5).业务逻辑层中的登录方法调用DAO层中的查找用户的方法

  public getUser(String userid)方法根据用户的输入的userid去查找User这个对象,若查找存在,则返回true,若不存在则返回false,若为true的话,则用查找的对象的密码与用户输入的密码进行比较,如果相等的话则登录方法为true,跳转到欢迎页面,若不相等则提示错误信息。

 4.2.2 注册功能

 注册的功能也同样才用AJAX的异步传送技术,以前的注册总是让用户输入全部的用户信息后在进行验证,而且还要让用户等待页面的刷新。采用AJAX以后我们就可以异步的来验证用户输入的每一条信息,例如验证用户注册时输入的账号是不是已经存在,两次密码是否一次,邮箱格式是否正确,如图5.1为输入信息之前:

 图4.3 用户注册页面

 输入了错误的信息,以用户账号为例,输入了已存在的账号马上提示错误

 信息。若输入的账号不存在则提示可以使用:

 图4.4 异步发送请求

  这样的实现就会让用户及时的知道自己注册的那部分有错误,可以及时的改正,不必等输入了全部的信息后再提交验证,同时validations.xml验证用户输入的数据是否为

 空或者输入的数据是否长度过于长。

 4.2.3 心理测试功能的实现

 当用户在首页的导航菜单中点击心理测试的时候,页面想action发送用户的请求,接着action控制跳转到显示测试类型的界面,用户再选择测试类型进入此测试类型下所属的测试的题目,在选择测试题目之后就可进入心理测试了。

 要在页面中显示出心里测试是个难点,因为心理测试的题目,问题,选项,以及测试后的结果分别在不同的数据库表中,并且它们之间是有关联的。比如测试的结果表是跟测试的题目表相关联的,测试的选项表是与测试的问题表是相关联的,测试的问题表是与测试题目表相关联的,测试的题目表与测试类型相关联。为了实现这项功能,我们在用户点击测试题目的时候就传给action这个题目的id,然后在action中根据题目的id查出这个题目下的问题,然后再根据查出的问题查出问题所对应的选项,具体实现代码为

 public class TestQuestionAction extends Action {

  private TestContentManager tcmgr;

  public void setTestContentManager(TestContentManager tcmgr){

 this.tcmgr=tcmgr;

  }

  public ActionForward execute(ActionMapping mapping, ActionForm form,

  HttpServletRequest request, HttpServletResponse response) {

 HttpSession session=request.getSession();

 String titleid=request.getParameter("id");

 int id=Integer.parseInt(titleid);

 request.setAttribute("titleid", new Integer(id));

 List list=tcmgr.getTestContent(id);

 request.setAttribute("testcontent", list);

 Iterator iter=list.iterator();

 while(iter.hasNext()){

  Testcontent content=(Testcontent)iter.next();

  int contentid=content.getQuestioneId();

  List option=tcmgr.getOption(contentid);

  request.setAttribute("option"+content.getQuestioneId(), option);

 }

 return mapping.findForward("testContent");

  }

 }

 这是一个完整的action的代码,我们在这里完成了manager的依赖注入,并取出了测试的标题,测试的问题,测试的选项,分别放在request范围里面,然后在JSP页面中我们分别把它取出来,为了实现简单一点,我们采用了代码片的编写,使用代码片的优点就是简单易懂,缺点就是很难维护,JSP页面显示心理测试代码片为

 <html:form action="/testAnsewr">

 <table align="center">

 <%

 //获取问题列表

 List list = (List)request.getAttribute("testcontent");

 //for循环输出问题

 for(int i=0; i<list.size(); i++) {

 Testcontent

 question = (Testcontent)list.get(i);

 String questionContext = question.getTestQuestion();%>

 <%=i+1 %>.<%=questionContext %><br>

 <%

  List options = (List)request.getAttribute("option"+question.getQuestioneId());

 for(int j=0; j<options.size(); j++) {

 Testoptions option = (Testoptions)options.get(j);

 String optionContext = option.getOptionContent();

 %>

 <input type="radio" name="<%=question.getQuestioneId() %>" value="<%=option.getOptionId() %>">

 &nbsp;&nbsp;<%=optionContext %><br>

 <%

 }

 out.print("<br>");

 }

 %>

 <html:hidden property="titleid" value="${requestScope.titleid}"/>

 <input type="submit" value="查看测试结果"/>&nbsp;

 <input type="reset" value="重置"/>

 </table>

 </html:form>

 显示出来的界面效果如图4.5:

 :

 图4.5 心理测试页面

 测试结束后进行提交,如果有没选的选项则默认为零分,提交后,action把用户所选的每一道选项所对应的分数累加起来,然后再根据测试的题目和测试的分数去查看测试的结果,测试的总分位于哪个分数段,就有对应的结果显示出来。至此测试功能的实现结束。

 4.2.4 心理商城的实现

 用户只有成功的登录以后才可以进入心理商城,当用户点击导航菜单中的心理商城的时候,系统开始判断在session范围里是否存在用户的id,若存在则进入心理商城,若不存在则跳到登录首页。进入心理商城后会显示出现有的商品列表和用户的购物车,初始的状态购物车内商品为空,当我们点击商品的购买的时候,我们把商品的信息存放在session的范围中,然后在购物车中把session范围里的商品信息取出来显示,这时候的数据并没有存入数据库中,我们只有在结账的时候才会把购买的信息存入到数据库中,以图

 4.6说明如下进入商城时候,购物车为空:

 图4.6 心理商城

 购买商品之后:在购物车中会显示出用户的购买信息,包括购买的商品名,购买人,以及购买的数量,此时购物车中的数据并没有真正存在数据库中,而是通过在共享范围中的Session中取出临时的数据,只有结账以后数据才会储存到数据空中,购物车中的临时数据如图4.7所示:

 图4.7 用户购买商品

 点击结账以后购物车会清空,这就需要我们把Session范围里面的数据进行清空处理,然后通过程序计算出用户消费总金额显示出来。如图

 4.8

 图4.8 购买商品之后

 当用户没买任何商品的时候就点击结账,此时的Session中是没有数据的, 会提示相应的错误信息。如图5.9

 图4.9 购买商品时的错误提示

 当没购买任何商品的时候就点击清空购物车,也会提示相类似的错误!到这里心理商城的实现也完成了!

 4.2.5 学生论坛功能的实现

 当用户点击导航菜单中学生论坛选项时,进入论坛并且在页面中显示所有的留言,页面如下:

 图4.10 进入论坛

 这与显示文章的实现方法相类似,所以不再重复。用户可以发表新的留言,用户只有在登录之后才可以发表留言,我们在session范围里去查找用户的id,如果用户id存在则可以发表新的留言,在发表留言的时候程序也要检查用户输入的内容是否为空,若为空则提示错误信息

 在检查用户输入的内容是否为空的时候还可以采用脚本语言JavaScript来判断,它是写在客户端的一种脚本。

 如果发表留言成功的话,马上跳到留言的列表,并且显示最新的留言,

 这样每次保存成功后,马上又从数据库中取出来,动态的显示在JSP页面上,具体的实现方法非常的简单,所以不做太多解释了。

 接下来便是回帖功能的实现,当用户在浏览别人的留言之后可以发表自己的看法,回帖是匿名的回帖,所以不等录也可以回帖,我们就不必再去判断session范围里面是不是包含用户的id了,但是我们还是要判断用户输入的内容是否为空,如图4.11:

 图4.11 回帖错误信息提示

 如果回复成功的话,马上动态显示出来刚才的回帖,原理和发表留言是一样的。到这留言与回帖的功能也已完成!

 4.2.6 文章的快速查询功能

 由于本网站所包含的文章有很多篇,为了方便用户想查看自己感兴趣的文章,所以加了文章的快速查找功能。我们在上一些搜索网站进行查询的时候,当我们输入了关键字以后马上就会提示与关键字相关的结果。

 图4.12 查找文章

 以上图片表明我们写的程序可以正常的工作了,当用户没输入任何值的时候,系统要提示收索内容不能为空,若收索的内容不存在也要有相应的提示,在查询的时候我们是采用模糊查询的方式进行查询的,所以输入关键字的时候系统便会提示与关键字有关的文章标题。

 到这里,普通用户的功能大都已经实现,我们还要去实现管理员部分的功能,管理员要负责对整个系统的维护工作,也就是对数据库每一张的维护。

 4.3 管理员部分的功能实现

 4.3.1管理员登录

 管理员要实现对系统的维护必须先登录,具体的实现和普通用户的登录是一样的,进入管理员的首页之后,会要求管理员输入账号与密码,只有登录成功以后才能对每一个功能模块进行维护,若不登录的情况下进行操作,系统会把所有的操作视为非法操作进行拦截。下图为登录成功后的页面,管理员的id立刻放到session范围里。

 图4.13管理员欢迎

 4.3.2增加数据

 管理员部分的功能只是对每一张表的进行的增,删,改,查的一些功能的实现,由于对每一张表实现的功能是一样的,所以我们只以其中的一个功能模块为例,首先用户要先登录,我们以增加网站公告为例。登录以后,选择公告管理功能,进入公告管理。如图4.14:

 图4.14 公告管理页面

 进入再点击添加公告,在文本框中输入要添加的内容,然后再提交就可以对我们所写的数据存入数据库中了。

 4.3.3 删除数据

 删除的功能就是要删除我们已经不需要的数据,通过页面的操作,来清除数据库表中的数据,我们以删除文章的评论为例,在登录成功后选择文章管理功能,进入管理评论的界面,如下图4.15所示。

 图4.15文章评论管理

 我们可以对数据进行单个删除,为了工作的效率我们增加了批量删除的做法全选与反选的功能在页面上用javascript来实现,一般的批量删除的做法采用for循环来逐个的去删除,这样的做法的缺点就是频繁的访问数据库去删除数据,这就使系统的性能大大的降低了,为此我们采用sql语句进行批量的删除,实现代码如下

 public void deleteAnyComment(String[] ids){

 //创建Session

 Session session = this.getSession();

  //HQL语句删除

 String hql = "delete from Comment c where c.commentId in (";

 //增强型For循环,读出删除的id

 for (String num :ids) {

  hql = hql + Integer.valueOf(num) + ",";

 }

 hql = hql.substring(0, hql.length()-1) + ")";

 Query query = session.createQuery(hql);

 //执行语句

 query.executeUpdate();

  }

 实现批量删除时的页面如图4.16:

 图4.16 批量删除

 在删除的时候我们要特别注意的就是表之间的级联删除,比如,当管理员删除普通用户的时候,那么这个用户发表的评论,发表的留言,以及购买信息等也将被自动的删除。

 4.3.4 修改数据

 关于修改的功能我们就以修改用户的信息为例,当点击修改用户信息的时候系统跳到用户信息的页面,用户可以查看现在的信息,并在此基础上进行修改,用户的账号userid是不允许修改的,如图4.17:

 图4.17 修改用户信息

 当用户修改之后提交,系统马上跳到登录首页,并且要求用户用新的信息进行登录,具体的做法与注册很类似的,注册的时候采用的是Hibernate的session.save()的方法,修改的时候只要改成session.update( )就可以了。其他表的维护也都和上边的操作相类似。

 5测试

 5.1 软件测试定义

  软件测试就是在受控制的条件下对系统或应用程序进行操作并评价操作结果的过程,所谓控制条件应包括正常条件与非正常条件。

  软件测试过程中应该故意地去促使错误的发生,也就是事情在不该出现的时候出现或者在应 该出现的时候没有出现。从本质上说,软件测试是“探测”,在“探测”中发现软件的毛病。

 软件测试贯穿于软件定义与开发的整个周期 ,软件的需求规格说明书 ,结构设计及程序编 码,都属于软件测试的对象。

  软件测试包含白盒测试与黑盒测试,白盒测试是针对程序代码进行正确性检验的测试工作, 黑盒测试独立于程序代码,从用户的角度,通过一定的测试步骤与测试案例,验证软件功能、 性能等指标能否满足实际应用需求的测试工作。

 5.2软件测试的内容

 Ⅰ、软件功能的实现是否与需求分析的一致。

 Ⅱ、测试各个模块是否操作灵活,性能良好。

 Ⅲ、整体测试,测试整个系统的功能和性能,检验其是否满足用户的

 需求。

 Ⅴ、在编写程序的时候就要养成边编译边测试的好习惯。

 5.2.1功能测试

 功能测试是检查需求分析报告中的功能是否完全实现,在本测试中,需求分

 析阶段要求的功能已经实现,未能完全实现的功能在现行的系统中已做了改善。各个功能模块的测试大体符合需求分析时的要求。

 表5.1 功能测试

 测试内容

 存在问题

 处理结果

 登录与注册

 满足功能需求

 -

  文章浏览与评论

 满足功能需求

  -

  心理测试

  测试的结果不正确

 修改查询测试结果的代码,增加查询的条件

 学生论坛

 满足功能需求

  -

  心理商城

 商品数量为0时还可购买

 增加判断条件的代码

 5.2.2性能测试

 性能测试是在系统完成后,测试整个系统的数据完整性约束、一致性、正确性、灵活性、稳定性、安全性等基本性能指标。

 表5.2 性能测试

  测试内容

 性能测试描述

 存在问题或指标

 处理结果说明

 数据一致

 数据提交一致性

 数据正常

 未出现异常

 需求正确

 需求分析正确

 需求中没逻辑错误

 未出现异常

  数据库连接测试

 MySQL 与程序连接

 连接正常

 未出现异常

 系统安全性

 系统安全性

 未发现安全漏洞

 合法用户能登录系统,非用户无法登录系统

 5.2.3子模块的测试

 子模块的测试内容包括子模块中的各个子功能实现,测试这些子功能时要兼顾测试到界面的友好性,子功能的流程,功能是否完善等。子模块的测试直接影响随后的整体测试结果,子模块的测试完成才能保证整体测试的完整性。

 表5.3 子模块测

 子模块名

 界面

 流程

 功能完善

 问题

 处理结果

 子页面浏览

 友好

 良好

 较好

 -

 -

 维护新增

 友好

 正确

 较好

 -

 -

 维护修改

 友好

 良好

 良好

 -

 -

 维护删除

 友好

 正确

 良好

 -

 -

 维护查询

 友好

 一般

 一般

 -

 -

 5.2.4 综合测试

 综合测试的内容包括页面之间的连接是否可用,每一项对数据的基本操作是否 可行,每一个功能之间的衔接也要保证数据的正常。

 表5.4 综合测试

  测试内容

 整体测试描述

 存在问题

 处理结果说明

 页面间的连接测试

 测试主页面与各子页面间的连接

 未发现问题

 -

 修改

 点击—修改—跳转—填写信息—修改成功

 未发现问题

 -

 新增

 点击—新增—跳转—填写信息—新增成功

 未发现问题

 -

 查询

 查看选择信息

 未发现问题

 -

 删除

 点击—删除—通过

 未发现问题

 -

 5.3测试结果分析

 测试结果总体来讲比较成功,测试结果表明系统实现的功能均能符合基本要

 求,系统的运行速度和稳定性较好,安全性良好。在系统的测试中,测试结果是系统各模块的连接情况连好,做到了强内聚弱耦合,系统整体运行情况较好。

 结论

 本系统使用了JAVA中J2EE技术中的JSP,Struts,Hibernate,Spring等技术,并且多处使用了AJAX技术,在提高用户体验, MVC架构,数据持久化,控制

 的反转等方面都得到了很好的实现。

 本系统通过局域网进行测试,需求的功能都得到了完整的实现。经过了这段毕业设计的时间让我学到了很多实用的知识,通过与同学探讨,老师的指导,我完成了此次毕业设计。这段时间的努力学习,使我对软件开发的流程与思想都得

 到了比较全面的认识,也体会到了多动手实践的好处,只有反复的动手实践,才能把知识融会贯通。

 由于时间的紧迫与本人缺乏实际开发的经验,虽然系统能够正常的运行,但是程序编写的风格不是特别规范,程序难免会有漏洞,这些都是在以后的开发中

 应该尽力避免。

  我会在以后的工作中注意这些问题。

 参考文献

 [1]

 Subrahmanyam Allamaraju,Cedric Buest,John Davies,等.J2EE编程指南[M].电子工业出版社,2003

 [2]

 James Holmes.Struts完全手册(第二版).电子工业出版社,2007

 [3]

 Christian Bauer,Gavin King.Hibernate实战(第二版).人民邮电出版社,2008

 [4]

 林信良.Spring2.0技术手册.电子工业出版社,2008

 [5]

 王珊,萨师煊. 数据库概论.高等教育出版社, 2007

 [6]

 Ken Arnold James ,Gosling David Holmes.Thinking in Java.电子工业出版社,2003

 [7]

 范秀平. SQL语法范例手册.科学出版社,2007

 [8]

 秦鹏. DreamWeaver8自学手册.中国青年出版社,2006

 [9]

 刘晓华. JSP应用开发详解.电子工业出版社,2007

 [10]

 张海藩. 软件工程导论.清华大学出版社,2007

 [11]

 Christian Heilmann. 深入浅出JavaScript.人民邮电出版社,2008

 致谢

  随着毕业设计的结束,论文的写作也即将完成,这几个月的努力终于收到了效果。随着论文的完成,大学生活也接近了尾声,此时的我心内特别的感慨,在这里我要感谢的人太多了。

 首先,我要由衷的感谢我的指导教师XX,从我的毕业设计开始的时候老师就经常的督促我要认真的完成,要自己去独立的完成,为了感谢老师对我倾注的心血我只有更加努力的去学习,去用心做我的毕业设计。虽然在毕业设计的初期遇到了很多困难,当时的自己根本不知道从何下手,但是经过老师的鼓励,我也努力去克服困难,坚持做到自己独立的解决问题。当我顺利的完成毕业设计的时候,我不能不对给我鼓励的老师献上崇高的谢意。

 感谢在大学期间所有传授给我知识的老师们,是你们的悉心指导让我有了良好的专业课知识,这也是我毕业设计和毕业论文得以完成的基础。最后,由衷的感谢我的负责教师--XX老师。

推荐访问:大学生心理 咨询 论文