Java课设-基于Java的心理健康测评系统

(一)课程设计要求

请根据本学期所学的Java和面向对象的思想实现一个完整的系统。开发环境和工具不限,大作业题目和内容自定,代码总行数不低于800行(含注释)。鼓励围绕这次疫情期间产生的学习、生活、工作的需求来开发相应程序。

具体要求如下:

  1. 采用面向对象程序设计要运用继承、多态等机制;
  2. 代码规范需遵循Java编码规范要求;
  3. 具备文件读写功能,程序中的数据要以文件方式保存;
  4. 程序中要求具备异常处理
  5. 使用第三方类库或者插件需在报告和程序中注明来源和版权信息,并详细说明使用了该第三方类库或者插件哪部分功能。
  6. 要求具备菜单功能,根据用户的输入,执行相应的操作。在菜单选项中,必须包含“关于”一项,该菜单项用来显示本作业的基本信息,包括程序名称、版本、完成时间,姓名、学号、班级等信息;
  7. 程序要求做到界面友好,对于用户的输入操作要有明确的提示信息,并对输入的数据进行合法性和正确性的检查;
  8. 每个文件、类、方法的前面都必须有规范的注释,注释中要说明作者是谁、主要功能、编写时间等信息。变量、常量、关键语句等都必须有注释说明。
  9. 所有源程序代码(含注释)都要拷贝到大作业报告的【3.3 程序实现】中。
  10. 源代码为多文件项目,合理分配好各个源代码文件内容。
  11. 本报告文档是作业的一个重要内容,文档中的每个内容都必须认真按照要求撰写,否则扣分。

(二)心理健康测评系统设计

目录

一、需求分析

1.1、开发环境

1.2、功能需求

二、系统分析与设计

2.1、本程序需解决的关键技术问题

2.2、总体功能图

2.3、类图

2.4、程序流程图(功能函数)

三、程序设计与实现

3.1、项目文件组织结构

3.2、程序设计

3.3、程序实现

四、系统测试

4.1测试目的

4.2 测试范围

4.3测试情况

4.4测试时的发现

五、本程序高内聚低耦合的特点,易扩展、易维护

1.高内聚低耦合特点

2.易扩展性、易维护性的特点

六、总结与体会

6.1开发过程中遇到的困难及如何克服困难

6.2个人收获、得到的启示或教训

6.3大作业创意点

6.5通过大作业的完成深入理解的知识点及得到了哪些方面的锻炼

6.6高效学习Java语言与实践技能的建设性意见和建议​​​​​​​

七、自评

7.1 自评分

7.2 自评语


一、需求分析

1.1开发环境

操作系统及版本:macOS 12.2.1

开发工具及版本:JDK版本:17.0.2        IDEA版本:2021.3.2

1.2功能需求

近两个月来我市疫情多次反复导致我校不得不长期采取封校措施确保学生的安全这也使同学们数十天无法外出节假日无法回家网购不通学生抵触心理渐重况且大学生作为一个特殊的社会群体他们还有许多自己特殊的问题 如对新的学习环境和任务的适应问题对专业的选择与学习的适应问题理想与现实的冲突问题人际关系的处理与学习恋爱中的矛盾问题以及对未来职业的选择问题等等因此进行及时的心理健康测评十分必要此心理健康测评系统可以实现对学生的疫情相关心理测评压力应对心理测评在此项目中我们进一步扩大测评范围对数月居家线上教学的老师们也纳入测评对象了解老师们的心理状况这也使各大高校对心理健康测评系统的需求大大增加

二、系统分析与设计

2.1本程序需解决的关键技术问题

2.1.1.如何从现实生活中提取对象:从日常生活中的心理健康测评系统出发,测评的对象有每位学生、每位老师,操作此系统的为某管理员,此三种对象分别属于学生类,老师类,管理员类,这三个类都有一些共同的属性,将其提取出来作为普通人类的属性,并作为父类,由学生类、老师类,管理员类继承。

