通用心理测试系统的设计和开发.ppt_第1页
通用心理测试系统的设计和开发.ppt_第2页
通用心理测试系统的设计和开发.ppt_第3页
通用心理测试系统的设计和开发.ppt_第4页
通用心理测试系统的设计和开发.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

附录通用心理测试系统的设计和开发 1 系统需求分析 意义 人的心理特性是不能被直接观察到的 而且还存在着明显的个体差异 但是任何一种心理特性总会以一定的行为表现出来 心理测验就是让人们在测验时产生某些行为 即个体对测验题目的反应 并根据这些行为反应来推论其相应的心理特性 在一定程度上有助于我们了解人类的心理活动 并从中得到帮助 例如在现实生活领域 心理测验可以帮助评价个人的智力水平和了解个性特征 可以用于对各种智能缺陷 精神疾病和脑功能障碍的临床诊断 可以为特殊人才的选拔提供参考 心理测验结合心理咨询有助于消除情绪困扰和人格障碍 提高生活品质 1 系统需求分析 现状分析 传统的纸笔测试方法操作烦琐 人工结果统计费时费力 还可能存在计算错误的可能性 而且不利于对测试情况做到汇总分析 因此需要开发一套科学 灵活 易用的通用心理测试系统 能够进行多种类型的心理测试 界面友好 操作简单 能够自动计算分数 实现数据存档和查询功能 1 系统需求分析 通用心理测试系统设计的具体要求包括 1 高效地录入和保存信息 例如测试者的姓名 性别 籍贯 学历数据等 2 方便地完成测试过程 并保证测试的客观性 如自动计时 自动汇总统计结果等 3 实现多次测试结果的汇总 4 实现基于数据库的电子化信息管理 5 具有较强的扩充性 能够适应新的测试内容变化要求等 2 系统流程图 通用心理测试系统的使用者包括两类 测试者和管理员 对于每个新的测试者而言 需要录入其姓名 性别 文化程度等基本信息 然后开始测试 完成所有题目或测试时间到后 显示其测试结果 并把测试结果自动保存到数据库中 对于管理员而言 需要通过口令进行登录 然后可以从数据库中汇总测试结果等操作 3 系统设计思路 界面设计通用心理测试系统的应用程序界面 即MVC模型中的View 包括主窗体 关于窗体 新测试者基本信息录入窗体 显示测试题目并作答窗体 显示测试结果窗体 管理员登录窗体和测试结果汇总窗体等界面 3 系统设计思路 代码设计程序代码设计采用面向对象的事件驱动机制 针对用户界面上的对象的相应事件 主要是Click事件和定时器事件 来激发对象执行所需的操作 即MVC模型中的Controller部分 开始新的测试 显示V2 新测试者信息窗口 显示V3 测试窗口查看测试记录 显示V5 测试结果窗口退出 结束系统帮助 显示V1 关于窗口 3 系统设计思路 数据库设计本系统使用ACCESS数据库作为后台数据库 即MVC模型中的Model部分 在名为test的MDB数据库文件中建立5张表 4 系统实现方法 数据库设计 用户表用途 存放具有查询测试结果权限的用户姓名和口令 用于存放具有查询测试结果权限的用户姓名和口令 管理员登录时输入用户名称和登录口令后 系统将到用户表中查询是否存在输入的用户名称 如果存在则进一步判断输入的登录口令和数据库中的口令是否相同 如果正确 则显示测试结果汇总窗口 否则予以错误提示 4 系统实现方法 数据库设计 试卷表用途 保存试卷的名称 测试时间 测试结果的判定标准和相应结论内容 为实现通用 对现有纸笔类型的心理测试进行分析 归纳出心理测试试题一般规律是通过若干选择题的测试 根据得分所在范围给出测试结论 一般的 一套试题的结论不超过8个 所以试卷表定义了8组结论 分别包括标准和内容两部分 同时考虑到某些测试对时间有所要求 因此定义了每套试卷的测试时间 4 系统实现方法 数据库设计 试卷表用途 保存试卷的名称 测试时间 测试结果的判定标准和相应结论内容 试卷表中的试卷编号字段为主键 通过该主键与试题表连接 执行主窗口中的 系统 开始新的测试 命令 系统显示新测试者信息对话框 其中选择试卷下拉列表的项目是通过读取试卷表的各条记录的试卷名称字段逐一添加 选择试卷后 将记录其对应的试卷编号 以便在测试窗口中显示该试卷对应的试题 4 系统实现方法 数据库设计 试题表用途 试题表与试卷表间为一对多的关系 即试卷表中的一条记录 通过试卷编号与试题表中的多条记录对应 从而形成一份试卷中的多道测试题 每道测试题提供8个选择项 本案例中考虑的是单选测试题的形式 使用者选择试卷后 记录其对应的试卷编号 通过该试卷编号到试题表中查询相应的记录 并在测试窗口中显示该试题的内容和对应的选择项目 4 系统实现方法 数据库设计 测试者表用途 记录测试者的信息 执行主窗口中的 系统 开始新的测试 命令 完成所有试题的测试后系统将测试信息保存到测试者表中 并自动为每个新测试者分配一个ID 4 系统实现方法 数据库设计 测试结果表用途 保存每个测试者所进行的测试的试卷编号和成绩 测试结果表通过 测试者ID 字段与测试者表连接 通过 试卷编号 字段与试卷表连接 执行主窗口中的 系统 查看测试记录 命令 系统登录对话框 成功登录后显示测试结果汇总窗口 窗口中的数据来自测试结果表的记录 4 系统实现方法 数据库设计 测试结果表用途 保存每个测试者所进行的测试的试卷编号和成绩 测试结果表通过 测试者ID 字段与测试者表连接 通过 试卷编号 字段与试卷表连接 执行主窗口中的 系统 查看测试记录 命令 系统登录对话框 成功登录后显示测试结果汇总窗口 窗口中的数据来自测试结果表的记录 4 系统实现方法 窗体设计 建立应用程序启动VisualBasic程序 建立 标准 EXE 项目 4 系统实现方法 窗体设计 主窗体修改窗体属性 拖动窗体右下角 调整窗体大小符合背景图像的大小 编辑主窗体菜单 4 系统实现方法 窗体设计 新测试者 测试 用户登录 显示测试记录和关于窗体添加新窗体执行 工程 菜单中的 添加窗体 命令 显示 添加窗体 对话框 选择 新建 选项卡中的 窗体 图标 单击 打开 按钮 在工程中添加一个新的窗体 修改窗体属性 参见教材 添加控件 设置控件属性 调整控件位置 参见教材 4 系统实现方法 代码编程 主窗体菜单代码 系统菜单 开始新的测试命令PrivateSubmnuStartTest Click 以模态窗口方式显示新测试者信息窗口frmTesterInfo Show1EndSub说明 show方法的参数1表示显示的窗体模式为模态窗体 即关闭显示窗体前对调用它的父窗体不做响应 系统菜单 查看测试记录命令PrivateSubmnuDisplayResult Click 以模态窗口方式显示登录窗口frmLogin Show1EndSub系统菜单 退出命令PrivateSubmnuExit Click 结束系统EndEndSub帮助菜单 关于命令PrivateSubmnuAbout Click 以模态窗口方式显示关于窗口frmAbout Show1EndSub 4 系统实现方法 代码编程 新测试者窗体代码通用模块 定义窗体级变量 保存测试者姓名的变量PublictesterNameAsString 保存测试者性别的变量PublictesterSexAsString 保存测试者教育程度的变量PublictesterEduLevelAsString 保存测试者籍贯的变量PublictesterBirthPlaceAsString注 本例中没有对测试者的信息做检验和保存 只是展现了复选按钮的使用方法 定义数据库连接所需要的变量 DimsConnectAsStringDimsSQLAsStringDimdfwConnAsADODB ConnectionDimrsAsADODB Recordset 保存用户选择的试卷对应的试卷编号 PublicpaperIDAsString 4 系统实现方法 代码编程 新测试者窗体代码Load事件用于初始化窗体控件的内容 PrivateSubForm Load AddItem用于向列表框 组合框中添加一项Me cmbBirthPlace AddItem 北京市 Me cmbBirthPlace AddItem 天津市 定义后台数据库路径和名称DatabasePath App Path 定义SQL查询语言sSQL select from试卷orderby试卷编号 根据SQL查询语言 从数据库中检索相应记录 并在记录集中打开rs OpensSQL dfwConn 1 3 4 系统实现方法 代码编程 新测试者窗体代码Load事件用于初始化窗体控件的内容 遍历记录集Fori 0Tors RecordCount 1 将记录集中的试卷名称内容添加到cmbPaper控件中Me cmbPaper AddItemrs Fields 试卷名称 将记录集中的试卷编号内容添加到cmbPaperID控件中Me cmbPaperID AddItemrs Fields 试卷编号 移动记录集指针 指向下一条记录rs MoveNextNext 关闭记录集rs Close 关闭连接dfwConn CloseEndSub 4 系统实现方法 代码编程 新测试者窗体代码取消按钮的Click事件从内存中卸载当前窗体 PrivateSubcmdCancel Click 卸载本窗口UnloadMeEndSub 4 系统实现方法 代码编程 新测试者窗体代码确定按钮的Click事件检验用户信息是否完整 PrivateSubcmdOK Click 检验是否填写了测试者姓名IfMe txtName Text ThenMsgBox 请填写姓名 vbInformationMe txtName SetFocusExitSubEndIf 检验是否选择了测试者性别 单选按钮的Value属性为True 表示选择 False表示未选择 IfMe optSexFemal Value FalseAndMe optSexMale Value FalseThenMsgBox 请选择性别 vbInformationMe optSexMale SetFocusExitSubEndIf 检验是否选择了测试者文化程度 列表框控件的ListIndex属性未 1表示未选择 IfMe lstEduLevel ListIndex 1ThenMsgBox 请选择文化程度 vbInformationMe lstEduLevel SetFocusExitSubEndIf 4 系统实现方法 代码编程 新测试者窗体代码确定按钮的Click事件保存相关信息到全局变量 如果所有信息均填写或选择 则保存到相应的全局变量中 testerName Me txtName TextIfMe optSexMale Value TrueThentesterSex 男 ElsetesterSex 女 EndIf 列表框中选择的项目内容保存在Text属性中 将该属性的内容保存在testerEduLevel变量中 testerEduLevel Me lstEduLevel Text 组合框中选择的项目内容保存在Text属性中 将该属性的内容保存在testerBirthPlace变量中 testerBirthPlace Me cmbBirthPlace Text 用户选择的试卷名称 可通过cmbPaper的ListIndex获得 通过读取cmbPaperID的list数组的相应项目得到用户选择的试卷名称所对应的试卷编号 保存该试卷标号到paperID变量中 以便在测试窗体中显示该试卷所包含的试题 paperID Me cmbPaperID List Me cmbPaper ListIndex 4 系统实现方法 代码编程 新测试者窗体代码确定按钮的Click事件执行窗体切换 从内存中卸载当前窗体 注 VB中用关键字me代表当前窗体 UnloadMe 从内存中卸载frmMain窗体 UnloadfrmMain 加载并显示测试窗体frmTestfrmTest ShowEndSub 4 系统实现方法 代码编程 测试窗体代码通用模块定义窗体级变量 定义数据库连接所需要的变量 DimsConnectAsStringDimsSQLAsStringDimdfwConnAsADODB ConnectionDimrsAsADODB Recordset 用于保存测试总分DimtotalScoreAsInteger 用于保存每道题的8个选择项目对应的分值Dimscores 1To8 AsInteger 用于保存该试卷规定的测试时间DimtestTimeAsInteger 用于保存已用的测试时间DimusedTimeAsLong 用于判断测试是否结束DimtestOverAsBoolean 4 系统实现方法 代码编程 测试窗体代码Load事件初始化控件与变量 PrivateSubForm Load 使用frmTesterInfo窗体的窗体级变量为当前窗体的控件赋初值Me lblName 姓名 frmTesterInfo testerNameMe lblSex 性别 frmTesterInfo testerSexMe lblEduLevel 文化程度 frmTesterInfo testerEduLevelMe lblBirthPlace 籍贯 frmTesterInfo testerBirthPlace 隐藏测试结论显示所用的文本框控件Me txtResult Visible False 隐藏显示试题的Frame控件Me Frame3 Visible False 初始化总分变量 为0totalScore 0 定义后台数据库路径DatabasePath App Path DatabaseName test mdb 4 系统实现方法 代码编程 测试窗体代码Load事件连接数据库 定义数据库连接字符串sConnect Provider Microsoft Jet OLEDB 4 0 Password UserID Admin DataSource 定义数据库连接对象 并建立数据库连接SetdfwConn NewConnectiondfwConn OpensConnect 定义记录集对象Setrs NewRecordsetrs CursorLocation adUseClient 创建SQL查询字符串 根据测试者选择的试卷编号 到试卷表中查询对应的试卷信息sSQL select from试卷where试卷编号 frmTesterInfo paperID 根据SQL查询字符串 打开记录集 返回查询结果rs OpensSQL dfwConn 1 3 4 系统实现方法 代码编程 测试窗体代码Load事件设置控件内容 将记录集中对应的试卷名称内容显示到当前窗体的标题栏上Me Caption Me Caption rs Fields 试卷名称 将记录集中测试时间字段的值赋给变量testTimetestTime rs Fields 测试时间 设置窗体上显示剩余时间的控件Me lbl剩余时间 Caption testTime 分钟 设置窗体上显示已用时间的控件Me lbl已用时间 Caption 0分钟 关闭记录集rs Close 构建新的SQL查询字符串 根据试卷编号在试题表中查询对应的试题信息sSQL select from试题where试卷编号 frmTesterInfo paperID orderby试题编号 根据SQL字符串打开记录集 发挥查询结果rs OpensSQL dfwConn 1 3 调用showQuestion自定义函数 显示试题内容showQuestionEndSub 4 系统实现方法 代码编程 测试窗体代码showQuestion过程显示题目及选项 PrivateSubshowQuestion 利用lbl试题控件显示试题内容Me lbl试题 Caption rs Fields 试题编号 rs Fields 试题内容 如果该题的选项A字段不为空 则利用控件Option1显示选项A 并使Option1可见 并将选项A对应的分值保存在scores数组的对应元素中 如果该选项为空 则隐藏对应控件 选项B到选项H都按此方法判断和设置 Ifrs Fields 选项A ThenMe Option1 Caption rs Fields 选项A scores 1 rs Fields 选项A分值 Me Option1 Visible TrueElseMe Option1 Visible FalseEndIf 设置默认选择为选项AMe Option1 Value TrueEndSub 4 系统实现方法 代码编程 测试窗体代码开始测试按钮的Click事件设置控件状态启动计时器 PrivateSubcmdStartTest Click 显示包含题目和选项的Frame3控件Me Frame3 Visible True 使下一题按钮可用Me cmdNext Enabled True 使开始测试按钮不可用Me cmdStartTest Enabled False 初始化已用测试时间变量usedTime 0 激活定时器 定时执行Timer1的Timer事件 显示测试时间信息Me Timer1 Enabled TrueEndSub 4 系统实现方法 代码编程 测试窗体代码定时器Timer1的Timer事件设置控件状态启动计时器 PrivateSubTimer1 Timer Timer1的Interval属性为1000 相对于1秒钟 因此每次执行Timer事件时将已用时间加1usedTime usedTime 1 将已用时间转换成分钟并显示 同时计算剩余时间并显示Me lbl已用时间 Caption Format usedTime 60 0 分钟 Me lbl剩余时间 Caption Format testTime usedTime 60 0 分钟 如果剩余时间小于5分钟 则通过变换Frame2的背景颜色和时间信息控件的前景颜色提示测试者IftestTime usedTime 60 5ThenMe lbl剩余时间 ForeColor vbRedMe Frame2 BackColor QBColor Int Rnd 15 1 Me lbl已用时间 ForeColor RGB 0 255 0 Me Label5 ForeColor HFF0000EndIf 如果测试时间到 提示测试者IftestTime usedTime 60 0ThenMsgBox 测试时间到 请单击确定按钮察看得分 vbInformation vbOKOnlyMe Timer1 Enabled FalseMe cmdShowResult Value TrueEndIfEndSub 4 系统实现方法 代码编程 测试窗体代码下一题按钮的Click事件计算得分显示下一题内容 PrivateSubcmdNext Click 判断当前显示的是否是最后一题 如果不是最后一题 则根据测试者选择的项目 即哪个Option的Value为True 计算当前总分IfNotrs EOF ThenIfMe Option1 Value TrueThentotalScore totalScore scores 1 IfMe Option2 Value TrueThentotalScore totalScore scores 2 移动记录集的指针指向下一记录rs MoveNextEndIf 4 系统实现方法 代码编程 测试窗体代码下一题按钮的Click事件完成全部试题后的处理 Ifrs EOFAndrs RecordCount 0Then 已到记录集的最后 则返回最后一题rs MoveLast 禁用下一题按钮Me cmdNext Enabled False 使查看结果按钮可用Me cmdShowResult Enabled True 设置测试结束变量为TruetestOver True 提示测试者查看结果MsgBox 您已经完成了全部测试题 单击查看结果显示测试结论 vbInformation 退出子过程ExitSubEndIf 如果没有到达记录集的最后 则调用showQuestion子过程 根据当前记录的内容显示新的题目及选项 showQuestionEndSub 4 系统实现方法 代码编程 测试窗体代码查看结果按钮的Click事件根据得分显示结论停止计时 PrivateSubcmdShowResult Click 关闭当前显示题目的记录集rs Close 重新建立SQL查询字符串 用于从试卷库中查询相应试卷编号的记录sSQL select from试卷where试卷编号 frmTesterInfo paperID rs OpensSQL dfwConn 1 3 根据测试总分所在的范围 显示对应的结论IftotalScore rs Fields 结论1标准 ThenMe txtResult Text rs Fields 结论1内容 EndIfIftotalScore rs Fields 结论2标准 Then Me txtResult Text 测试结论 vbCrLf vbCrLf Me txtResult TextMe txtResult Text Me txtResult Text vbCrLf vbCrLf vbCrLf 测试结论仅作参考 隐藏题目和选项所在的Frame3控件Me Frame3 Visible False 显示测试结论所在的txtResult控件Me txtResult Visible True 停止测试时间计时Me Timer1 Enabled FalseEndSub 4 系统实现方法 代码编程 测试窗体代码关闭按钮的Click事件保存测试者信息 PrivateSubcmdClose Click 如果测试者完成了全部试题的测试 则保存测试者信息和测试结果 如果测试者没有完成全部试题的测试 由于测试时间已到结束 则为不完整测试 不保存相关信息 IftestOver TrueThen 关闭当前记录集rs Close 打开测试者表sSQL select from测试者 rs OpensSQL dfwConn 1 3 在测试者表中新建一条记录rs AddNew 为新记录的各个字段赋值 ID字段为自动产生 其内容是当前的记录数DimtesterIDtesterID rs RecordCountrs Fields ID testerID 姓名字段等用frmTesterInfo的窗体级变量赋值rs Fields 姓名 frmTesterInfo testerNamers Fields 性别 frmTesterInfo testerSexrs Fields 文化程度 frmTesterInfo testerEduLevelrs Fields 籍贯 frmTesterInfo testerBirthPlace 更新记录集 实现新记录的保存rs Updaters Close 4 系统实现方法 代码编程 测试窗体代码关闭按钮的Click事件保存测试结果 使用类似方法 在测试结果中建立新记录 并保存测试者ID 试卷编号和成绩 sSQL select from测试结果 rs OpensSQL dfwConn 1 3rs AddNewrs Fields 测试者ID testerIDrs Fields 试卷编号 frmTesterInfo paperIDrs Fields 成绩 totalScorers Updaters CloseEndIf 卸载本窗体UnloadMe 显示主窗体frmMain ShowEndSub 4 系统实现方法 代码编程 测试窗体代码窗体的Unload事件关闭数据库连接 PrivateSubForm Unload CancelAsInteger 卸载窗体时关闭后台数据库连接dfwConn CloseEndSub 4 系统实现方法 代码编程 用户登录窗体代码确定按钮的Click事件验证数据库中是否存在相应的用户名称 PrivateSubcmdOK Click 定义变量用于保存用户输入的名称DimstrUserNameAsStringstrUserName Me txtUserName 定义后台数据库路径和名称DatabasePath App Path 建立SQL查询语句 从用户表中查询姓名等于输入内容的记录sSQL SELECT FROM用户where姓名 strUserName rs OpensSQL dfwConn 1 3 如果记录集的记录数量为0 表示没有该用户 显示提示信息 Ifrs RecordCount 0ThenMsgBox 无此用户 请重新输入 Me txtUserName SetFocusExitSubEndIf 4 系统实现方法 代码编程 用户登录

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论