【熊子q的代码乐园】用python写个健康报备记录小系统
一、前言
coding的一路上,遇到过许多问题,也写过一些代码去解决,回头看看还是有点意思的,于是乎,右手大拇指和中指交错而过,打了个“响指”,不如开篇专栏记录下~
我是熊子q,不如就叫 熊子q的代码乐园 吧
最近寒假来啦,但是因为疫情的影响,还是要坚持每天健康报备,但是捏,身为班长,总是有几个调皮的小可爱忘记报备,然后我就要去叫小可爱,于是乎,为了记录这些小可爱,写了一个健康报备记录小系统~
喏,大概就长这样:

二、技术实现
1.概述
这里是一个小系统,因此呢我选择了最简单的界面,那就是控制台界面!虽然黑呼呼的吧,但是不挡它的强大功能!实现的功能主要是
1、添加今日未报备人员信息
2、查看未报备人员前10信息
3、查看所有未报备人员信息
2. 环境
python3、mysql、win10
3. 技术核心
这个小系统呢,主要用了两个第三方库,一是 pymysql ,python连接mysql的第三方库,很好用哦~ 二是 matplotlib ,python绘制数学图形的强大的第三方库,也是很好用!
想要运行我的代码,你可必须要有这两个库哦
4. 数据库
数据表的设计是这样滴:

样例数据:

