学校名称
课程设计说明书
学年第 学期
学 院: | |||||||||
专 业: | |||||||||
学 生 姓 名: |
| 学 号: |
| ||||||
课程设计题目: | 班级日志信息管理系统 | ||||||||
起 迄 日 期: |
| ||||||||
课程设计地点: | |||||||||
指 导 教 师: | |||||||||
系主任: |
年 月 日
目录
1.1课题研究背景
随着信息技术的快速发展,教育领域也在积极引入各种数字化工具以提升教学质量和管理效率。班级日志作为一种重要的教学管理工具,传统的纸质记录方式已经无法满足现代教育的需求。因此,开发一款基于Python和PyQt5的班级日志管理系统,能够实现日志的电子化、智能化管理,符合教育信息趋势。
班级日志中包含了丰富的教学信息,如学生的学习情况、教师的教学反馈等。通过电子化的班级日志管理系统,可以方便地收集、整理和分析这些数据,为教学改进和决策提供数据支持。
提高工作效率:传统的手工记录和管理班级日志方式耗时耗力,且容易出现错误和遗漏。使用Python和PyQt5开发的班级日志管理系统,可以自动化许多繁琐的任务,如数据录入、查询、统计等,大大提高了教师和管理人员的工作效率。
开发工具的选择:Python是一种广泛使用的高级编程语言,具有丰富的库和框架支持,适合于开发各种类型的应用程序。PyQt5是基于Python的GUI(图形用户界面)开发库,它提供了强大的界面设计和事件处理功能,使得开发者能够快速创建出美观、易用的桌面应用程序。
1.2课题研究意义
通过电子化的班级日志管理系统,可以实现对班级日志的精细化、规范化管理,提高教学管理水平。系统能够帮助教师和管理人员及时、准确地记录和查询学生的学习情况、教师的教学反馈等信息,为教学决策提供有力的数据支持。
开发基于Python和PyQt5的班级日志管理系统,是推动教育信息化进程的重要举措。该系统可以实现教学数据的电子化、网络化管理,促进教育资源的共享和交流,提升教育质量和效率。
传统的手工记录和管理班级日志方式存在诸多问题,如耗时耗力、易出错、难以查询和统计等。而使用Python和PyQt5开发的班级日志管理系统,可以自动化许多繁琐的任务,提高工作效率和准确性,减少人为错误和遗漏。
2.1 PYQT5技术
PyQt5是一个基于Python的GUI(图形用户界面)开发库,它提供了丰富的控件和功能,用于创建桌面应用程序。使用Qt Designer工具进行界面设计,该工具允许通过拖放方式构建用户界面,并将设计结果保存为.ui文件。PyUIC工具用于将.ui文件转换为Python代码,以便在程序中加载和使用。
2.2 MySQL技术
MySQL是一款广泛使用的开源关系型数据库管理系统,用于存储和管理系统的数据。在本系统中,MySQL用于存储用户信息、日志记录等数据。 使用pymysql库作为Python与MySQL之间的接口,实现数据的增删查改操作。
2.3 Pandas技术
Pandas是Python的一个数据分析库,提供了强大的数据结构DataFrame和一系列数据处理函数。在本系统中,Pandas用于数据清洗、数据转换、数据分析以及数据可视化等任务。利用Pandas可以方便地从MySQL数据库中读取数据,并进行进一步的数据处理和分析。
2.4 MapPlotlib技术
Matplotlib 是一个强大的 Python 绘图库,用于创建高质量的静态、动态和交互式图表。它是基于 NumPy 数组的,可以与几乎所有科学计算的 Python 库无缝集成。Matplotlib 提供了广泛的绘图选项,使用户可以创建各种类型的图表,包括线图、散点图、柱状图、饼图、3D 图等。
3.1系统模块设计
本系统共设计为九个模块,分别为实现了系统各个功能。
登录模块:用户通过输入用户名和密码进行系统登录。
注册模块:新用户可以进行注册。
菜单显示功能模块:展示系统的主要功能模块和相关信息。
新增日志模块:添加新的日志记录并刷新显示。
修改日志模块:修改日志信息并刷新显示。
删除日志模块:删除日志记录并刷新显示。
模糊查询模块:查询到与输入信息相关的日志内容。
数据可视化模块:日志数据进行统计和分析以图标展示。
导出功能模块:将日志数据导出为Excel文件。
3.2数据库设计
本系统设计了“用户表”和“日志表”两张表,分别用来存储用户的信息和班级日志的信息。
用户表用来保存用户的信息,包括用户id、用户名、密码等信息。供登录、注册功能的使用。具体如下表所示:
表格 3-1 用户数据表
字段名 | 类型 | 长度 | 是否允许为空 | 是否为主键 | 说明 |
id | int | false | true | 主键id | |
username | varchar | 45 | false | false | 用户名 |
password | varchar | 45 | false | false | 密码 |
日志表用来保存日志的信息,包括日志信息的id、标题、内容等信息。对于对班级日志信息进行增删改查等操作。具体如下表所示。
表 3-2 日志信息表
字段名 | 类型 | 长度 | 是否允许为空 | 是否为主键 | 说明 |
id | int | false | true | 主键id | |
Title | varchar | 45 | false | false | 日志标题 |
Content | varchar | 45 | false | false | 日志内容 |
Date | date | false | false | 记录时间 |
4.1详细设计思想
用户管理:设计登录和注册功能,确保用户身份的验证和管理。在前端,使用PyQt5的输入控件收集用户信息,并通过后端与数据库进行交互,验证用户名和密码的正确性。
日志操作:提供新增、修改、删除和模糊查询日志的功能。在前端,使用表单和搜索框等控件收集用户操作,并在后端执行相应的SQL语句,对数据库中的日志数据进行操作。
数据可视化:对日志数据进行统计和分析,如日志数量、作者分布、日志内容关键词频次等,并将结果以图表(如柱状图、饼图、词云等)的形式展示在前端。这需要结合Python的数据分析库(如pandas和matplotlib)以及PyQt5的图表组件进行实现。
数据导出:提供将日志数据导出为Excel文件的功能,方便用户线下处理和分享。在后端,使用pandas库将查询到的日志数据转换为DataFrame对象,然后调用to_excel方法保存为Excel文件。
根据分析研究得出系统流程图,如图4-1所示:
图 4-1 系统流程图
4.2 登录功能模块
4.2.1界面设计
登录界面设计的简洁、清晰,避免了过多的装饰元素。使用流式布局,确保在不同屏幕尺寸和分辨率下都能良好显示。元素设计为以下内容
用户名输入框:包含标签“用户名”和一个文本输入框,用于用户输入已注册的用户名。
密码输入框:包含标签“密码”和一个文本输入框,用于用户输入与用户名对应的密码。密码输入时应以密文形式(圆点)显示。
登录按钮:一个突出的按钮,用户点击后触发登录操作。
注册按钮:提供一个按钮,未注册的用户可以点击进行注册.
通过对输入框和按钮的设计,设计出登录界面如图4-2所示.
图 4-2 登录界面
4.2.2功能设计
1. 输入验证:
实现对用户名和密码输入的有效性验证,如不能为空、长度限制等。
2. 密码加密:
在传输和存储密码时,使用安全的加密算法(如哈希算法)进行处理,保护用户密码的安全。
3. 登录功能:
当用户点击登录按钮后,系统将用户名和加密后的密码发送到服务器端进行验证。
服务器端从数据库中查询与输入用户名对应的密码记录,并对比输入的加密密码和数据库中的密码记录。
如果密码匹配,则判定为登录成功;否则,判定为登录失败。
4. 登录结果处理:
登录成功:清除登录界面的输入内容,显示一段欢迎信息,并自动跳转至系统的主界面。
登录失败:在登录界面显示一条错误信息,提示用户“用户名或密码错误”。同时,保留用户的输入,以便用户修改后重新尝试登录。
登录功能的流程如下:
图 4-3 登录流程图
4.3 注册功能模块
4.3.1.界面设计
用户名输入框:包含标签“用户名”和一个文本输入框,用于用户输入新的用户名。
密码输入框:包含标签“密码”和一个文本输入框,用于用户输入新账户的密码。可以提供显示密码的切换按钮,以便用户确认输入内容。
确认密码输入框:包含标签“确认密码”和一个文本输入框,用于用户再次输入密码进行确认。
邮箱输入框:包含标签“邮箱”和一个文本输入框,用于用户输入有效的邮箱地址,用于找回密码或者接收系统通知。
注册按钮:一个突出的按钮,用户点击后触发注册操作。
通过对用户名输入框、密码输入框、确认密码输入框和两个按钮的设计,设计出注册界面如图4-4所示。
图 4-4 注册界面
4.3.2功能设计
1. 输入验证:
验证密码和确认密码是否一致。
2. 唯一性检查:
在用户提交注册信息前,检查用户名是否已被其他用户注册。
3. 注册功能:
当用户点击注册按钮后,系统将收集的用户信息发送到服务器端进行处理。
服务器端对用户信息进行验证,并将通过验证的用户信息存储到数据库中。
4. 注册结果处理:
注册成功:清除注册界面的输入内容,显示一段欢迎信息,并自动跳转至登录界面。
注册失败:在注册界面显示相应的错误信息,如“用户名已存在”、“密码和确认密码不一致”等。
下图为注册功能的流程图
图 4-5 注册流程图
4.4菜单显示功能模块
4.4.1.界面设计
使用QVBoxLayout布局管理器进行布局设计, 在主界面上方,放置模糊查询输入框和查询按钮。在主界面中央,放置显示数据库信息的表格。在表格下方,依次排列新增日志按钮、数据可视化按钮和导出Excel按钮。
表格设计与功能:
日期:使用QTableWidgetItem设置单元格内容,显示日志的创建日期。
内容摘要:显示日志的主要内容,右侧显示日志的详细信息。
删除按钮:在每一行的末尾,为每个日志记录添加一个删除按钮(。用户点击该按钮时,触发槽函数,从数据库中删除对应的日志记录,并更新表格内容。
修改按钮:在每一行的末尾,为每个日志记录添加一个修改按钮。用户点击该按钮时,触发槽函数,打开一个新的窗口,允许用户编辑和更新该日志记录。
主界面的菜单设计如图4-6所示.
图 4-6主界面菜单
4.4.2功能设计
在登录到主界面后查询所有的日志信息并展示到主界面中。下图为查看主界面的流程图:
图 4-7 主界面流程图
4.5模糊查询功能模块
4.5.1界面设计
(在主界面中实现)在主界面的顶部或侧边,添加一个搜索框(QLineEdit)和一个搜索按钮(QPushButton)。
4.5.2功能设计
搜索框功能:用户在搜索框中输入关键词,系统将根据关键词进行模糊查询。
搜索按钮功能:当用户点击搜索按钮时,触发槽函数,根据搜索框中的关键词查询数据库中的日志记录,并更新主界面的表格以显示匹配的日志记录。
查询逻辑设计:
查询逻辑应包括对日志标题、内容、作者等字段的模糊匹配。可以使用SQL的LIKE操作符或者Python的字符串匹配函数来实现模糊查询。
如果用户未输入任何关键词,点击搜索按钮后应显示所有日志记录。
下图为模糊查询的流程图
图 4-8 模糊查询流程图
4.6新增日志功能模块
4.6.1.界面设计
新增日志模块设计为一个独立的窗口,使用户专注于填写新的日志信息。
标题输入框:用于输入日志的标题。
内容文本框:用于输入日志的详细内容,使用QTextEdit控件以支持多行文本和基本的文本格式化。
日期选择器:使用QDateEdit控件让用户选择日志的创建日期。
提交按钮:用户输入完所有信息后,点击该按钮提交新的日志记录。
新增日志的界面设计如图4-9所示.
图 4-9 新增日志界面
4.6.2功能设计
当用户点击提交按钮时,触发槽函数,将用户输入的信息保存到数据库中,并关闭新增日志窗口/面板。如果输入信息有误或保存失败,应显示相应的错误信息。下图为新增日志的流程图
图 4-10 新增日志流程图
4.7 修改日志功能模块
4.7.1.界面设计
修改日志模块设计为一个独立的窗口,以便用户专注于编辑选定的日志信息。 窗口标题命名为“修改日志”.界面布局包含以下元素:
标题输入框:预填充要修改的日志的当前标题,用户可以进行修改。
内容文本框:预填充要修改的日志的当前详细内容,用户可以进行修改。
日期选择器:预填充并允许用户修改日志的创建日期。
提交按钮:用户完成修改后,点击该按钮更新日志记录。
取消按钮:用户在未完成修改时,点击该按钮取消修改日志。
修改日志的界面如图4-11所
图 4-11 修改日志界面
4.7.2功能设计
日志选择:在主界面上,用户选择要修改的日志行,点击修改按钮后,打开修改日志窗口/面板,并将选定日志的信息预填充到相应的输入框中。
提交按钮功能:当用户点击提交按钮时,触发槽函数,将用户修改的信息保存到数据库中,并关闭修改日志窗口/面板。如果输入信息有误或保存失败,应显示相应的错误信息。
取消按钮功能:当用户点击取消按钮时,关闭修改日志窗口/面板,不保存任何修改的信息。
下图为修改日志的流程图:
图 4-12 修改日志流程图
4.8 删除日志功能模块
4.8.1界面设计
(同主界面)删除日志操作直接在主界面上进行,在主界面的表格控件QTableWidget中,为每行日志记录的最后一列添加一个按钮(QPushButton)。
4.8.2. 功能设计
删除按钮功能:当用户点击某一行的日志删除按钮时,触发槽函数,从数据库中删除对应的日志记录,并更新主界面的表格以显示最新的日志记录。
确认删除对话框:为了防止用户误删日志,在删除操作前弹出一个确认对话框,询问用户是否确定要删除选定的日志。
下图为删除日志的流程图:
图 4-13 删除日志流程图
4.9 数据分析功能模块
4.9.1界面设计
数据可视化模块设计为一个独立的窗口或面板,以便用户专注于查看日志数量随时间变化的折线图。
窗口/面板标题可以命名为“日志数量随时间变化”或类似的描述性文字。
图表区域:用于显示日志数量随时间变化的折线图。可以使用 PyQt5 的 FigureCanvas 类结合 matplotlib 库来创建图表。
数据分析的界面设计如下图所示:
图 4-14 数据可视化界面
4.9.2功能设计
折线图绘制:系统应从数据库中获取日志的创建日期和对应的日志数量,使用 matplotlib 库绘制日志数量随时间变化的折线图。
下图为数据可视化的流程图
图 4-15 数据可视化流程图
4.10 导出Execel功能模块
4.10.1界面设计
(同主界面),在主界面上显示一个导出按钮。
4.10.2功能设计
数据获取:通过调用数据库查询方法获取班级日志数据,并将其填充到QTableWidget中。
刷新功能:点击工具栏的"刷新"按钮,重新获取班级日志数据并更新QTableWidget。
导出Excel功能:点击菜单栏的"文件"->"导出Excel"或者工具栏的"导出Excel"按钮,调用exportToExcel()函数将当前显示的班级日志数据导出为Excel文件。
下图为数据导出的流程图:
图 4-16 数据导出流程图
4.11 系统测试
系统测试是软件开发的重要一环,评估和验证整个软件系统是否符合既定的需求和规格,并检测是否存在缺陷或错误。本课设的系统测试包括:用户登录功能测试、用户注册功能测试、主界面展示功能测试、模糊查询功能测试、新增日志功能测试、修改日志功能测试、删除功能测试、数据可视化功能测试,数据导出功能测试。在测试过程中,以上测试全部通过,系统各功能正常执行,现列举出核心功能的测试过程。
4.11.1用户登录功能测试
该测试用例的目的是验证用户是否能够通过输入正确的用户名和密码成功登录系统。在未登录的情况下,测试流程包括进入登录页面,输入用户名和密码,预期结果是用户名和密码验证成功,用户会被跳转至主界面。具体测试流程如表4-1所示。
表 4-1 用户登录测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码能否实现正常的登录功能 |
前提 | 已登录的情况下 |
测试流程 | (1)进入登录页面 (2)输入用户名:admin (3)输入密码:123456 (4)点击登录按钮 |
预期结果 | 用户名和密码验证成功,跳转至主界面。 |
实际结果 | 实际结果和预期结果一致 |
4.11.2模糊查询功能测试
该测试用例的目的是验证用户能否能够通过输入相关信息进行模糊查询。在已登录的情况下,测试流程包括进入主页面,输入相关数据,点击查询按钮,预期结果是成功查询到符合条件的信息,在主界面刷新并显示。具体测试流程如表4-2所示。
表 4-2 模糊查询测试表
用例名称 | 模糊查询系统 |
目的 | 测试用户输入信息能否根据输入的信息进行模糊查询 |
前提 | 已登录的情况下 |
测试流程 | (1)在输入框中输入“升旗仪式” (2)点击查询按钮 |
预期结果 | 成功查询到与“升旗仪式”相关的内容 |
实际结果 | 实际结果和预期结果一致 |
4.11.3修改日志功能测试
该测试用例的目的是验证用户能否进行修改日志。在已登录的情况下,测试流程包括点击修改日志按钮,修改信息,再点击修改按钮,预期结果是成功修改相关日志,在主界面刷新并显示。具体测试流程如表4-3所示。
表 4-3 修改日志测试表
用例名称 | 修改日志系统 |
目的 | 测试用户在登录状态下能否修改日志 |
前提 | 已登录情况下 |
测试流程 |
|
预期结果 | 用户在点击修改日志按钮时能够进入修改日志界面,界面回显原始数据,用户点击修改按钮后成功修改数据,提示用户修改成功并刷新主界面。 |
实际结果 | 实际结果和预期结果一致 |
4.11.4数据导出功能测试
该测试用例的目的是验证用户能否对班级日志信息进行导出。在已登录的情况下,测试流程包括点击导出按钮,查看相关文件等,预期结果是成功将班级日志信息导出到磁盘中。具体测试流程如表4-3所示。
表 4-5 数据导出数据表
用例名称 | 数据导出系统 |
目的 | 测试用户能否将日志数据导出到excel表 |
前提 | 已登录情况下 |
测试流程 | (1)点击数据导出按钮 (2)查看D盘根目录是否出现了data.xlsx文件 (3)新建一条日志 (4)再次点击数据导出按钮 (5)查看data.xlsx文件是否更新 |
预期结果 | 用户首次点击数据导出按钮时,D盘根目录出现了data.xlsx文件,用户第二次点击该按钮时,文件内容更新。 |
实际结果 | 实际结果和预期结果一致 |
本次的课程设计项目是综合性的,多样化的,而且充满了挑战。根据课程设计要求,本组选了Python里的PyQt5库来制作图形用户界面,选用了MySQL数据库来存储数据。
在本项目的合作过程中,本组制定了详细的分工计划,以确保每个人都能够充分发挥自己的专长。其中一位团队成员负责前端界面设计和部分后端编程工作,另一位则专注于数据库设计和剩下的后端编程工作。在编码过程中始终保持着紧密沟通,互相协作,相互检查对方编写的代码,以确保项目进展顺利。
在设计过程中,每个小组成员或多或少都遇到了一些技术难题,比如怎么用PyQt5布置界面,怎么连接和操作MySQL数据库,还有怎么把数据变成图表。但是大家通过查资料、看网上的教程,再一起讨论,都把这些难题解决了。为了让整体代码能保持一致,还能追溯到每一步的改动,本小组选用Git这个版本控制系统来管理代码。
回顾整个设计过程,可以发现一些改进的空间。首先,可以进一步提升界面设计的精致度,确保代码结构规范化,同时增强程序处理错误和异常情况的能力。对于未来的发展,计划添加更多用户友好的功能,例如加载动画以提示用户程序正在工作、优化查询速度以提高用户感知速度,并提供更多数据可视化选项供用户选择。
通过这次课程设计,团队成员们不仅真正掌握了Python的PyQt5库和MySQL数据库的使用方法,还提高了团队合作和项目管理的本领。可以相信,完成的功能齐全的班级日志管理系统将为用户带来很大的方便。同时,这次的项目经验也将对未来的学习和工作产生很大的帮助。