w279基于OpenCV和Python的人脸识别系统

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。

  1. 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹
  2. 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
  3. 赠送开题报告模板,帮助书写开题报告。

作者完整代码目录供你选择:

  1. 《Springboot网站项目》400套
  2. 《ssm网站项目》800套
  3. 《小程序项目》300套
  4. 《App项目》500套
  5. 《Python网站项目》600套

⬇️文章末尾可以获取联系方式,需要源码或者演示视频可以联系⬇️

⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡

项目展示

摘 要

本系统为用户而设计制作人脸识别系统,旨在实现人脸识别智能化、现代化管理。本人脸识别管理自动化系统的开发和研制的最终目的是将人脸识别运作模式从手工记录数据转变为网络信息查询管理,从而为现代管理人员的使用提供更多的便利和条件。使人脸识别系统数字化、智能化,是提高工作效率的重要举措。

为了更好地发挥本系统的技术优势,根据人脸识别系统的需求,本文尝试以B/S经典设计模式中的Django框架,python语言为基础,通过必要的编码处理、人脸识别系统整体框架、功能服务多样化和有效性的高级经验和技术实现方法,旨在完成一个快速、高效、便捷的人脸识别系统。本系统以用户与管理员两类人,作为目标用户,其中用户主要功能包含用户的注册与登录,查询公告信息等,对账号相关信息的修改;管理员主要功能包括了用户信息、公告信息、操作日志等;管理员可以实现最高权限级别的全系统管理,

关键词:人脸识别系统;Django框架;python语言;

第1章 绪论

1.1 研究背景

近年来,类似管理类的软件数量正逐渐快速增加,人工的记录和数据统计已经变得不完全能够轻松处理出如此巨量庞大复杂的电子数据1。为了能更好快速地实现适应现代化社会要求的高效性,一个利用计算机技术来轻松实现自动化人脸识别管理工作的系统也将随之诞生。基于以上这一点,设计完成了此人脸识别系统,进行规范化管理,方便管理员或用户可以在最短的时间范围内,高效、便捷且准确地去进行对公告信息、操作日志的浏览、查询或修改等一系列操作2

根据我对上述知识的深入了解,浏览国内外相关研究资料文件与数据,查阅大量相关研究文献、书籍以及各类技术资料,对人脸识别系统的用户、数据、需求、特点等多方面内容进行了分析与调研3。发现了目前市面上多部分行业还是采用传统的手工记录信息方法进行记录、管理有以下这样方面明显的缺点:信息量大,该相关信息的记录与存储无从下手,且产生大量交互信息,难以及时存档,大量的公告信息、操作日志对管理员来说是很大的管理负担4。根据以上诸多原因,人脸识别相关信息的现代化管理需要一个计算机软件来取代传统手工的操作流程来组织、管理这些信息5

电子计算机诞生后,世界因为信息时代的到来发生了翻天覆地的变化。计算机所构成的网络已将整个社会联系起来,整个社会的效率也因此逐步提高,因此当今社会正以前所未有的速度飞速发展着。计算机技术在中国当代企业管理中普遍地被应用,使计算机工具逐渐成为现代人们直接应用掌握现代信息处理技术管理的一项不可或缺的工具6。计算机系统能将其原始数据进行分析、加工、储存,工作人员能够在需要补充相关数据时,随时对数据信息进行检索,了解当前人脸识别系统信息的更新动态情况,从而能够有效准确的组织、处理,完成对人脸识别管理信息化的统一管理指导工作,实现公告信息、操作日志等信息管理流程的自动化,提高工作效率。

1.2 国内外研究现状

随着现代中国社会的不断向前发展,大数据以及信息化时代逐步到来,已经出现了更多的技术与手段来实现人脸识别管理工作的提升与发展,尤其是信息处理分析技术更是遍布高科技开发中7。用人脸识别管理为例,在系统中,公告信息、操作日志的流程决定了本行业的整体运作,目前人脸识别管理存在很多历史遗留问题,比如:对公告信息管理流程繁琐、工作人员操作不易、容易发生误操作或登入错误信息、工作效率较低等,从而形成人脸识别管理困难,且浪费时间的现状。另外,相关管理很不健全,管理人员也处于匮乏状态,又需要考虑到成本因素,开发一个相对硬件设施不是很高的系统从而管理人脸识别,是有必要的。综上所述,本文将利用python、B/S、Django框架等技开发一个具有功能齐全、便于操作、对电脑配置要求不高的人脸识别系统8

