Student-information-management-system
本專案是一個學生資訊管理系統,這個專案是用Python語言實作的,也實作了圖形化界面的顯示,同時也實作了管理員端,學生端兩個登陸入口,同時底層使用的是Redis做的資料持久化,
This project is a student information management system, this project is implemented in Python language, but also to achieve the graphical interface display, but also to achieve the administrator side, the student side of the two login entrance, at the same time the bottom using Redis to do data persistence.
Python學生資訊管理系統圖形化界面-老師端-學生端專案實作
一,本專案簡介
1.1 專案的功能介紹:
本專案是一個有關學生資訊管理系統的專案,專案實作語言:Python,相關的功能:
- 常見的學生資訊的增刪改查操作,
- 當查詢單個學生的資訊時可以在界面上顯示學生的一寸免冠照,
- 可以區分期中,期末的成績,
- 后臺使用的是Redis資料庫
- 實作了教師端登陸,學生端登錄雙頁面,
- 可以進行用戶密碼的修改
1.2 專案涉及到的技術點:
- Python語言實作相關的邏輯
- tkinter頁面設計,圖片處理等相關的Python庫
- Python對接Redis資料庫實作資料的相關操作
二,專案結構,環境及展示
2.1 專案結構
當前專案
- img(存盤相關圖片資源的目錄)
- InitData.py(為資料庫初始化學生資料使用,用于做實驗)
- Main.py(運行專案的入口檔案)
- LoginPage.py(實作老師,學生登錄的功能實作檔案)
- StudentManager.py(老師端功能實作頁面)
- StudentOnly.py(學生端功能實作頁面)
2.2 專案環境
2.2.1 Python環境
我使用的是 Anaconda 的本地繼承環境,內置 Python3.6.5的版本
C:\Users\云夢歸遙>python -V
Python 3.6.5 :: Anaconda, Inc.
2.2.2 相關的Python庫
- tkinter
- redis
- json
- pillow
2.2.3 資料持久化實作-Redis資料庫

-
官網下載,傻瓜式安裝即可
-
如果有需要還可以下載一個Redis的可視化工具,就是你可以切實的,直觀的看到和管理資料庫,以及相關的資料的一個圖形化界面工具
2.3 專案展示
2.3.1 登錄頁面

2.3.2 老師(管理員)頁面

2.3.3 學生端頁面

三,專案各個部分細節
3.1 首先是 InitDada.py,
這個檔案為我們做簡單的實驗演示提供了一些初始化的資料,當運行此檔案就會對接到Redis資料庫,然后我們就可以真正的運行我們的專案了
import redis
import json
db2 = redis.Redis(host='127.0.0.1', port=6379, db=3, decode_responses=True)
db1 = redis.Redis(host='127.0.0.1', port=6379, db=2, decode_responses=True)
db0 = redis.Redis(host='127.0.0.1', port=6379, db=1, decode_responses=True)
db2.hset('student', '201512101111', json.dumps(
{'schoolnumber': '201512101111', 'name': '楊小穎', 'chinese': 89,
'math': 84, 'english': 85, 'total': 258}))
db0.hset('student', '201512101111', json.dumps(
{'schoolnumber': '201512101111', 'name': '楊小穎', 'chinese': 79,
'math': 74, 'english': 75, 'total': 228}))
db1.set('201512101111', '123456')
db2.hset('student', '201623202222', json.dumps(
{'schoolnumber': '201623202222', 'name': '劉小菲', 'chinese': 75,
'math': 70, 'english': 96, 'total': 241}))
db0.hset('student', '201623202222', json.dumps(
{'schoolnumber': '201623202222', 'name': '劉小菲', 'chinese': 65,
'math': 60, 'english': 86, 'total': 211}))
db1.set('201623202222', '123456')
db2.hset('student', '201734303333', json.dumps(
{'schoolnumber': '201734303333', 'name': '關小彤', 'chinese': 100,
'math': 100, 'english': 100, 'total': 300}))
db0.hset('student', '201734303333', json.dumps(
{'schoolnumber': '201734303333', 'name': '關小彤', 'chinese': 90,
'math': 90, 'english': 90, 'total': 270}))
db1.set('201734303333', '123456')
db2.hset('student', '201845404444', json.dumps(
{'schoolnumber': '201845404444', 'name': '華小宇', 'chinese': 60,
'math': 60, 'english': 60, 'total': 180}))
db0.hset('student', '201845404444', json.dumps(
{'schoolnumber': '201845404444', 'name': '華小宇', 'chinese': 50,
'math': 50, 'english': 50, 'total': 150}))
db1.set('201845404444', '123456')
這樣我們的專案就會既初始化了學生的個人資訊,也初始化了用戶名,密碼等內容,這樣就可以正常的進行登陸,以及查詢,修改學生資訊了,
3.2 準備相關的素材圖片,為我們展示學生的個人一寸免冠照提供準備

