JAVA毕设项目-基于SSM框架的高校心理测评设计与分析系统源码+设计文档

 文末获取源码+数据库+文档

感兴趣的可以先收藏,有毕设问题,项目以及论文撰写等问题都可以和博主沟通,尽最大努力帮助更多的人!😊😊😊

目录

0 引言 

1 研究背景 

2 需求分析 

2.1 功能需求 

2.2 性能需求 

2.3 用户需求 

3 可行性分析 

3.1经济可行性分析 

3.2技术可行性分析 

3.3安全可行性分析 

4  概要设计 

4.1 功能模块描述 

4.2数据流图 

5 数据库设计 

5.1 ER图 

5.2表的设计 

6 系统设计 

6.1测评功能模块 

6.1.1 新建测评功能 

6.1.2 心理测评大全功能 

6.1.3 查看我的心理报告功能 

6.2心理科普模块 

6.2.1添加专栏功能 

6.2.2专栏大全功能 

6.3系统管理模块 

6.3.1用户管理功能 

7 测试 

7.1 测试方法 

7.2 基本功能测试用例 

8 总结 

高校心理测评设计与实现

  

作    者:赵东升

指导教师:张海玉

摘要:为了让学校和教师方面更好的深入了解学生的心理,有助于加强学生心理建设。该系统使用Java语言开发,系统架构采用SSM技术来实现功能性开发,MySQL数据库存放数据,实现了进行心理测评,查看心理测评报告等功能。系统界面简约,操作简单,功能强大,基本实现了心理测评的需求。

关键词:心理测评;数据库;权限;高校

0 引言  

本课题采用Java语言开发一款心理测评系统,提供一个便捷的心理测评平台,方便用户在线学习心理学知识,缓解压力,调节自我情绪,也可以去线下咨询专家进行心理辅导,争取为广大师生提供更好的心理测评服务。

1 研究背景

研究现状通过需要使用到的内容结合现在的开发背景来看。由于国外在研究心理健康问题上比国内起步早,我国目前的心理测评还是存在着起步晚,群众认知缺少,测评技术落后等各种各样的问题。心理健康教育推广的力度不够导致大部分群众对心理健康问题缺乏足够的认知和重视,而我国专门从事心理健康测评和服务的社会机构不多,心理健康服务费时费力,相应的心理测评活动也有限。相比之下,如今在美国心理测评的应用非常广泛,不仅是军队,警察队伍建设等多方面的基本要求,在广大中小学的心理辅导和教育上也是不可或缺的工具。从各方面看,国外在这项技术上要比国内成熟一些。

2 需求分析

需求分析包括用户需求,通过和用户交流发现用户的需要后再经过深入细致的调研和分析,准确理解用户需要和项目的功能,性能,可靠性等具体要求。如果忽视了这一关键步骤就会导致系统功能和用户需求不一致,造成大量的人力和物力的损失。

2.1 功能需求

系统通过市场分析,功能需求分析出以下功能需求模块:

  1. 登录注册模块:登录功能模块的设计面向全体用户。用户通过登录功能实现登录到系统中。后台系统通过权限校验,查看用户的权限区别实现登录的功能。用户可以实现简单的注册功能。通过用户名和密码的方式实现注册功能的实现。
  2. 测评报告查看功能:此功能模块同样对全体用户开放。用户可以通过点击查看测评报告结果。
  3. 用户测评模块:此功能模块为系统核心模块。此模块中用户可以实现测评功能的实现,用户可以完成问卷的方式答题,并提交到系统中供管理员查看。
  4. 新建测评模块:此功能模块为管理员功能模块。管理员可以通过填写表格的形式完成单个心理测评试题的设计。通过发布功能,可以实现给用户发布心理评测试题的功能。
  5. 心理科普模块:此模块为通用模块。所有的用户都可以通过点击查看心理知识科普的功能。
  6. 科普管理模块:管理员模块,管理员可以通过对心理知识的管理功能推送出适合的文章或者句子。
  7. 用户管理模块:管理员功能模块。用户管理模块通过管理员管理用户信息,此模块中我们可以给用户的权限发生变化,同样,我们可以查看到用户的测评报告等功能点。

2.2 性能需求

本次系统开发着重在系统权限及系统性能方面上做出说明,具体表述如下:

(1)系统权限分配环节:系统通常分配两个权限,一个是用户,一个是管理员,二个权限的不同操作的功能模块就不同;用户主要是进行一些心理测试的功能,管理员权限拥有着系统最高的管理权限,都系统可以全面的管理,同时,对安全性能的要求也是有管制权限的。

管理员:对当前系统的设计有着充分的了解,有权利对相应的数据库数据进行增删改操作。

(2)系统性能分析:系统性能分析考虑的是系统的安全性,灵活性,稳定性,可维护性等几个方面,安全性通常指系统的安全要素是否具备,系统是否存在信息泄露风险,灵活性主要是指系统模块之间操作是否灵活,用户使用是否便利问题,稳定性主要是指,系统运行状态是否良好,是否存在死机,系统卡主等情况,可维护性主要是指,系统是否具备二次开发的条件,后期修改模块是否便利等问题。

3 可行性分析

开发一个系统的成本是巨大的,在开发之前把系统的功能实现搞清楚是很有必要的,如果前期的可行性分析没有合理的实施,那么后面的开发就会事倍功半。所以说可行性分析要从经济,安全等多方面进行综合分析,然后再判断可不可以开发此系统。

3.1经济可行性分析

经济可行性无论对任意一个项目来说都是必不可少的。合理的经济预算将会使系统开发的开发者和用户都满意,开发出系统的性价比也可想而知,可见经济可行性分析是非常必要的。但是在心理测评系统开发过程中,主要以满足大多用户的通性问题,功能都是比较适用的,相对来说开发成本并不高。综上,经济可行性分析完全是行得通的。

3.2技术可行性分析

技术可行性的分析考虑的问题有很多种,首先,要考虑到系统在开发的过程中可能带来的问题。技术并不是只通过主观决定,选用什么样的技术栈是通过系统本身的发展方向所决定。所以通过对系统重点内容的分析,选择采用SSM架构实现系统。SSM架构存在时间比较长,是比较成熟的框架体系,同样很多的系统都是采用的。翻看市场上大部分系统和开源架构,对SSM的青睐还是不少的。所以,在技术可行上是通过的。

3.3安全可行性分析

系统的安全是系统中很重要的组成部分,安全性能的考虑不仅仅是系统在技术上的严密性,还有在开发的过程中的保密性,以及后续对用户信息的保护。系统采用单人开发模式,代码和文档都是单人操作,所以安全性可行。

4  概要设计

概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。显然,概要设计建立的是目标系统的逻辑模型。

4.1 功能模块描述

功能模块图如下所示,整体流程模块如图1所示,管理员用户功能模块如图2所示。

图1 整体流程模块图

图2 管理员端功能模块图

4.2数据流图

    系统功能数据流图如图3所示。

图3  系统功能图

5 数据库设计

数据库设计是整个程序运行的灵魂。所以在设计程序的过程中要注意将程序的功能需求设计到表中。系统的功能是通过系统数据库为基础展开的。同样,数据库也是根据系统的功能来开发的。所以,在对业务逻辑做出一定分析后,确定了数据库的采用和数据库字段的定位。避免出现数据库的问题,防止出现前期分析问题导致后期开发出现漏洞的情况。

5.1 ER图

图4  ER图

5.2表的设计

数据表的设计涉及到程序在运行过程中的逻辑问题,很多程序的设计都是使用存储过程实现逻辑。所以,数据表的设计是很重要的。我们根据需求设计出e-r图,根据e-r图设计出以下数据表:答案表,问题表,结论表,问卷表,文章表,用户表。

表1 答案表answers

字段名

数据类型

约束   

是否可空

默认值

备注

qid

int

1

问题id

uid

int

用户id

score

int

科目

表2 问题表questions

字段名

数据类型

约束   

是否可空

默认值

备注

qid

int

1

问题id

qnid

int

问题所属

text

varchar(255)

问题内容

power

int

权重

表3 结论表conclusions

字段名

数据类型

约束   

是否可空

默认值

备注

cid

int

1

ID

qnid

int

问题id

min

int

最小权重

max

int

最大权重

text

varchar(32)

描述

表4 问卷表questionnaires

字段名

数据类型

约束   

是否可空

默认值

备注

qnid

int

1

id(自增)

title

int

标题

