(最新原创毕设)Python公司访客管理系统/04.05(白嫖源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
摘 要
随着信息化时代的到来,企业对访客管理的需求日益增加,传统的访客管理方式已无法满足现代企业对于高效、安全和智能化管理的要求。因此,开发一套高效、便捷的公司访客管理系统显得尤为重要。本论文基于Django框架设计并实现了一套公司访客管理系统,该系统通过前后端分离架构,实现了访客预约、车位管理、访客信息管理等功能,并且支持管理员、员工和普通用户不同角色的管理需求。
系统采用Django作为后端框架,利用MySQL数据库存储和管理数据,前端使用HTML、CSS和JavaScript技术,结合Vue.js框架实现用户界面的动态交互。系统的管理员可以进行来访预约、访客信息、车位资源管理等操作;员工用户可以管理自己的预约信息及访客记录;普通用户则可以进行来访预约和车位查询。该系统通过高效的数据处理、精细的权限管理和友好的用户界面设计,提高了访客管理的效率,保障了数据安全,具有较好的可扩展性和维护性。研究表明,访客管理系统能够有效地简化企业日常管理流程,提升工作效率,并为企业提供了更安全、透明的访客管理解决方案。
关键词:访客管理系统,Django框架,前后端分离,MySQL,车位管理
Abstract
With the advent of the information age, the demand for visitor management in enterprises is increasing day by day. Traditional visitor management methods can no longer meet the requirements of modern enterprises for efficient, secure, and intelligent management. Therefore, developing an efficient and convenient company visitor management system is particularly important. This paper designs and implements a company visitor management system based on the Django framework. The system achieves functions such as visitor reservation, parking management, and visitor information management through a front-end and back-end separation architecture, and supports the management needs of administrators, employees, and ordinary users in different roles.
The system uses Django as the backend framework, utilizing MySQL database to store and manage data. The frontend uses HTML, CSS, and JavaScript technologies, combined with the Vue.js framework to achieve dynamic user interface interaction. The system administrator can perform operations such as visitor reservation, visitor information, and parking resource management; Employee users can manage their own appointment information and visitor records; Ordinary users can make appointments for visits and check parking spaces. The system improves the efficiency of visitor management, ensures data security, and has good scalability and maintainability through efficient data processing, refined permission management, and user-friendly interface design. Research has shown that visitor management systems can effectively simplify daily management processes, improve work efficiency, and provide more secure and transparent visitor management solutions for enterprises.
Key words: Visitor management system, Django framework, front-end and back-end separation, MySQL, Parking space management
目 录
第1章 绪论
1.1研究背景和意义
随着信息化和智能化技术的迅速发展,企业在日常运营中面临的管理任务日益复杂。访客管理作为企业管理体系的重要组成部分,直接关系到企业的运营效率、安全性和形象。传统的访客管理方法,如纸质登记、电话确认等,不仅效率低下,且容易出现信息错误或管理漏洞,难以适应快速发展的企业需求[1]。尤其是在现代化企业环境中,如何提升访客接待效率、加强信息的安全管理、优化资源分配等问题,成为企业迫切需要解决的挑战。
随着计算机技术和互联网的发展,信息化管理已经逐步成为企业提升管理水平的有效手段。公司访客管理系统,作为一种新型的信息管理工具,能够将企业访客管理从传统的人工操作转变为自动化、智能化的管理模式,不仅能够提升访客接待的效率,减少人工成本,还能通过系统化的数据存储和处理,确保访客信息的准确性和安全性[2]。系统通过前后端分离的架构,使得管理功能更加灵活易用,同时确保了数据处理的高效性和稳定性。
公司访客管理系统的研究与实现,不仅有助于企业提高访客管理的自动化水平,减少人为因素带来的误差,还能够为企业提供更高效的数据分析与决策支持。系统的实施,不仅提升了工作效率,也强化了企业信息安全的管理,为企业的长期发展和管理创新提供了有力支持[3]。同时,该系统可以根据企业需求进行灵活的扩展与升级,具备较强的可维护性与适应性,因此对于推动现代企业管理方式的变革具有重要意义。
1.2国内外研究现状
随着信息技术的发展,企业对于访客管理的需求越来越迫切,尤其是在提高管理效率和确保数据安全方面。国外在访客管理领域的研究起步较早,早期的研究主要集中在通过数据库技术对访客信息进行管理,并通过系统化的方法减少人工干预,提升工作效率。随着互联网的普及和云计算技术的进步,许多企业开始使用基于网络的访客管理系统,能够支持多终端访问和远程管理,提高了系统的灵活性和可扩展性。国外一些大型企业和科技公司早已在其管理中引入了智能访客管理系统,这些系统不仅能够实现来访预约和访客信息的管理,还可以与门禁系统、车位管理等硬件设备进行集成,形成一个更加完善的管理生态。
国内在访客管理系统的研究和应用方面起步较晚,但近年来随着信息化进程的加速,越来越多的企业开始重视访客管理系统的建设。早期的国内研究大多关注于如何通过简单的软件工具来实现访客信息的存储和管理,随着技术的发展,逐渐开始采用更为先进的技术手段,如云计算和移动互联网,提升访客管理的智能化水平[4]。在国内,很多大型企业和政府机构也开始引入先进的访客管理系统,这些系统通过集成各种功能模块,如预约管理、访客登记、数据分析等,极大地提高了管理的效率和信息的透明度[5]。同时,随着国内对信息安全要求的不断提升,访客管理系统的安全性也成为研究的重点,相关研究主要集中在如何设计合理的权限管理机制和数据保护方案。
总的来说,国内外在公司访客管理系统方面的研究逐渐趋于成熟,并且随着技术的发展,系统功能不断丰富和优化。无论是国内还是国外,访客管理系统的研究和应用都紧密围绕着提高工作效率、确保信息安全、优化资源配置等方面展开,未来随着技术的进步和市场需求的变化,访客管理系统将继续向着更加智能化、自动化的方向发展。
1.3本文的组织结构
第一章是绪论,本文章的开头部分,对本题目的研究背景和研究意义等一些做文字性的描述。
第二章研究了公司访客管理系统的所采用的开发技术和开发工具。
第三章是系统分析部分,包括系统总体需求描述、功能性角度分析系统需求、非功能性等各个方面分析系统是否可以实现。
第四章是系统设计部分,本文章的重要部分,提供了系统架构的详细设计和一些主要功能模块的设计说明。
第五章是系统的具体实现,介绍系统的各个模块的具体实现。
第六章在前几章的基础上对系统进行测试和运行。
最后对系统进行了认真的总结,以此对未来有一个新的展望。
第2章 相关技术介绍
2.1 Python简介
Python 是一个高层次的脚本语言结合了解释性、编译性、互动性和面向对象的。Python 的设计,相比其他语言经常使用英文关键字和其他语言的一些标点符号,它具有比其他语言更有特色语法结构,具有很强的可读性。
解释型语言:类似于Python和Perl语言,这意味着开发过程中没有了编译这个环节。
交互式语言:可以在一个 Python 提示符 >>> 后直接执行代码。
面向对象语言:Python支持面向对象的风格或代码封装在对象的编程技术。
2.2 Django框架
Django是一个由Python编写的具有完整架站能力的开源Web框架。使用Django,只要很少的代码,Python的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务。
Django本身基于MVC模型,即Model(模型)+View(视图)+ Controller(控制器)设计模式,因此天然具有MVC的出色基因:开发快捷、部署方便、可重用性高、维护成本低等。Python加Django是快速开发、设计、部署网站的最佳组合。
Django具有以下特点:
能完善、要素齐全:该有的、可以没有的都有,常用的、不常用的工具都用。Django提供了大量的特性和工具,无须你自己定义、组合、增删及修改。
完善的文档:经过十多年的发展和完善,Django有广泛的实践经验和完善的在线文档(可惜大多数为英文)。开发者遇到问题时可以搜索在线文档寻求解决方案。
强大的数据库访问组件:Django的Model层自带数据库ORM组件,使得开发者无须学习其他数据库访问技术(SQL、pymysql、SQLALchemy等)。
灵活的URL映射:Django使用正则表达式管理URL映射,灵活性高。
丰富的Template模板语言:类似jinjia模板语言,不但原生功能丰富,还可以自定义模板标签。
2.3Mysql数据库
Mysql 经过多次的更新,功能层面已经非常的丰富和完善了,从Mysql4版本到5版本进行了比较大的更新,在商业的实际使用中取得了很好的实际应用效果。最新版本的Mysql支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷。
针对本文中设计的公司访客管理系统在实际的实现过程中,最终选择Mysql数据库的主要原因在于在企业的应用系统应用及开发的过程中会存在大量的数据库比较频繁的操作,而且数据的安全性要求也是非常的高。综合这些因素,最终选择安全性系数比较高的Mysql来对公司访客管理系统后台数据进行存储操作。
数据库管理系统的总体结构图如下图所示。

图2-1 数据库组成结构
2.4 B/S体系工作原理
B/S架构采取浏览器请求,服务器响应的工作模式。
用户可以通过浏览器去访问Internet上由Web服务器产生的文本、数据、图片、动画、视频点播和声音等信息;
而每一个Web服务器又可以通过各种方式与数据库服务器连接,大量的数据实际存放在数据库服务器中;
从Web服务器上下载程序到本地来执行,在下载过程中若遇到与数据库有关的指令,由Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户。在这种结构中,将许许多多的网连接到一块,形成一个巨大的网,即全球网。而各个企业可以在此结构的基础上建立自己的Internet。
在 B/S 模式中,用户是通过浏览器针对许多分布于网络上的服务器进行请求访问的,浏览器的请求通过服务器进行处理,并将处理结果以及相应的信息返回给浏览器,其他的数据加工、请求全部都是由Web Server完成的。通过该框架结构以及植入于操作系统内部的浏览器,该结构已经成为了当今软件应用的主流结构模式。
第3章 系统分析
3.1可行性分析
开发任何一个系统,都要对其可行性进行分析,对其时间和资源上的限制进行考虑,这样可以减少系统开发的风险。同时,分析之后不仅能够合理的运用人力,还能在各方面资源的消耗上得到节省。下面就对技术、经济和社会三个方面来介绍。
3.1.1技术可行性
技术可行性主要考虑当前项目所用的技术是否能够符合,在设备上是否能够满足,及各种辅助工具是否提供帮助。本系统用的是python开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。采用python编程语言,已无技术上的问题。
3.1.2经济可行性
系统所采用的ZendStudio开发平台和Mysql后端数据库均为免费开发工具。故开发成本主要集中在后期的推广及系统维护上。相对于成本较高的C/S模式,也是选用了成本较低的B/S模式,所以经济上几乎没任何问题。
3.1.3社会可行性
公司访客管理系统在社会上的可行性较高。随着信息化进程的加快,越来越多的企业和机构需要高效、安全的访客管理方式。传统的人工登记和管理方式已经无法满足现代企业对于效率和精确度的要求,而基于系统化的访客管理能够显著提高工作效率,减少人为失误,确保信息的安全与准确。此外,随着社会对数据保护和隐私安全的日益重视,智能化的访客管理系统可以提供更为安全的数据处理和权限控制机制,符合现代企业对于信息安全的高标准。因此,采用公司访客管理系统不仅能够提升企业的管理水平,还能够促进社会管理的智能化和规范化。
3.2功能需求分析
公司访客管理系统,主要分为普通用户、员工用户和管理员这三个用户。主要实现以下功能需求:
(一)普通用户
首页:用户登录后的首页,展示系统的主要信息和公司最新动态。
公告通知:查看公司发布的公告和通知,及时了解公司重要事项。
新闻资讯:浏览公司发布的新闻和资讯,获取最新的公司信息和行业动态。
来访预约:普通用户可以进行来访预约,选择访问时间并填写相关信息,提交预约申请。
车位信息:查看公司内车位的相关信息,了解车位的使用情况。
我的账户:管理个人账户信息,包括修改密码、联系方式等。
个人中心:
个人首页:展示个人信息、来访记录等。
来访预约:查看和管理用户的历史预约记录。
预约车位:申请车位预约,确保来访时有车位可用。
收藏:收藏新闻资讯或其他相关信息,方便后续查看。
评论管理:查看和管理自己对新闻、公告等内容的评论。
(二)员工用户
后台首页:员工用户登录后的首页,展示系统的关键数据和重要通知,帮助员工快速了解当前的工作状态。
来访预约管理:员工可以管理来访预约情况,审核并确认来访预约,确保访客的顺利到访。
访客信息管理:查看和管理访客的个人信息及历史记录,确保访客信息的准确性和完整性。
预约车位管理:员工可以管理车位预约,确保有车位可用时的顺利停车。
(三)管理员
后台首页:管理员登录后的首页,展示系统的关键统计数据和重要通知。
系统用户:管理系统中所有用户信息,包括权限分配、角色管理等。
来访预约管理:管理访客的预约情况,审核和确认来访预约。
访客信息管理:查看和管理访客的个人信息和历史访问记录。
车位信息管理:管理公司内车位的分配和使用情况。
预约车位管理:处理访客或员工的车位预约申请,并进行审批。
系统管理(轮播图):管理网站首页的轮播图内容,进行图片的更新与设置。
公告通知管理:发布和管理公司公告、通知信息,向员工或访客传达重要事项。
资源管理:管理新闻资讯和资讯分类,发布与更新公司相关的新闻信息。
权限管理:设定不同用户角色的访问权限,确保各类操作的安全性。
操作日志:记录管理员的所有操作日志,确保系统操作可追溯。
3.3非功能需求分析
首先主要考虑的是系统功能软件,在具体设计的环节上,是不是能够较好的满足各类用户的基本功能需求,如果不能较好的满足用户需求,那么这个系统的存在是没有价值的。软件系统的非功能性求分析,从7个方面展开,一个是性能分析,针对系统;一个是安全分析,针对系统,一个是完整度分析,针对系统,一个是可维护分析,针对系统,一个是可扩展性分析,针对系统,一个是适应业务的性能分析。面对公司访客管理系统存在的性能、安全、扩展、完整度等7个方面性能综合比对分析后发现,需要相应的非功能性需求分析。
3.4系统用例分析
根据3.2功能需求,得出以下用例图
普通用户用例图如下所示。

图3-1 普通用户用例图
员工用户用例图如下所示。

图3-2 员工用户用例图
管理员用例图如下所示。

图3-3 管理员用例图
3.5安全性需求分析
3.5.1系统的安全性
安全性对每一个系统来说都是非常重要的。安全性很好的系统可以保护企业的信息和用户的信息不被窃取。提高系统的安全性不仅是对用户的负责,更是对企业的负责。尤其针对于公司访客管理系统来说,必须要有很好的安全性来保障整个系统。
系统具有对使用者有权限控制,针对角色的不通限制使用者的权限,以此来确保系统的安全性。
3.5.2数据的安全性
数据库中的数据是从外界输入的,当数据的输入时,由于种种原因,输入的数据会无效。因此,怎样保证输入的数据符合规定,成为了数据库系统,尤其是多用户的关系数据库系统首要关注的问题。因此,在写入数据库时,要保证数据完整性、正确性和一致性。
3.6系统流程分析
3.6.1程序操作流程
用户访问系统,可以选择进行注册或登录操作。注册成功后,用户可以使用注册的账号登录系统。登录后的用户可以进入系统功能界面,使用自己权限内的功能操作。程序操作流程图如图3-4所示。

图3-4 程序操作流程图
3.6.2登录流程
用户访问系统,进入登录页面页面,入其用户名和密码,后端服务接收登录请求,验证用户提供的用户名和密码是否匹配数据库中存储的信息,验证通过即可登录成功。登录流程图如图3-5所示。

图3-5 登录流程图
3.6.3注册流程
未有账号的用户可进入注册界面进行注册操作,填写注册表格,包括用户名、密码、电子邮件等必要信息。后台系统验证并保存用户提交的信息。分配唯一用户标识符。注册成功后,用户可以使用账号密码进行登录。用户注册流程图如图3-6所示。

图3-6 注册流程图
第4章 系统设计
4.1系统架构设计
公司访客管理系统的架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。
系统架构如下图所示。

图4-1 系统架构
4.2系统总体设计
公司访客管理系统总体分为前台用户模块和后台管理员模块。两个模块表现上是分别独立存在,但是访问的数据库是一样的。每一个模块的功能都是根据先前完成的需求分析,并查阅相关资料后整理制作的。系统功能结构图如下图所示。

图4-2 系统功能结构图
4.3数据库设计
4.3.1数据库概念设计
根据前面的数据流程图,结合系统的功能模块设计,设计出符合系统的各信息实体。
系统ER图如下图所示。

图4-3 系统ER图
4.3.2数据库表设计
公司访客管理系统所拥有的数据表有以下:用户信息表,活动报名表,轮播图表等。
由于数据表较多,只展示系统主要数据表,如下表所示。
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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 |
parent |
varchar |
64 |
0 |
Y |
N |
父级菜单 |
|
|
8 |
parent_sort |
int |
10 |
0 |
N |
N |
0 |
父级菜单排序 |
|
9 |
position |
varchar |
32 |
0 |
Y |
N |
位置: |
|
|
10 |
mode |
varchar |
32 |
0 |
N |
N |
_blank |
跳转方式: |
|
11 |
add |
tinyint |
3 |
0 |
N |
N |
1 |
是否可增加: |
|
12 |
del |
tinyint |
3 |
0 |
N |
N |
1 |
是否可删除: |
|
13 |
set |
tinyint |
3 |
0 |
N |
N |
1 |
是否可修改: |
|
14 |
get |
tinyint |
3 |
0 |
N |
N |
1 |
是否可查看: |
|
15 |
field_add |
text |
65535 |
0 |
Y |
N |
添加字段: |
|
|
16 |
field_set |
text |
65535 |
0 |
Y |
N |
修改字段: |
|
|
17 |
field_get |
text |
65535 |
0 |
Y |
N |
查询字段: |
|
|
18 |
table_nav_name |
varchar |
500 |
0 |
Y |
N |
跨表导航名称: |
|
|
19 |
table_nav |
varchar |
500 |
0 |
Y |
N |
跨表导航: |
|
|
20 |
option |
text |
65535 |
0 |
Y |
N |
配置: |
|
|
21 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
|
22 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
code_token_id |
int |
10 |
0 |
N |
Y |
||
|
2 |
token |
varchar |
255 |
0 |
Y |
N |
||
|
3 |
code |
varchar |
255 |
0 |
Y |
N |
验证码 |
|
|
4 |
expire_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
失效时间 |
|
5 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
6 |
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 |
employee_users_id |
int |
10 |
0 |
N |
Y |
员工用户ID |
|
|
2 |
employee_name |
varchar |
64 |
0 |
Y |
N |
员工姓名 |
|
|
3 |
employee_age |
varchar |
64 |
0 |
Y |
N |
员工年龄 |
|
|
4 |
employee_gender |
varchar |
64 |
0 |
Y |
N |
员工性别 |
|
|
5 |
contact_information |
varchar |
16 |
0 |
Y |
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 |
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 |
operation_log_id |
int |
10 |
0 |
N |
Y |
操作日志ID |
|
|
2 |
user_group |
varchar |
64 |
0 |
Y |
N |
用户角色 |
|
|
3 |
user_name |
varchar |
64 |
0 |
Y |
N |
用户账号 |
|
|
4 |
routes |
varchar |
64 |
0 |
Y |
N |
模块名称 |
|
|
5 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
6 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
ordinary_users_id |
int |
10 |
0 |
N |
Y |
普通用户ID |
|
|
2 |
user_name |
varchar |
64 |
0 |
Y |
N |
用户姓名 |
|
|
3 |
user_age |
varchar |
64 |
0 |
Y |
N |
用户年龄 |
|
|
4 |
user_gender |
varchar |
64 |
0 |
Y |
N |
用户性别 |
|
|
5 |
phone_number |
varchar |
16 |
0 |
Y |
N |
手机号码 |
|
|
6 |
id_number |
varchar |
255 |
0 |
Y |
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 |
更新时间 |
表parking_space_information (车位信息)
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
parking_space_information_id |
int |
10 |
0 |
N |
Y |
车位信息ID |
|
|
2 |
enterprise_name |
varchar |
64 |
0 |
Y |
N |
企业名称 |
|
|
3 |
parking_space_number |
varchar |
64 |
0 |
Y |
N |
车位编号 |
|
|
4 |
cover_photo |
varchar |
255 |
0 |
Y |
N |
封面图片 |
|
|
5 |
area_name |
varchar |
64 |
0 |
Y |
N |
区域名称 |
|
|
6 |
parking_space_status |
varchar |
64 |
0 |
Y |
N |
车位状态 |
|
|
7 |
details_remarks |
longtext |
2147483647 |
0 |
Y |
N |
详情备注 |
|
|
8 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击数 |
|
9 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
点赞数 |
|
10 |
collect_len |
int |
10 |
0 |
N |
N |
0 |
收藏数 |
|
11 |
comment_len |
int |
10 |
0 |
N |
N |
0 |
评论数 |
|
12 |
reserve_a_parking_spot_limit_times |
int |
10 |
0 |
N |
N |
0 |
预约限制次数 |
|
13 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
14 |
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已取消 |
表reserve_a_parking_spot (预约车位)
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
reserve_a_parking_spot_id |
int |
10 |
0 |
N |
Y |
预约车位ID |
|
|
2 |
enterprise_name |
varchar |
64 |
0 |
Y |
N |
企业名称 |
|
|
3 |
parking_space_number |
varchar |
64 |
0 |
Y |
N |
车位编号 |
|
|
4 |
area_name |
varchar |
64 |
0 |
Y |
N |
区域名称 |
|
|
5 |
ordinary_users |
int |
10 |
0 |
Y |
N |
0 |
普通用户 |
|
6 |
user_name |
varchar |
64 |
0 |
Y |
N |
用户姓名 |
|
|
7 |
license_plate_number |
varchar |
64 |
0 |
Y |
N |
车牌号码 |
|
|
8 |
time_of_appointment |
datetime |
19 |
0 |
Y |
N |
预约时间 |
|
|
9 |
appointment_remarks |
text |
65535 |
0 |
Y |
N |
预约备注 |
|
|
10 |
examine_state |
varchar |
16 |
0 |
N |
N |
未审核 |
审核状态 |
|
11 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
12 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
|
13 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表 |
|
|
14 |
source_id |
int |
10 |
0 |
Y |
N |
来源ID |
|
|
15 |
source_user_id |
int |
10 |
0 |
Y |
N |
来源用户 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
schedule_id |
smallint |
5 |
0 |
N |
Y |
日程ID:[0,32767] |
|
|
2 |
content |
varchar |
255 |
0 |
Y |
N |
日程内容 |
|
|
3 |
scheduled_time |
datetime |
19 |
0 |
Y |
N |
计划时间 |
|
|
4 |
user_id |
int |
10 |
0 |
N |
N |
用户id |
|
|
5 |
create_time |
datetime |
19 |
0 |
Y |
N |
创建时间 |
|
|
6 |
update_time |
datetime |
19 |
0 |
Y |
N |
更新时间 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
score_id |
int |
10 |
0 |
N |
Y |
评分ID: |
|
|
2 |
user_id |
int |
10 |
0 |
N |
N |
0 |
评分人: |
|
3 |
nickname |
varchar |
64 |
0 |
Y |
N |
昵称: |
|
|
4 |
score_num |
double |
5 |
2 |
N |
N |
0.00 |
评分: |
|
5 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
|
6 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
|
7 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表: |
|
|
8 |
source_field |
varchar |
255 |
0 |
Y |
N |
来源字段: |
|
|
9 |
source_id |
int |
10 |
0 |
N |
N |
0 |
来源ID: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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 |
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 |
int |
10 |
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 |
创建时间: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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 |
更新时间: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
visitor_information_id |
int |
10 |
0 |
N |
Y |
访客信息ID |
|
|
2 |
user_name |
varchar |
64 |
0 |
Y |
N |
用户姓名 |
|
|
3 |
phone_number |
varchar |
64 |
0 |
Y |
N |
手机号码 |
|
|
4 |
id_number |
varchar |
64 |
0 |
Y |
N |
身份证号 |
|
|
5 |
admission_time |
datetime |
19 |
0 |
Y |
N |
入场时间 |
|
|
6 |
employee_users |
int |
10 |
0 |
Y |
N |
0 |
员工用户 |
|
7 |
visiting_instructions |
text |
65535 |
0 |
Y |
N |
来访说明 |
|
|
8 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
9 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
|
10 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表 |
|
|
11 |
source_id |
int |
10 |
0 |
Y |
N |
来源ID |
|
|
12 |
source_user_id |
int |
10 |
0 |
Y |
N |
来源用户 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
visit_reservation_id |
int |
10 |
0 |
N |
Y |
来访预约ID |
|
|
2 |
ordinary_users |
int |
10 |
0 |
Y |
N |
0 |
普通用户 |
|
3 |
user_name |
varchar |
64 |
0 |
Y |
N |
用户姓名 |
|
|
4 |
phone_number |
varchar |
64 |
0 |
Y |
N |
手机号码 |
|
|
5 |
id_number |
varchar |
64 |
0 |
Y |
N |
身份证号 |
|
|
6 |
time_of_appointment |
datetime |
19 |
0 |
Y |
N |
预约时间 |
|
|
7 |
visiting_instructions |
text |
65535 |
0 |
Y |
N |
来访说明 |
|
|
8 |
examine_state |
varchar |
16 |
0 |
N |
N |
未审核 |
审核状态 |
|
9 |
visitor_information_limit_times |
int |
10 |
0 |
N |
N |
0 |
来访记录限制次数 |
|
10 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
11 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
第5章 系统关键模块设计与实现
公司访客管理系统的详细设计与实现主要是根据前面的公司访客管理系统的需求分析和公司访客管理系统的总体设计来设计页面并实现业务逻辑。主要从公司访客管理系统界面实现、业务逻辑实现这两部分进行介绍。
5.1普通用户功能模块
5.1.1 前台首页界面
当进入公司访客管理系统的时候,系统以上中下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是轮播图,再往下是公告通知,其主界面展示如下图所示。

图5-1 前台首页界面图
5.1.2 用户注册界面
公司访客管理系统的用户可以进行注册登录,当用户右上角“注册”按钮的时候,当填写上自己的账号+密码+确认密码+昵称+邮箱等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。注册用户注册界面展示如下图所示。

图5-2注册界面图
注册代码如下:
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))
5.1.3 用户登录界面
公司访客管理系统中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到公司访客管理系统的首页中;否则将会提示相应错误信息,采用摄像头人脸识别成功自动登录。用户登录界面如下图所示。

