实验要求:
-
以网工18名单为例,从外部文件导入学生信息,并将学生信息存入MySQL数据库,随机对班级所有同学进行点名;
-
判断未到学生是否有请假条,有则视为请假,无则视为旷课。
-
对点名结束后进入教室的学生将旷课改为迟到。
-
对中途离开课堂学生计为早退(需要考虑学生既是迟到又是早退的情况)。
-
将未到学生按照请假、旷课、迟到、早退四类分别存储在MySQL数据库中的四个表中。
-
从MySQL数据中读取请假、旷课、迟到、早退四类信息并分别展示。
首先导入xlrd包,pandas包,random包,pymysql包。
定义函数student,输入读取Excel文件地址,从Excel文件读取学号和姓名,返回全体学生学号和姓名列表。
定义函数num:输入想要点名人数,返回点名人数。为了输入格式的完整。
定义函数dianming:输入函数student返回的列表学号,姓名,人数,进行随机点名,返回随机学号,姓名列表。
定义函数zaotui:输入列表学号,姓名,判断是否早退,返回早退学号,姓名列表。用
于后面函数的调用。
定义函数puanduan1:输入函数dianming返回的学号,姓名,判断是否来了,返回点名期间早退和没来学号,姓名列表。里面调用函数zaotui函数用来返回没来的学号和姓名列表。
定义函数panduan2:输入列表学号,姓名, 向缺勤表和迟到表里插入数据 ,返回早退学号列表,用于判断点名期间没有请假条的人。里面也有函数zaotui用来返回早退的学号和姓名列表。
定义函数qingjia:输入函数puanduan1返回没来的列表学号,判断是否有请假条,有就将信息插入请假表中,没有就调用函数panduan2向缺勤表和迟到表里插入数据,返回点名期间没来并且早退学号,姓名列表。
定义函数data:输入学号,姓名列表和插入的sql语句,利用该函数将信息一个一个插入相应的表中。
主函数只要与数据库建立连接,建立四个空表,再调用相关函数即可。迟到表是在主函数中建立,并且主函数用try来捕捉异常,最后断开连接。
注:数据库的主机:localhost用户名:root密码:root数据库名:my01端口:3306
方案图:在我上一个博客里,大家可以看一下!

以下为各表数据:


随机点名器

- 随机点名器
data = xlrd.open_workbook(r’D:li.xlsx’)先导入xlrd包,可以从Excel中读取数据,data代表该文件。
-
table =data.sheet_by_name(‘Sheet1’)读取Excel中页码为‘Sheet1’的内容。
-
rowNum = table.nrows 读取总行数
colNum =table.ncols 读取总列数
table.cell_value(x,y) 读取表x行y列的值 -
random.sample(a, num) 从a中随机抽取num个元素。
-
break,continue的使用;
-
pymysql.connect(host=‘localhost’,user=‘root’,password=‘root’,database=‘my01’,port=3306)用于连接数据库的。
-
cur = con.cursor() 用于创建游标对象
-
cur.execute(table, sql) 用于对数据库命令的执行,table为表,sql为要执行的sql语句
-
con.commit() 提交事务
-
con.rollback() 将游标返回前面
-
con.close() 关闭与数据库的连接,节省资源
-
try语句捕获异常。
【1】
https://www.cnblogs.com/ilovepython/p/11068841.html 如何用xlrd包
【2】
https://www.shsxt.com/down/8468.htm
第214~220集如何安装mysql和学习如何创建,插入表中数据。
全部原创
本人自学Python,学习时间不长,所以写的代码有很多地方可以优化,请不吝赐教,欢迎在讨论区一起学习。