手把手教你做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次嘗試機(jī)會) 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 # 只在還有嘗試機(jī)會時顯示提示 if i < 2: print(f"密碼錯誤,您還有{2 - i}次機(jī)會") 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é)生信息
五、運(yùn)行代碼
全部運(yùn)行代碼放在這里:
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次嘗試機(jī)會) 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 # 只在還有嘗試機(jī)會時顯示提示 if i < 2: print(f"密碼錯誤,您還有{2 - i}次機(jī)會") 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)并運(yùn)行 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-02Python+Selenium+Webdriver實現(xiàn)自動執(zhí)行微軟獎勵積分腳本
這篇文章主要為大家詳細(xì)介紹了如何利用Python+Selenium+Webdriver實現(xiàn)自動執(zhí)行微軟獎勵積分腳本,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-02-02Python3標(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