图5-3用户登录界面图
登录代码:
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))
5.1.4新闻资讯界面
当用户点击公司访客管理系统中导航栏上的“新闻资讯”后将会进入到该“新闻资讯”列表的界面,然后选择想要看的新闻资讯,点击进入到详细界面,同时可以进行点赞、收藏、评论操作,新闻资讯界面如下图所示。

图5-4新闻资讯界面图
5.1.5 车位信息界面
当用户点击“车位信息”这一菜单按钮,会显示管理员在后台发布的所有的车位信息,支持通过关键词对车位信息进行搜索,选择需要的车位信息可以进入到车位信息详细的介绍界面,同时可以进行预约、收藏、点赞、评论等操作,车位信息界面如下图4-7所示。

图5-5 车位信息详情界面图
查看车位信息代码如下:
def Get_obj(self, ctx):
query = dict(ctx.query)
config_plus = {}
if "field" in query:
field = query.pop("field")
config_plus["field"] = field
obj = self.service.Get_obj(query, obj_update(self.config, config_plus))
if self.service.error:
return {"error": self.service.error}
if obj:
self.interact_obj(ctx, obj)
return {"result": {"obj": obj}}
5.2员工用户功能模块
5.2.1 来访预约管理界面
员工可以管理来访预约情况,审核并确认来访预约,确保访客的顺利到访。来访预约管理界面如下图所示。