2.1.2.如何运用多态、运用哪种类型的多态

(1)继承产生的多态:首先将普通人类定义为抽象类,内部定义登录,注册的抽象方法,学生类,老师类继承普通人类并重写以上方法。在心理健康测评测试类中使用向上转型实现多态。

(2)接口产生的多态:考虑的用户需求,学生类和老师类均实现疫情相关心理健康测评接口,在心理健康测评测试类中运用向上转型分别使此测评接口引用指向学生类和教师类对象,由此实现多态。

2.1.3如何合理的设计并运用接口提高代码的可扩展性:

将每个测评类型如压力应对心理测评设计为一个接口 ,每个接口中有开始测评和测评结果分析两个抽象方法。可扩展性的体现:后续对其他类型的需求增加,只需设计出对应的接口,内部有测评和测评结果分析的抽象方法。然后让相关类实现此接口即可,对整体的代码并不需要做较大改动。

2.1.4 用户注册功能中如何获取验证码设置密码,验证码多次输入错误如何处理:

通过使用Random类获取(验证码位数可调)随机数;将获取验证码的相关代码封装为getCode()方法,采用递归处理验证码多次输入错误的情况。

2.1.5如何实现文件读写并进行异常处理:

IO字符输入输出流,使用try catch语句进行异常处理。

2.2总体功能

2.3类图

Java课设-基于Java的心理健康测评系统_第1张图片

2.4程序流程图(功能函数)

Java课设-基于Java的心理健康测评系统_第2张图片

Java课设-基于Java的心理健康测评系统_第3张图片

三、程序设计与实现

3.1、项目文件组织结构

3.1.1项目文件组成

  1. 项目名:HelloJava
  2. 模块名:lab7
  3. 包名:com.zzh
  4. 类名:Person、Student、Teacher、Administrator、PsychologicalTest、
  5. 接口名:EpidemicPsychology、StressPsychology

3.1.2关系:所有类及接口位于com.zzh包下,软件包com.zzh 处于模块lab7 内,而整个模块为项目HelloJava的内容之一。

3.2程序设计

3.2.1、普通人类

  1. 类的设计意图及主要功能提取出学生类老师类管理员类中的共同属性与其形成继承关系定义为抽象类内部定义注册和登陆的抽象方法子类必须重写这两个抽象方法向上转型后可产生多态可提高代码复用性及可扩展性
  2. 运用到的关键知识点抽象类抽象方法的使用封装
  3. 主要成员函数的设计意图及功能介绍:register()、login()方法设计为抽象方法子类对其进行重写

3.2.2、学生类

  1. 类的设计意图及主要功能在继承了普通人类的基础上定义一些学生特有属性学号专业班级压力应对测评结果);实现疫情相关心理健康测评接口和压力应对心理测评接口并对普通人类中登陆和注册方法疫情相关心理健康测评接口及压力应对心理测评接口中的抽象方法进行重写在心理测评测试类中由上转型对象调用
  2. 运用到的关键知识点集合元素的添加遍历boolean型数组的定义方法的递归switch语句的嵌套Random类获取随机数方法重写等
  3. 主要成员函数的设计意图及功能介绍:

<1>epidemicTest():用户可选择此功能进行疫情相关心理健康测评系统会根据用户每道题与最佳答案是否一致判断每道题的正误返回正确的题目数在测评结束后用户可根据需求查看每道题的结果及正确答案

<2>epidemicTestAnalyse():将参数设计为int类型的count变量系统可根据传入的数进行分析不同大小等级的数可得到不同的测评分析用户可选择此功能查看疫情相关心理健康测评结果将返回值设计为String类型便于将测评结果导入集合中的目标对象实现用户信息同步测评结果是学生类的成员属性之一)。

<3>register():为了后面在测试类系统能够找到目标对象将测评结果导入集合便将返回值设置为String类型返回用户密码将其作为集合元素遍历时寻找目标对象的关键信息找到目标对象后调用目标对象.set方法即可注册首先需要用户输入基本信息进行绑定在排除用户名重复后设置密码并确认密码即可

