基于Python实现简单的学生点名系统

 更新时间:2022年09月13日 10:26:46   作者:轻松学Python  
现在的学生大部分都很积极,会主动举手回答问题。但是,也会遇到一些不好的情况,比如年级越高主动举手的人越少,所以本文做了一个随机的学生点名系统可以帮老师解决这些问题

今年教师节前夕,我特意用Python做了个学生点名系统,非常好用,送给各科老师、辅导员当节日礼物,老师们都喜滋滋,说平常逃课就原谅我了,我心想,这次毕业应该不是问题了~

本文背景

根据我的调查,现在的学生大部分都很积极,会主动举手回答问题。但是,也会遇到一些不好的情况,比如年级越高主动举手的人越少,有些班级举手的通常都是少部分积极的学生,有部分学生从来不举手。

所以我做了一个一个随机的学生点名系统可以帮老师解决这些问题。

随机点名会从全班学生中随机点一个学生,这样所有人都有机会回答问题,促进教育公平。

点名系统有几秒钟滚动的时间,会增加学生的紧张感,让开小差的学生也赶紧集中精神,起到一点督促学习的作用。

如果真的没有学生举手,老师也不用为难,点名系统可以作为老师的“杀手锏”。

实际情况中可以一部分时间靠学生主动,一部分时间用点名系统,灵活使用。

效果展示

本文用Python实现了一个非常好用的学生点名系统,文末名片提供打包好的系统下载方式。先看一下效果:

实现方式

1、读取excel表格

openpyxl是Python中用于读写excel文件非常方便的库,pip install openpyxl安装即可使用。

本文用openpyxl来读取excel中的所有学生姓名。

def get_students_name():
    # 学生名单中需要有"姓名"列
    workbook = openpyxl.load_workbook('学生名单.xlsx')
    table = workbook.active
    rows, cols = table.max_row, table.max_column
    name_col = 0
    for col in range(cols):
        if table.cell(1, col + 1).value == '姓名':
            name_col = col
            break
    students_name = [table.cell(row+1, name_col+1).value for row in range(1, rows)
                     if table.cell(row+1, name_col+1).value is not None]
    return students_name

2、搭建系统界面

tkinter是Python中GUI编程非常好用的库,而且是标准库,不需要安装,导入即可使用。

本文用tkinter搭建学生点名系统的界面,并在界面上实现点名按钮和显示点名结果。

if __name__ == '__main__':
    window = tk.Tk()
    window.geometry('600x400+400+180')
    window.title('\t 第一届LOL点名系统')
    # 添加背景图片
    bg_png = tk.PhotoImage(file="背景图片.png")
    bg_label = Label(window, image=bg_png)
    bg_label.pack()
    # 添加显示框
    var = StringVar(value='公平 公正 公开')
    show_label1 = Label(window, textvariable=var, justify='left', anchor=CENTER, width=16,
                        height=2, font='楷体 -40 bold', foreground='white', bg='#1C86EE')
    show_label1.place(anchor=tk.NW, x=130, y=90)
    # 添加点名按钮
    button_png = tk.PhotoImage(file='button.png')
    button = Button(window, text='点 名', compound='center', font='楷体 -30 bold',
                    foreground='#9400D3', image=button_png,
                    command=lambda: call_lucky_student(var))
    button.place(anchor=NW, x=235, y=200)
    # 显示窗口
    window.mainloop()

3、随机选择学生

random库是Python中用于实现随机功能的库,也是Python的标准库,不需要安装,导入即可使用。

本文用random从学生名单中随机选择一个姓名,结合time模块设置延时,实现点名按钮的业务逻辑函数。

def call_lucky_student(var):
    """点名"""
    global is_run
    if is_run:
        return
    is_run = True
    start = time.time()
    choice_student(var, start)


def choice_student(var, start):
    global is_run
    show_member = random.choice(get_students_name())
    name = show_member[0]
    for zi in show_member[1:]:
        name += ' ' + zi
    var.set(name)
    end = time.time()
    if is_run and end-start <= 5:
        window.after(30, choice_student, var, start)
    else:
        is_run = False
        return

4、将代码打包成exe

pyinstaller库是用于将Python程序打包成exe可执行文件的库,pip install pyinstaller安装即可使用。

本文用pyinstaller将点名系统的代码打包成exe文件,这样系统可以发给老师使用,不懂编程也没关系。

使用说明

使用说明:

1.下载本系统后,解压文件,将整个文件夹保存到电脑中(建议不要放在桌面)。

2.打开学生名单excel表格,将学生姓名和学号输入表格中,保存。(删除本文的虚拟名单)

3.找到student.exe ,右键创建一个桌面快捷方式。

4.在桌面双击打开点名系统,即可正常使用。

到此这篇关于基于Python实现简单的学生点名系统的文章就介绍到这了,更多相关Python学生点名系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中BeautifulSoup通过查找Id获取元素信息

    Python中BeautifulSoup通过查找Id获取元素信息

    这篇文章主要介绍了Python中BeautifulSoup通过查找Id获取元素信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Python中生成随机密码的常用方法小结

    Python中生成随机密码的常用方法小结

    密码是信息安全的基石,它用于保护我们的账户、数据和隐私,在本文中,将讨论多种Python方法,用于生成随机密码的实用示例和技巧,感兴趣的可以了解下
    2024-02-02
  • Python中正则表达式的用法实例汇总

    Python中正则表达式的用法实例汇总

    这篇文章主要介绍了Python中正则表达式的用法实例汇总,非常实用,需要的朋友可以参考下
    2014-08-08
  • Python如何根据页码处理PDF文件的内容

    Python如何根据页码处理PDF文件的内容

    在Python中,fitz库可以用于多种任务,如打开PDF文件、遍历页面、添加注释、提取文本、旋转页面等,此外,它还可以用于在PDF页面上添加高亮注释、提取图像等操作,这篇文章主要介绍了Python根据页码处理PDF文件的内容,需要的朋友可以参考下
    2024-06-06
  • 浅谈django框架集成swagger以及自定义参数问题

    浅谈django框架集成swagger以及自定义参数问题

    这篇文章主要介绍了浅谈django框架集成swagger以及自定义参数问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • pandas中concat函数实现横向连接

    pandas中concat函数实现横向连接

    在pandas中,concat函数可用于合并不同的Series和DataFrame对象,本文主要介绍了pandas中concat函数实现横向连接,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • tensorflow 恢复指定层与不同层指定不同学习率的方法

    tensorflow 恢复指定层与不同层指定不同学习率的方法

    今天小编就为大家分享一篇tensorflow 恢复指定层与不同层指定不同学习率的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Python实现aes加密解密多种方法解析

    Python实现aes加密解密多种方法解析

    这篇文章主要介绍了Python实现aes加密解密多种方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • pycharm配置Anaconda虚拟环境全过程

    pycharm配置Anaconda虚拟环境全过程

    这篇文章主要介绍了pycharm配置Anaconda虚拟环境全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • pytest之assert断言的具体使用

    pytest之assert断言的具体使用

    这篇文章主要介绍了pytest之assert断言的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论