3.3 接下來就可以愉快的運行我們的完整專案了
3.3.1 Main.py(專案入口檔案)
import tkinter as tk
from LoginPage import LoginPage
root = tk.Tk()
root.title('學生資訊管理系統')
LoginPage(root)
root.mainloop()
這個檔案主要是作為一個參考檔案,起到一個參考登錄頁面的功能,這樣直接暴露在外部的細節就會更少,也看起來更加的簡潔,美觀
3.3.2 LoginPage.py(實際的登錄頁面)
import tkinter as tk
import tkinter.messagebox
from StudentManager import StudentManager
from StudentOnly import Studentonly
import redis
import json
class LoginPage(object):
def __init__(self, master=None):
self.root = master
self.root.geometry('%dx%d+%d+%d' % (300, 180, 600, 200))
self.username = tk.StringVar()
self.password = tk.StringVar()
self.page = tk.Frame(self.root)
self.page.pack()
self.create_page()
def create_page(self):
tk.Label(self.page).grid(row=0, stick=tk.W)
tk.Label(self.page, text='賬戶: ').grid(row=1, stick=tk.W, pady=10)
tk.Entry(self.page, textvariable=self.username).grid(row=1, column=1, stick=tk.E)
tk.Label(self.page, text='密碼: ').grid(row=2, stick=tk.W, pady=10)
tk.Entry(self.page, textvariable=self.password, show='*').grid(row=2, column=1, stick=tk.E)
tk.Button(self.page, text='登陸', command=self.login_check).grid(row=3, stick=tk.W, pady=10)
tk.Button(self.page, text='退出', command=self.page.quit).grid(row=3, column=1, stick=tk.E)
def login_check(self):
name = self.username.get()
secret = self.password.get()
db2 = redis.Redis(host='127.0.0.1', port=6379, db=2, decode_responses=True)
if name == 'root' and secret == '123456':
self.page.destroy()
StudentManager(self.root)
elif name in db2.keys():
mi = db2.get(name)
for key in db2.keys():
if name == key and secret == mi:
self.page.destroy()
Studentonly(self.root, name)
else:
tkinter.messagebox.showinfo(title='錯誤', message='賬號或密碼錯誤!')
if __name__ == '__main__':
root = tk.Tk()
LoginPage(root)
root.mainloop()
這個是登錄頁面的邏輯實作
-
我將老師端簡單的設定用戶名為root(因為使用Linux系統習慣了,你們也可以叫admin,什么的)
-
密碼的話就簡單的設定了一個“123456”
-
學生端的登錄的話就是直接訪問資料庫,進行用戶名和密碼的校驗
-
如果用戶名或密碼有誤,就會彈出對應的提示內容

-
若果校驗成功,就會依照用戶名分別進入管理員端和學生端,然后進行相關的操作
3.3.3 StudentManager.py 和 StudentOnly.py (這兩個檔案主要是分別實作管理員端的邏輯和學生端的邏輯,因為代碼內容實在太多,這里就不以展示了,
四.我已經將整個專案開源到GitHub上
-
因為作為一名程式員,學習了這么多的開源技術,當然也要取之于開源,用之于開源,
-
希望大家可以多多支持,當爺爺支持大家對我的專案進行不斷的修正和補充,增加更多新的功能,然后繼續push到GitHub上,不斷地進行修正,讓它成為一個更加優秀的專案
GitHub專案鏈接:
- https://github.com/liuyunfei1/Student-information-management-system.git
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/379481.html
標籤:python