<4>getCode():此方法的设计主要是为了解决验证码多次输入错误需重新输入的问题同时将获取验证码并设置密码的功能封装为一个独立的方法具有一定的合理性本方法通过方法的重复调用类似于递归),在验证码输入错误时能够重新运行此方法获取验证码主要通过Random类的nextInt()进行操作此处还可以对验证码位数进行设置

<5>login():用户可通过输入学号和密码进行登陆将返回值设计为boolean类型可便于在测试类中使用if语句对多种情况如密码错误用户名不存在等进行提示

3.2.3老师类

  1. 类的设计意图及主要功能在继承了普通人类的基础上定义一些教师特有属性工号任教学科);同时实现疫情相关心理健康测评接口并对普通人类中登陆和注册方法疫情相关心理健康测评接口中的抽象方法进行重写重写的方法在心理测评测试类中由上转型对象调用
  2. 运用到的关键知识点集合元素的添加遍历boolean型数组的定义方法的递归switch语句的嵌套方法重写等
  3. 主要成员函数的设计意图及功能介绍:此处与学生类的主要成员函数设计意图及功能基本一致不作详细介绍

3.2.4管理员类

  1. 类的设计意图及主要功能在继承了普通人类的基础上重写其登陆及注册的抽象方法特有成员属性定义了一个管理员类集合用于储存管理员相关信息设计此类主要是为了实现对已注册的学生教师用户进行信息的查看和储存为了贴近实际对管理员人数进行了限制最多为三人管理员注册登陆后可查看某一位学生的信息及测评结果也可显示储存所有用户的信息及测评结果此处实现了文件的读写及异常处理
  2. 运用到的关键知识点文件读写Java)、异常处理集合元素的添加遍历等
  3. 主要成员函数的设计意图及功能介绍:

<1>search():设计此方法可以实现对目标用户信息及测评结果的查看为了提高用户的可操作性提供按姓名查询按学号/工号查询两种方式主要通过switch语句和对集合元素遍历实现

<2>showOneStu()、showOneTea():设计此类型的方法主要是因为在显示查看用户信息时需要对此类型代码进行重复编写将其封装成一个方法可以很好的提高代码的复用性此外将其参数分别设计为学生类和老师类的对象就可以很好的解决用户属性的获取问题

<3>showStudent()、showTeacher():设计此类型方法可以使用户在管理员端根据需求决定是否仅显示学生用户信息仅显示教师用户信息或全部显示方法主要通过遍历学生类老师类集合分别调用showOneStu()、showOneTea()实现

<4>printFile():此方法的设计主要是为了在管理员端实现在文件层次对信息的储存此功能仅对管理员开放权限方法的实现具体通过调用BufferedWriter的相关方法实现同时利用try catch进行异常处理

<5>readTxtFile():此方法的设计主要是为了使管理员能够读取已存入文件的用户信息此功能仅对管理员开发权限方法的具体实现通过调用BufferedReader包装类中的相关方法循环读取文件中的数据同时利用try catch进行异常处理

3.3.5心理健康测评测试类

  1. 类的设计意图及主要功能设计此类是为了实现用户的功能操作程序其他类接口所设计的功能在此类得到实现用户根据需求进入学生端教师端管理员端查看“关于系统”或者退出系统
  2. 运用到的关键知识点多态接口向上转型向下转型异常处理switch语句
  3. 主要成员函数的设计意图及功能介绍:

<1>menu():设计此方法用于显示主界面并为用户提供功能选择-进入管理员端学生端或教师端退出系统查看关于系统

<2>about():设计此方法用来显示本作业的基本信息,包括程序名称、版本、完成时间,姓名、学号、班级等信息。可使用户进一步理解系统相关信息。

