手把手教你做python學(xué)生管理系統(tǒng)
學(xué)生管理系統(tǒng)主要分為以下三個大類:
一、用戶類(User):
屬性:用戶名(username)、密碼(password)
功能:注冊(register)、登錄(login)
(1)注冊:
1、判斷用戶名是否已經(jīng)被注冊過
2、注冊成功
3、是否需要繼續(xù)追加注冊用戶
def register(self):
# 新用戶注冊
while True:
username = input("請輸入用戶名:")
if username in self.users_database:
print(f"用戶名{username}已存在,請重新輸入!")
continue
password = input('請輸入密碼:')
self.users_database[username] = password
print(f"用戶{username}注冊成功!")
choice = input('是否繼續(xù)注冊用戶?(y/n): ').lower()
if choice != 'y':
break(2)登錄:
1、用戶名未注冊
2、登錄成功
3、三次輸入用戶名和密碼錯誤,登錄失敗
def login(self):
# 登錄驗證(檢查注冊狀態(tài)+3次嘗試機會)
for i in range(3): # 0, 1, 2
username = input("請輸入用戶名:")
# 先檢查用戶是否注冊
if username not in self.users_database:
print(f"用戶名 {username} 未注冊,請先注冊!")
return False
password = input("請輸入密碼:")
if self.users_database[username] == password:
self.username = username
self.password = password
self.logged_in = True
print("登錄成功!")
return True
# 只在還有嘗試機會時顯示提示
if i < 2:
print(f"密碼錯誤,您還有{2 - i}次機會")
else: # 3次嘗試都失敗
print("您已連續(xù)3次輸入錯誤,請重新登錄!")
return False
二、學(xué)生類(Student):
屬性:學(xué)生信息(學(xué)號、姓名、性別、年齡、地址、電話)
三、學(xué)生管理類(StudentManagerSystem):
屬性:學(xué)生信息
方法:增加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息、查詢單個學(xué)生信息、查詢所有學(xué)生信息、退出系統(tǒng)
(1)增加學(xué)生信息
按學(xué)號進(jìn)行篩選索引
def add_student(self):
# 增加學(xué)生信息
sid = input("請輸入學(xué)生學(xué)號:")
if sid in self.students:
print("該學(xué)號已存在!")
return
sname = input("請輸入學(xué)生姓名:")
ssex = input("請輸入學(xué)生性別:")
try:
sage = int(input("請輸入學(xué)生年齡:"))
address = input("請輸入地址:")
# 電話改為字符串,避免以0開頭的號碼問題
tel = input("請輸入電話:")
self.students[sid] = Student(sid, sname, ssex, sage, address, tel)
print("添加成功!")
except ValueError:
print("年齡必須為數(shù)字!")(2)刪除學(xué)生信息
按學(xué)號進(jìn)行篩選索引
def delete_student(self):
if not self.students:
print("當(dāng)前無任何學(xué)生信息!")
return
# 刪除學(xué)生信息
sid = input("請輸入要刪除的學(xué)生學(xué)號:")
if sid in self.students:
del self.students[sid]
print("刪除成功!")
else:
print("未找到該學(xué)號的學(xué)生!")(3)修改學(xué)生信息
1、按學(xué)號進(jìn)行篩選索引
2、選擇修改的項可以為單項或全部
def modify_student(self):
if not self.students:
print("當(dāng)前無任何學(xué)生信息!")
return
# 修改學(xué)生信息
sid = input("請輸入要修改的學(xué)生學(xué)號:")
if sid not in self.students:
print("未找到該學(xué)號的學(xué)生!")
return
student = self.students[sid]
student.display_info()
print("\n請選擇要修改的項:")
print("1: 學(xué)號 2: 姓名 3: 性別 4: 年齡 5: 地址 6: 電話 7: 全部 8:退出")
try:
choice = input("請輸入選擇(1-8): ")
if choice == '7':
new_sid = input("新的學(xué)號:")
new_sname = input("新的名字:")
new_ssex = input("新的性別:")
new_sage = int(input("新的年齡:"))
new_address = input("新的地址:")
new_tel = input("新的電話:")
# 如果學(xué)號改變,需要先刪除舊的再添加新的
if new_sid != sid:
del self.students[sid]
self.students[new_sid] = Student(new_sid, new_sname, new_ssex,
new_sage, new_address, new_tel)
else:
# 學(xué)號沒變,直接修改對象屬性
student.sname = new_sname
student.ssex = new_ssex
student.sage = new_sage
student.address = new_address
student.tel = new_tel
else:
if choice == '1':
new_sid = input("新的學(xué)號:")
if new_sid != sid:
self.students[new_sid] = self.students.pop(sid)
self.students[new_sid].sid = new_sid
elif choice == '2':
student.sname = input("新的名字:")
elif choice == '3':
student.ssex = input("新的性別:")
elif choice == '4':
student.sage = int(input("新的年齡:"))
elif choice == '5':
student.address = input("新的地址:")
elif choice == '6':
student.tel = input("新的電話:")
elif choice == '8':
return
else:
print("無效選擇!")
return
print("修改成功!")
except ValueError:
print("輸入數(shù)據(jù)有誤!")(4)查詢單個學(xué)生信息
按學(xué)號進(jìn)行篩選索引
def find_student_by_sid(self):
if not self.students:
print("當(dāng)前無任何學(xué)生信息!")
return
# 查詢單個學(xué)生信息
sid = input("請輸入學(xué)生學(xué)號:")
if sid in self.students:
self.students[sid].display_info()
else:
print("未找到該學(xué)號的學(xué)生!")(5)查詢所有學(xué)生信息
def list_all_students(self):
if not self.students:
print("當(dāng)前無任何學(xué)生信息!")
return
# 查詢所有學(xué)生信息
print("\n================== 所有學(xué)生信息 ==================")
for sid, student in self.students.items():
student.display_info()
print("="*50)(6)退出系統(tǒng)
四、測試
1、注冊

