zoukankan      html  css  js  c++  java
  • 2020系统综合实践 期末作业

    1、选题简介

    选题名称

    人脸打卡系统

    预期结果

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

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

    • 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这个库,使查询结果的格式就像数据库中的格式一样,美观一些。另外一键喝茶(提醒未打卡或迟到过多的员工)这个功能我觉得比较有新意,可以去提醒那些工作态度不端正的员工。在本次实验中学到了很多的知识,并且锻炼了自己的逻辑,学习怎样去设计实现对用户比较友好的界面,这也是我第一次去写一个比较完善的图形化界面。当然,图形化界面离不开前端和后端的支持,也非常感谢队友对我的支持和帮助。

    6.演示视频

  • 相关阅读:
    mojo 接口示例
    MojoliciousLite: 实时的web框架 概述
    接口返回json
    centos 6.7 perl 版本 This is perl 5, version 22 安装DBI DBD
    centos 6.7 perl 5.22 安装DBD 需要使用老的perl版本
    商业智能改变汽车行业
    商业智能改变汽车行业
    读MBA经历回顾(上)目的决定手段——北漂18年(48)
    perl 升级到5.20版本
    Group Commit of Binary Log
  • 原文地址:https://www.cnblogs.com/HuangYH723/p/13199709.html
Copyright © 2011-2022 走看看