图5-6来访预约管理界面图
5.2.2 访客信息管理界面
员工用户查看和管理访客的个人信息及历史记录,确保访客信息的准确性和完整性。访客信息管理界面如下图所示。

图5-7访客信息管理界面图
5.2.3 预约车位管理界面
员工可以申请和管理车位预约,确保有车位可用时的顺利停车。预约车位管理界面如下图所示。

图5-8预约车位管理界面图
5.3管理员功能模块
5.3.1系统用户界面
管理员点击“系统用户”这一菜单会显示管理员、普通用户、员工用户这三个子菜单,管理员可以对这三个角色的信息进行增删改查操作。界面如下图所示。

图5-9系统用户界面图
5.3.2车位信息管理界面
管理员用于管理公司内所有车位的信息,包括车位分配、使用情况和空闲车位的监控等,确保车位资源的高效使用。车位信息管理界面如下图所示。

图5-10车位信息管理界面图
添加车位信息代码如下:
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": "已存在"}}
5.3.3轮播图界面
管理员可以对系统前台展示的轮播图进行增删改查,方便用户进行查看。轮播图管理界面如下图所示。

图5-11 系统管理界面图
5.3.4公告通知管理界面
管理员能够发布和管理公司的公告及通知信息,及时传达公司内外的重要事项,确保信息流通的顺畅。公告通知管理界面如下图所示。

