一、前言

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写个健康报备记录小系统的更多相关文章

  1. 用 Python 写个消消乐小游戏

    提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Python 来做个简单的消消乐小游戏. 很多人学习python,不 ...

  2. python写的第一个简单小游戏-猜数字

    #Filename:game1.py guess=10 running=True while running: try: answer=int(raw_input('Guess what i thin ...

  3. 第一次用python 写的简单爬虫 记录在自己的博客

    #python.py from bs4 import BeautifulSoup import urllib.request from MySqlite import MySqlite global ...

  4. 用python写了一个猜年龄小游戏

    写一个猜年龄游戏: 需要实现用户登录的功能 初始用户登录信息为 {'hades': '13579','nick': '123','ruixing': 'a1','fanping': 'b2'} 登录时 ...

  5. 初学python写个自娱自乐的小游戏

    一.摘要 当编写完后的代码执行第一次后达到了目标的预期效果,内心有些许满足,但是当突发情况产生后,程序便不能正常运行,于是准备从简单的版本开始出发,综合考虑使用者的需求,和使用过程中会遇到的问题,一步 ...

  6. 《编写高质量代码:改善Python程序的91个建议》读后感

    编写高质量代码:改善Python程序的91个建议  http://book.douban.com/subject/25910544/ 1.(建议16)is 用于判断两个对象的id是否相等,==才是判断 ...

  7. 使用2to3将代码移植到Python 3-转

    http://m.blog.csdn.net/blog/merryken/9104199# ❝ Life is pleasant. Death is peaceful. It’s the transi ...

  8. dedecms列表页调用子栏目列表,织梦首页调用栏目的子栏目标签代码

    dedecms列表页调用子栏目列表,织梦首页调用栏目的子栏目标签代码. dedecms列表页调用子栏目列表标签: {dede:channelartlist type='sun' }<a href ...

  9. 在 C 代码中嵌入 Python 语句或使用 Python 模块 (Visual Studio 2013 环境设置)

    1) 新建一个 内嵌 Python 语句的 C 代码, // This is a test for check insert the Python statements or module in C. ...

  10. 【转】利用Boost.Python将C++代码封装为Python模块

    用Boost.Python将C++代码封装为Python模块 一.     基础篇 借助Boost.Python库可以将C/C++代码方便.快捷地移植到python模块当中,实现对python模块的扩 ...

随机推荐

  1. Centos7.9中使用Docker安装云崽机器人

    Centos7.9中使用Docker安装云崽机器人 前面我写了如何普通版搭建云崽教程,今天我们来使用docker来安装,感谢docker镜像源作者:如青桑(QQ: 1666633887) 普通版教程: ...

  2. TSDB - VictoriaMetrics 技术原理浅析

    版权说明: 本文章版权归本人及博客园共同所有,转载请在文章前标明原文出处( https://www.cnblogs.com/mikevictor07/p/17258452.html ),以下内容为个人 ...

  3. OWASP TOP 10 2021

    OWASP TOP 10 2021 2021 年的 TOP 10 中有 3 个新类别.4 个更改了名称和范围的类别以及一些合并. A01. 失效的访问控制 Broken Access Control ...

  4. Goalng:基础复习一遍过

    Go(又称Golang)是Google开发的一种静态强类型.编译型.并发型,并具有垃圾回收功能的编程语言. 剖析 Hello world 新建文件 main.go 写入以下内容: package ma ...

  5. day03-搭建微服务基础环境02

    搭建微服务基础环境02 3.创建使用会员微服务模块-service consumer 3.1需求分析 浏览器向service consumer请求某个数据,service consumer会去向ser ...

  6. 【CTF】关于 .init .fini .init_array .fini_array 日志 2019.7.16 pwn

    查找资料的高效性 retn 返回到栈顶地址 关于 .init .fini .init_array .fini_array 其中存放着的是在main函数执行前执行的代码,由__libc_start_ma ...

  7. [架构]辨析: 高可用 | 集群 | 主从 | 负载均衡 | 反向代理 | 中间件 | 微服务 | 容器 | 云原生 | DevOps | ...

    词汇集 灾备 冷备份 双机热备份 异地容灾备份 云备份 灾难演练 磁盘阵列(RAID) 故障切换 心跳监测 高可用 集群 主从复制(Master-Slave) 多集群横向扩容(master-clust ...

  8. LeeCode 字符串问题(一)

    剑指Offer 05: 替换空格 题目描述 请实现一个函数,把字符串 s 中的每个空格替换成"%20" 建立模型 这就是一个遍历字符串元素替换的问题 需要注意的就是Python/J ...

  9. C# System.lnvalidOperationException:"A second operation started on this context before a previousoperation completed. This is usually caused by different threads using the same instance ofDbContext...

    与上一篇问题一样,只是错误不一样,DbContext 不支持并发请求,每个数据库操作都使用await就可以了

  10. 【SpringCloud】(三)Hystrix 与 Zuul

    5 Hystrix Hystrix:一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖会不可避免得调用失败,比如超时.异常等,Hystrix能保证在一个依赖出问题的情况下,不会导致整 ...