其中info字段为日期的拼接字符串,多次的日期中间用英文逗号隔开
对啦,假如你要运行我的代码,关于数据库要做以下操作嗷:
1.创建相关数据库以及表
在你的数据库中创建一个名字为healthy的数据库,名字为stu的数据表,按设计图创建
2.修改代码中数据库的连接账号密码
这个捏,是在源代码中第一个函数getConnection()中的第一行哟,相信聪明的你一定一眼能看出来!
千呼万唤始出来,下面就是源代码了!(当 当当当 当当当当...Music~)
5. 源代码
# -*- coding: utf-8 -*-···
'''
健康报备统计
By 熊子q
'''
import os
import time
import pymysql
import matplotlib.pyplot as plt
def getConnection():
'''获取mysql连接对象'''
connection = pymysql.connect(host='localhost',user='root',password='12369',database='healthy')
return connection
def closeConnection(connection):
'''关闭mysql连接对象'''
connection.close()
def exist(name):
'''
判断该学生是否在数据库中
'''
connection = getConnection()
cursor = connection.cursor()
sql1 = "select count(*) from stu where name=%s"
cursor.execute(sql1, (name,))
res = cursor.fetchone()
closeConnection(connection)
if res[0] == 0:
return False
else:
return True
def add(name):
'''
添加一名未报备的同学到数据库
'''
connection = getConnection()
cursor = connection.cursor()
# 获取今天日期
t = time.localtime(time.time())
tday = str(t.tm_mon)+'.'+str(t.tm_mday)
if exist(name):
# 已经在数据库中,则次数加一,信息加一
# 查询已有数据
cursor.execute("select cnt,info from stu where name=%s",(name,))
res = cursor.fetchone()
cnt = str(int(res[0])+1)
info = res[1]+','+tday
print(cnt,info)
# 更新数据
try:
cursor.execute("update stu set cnt=%s , info=%s where name=%s", (cnt, info, name,))
connection.commit()
print("添加成功!")
except:
connection.rollback()
else:
# 未在数据库中,添加记录
try:
cursor.execute("insert into stu (name, cnt, info) values(%s, %s, %s)",(name, '1', tday,))
connection.commit()
print("添加成功!")
except:
connection.rollback()
closeConnection(connection)
def show():
'''
输出数据库中按次数降序排列的前十名同学信息
'''
connection = getConnection()
cursor = connection.cursor()
cursor.execute("select * from stu order by cnt desc limit 10")
res = cursor.fetchall()
tplt = "{0:{3}^6}\t{1:{3}^6}\t{2:^6}"
print(tplt.format("姓名", "未报备次数", "详细日期", chr(12288)))
for lst in res:
# print(f'{lst[1]:>6}{lst[2]:>10}{lst[3]:>10}')
print(tplt.format(lst[1], lst[2], lst[3], chr(12288)))
closeConnection(connection)
def getAll():
'''
获取所有学生信息
'''
connection = getConnection()
cursor = connection.cursor()
cursor.execute("select * from stu")
res = cursor.fetchall()
ret = [[], []]
for t in res:
ret[0].append(t[1])
ret[1].append(t[2])
closeConnection(connection)
return ret
def showPic():
'''将数据以折线图的形式展示'''
ret = getAll()
x = ret[0]
y = ret[1]
plt.xticks(rotation=50)
plt.rcParams['font.sans-serif'] = ['Simhei']
plt.plot(x, y, 'rp-', marker='o', markersize=5)
plt.title('未报备人员统计图')
plt.xlabel('姓名')
plt.ylabel('未报备次数')
plt.show()
def menu():
'''
主菜单函数
'''
print('''
__ __ ____ __
/ / / /__ ____ _/ / /_/ /_ __ __
/ /_/ / _ \/ __ `/ / __/ __ \/ / / /
/ __ / __/ /_/ / / /_/ / / / /_/ /
/_/ /_/\___/\__,_/_/\__/_/ /_/\__, /
/____/
''',end='')
print("欢迎使用报备记录系统")
print("1.添加今日未报备人员")
print("2.查看未报备人员前10信息")
print("3.查看所有未报备人员信息(折线图)")
print("4.退出这个小系统")
choice = input()
if choice == "1":
print("请输入姓名(回车换行,Over结束):")
while(1):
name = input()
if(name=="Over"):
break
else:
add(name)
os.system("cls")
menu()
elif choice=="2":
print("信息表格(输入任意值返回主菜单):")
show()
c = input()
if c:
os.system("cls")
menu()
elif choice == "3":
showPic()
elif choice=="4":
os.system("exit()")
if __name__ == "__main__":
menu()
三、最后
感谢各位大大的耐心阅读~
创作不易,少侠请留步哇!人说,萍水相逢,你我遇见皆是缘分,不如点个赞再走呗。◕ᴗ◕。
【熊子q的代码乐园】用python写个健康报备记录小系统的更多相关文章
- 用 Python 写个消消乐小游戏
提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Python 来做个简单的消消乐小游戏. 很多人学习python,不 ...
- python写的第一个简单小游戏-猜数字
#Filename:game1.py guess=10 running=True while running: try: answer=int(raw_input('Guess what i thin ...
- 第一次用python 写的简单爬虫 记录在自己的博客
#python.py from bs4 import BeautifulSoup import urllib.request from MySqlite import MySqlite global ...
- 用python写了一个猜年龄小游戏
写一个猜年龄游戏: 需要实现用户登录的功能 初始用户登录信息为 {'hades': '13579','nick': '123','ruixing': 'a1','fanping': 'b2'} 登录时 ...
- 初学python写个自娱自乐的小游戏
一.摘要 当编写完后的代码执行第一次后达到了目标的预期效果,内心有些许满足,但是当突发情况产生后,程序便不能正常运行,于是准备从简单的版本开始出发,综合考虑使用者的需求,和使用过程中会遇到的问题,一步 ...
- 《编写高质量代码:改善Python程序的91个建议》读后感
编写高质量代码:改善Python程序的91个建议 http://book.douban.com/subject/25910544/ 1.(建议16)is 用于判断两个对象的id是否相等,==才是判断 ...
- 使用2to3将代码移植到Python 3-转
http://m.blog.csdn.net/blog/merryken/9104199# ❝ Life is pleasant. Death is peaceful. It’s the transi ...
- dedecms列表页调用子栏目列表,织梦首页调用栏目的子栏目标签代码
dedecms列表页调用子栏目列表,织梦首页调用栏目的子栏目标签代码. dedecms列表页调用子栏目列表标签: {dede:channelartlist type='sun' }<a href ...
- 在 C 代码中嵌入 Python 语句或使用 Python 模块 (Visual Studio 2013 环境设置)
1) 新建一个 内嵌 Python 语句的 C 代码, // This is a test for check insert the Python statements or module in C. ...
- 【转】利用Boost.Python将C++代码封装为Python模块
用Boost.Python将C++代码封装为Python模块 一. 基础篇 借助Boost.Python库可以将C/C++代码方便.快捷地移植到python模块当中,实现对python模块的扩 ...
随机推荐
- DVWA-Brute Force(暴力破解)
暴力破解漏洞,没有对登录框做登录限制,攻击者可以不断的尝试暴力枚举用户名和密码 LOW 审计源码 <?php // 通过GET请求获取Login传参, // isset判断一个变量是否已设置,判 ...
- Java (强/弱/软/虚)引用
一.整体架构
- AlphaFold2中的残基刚体表示
技术背景 在前面的这一篇博客中,比较全面的介绍了组成蛋白质的各种氨基酸的三维结构.由于每个氨基酸大小不一,在传统的蛋白质折叠预测的方案中,一般会考虑全原子方案或者是粗粒化方案.对于全原子方案而言,即时 ...
- 解决vue中滚轮事件报错 Added non-passive event listener to a scroll-blocking 'mousewheel' event.告警
参考:https://www.jianshu.com/p/23850d4cade8 参考:让页面滑动流畅得飞起的新特性:Passive Event Listeners
- 解决el-checked-group中v-medel绑定的是一个数组对象方法(不用修改源码)
思路:弃用el-checked-group使用el-checked模拟 <!DOCTYPE html> <html> <head> <meta charset ...
- axios和后端交互时,参数需要写在body和query中同时写
axios.post('/api/xxx',{ // post body },{ params: { // query } }) demo: let params = { _id:this.alarm ...
- 迁移学习(NRC)《Exploiting the Intrinsic Neighborhood Structure for Source-free Domain Adaptation》
论文信息 论文标题:Exploiting the Intrinsic Neighborhood Structure for Source-free Domain Adaptation论文作者:Shiq ...
- ggplot2图形可视化应用集锦
数据可视化就是将我们从数据中探索的信息与图形要素对应起来的过程.数据可视化,先要理解数据,再去掌握可视化的方法,这样才能实现高效的数据可视化.数据可视化技术的基本思想,是将数据库中每一个数据项作为单个 ...
- 如何做到API文档规范化
定义一个好的 API 文档是优秀研发人员的标准配置,在执行接口测试之前,测试人员一定会先拿到开发给予的接口文档. 测试人员可以根据这个文档编写接口测试用例,优秀的文档可以区分好的用户体验和坏的用户体验 ...
- 三天吃透Redis八股文
Redis连环40问,绝对够全! Redis是什么? Redis(Remote Dictionary Server)是一个使用 C 语言编写的,高性能非关系型的键值对数据库.与传统数据库不同的是,Re ...