201771030122-王瑞梅 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告
项目 | 内容 |
---|---|
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
这个作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12521474.html |
我的课程学习目标 | (1)体验软件项目开发中的两人合作,练习结对编程 (2)掌握Github协作开发程序的操作方法 |
这个作业在哪些方面帮助我实现学习目标 | (1)对结对编程有了了解和体验 (2)了解并体验了代码复审过程 (3)练习了怎样和结对同伴有效的交流 |
结对方学号-姓名 | <201771030101-程保华> |
结对方本次博客作业链接 | https://www.cnblogs.com/abyhbc/p/12588518.html |
本项目Github的仓库链接地址 | https://github.com/xcpxhyyqx1128/shiyansan |
实验内容
任务二
结对方Github项目仓库链接:https://github.com/hbc110/hbc110.github.io/
博客评论
代码复审核查表
1.概要部分
(1)代码符合需求和规格说明么?
答:代码符合需求和规格说明。
(2)代码设计是否考虑周全?
答:代码设计考虑挺周全的,因为有按照开发流程来开发。
(3)代码可读性如何?
答:代码简单易懂,设计思路也可以看懂。
(4)代码容易维护么?
答:代码比较容易维护。
(5)代码的每一行都执行并检查过了吗?
答:代码的每一行都检查过,但每一行没有单独执行过。2.设计规范部分
(1)设计是否遵循从已知的设计模式或项目中常用的模式?
答:是的,遵循。也从中学习到了一些知识。
(2)有没有硬编码或字符串/数字等存在?
答:有字符串和数字。
(3)代码有没有依赖于某一平台,是否会影响将来的移植?(如Win32到Win64)?
答:没有依赖,不会影响。由于Python的开源本质,它可以被移植在许多平台上。
(4)开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?本项目中是否存在类似的功能调用而不用全部重新实现?
答:存在,有些代码是可以调用的,在本项目中类似的功能可以调用而不用全部重新实现。
(5)有没有无用的代码可以清除?
答:没有无用的代码可清除,因为部分代码都有具体的功能。3.代码规范部分
修改的部分符合代码标准和风格么?
答:修改的部分符合代码标准和风格,我们是按照项目代码规范说明修改的。4.具体代码部分
(1)有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常?
答:对错误都进行了处理,没有异常
(2)参数传递有无错误?
答:参数传递无错误
(3)有没有使用断言(Assert)来保证我们认为不变的条件真的得到满足?
答:没有使用到断言
(4)有无可能存在资源泄漏(内存、文件、各种GUI资源、数据库访问的连接,等等)?
答:不会有资源泄漏的情况。5.效能
(1)代码的效能如何?最坏的情况是怎样的?
答:达到了具体任务要求的程度,程序运行正确。
(2)代码中,特别是循环中是否有明显可优化部分?
答:有,已优化,使用‘is’取代‘==’。
(3)对于系统和网络的调用是否会超时?如何处理?
答:没有出现超时现象,如果出现这种现象,我们会减少运行的进程数量、整理系统、释放内存空间等方式来处理。6.可读性
代码的可读性如何?有没有足够的注释?
答:可读性良好,注释都是最新添加的。7.可测试性
代码是否需要更新或创建新的单元测试?
答:可以针对部分功能的实现对代码进行进一步改进或创建新的单元测试。
fork
clone
push
任务3:采用两人结对编程方式,结合我校师生疫情每日上报系统使用体验,设计开发一款符合我校疫情防控工作需求的信息系统,
需求分析
本次实验准备用python完成,寻找到了matplotlib(用来画可视化图像),tkinter(用来做图形用户界面),pymysql库(用来链接数据库),smtplib(用来发送提醒邮件),xlwt库(用来导出excel表)。
- 全校各类师生需求
- 可以在线使用系统,填报当日个人相关的疫情信息并提交
- 可通知师生按时打卡(定时填报提醒)
- 二级部门疫情防控负责人需求
- 查看本部门人员疫情汇总信息
- 对疫情信息可进行多属性组合查询
- 可以使用可视化统计功能
- 学校防控办负责人需求
- 可以登录子系统,浏览所有人员填报汇总数据清单
- 可以用高级查询进行数据组合筛选
- 能查看各学院已填报和未填报学生统计情况(图形化方式)
- 可查看关键疫情数据统计情况(图形化方式)
- 可导出查询列表的EXCEL文件
软件设计说明
- 思维导图
- 流程图
- 功能设计
- 基本功能
(1)学生/教职工疫情信息采集
(2)二级部门疫情防控工作负责人查看本部门人员疫情汇总,高级查询功能进行多属性组合查询和可视化统计功能;
(3)学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有人员填报汇总数据清单,利用【高级查询】可进行数据组合筛选,系统以图形化方式展示各学院已填报和未填报
学生统计情况和关键疫情数据统计情况,可【导出】查询列表的EXCEL文件; - 扩展功能
定时填报提醒功能
- 基本功能
软件实现
- 主要类的说明:
- StatPage类:主要显示主界面
- PageTwo类:学生/教职工信息采集页面
- usr_login1类:二级负责人登录界面
- PageFour:疫情防控填报统计类,其中还有两个函数:showmessage函数(查看汇总信息)、showTianbao函数(数据可视化,生成柱状图)
- usr_login2:防控办负责人登录界面
- PageFive:高级查询功能:showMessage函数(查看汇总信息)、showImage函数(数据可视化)、Pageexcle函数(导出汇总信息到excel文件)、PageEmail函数(定时填报提醒功能)
- 数据库
- 管理员登录表admin
- 存储信息表infotable
- 管理员登录表admin
核心功能代码展示
/*发送至邮箱提醒*/
import smtplib
import time
# QQ邮箱
HOST = 'smtp.qq.com' # 服务器主机,相当于第三方客户端
PORT = '465' # 端口 使用SSL,端口号465或587
FROM = '' # 发件人的邮箱账号
TO = [''] # 接收邮件的人的账号.
SUBJECT = '上报疫情提醒' # 邮件的标题
CONTENT = '请速速上报疫情' # 邮件的内容
# 创建邮件发送对象
smtp_obj1 = smtplib.SMTP()
smtp_obj = smtplib.SMTP_SSL()
smtp_obj.connect(host=HOST, port=PORT)
res = smtp_obj.login(user=FROM, password='授权码')
print(res, '登录成功')
for to in TO:
print(to)
msg = '\n'.join(['From: {}'.format(FROM), 'To: {}'.format(to), 'SUBJECT:{}'.format(SUBJECT), '', CONTENT]) # 发送邮件,这里是我们按照邮箱的格式拼接一下.
smtp_obj.sendmail(from_addr=FROM, to_addrs=[to], msg=msg.encode('utf-8'))
print('发送成功')
程序运行
- 主界面
- 学生/教职工信息填报界面
- 二级部门负责人登录界面
查看部门信息
防控办负责人登录界面
汇总信息查看
高级查询
各学院已填报和未填报情况统计:
导出至excel
定时填报提醒
结对的过程
我们小组是每个人负责一部分,在约定好的时间内完成,然后交换着看,再给点自己的建议,不同的想法商量一致之后完成。对于完成比较好的内容,给予肯定。
- 以增量方式提交代码
PSP
PSP3.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 30 | 25 |
· Estimate | · 估计这个任务需要多少时间,并规划大致工作步骤 | 20 | 30 |
Development | 开发 | 840 | 970 |
·· Analysis | 需求分析(包括学习新技术) | 200 | 220 |
· Design Spec | · 生成设计文档 | 20 | 25 |
· Design Review | · 设计复审 (和同事审核设计文档) | 60 | 75 |
· Coding Standard | 代码规范(为目前的开发制定合适的规范) | 20 | 15 |
· Design | 具体设计 | 120 | 140 |
· Coding | 具体编码 | 350 | 400 |
· Code Review | · 代码复审 | 30 | 50 |
· Test | · 测试(自我测试,修改代码,提交修改) | 40 | 45 |
Reporting | 报告 | 70 | 75 |
·· Test Report | · 测试报告 | 30 | 30 |
· Size Measurement | 计算工作量 | 20 | 25 |
· Postmortem & Process Improvement Plan | · 事后总结 ,并提出过程改进计划 | 20 | 20 |
总结
两人合作可以带来1+1>2的效果。与一个人编程相比较,结对编程有很多优点。比如我的编程能力不好,之前写代码总会出现写一行,改好久的情况,但是和同伴合作之后,自己出现的很多问题,同伴总是会提出有用的意见,让我在这方面节约了很多的时间。结对编程中,双方的互动有利于开启思路,避免单独编程时思维容易阻塞的情况。总的来说,我们这次结对编程很愉快,让我对这种组队开发代码的形式有了新的认识和感受。