zoukankan      html  css  js  c++  java
  • 2020系统综合实践 第8次实践作业

    1、选题简介

    选题名称

    人脸打卡系统

    预期结果

    本次选题基于一个日常打卡应用,需求为:管理员根据企业密码注册,录入员工信息,查看员工打卡情况。员工能进行每日打卡。

    2、系统部署所使用的容器

    参考我第4次博客

    • 项目结构

    • dockerfile for mysql

    from mysql:5.7
    #基础镜像
    maintainer lyh<471727250@qq.com>
    #维护者信息
    ENV MYSQL_ALLOW_EMPTY_PASSWORD no
    #不允许空密码登录
    ENV MYSQL_ROOT_PASSWORD=123456
    #root密码
    COPY setup.sh /usr/lyh/suancaiyu/mysql/setup.sh
    COPY schema.sql /usr/lyh/suancaiyu/mysql/schema.sql
    #所需文件
    CMD ["sh", "/usr/lyh/suancaiyu/mysql/setup.sh"]
    #启动命令
    
    • dockerfile for tomcat

    #基础镜像
    FROM tomcat
    #作者信息
    MAINTAINER lyh<471727250@qq.com>
    #改时区
    RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
    
    • dockerfile for nginx

    #基础镜像
    FROM nginx
    #作者信息
    MAINTAINER lyh<471727250@qq.com>
    #声明暴露的端口
    EXPOSE 2020
    
    • default.conf for nginx

    #轮询实现负载均衡
    upstream tomcats {
         server tomcat1:8080 weight=1;
         server tomcat2:8080 weight=1;
         server tomcat3:8080 weight=1;
    }
    server {
        listen 2020;
        server_name localhost;
        location / {
            proxy_pass http://tomcats; # 请求转向tomcats
        }
        proxy_read_timeout 240s; 
    }
    

    3、运行结果

    演示视频

    后端结果:

    使用sudo docker-compose up -d --build命令运行容器

    查看各容器日志:
    sudo docker logs suancaiyu_mysql

    sudo docker logs tomcat1

    sudo docker logs tomcat2

    sudo docker logs tomcat3

    sudo docker logs suancaiyu_ngx

    前端结果:

    主界面

    打卡界面

    打卡确认界面

    打卡状态界面

    管理员登录界面

    管理员注册界面

    管理员界面

    录入员工界面

    打卡状态查询界面(三个界面类似,这里只展示一个)

    员工信息界面

    删除员工界面

    月打卡汇总界面

    其他风格(功能完全相同,只是界面样子不一样)

    4、分工情况

    成员 分工 贡献比
    林郁昊 后端开发,后端docker环境部署,接口测试 33
    黄宇航 人脸识别代码的修改,前后端对接,录屏测试,部分素材收集 32
    胡浩楠 图形化界面的设计与实现,数据格式处理,部分素材收集 35

    5、总结

    林郁昊

    在本次的实验中我负责后端开发,后端docker环境部署,接口测试,其实自己写代码的过程还是比较轻松的,难的是部署与接口测试。在自己的电脑上直接运行的参数与阿里云服务器上不大一样,有一些端口还需要额外开通,比如“一键喝茶”这个功能,需要开启25端口,然后阿里云25端口开放申请失败,最后只好开另一个端口来发邮件。还有件事打卡十分重要的时区问题,阿里云上构建docker容器,容器的时区不一致,所以需要在dockerfile中加参数,包括mysql中的时区。部署花的时间与编码都要几乎一致了。最后感谢队友们的互相配合,做项目的过程还是很愉快的。

    黄宇航

    在本次的实验中我负责人脸识别代码修改和前后端对接的任务,一开始发现源代码需要将识别图片先加载好,和人脸识别打卡中录入类似,于是写了扫面文件夹和读取图片的函数来解决这一个问题,其次就是前后端对接,起初用Json文件向服务器post文件来获取对应信息,发现服务器并不支持json文件的解析,于是只好用简单的request.get来请求数据再将数据进行处理,同时也非常感谢队友对我的支持和帮助。

    胡浩楠

    在本次的实验中我负责图形化界面这一部分,一开始是想用pyqt5实现图形化界面,界面可能会比较美观,而且pyqt5比较方便,拖动控件即可完成布置,但是由于时间比较紧张,从0开始学习pyqt5的时间不太够,再考虑到系统的兼容性,我最终还是决定使用python基础的tkinter图形界面库。tkinter这个库之前在其他课程中有用过,比较简单,可移植性好,但是界面要设计的比较好看是不容易的,因为控件就那么十几种,而且有很大的局限性,因此我就想尽量把界面做的功能比较全,比较友好。打卡应用是讲究实时性的,所以界面上显示的信息都是动态获取的,包括日历、时间、天气,这些还用到了爬虫的一些知识。在管理员注册和员工录入方面上,为了显示出添加的图片,这部分的逻辑我也是下了不少功夫,关键点有两个,第一个是录入照片时,怎样知道员工信息和这个照片匹配,这部分我就是想员工在输入工号后,获取工号后并把照片以工号命名,第二点是注册时显示的图片大小格式要限制,但是限制了大小后,图片会变形,如果发生比较严重的变形就会影响识别的准确性,因此我设了两个文件夹,一个文件夹保存原图片(不变形),打卡扫描的时候是读入这个文件夹的图片,另一个保存添加照片时显示的图片,这部分图片仅用来显示,会变形,但是对识别没有影响。在查询或者汇总的显示时,利用到了PrettyTable这个库,使查询结果的格式就像数据库中的格式一样,美观一些。另外一键喝茶(提醒未打卡或迟到过多的员工)这个功能我觉得比较有新意,可以去提醒那些工作态度不端正的员工。在本次实验中学到了很多的知识,并且锻炼了自己的逻辑,学习怎样去设计实现对用户比较友好的界面,这也是我第一次去写一个比较完善的图形化界面。当然,图形化界面离不开前端和后端的支持,也非常感谢队友对我的支持和帮助。

  • 相关阅读:
    基于ZKEACMS的.Net Core多租户CMS建站系统
    使用PowerShell自动部署ASP.NetCore程序到IIS
    在Linux安装ASP.Net Core的运行时(Runtime)
    ASP .Net Core 2.0 修改默认端口
    .Net Core内存回收模式及性能测试对比
    .Net Core配置与自动更新
    Razor TagHelper实现Markdown转HTML
    用Docker自动构建纸壳CMS
    纸壳CMS 2.3,正式加入商城功能
    Linux使用私钥公钥(Public key)登录
  • 原文地址:https://www.cnblogs.com/ambition-hhn/p/13200557.html
Copyright © 2011-2022 走看看