2、登錄

3、添加學(xué)生信息

4、修改學(xué)生信息


5、查詢單個學(xué)生信息

6、查詢多個學(xué)生信息

五、運行代碼
全部運行代碼放在這里:
class User:
def __init__(self, username=None, password=None):
self.users_database = {} # 類級別的用戶數(shù)據(jù)庫
self.username = username
self.password = password
self.logged_in = False
def register(self):
# 新用戶注冊
while True:
username = input("請輸入用戶名:")
if username in self.users_database:
print(f"用戶名{username}已存在,請重新輸入!")
continue
password = input('請輸入密碼:')
self.users_database[username] = password
print(f"用戶{username}注冊成功!")
choice = input('是否繼續(xù)注冊用戶?(y/n): ').lower()
if choice != 'y':
break
def login(self):
# 登錄驗證(檢查注冊狀態(tài)+3次嘗試機會)
for i in range(3): # 0, 1, 2
username = input("請輸入用戶名:")
# 先檢查用戶是否注冊
if username not in self.users_database:
print(f"用戶名 {username} 未注冊,請先注冊!")
return False
password = input("請輸入密碼:")
if self.users_database[username] == password:
self.username = username
self.password = password
self.logged_in = True
print("登錄成功!")
return True
# 只在還有嘗試機會時顯示提示
if i < 2:
print(f"密碼錯誤,您還有{2 - i}次機會")
else: # 3次嘗試都失敗
print("您已連續(xù)3次輸入錯誤,請重新登錄!")
return False
def run(self):
# 用戶系統(tǒng)主界面
while True:
print("\n================== 用戶系統(tǒng) ==================")
choice = input("請選擇:1、注冊 2、登錄 3、退出")
if choice == '1':
self.register()
elif choice == '2':
if self.login():
# 登錄成功后退出用戶系統(tǒng)
return
elif choice == '3':
print("退出用戶系統(tǒng)!")
exit()
else:
print("無效選擇,請重新輸入!")
class Student:
def __init__(self, sid, sname, ssex, sage, address, tel):
self.sid = sid
self.sname = sname
self.ssex = ssex
self.sage = sage
self.address = address
self.tel = tel
def display_info(self):
# 顯示學(xué)生信息
print(f"學(xué)號:{self.sid},姓名:{self.sname},性別:{self.ssex},"
f"年齡:{self.sage},地址:{self.address},電話:{self.tel}")
class StudentManagerSystem:
def __init__(self):
self.students = {} # 用字典存儲學(xué)生對象,鍵為學(xué)號
def add_student(self):
# 增加學(xué)生信息
sid = input("請輸入學(xué)生學(xué)號:")
if sid in self.students:
print("該學(xué)號已存在!")
return
sname = input("請輸入學(xué)生姓名:")
ssex = input("請輸入學(xué)生性別:")
try:
sage = int(input("請輸入學(xué)生年齡:"))
address = input("請輸入地址:")
# 電話改為字符串,避免以0開頭的號碼問題
tel = input("請輸入電話:")
self.students[sid] = Student(sid, sname, ssex, sage, address, tel)
print("添加成功!")
except ValueError:
print("年齡必須為數(shù)字!")
def delete_student(self):
if not self.students:
print("當(dāng)前無任何學(xué)生信息!")
return
# 刪除學(xué)生信息
sid = input("請輸入要刪除的學(xué)生學(xué)號:")
if sid in self.students:
del self.students[sid]
print("刪除成功!")
else:
print("未找到該學(xué)號的學(xué)生!")
def modify_student(self):
if not self.students:
print("當(dāng)前無任何學(xué)生信息!")
return
# 修改學(xué)生信息
sid = input("請輸入要修改的學(xué)生學(xué)號:")
if sid not in self.students:
print("未找到該學(xué)號的學(xué)生!")
return
student = self.students[sid]
student.display_info()
print("\n請選擇要修改的項:")
print("1: 學(xué)號 2: 姓名 3: 性別 4: 年齡 5: 地址 6: 電話 7: 全部 8:退出")
try:
choice = input("請輸入選擇(1-8): ")
if choice == '7':
new_sid = input("新的學(xué)號:")
new_sname = input("新的名字:")
new_ssex = input("新的性別:")
new_sage = int(input("新的年齡:"))
new_address = input("新的地址:")
new_tel = input("新的電話:")
# 如果學(xué)號改變,需要先刪除舊的再添加新的
if new_sid != sid:
del self.students[sid]
self.students[new_sid] = Student(new_sid, new_sname, new_ssex,
new_sage, new_address, new_tel)
else:
# 學(xué)號沒變,直接修改對象屬性
student.sname = new_sname
student.ssex = new_ssex
student.sage = new_sage
student.address = new_address
student.tel = new_tel
else:
if choice == '1':
new_sid = input("新的學(xué)號:")
if new_sid != sid:
self.students[new_sid] = self.students.pop(sid)
self.students[new_sid].sid = new_sid
elif choice == '2':
student.sname = input("新的名字:")
elif choice == '3':
student.ssex = input("新的性別:")
elif choice == '4':
student.sage = int(input("新的年齡:"))
elif choice == '5':
student.address = input("新的地址:")
elif choice == '6':
student.tel = input("新的電話:")
elif choice == '8':
return
else:
print("無效選擇!")
return
print("修改成功!")
except ValueError:
print("輸入數(shù)據(jù)有誤!")
def find_student_by_sid(self):
if not self.students:
print("當(dāng)前無任何學(xué)生信息!")
return
# 查詢單個學(xué)生信息
sid = input("請輸入學(xué)生學(xué)號:")
if sid in self.students:
self.students[sid].display_info()
else:
print("未找到該學(xué)號的學(xué)生!")
def list_all_students(self):
if not self.students:
print("當(dāng)前無任何學(xué)生信息!")
return
# 查詢所有學(xué)生信息
print("\n================== 所有學(xué)生信息 ==================")
for sid, student in self.students.items():
student.display_info()
print("="*50)
def run(self):
"""學(xué)生管理系統(tǒng)主界面"""
while True:
print("\n================== 學(xué)生管理系統(tǒng) ==================")
print("1: 添加學(xué)生")
print("2: 刪除學(xué)生")
print("3: 修改學(xué)生")
print("4: 單個查詢")
print("5: 全部查詢")
print("6: 退出系統(tǒng)")
choice = input("請輸入您的選擇(1-6): ")
if choice == '1':
self.add_student()
elif choice == '2':
self.delete_student()
elif choice == '3':
self.modify_student()
elif choice == '4':
self.find_student_by_sid()
elif choice == '5':
self.list_all_students()
elif choice == '6':
print("退出學(xué)生管理系統(tǒng)!")
break
else:
print("無效選擇,請重新輸入!")
if __name__ == '__main__':
# 創(chuàng)建用戶系統(tǒng)并運行
user_system = User()
user_system.run()
# 用戶登錄成功后,進(jìn)入學(xué)生管理系統(tǒng)
student_manager = StudentManagerSystem()
student_manager.run()總結(jié)
到此這篇關(guān)于python學(xué)生管理系統(tǒng)的文章就介紹到這了,更多相關(guān)python學(xué)生管理系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python版學(xué)生管理系統(tǒng)
- python實現(xiàn)學(xué)生管理系統(tǒng)
- python學(xué)生管理系統(tǒng)代碼實現(xiàn)
- 基于python實現(xiàn)學(xué)生管理系統(tǒng)
- 詳解用python實現(xiàn)基本的學(xué)生管理系統(tǒng)(文件存儲版)(python3)
- 用python實現(xiàn)學(xué)生管理系統(tǒng)
- 基于Python實現(xiàn)簡單學(xué)生管理系統(tǒng)
- Python實現(xiàn)學(xué)生管理系統(tǒng)的完整代碼(面向?qū)ο?
- python實現(xiàn)學(xué)生管理系統(tǒng)源碼
- Python實現(xiàn)學(xué)生管理系統(tǒng)(面向?qū)ο蟀?
相關(guān)文章
使用Python實現(xiàn)PDF與SVG互轉(zhuǎn)
SVG(可縮放矢量圖形)和PDF(便攜式文檔格式)是兩種常見且廣泛使用的文件格式,本文將詳細(xì)介紹如何使用?Python?實現(xiàn)?SVG?和?PDF?之間的相互轉(zhuǎn)換,感興趣的可以了解下2025-02-02
Python+Selenium+Webdriver實現(xiàn)自動執(zhí)行微軟獎勵積分腳本
這篇文章主要為大家詳細(xì)介紹了如何利用Python+Selenium+Webdriver實現(xiàn)自動執(zhí)行微軟獎勵積分腳本,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-02-02
Python3標(biāo)準(zhǔn)庫之functools管理函數(shù)的工具詳解
functools模塊提供的主要工具就是partial類,可以用來“包裝”一個有默認(rèn)參數(shù)的callable對象。這篇文章主要介紹了Python3標(biāo)準(zhǔn)庫functools管理函數(shù)的工具的實例詳解,需要的朋友可以參考下2020-02-02
詳解Python如何根據(jù)給定模型計算權(quán)值
這篇文章將通過一個簡單的例子,為大家展示Python如何根據(jù)給定的模型結(jié)構(gòu)來計算和提取權(quán)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-11-11