<3>manager():设计此方法可实现管理员端的功能正常运行用户在注册登陆成功后可使用相应功能包括查看显示储存和读取文件信息等功能具体通过定义的管理员类的上转型对象调用管理员类内重写的登陆注册方法然后进行向下转型得到管理员类对象继续调用管理员类内的特有方法实现查看显示储存读取功能

<4>studentManager():设计此方法可实现学生端的功能正常运行用户在注册登陆成功后可使用相应功能包括进入疫情相关心理健康测评压力应对心理健康测评查看对应测评结果及退出登陆等功能具体通过定义的学生类上转型对象调用学生类中重写的相关方法来实现

<5>teacherManager():设计此方法可实现教师的功能正常运行用户在注册登陆成功后可使用相应功能包括进入疫情相关心理健康测评查看对应测评结果及退出登陆等功能具体通过定义的教师类上转型对象调用教师类中重写的相关方法来实现

3.3.6疫情相关心理健康测评接口

压力应对心理健康测评接口与之类似在此不做详细介绍

  1. 接口的设计意图及主要功能将此类测评的一种功能抽象成一个接口可使实现该接口的类必须重写该接口中的抽象方法
  2. 运用到的关键知识点接口的设计原则抽象方法
  3. 主要成员函数的设计意图及功能介绍:

<1>epidemicTest():实现类重写该方法后可设计具体的测评方法

<2>epidemicTestAnalyse(int count):与测评方法配套将测评方法的返回值作为参数由实现类重写根据传入的参数值设计对应的具体测评分析

3.3程序实现

3.3.1在学生类/教师类的epidemicTest()方法的设计中考虑到用户实际的需求往往需要储存用户每一道题的答题结果及正确答案使用户在测评结束后可根据需求选择是否查看每道题的答题情况此处我定义了两个数组boolean类型的answer数组String类型的correct数组分别储存答题正误情况及正确答案在用户输入每道题答案后对数组元素分别进行赋值在最后利用for循环对每道题的答题情况进行显示如下

for(int i=0;i<10;i++){
    System.out.println(""+(i+1)+"题:"+answer[i]+"      正确答案:"+correct[i]);
}

3.3.为了贴近现实情况选择了通过获取验证码设置密码完成新用户注册的流程验证码类似于随机数程序采用了Random类的nextInt()方法获取随机数验证码的具体位数可通过如下代码调节ss.nextInt(10000) + 1000),默认为四位数为了提高程序健壮性需考虑到边缘情况如密码两次输入不一致此情况直接提示错误即可返回“null”在注册方法中提示重新注册对于验证码输入错误程序除了进行错误提示还采用了类似于递归的方法进行处理保证用户可以持续获取验证码直到输入正确核心代码如下