相较国内,国外的人脸识别系统已经出现并且使用了更长时间,起步远超于中国,其管理方式也逐渐向自动化、规范化演变9。国外的人脸识别系统飞速发展的阶段是在20世纪90年代后,在这一时期,来自微软的以图形界面显示的操作系统开始问世,科学技术的迅速发展,使得人脸识别系统的开发者意识到原来开发的系统已不再符合时代的发展,纷纷将最新技术应用到人脸识别系统的开发。例如在搜索操作日志时,运用先进的自动索引的成果,结合数据库技术,提高检索的效率性,成就了该系统如今呈现多样化发展的局势。

国外的人脸识别系统在功能方面几乎囊括了所有人脸识别所涉及的领域,可以说是比较健全的,虽然各系统采用的结构有所不同,但是几乎都是使用软件工程的原理,把数据集中存储到数据库中,然后采用分布式操作的方法来操作数据以及实现数据共享。在功能这个领域国外水平显然经过深思熟虑后进行设计10

软件开发是一段漫长的过程,期间需要进行不断地维护与改良,至今国外的人脸识别系统已几乎接近成熟。

1.3 课题意义

由于电脑的日益广泛与应用,其将逐步演变成为中国工业现代化水平的一重要标志。人脸识别管理在整个日常工作流程中总是会出现新的用户信息,公告信息以及基于信息交互而最终形成的操作日志等。因此,必须全部信息加以管理,实现智能化管理,从而更加快捷地解决用户的需求,并提升工作效率,现对其设置了相关管理办法,以实现上述管理目的11

第2章 系统相关技术

本系统采用了B/S设计思想,实现系统的功能,软件界面清晰友好美观,系统基本功能一目了然。系统的整体架构为Django应用框架,以python作为编程语言,用MySQL存储数据。

2.1 Django框架

Django由 Python写成,框架采用了MVT,模型和视图以及模板。将python中一些繁琐的步骤打包,更快速的调用,大大减少了开发时间。

2.2 Python语言

Python是解释型的脚本语言,在运行过程中,把程序转换为字节码和机器语言,说明性语言的程序在运行之前不必进行编译,而是一个专用的解释器,当被执行时,它都会被翻译,与之对应的还有编译性语言。

同时,这也是一种用于电脑编程的跨平台语言,这是一门将编译、交互和面向对象相结合的脚本语言(script language)。

可以说其优点也是非常的突出,下面就其优点进行具体的说明:

(1) 首先它是一种比较简单易学的,而且对初学者来说也是非常容易上手的一种语言,与其他的语言相比较在进行编写和阅读的时候,会更加接近人的思维模式,非常的适合用户的阅读性和易于理解的特点。

(2) 由于其底层的逻辑是用c语言完成的,所以在运行的速度来说也是非常快的,就如许多的开发者所了解的,它的很多的标准库以及第三方的依赖都是由c语言所开发的,所以执行起来比较高效率。

(3) 并且,它始终是一个面向对象的程序设计,它支持面向过程和面向对象的编写,在以流程为导向的语言里,一个程序是建立在一个过程或者一个简单的可重复使用的代码的功能上,在面向对象中,一个程序是以数据和函数为基础的对象构造的。

(4) 如果需要代码的扩充或者是快速查看,在使用它的时候格式也是非常的清晰,还有便于维护的特点,在不同的开发人员共同开发的过程中,都会比较方便的理解所编写的内容。

(5) 同时也是因为它开源的特点,能够被移植到很多的平台进行使用,并且它也是完全支持重载、派生、继承等有助于增强代码的复用的特点,同时有两个标准库(functools, itertools)提供了开发的支持。

2.3 B/S架构

Web程序设计技术是一项用于网页制造方面的专业技术,主要实现了网页的动态交互功能,通过此项技术语言(如python、CGI、ASP等)所设计的相关网页可以对用户所发出的及时操作以及需求进展相应的相应,从而到达实现即时动态交互的目的。

B/S构造(Browser/Server,浏览器/效劳器模式),其是一种分布式的计算机网络系统,用户通过浏览器向上一级的网站程序传递相关的参数和请求,然后效劳器上的程序再将这些请求和参数进展处理,最后将结果通过反响回用户浏览器反映出来。