abstract

varchar(255)

摘要

def_conclusion

varchar(255)

内容详细

表5 文章表artcles

字段名

数据类型

约束   

是否可空

默认值

备注

nid

int

1

id(自增)

title

varchar(64)

标题

text

varchar(255)

内容

表6 用户表users

字段名

数据类型

约束   

是否可空

默认值

备注

uid

int

1

id(自增)

name

varchar

用户名

psw

varchar

密码

is_admin

int

是否管理员

6 系统设计

系统的功能设计是根据系统需求所确定的方向展开的。开发人员在设计功能的时候考虑到技术的使用和实现的功能难度,来确定功能实现的方向问题。根据前期的准备工作,我们对系统的设计的核心内容是完成测评功能。根据测评功能我们可以延伸出其他功能,登录注册功能,用户管理功能,测评添加功能等。下面我们就给系统中功能做出详细的解析。

6.1测评功能模块

测试问题设置为随机抽取题目的方式,将答案设定为权重的方式。在设计功能的时候,将试题统合为一个测试专题,将心理试题添加到数据库中,当用户做心理评测的时候,会根据默认的算法随机从数据库中找到五个题目进行测试的功能。

6.1.1 新建测评功能 

该部分属于测评功能模块。提供的主要功能是用户输入账号、密码进行登录,系统后台通过连接数据库查询用户是否存在,以及用户的身份是否为管理员,然后根据用户的身份返回给用户不同的系统页面。此功能属于管理员功能,管理员通过与用户交流,根据用户的需求来设置标题和测试内容,对本块的测评做一定的介绍,最后设计并发布完成之后,用户便可以进行测评。

新建测评具体如图7所示。

图7 新建测评页面

主要代码如下: 