public static String getCode(){

……

else {
    System.out.println("验证码错误!请点击重新获取");
    new Scanner(System.in).nextLine();
    //采用递归,处理验证码输入错误的情况
      return getCode();
}

3.3.为了使管理员能够在管理员端查看用户的测评结果将测评结果设计为

了普通人类、学生类(特有的压力应对测评结果)中的一个成员属性。此时学生、教师大部分信息都是在注册时被添加进对应的集合,而测评结果则是在测试类进行了测评后得到。此处为了将测评结果导入目标对象所在的对应集合,实现信息同步,我将注册方法的返回值设计为String,利用注册方法返回的用户的密码,然后将密码作为关键信息通过集合遍历找到目标对象,在将测评结果导入学生类/老师类集合中。具体代码如下:passwords=teacher.register();

…………

String analysis=teacher2.epidemicTestAnalyse(counter) ;
 System.out.println(analysis);
 for (int i=0;iarray2.size();i++){
     Teacher ss=Teacher.array2.get(i);
     //利用注册方法返回注册用户的密码,根据密码搜寻到目标对象,再将测评分析导入学生类集合中
     if(ss.getPassword().equals(passwords)){
         ss.setAnalysis(analysis);
     }
 }

3.3.程序在每一层功能菜单中都提供了退出功能包括退出系统退出学生端/老师端/管理员端退出登陆每一层功能选择都通过switch语句控制在测试类中在学生端的功能选择的循环内部登陆功能的分支内使用了一个while循环使用户可实现多次功能选择但此时一个break语句仅能够跳出内部的switch语句却无法跳出while循环此处我采用了break语句的标记法将标记放在学生端switch语句外部即可实现跳转到目标位置如下此处出现了四重循环

System.out.println("\t\t     欢迎进入心理健康测评教师端    \t\t");
while (true) {

……

System.out.print("\t         请输入您的功能选择:");
String choice = sc.next();
//采用标记,使break退出多重循环,达到指定位置,此处跳出外部switch循环,达到退出登陆的目的
ok:

switch (choice) {
    case "1":
        passwords=teacher.register();
        break;
    case "2":
        if (teacher.login()) {
            System.out.println("登陆成功!");
            while (true) {

String option = sc.next();
switch (option) {

……

case "3":break ok;

}……}……}

}

四、系统测试

4.1测试目的

发现程序可能出现的问题、潜在的bug;为开发过程提供信息,判断程序是否满足实际的质量要求;对程序各方面功能进行评估,测试执行进度是否在预想内;预防缺陷,提高程序、产品质量;增加开发者信心

4.2 测试范围

4.2.1功能测试:数据输入是否异常、注册、登陆、进行测评及查看测评结果功能、退出功能、管理员端查看、显示功能、是否具有文件读写功能

4.2.2性能测试:CPU、测试环境与生产环境配置、内存、网络、启动时长

4.3测试情况

4.3.1测试用例覆盖情况:

  1. 面向项目的需求覆盖率:测试用例基本可以覆盖用户的实际需求,用户需求与测试建立了一对多的映射关系。
  2. 面向技术的代码覆盖率:被执行的代码条目数占整个条目数的百分比接近100%,大部分代码都在程序功能运行中发挥了作用。

4.3.2测试所花费时间:七分钟

4.3.3测试工具使用情况:使用了postman进行了接口的测试、使用了Coverity进行了代码扫描

4.4测试时的发现

4.4.1测试中遇到的典型错误的表现形式:

  1. 上转型对象未进行向下转型就调用子类特有的方法时出现类型转换异常:ClassCastException
  2. 空指针异常:java.lang.NullPointerException

4.4.2定位错误点的判断方法、测试手段:IDEA出现报错并自动定位错误点;使用debug进行测试

4.4.3从健壮性出发实施的测试:

  1. 输入功能菜单未给出的数字,测试边缘情况
  2. 在未进行测评时查看测评结果
  3. 在未注册时尝试登陆
  4. 注册时输入已注册的用户信息测试用户已存在的情况处理
  5. 登陆时,分别测试密码输入错误、用户名错误和全部输入错误的情况

五、本程序高内聚低耦合的特点,易扩展、易维护

1.高内聚低耦合特点

本程序在lab7模块下完成,主要从类、接口的层次上分析内聚和耦合性。程序由普通人类、学生类、教师类、测试类、疫情相关心理健康测评接口、压力应对心理健康测评接口构成。每个类的独立性较高。每个类的成员方法只完成一件事。如老师类、学生类、管理员类中都具有注册、登录的成员方法,并且只负责注册和登录。类与类之间、成员方法之间的交互复杂度较低另外由于本程序采用了类的继承,因此必然存在耦合关系。此外,在管理类、老师类都调用了学生类定义的getCode方法,出现了一定的耦合。除此之外,每个类及成员方法都独立地完成某个特定的子功能。

2.易扩展性、维护性的特点

本程序将心理测评的功能设计为了对应的接口,同时将普通人类设计为了抽象类。当用户的需求出现改变时,如需要增加其他的测评类型。此时我们只需要另外设计出对应的测评功能接口,让需要进行该测评的类实现该接口即可。又如测评系统有了新的测评对象,以工作人员为例。此时,我们也只需要设计出工作人员类,使其继承普通人类,同时实现需要测评的对应接口,程序的其他代码并不需要做出过多的改动。此处对扩展(测评类型、测评对象)开放,对修改关闭(测评接口、普通人类内容不变),这也是开闭原则的很好体现。总之以上几点很好的体现了程序的可扩展性可维护性

六、总结与体会

6.1开发过程中遇到的困难及如何克服困难

6.1.1

  1. 困难:无法将测评与测评结果进行同步绑定,即用户无法在测评结束退出后查看测评结果
  2. 解决:将epidemicTest()方法的返回值定义为int类型即返回正确的答题数定义变量counter获取其返回值并作为epidemicTestAnalyse(int count)方法的参数epidemicTestAnalyse(int count)程序根据传入的参数大小返回对应的测评结果分析

6.1.2

  1. 困难在管理员端无法查看显示已注册用户的测评情况只能实现学生端/教师端登陆后实时查看
  2. 解决将测评结果设计为普通人类、学生类(特有属性:压力应对测评结果)中的一个成员属性。此时学生、教师大部分信息都是在注册时被添加进对应的集合,而测评结果则是在测试类进行了测评后得到。此处为了将测评结果导入目标对象所在的对应集合,实现信息同步,将注册方法的返回值设计为String,利用注册方法返回的用户的密码,根据密码通过集合遍历找到目标对象,在将测评结果导入学生类/老师类集合中。

6.1.3

  1. 困难:在退出登陆的过程中,单一的使用break语句无法使用户退出登录,而是重新回到功能选择界面。
  2. 解决:查找资料后尝试使用带标记的break语句,使程序跳转到学生端switch语句外部,这样就可以实现退出登录

6.1.4

  1. 困难:没有找到合适的方法实现文件读写功能?使用了合适的输入输出流,却发现文件中没有读入用户的信息!

解决:采用了JAVA IO流的BufferedWriter和BufferedReader包装类,创建对象后调用writer方法即可读入。结合程序特点,使用for循环进行多次读取数据就可以将已存在的信息全部读入即可;

同时对原有的文件名/文件路径进行修改,查阅资料后发现Window系统的文件名与Mac系统有所不同,学习了一些Mac电脑终端命令后,得到了正确的文件名/路径:/Users/peach/Desktop/stu.txt目标文件也按照指令读入了相关用户信息。

6.1.5

  1. 困难:实现了文件读写功能后发现文件中的信息没有按行分布,十分不整齐。

解决:学习Java IO流相关知识后发现信息的储存时调用的writer方法为按字符读入,不自动换行。只需在每行信息读入后加一个newLine()方法可以使信息按行读入文件。

6.1.6

  1. 困难:由于程序需实现的功能比较多,在如何运用多态及接口、运用哪种多态方面出现了问题!
  2. 解决:同时使用继承和接口产生的多态。思考后发现,管理员类也继承了普通人类,但从实际出发,管理员,并不需要在管理员端进行测评。因此将测评方法及测评结果分析方法放在普通人类中并不是最佳选择。我把登录和注册的方法放在了普通人类,并定义为抽象方法,子类对其进行重写。另外设计了两个测评接口,里面有测评和测评结果分析的抽象方法。此时需要进行测评的类如学生类、老师类实现该接口即可。考虑的实际情况,只让老师类实现疫情相关心理健康测评接口;对于多态的体现,在测试类中,运用向上转型得到上转型对象,调用子类/实现类中重写的方法即可。

6.2个人收获、得到的启示或教训

6.2.1收获与启示

  1. 类和设计应该符合单一职责原则、开发封闭原则、依赖倒置原则;接口的设计在以上基础上还应该符合接口分离原则。真正做到面向对象编程。
  2. 在对面向对象程序的设计过程中,应该充分运用多态和接口,这样可以帮助我们设计出代码易于复用、功能易于扩展、运营易于维护的程序。
  3. 在程序设计过程中,应该要有全局意识。充分考虑到程序的健壮性,对多种边缘情况进行处理,不断提高程序的质量及功能。
  4. JAVA是一个十分全面且不断在发展的面向对象编程语言。在运用已学知识已经无法解决现有问题时,应该果断查阅相关文献资料,进行学习,运用于所开发的程序上解决已有的问题,或者进一步优化程序的设计。

6.2.2开发过程中得到的教训:刚开始学习多态时,总是为了使用多态而去使用多态,想很多办法去体现多态。忽略了重要的一点:为什么要去使用多态?思考后,我认为使用多态不是为了单纯的体现多态,而是要利用其在程序设计方面具有的优点优化程序。如可以提高代码的复用性、提高程序的可扩展性及可维护性。

6.3大作业创意点

6.3.1程序的功能功能较多、较为齐全,能够很好的满足用户的需求

6.3.2程序的功能设计很多方面都贴近实际,如注册时需输入电话号码获取验证码,验证码输入错误也可以重新获取;除此之外,功能也按照现实需求设计,如只对学生开发压力应对心理健康测评,只对管理员开发保存信息至文件、读取文件信息的功能。

6.3.3程序面向了学生、教师、管理员三种对象设计了学生端、教师端、管理员端三个操作平台。针对不同的操作平台,设计了不同的功能体系。

6.4实际想法与最初想法的差异与不足:

最初我想设计一个类似于心理健康测评小程序的系统。它可以实现用户信息的实时储存,即使此次退出了系统,下次登录后,输入设置好的密码依旧能够重新登录,并可以查看之前的测评记录也可以重新进行测评。但实际设计时,发现很难利用所学知识解决这个问题,因为程序运行时,信息储存在ArrayList集合中,程序终止运行后,里面的信息全部就会被清空。于是将大部分精力花在了扩展现有程序的功能上。现有程序只能在管理员端实现简单的文件读写功能。

6.5通过大作业的完成深入理解的知识点及得到了哪些方面的锻炼

6.5.1深入理解的知识点:多态、接口、抽象类、类与类之间的继承关系

6.5.2获得到的锻炼:能够根据现实情况及需求清晰的构建出一个系统的大体功能框架,并对其进行概要设计和详细设计。如在设计心理健康测评系统时,根据使用对象:学生、教师,操作对象:管理员,提取共同属性确定继承关系。然后设计主菜单,主菜单可选择进入学生端、教师端或管理员端。每个操作端都应该具有注册和登录功能。登录成功后,又应该要有一层功能选择体系,每一层功能选择都应该包含退出功能的选项。在设计好具体的框架后就对每个部分进行详细设计。

6.6高效学习Java语言与实践技能的建设性意见和建议

首先要找到优秀可靠的学习资源并深入学习,如本学期老师安排的黑马程序员网课。第二是要多实践即敲代码,当然这是在已经构建出程序的大致框架的前提下进行。先思考后编写代码效率会更高。

最后,学会在有关编程网站多查找各种资料各种问题的解决办法,经过自己的甄别和自主学习后形成自己的认识

七、自评

7.1 自评分

98

7.2 自评语

本系统基于JAVA基础知识实现,同时面向对象进行设计,重点运用了封装、继承和多态的机制。从功能上看,心理健康测评系统具有较为全面的功能,可以满足用户的大多数需求;从程序设计上看,系统实现了文件读写及异常处理的功能 ,且类的设计较为合理;从代码算法上看,创新点不乏,如输入验证码的环节及对应处理、测评方式的设置、题目的设置等。从整体上看,此心理健康测评系统是一个比较完整的系统。但由于所学知识有限,部分功能的设计不是很完美。

​​​​​​​**完整代码见
链接:https://pan.baidu.com/s/1n5Q9j9awYOb7QpfS0_UV6g 
提取码:6XA8 
 

你可能感兴趣的:(Java,实验报告,java,开发语言,后端)