2.4 MySQL数据库

MySQL 是一种关联数据库管理系统,该系统速度快而且灵活性强,主要原因是它将数据保存在不同的表中,MySQL软件的优点是成本低、体积小、速度快,开放源码,所以一般中小型网站的开发都选择 MySQL 作为网站数据库。

2.5 系统开发、运行环境

预期的物理环境如下:

1)控制系统在正常温度环境条件下运行。

2)控制系统在干净的场所内运行。

预期的生产技术环境条件如下:

1 网络传输速度为1M以上的网络。

2 电脑:CPU双核以上P42.0G及以上,内存二百五十六万M或以上,硬盘大小四十兆G或是以上,10M网卡/一百兆M千兆网卡,Windows2000/2003/NT/XP/Vista/Windows 7以上中文操作系统。

3 数据库人脸识别系统:Oracle9g或以上。

环境配置如表2.2:
表2.2 环境配置表

|----|-------------|-------------------------------------------|
| 序号 | 配置项 | 环境要求 |
| 1 | 系统开发工具 | PYCHARM |
| 2 | 数据库 | Mysql |
| 3 | 运行环境 | Jre tomcat |
| 4 | python主要开发包 | Lang util springframework servlet text io |

2.6人脸识别简介

人脸识别是什么?人脸识别特指利用分析比较人脸视觉特征信息进行身份鉴别的计算机技术。人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。

第3章 需求分析

需求的分析中用户需求就是比较的重要,而且可以通过各种的路径,以及各用户对于系统的功能需求,你需要对这些内容做出整理以及分类,然后分析这些需求的现实情况下的可能原因,还需要有认真的分析过程,结合现实的情况下最终做出一系列的需求资料。在有关用户的期望分析中能够明确一些可能实现的情况,人脸识别管理功能是许多个可以测试的功能相结合的,正是由于这些功能可以使得用户能够更加积极的提供出需求,让系统功能可以变得更加的完善。这样就可以保证所有设计的功能模块都是可以用到的,而且也是可测试的,对于后续系统的开发能够有比较关键的作用,也能快速完成用户所提供的需求12

3.1 非功能需求分析

3.1.1 可靠性与可用性要求

1 控制系统中的程序能够每日工作二十四小时,每年工作365天。

2 控制系统中的软件故障率不足百分之五。

3.1.2 容错性需求

用户在输入错误信息时,操作系统将提示错误,而不会崩溃。

3.1.3 易用性与易学性

易用性:软件主要适用于十二至七十周岁的,智商、视力、体力和肢体健康并具备有关专业知识的人应用。

易学性:在现在计算机普及的新科技发展阶段,人人都会使用互联网产品,计算机成为了一门必修课,所以我们这个程序的操作会显得特别简单通俗易懂,通过了解或培训的用户可以顺利使用本软件13

3.2 技术可行性

在研究技术可行性的时候,系统的开发环境是可以确定的,所以技术可行性最好与系统功能和性能以及一些实际的情况同时考虑。在可行性研究阶段,结合实际调整开发的内容和选择能够完成的技术体系是一个可用的手段,如果系统进入开发阶段,任何的调整都意味着会耗费更多的经历。需要再次明确的问题是,技术可行性不只是考虑在技术上是否可实现,实际上还包含了在当前的实际的情况下的技术可行性。有很多的因素例如时间不足、预期的开发目标技术难度比较难、不能有充足的技术积累、而且对于技术的掌握不够等这些实际存在的情况,都是要提前部署和认真规划的。

开发人脸识别系统的技术内容分析,目前的状况是从网络硬件和相关技术上看是可行的。该系统采用了python和 MySQL技术。到现在可以知道,很多的基础知识都是经过学习使用的,在后续的设计中还需要不断的练习,学习更多相关的技术经验来充实自己对于系统的开发。

3.3 经济可行性

此系统是由在校大学生开发的人脸识别系统。此系统在开发方式上对系统的需求,由于人脸识别系统是一种无商业利益的,所以系统设计开发的周期要短,在短时间内完成,减少开发成本,提高开发效率,方便、简单、实用是作为系统开发的指导思想。

本系统完全能够在人脸识别管理工作中发挥重要作用,而作为个人,能在软件开发能力方面得到锻炼和提高也是十分重要的,本系统在此不注重任何社会经济目标。

