摘要
随着信息技术的快速发展和普及,高校教育正面临着数字化转型的挑战和机遇。实训作为高等教育中的重要环节,其实施和管理的效率与质量直接关系到学生的实践能力和创新精神的培养。传统的实训报告管理方式,如纸质存档、电子邮件传输等,不仅效率低下,而且难以保证数据的安全性和完整性。因此,开发一套高效、便捷的实训报告管理系统显得尤为迫切。
Flask是一个轻量级的Web框架,基于Python语言开发,具有简单易学、灵活可扩展等特点。它允许开发者快速搭建Web应用程序,并提供丰富的插件和库支持,从而满足各种复杂的应用需求。Python作为一种广泛使用的编程语言,具有语法简洁、易于上手、功能强大等优势,特别适合用于开发Web应用程序。
基于Python的实训报告管理系统,旨在通过Web界面实现实训报告的实训任务管理、实训报告管理、优秀报告管理、平均分数管理、通知提醒管理等功能。该系统能够有效提高实训报告管理的效率和质量,减少人为错误和信息丢失的风险,同时方便师生之间的沟通和交流。此外,该系统还具有可扩展性和可定制性,可以根据不同高校和专业的实际需求进行定制和优化。
通过本系统的设计与实现,我们希望能够为高校实训报告管理带来革命性的变革,推动教育数字化转型的进程,为培养更多具有实践能力和创新精神的高素质人才做出贡献。
关键词:Flask;实训报告管理系统;Python Web框架
Abstract
With the rapid development and popularization of information technology, higher education is facing challenges and opportunities in digital transformation. As an important part of higher education, the efficiency and quality of practical training implementation and management are directly related to the cultivation of students' practical abilities and innovative spirit. The traditional management methods for practical training reports, such as paper-based archiving and email transmission, are not only inefficient, but also difficult to ensure the security and integrity of data. Therefore, it is particularly urgent to develop an efficient and convenient training report management system.
Flask is a lightweight web framework developed based on the Python language, which is easy to learn, flexible, and scalable. It allows developers to quickly build web applications and provides rich plugin and library support to meet various complex application requirements. Python, as a widely used programming language, has advantages such as concise syntax, easy to learn, and powerful functionality, making it particularly suitable for developing web applications.
A Python based training report management system aims to achieve functions such as training task management, training report management, excellent report management, average score management, notification and reminder management through a web interface. This system can effectively improve the efficiency and quality of training report management, reduce the risk of human errors and information loss, and facilitate communication and exchange between teachers and students. In addition, the system also has scalability and customizability, which can be customized and optimized according to the actual needs of different universities and majors.
Through the design and implementation of this system, we hope to bring revolutionary changes to the management of practical training reports in universities, promote the process of digital transformation in education, and contribute to the cultivation of more high-quality talents with practical ability and innovative spirit.
Keywords:Flask; Training report management system; Python Web Framework
1 绪论
1.1 选题背景和意义
在高等教育中,实训是一个至关重要的环节,它为学生提供了将理论知识应用于实际操作的机会,有助于培养他们的实践能力和创新精神。然而,随着高校规模的扩大和实训活动的增多,传统的实训报告管理方式已经无法满足现代教育的需求。纸质存档不仅容易丢失和损坏,而且难以进行高效的检索和共享;电子邮件传输则存在信息安全风险,且不易于进行统一的管理和监控。因此,开发一套高效、便捷的实训报告管理系统成为了解决这一问题的关键。
实训报告管理系统的选题背景正是基于这样的现实需求。通过引入信息技术,特别是Web技术和数据库技术,我们可以构建一个在线平台,实现实训报告的电子化提交、审核、管理和查询。这样的系统不仅可以提高管理效率,减少人为错误,还能保证数据的安全性和完整性,为师生提供更加便捷、高效的服务。
此外,实训报告管理系统的选题还具有深远的意义。它有助于推动高校教育数字化转型的进程。通过引入信息技术,我们可以改变传统的教育管理方式,实现教育资源的数字化、网络化和智能化,提高教育教学的质量和效率。它还有助于培养学生的实践能力和创新精神。通过在线提交实训报告,学生可以更加方便地展示自己的实践成果和创新思维,同时也能够更加方便地获取他人的反馈和建议,从而不断完善自己的实践能力和创新精神。最后,它还有助于提升高校的管理水平和形象。通过构建一个高效、便捷的实训报告管理系统,我们可以展示高校在教育信息化方面的领先地位和创新能力,提升高校的社会声誉和影响力。
综上所述,实训报告管理系统的选题背景和意义在于解决传统管理方式存在的问题,推动高校教育数字化转型的进程,培养学生的实践能力和创新精神,以及提升高校的管理水平和形象。通过本系统的设计与实现,我们有望为高校实训报告管理带来革命性的变革,为培养更多具有实践能力和创新精神的高素质人才做出贡献。
在国内,随着教育信息化的不断推进,越来越多的高校开始重视实训报告管理系统的建设。目前,一些高校已经自主开发或委托第三方开发了实训报告管理系统,并在实际教学中得到了应用。这些系统通常包括实训报告的提交、审核、查阅、统计等功能,能够大大提高实训报告的管理效率和质量。同时,国内的一些研究机构和学者也在积极探索实训报告管理系统的理论和实践,提出了不少有益的思路和方法。
然而,国内实训报告管理系统的建设还存在一些问题。一方面,部分高校对实训报告管理系统的重视程度不够,投入的人力、物力和财力有限,导致系统建设滞后、功能不完善等问题。另一方面,由于国内教育信息化整体水平相对较低,部分高校在实训报告管理系统的建设过程中缺乏先进的技术支持和创新思维,导致系统建设缺乏特色和亮点。
国外研究现状
相比国内,国外在实训报告管理系统的研究和应用方面更加成熟和先进。许多国外高校都建立了完善的实训报告管理系统,这些系统不仅功能齐全、操作便捷,而且能够与其他教学管理系统进行无缝对接,实现数据共享和互通。同时,国外的一些教育技术公司也积极投入实训报告管理系统的研发和推广,为高校提供了一系列高效、稳定的解决方案。
此外,国外在实训报告管理系统的理论研究和实践探索方面也取得了不少成果。例如,一些国外学者提出了基于云计算、大数据等技术的实训报告管理系统架构和设计方法,为系统的建设提供了更加先进的理论支持和技术保障。
综上所述,国内外在实训报告管理系统的研究和应用方面都有不少进展和成果,但也存在一些问题和不足。未来,我们可以借鉴国外的先进经验和技术手段,结合国内的实际需求和发展趋势,进一步加强实训报告管理系统的建设和完善,为高校实践教学提供更加高效、便捷的服务。
本文共分为六章,章节内容安排如下:
第一章为引言,此章节对所设计和实现的系统的背景和状况以及意义进行详细的论述以及说明,同时进行了论文整体框架的结构的简要介绍。
第二章为系统需求分析,章节所做的主要的工作是对系统进行了技术、经济和操作方面可行性的分析;对系统实行了总体功能的需求、用例分析。
第三章为系统的设计,主要是对系统的功能结构进行设计,并对系统数据库的概念结构以及物理结构的设计进行了分析。
第四章就是对系统的实现,根据系统功能的划分,分别的对系统所需要实现的前台客户功能和后台管理员功能进行了分析和说明。
第五章:系统测试。主要对系统的部分界面进行测试并对主要功能进行测试
2 系统分析
系统分析是开发一个项目的先决条件,通过系统分析可以很好的了解系统的主体用户的基本需求情况,同时这也是项目的开发的原因。进而对系统开发进行可行性分析,通常包括技术可行性、经济可行性等,可行性分析同时也是从项目整体角度进行的分析。然后就是对项目的具体需求进行分析,分析的手段一般都是通过用户的用例图来实现。下面是详细的介绍。
系统可行行分析是对系统对系统可行性进行一个探讨。在探讨系统的可行性上我们主要从技术上的可行性和经济上的可行性以及操作的可行性上进行分析,如果三个层面度通过,我们则认为系统是比较可行的。
基于Python语言开发实训报告管理系统在技术上是完全可行的。Flask作为一个轻量级但功能强大的Web框架,提供了构建Web应用程序所需的基础结构和工具,而Python作为一种成熟、稳定且广泛应用的编程语言,具有丰富的库和框架支持,能够满足系统在开发、部署和维护方面的需求。此外,Python的简洁易学和强大的社区支持也为系统的快速开发和问题解决提供了有力保障。因此,采用Flask和Python开发实训报告管理系统是技术上的合理选择,能够确保系统的顺利实现和稳定运行。
2.1.2 操作可行性分析
实训报告管理系统的操作可行性主要依赖于用户界面的友好程度以及系统功能的易用性。基于Python开发的实训报告管理系统,通过采用现代化的前端框架和设计理念,可以构建出直观、简洁且易于操作的用户界面。同时,系统功能的设计将遵循用户的使用习惯和需求,确保各项功能操作流畅、逻辑清晰。此外,系统还将提供详细的操作指南和帮助文档,帮助用户快速掌握系统的使用方法。因此,从操作层面来看,基于Python的实训报告管理系统完全具备操作可行性,能够满足用户的实际需求和使用习惯。
2.1.3经济可行性分析
从经济角度来看,基于python的实训报告管理系统具有显著的可行性。Python作为一种开源语言,其使用成本相对较低,无需购买昂贵的商业软件或授权费用。同时,系统的开发和维护成本也相对较低,因为Python拥有丰富的免费库和框架支持,开发者可以充分利用这些资源来快速构建系统,减少了开发时间和人力成本。系统的运行和维护成本也较低,因为Python具有高效的内存管理和执行效率,可以在普通的计算机上运行,无需高性能的服务器或昂贵的硬件设备。因此,基于python的实训报告管理系统在经济上具有可行性,可以为学校节省成本,提高管理效率。
实训报告管理系统主要划分为了学生用户、教师用户和管理员这两大部分,具体功能描述如下:
- 学生用户功能介绍:
注册登录:提供学生用户注册新账户并进行登录的功能,以便能够访问系统的各项功能和个人信息。
首页:展示学校的最新动态和相关信息,包括通知公告、学校资讯、实训任务等,让学生快速了解学校的实训情况。
通知公告:提供学校发布的通知公告,包括学校的重要通知、活动安排等,让学生及时获取学校的重要信息。
学校资讯:展示学校的相关资讯内容,如学校的新闻动态、学术讲座等,让学生获取学校的最新资讯。
实训任务:展示学生的实训任务安排,包括实训内容、截止时间等信息,方便学生了解和安排实训任务。
实训报告:学生可以上传、编辑、查看自己的实训报告,管理自己的实训成果。
通知提醒:展示学校发布的通知提醒,包括实训任务的截止时间提醒等。
收藏:学生可以收藏感兴趣的通知公告、资讯内容,方便后续查看和参考。
- 管理员功能介绍:
登录:管理员需要通过用户名和密码进行登录,以获取管理后台的访问权限。
后台首页:提供管理员一个概览系统的主要信息和功能入口,包括系统概况、最新通知、待处理事项等内容,方便管理员了解系统的运行情况。
系统用户:管理员可以管理系统中的用户信息,包括学生用户和其他管理员,进行添加、编辑、删除用户等操作,以确保用户信息的完整性和准确性。
实训任务管理:管理员可以管理实训任务的信息,包括添加、编辑、删除任务等操作,以及设置任务的截止时间和评审标准,方便学生进行实训报告的准备和提交。
实训报告管理:管理员可以管理学生提交的实训报告,包括查看、评审、反馈等操作,以确保实训报告的质量和学生的实践能力提升。
优秀报告管理:管理员可以管理评选出的优秀实训报告,包括发布、编辑、删除优秀报告等操作,以鼓励学生的优秀表现并进行宣传。
平均分数管理:管理员可以管理实训报告的平均分数情况,包括统计、查看、分析学生的实训成绩,以便评估实训效果和学生的表现。
通知提醒管理:管理员可以管理系统发送的通知提醒,包括任务截止时间提醒、优秀报告通知等,确保信息及时传达给相关用户。
轮播图管理:管理员可以管理系统首页的轮播图设置,包括添加、编辑、删除轮播图等操作,以提升系统的用户体验和视觉效果。
通知公告管理:管理员可以发布、编辑、删除系统的通知公告信息,确保信息及时传达给用户,包括实训任务通知、优秀报告公示等。
资源管理:管理员可以管理系统提供的资讯信息,包括学校资讯、资讯分类等内容,确保信息的准确性和更新性。
- 教师用户功能介绍:
登录:教师用户需要通过用户名和密码进行登录,以获取管理后台的访问权限。
后台首页:提供教师用户一个概览系统的主要信息和功能入口,包括实训任务概况、最新通知、待处理事项等内容,方便教师了解实训任务的进展和学生的情况。
实训任务管理:教师用户可以管理实训任务的信息,包括添加、编辑、删除任务等操作,以及设置任务的截止时间和评审标准,方便学生进行实训报告的准备和提交。
实训报告管理:教师用户可以管理学生提交的实训报告。
优秀报告管理:教师用户可以管理评选出的优秀实训报告,包括发布、编辑、删除优秀报告等操作,以鼓励学生的优秀表现并进行宣传。
平均分数管理:教师用户可以管理实训报告的平均分数情况。
通知提醒管理:教师用户可以管理系统发送的通知提醒,包括任务截止时间提醒、优秀报告通知等,确保信息及时传达给相关用户。
实训报告管理系统的非功能性需求比如实训报告管理系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:
表2-1实训报告管理系统非功能需求表
安全性 | 主要指实训报告管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指实训报告管理系统能够按照用户提交的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响实训报告管理系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着实训报告管理系统的页面展示内容进行操作,就可以了。 |
可维护性 | 实训报告管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
2.3 系统用例分析
实训报告管理系统的完整UML用例图分别如下图所示。
学生用户角色用例图如下图所示。
图2-1 学生用户角色用例图
管理员角色用例图如下图所示。
图2-2管理员角色用例图
教师用户角色用例图如下图所示。
图2-3教师用户角色用例图
2.5系统流程分析
2.5.1用户登录流程
对于系统的安全性的第一关,就是用户想要进入系统,必须通过登录窗口,输入自己的登录信息才可以进行登录,用户输入的信息准确无误后才可以进入到操作系统界面,进行功能模块的相对应操作,如果用户输入的信息不正确,则窗口出现提示框,用户登录失败,返回到第一步进行重新输入,如图2-4所示。

