基于Python實(shí)現(xiàn)簡單的學(xué)生點(diǎn)名系統(tǒng)
今年教師節(jié)前夕,我特意用Python做了個學(xué)生點(diǎn)名系統(tǒng),非常好用,送給各科老師、輔導(dǎo)員當(dāng)節(jié)日禮物,老師們都喜滋滋,說平常逃課就原諒我了,我心想,這次畢業(yè)應(yīng)該不是問題了~
本文背景
根據(jù)我的調(diào)查,現(xiàn)在的學(xué)生大部分都很積極,會主動舉手回答問題。但是,也會遇到一些不好的情況,比如年級越高主動舉手的人越少,有些班級舉手的通常都是少部分積極的學(xué)生,有部分學(xué)生從來不舉手。
所以我做了一個一個隨機(jī)的學(xué)生點(diǎn)名系統(tǒng)可以幫老師解決這些問題。
隨機(jī)點(diǎn)名會從全班學(xué)生中隨機(jī)點(diǎn)一個學(xué)生,這樣所有人都有機(jī)會回答問題,促進(jìn)教育公平。
點(diǎn)名系統(tǒng)有幾秒鐘滾動的時間,會增加學(xué)生的緊張感,讓開小差的學(xué)生也趕緊集中精神,起到一點(diǎn)督促學(xué)習(xí)的作用。
如果真的沒有學(xué)生舉手,老師也不用為難,點(diǎn)名系統(tǒng)可以作為老師的“殺手锏”。
實(shí)際情況中可以一部分時間靠學(xué)生主動,一部分時間用點(diǎn)名系統(tǒng),靈活使用。
效果展示
本文用Python實(shí)現(xiàn)了一個非常好用的學(xué)生點(diǎn)名系統(tǒng),文末名片提供打包好的系統(tǒng)下載方式。先看一下效果:

實(shí)現(xiàn)方式
1、讀取excel表格
openpyxl是Python中用于讀寫excel文件非常方便的庫,pip install openpyxl安裝即可使用。
本文用openpyxl來讀取excel中的所有學(xué)生姓名。
def get_students_name():
# 學(xué)生名單中需要有"姓名"列
workbook = openpyxl.load_workbook('學(xué)生名單.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、搭建系統(tǒng)界面
tkinter是Python中GUI編程非常好用的庫,而且是標(biāo)準(zhǔn)庫,不需要安裝,導(dǎo)入即可使用。
本文用tkinter搭建學(xué)生點(diǎn)名系統(tǒng)的界面,并在界面上實(shí)現(xiàn)點(diǎn)名按鈕和顯示點(diǎn)名結(jié)果。
if __name__ == '__main__':
window = tk.Tk()
window.geometry('600x400+400+180')
window.title('\t 第一屆LOL點(diǎn)名系統(tǒng)')
# 添加背景圖片
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)
# 添加點(diǎn)名按鈕
button_png = tk.PhotoImage(file='button.png')
button = Button(window, text='點(diǎn) 名', 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、隨機(jī)選擇學(xué)生
random庫是Python中用于實(shí)現(xiàn)隨機(jī)功能的庫,也是Python的標(biāo)準(zhǔn)庫,不需要安裝,導(dǎo)入即可使用。
本文用random從學(xué)生名單中隨機(jī)選擇一個姓名,結(jié)合time模塊設(shè)置延時,實(shí)現(xiàn)點(diǎn)名按鈕的業(yè)務(wù)邏輯函數(shù)。
def call_lucky_student(var):
"""點(diǎn)名"""
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可執(zhí)行文件的庫,pip install pyinstaller安裝即可使用。
本文用pyinstaller將點(diǎn)名系統(tǒng)的代碼打包成exe文件,這樣系統(tǒng)可以發(fā)給老師使用,不懂編程也沒關(guān)系。
使用說明
使用說明:
1.下載本系統(tǒng)后,解壓文件,將整個文件夾保存到電腦中(建議不要放在桌面)。
2.打開學(xué)生名單excel表格,將學(xué)生姓名和學(xué)號輸入表格中,保存。(刪除本文的虛擬名單)
3.找到student.exe ,右鍵創(chuàng)建一個桌面快捷方式。
4.在桌面雙擊打開點(diǎn)名系統(tǒng),即可正常使用。
到此這篇關(guān)于基于Python實(shí)現(xiàn)簡單的學(xué)生點(diǎn)名系統(tǒng)的文章就介紹到這了,更多相關(guān)Python學(xué)生點(diǎn)名系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 基于Python編寫一個點(diǎn)名器的示例代碼
- Python寫一個簡單上課點(diǎn)名系統(tǒng)(附源碼)
- python實(shí)戰(zhàn)練習(xí)做一個隨機(jī)點(diǎn)名的程序
- Python實(shí)現(xiàn)上課點(diǎn)名器系統(tǒng)
- 一起用Python做個上課點(diǎn)名器的制作過程
- python用tkinter實(shí)現(xiàn)一個簡易能進(jìn)行隨機(jī)點(diǎn)名的界面
- 基于python tkinter的點(diǎn)名小程序功能的實(shí)例代碼
- python寫一個隨機(jī)點(diǎn)名軟件的實(shí)例
- Python輕松寫個課堂隨機(jī)點(diǎn)名系統(tǒng)
相關(guān)文章
Python中BeautifulSoup通過查找Id獲取元素信息
這篇文章主要介紹了Python中BeautifulSoup通過查找Id獲取元素信息,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Python如何根據(jù)頁碼處理PDF文件的內(nèi)容
在Python中,fitz庫可以用于多種任務(wù),如打開PDF文件、遍歷頁面、添加注釋、提取文本、旋轉(zhuǎn)頁面等,此外,它還可以用于在PDF頁面上添加高亮注釋、提取圖像等操作,這篇文章主要介紹了Python根據(jù)頁碼處理PDF文件的內(nèi)容,需要的朋友可以參考下2024-06-06
淺談django框架集成swagger以及自定義參數(shù)問題
這篇文章主要介紹了淺談django框架集成swagger以及自定義參數(shù)問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
pandas中concat函數(shù)實(shí)現(xiàn)橫向連接
在pandas中,concat函數(shù)可用于合并不同的Series和DataFrame對象,本文主要介紹了pandas中concat函數(shù)實(shí)現(xiàn)橫向連接,具有一定的參考價值,感興趣的可以了解一下2024-04-04
tensorflow 恢復(fù)指定層與不同層指定不同學(xué)習(xí)率的方法
今天小編就為大家分享一篇tensorflow 恢復(fù)指定層與不同層指定不同學(xué)習(xí)率的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
Python實(shí)現(xiàn)aes加密解密多種方法解析
這篇文章主要介紹了Python實(shí)現(xiàn)aes加密解密多種方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05
pycharm配置Anaconda虛擬環(huán)境全過程
這篇文章主要介紹了pycharm配置Anaconda虛擬環(huán)境全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01

