摘要
随着人工智能和大数据技术的快速发展,人脸识别技术在各个领域得到了广泛应用。本文基于Django框架,设计并实现了一个人脸识别课堂考勤系统。该系统利用人脸识别算法和摄像头设备,实现了自动化的学生考勤功能,并提供了学生请假管理界面和学生查询界面。
该管理系统采取B/S结构,并采取web网页交互的方法,利用MySQL来作为信息管理系统,利用pycharm来作为软件的程序设计语句。它的两大部分分别是:管理员和用户。管理者可以控制该管理系统的首页、系统用户(管理员、学生用户)通知公告、学生请假、学生考勤和其他相关内容。而用户则可以控制该管理系统的考勤、请假等相关内容。
经过严格的测试,我们发现这个系统的编写流畅,可靠性高,而且可以满足各种复杂的需求,使得管理者可以轻松地访问各种功能,而使得使用者可以获得更优质的服务。
关键词:人脸识别课堂考勤系统;MySQL;Django;
Abstract
With the rapid development of artificial intelligence and big data technology, facial recognition technology has been widely applied in various fields. This article designs and implements a face recognition classroom attendance system based on the Django framework. The system utilizes facial recognition algorithms and camera devices to achieve automated student attendance functions, and provides a student leave management interface and a student query interface.
The management system adopts a B/S structure and adopts the method of web page interaction. MySQL is used as the information management system, and pychar is used as the programming statement of the software. Its two main parts are: administrators and users. Managers can control the homepage of the management system, system users (administrators, student users) notification announcements, student leave requests, student attendance, and other related content. Users can control the attendance, leave, and other related content of the management system.
After rigorous testing, we found that the system is written smoothly, has high reliability, and can meet various complex needs, allowing managers to easily access various functions, and allowing users to receive better service.
Keywords: Face recognition classroom attendance system; MySQL; Django;
目 录
1绪论
随着教育领域的不断发展和技术的快速进步,传统的课堂考勤方式已经无法满足教学管理的需求。手动签到或点名存在效率低、易造假等问题,因此需要一种更高效准确的考勤系统来提升教育教学管理水平。人脸识别技术作为一种先进的生物特征识别技术,具有快速、准确、非侵入性等优势,在课堂考勤中得到了广泛应用。基于Django框架的人脸识别课堂考勤系统的研究背景主要源于对传统考勤方式的局限性和人脸识别技术的发展。通过利用人脸识别算法和摄像头设备,该系统可以实现自动化的学生考勤功能,并提供教师管理界面和学生查询界面。这将大大提高课堂考勤的效率和准确性,为教育教学管理带来新的机遇和挑战。因此,研究基于Django框架的人脸识别课堂考勤系统具有重要的意义和价值。
1.2 研究现状
人脸识别技术是一种基于人脸图像或视频进行身份验证和识别的技术。近年来,随着人工智能和计算机视觉的快速发展,人脸识别技术在各个领域得到了广泛应用,其中之一就是教育领域中的课堂考勤系统。
人脸识别课堂考勤系统是利用人脸识别技术来实现学生考勤的自动化管理。该系统通过摄像头捕捉学生的面部图像,并将其与事先录入的学生信息进行比对,从而实现对学生出勤情况的准确记录和统计。相比传统的手工考勤方式,人脸识别课堂考勤系统具有高效、准确、便捷等优势。
目前,人脸识别课堂考勤系统的研究已经取得了一定的进展。研究者们提出了许多不同的人脸检测与识别算法,如基于特征点的方法、基于深度学习的方法等。这些算法能够有效地检测和识别学生的面部特征,为后续的考勤记录提供了基础。
为了训练和评估人脸识别模型,研究者们构建了大规模的人脸图像数据集,并进行了详细的标注工作。这些数据集包含了不同角度、光照条件和表情的人脸图像,能够更好地模拟实际考勤场景。
研究者们还设计并实现了一系列人脸识别课堂考勤系统原型。这些系统结合了人脸识别算法、摄像头设备和数据库管理等技术,能够实现对学生考勤情况的实时监测和记录。
尽管人脸识别课堂考勤系统在教育领域中有着广泛的应用前景,但仍然存在一些挑战。例如,光照条件变化、多人同时识别等问题需要进一步的研究和改进。
综上所述,人脸识别课堂考勤系统是一项有潜力的教育技术,其研究已经取得了一定的进展。随着技术的不断发展,相信人脸识别课堂考勤系统将在教育领域中得到更广泛的应用和推广。
1.3 系统开发目标
我们不仅要确保所有的功能都能够满足用户的需求,还要让用户可以通过系统自由地完成任务,而管理者也可以通过系统轻松获取用户的信息,并进行相应的管理。为了实现这一目标,我们提出了如下目标:
自动化考勤记录:系统能够通过摄像头捕捉学生的面部图像,并将其与事先录入的学生信息进行比对,实现对学生出勤情况的自动记录。这样可以避免传统手工考勤方式中可能存在的漏记、错误等问题。
数据统计与分析:系统能够对学生的考勤数据进行统计和分析,生成相应的报表和统计结果。这样可以为学校和教育管理部门提供参考,帮助他们更好地了解学生的出勤情况和学习态度。
安全性与隐私保护:系统需要确保学生的个人隐私得到有效保护,不会被滥用或泄露。同时,系统还需具备一定的安全性,防止非法访问或篡改考勤数据。
用户友好性与易用性:系统应具备良好的用户界面和操作体验,方便教师和管理人员使用。同时,系统还应具备一定的灵活性和可扩展性,以适应不同学校和教育机构的需求。
2.技术与原理
2.1 开发技术
我们的系统的前端框架是基于Vue.js的逐步演化技术。我们还利用Vue-Router、Vuex来控制动态路由,并且支持Ajax来支持前后台的交互。此外,我们还拥有一个Element UI的组件库,可以让我们的系统更加高效。在后台,我们使用Django来构建一个开源的系统,并将MyBatis和Redis这些先进的数据库进行整合。
2.2 Python语言
早在上个世纪90年代,Python就由吉多·范罗苏姆进行创造,自诞生之日起,Python就一直深深的受到了程序开发者的广泛喜爱,它作为计算机主要的编程语言,一直到今。Python语言是真的是一种纯面向对象的计算机语言,在Python的世界中,所有的方法、数据类型、符号等都是以类的方式存在的,最顶层的就是Object,所有的类都是对object的继承。继承是Python中的核心思想,与C语言不同的是,子类只有一个父类,这样的好处就是操作更加的简便,让人更容易理解,在代码的书写上也会容易较多。Python另外一个特性就是多态性,调用父类接口的方法可以实现子类的实现,这样的好处就是很好的对实现方法进行了隐藏(封装),而且又能够把API进行公开,一举两得。接口思想很好的诠释了想象对象的思想,让面向对象编程渐渐转向面向接口编程。如今,随着编程思想的继续发展,Python也加入了一些函数式编程的思想,这样的好处就是让编程代码更加的简洁与方便。本管理系统采用Python编程语言进行后台的开发,一是鉴于标准化制定以后,Python语言常用于大型商业应用程序后台系统中,生态稳定;二是也希望通过本系统的开发提高自己编写Python代码的能力。
2.3 MySQL数据库
MySQL数据库已经成为网络上的一种强大的工具,它能够支持多个用户,并且能够根据客户端和服务端的需求进行调整,从而满足不同的需求。在这里,服务端和客户端只是一种软件上的概念,而我们所使用的计算机硬件则没有必要完全相互匹配。
MySQL作为一个受到广泛认可的开放式DBMS,其卓越的性能和易于操作的特性,以及其在多种操作环境中的灵活性,让其成为了众多AP中的首选。此外,MySQL还具有良好的跨平台性,让软件开发人员对其有着极高的评价。与传统的关联式数据库系统形式大相径庭,MySQL拥有一套完善的数据库管理策略,以确保用户的安全、稳健、安全。MySQL具备良好的容错、安全、快速、稳健的特点,使得mysql成为一款极其实用的数据库管理工具。
MySQL拥有一种独特的权限分配机制,可以根据用户的身份和业务逻辑,为用户提供更多的选择,从而大大提高了MySQL的安全性和完整性,远超过其他关系型数据库。
MySQL具有强大的功能,能够处理各种数据类型,包括动态、静态、多种语言,从而使用户能够轻松访问多种数据。
MySQL具有多种功能,它能够支持多种平台的开发,并且支持多种编程语言,使得用户能够轻松访问和使用MySQL数据库。
2.4 B/S结构
B/S架构是目前应用最广泛的架构模式,它不仅能够让系统的开发变得更加简单易操作,而且还能够方便地进行维护。使用这种架构,只需要在电脑上安装一个数据库,并配置一些常见的浏览器即可。通过B/S架构,浏览器和数据库之间可以实现各种功能,而且这种架构的使用方式大大降低了维护成本。此外,由于所有的数据库之间都是完全独立的,因此这种架构具有极高的安全性。B/S架构的优势在于,它可以实时监控系统处理的业务,从而帮助管理者快速做出决策,从而减少学校的损失。此外,它的核心特性是采用集中式管理,用户可以将生成的数据存储到系统的数据库中,以便日后查阅和使用,从而满足不同的需求。
图2-1 B/S模式三层结构图
3.可行性分析
在软件开发的过程中,可行性分析是至关重要的,它旨在评估问题的可行性,以便尽可能快地解决,同时也要考虑到不同的解决方案的优势和劣势,以及实施这些方案所带来的经济效益。通过对人脸识别课堂考勤系统的可行性分析,我们可以从技术、操作和经济三个方面来评估其可行性,从而为其提供有效的支持和保障。
3.1技术可行性
所谓技术可行性,是指能否在有限的时间内实现预定的功能。在开发和设计中是否有未解决的问题。完成的项目能否很好地应用,如果有任何不足之处,后期的维护是否会有较大的困难。经过对该系统的评估,确定现有的技术可以达到目标。通过使用Python技术来创建动态的页面,采取低耦合的架构,搭载灵活的数据库,以及强劲的服务器,我们能够显著地改善系统的性能。这表明,我们不仅要追求理论上的目标,还要在实践中不断探索。
3.2经济可行性
人脸识别课堂考勤系统采用Python和MySQL技术,这样可以有效地降低软硬件的开发与维护费用,同时又能够让用户更加轻松地访问课堂考勤信息,从而提高服务质量。此外,该系统的推出,可以有效地降低运营者的劳动强度,为学校带来更多的经济效益。虽然人脸识别课堂考勤系统的构建并非特别困难,但由于它的投入相比较少,而且能够带来更高的效率,因此,我们认为这个系统的建立具有很强的可持续性,而且能够带来更高的经济效益,而且比起日常的维护与管理更具有价值。
3.3操作可行性
人脸识别课堂考勤系统的前台页面简洁易懂,无论是系统管理员还是普通用户,只要电脑连接到网络,就可以轻松访问系统,而且不需要任何操作指导,只要输入正确的URL地址,就可以轻松完成所有的操作。由于无需任何复杂的环境配置,这个系统非常简单,易于操作,因此它是一个非常实用的工具。
3.4系统需求分析
3.4.1功能需求分析
人脸识别课堂考勤系统的设计与实现是为了让用户的使用者更加方便的查询到自己的考勤信息,使用者查找某一信息的时候能节省大量的时间和精力,有效减少不必要的查找时间。
人脸识别课堂考勤系统的设计与实现,是为了能够拥有界面简洁友好、操作简单以及运行稳定的智能化的一站式课堂考勤管理方式。系统的需求主要来自学校的管理人员与学生两大部分。
人脸识别课堂考勤系统选择Eclipse开发工具的Python开发语言中Django+mysql数据库来存储数据,实现了首页、系统用户(管理员、学生用户)通知公告、学生请假、学生考勤这几大功能。
用户功能模块:
(1)用户注册登录:要实现考勤、请假等,就必须有这个系统的账号,如果没有账号的话,可以注册成会员用户进行相关的操作,同时用户还可以对个人信息以及操作的信息进行管控。
(2)查看人脸识别课堂考勤系统的首页信息:人脸识别课堂考勤系统的首页信息包含首页、通知公告、学生请假、学生考勤。
(3)通知公告:用户点击“通知公告”菜单显示所有的通知公告,可以按照条件进行通知公告的筛选或者输入关键词进行局部搜索,点击可以进入通知公告详细展示界面,可根据需要进行附件下载。
(4)学生请假:用户点击“学生请假”菜单可以输入学生、学生姓名、请假时间、学号、班级名称、请假原因提交请假申请,或者输入关键词进行查询,点击可以进入学生请假详细展示界面,在此界面用户可以查看学生请假审核信息。
(5)学生考勤:点击“学生考勤”这个按钮就会显示出所有的学生考勤的信息,包含学生、学生姓名、考勤类型、学号、班级名称、考勤状态等;同时也支持对课堂考勤信息进行关键词搜索。
(6)个人中心:用户点击“个人中心”可以对个人资料以及密码进行更新。
管理员功能模块:
(1)登录:管理员的账号是在数据库中直接设计好的,管理员进入系统的登录界面可以直接输入账号+密码,点击“登录”进行登录,如果忘记密码的话,可以点击登录按钮下面的忘记密码,根据提示进行找回密码;
(2)管理员:管理员进入到人脸识别课堂考勤系统以后,点击“用户管理”下的“管理员”这个按钮就会显示出管理员的信息,如果想要填写新的管理员,点击右上角“添加”按钮,然后输入用户名、密码、昵称、手机号码等信息,点击“提交”按钮进行提交,其中用户名和密码是必须填写的,同时也支持对已有的管理员进行编辑、删除和查询;
(3)学生用户:点击“学生用户”这个按钮就会显示出所有的注册的学生用户的信息,如果想要填写新的学生用户,点击左上角“添加”按钮,然后输入用户编号、姓名、性别、邮箱等信息,点击“提交”按钮进行提交,同时也支持对已有的人学生用户进行编辑、删除和查询;
(4)通知公告:点击“通知公告”这个按钮就会显示出所有的通知公告的信息,如果想要填写新的通知公告信息,点击上方的“添加”按钮,然后输入标题、发布人、发布时间、相关附件、内容详情点击“提交”按钮进行提交,同时也支持对已有的通知公告信息进行编辑、删除和查询;
(5)学生请假:点击“学生请假”这个按钮就会显示出所有的学生请假的信息,如果想要查看某一条请假信息,点击右方的“详情”按钮,同时也支持对已有的学生请假信息进行审核、编辑、删除和查询;
(6)学生考勤:点击“学生考勤”这个按钮就会显示出所有的学生考勤信息,如果想要查看学生考勤,点击右方的“详情”按钮,然后可以查看学生、学生姓名、考勤类型、学号、班级名称、考勤状态等信息同时也支持对已有的购学生考勤信息进行编辑、删除和查询;
3.4.2非功能性需求分析
人脸识别课堂考勤系统的非功能性需求比如人脸识别课堂考勤系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:
表3.1 人脸识别课堂考勤系统非功能需求表
安全性 | 主要指人脸识别课堂考勤系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指人脸识别课堂考勤系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响人脸识别课堂考勤系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着人脸识别课堂考勤系统的页面展示内容进行操作,就可以了。 |
可维护性 | 人脸识别课堂考勤系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
3.5系统用例分析
通过3.4的分析得出了本人脸识别课堂考勤系统中管理人员角色用例图,如图3-1所示:
图3-1 管理员角色用例图
人脸识别课堂考勤系统中用户角色用例图如图3-2所示:
图3-2用户角色用例图
3.6系统流程分析
为了成功地访问该系统,帐号和密码都是唯一的,因此只有获得准确的验证,方可轻松访问。访问完成之后,还可以根据自己的喜好,在想看的内容的详细页面上,点击右上角的购入按钮,即可完成订阅。根据图3-3,详细的步骤可以在此处找到:
图3-3 用户操作流程图
为了确保系统的安全性,建议先登录系统,以便更好地管理信息。详情请参考图3-4,它提供了一个完整的登录流程:
图3-4 系统操作流程图
4.架构设计
在上一章节中分析了人脸识别课堂考勤系统的功能性需求,并且根据需求分析了人脸识别课堂考勤系统中的用例以及系统的增删改查流程。那么接下来就要开始对人脸识别课堂考勤系统架构、主要功能和数据库开始进行设计。
4.1系统功能模块设计
系统的整体架构确定以后,再来看人脸识别课堂考勤系统的主要功能模块图。整体的功能模块包括首页、系统用户(管理员、学生用户)通知公告、学生请假、学生考勤这几大功能,图4.1就是人脸识别课堂考勤系统的功能模块图。
图4-1 系统结构图
4.2 数据库实体设计
数据库是一种重要的信息存储和管理工具,它可以将系统中的所有数据实时地存储起来,以便于用户的操作。此外,数据库中的数据也应当具有良好的共享性,允许多个系统共享,并且保持一定的独立性,以确保数据的安全性。为了确保数据的安全,必须对其进行身份验证,否则将无法访问和使用。在设计数据库时,必须清楚地界定各个实体之间的关系,并将其映射到E-R图中,以便更好地理解和管理,系统的E-R图如下图所示:
图4-2系统实体ER属性图
4.3数据库逻辑结构设计
通过前面E-R关系图一共需要创建很多个数据表。在此罗列这几个主要数据库表的关系模型如下:
表notice_announcement (通知公告)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_announcement_id | int | 10 | 0 | N | Y | 通知公告ID | |
2 | title | varchar | 64 | 0 | Y | N | 标题 | |
3 | publisher | varchar | 64 | 0 | Y | N | 发布人 | |
4 | published_on | date | 10 | 0 | Y | N | 发布时间 | |
5 | relevant_attachments | varchar | 255 | 0 | Y | N | 相关附件 | |
6 | content | text | 65535 | 0 | Y | N | 内容 | |
7 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | sensitive_vocabulary_id | int | 10 | 0 | N | Y | 敏感词汇ID | |
2 | sensitive_vocabulary | varchar | 64 | 0 | Y | N | 敏感词汇 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | student_attendance_id | int | 10 | 0 | N | Y | 学生考勤ID | |
2 | student | int | 10 | 0 | Y | N | 0 | 学生 |
3 | student_id | varchar | 64 | 0 | Y | N | 学号 | |
4 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
5 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
6 | attendance_type | varchar | 64 | 0 | Y | N | 考勤类型 | |
7 | attendance_status | varchar | 64 | 0 | Y | N | 考勤状态 | |
8 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | student_leave_id | int | 10 | 0 | N | Y | 学生请假ID | |
2 | student | int | 10 | 0 | Y | N | 0 | 学生 |
3 | student_id | varchar | 64 | 0 | Y | N | 学号 | |
4 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
5 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
6 | leave_time | varchar | 64 | 0 | Y | N | 请假时间 | |
7 | reason_for_taking_leave | text | 65535 | 0 | Y | N | 请假原因 | |
8 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
9 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
10 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | student_users_id | int | 10 | 0 | N | Y | 学生用户ID | |
2 | student_id | varchar | 64 | 0 | Y | N | 学号 | |
3 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
4 | gender | varchar | 64 | 0 | Y | N | 性别 | |
5 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
6 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
7 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
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 | 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 | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
5.系统实现
5.1用户功能模块
5.1.1用户注册模块
要实现考勤、请假等,就必须有这个系统的账号,如果没有账号的话,可以注册成会员用户进行相关的操作,同时用户还可以对个人信息以及操作的信息进行管控。其主界面展示如下图5.1所示。
图5-1 用户注册界面图
5.1.2用户功能模块
查看人脸识别课堂考勤系统的首页信息:人脸识别课堂考勤系统的首页信息包含首页、通知公告、学生请假、学生考勤。其主界面展示如下图5.2所示。
图5-2 用户首页界面图
5.1.3通知公告模块
用户用户点击“通知公告”菜单显示所有的通知公告,可以按照条件进行通知公告的筛选或者输入关键词进行局部搜索,点击可以进入通知公告详细展示界面,可根据需要进行附件下载。其主界面展示如下图5.3所示。
图5-3 通知公告界面图
5.1.4学生请假模块
用户点击“学生请假”菜单可以输入学生、学生姓名、请假时间、学号、班级名称、请假原因提交请假申请,或者输入关键词进行查询,点击可以进入学生请假详细展示界面,在此界面用户可以查看学生请假审核信息。其主界面展示如下图5.4所示。
图5-4 学生请假界面图
5.1.5学生考勤模块
点击“学生考勤”这个按钮就会显示出所有的学生考勤的信息,包含学生、学生姓名、考勤类型、学号、班级名称、考勤状态等;同时也支持对课堂考勤信息进行关键词搜索;其主界面展示如下图5.5所示。
图5-5 学生考勤界面图
5.2管理员功能模块
5.2.1管理员登录模块
管理员的账号是在数据库中直接设计好的,管理员进入系统的登录界面可以直接输入账号+密码,点击“登录”进行登录,如果忘记密码的话,可以点击登录按钮下面的忘记密码,根据提示进行找回密码;其主界面展示如下图5.6所示。
图5-6 管理员登录界面图
5.2.2用户管理模块
管理员进入到人脸识别课堂考勤系统以后,点击“用户管理”下的“管理员”这个按钮就会显示出管理员的信息,如果想要填写新的管理员,点击右上角“添加”按钮,然后输入用户名、密码、昵称、手机号码等信息,点击“提交”按钮进行提交,其中用户名和密码是必须填写的,同时也支持对已有的管理员进行编辑、删除和查询,其主界面展示如下图5.7所示。
图5-7 用户管理界面图
5.2.3通知公告模块
点击“通知公告”这个按钮就会显示出所有的通知公告的信息,如果想要填写新的通知公告信息,点击上方的“添加”按钮,然后输入标题、发布人、发布时间、相关附件、内容详情点击“提交”按钮进行提交,同时也支持对已有的通知公告信息进行编辑、删除和查询;其主界面展示如下图5.8所示。
图5-8 通知公告界面图
5.2.4学生请假模块
用户点击“学生请假”菜单可以输入学生、学生姓名、请假时间、学号、班级名称、请假原因提交请假申请,或者输入关键词进行查询,点击可以进入学生请假详细展示界面,在此界面用户可以查看学生请假审核信息。其主界面展示如下图5.9所示。
图5-9 学生请假界面图
5.2.5学生考勤模块
点击“学生考勤”这个按钮就会显示出所有的学生考勤信息,如果想要查看学生考勤,点击右方的“详情”按钮,然后可以查看学生、学生姓名、考勤类型、学号、班级名称、考勤状态等信息同时也支持对已有的购学生考勤信息进行编辑、删除和查询;其主界面展示如下图5.10所示。
图5-10 学生考勤界面图
6 系统的测试
6.1 测试目的
由于互联网的快速普及,许多领域已经开始依赖它来实现信息的传输和处理。因此,确保产品的准确性和高品质成为相当重要的。同时,它还会影响消费者的忠诚度。为了获得更高的忠诚度,我们需要严格控制软件的质量,确保它的可信度和安全性,避免任何可能的损失。因此,为了确保系统的安全、高效、易操作,必须对其进行全面的检验,以便ACK其符合各种应用场景的标准,从而达成最佳的效果。检验的过程对于整个系统的成功至关重要,因此必须认真对待。
集成测试是一种有效的测试方式,它可以帮助我们更快更准确地检测系统中可能存在的问题,并且可以避免人工测试带来的疲劳和结果出错。因此,采用集成测试是一种更加高效、更加可靠的测试方式,可以更好地满足用户的需求。
通过对软件的测试,我们能够及时发现问题,并采取有效措施来解决,从而确保设计的系统能够正常稳定地运行,避免出现重大的故障。为此,我们采取了三个步骤来完成测试:
(1)通过模块测试,我们可以深入了解系统的各个方面,从而发现并解决存在的问题。
(2)通过系统测试,我们可以观察系统在不同环境中的表现,并及时发现和解决运行过程中出现的稳定性问题。
(3)在所有测试结束之后,我们将进行最终的验收,以确保软件已经准备就绪。
6.2 测试方法
经过精心设计的两种测试手段,我们有效地检查了系统,以确定其是否正常工作,并及早发现潜在的缺陷,从而确保其顺利实施。在考虑软件的内部结构与实际执行之间的关联时,我们可以使用黑盒测试或白盒测试。
(1)通过使用黑盒测试,我们可以评估系统的性能,检查它在用户的任何操作中,是否可以快速、精确地收集和处理数据,从而实现预期的目标。为了达到这一目的,我们必须仔细检查各项功能和使用步骤,以便将其全部输出和输入。
(2)通过使用白盒测试,我们可以深入了解系统的结构,从而确保它能够在运行时保持良好的性能和稳定性。
人脸识别课堂考勤系统的测试也会从下面几方面进行:
(1)通过对窗口的精心设计,我们可以在用户输入用户名和密码时,及时弹出界面,以便提供反馈。为此,我们进行了严格的测试,以确保每一个窗口都能够及时响应用户的操作。
(2)通过数据跟踪,我们可以及时发现系统功能的异常情况,并及时调整数据库中的信息,以满足用户的需求。此外,通过跟踪,我们还可以更加清晰地找到系统存在的问题,从而有效地解决这些问题,并保持系统的正常运行。
(3)经过综合测试,我们可以从内部和外部发现系统中的问题,并及时采取措施解决。为了满足不同用户的需求,我们应该根据实际使用情况,采取有针对性的开发方案。
6.3 功能测试
经过精心设计,这款人脸识别课堂考勤系统已经完美地实现了最初的期望,其各项功能的运行效果出色,完全满足用户的使用要求,并且及时纠正了大量的错误信息。总的来说,这款软件已经通过了严格的测试。
表6-1: 用户登录测试表
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
登录模块 | 用户名:admin 密码:123 | 弹出错误提示,提示密码错误 | 弹出错误提示,提示密码错误 | 通过 |
登录模块 | 用户名:123 密码:admin | 弹出错误提示,提示用户名错误 | 弹出错误提示,提示用户名错误 | 通过 |
登录模块 | 用户名:admin 密码:admin | 管理员登录成功 | 管理员登录成功 | 通过 |
表6-2:修改密码测试表
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
修改密码模块 | 原密码:666 新密码:123 确认密码:123 | 弹出错误提示,提示原密码错误 | 弹出错误提示,提示原密码错误 | 通过 |
修改密码模块 | 原密码:admin 新密码:123 确认密码:333 | 弹出错误提示,提示确认密码不一致 | 弹出错误提示,提示确认密码不一致 | 通过 |
修改密码模块 | 原密码:admin 新密码:123 确认密码:123 | 密码修改成功 | 密码修改成功 | 通过 |
6.4 测试结论
在测试每个功能的过程中,都应该严格按照指定的测试计划一步一步地进行测试,不能急于求成,并且要将每个测试的结果都进行详尽的记录,最佳的选择是采用自动化的测试,这样可以更为精确并且快速地完成测试,并不能依赖于人工测试,因为这种自动化测试的方式可以避免出现一些问题,同时也可以避免疲劳和出现问题。在进行测试时,必须保持高度的专注,密切关注测试结果,并及时纠正任何异常情况;最终,测试完成后的文档应当妥善保存,以备日后使用。
经过测试可以发现,当初制定系统的初衷是明确的,只有将其细化,编程的流程就变得更加顺畅。只有拥有良好的结构,后期的编程工作才能够顺利完成,而且还可以大大减少耗费的时间与精力。
7.结 论
本次人脸识别课堂考勤系统的开发使我成长了不少,在此之前我对Python编程还是一知半解,许多编程思想和方法都还没掌握牢靠,比如Bootsatrp、Jquery、AJAX 、Spring、SpringMVC、mybeatis等许多Python Web开发技术,都是在本次人脸识别课堂考勤系统的开发中我逐渐掌握逐渐熟悉的技术。
本次人脸识别课堂考勤系统的开发中我还学会了例如良好的编程思想和完善的规划思想。在着手编程之前需要罗列出程序框架的大概,脑海中构建出程序的主题框架。做好这一步我们才能胸有成竹的经行开发项目。当设计框架了熟于心之后,需要思考本次编程所需的主要知识点和技术点,并充分学习。如此一来项目的开发才能循序渐进、如丝般顺滑,长久以往就能养成良好的开发习惯。一个程序好不好还要看出的bug多不多,如果在项目完成前做好bug的查验与预防可能发生的事故才能保证程序的稳定长久性运行。如果项目在完工后出现各种问题自己,那么在进入社会后,不仅会给公司团队带来麻烦和增加不必要的工作,还会导致客户流失,公司对自己的评价下降。
在本次项目中我也暴露了诸多问题。对于Python的编程知识有所欠缺,环境配置和算法上出现诸多问题,时常导致项目运行出错,或者目标的实现有问题。或者实现想法时算法未优化,使得代码冗长,程序运行不顺畅。
参考文献
[1]Machlis S. 6 generative AI Python projects to run now[J]. InfoWorld.com,2023.
[2]Oswald C. Python for Absolute Beginners[M].Mercury Learning and Information:2023-10-23.
[3]姜永成.基于Django的网络招聘数据可视化分析系统的设计与实现[J].科技资讯,2023,21(19):57-60.DOI:10.16661/j.cnki.1672-3791.2306-5042-4316.
[4]姚茵.Python语言框架下计算方法课程思政建设研究[J].电脑知识与技术,2023,19(27):167-170.DOI:10.14004/j.cnki.ckt.2023.1452.
[5]古志敏,吴明珠.基于Python网络爬虫设计与实现[J].电脑编程技巧与维护,2023(09):163-166.DOI:10.16184/j.cnki.comprg.2023.09.016.
[6]宋胜女.Python程序设计课程的教学实践[J].集成电路应用,2023,40(09):150-151.DOI:10.19339/j.issn.1674-2583.2023.09.064.
[7]赵帅,薛亚辉.大数据背景下基于Python的数据可视化[J].信息记录材料,2023,24(09):215-217.DOI:10.16009/j.cnki.cn13-1295/tq.2023.09.056.
[8]曹雪朋.基于Django的数据分析系统设计与实现[J].信息与电脑(理论版),2023,35(15):141-143.
[9]丁昕婧. 面向高中生计算思维培养的教学模式设计与效果分析[D].闽南师范大学,2023.
[10]任富军. 基于混合推荐算法的课堂考勤推荐系统设计与实现[D].阜阳师范大学,2023.DOI:10.27846/d.cnki.gfysf.2023.000232.
[11]周逸菲. 培养高中生计算思维的Python游戏化编程教学设计与实践[D].哈尔滨师范大学,2023.DOI:10.27064/d.cnki.ghasu.2023.000916.
[12]范桐菲.大陆课堂考勤管理制度的改良问题研究[J].剧影月报,2023(01):23-24.
[13]董智超. 基于用户评分的并行化推荐系统研究与设计[D].东北财经大学,2022.DOI:10.27006/d.cnki.gdbcu.2022.002044.
[14]吴建洪. 基于Django的Web自动化测试平台的研发与应用[D].西南大学,2022.DOI:10.27684/d.cnki.gxndx.2022.003235.
[15]牛向艳. 基于Django的一站式测试平台的设计与实现[D].北京交通大学,2021.DOI:10.26944/d.cnki.gbfju.2021.000998.
[16]范家兴. 基于Django的交通设施运维管理系统设计[D].河北科技大学,2020.DOI:10.27107/d.cnki.ghbku.2020.000535.
[17]肖泉彬,何敏.基于JSP的课堂考勤购票系统设计与开发[J].电脑知识与技术,2020,16(07):67-68+92.DOI:10.14004/j.cnki.ckt.2020.0763.
[18]李珍. 基于.NET技术的课堂考勤票网购系统的设计与实现[D].河南大学,2017.
[19]王竞移. 欧帝影院购票平台的分析与设计[D].吉林大学,2016.
[20]金伟. 课堂考勤院在线票务管理系统的设计与实现[D].吉林大学,2016.
致谢
至此论文结束,感谢您的阅读。在此我要感谢我的导师,虽然我在实习期间很忙,论文撰写总是停停改改,但是导师依然十分负责,时不时的询问我的任务进展情况,跟进我的论文进度。虽然我在实习期间很忙,以至于很晚才开始进行论文撰写和编写程序的工作,但是在指导老师的帮助下,我逐步完成了自己的论文和程序,从导师身上也学习到很多知识,和经验,这些知识和经验令我受益匪浅。也从导师身上看到了自己的不足,不论是在即使层面上还是在对待工作的态度上,倒数如同明镜一般照出了我的缺点我的不足。此外,我还要感谢在我实习期间在论文和程序上帮助过我的同学和社会人士,此前我对于Django框架方面的一些知识还不了解,是他们在我编写程序过程中给了我很多的启发和感想,也帮助了我对于程序的调试和检测。没有他们我是不能顺利完成本次毕业设计的。至此,我的毕业设计就花上了一个圆满的句号了。
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~