基于成本(效益)分析法,本系统所需要的软硬件资料均已掌握,该系统简洁易懂,本系统也具备了生产成本相对较少、效益最高的优点,在经济上可行。

3.4 操作可行性

本系统开发平台的总体开发理念,是以安全、便捷、使用为工作中心。开发成熟后采用的本机操作系统还应具备漂亮、大方、简洁,易于管理、运行、维护等许多优点,就算是完全不懂得电脑操作的人士,也一定能够熟练按照本操作系统的提示正确应用、维护、使用和管理好本系统。它所提供的简便易学的功能特性也能够使本系统真正在用户实际使用、管理中方便可行14

3.5系统用例图

一个用例图就能对应出系统中的一个功能过程,系统中完整的功能都是由许多不同的用例图所组成的。

系统用例图如图3-1、图3-2所示。

图3-1 管理员用例图

图3-2用户用例图

第4章 系统设计

4.1 总体功能设计

一般个人用户和管理员都需要登录才能进入人脸识别系统,使用者登录时会在后台判断使用的权限类型,包括一般使用者和管理者,一般使用者只能对公告信息提供查阅和个别使用信息内容的查看,而管理者则能对多个信息内容提供使用。

整体系统的主要功能模块如图4-1:

图4-1 人脸识别系统功能图

4.2 系统登录模块设计

用户在启动操作系统时会调用的一个模块。该模型通过用户输入的账号、密码来确定应用的类别,切换到该类应用的页面。

本模块的功能点包括:

1 确定账号与密码是否一致。

2 完全按照系统所规定使用权限的权限类型,直接通过登陆进入到系统权限的制定管理页面中即可进行授权使用。

登录模块流程图如图4-2:

图4-2 登录模块流程图

4.3 数据库设计

管理静止网站时是由WEB客户端向Web传送静态页面,而Web客户端直接对所传送的静态页面进行管理。

实现动态网页数据库信息查询请求的最基本处理流程概括为:当一个WEB用户成功向动态网页服务器数据库发送信息请求成功后,对其动态页面库的一种主要的处理实现方法之一是,屏蔽掉其中所有动态HTML代码,只须使用一个动态的动态网页文件,由动态Web浏览器程序直接地在该数据库服务器上进行传递动态信息,然后再通过该数据库服务器的处理程序返回到信息集,由该Web应用服务器处理程序再一次将包含动态程序代码在内的动态页面,转化为一个静态页面信息并自动返回到网页浏览器。也就是网站在这个动态页里对网页信息自动进行检索并最终把这些信息自动返回传递到网站用户处的这个全自动化过程。

数据库查询示意图如图4-3:

图4-3 数据库查询示意图

数据库设计阶段目标表见表4-4:

|------|-------------------------------------|
| 阶段 | 目标 |
| 概念设计 | 了解功能需求,通过分析系统功能定义出系统有哪些实体联系图(即E-R图) |
| 逻辑设计 | 把E-R图转换成能处理的逻辑模型,检查是否满足第三范式的要求 |
| 物理设计 | 基于基本数据模型,生成适用于应用系统的物理结构 |

表4-4 数据库设计阶段目标表

4.3.1 E-R图设计

根据以上分析,本系统中包含多个实体,根据他们以及他们的关系绘制出E-R图如下:

(1) 管理员信息E-R图如下图4-5:

图4-5管理员信息E-R图

(2) 公告信息E-R图如下图4-6:

图4-6公告信息E-R图

(3) 用户信息E-R图如下图4-7:

图4-7用户信息E-R图

(4) 操作日志E-R图如下图4-8:

图4-8操作日志E-R图

4.3.2 数据库关系表设计

数据库关系表如下:

表4-1:菜单

|----------|-----------|------------|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| menujson | longtext | 4294967295 | 菜单 | | |

表4-2:公告信息

|----------|-----------|------------|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| biaoti | varchar | 200 | 标题 | | |
| fengmian | longtext | 4294967295 | 封面 | | |
| jianjie | longtext | 4294967295 | 简介 | | |
| neirong | longtext | 4294967295 | 内容 | | |
| faburiqi | date | | 发布日期 | | |

表4-3:配置文件

|-------|---------|-----|--------|----|-----|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| name | varchar | 100 | 配置参数名称 | | |
| value | varchar | 100 | 配置参数值 | | |

