已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大大 连连 民民 族族 学学 院院 本本 科科 毕毕 业业 设设 计 论计 论 文 文 局域网内网络教学软件开发局域网内网络教学软件开发 学 院 系 计算机科学与工程学院 专 业 软件工程 学 生 姓 名 朱丛启 学 号 2008082134 指 导 教 师 赵晶莹 评 阅 教 师 赵晶莹 完 成 日 期 2012 5 30 大连民族学院 局域网内网络教学软件开发 I 摘 要 近年来 多媒体技术迅速兴起 蓬勃发展 多媒体系统的应用以极强的渗透力进 入了人类生活的各个领域 对人类的生产方式 工作方式甚至生活方式都带来了巨大 的变革 同样的 多媒体技术在教育领域中也产生了积极的效应 因为多媒体具有图 文 声并茂的特点 在这样的学习环境中大大引起学生对教学内容的高度兴趣 对学 生在知识的学习中产生了积极的效应 也为学生提供了一个理想的 可定制的教学环 境 在当下多媒体技术普遍应用于教育领域 给教育领域带来的是一种新的教学引导 方式 学生在学习知识的过程中 可以对知识有更好的掌握 本文设计的软件就是将 多媒体技术应用于教学得到的成果 本文使用 Nokia 的跨平台的工具包 Qt 实现开发了局域网内教学系统 整个系统实 现过程在 Nokia Qt Creator IDE 中完成 图形用户交互用 Qt SDK 中的 designer 设计 整个系统实现了学生的对教学课件的查看 对教学对应问题的自主测试 以及教学内 容的动手练习 在教师端 老师可以查看学生的信息 还可以对指定学生动态提问 从而实现对学生 一对一 的关注 提高教学效果 关键词 课件查看 自主测试 动态提问 关键词 课件查看 自主测试 动态提问 局域网内网络教学软件开发 II Network teaching software development In local area network Abstract In recent years the multimedia technologies started The vigorous development rapidly the multimedia systems applied by the greatly strengthened penetrability entered each domain which the humanity lived to humanity s production method the working life style has even brought the huge transformation Similarly the multimedia technologies have also had the positive effect in the educational fields Because multimedia has the chart article the sound and the luxuriant characteristic causes the student greatly in such learning environment to the course content high interest has had the positive effect to the student in the knowledge study also has provided the teaching environment which for the student ideal may have custom made Applies generally immediately in the multimedia technologies in the educational fields what brings for the educational fields is one new teaching guidance way the student in the study knowledge process may have better grasping to the knowledge This article is going to discuss the content is applies the multimedia technologies the achievement which obtains in the teaching This article discusses the software uses Nokia cross platform tool bag Qt to realize the overall system realizes the process to complete in Nokia Qt Creator IDE The graph user uses in Qt SDK alternately the designer design The overall system has realized the student to the teaching courseware examination to the teaching correspondence question s independent test as well as the course content begins the practice In the teacher end teacher may examine student s information but may also to each student dynamic inquiry has like this completed one to one teaching Key Words Courseware view Independent test Dynamic inquiry 局域网内网络教学软件开发 III 目 录 摘 要 I Abstract II 1 绪论 1 1 1 课题开发背景 1 1 2 课题开发的目的及意义 2 2 软件开发环境及使用技术 3 2 1 开发环境 3 2 2 工具介绍 3 2 2 1 Qt SDK 3 2 2 2 Qt Creator 4 2 2 3 Qt Designer 4 2 2 5 Qt Linguist 6 2 2 6 Mingw 6 2 3 系统中使用的 Qt 技术概述 7 2 3 1 Qt QTreeWidget QTreeWidgetItem 7 2 3 2 Qt QListWidget QListWidgetItem 8 2 3 3 Qt QHash QStringList QList 9 3 程序分析与设计 11 3 1 系统及其模块介绍 11 3 2 系统工作流程 11 4 程序实现 13 4 1 系统数据库数据签出模块 13 4 2 系统登录模块 16 4 3 教师端 17 4 3 1 班级 学生信息处理模块 17 4 3 2 问题信息管理模块 18 4 3 3 广播信息模块 20 4 3 4 系统托盘模块 22 4 4 学生端 23 4 4 1 动手练习模块 23 4 4 2 自主测试模块 26 4 4 3 教学视频回放模块 28 局域网内网络教学软件开发 IV 4 4 4 广播信息处理模块 30 4 4 5 即时问题处理模块 31 4 5 服务器广播信息 问题信息中转模块 32 5 系统功能模块测试及问题处理 34 结 论 36 参 考 文 献 37 致 谢 38 局域网内网络教学软件开发 1 1 绪论 近年来 多媒体技术迅速兴起 蓬勃发展 多媒体系统的应用以极强的渗透力进入 了人类生活的各个领域 对人类的生产方式 工作方式甚至生活方式都带来了巨大的 变革 同样的 多媒体技术在教育领域中也产生了积极的效应 因为多媒体具有图文 声 并茂的特点 在这样的学习环境中大大引起学生对教学内容的高度兴趣 对学生在知 识的学习中产生了积极的效应 也为学生提供了一个理想的 可定制的教学环境 在当下多媒体技术普遍应用于教育领域 给教育领域带来的是一种新的教学引导方 式 学生在学习知识的过程中 可以对知识有更好的掌握 我们知道 在传统的教学过程中一切都是固定的 从教学内容 教学策略 教学方 式 教学步骤直到学生的自主练习都是由老师事先就全部安排好了的 学生更多的是 被动的参与到这个过程 但是在以多媒体技术为基础的教学方式 实现了一种交互式 的教学 在这样的交互式的学习环境中 学生可以按照自己的学习基础进行相应的自 主的练习 如此一来 学生就必须去发挥自己的主动性 积极性 在这个主动和积极 参与的过程中掌握知识 而就是这种主动参与性对学生的主动性 积极性的发挥创造 力很好的条件 同时 这个过程中 老师也可以参与到学生的学习中 通过对学生提问的方式来分 析学生对知识的掌握程度 本文将要探讨的内容就是将多媒体技术应用于教学得到的成果 本文所探讨的软件 使用 Nokia 的跨平台的工具包 Qt 实现 整个系统实现过程在 Nokia Qt Creator IDE 中完成 图形用户交互用 Qt SDK 中的 designer 设计 1 1 课题开发背景 在多媒体技术中 人机交互与立即反馈是其显著特点 由计算机参与的多媒体技术 使得计算机的交互功能完成了老师与学生之间的一 对一的教学 这一结合产生出一种新的图文并茂 丰富多彩的人机交互 而且这个过 程可以立即反馈 这样的交互方式对于教学有着重要的意义 这样的教学途径 能有 效的机房学生的学习兴趣 使学生产生强烈的学习欲望 从而形成了学习的动机 交互性是多媒体计算机所特有的 也正因为这个特点使得多媒体教学成为改变传 统教学模式的一个重要因素 局域网内网络教学软件开发 2 本文所述的软件正是为了实现这样的交互性而开发的 在整个系统中 学生可以对 教学课件查看 对教学对应问题的自主测试 以及教学内容的动手练习 在教师端 老师可以查看学生的信息 还可以对每一个学生动态提问 这样就完成了 一对一 的教学 1 2 课题开发的目的及意义 相比传统的教学方式 多媒体教学有许多的优势 一 可以把传统教学中的粉笔加黑板的单一 呆板的表现形式转变为直观化的 形象化的 具有激发学生学习兴趣的方式 二 可以将一些在普通条件下难以实现和观察到的过程用形象化的方式显示出 来 三 可以增大教学的信息量 有助于扩展教学课时的容量 提高教学效率 四 学生的自主参与 有助于学生自主动手和积极性的发挥 正是因为多媒体教学的这样一系列的好处 本文所述的软件也针对这样特点实现 了对应的功能 局域网内网络教学软件开发 3 2 软件开发环境及使用技术 2 1 开发环境 操作系统平台 Windows 7 English Ultimate Sp1 程序设计语言 C 集成开发平台 Qt SDK mingw 版本控制 Visual SVN Tortoise SVN 图片处理平台 Adobe Fireworks Adobe Photoshop 课件处理 pfDesktop office 2007 解析容器 Apache tomcat 6 0 18 JVM Jdk 6u18 windows i586 测试平台 Windows XP Sp3 Windows 7 English Ultimate Sp1 Ubuntu 12 04 数据库 MySQL 5 5 15 0 数据库管理工具 Navicat 8 0 28 Enterprise 绘图工具 Edraw Mind Map 4 系统打包工具 Inno Setup Compiler 2 2 工具介绍 2 2 1 Qt SDK Qt 最早是由奇趣科技开发的跨平台的 C 图形用户界面应用开发框架 但是它并 不只是只能开发 GUI 程序 我们可以使用 Qt 开发非 GUI 的程序 我们可以用 Qt 完成 从嵌入式到操作系统层软件的开发 在 Linux 操作系统中 KDE 桌面 就是使用 Qt 开发 的 2008 年诺基亚公司收购了奇趣科技 Qt 在每一次的版本升级中也不断的加入了新 的特性 正是它的跨平台性 以及它的寄住语言是 C 如此在程序执行效率和开发效率中 带来了很多的便捷 甚至在目前很火的 Android 中也有人对 Qt 的支持 NDK Qt 中对信号和事件的处理 使用 Qt 特有的信号与槽 Signals QString str a QString str a str list a str a append the str String to the stringlist str list QStringList str list b str list b append str a str list a str list b true QString str b QString str b QString str list all str list all str a str b QString all str list all join all str astr b 3 QList 这是一个类模板 原形 QList 提供了任意数据结构的集中处理的接口 因为 QStringList 其实就是 QList的特别实现 那么在 QStringList 中有的一些 函数 在原本就是 QList 本身的功能 如 setHostName host db setPort port toInt db setDatabaseName teachingroom db setUserName root db setPassword admin bool dbConn db open if dbConn databaseConnectionSuccess true else databaseConnectionSuccess false QString errorInfo db lastError text QObject tr nPlease resetting your DB server QMessageBox critical 0 QObject tr Database Setting Error errorInfo QSqlDatabase db 初始化分析 首先 看数据库操作类的构造函数 TeachingDB QString host QString port 可以 看出 TeachingDB 的构造是用来一个类型为 QString 的 host 值 以及 QString 的 port 值 作为参数传入 TeachingDB 类的 在 TeachingDB 的构造函数中 使用如表 3 2 的方式 将 db 初始化 初始化之后给 db 一个 host 也就是数据库的主机地址 QSqlDatabase 类中的 setHostName 使用一个 QString 的串来设置其主机 同时使用 setPort 函数来设 置数据库的端口 这里将为 QString 类型的 port 使用 toInt 函数得到一个整型 这个 port 数据源 没有做处理 因为如果不是一个正确的 port 在 db open 的时候得到的 是一个 false 这样就会给出一个数据库连接错误的提示 数据自数据库签出 为了提升系统的性能将数据库数据全部加入数据集处理 这 里用到了 QHash QList QStringList 核心处理部分 如下 局域网内网络教学软件开发 14 QHash classList QHash studentsList void TeachingDB initData classList clear studentsList clear get class from database QSqlQuery selectClassQuery SELECT FROM CLASS classList insert className classStudentCount get student from database QSqlQuery selectStudentQuery selectStudentSql studentsList insertMulti classList keys at i student students insert studentID studentName student studentsSet insert studentID student get questionset from database questionSet insert questionID question questionSetList append question questionHashList insert key question get chapterlist from database chapterList append chapterName 数据自数据库签出核心部分分析 局域网内网络教学软件开发 15 在所有操作之前的 clear 函数的处理 是为了将已经在数据集中的数据先全部清除 的处理 这样到用户刷新数据的时候 不至于数据会重复 因为对某一些 如 QStringList 的操作时一个 append 的处理过程 classList 是一个以 QString 类型为键和值的 QHash 实例 用于存储数据库中班级的 信息 自数据库签出之后 把数据库中的班级以及班级任务写到这个 QHash 中 而在 外要使用这些数据的时候 就是用 TeachingDB 的一个对象来调用如下所示的操作就可 以得到具体的数据了 首先使用 getClassCount 函数得到班级的个数 在使用一个 for 循环就可以得到所有的班级的信息了 TeachingRoomClass TeachingDB getClassFromDB int index TeachingRoomClass currentClass new TeachingRoomClass currentClass setClassName classList keys at index currentClass setClassStudentsCount classList values at index return currentClass int TeachingDB getClassCount return classList size 从数据库中把所有的班级信息取出 int classCount teachingDB getClassCount for int index 0 index getClassFromDB index studentsList students 以及 studentsSet 这三个都是 QHash 以 QString 为键 TeachingRoomStudent 为值的实例 但是他们的 QString 是不一致的 studentsList 键班 级作为了 key students 键学生的学号和姓名作为了 key 而 studentsSet 将学生的学号 作为了 key 此处会出现这么些不一样的集合 是为了满足不一样的数据抽取需求 questionSetList 是一个 QList 实例 它使用 QuestionSet 作为其数据元 它在数据 抽取处理中只是简单的将数据 append 到这个 list 里面 questionSet 是一个 QHash 实例 它以 QString 为 key QuestionSet 为 value 它在 数据抽取处理中将问题的 ID 和问题本身 insert 到这个 QHash 中 局域网内网络教学软件开发 16 questionHashList 与 questionSet 类似 也是一个以 QString 为 key QuestionSet 为 value 的 QHash 实例 不过其 key 是问题 ID 问题名称 问题发布时间的一个组合 4 2 系统登录模块 登录效果 如图 4 1 图 4 1 左边为服务器端登录效果 中间为学生端登录效果图 右边为教师端登录 效果图 当点击任何一个客户端的登录窗口里面的 设置 按钮的时候 都会出现类似如 图 4 2 服务器端的设置窗口 图 4 1 客户端登录效果图 图 4 2 服务器端的设置窗口 这个窗口用于设置在数据库连接需要的 hostName 以及 port 设置完成之后 系统会把这些信息通过 QSettings 将信息按照系统类型写入到不同 的地方 在 windows 平台会将信息写到系统注册表 如果是 Mac OSX 平台就会使用 XML 文件来存储 使用 unix like 的话 就会将信息使用 INI 文件来存储 设置完成之 后据可以登录到系统了 当系统 登录 按钮的时候 系统会将输入的用户以及密码 局域网内网络教学软件开发 17 信息取出 在到数据库中去 check 一下 如果成功就会登录到系统中 同时开启 tomcat 服务器 以及广播 即时问题的中转服务 4 3 教师端 4 3 1 班级 学生信息处理模块 模块效果 如图 4 3 这个模块的用户交互参考了 MSN 和 QQ 的好友列表 数据的展示使用了 Qt 的 QTreeWidget 控件 每一个数据元使用了 QTreeWidgetItem 数据按照数据库中数据集以及存取数据的方式将数据签出 并写到这个 Tree 中 核心处理如下 setting the teacher item QTreeWidgetItem teacherItem new QTreeWidgetItem ui studenTree TEACHER ITEM QString userName tr jsp001 ui studenTree insertTopLevelItem 0 teacherItem ui studenTree clear setCurrentTeacherUser int classCount teachinDB getClassCount for int nClass 0 nClassstudenTree CLASS ITEM classItem setFont 0 classfont TeachingRoomClass currentClass teachinDB getClassFromDB nClass add student items studentItem new QTreeWidgetItem classItem STUDENT ITEM 局域网内网络教学软件开发 18 图 4 3 班级 学生信息展示图示 模块分析 在模块中使用 TeachingDB 的一个对象 teachinDB 将数据的数据自数据 中签出 并将得到的数据设置到到 QTreeWidgetItem 中 使用 setIcon 设置一个 Item 的 Icon 使用 setText 设置 Item 的文本信息 4 3 2 问题信息管理模块 问题信息列表如图 4 4 在问题列表中同样使用了 QTreeWidget 来展示 数据类似班级 学生信息一样自 数据库签出 问题发送效果如图 4 5 问题添加效果如图 4 6 问题传输部分核心处理如下 int questionSetSize teachinDB getQuestionSetSize for int quesionIndex 0 quesionIndexsetQuestionSet teachinDB getQuestionFromSet quesionIndex 局域网内网络教学软件开发 19 void SendQuestionDialog sendQuestionID int id ui questionID currentIndex emit sentQuestion teacher currentStundent getStudentID QString number id n void MainWindow sendQuestionInfo QString questionInfo socket write questionInfo toUtf8 图 4 4 问题信息列表图示 局域网内网络教学软件开发 20 图 4 5 问题发送效果图 图 4 6 问题添加效果图 4 3 3 广播信息模块 广播信息模块效果如图 4 7 局域网内网络教学软件开发 21 当在文本框内书写好广播消息之后 点击 发送广播 按钮 就可以将广播内容 发送 同时这个窗口也会关闭 而当没有书写任何内容就点击 发送广播按钮 的时 候会出现如图 4 8 的提示 图 4 7 广播信息 图 4 8 广播信息 没有写入信息 广播消息部分核心处理如下 BroadCast broadCast new BroadCast if broadCast exec socket write QString broadcast broadCast getBroadCastContent n toUtf8 ui broadCastList addItem new QListWidgetItem broadCast getBroadCastContent ui broadCastList 局域网内网络教学软件开发 22 广播消息部分分析 当点击广播按钮的时候会调用如表 4 6 的模块 首先新建一个 broadCast 对象 这是一个广播消息的窗体 QDialog 的对象 其 exec 方法 当这个 QDialog 点击 发送广播 按钮的时候会 accept 这个 QDialog 这样 QDialog 的 exec 会 返回一个宏 如这个 QDialog 已经 accept 那么就会关闭这个 QDialog 在将写入的广 播信息取出来 在用 socket 将数据内容写入到 socket buffer 传到服务器端 服务器端 在转换数据到所有在线客户端 4 3 4 系统托盘模块 模块效果如图 4 9 图 4 9 系统托盘效果图 系统托盘创建核心处理如下 void TeachingLoginDialog createTray setting tray s icon sysTray setIcon QIcon appFace systray setting tray s menu sysTrayMenu addAction showMainWinAction sysTrayMenu addAction showMessageAction sysTrayMenu addSeparator sysTrayMenu addAction logoutAction sysTrayMenu addAction quitAction sysTray setContextMenu sysTrayMenu set Tray tooltip sysTray setToolTip SYSTOOLTIP 局域网内网络教学软件开发 23 4 4 学生端 4 4 1 动手练习模块 在此模块中 学生可以自行的手工输入 JSP 代码 并在 Tomcat 服务器打开的情况 下 将 JSP 的运行的效果展示出来 同时可以查看 JSP 对应的 Java 源码 而且整个过 程对手工输入的代码以及转换过后的 Java 源码都高亮处理 其效果如图 4 10 源码高亮处理使用了 Qt 自带的一个类 QSyntaxHighlighter 在 Qt 手册里面对其 的说明是 使用了 QSyntaxHighlighter 那么可以自定义一些语法高亮规则 syntax highlighting rules 在 QSyntaxHighlighter 中有一个 highlightBlock 函数 这个函数会自 动的将自定义建立的语法高亮规则应用于自定义的语法高亮关键字 而我们需要做的 就是继承 QSyntaxHighlighter 并重新实现这个 highlightBlock 函数 对于关键字规识别 使用正则表达式处理 在此学生动手练习模块中对于语法高亮的核心处理如下 HighlightingRule rule font seting QFont keyFont keyFont setPixelSize 18 QFont functionFont functionFont setPixelSize 14 false and ture trueFalseKeyFormat setFont keyFont trueFalseKeyFormat setForeground Qt red trueFalseKeyFormat setFontWeight QFont Bold QStringList falseandtrue falseandtrue btrue b 0 int length expression matchedLength setFormat index length rule format index expression indexIn text index length 局域网内网络教学软件开发 25 setCurrentBlockState 0 int startIndex 0 if previousBlockState 1 startIndex commentStartExpression indexIn text while startIndex 0 int endIndex commentEndExpression indexIn text startIndex int commentLength if endIndex 1 setCurrentBlockState 1 commentLength text length startIndex else commentLength endIndex startIndex commentEndExpression matchedLength setFormat startIndex commentLength multiLineCommentFormat startIndex commentStartExpression indexIn text startIndex commentLength 对于此模块的 Java 源码查看部分添加了一个对 Java 源码查找的功能 当点击在 动手练习 窗体下方的 查找 按钮的时候会出现如图 4 11 的在 Java 源码上方出现 一个 SearchBar QLineEdit 的效果 图 4 11 Java 源码查找的 SearchBar 点击 查找 按钮之后焦点 Focus 会聚到此 SearchBar 此时我们可以在里面手动输入 要查找的文本内容 那么系统就开始自动的自文档顶部往下查找 而且查找中按照查 局域网内网络教学软件开发 26 找规则 QTextDocument FindWholeWords 进行 但找到了我们查找的内容的时候就会 将查找的内容加粗处理 对于查找功能还有一个替代方式 那就是通过鼠标双击 JSP 代码框内我们还要查找 的代码 此时查找的内容一方面会自动的添加到 SearchBar 中 一方面会开始查找文本 如图 4 12 所示的双击文本查找方式 图 4 12 双击文本查找方式 4 4 2 自主测试模块 在此模块中 学生可以自由的设置一个测试时间以及测试的问题个数 当设置完成 点击 开始答题 按钮的时 系统从 0 秒开始计时且更改 开始答题 按钮的文本信 息为 结束答题 同时在会出现系统根据学生设置的问题个数随机抽取出问题 学 生即可开始答题 在答题过程中 如果回答问题正确 那么会给出一个 笑脸 的提示 如过回答错 误就是给出一个 哭泣 提示 在提示的同时会在 1 秒之后切换到下一题 在自主动手练习的问题个数设置中 会设置系统中所有的问题的总和作为问题个数 的上限 在测试时间的设置时 会按照一分钟为六十秒的进制更新时间显示控件 QLcdNumber 如图 4 13 所示 图 4 13 时间设置 局域网内网络教学软件开发 27 在多个问题中 使用了 QStackWidget 来显示问题信息 且在 QStackWidget 中添加 了分页处理 学生可以切换下一题 和查看已回答的问题 问题随机生成部分核心代码如下 int questionCount ui questionCountBox text toInt int allQuestionCount database getQuestionSetSize QTime time QTime currentTime qsrand time msec time second 1000 if questionCount 0 set buttons ui nextBtn setEnabled true get question info for int index 0 indexgetQuestionByID id questionWidget setQuestionInfo currentQuestion getQuestionAnwser currentQuestion getQuestionContent ui questionlist addWidget questionWidget connect questionWidget SIGNAL nextQuestion SLOT nextPage 对于学生每次在原有测试的基础之上的新的测试 系统会在新的测试开始之前将 原有的问题的窗口都清除 也就是需要将问题窗口自 QStackWidget 中移除 在 QStackWidget 中提供了 removeWidget 函数用于移除在 QStackWidget 中的控件 继承自 QWidget 的控件 但是这个 removeWidget 的操作 在手册中说明了只是对 removeWidget 移除对象的 hide 操作 也就是并没有真实的自 QStackWidget 删除 只 要当然就会占用过多的内存 局域网内网络教学软件开发 28 所以在学生新的测试开始之前 先将所有的问题信息窗口都从 QStackWidget 中移 除 删除 其具体操作核心如下 int count ui questionlist count if count 0 for int index 0 indexquestionlist removeWidget ui questionlist widget index delete ui questionlist widget index else deleteWidget stop preperQuestionList 整个过程如图 4 14 图 4 14 答题过程效果图 4 4 3 教学视频回放模块 在此模块中 学生可以自由的选择一个教学视频片段来学习对应的知识点内容 模块的视频回放功能使用 QProcess 来执行一个已经录制好了的以 exe 为后缀的视频 文件 局域网内网络教学软件开发 29 QProcess 处理一个 exe 的方式有 使用 execute 函数 其执行一个应用程序是阻塞 方式的 使用 start 函数 其执行一个可执行程序的方式是非阻塞的 模块核心处理如下 void VideoView chooseCurrentVideo currentVideo QString if ui jdk isDown currentVideo jdk exe if ui tomcat isDown currentVideo tomcat exe if ui dw isDown currentVideo dw exe startVideo void VideoView startVideo process start this basePath currentVideo 核心处理分析 在打开视频回放主窗体之前首先得到所有视频文件的目录 并给这个主窗口 在学 生 Dashboard 的处理如下 QDir dir QDir qApp applicationDirPath QString basePath dir path videos videoViewWin setBasePath basePath videoViewWin showFullScreen 因为在 Qt 中处理目录信息是用类似 unix like 的处理方式 即以 风隔目录 但是在 windows 系统中使用的是 来风隔目录 而 QProcess 的 start 或 execute 函数 执行可行性文件的时候需要得到这个问题的完整的目录结构 同一目录只需文件名 那 么在 windows 中处理的时候就需要将这个目录处理一下 局域网内网络教学软件开发 30 处理方式如下 this basePath QString QStringList pathList basePath split QRegExp for int index 0 indexbasePath pathList at index 使用 QString 的 split 函数和指定一个风隔的规则 使用 QRegExp 设定一个正则表达 式 来风隔目录 风隔之后会得到所有目录名称的一个 QStringList 再将这个目录信息 重组为 windows 风隔风格的目录结构就得到了教师视频的完整目录 即 basePath 模块效果如图 4 15 所示 图 4 15 教学视频回放 4 4 4 广播信息处理模块 此模块用于处理来自教师端的广播消息 但收到了来自教师端广播消息的时候会在学生的 Dashboard 的有效下方显示一个小 窗口 并在其中显示广播的具体内容 这个窗口会在 3 秒中后自动关闭 局域网内网络教学软件开发 31 效果如图 4 16 所示 图 4 16 广播消息显示 此模块中核心处理即将这个用于显示广播小心的窗口放到了右下角 其处理如下 QDesktopWidget desktopWidget QApplication desktop QRect screenRect desktopWidget screenGeometry int winX screenRect width width int winY screenRect height height this setGeometry QRect winX winY 50 width height 4 4 5 即时问题处理模块 此模块用于处理来自教师端发送的即时问题 当教师端对一个在线的学生发送问题信息的时候 会在对应学生的 Dashborad 中显 示一条提示信息 并弹出一个问题信息窗口 效果如图 4 17 所示 图 4 17 即时问题处理 局域网内网络教学软件开发 32 在问题处理窗口出现之后 开始计时 计时依据来自教师端老师对问题回答时间上 限的设置 但学生选择问题答案并点击 发送答案 按钮时 将答案信息发回教师端 教师端即开始处理 核心处理方式如下 QuestionSet currentQuestion teachinDB getQuestionByID questionID QString correctAnswer currentQuestion getQuestionAnwser if questionAnswer correctAnswer int score currentQuestion getQuestionScore toInt int studentCurrentScore teachinDB getStudentScore studentID toInt int newScore studentCurrentScore score update the score teachinDB updateStudentScore studentID newScore AnsweredQuestion answered new AnsweredQuestion answered setQuestionID questionID answered setStudentID studentID answered setStudentAnswer questionAnswer teachinDB studentAnsweredQuestion answered 当学生回答的问题的答案与教师设置问题时给定的问题答案一致时 会更新对应 学生的分数 并将这个问题信息加入到学生已回答问题之列 那么就可以在教师端查 看学生已经回答的问题信息了 效果如图 4 18 所示 图 4 18 学生基本信息及已回答问题信息 4 5 服务器广播信息 问题信息中转模块 此模块继承人 QTcpServer 实现了 DataTransferServer 子类 在子类中处理已经连接 到 server 的所有的客户端的消息出入 局域网内网络教学软件开发 33 其核心处理如下 void DataTransferServer incomingConnection int socketfd QTcpSocket client new QTcpSocket this client setSocketDescriptor socketfd clients insert client qDebug New client from peerAddress toString connect client SIGNAL readyRead this SLOT readyRead connect client SIGNAL disconnected this SLOT disconnected void DataTransferServer readyRead QTcpSocket client QTcpSocket sender while client canReadLine QString message QString fromUtf8 client readLine trimmed qDebug Read line message write QString message n toUtf8 void DataTransferServer disconnected QTcpSocket client QTcpSocket sender clients remove client 局域网内网络教学软件开发 34 5 系统功能模块测试及问题处理 系统功能模块测试以及问题处理表 5 1 表 5 1 功能模块问题及处理办法 功能模块 名称问题问题描述及处理办法 数据库驱动无法载入数据库驱动将数据库驱动按照 QtSDK 中对数据库驱动的存放位置来 存放 即 QtHome plugins sqldrivers 那么就需要指 定 Qt Lib 的位置 在 main 函数中加入 qApp addLibraryPath qApp appli
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年工业机器人示教操作考试题
- 2026年高校实验室安全考试题库及答案
- 2026年通信光缆施工合同(1篇)
- 就医行为个人承诺书5篇范文
- 企业社交媒体互动优化方案模版
- 支付方式变更操作指引函(6篇)
- 2024年黑龙江省绥化市中考化学真题(含答案)
- 催促完成项目报告提交催办函4篇范文
- 文档管理标准化流程及文件归档模板
- 教育研究合规性承诺函样本4篇
- 南大版一年级心理健康第5课《校园“红绿灯”》课件
- 曲靖市灵活就业社会保险补贴申报审核表
- 人教版2019高中英语选择性必修四(课文语法填空)
- 光伏场区工程总承包EPC招标文件
- 资金计划编制流程
- 2024年杭州市临空建设投资集团有限公司招聘笔试参考题库附带答案详解
- 路基工程防护施工培训课件
- 江阴职业技术学院单招《语文》考试参考题库(含答案)
- ROHS-2.0培训教材资料
- 7.2万有引力定律说课课件
- 建筑工程绿色施工评价标准概述(PPT 90张)
评论
0/150
提交评论