Questionnaire qn = new Questionnaire();

        qn.setTitle(title);

        qn.setAbs(abs);

        qn.setDef_conclusion(def_conclusion);

        System.out.printf("title=%s, abstract=%s, def_conclusion=%s\n", title, abs, def_conclusion);

        System.out.println(qn);

        qnDao.createQuestionnaire(qn);

        Pattern intPattern = Pattern.compile("(\\d+)");

        Enumeration<String> keys = request.getParameterNames();

        System.out.println("questionnaire:");

        while(keys.hasMoreElements()) {

            String key = keys.nextElement();

            System.out.println(key);

            if(key.matches("q\\d+-title")) {

                Matcher intMatcher = intPattern.matcher(key);

                intMatcher.find();

                int ord = Integer.parseInt(intMatcher.group(1));

                String q_title = request.getParameter(key);

                long q_power = Long.parseLong(request.getParameter(String.format("q%d-power", ord)));

                System.out.printf("%d: title=%s, power=%s", ord, q_title, q_power);

                qnDao.createQuestion(qn.getQnid(), q_title, q_power);

            } else if(key.matches("a\\d+-result")) {

                Matcher intMatcher = intPattern.matcher(key);

                intMatcher.find();

                int ord = Integer.parseInt(intMatcher.group(1));

                String a_result = request.getParameter(key);

                long a_min = Long.parseLong(request.getParameter(String.format("a%d-range-min", ord)));

                long a_max = Long.parseLong(request.getParameter(String.format("a%d-range-max", ord)));

                System.out.printf("%d: result=%s, %d~%d", ord, a_result, a_min, a_max);

                qnDao.createConclusion(qn.getQnid(), a_min, a_max, a_result);

6.1.2 心理测评大全功能

心理测评大全功能是该模块的主要功能,心理测评功能是在管理员新添加测试题目后用户和管理员都可以参与的一个功能。不管是用户还是管理员第一次测试时,点击查看测评结果,如果测评过一次,那么就会直接显示测试结果。否则会显示你还未进行过测评,点击这里进行测评,然后进行测试。测试时,可以选择自己感兴趣的方向进行答题或随机进行选择。假如看到结果后对自己的测评结果不满意或者在这过程中发生了非智力性失误可以选择删除答卷并重测。

心理测评大全具体如图8所示。

图8 心理测评大全图

具体核心代码如下:

       long uid = (Long)session.getAttribute("uid");

        User u = userDao.getUserByUid(uid);

        PageHelper.startPage(pageNum, pageSize);

        List<Questionnaire> qns = qnDao.getAllQuestionnaires();

        ModelAndView mv = new ModelAndView("questionnaire-list");

        mv.addObject("pageInfo", new PageInfo<Questionnaire>(qns));

        mv.addObject("user", u);

        mv.addObject("qns", qns);

6.1.3 查看我的心理报告功能

通过查看自己的心理报告,测试者可以更好地了解自己某一方面的特点和不足,进而更好的认识自己。如有必要,可以自己去到心理咨询处找老师进行帮助,早发现,尽早地找到专业人士可以预防和治疗,避免事情向更糟糕的局面发展下去。因此,每个人都要重视自己的心理报告单,做自己健康的第一负责人。如图9所示。

图9查看我的心理报告

具体核心代码如下:

long uid = (Long)session.getAttribute("uid");

        User u = userDao.getUserByUid(uid);

        User obju = userDao.getUserByUid(obj_uid);

        PageHelper.startPage(pageNum, pageSize);

        List<Questionnaire> qns = qnDao.getAllValidQuestionnaire(obj_uid);

        List<Conclusion> cs = new ArrayList<>();

        for(Questionnaire qn : qns) {

            long totalScore = qnDao.getTotalScore(obj_uid, qn.getQnid());

            String text = null;

            if(totalScore >= 0) {

                text = qnDao.getConclusion(qn.getQnid(), totalScore);

                if(text == null) {

                    text = qn.getDef_conclusion();

                }

            }

            cs.add(new Conclusion(totalScore, text));

        }

        ModelAndView mv = new ModelAndView("my-questionnaire-list");

        mv.addObject("pageInfo", new PageInfo<Questionnaire>(qns));

        mv.addObject("user", u);

        mv.addObject("obju", obju);

        mv.addObject("cs", cs);

        mv.addObject("qns", qns);

6.2心理科普模块

心理科普模块通过宣传心理学经典理论知识向大家科普从而使人们保持心理健康。在平时生活中,心理健康越来越被人所重视,心理知识科普有着一定的必要性。并不是说没有疾病就意味着心理健康良好,心理健康是能保持一种持续良好的心态,人们在这么一种心态下,做任何事情都能保持积极的状态,拥有坚强的神经和强大的毅力,面对不同的情况能够做出相应的调整进而发挥出自己拥有的潜能。心理小知识为这一种行为给出了解释,让人们在理解自己的同时,也能理解他人的心理,并通过这些效应规避风险,趋利避害。有些心理学效应,了解过后你会发现很多心结都能解开,并且能利用它们去正确处理一件事情、一段关系。所以,从长远来看,心理科普重要而且紧急。

6.2.1添加专栏功能

添加专栏就是根据当前热门的事件或者经典的故事,运用心理学的方法分析它的原因结果后,生动地给大家展示出来。让大家知道怎么从心理学角度的看问题。

添加专栏具体如图10所示。

图10添加专栏

具体核心代码如下:

public String article_new(@Param("title") String title, @Param("text") String text) {

        int i = articleDao.newArticle(title, text);

        if(i == 0) {

            return "添加文章失败";

        }

        return "";

6.2.2专栏大全功能

专栏大全功能主要是管理员发布的一些心理小知识,使得大家在遇到负面情绪时,不再只是陷入困惑,而主动出寻找深层次的压力和原因,主动进行自我干预。遇到不好的事情,不在任由情绪操控自己,而是更习惯于冷静去分析事情背后的关系。掌握好心理调整的方法,使自己处于良好的心理状态,可以提高生活品质。

专栏大全具体如图11所示。

图11添加专栏

具体核心代码如下:

long uid = (Long)session.getAttribute("uid");

        User u = userDao.getUserByUid(uid);

        PageHelper.startPage(pageNum, pageSize);

        List<Article> articles = articleDao.getAllArticles();

        ModelAndView mv = new ModelAndView("article-list");

        mv.addObject("pageInfo", new PageInfo<Article>(articles));

        mv.addObject("user", u);

        mv.addObject("articles", articles);

6.3系统管理模块

系统管理模块主要就是用户管理员管理功能,其主要对高校心理测评系统里面的所有使用者进行统一管理,例如修改权限,管理员将用户和管理员切换功能,查看用户的测评结果等等,具体的操作需要根据实际情况来判断。

6.3.1用户管理功能

 用户管理功能负责对高校学生心理测评系统中的所有用户进行管理,在对这些用户进行管理时将所有的用户测评信息同步到该心理测评系统中。

用户管理具体如图12所示。

用户管理具体如图12所示

具体核心代码如下:

long uid = (Long)session.getAttribute("uid");

        User u = userDao.getUserByUid(uid);

        PageHelper.startPage(pageNum, pageSize);

        List<User> users = userDao.getAllUsers();

        ModelAndView mv = new ModelAndView("user-list");

        mv.addObject("pageInfo", new PageInfo<User>(users));

        mv.addObject("user", u);

        mv.addObject("users", users);

7 测试

   测试不仅仅是测试。测试过程还包括确定要测试什么(测试范围和条件)以及产品如何被测试(制作测试用例),建立测试环境,执行测试,最后再评估测试结果,检查是否达标,并报告进展情况。然而,这要这些是远远不够的,依据大部分进行软件测试人员的经验,测试人员的感觉有时候也很重要。其认为什么地方你存在问题,大概就会在该处发现问题。然而,如果你把测试设计放在最后阶段,就错过了发现结构设计和业务逻辑设计中存在的严重问题的时机,那时间要修复这些缺陷将非常困难。因为此时缺陷已经存在于整个系统中,很难去查找及解决,需要花费的代价也非常高。测试不是最后阶段才执行的,它始终贯穿系统的整个开发系统中。

7.1 测试方法

系统立项之初,我们对系统的测试方法提出很多的问题。在需求验证阶段和功能开发阶段的测试。我们测试要选用什么样的频率和方法。我们测试要采用什么方法和对什么内容测试。根据以上思考,我们选用黑白盒测试的方法。

7.1.1白盒测试

测试代码的逻辑结构,测试注重于对代码的功能性和逻辑性进行测试功能的实现。测试人员在测试之初,要对代码算法和代码逻辑有自己的认识。这样对系统功能性测试才能更好的发现问题和提出对应的解决方案。

7.1.2黑盒测试

测试开发人员对系统的操作能力,系统的开发的界面应该是简单易懂的。通过测试人员的黑盒测试,我们可以看出界面的效率以及需求功能的完成度。同样,我们通过黑盒测试可以很快的提取出系统在界面逻辑上可能产生的问题。

7.2 基本功能测试用例

测试项目:登录功能的测试是系统最开始的部分,也是决定系统走向的部分。因为登录功能设计到用户信息的查询和用户保密措施。大部分系统采用对密码的存储方式都是使用密文的方式,用户密码大多都是通过加密实现的。所以,本次测试主要测试用户名和密码结合所产生的不同所得出结论。

输入:账号admin,密码admin。

预置条件:数据库中存在此账号和密码并且一致。

操作步骤:测试方法采用黑盒测试,输入账号和密码查看执行结果是否正确。

预期输出:测试内容如图表9。测试登录失败截图如图13所示。测试成功截图如图14所示。

表9 登录测试

操作

期望结果

执行结果

账号密码输入错误

输入不完整

提示错误

表单完整性校验

错误提示

错误提示

输入正确

成功

进入主页

8 总结

在本次的程序设计的过程中,我收获的不仅仅是代码效率和思维逻辑上的进步,还有经过这次系统的实战练习,我对项目的设计过程也有了自己的认识和理解。系统在设计之初就需要进行大量的准备工作,从程序的设计到程序的实现,每一个功能的构思和完成,都需要经过反复的修改。我将大部分的时间和精力用在程序的初始化阶段,因为程序的开头虽然容易,但要考虑好程序的方向和具体实现的功能,就必须踏踏实实的耐心进行每一步,才能保证后续设计不出现严重的问题。我也收获了在程序设计完成后,对程序进行功能性测试的必要性。通过这次程序的开发,我对系统的开发过程也有了一个很深刻的认识和理解,我明白了想要做好一个程序不仅仅需要技术,还需要对业务逻辑做好梳理。遇到困难不能总是退而求其次,就像这个程序的设计是为了服务高校学生的心理健康,更需要认真的踏实的完成。

源码获取方式:

1.直接点击文章最上方下载

2.联系博主:通过下方联系我即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AICurator

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值