图5-12公告通知管理界面图
删除公告通知代码如下:
def Del(self, ctx):
if len(ctx.query) == 0:
errorMsg = {"code": 30000, "message": "删除条件不能为空!"}
return errorMsg
result = self.service.Del(ctx.query, self.config)
if self.service.error:
return {"error": self.service.error}
return {"result": result}
第6章 系统测试
6.1测试目的
对任何系统而言,测试都是必不可少的环节,测试可以发现系统存在的很多问题,所有的软件上线之前,都应该进行充足的测试之后才能保证上线后不会Bug频发,或者是功能不满足需求等问题的发生。下面分别从单元测试,功能测试和用例测试来对系统进行测试以保证系统的稳定性和可靠性。
6.2功能测试
下表是系统登录功能测试用例,检测了用户名和密码的不同的输入情况,观察系统的响应情况。得出该功能达到了设计目标。
表6-1 系统登录功能测试用例
|
功能描述 |
用于系统登录 |
|
|
测试目的 |
检测登录时的合法性检查 |
|
|
测试数据以及操作 |
预期结果 |
实际结果 |
|
输入的用户名和密码带有非法字符 |
提示用户名或者密码错误 |
与预期结果一致 |
|
输入的用户名或者密码为空 |
提示用户名或者密码错误 |
与预期结果一致 |
|
输入的用户名和密码不存在 |
提示用户名或者密码错误 |
与预期结果一致 |
|
输入正确的用户名和密码 |
登录成功 |
与预期结果一致 |
下表是注册功能测试用例,检测了各种数据的输入情况,观察系统的响应情况。得出该功能达到了设计目标。
表6-2 注册功能测试用例
|
功能描述 |
用于用户注册 |
|
|
测试目的 |
检测用户注册时的合法性检查 |
|
|
测试数据以及操作 |
预期结果 |
实际结果 |
|
输入的手机号不合法 |
提示请输入正确的手机号码 |
与预期结果一致 |
|
输入的字段为空 |
提示必填项不能为空 |
与预期结果一致 |
|
输入的密码少于6位 |
提示密码必须为6-12位 |
与预期结果一致 |
|
输入的密码大于12位 |
提示密码必须为6-12位 |
与预期结果一致 |
下表是车位信息功能的测试用例,检测了车位信息的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;用户登录系统。
表6-3 车位信息的测试用例
|
功能描述 |
用于车位信息 |
|
|
测试目的 |
检测车位信息时的各种操作的运行情况 |
|
|
测试数据以及操作 |
预期结果 |
实际结果 |
|
点击添加车位信息,必填项合法输入,点击保存 |
提示添加成功 |
与预期结果一致 |
|
点击添加车位信息,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
|
点击修改车位信息,必填项修改为空,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
|
点击修改车位信息,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
|
点击删除车位信息,选择车位信息删除 |
提示删除成功 |
与预期结果一致 |
|
点击搜索车位信息,输入存在的简历名 |
查找出车位信息 |
与预期结果一致 |
|
点击搜索车位信息,输入不存在的简历名 |
不显示车位信息 |
与预期结果一致 |
6.3性能测试
使用阿里云PTS(Performance Testing Service)性能测试服务对线上系统进行压力测试。线上服务器环境为:1核心CPU,1G内存,1Mbps公网带宽,Centos7.0操作系统。
压测过程中使用了2台并发机器,每台机器20个用户并发,对系统主页,登录,数据查询和数据维护等模块进行并发访问,测试结果是有40个用户并发时,数据管理相关页面的响应时间甚至达到了7s,通过查看服务器出网流量发现已经达到1381kb/s,可以看出服务器的带宽已经达到峰值,如果系统使用5Mbps的带宽,系统的响应时间和TPS将会大大增加。在整个测试的过程中,CPU的使用率占用仅8%,也提现出带宽瓶颈对系统的影响非常严重。
第7章总结与展望
公司访客管理系统的开发是以Python编程语言作为基础,在PythonStrom平台上完成编码工作,系统整体为B/S架构,数据库系统使用Mysql。文中详细分析了公司访客管理系统的研究背景、研究目的和意义、开发工具和相关技术以及系统需求、系统详细设计和系统测试等等一系列内容。系统实现了公司访客管理系统所需的一些基本功能,并通过测试对这些实现的功能进行了完善,进而提高了系统整体的实用性。整个系统的开发过程中大量使用了Python相关的知识以及前端开发使用的html和javascript等,同时涉及到了很多开源框架和组件,例如后台系统中运用的MVVM架构、Freemarker模板引擎等,前端运用的UI框架等。
系统投入运行时,各功能均运行正常。系统的每个界面的操作符合常规逻辑,对使用者来说操作简单,界面友好。整个系统的各个功能设计合理,体现了人性化。
但是由于自己在系统开发过程中对一些用到的相关知识和技术掌握不够牢固,再加上自身开发经验欠缺,因此系统在有些方面的功能还不够完善,考虑的不够全面,因此整个系统还有待日后逐步完善。
参考文献
- 王晓宇.一种基于SaaS满足个性化需求的出入管理系统设计和应用[J].电脑知识与技术,2024,20(07):104-106.DOI:10.14004/j.cnki.ckt.2024.0462.
- 李粤平,李岩.Python Web开发技术与应用:Flask版[M].人民邮电出版社:202308.344.
- 谢吉通,张岚,周俊波,等.基于局域网的智能访客管理系统的研究[J].绿色建造与智能建筑,2024,(03):92-95.
- 尹军.大数据背景下高校访客预约管理系统设计研发——以柳州铁道职业技术学院为例[J].电脑知识与技术,2023,19(16):86-88.DOI:10.14004/j.cnki.ckt.2023.0829.
- 丁福江.基于Spring Boot和Vue技术的访客管理系统设计与实现[J].电脑编程技巧与维护,2023,(12):82-87.DOI:10.16184/j.cnki.comprg.2023.12.012.
- 魏旗鹏,王玉,徐崇智,等.基于扫码技术的高校校园访客管理系统设计与实施[J].电子技术与软件工程,2023,(05):250-253.DOI:10.20109/j.cnki.etse.2023.05.056.
- 于洋.基于微信小程序的访客预约审核管理系统在港口企业的应用[J].中国设备工程,2023,(02):62-64.
- 李青.校园智慧门禁系统的设计与实现[J].电脑知识与技术,2023,19(02):20-24+46.DOI:10.14004/j.cnki.ckt.2023.0065.
- 方良英.基于SALAMA框架的访客系统设计与实现[J].信息与电脑(理论版),2022,34(21):166-169.
- 罗仲英,王良平.移动访客管理系统的研究与开发[J].广船科技,2022,42(03):77-79.
- 嵇宏伟,徐森,朱锦新,等.企业生产人员在岗在位管理系统设计与实现[J].软件,2022,43(09):57-60.
- 夏演.基于低代码开发平台的高校访客管理系统研究与实现[J].办公自动化,2022,27(13):13-16.
- 李庚,张丽丽,李孟达,等.钢铁企业智能门禁系统研究与设计[J].今日制造与升级,2022,(04):56-58.
- 郭文沁.智慧园区管理系统的设计与实现[D].华中科技大学,2022.DOI:10.27157/d.cnki.ghzku.2022.000078.
- 孙馨鑫.访客管理确保写字楼安全运营[J].中国物业管理,2021,(03):76-77.
- [1]Ben S ,Saurabh B ,Andrew B , et al.Web Development with Django:Learn to build modern web applications with a Python-based framework[M].Packt Publishing Limited:2021-02-25.DOI:10.0000/9781839213779.
- [2]Arévalo G J ,Viecco L ,Arévalo L .Methodology to define an integration process between frameworks SCRUM, Django REST framework y Vue.js, implemented for software development, from quality management approach and agility[J].IOP Conference Series Materials Science and Engineering,2020,844(1):012022.
- [3]Jibran A A .Django Project Blueprints:Develop stunning web application projects with the Django framework[M].Packt Publishing Limited:2016-05-27.DOI:10.0000/9781783985432.
- [4]Aidas B .Web Development with Django Cookbook- Second Edition:Over 90 practical recipes to help you create scalable websites using the Django 1.8 framework[M].Packt Publishing Limited:2016-01-28.DOI:10.0000/9781785881329.
- [5]Ayman H .Django 1.0 Website Development:Build powerful web applications, quickly and cleanly, with the Django application framework[M].Packt Publishing Limited:2009-03-10.DOI:10.0000/9781847196798.
致谢
本次设计历时3个月。在这个毕业设计中,离不开指导教师的指导,使事情基本顺利。指导老师无论是在毕业设计历经中,还是在论文做完中都给了了我特别大的助益。另1个方面,教师认真负责的工作姿态,谨慎的教学精神厚重的理论水准都使我获益匪浅。他勤恳谨慎的教学育人学习姿态也给我留下了特别特别深的感觉。我从老师那里学到了很多东西。在理论和实践中,我的技能得到了特别大的提高。在此,特向教师表示由衷的感激。
经过对该毕业设计的全部研究和开发,我的系统研发经历了从需求分析到实现详细功能,再到最终测试和维护的特殊进展。让我对系统研发有了更深层次的认识。如今我的动手本领单独处理疑惑的本领也获取到了特别大的演练学习增多,这是这次毕业设计最好的收获。
最后,在整个系统开发过程中,我周围的同学和朋友给了我很多意见,所以我很快就确认了系统的商业思想。在次,我由衷的向他们表示感激。
免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-
更多推荐



所有评论(0)