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

2、登錄

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

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


5、查詢(xún)單個(gè)學(xué)生信息

6、查詢(xún)多個(gè)學(xué)生信息

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