表4-4:用户

|----------------|-----------|------------|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| yonghuzhanghao | varchar | 200 | 用户账号 | | |
| mima | varchar | 200 | 密码 | | |
| yonghuxingming | varchar | 200 | 用户姓名 | | |
| touxiang | longtext | 4294967295 | 头像 | | |
| lianxidianhua | varchar | 200 | 联系电话 | | |
| xingbie | varchar | 200 | 性别 | | |

表4-5:管理员

|----------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| username | varchar | 200 | 用户名 | | |
| password | varchar | 200 | 密码 | | |
| role | varchar | 200 | 角色 | | |

表4-6:操作日志

|-----------|-----------|------------|----------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| username | varchar | 200 | 用户名 | | |
| operation | varchar | 200 | 用户操作 | | |
| method | varchar | 200 | 请求方法 | | |
| params | longtext | 4294967295 | 请求参数 | | |
| time | bigint | | 请求时长(毫秒) | | |
| ip | varchar | 200 | ip地址 | | |

第5章 系统实现

5.1 管理员功能模块实现

本模块主要是使用者可以通过人脸识别系统的首页进入该系统。用户输入正确的账号名和密码,一旦输入信息有错,将在系统显示错误提示,同时严禁系统用户做出其他动作。如果注册信息正确无误,系统就会按照使用者的身份信息做出有关权利的判定,用户进入系统,管理者则进入系统。管理员登录主页面如图5-1所示:

图5-1管理员登录主页面

管理员进入系统主页面,主要功能包括对首页、用户管理、公告信息管理、操作日志管理等进行操作。管理员主页面如图5-2所示:

图5-2管理员主界面

管理员点击用户管理,在用户管理页面对用户账号、用户姓名、头像、联系电话、性别等信息,可以搜索,新增或删除用户信息等操作。如图5-3所示:

图5-3用户管理界面

管理员点击公告信息管理,在公告信息管理页面对标题、封面、发布日期等信息,可以搜索、新增或删除公告信息等操作。如图5-4所示:

图5-4公告信息管理界面

管理员点击操作日志管理,在操作日志管理页面对用户名、用户操作、请求方法、请求时长(毫秒)、ip地址等信息,可以搜索、新增或者删除操作日志等操作。如图5-5所示:

图5-5操作日志管理界面

5.2 用户功能模块实现

用户登录界面,首先双击打开系统,连上网络之后会显示出本系统的登录界面,这是进入系统的第初始页面"登录",能成功进入到该登录界面则代表系统的开启是成功的,接下来就可以操作本系统所带有的其他所有的功能,如图5-6所示。

图5-6用户登录界面

用户登录到系统后,用户可以对首页、公告信息管理进行相应操作,如图5-7所示:

图5-7用户功能界面

用户点击公告信息管理,在公告信息管理页面对标题、封面、发布日期等信息,可以搜索公告信息等操作。如图5-8所示:

图5-8公告信息管理界面

第6章 系统测试

6.1 测试方法与步骤

本系统首先在本地服务器上进行了安装和测试,之后鉴于对系统的结构和处理方法的充分熟悉和对系统特性的充分了解,对系统进行了白盒测试和黑盒试验15

在发展软件系统的整个过程中,人们必须面临错综复杂性的实际问题,所以,在软件系统生存周期的各个过程中都必然地会形成错误。应用软件检测目的在于:出现出错并运行某个程序的步骤,而应用软件检测的最重要目的便是找到其中尚未发生的出错。

为了制定出合理的测试计划,根据以下原则开始了测量;任何测试都要追溯到客户需要;当确定了客户使用模型后就要着手制定测试计划,并在编码以前就对整个软件测试工作做出规划和制定;御用Pareto原理,主要对占出了百分之八十九以上的最易于出错的约百分之二十的模板实施了检测,并从小规模开始逐步实施大量检测,范围一般从主要检测单编程模板再到完全集成的模板;同时精心设计了检测方法,尽可能地全面覆盖所有程序逻辑并使其满足要求的能力16

测试环境,软件和硬件的配置清单见下表。

测试环境表6-1:

表6-1 测试环境表