图2-4登录操作流程图
对于实训报告管理系统,需要随时添加所需要的数据信息,对于用户添加信息,需要根据添加界面,根据选框的内容进行填写所要添加的数据信息,信息输入完成后判断数据信息是否符合要求,符合要求则添加完成,用户所添加的信息不符合要求,则需要返回到第一步,重新输入数据信息,再进行判断操作,如图2-5所示。
图2-5信息添加流程图
不管是哪个用户角色进入到不通的系统操作界面,都可以进行不同的信息内容的操作功能,对用系统数据信息的删除,用户一旦将信息删除,那么该删除的数据信息将无法恢复,所以用户在对数据删除事,一定判断删除的内容是否是确定要删除的,确定无误后选择确定删除操作,如图2-6所示。
图2-6信息删除流程图
本章主要通过对实训报告管理系统的可行性分析、功能需求分析、系统用例分析、系统流程分析,确定整个实训报告管理系统要实现的功能。同时也为实训报告管理系统的代码实现和测试提供了标准。
3 系统总体设计
本章主要讨论的内容包括实训报告管理系统的系统架构设计、功能模块设计和数据库系统设计。
3.1 系统架构设计
本实训报告管理系统从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。
图3-1实训报告管理系统系统架构设计图
表现层(UI):又称UI层,主要完成本实训报告管理系统的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本实训报告管理系统时的舒适度。UI的界面设计也要适应不同版本的实训报告管理系统以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本实训报告管理系统的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本实训报告管理系统的数据是放在服务端的mysql数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本实训报告管理系统的数据存储和管理功能。
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本实训报告管理系统中的用例。那么接下来就要开始对本实训报告管理系统的架构、主要功能开始进行设计。实训报告管理系统根据前面章节的需求分析得出,其总体设计模块图如下图所示。