|------|-----|---------------------------------------------------------------|-----------------------------------------|
| 设备名称 | 硬件配置 || 应用程序 |
| 服务器端 | 处理器 | 1.6GHz 双核 Intel Core i5 (Turbo Boost 最高可达 3.6GHz),配备 4MB 三级缓存 | jdk1.8, tomcat9.0.12, Mysql8.0 maven3.5 |
| 服务器端 | 内存 | 8 GB | jdk1.8, tomcat9.0.12, Mysql8.0 maven3.5 |
| 服务器端 | 主硬盘 | 128GB PCIe 固态硬盘 | jdk1.8, tomcat9.0.12, Mysql8.0 maven3.5 |
| 服务器端 | 网卡 | 802.11a/b/g/n | jdk1.8, tomcat9.0.12, Mysql8.0 maven3.5 |
| 客户端 | 处理器 | 1.6GHz 双核 Intel Core i5 (Turbo Boost 最高可达 3.6GHz),配备 4MB 三级缓存 | macOS |
| 客户端 | 内存 | 8 GB | macOS |
| 客户端 | 主硬盘 | 128GB PCIe 固态硬盘 | macOS |
| 客户端 | 显卡 | Intel UHD Graphics 617 | macOS |
| 客户端 | 网卡 | 802.11a/b/g/n | macOS |

6.2 模块测试

6.2.1 登录模块测试

进入本系统时,根据不同登录方式区分用户以及管理员的登录。二者登录均需填写用户名和密码。当填写了错误的用户名或密码时,将提示"用户名或密码错误",按确认按钮返回注册窗口。登录界面简介且高效,输入错误后返回注册窗口也不会卡顿。

6.3 测试用例

本人脸识别系统在采用单元测试的方法,对系统各模块进行测试,检测流程必须严格遵循检测的标准流程,进行单位检测,子系统检测和控制系统检测。经过单位检测,就检查出了控制系统中各个模块内在的错误;经过子系统检测,发现了模板之间相互协作与沟通上的出错;经过集成测试,发现了流程中出现的错误。通过修正,确定了人脸识别系统能够实现需求分解中确定的技术要求。根据单元测试对系统进行集成测试,判断各功能组合完成后是否存在逻辑和功能上的错误,保证系统集成后不会出现bug。最后,对系统进行系统测试,确保整个系统的完整性和功能的流通性。

通过管理员和用户两个角色对系统进行完整的系统测试,并对相应的测试进行了详细的测试用例制作,同时记录了详细测试过程,形成了相关的系统测试文档。

具体测试用例如下:

表6-2 注册测试用例表

|------|------|--------------|----------|------|
| 测试对象 | 测试案例 | 操作说明 | 实际结果 | 是否通过 |
| 注册 | 用户 | 未注册用户登录提示请注册 | 得到相应信息提示 | 是 |

表6-3 后台管理员测试用例表

|-----------|------------|---------------------------------|----------------|------|
| 测试对象 | 测试案例 | 操作说明 | 实际结果 | 是否通过 |
| 后台管理员管理权限 | 添加管理员 | 点击后台管理员/管理员列表/添加管理员按钮 | 显示添加管理员弹框 | 是 |
| 后台管理员管理权限 | 添加管理员 | 点击后台管理员/管理员列表/取消管理员按钮 | 关闭弹框 | 是 |
| 后台管理员管理权限 | 搜索管理员 | 在输入框中输入要找的管理员(用户名/手机号/邮箱)点击搜索按钮 | 显示搜索到的管理员结果 | 是 |
| 后台管理员管理权限 | 编辑管理员权限/信息 | 点击要编辑的管理员 | 显示要编辑管理员的弹框 | 是 |
| 后台管理员管理权限 | 删除管理员 | 点击删除管理员 | 显示删除管理员弹窗/确认删除 | 是 |

结  论

本系统相对于我查阅到的其他人脸识别系统具有如下优点:其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好。

本系统在技术层面具有如下优点:第一,用python实现动态页面,使软件系统具备了很好的可维护性和可复用性。其次,在本系统的编写流程中使用的是Django框架,该框架将更有效的把显示功能与逻辑分开,使得模块更易于管理,尤其适用于大型项目的编写。第三,后台使用的MySQL数据库系统,MySQL的数据库系统引擎主要集中在了对XML标准的支持,同时具备可扩充、容易应用和安全性高的优点。

综上所述,通过这次从零开始的毕业设计是一次全新的开始,也期待圆满结束。我也希望这次的设计能通过我后期的自主学习把它趋向于完美,成为我的自主创作经验。