图3-2 实训报告管理系统功能模块图
3.3 数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
3.3.1 数据库概念结构设计
下面是整个实训报告管理系统中主要的数据库表总E-R实体关系图。

图3-3 实训报告管理系统总E-R关系图
3.3.2 数据库逻辑结构设计
通过上一小节中实训报告管理系统中总E-R关系图上得出一共需要创建很多个数据表。在此主要罗列几个主要的数据库表结构设计。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | average_score_id | int | 10 | 0 | N | Y | 平均分数ID | |
2 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
3 | teacher_users | int | 10 | 0 | Y | N | 0 | 教师用户 |
4 | number_of_students | int | 10 | 0 | Y | N | 0 | 学生人数 |
5 | average_score | int | 10 | 0 | Y | N | 0 | 平均分数 |
6 | remarks | text | 65535 | 0 | Y | N | 备注信息 | |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | excellent_report_id | int | 10 | 0 | N | Y | 优秀报告ID | |
2 | task_number | varchar | 64 | 0 | Y | N | 任务编号 | |
3 | task_name | varchar | 64 | 0 | Y | N | 任务名称 | |
4 | teacher_users | int | 10 | 0 | Y | N | 0 | 教师用户 |
5 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
6 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
7 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
8 | student_id | varchar | 64 | 0 | Y | N | 学生学号 | |
9 | report_attachment | varchar | 255 | 0 | Y | N | 报告附件 | |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notification_reminder_id | int | 10 | 0 | N | Y | 通知提醒ID | |
2 | reminder_title | varchar | 64 | 0 | Y | N | 提醒标题 | |
3 | teacher_users | int | 10 | 0 | Y | N | 0 | 教师用户 |
4 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
5 | reminder_content | text | 65535 | 0 | Y | N | 提醒内容 | |
6 | reminder_remarks | text | 65535 | 0 | Y | N | 提醒备注 | |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | simulation_tasks_id | int | 10 | 0 | N | Y | 实训任务ID | |
2 | task_number | varchar | 64 | 0 | Y | N | 任务编号 | |
3 | task_name | varchar | 64 | 0 | Y | N | 任务名称 | |
4 | release_date | date | 10 | 0 | Y | N | 发布日期 | |
5 | deadline | date | 10 | 0 | Y | N | 截止日期 | |
6 | teacher_users | int | 10 | 0 | Y | N | 0 | 教师用户 |
7 | cover_photo | varchar | 255 | 0 | Y | N | 封面图片 | |
8 | task_content | longtext | 2147483647 | 0 | Y | N | 任务内容 | |
9 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
10 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
11 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表slides (轮播图)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | student_users_id | int | 10 | 0 | N | Y | 学生用户ID | |
2 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
3 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
4 | student_gender | varchar | 64 | 0 | Y | N | 学生性别 | |
5 | student_phone_number | varchar | 16 | 0 | Y | N | 学生电话 | |
6 | student_id | varchar | 64 | 0 | N | N | 学生学号 | |
7 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
8 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | teacher_users_id | int | 10 | 0 | N | Y | 教师用户ID | |
2 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
3 | teacher_gender | varchar | 64 | 0 | Y | N | 教师性别 | |
4 | teachers_phone_number | varchar | 16 | 0 | Y | N | 教师电话 | |
5 | teacher_id | varchar | 64 | 0 | N | N | 教师工号 | |
6 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | training_report_id | int | 10 | 0 | N | Y | 实训报告ID | |
2 | task_number | varchar | 64 | 0 | Y | N | 任务编号 | |
3 | task_name | varchar | 64 | 0 | Y | N | 任务名称 | |
4 | teacher_users | int | 10 | 0 | Y | N | 0 | 教师用户 |
5 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
6 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
7 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
8 | student_id | varchar | 64 | 0 | Y | N | 学生学号 | |
9 | report_attachment | varchar | 255 | 0 | Y | N | 报告附件 | |
10 | report_content | text | 65535 | 0 | Y | N | 报告内容 | |
11 | number_of_reports | varchar | 64 | 0 | Y | N | 报告数量 | |
12 | report_rating | int | 10 | 0 | Y | N | 0 | 报告评分 |
13 | teacher_evaluation | text | 65535 | 0 | Y | N | 教师评价 | |
14 | teachers_suggestion | text | 65535 | 0 | Y | N | 教师建议 | |
15 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
16 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
17 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
18 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表upload (文件上传)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
表user (用户账户:用于保存用户登录信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
表user_group (用户组:用于用户前端身份和鉴权)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
整个实训报告管理系统的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。
4 系统详细设计与实现
实训报告管理系统的详细设计与实现主要是根据前面的实训报告管理系统的需求分析和实训报告管理系统的总体设计来设计页面并实现业务逻辑。主要从实训报告管理系统界面实现、业务逻辑实现这两部分进行介绍。
4.1学生用户功能模块
4.1.1 用户注册界面
实训报告管理系统的用户可以进行注册登录,填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。用户注册界面展示如下图所示。

图4-1注册界面图
注册代码:
def Register(self, ctx):
print("===================注册=====================")
userService = service_select("user")
body = ctx.body
if "username" not in body and body["username"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户名不能为空",
}
}, ensure_ascii=False))
if "user_group" not in body and body["user_group"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户组不能为空",
}
}, ensure_ascii=False))
if "password" not in body and body["password"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "密码不能为空",
}
}, ensure_ascii=False))
post_param = body
post_param['nickname'] = body["nickname"] or ""
post_param['password'] = md5hash(body["password"])
obj = userService.Get_obj({"username": post_param['username']}, {"like": False})
if obj:
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户名已存在",
}
}, ensure_ascii=False))
ret = {
"error": {
"code": 70000,
"message": "注册失败",
}
}
bl = userService.Add(post_param)
if bl:
ret = {
"result": {
"bl": True,
"message": "注册成功"
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
4.1.2 用户登录界面
实训报告管理系统中的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到实训报告管理系统的首页中;否则将会提示相应错误信息,用户登录界面如下图所示。

图4-2用户登录界面图
登录代码:
def Login(self, ctx):
print("===================登录=====================")
ret = {
"error": {
"code": 70000,
"message": "账户不存在",
}
}
body = ctx.body
password = md5hash(body["password"]) or ""
obj = service_select("user").Get_obj(
{"username": body["username"]}, {"like": False}
)
if obj:
user_group = service_select("user_group").Get_obj({'name': obj['user_group']}, {"like": False})
if user_group and user_group['source_table'] != '':
user_obj = service_select(user_group['source_table']).Get_obj({"user_id": obj['user_id']}, {"like": False})
if user_obj['examine_state'] == '未通过':
ret = {
"error": {
"code": 70000,
"message": "账户未通过审核",
}
}
return ret
if user_obj['examine_state'] == '未审核':
ret = {
"error": {
"code": 70000,
"message": "账户未审核",
}
}
return ret
if obj["state"] == 1:
if obj["password"] == password:
timeout = timezone.now()
timestamp = int(time.mktime(timeout.timetuple())) * 1000
token = md5hash(str(obj["user_id"]) + "_" + str(timestamp))
ctx.request.session[token] = obj["user_id"]
service_select("access_token").Add(
{"token": token, "user_id": obj["user_id"]}
)
obj["token"] = token
ret = {
"result": {"obj": obj}
}
else:
ret = {
"error": {
"code": 70000,
"message": "密码错误",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "用户账户不可用,请联系管理员",
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
在右上角点击“我的账户”可以对个人资料中的头像、昵称、邮箱等信息进行管控。我的账户界面如下图所示。

图4-3我的账户界面图
用户使用该系统注册完成后,用户对登录密码有修改需求时,系统也可以提供用户修改密码权限。系统中所有的操作者能够变更自己的密码信息,执行该功能首先必须要登入系统,然后选择密码变更选项以后在给定的文本框中填写初始密码和新密码来完成修改密码的操作。在填写的时候,假如两次密码填写存在差异,那么此次密码变更操作失败。密码修改界面如下图所示。

图4-4密码修改界面图
修改密码代码如下:
def Change_password(self, ctx):
print("===================修改密码=====================")
ret = {
"error": {
"code": 70000,
"message": "账号未登录",
}
}
request = ctx.request
headers = request.headers
if ("x-auth-token" in headers) and headers["x-auth-token"]:
token = headers["x-auth-token"]
user_id = tokenGetUserId(token, request)
userService = service_select("user")
body = ctx.body
password = md5hash(body["o_password"])
obj = userService.Get_obj({"user_id": user_id, "password": password}, {"like": False})
if obj:
password = md5hash(body["password"])
bl = userService.Set({"user_id": user_id}, {"password": password})
if bl:
ret = {"result": {"bl": True, "message": "修改成功"}}
else:
ret = {
"error": {
"code": 70000,
"message": "修改失败",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "密码错误",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "账户未登录",
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
4.1.5实训任务界面
学生用户点击“实训任务”这一菜单按钮,会显示管理员在后台发布的所有的实训任务信息,支持通过关键词对实训任务进行搜索,选择需要的实训任务信息点击可以进入到实训任务信息详细的介绍界面,同时可以进行提交报告、点赞、收藏和评论等操作,实训任务界面如下图所示。

图4-5实训任务界面图

图4-6提交报告界面图
4.2管理员功能模块
4.2.1 管理员功能界面
管理员可以查看后台首页、系统用户、实训任务管理、实训报告管理、优秀报告管理、平均分数管理、通知提醒管理、系统管理、通知公告管理、资源管理等。在功能界面还可以查看实训报告统计和平均分数统计,并且可以根据需要进行相应的操作,管理员功能界面如下图所示。

图4-7管理员功能界面图
管理员可以对系统中所有的用户角色进行管控,包含了管理员、学生用户和教师用户这三种角色,如果需要添加新的用户,点击页面中的“添加”按钮根据提示输入上用户信息,点击“提交”以后在对应的用户界面就可以查看到了,可以点击用户后面的“删除”按钮直接删除某一用户。系统用户管理界面如下图所示。

图4-8系统用户界面图
管理员点击“实训报告管理”这一菜单的时候,会出现实训报告列表这个子菜单,管理员可以管理学生提交的实训报告,包括查看、评审、反馈等操作,以确保实训报告的质量和学生的实践能力提升。实训报告管理界面如下图所示。

图4-9实训报告管理界面图
实训报告代码:
def Add(self, ctx):
body = ctx.body
unique = self.config.get("unique")
obj = None
if unique:
qy = {}
for i in range(len(unique)):
key = unique[i]
qy[key] = body.get(key)
obj = self.service.Get_obj(qy)
if not obj:
error = self.Add_before(ctx)
if error["code"]:
return {"error": error}
error = self.Events("add_before", ctx, None)
if error["code"]:
return {"error": error}
result = self.service.Add(body, self.config)
if self.service.error:
return {"error": self.service.error}
res = self.Add_after(ctx, result)
if res:
result = res
res = self.Events("add_after", ctx, result)
if res:
result = res
return {"result": result}
else:
return {"error": {"code": 10000, "message": "已存在"}}
管理员点击“优秀报告管理”这一菜单的时候,会出现优秀报告列表这个子菜单,管理员可以管理评选出的优秀实训报告,包括发布、编辑、删除优秀报告等操作,以鼓励学生的优秀表现并进行宣传。优秀报告管理界面如下图所示。

图4-10优秀报告管理界面图
管理员可以对系统前台展示的轮播图进行增删改查,方便用户进行查看。轮播图管理界面如下图所示。界面如下图所示。系统管理界面如下图所示。

图4-11系统管理界面图
教师用户点击“实训任务管理”这一菜单的时候,会出现实训任务列表、实训任务添加这两个子菜单,教师用户可以管理实训任务的信息,包括添加、编辑、删除任务等操作,以及设置任务的截止时间和评审标准,方便学生进行实训报告的准备和提交。实训任务列表、实训任务添加界面如下图所示。

图4-12实训任务列表管理界面图

图4-13实训任务添加管理界面图
教师用户点击“平均分数管理”这一菜单的时候,会出现平均分数列表、平均分数添加这两个子菜单,教师用户可以管理实训报告的平均分数情况,包括统计、查看、分析学生的实训成绩,以便评估实训效果和学生的表现。平均分数列表、平均分数添加界面如下图所示。

图4-14平均分数列表管理界面图

图4-15平均分数添加界面图
教师用户点击“通知提醒管理”这一菜单的时候,会出现通知提醒列表、通知提醒添加这两个子菜单,教师用户可以管理系统发送的通知提醒,包括任务截止时间提醒、优秀报告通知等,确保信息及时传达给相关用户。通知提醒列表、通知提醒添加界面如下图所示。

图4-16通知提醒列表管理界面图

图4-17通知提醒添加管理界面图
5系统测试
5.1 系统测试用例
系统开发到了最后一个阶段那就是系统测试,系统测试对软件的开发其实是非常有必要的。因为没什么系统一经开发出来就可能会尽善尽美,再厉害的系统开发工程师也会在系统开发的时候出现纰漏,系统测试能够较好的改正一些错误,为后期系统的维护性提供很好的支持。通过系统测试,开发人员也可以建立自己对系统的信心,为后期的系统版本的跟新提供支持。
表5-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
实训报告查看功能测试:
表5-2 实训报告查看功能测试表
用例名称 | 实训报告查看 |
目的 | 测试实训报告查看功能 |
前提 | 用户登录 |
测试流程 | 点击实训报告列表 |
预期结果 | 可以查看到所有实训报告 |
实际结果 | 实际结果与预期结果一致 |
管理员添加优秀报告界面测试:
表5-3 添加优秀报告界面测试表
用例名称 | 添加优秀报告测试用例 |
目的 | 测试优秀报告添加功能 |
前提 | 管理员正常登录情况下 |
测试流程 | 1)管理员点击优秀报告,然后点击添加后并填写信息。 2)点击进行提交。 |
预期结果 | 提交以后,页面首页会显示新的优秀报告 |
实际结果 | 实际结果与预期结果一致 |
实训任务搜索功能测试:
表5-4实训任务搜索功能测试表
用例名称 | 实训任务搜索测试 |
目的 | 测试实训任务搜索功能 |
前提 | 无 |
测试流程 | 1)在搜索框填入搜索关键字。 2)点击搜索按钮。 |
预期结果 | 页面显示包含有搜索关键字的实训任务 |
实际结果 | 实际结果与预期结果一致 |
密码修改功能测试:
表5-5 密码修改功能测试表
用例名称 | 密码修改测试用例 |
目的 | 测试管理员密码修改功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1)管理员密码修改并完成填写。 2)点击进行提交。 |
预期结果 | 使用新的密码可以登录 |
实际结果 | 实际结果与预期结果一致 |
通知提醒展示功能测试:
表5-6通知提醒展示功能测试表
用例名称 | 通知提醒展示测试用例 |
目的 | 测试通知提醒展示功能 |
前提 | 用户正常登录情况下 |
测试流程 | 1)搜索查看通知提醒信息,点击展示。 2)填写通知提醒信息,点击进行提交。 |
预期结果 | 通知提醒成功 |
实际结果 | 实际结果与预期结果一致 |
通过编写实训报告管理系统的测试用例,已经检测完毕用户登录模块、实训报告查看模块、添加优秀报告界面模块、实训任务搜索功能模块、密码修改模块、通知提醒展示功能测试,通过这6大模块为实训报告管理系统的后期推广运营提供了强力的技术支撑。
结论
本研究针对实训报告管理系统地需求建模,数据建模及过程建模分析设计并实现实训报告管理系统的过程。给出系统应用架构并分析优劣势,通过功能分解图,系统组件图描述功能需求。设计建立了数据库,给出系统关键数据结构的定义。通过类关系图描述组件间的协作关系,给出各个类的定义方法。通过描述每一个类的字段,属性及方法实现实训报告管理系统的前后端代码。最终给出系统集成整合方法,完成实训报告管理系统地设计与实现。
在此项目的开发中,先要按照产品经理做出的产品模型铺出大体的页面,并在其中找好页面的逻辑关系,并且中途总结一些页面上的问题重新反馈给产品经理,当静态页面的搭建的大体已经完善时,就需要和负责后台开发的技术开发者联系,来接好前后台的数据接口,可以让后台的信息在前台显示出来,在这个项目实现中,不光明白了前端开发和产品经理的联系,也明白了后台在整个系统中起到了什么作用,因为前后台的连接,用户可以对系统进行操作,可以在输入自己的相关信息后,通过后台加工,完成对数据库的查找、修改、添加,而理解了这些关系与实现的方法后。再去完善整个系统的功能就更加清晰与简单了。此次的项目它涉及了前台与后台系统的搭建,在学校所学的知识基础上,此次的项目,让我对于一个系统的前端开发,以及后台的作用都有了一个更深切的认知。
参考文献
[1]胡王平,周裕康,孙荣坤,等.基于Python的振动监测与故障诊断系统开发[J].现代机械,2024,(01):11-15.DOI:10.13667/j.cnki.52-1046/th.2024.01.007.
[2]Thornton I ,Villar A V ,Gomez S , et al.extrabol: A Python Package for Estimating Bolometric Light Curves of Thermal Transients[J].Research Notes of the AAS,2024,8(2):
[3]陈泽帆,郭苗梓,李满,等.基于Python语言的成本管理系统设计与开发[J].锻造与冲压,2024,(04):26-30.
[4]Mitchell M J ,Chi Y ,Thapa M , et al.Common data models to streamline metabolomics processing and annotation, and implementation in a Python pipeline.[J].bioRxiv : the preprint server for biology,2024,
[5]田文涛.Python技术在计算机软件中的应用[J].集成电路应用,2024,41(02):344-346.DOI:10.19339/j.issn.1674-2583.2024.02.157.
[6]Ishan R ,Prakash C ,K. P T , et al.Python-Based Open-Source Tool for Automating Seleno-Referencing of Chandrayaan-2 Hyper-Spectral Data Cubes[J].Journal of the Indian Society of Remote Sensing,2024,52(2):305-313.
[7]Jensen B ,Wang T .The Elusive Hypertrophy of the Python Heart.[J].Physiology (Bethesda, Md.),2024,39(2):0-0.
[8]Werff D V J ,Ravignani A ,Jadoul Y .thebeat: A Python package for working with rhythms and other temporal sequences.[J].Behavior research methods,2024,
[9]陈太沁.基于Python的视频数据爬虫系统设计与实现[J].广播电视网络,2024,31(01):110-112.DOI:10.16045/j.cnki.catvtec.2024.01.012.
[10]宋盼盼,周猛,肖莹.基于python语言的水体营养状态评价系统的设计[J].水利技术监督,2024,(01):45-49.
[11]孔杞越,李晶,鲁子洋,等.基于Scratch的Python编程系统设计研究[J].内江科技,2023,44(12):24-25.
[12]刘秀丽.基于Python语言的职工信息管理系统设计与实现[J].现代信息科技,2023,7(23):35-41.DOI:10.19850/j.cnki.2096-4706.2023.23.008.
[13]魏晓玲,刘红英.基于Python和Django框架的琴房管理系统设计与实现[J].无线互联科技,2023,20(22):51-53.
[14]姜一波,李方方.基于Python的智能停车场运营分析系统设计[J].无线互联科技,2023,20(21):10-12.
[15]杨冰倩.基于Python爬虫的影评情感分析与可视化系统设计[J].无线互联科技,2023,20(20):43-45+49.
[16]陈俊.基于Python的个性化在线学习系统的设计与实现[J].电脑知识与技术,2023,19(28):37-39.DOI:10.14004/j.cnki.ckt.2023.1502.
[17]王纪才,徐启南,袁霄翔.基于Python爬虫的电影数据可视化分析[J].周口师范学院学报,2023,40(05):60-65.DOI:10.13450/j.cnki.jzknu.2023.05.010.
[18]姚松言.基于Python编程的智慧图书馆信息管理系统[J].信息与电脑(理论版),2023,35(17):127-129.
[19]肖郑利.论高职院校智慧实训基地管理平台的数据分析报告[J].湖北农机化,2020,(06):188-189.
[20]郭哲毅.基于校企互动技工院校机械专业实训管理平台的探索构建[D].浙江工业大学,2019.DOI:10.27463/d.cnki.gzgyu.2019.000795.
致 谢
逝者如斯夫,不舍昼夜。转眼间,大学生活便已经接近尾声,人面对着离别与结束,总是充满着不舍与茫然,我亦如此,仍记得那年秋天,我迫不及待的提前一天到了学校,面对学校巍峨的大门,我心里充满了期待:这里,就是我新生活的起点吗?那天,阳光明媚,学校的欢迎仪式很热烈,我面对着一个个对着我微笑的同学,仿佛一缕缕阳光透过胸口照进了我心里,同时,在那天我认识可爱的室友,我们携手共同度过了这难忘的两年。如今,我望着这篇论文的致谢,不禁又要问自己:现在,我们就要说再见了吗?
感慨莫名,不知所言。遥想当初刚来学校的时候,心里总是想着工科学校会过于板正,会缺乏一些柔情,当时心里甚至有一点点排斥,但是随着我对学校的慢慢认识与了解,我才认识到了她的美丽,她的柔情,并且慢慢的喜欢上了这个校园,但是时间太快了,快到我还没有好好体会她的美丽便要离开了,但是她带给我的回忆,永远不会离开我,也许真正离开那天我的眼里会满含泪水,我不是因为难过,我只是想将她的样子映在我的泪水里,刻在我的心里。最后,感谢我的老师们,是你们教授了我们知识与做人的道理;感谢我的室友们,是你们陪伴了我如此之久;感谢每位关心与支持我的人。
少年,追风赶月莫停留,平荒尽处是春山。
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~