参考文献

1 王珊、萨师煊.数据库系统概论(第5版)M,高等教育出版社,2014.

2 郑阿奇.MySQL实用教程(第2版)M,电子工业出版社,2014.

3 安道.DjangoWeb开发 基于Python的web应用开发实战M,人民邮电出版社,2014.

4 成彦衡.Python数据库操作库研究J,电脑编程技巧与维护,2015.

5 叶锋.Python最新Web编程框架Django研究J.电脑编程技巧与维护,2015.

6 袁国忠.python编程从入门到实践M,人民邮电出版社,2016.

7 黄传禄.基于Python的MYSQL数据库访问技术J,现代信息科技,2017.

8 李健宏.左家春.Web程序设计基础M,北京大学出版社,2018.

9 董付国.Python程序设计基础与应用M,机械工业出版社,2018.

10 胡阳.Django企业开发实战高效Python Web框架指南M,人民邮电出版社,2019.

11 李超.徐云龙等一种基于Python Django的Web服务器端设计J,信息与电脑(理论版),2019.

12 蔡敏.Python语言的Web开发应用分析J,无线互联科技,2019.

致 谢

时光荏苒,岁月如梭,相逢一见太匆匆,校内繁花几度红。六月盛夏,随着这篇致谢词的开始,也就意味着我大学四年时光也即将落下帷幕,始于XXXX年初秋,终于XXXX年盛夏,xx岁的我也将开启全新的人生篇章。以前总觉得时间尚早,年龄尚轻,殊不知,人生是一道减法,逝去的便不会再回来。行文至此,也感谢一路以来支持我,陪伴我的老师、家人还有朋友。

"桃李不言,下自成蹊"。首先感谢我的论文指导老师xxx,感谢您的悉心指导和耐心帮助,才得以让我的毕业论文顺利完成。感谢大学四年以来所有的授课老师,谆谆教导、细心耐心,授予我丰富的专业知识,让我在此后的工作方向上有了更加明确的认识以及理论基础。

"慈母爱子,非为报也"。感谢我的母亲,这多年以来的养育之恩,给我提供了优渥的环境让我的学习生活没有后顾之忧。感谢妈妈多年以来的言传身教,教会了我如何做人如何做事,也让我在爱里快乐的长大。在这成长的路上,一直陪伴我、尊重我,支持我做的每一个决定,让我有更多的底气和勇气去面对这一路以来遇到的所有问题。在此也将我美好的祝愿送给我最爱的母亲,平安喜乐,健康长寿,更希望自己可以不断努力奋进,不负所望,成为你的骄傲。

"过眼年华,动人幽意,相逢几番春换"。感谢我的好朋友xxx陪伴了我的整个青春时光,相识xx年,我们早已从朋友变成了家人般的存在,成为彼此重要的依托,在成长的这一路上相互扶持、相互陪伴,互相倾诉心中苦恼。平生感知己,方寸岂悠悠,愿未来的人生旅途中,我们可以继续相互扶持,依旧保持热爱,奔赴热爱。

"山水一程,三生有幸"。感谢大学里在用户会遇见的每一个同学,共同在计算机学院里参与很多活动,一起学习成长。也感谢大学里遇到的同学们,以及我的室友,四年来共同成长,也在此祝愿大家,前途似锦,我们都将拥有光明的未来。

"以梦为马,不负韶华"。最后,感谢自己这一路以来的坚持和努力,还有不曾放弃的每个小节点,我始终相信学无止境,希望自己不忘初心,努力朝着自己的目标不断努力。凡是过往,皆为序章,凡事未来,皆有可期。

核心代码展示

java 复制代码
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

项目推荐

【计算机毕业设计】各项技术选题汇总

【计算机毕业设计】基于Springboot的网上购物商城销售系统

【计算机毕业设计】开题报告模板2

【计算机毕业设计】任务书案例2

【网站项目】基于springboot的在线考试系统

【网站项目】基于springboot的4S店车辆管理系统

【软件设计】基于python的高校资产管理系统

【网站项目】python009基于推荐算法的电影推荐系统

【网站项目】基于Springcloud的分布式架构网上商城

⬇️文章末尾可以获取联系方式,需要源码,高清图片,演示视频可以联系(不开源)⬇️

⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