手把手教你做python學(xué)生管理系統(tǒng)
學(xué)生管理系統(tǒng)主要分為以下三個(gè)大類:
一、用戶類(User):
屬性:用戶名(username)、密碼(password)
功能:注冊(cè)(register)、登錄(login)
(1)注冊(cè):
1、判斷用戶名是否已經(jīng)被注冊(cè)過(guò)
2、注冊(cè)成功
3、是否需要繼續(xù)追加注冊(cè)用戶
def register(self): # 新用戶注冊(cè) while True: username = input("請(qǐng)輸入用戶名:") if username in self.users_database: print(f"用戶名{username}已存在,請(qǐng)重新輸入!") continue password = input('請(qǐng)輸入密碼:') self.users_database[username] = password print(f"用戶{username}注冊(cè)成功!") choice = input('是否繼續(xù)注冊(cè)用戶?(y/n): ').lower() if choice != 'y': break
(2)登錄:
1、用戶名未注冊(cè)
2、登錄成功
3、三次輸入用戶名和密碼錯(cuò)誤,登錄失敗
def login(self): # 登錄驗(yàn)證(檢查注冊(cè)狀態(tài)+3次嘗試機(jī)會(huì)) for i in range(3): # 0, 1, 2 username = input("請(qǐng)輸入用戶名:") # 先檢查用戶是否注冊(cè) if username not in self.users_database: print(f"用戶名 {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é)生類(Student):
屬性:學(xué)生信息(學(xué)號(hào)、姓名、性別、年齡、地址、電話)
三、學(xué)生管理類(StudentManagerSystem):
屬性:學(xué)生信息
方法:增加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息、查詢單個(gè)學(xué)生信息、查詢所有學(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)輸入地址:") # 電話改為字符串,避免以0開頭的號(hào)碼問(wèn)題 tel = input("請(qǐng)輸入電話:") 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: 電話 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("新的電話:") # 如果學(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("新的電話:") elif choice == '8': return else: print("無(wú)效選擇!") return print("修改成功!") except ValueError: print("輸入數(shù)據(jù)有誤!")
(4)查詢單個(gè)學(xué)生信息
按學(xué)號(hào)進(jìn)行篩選索引
def find_student_by_sid(self): if not self.students: print("當(dāng)前無(wú)任何學(xué)生信息!") return # 查詢單個(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)查詢所有學(xué)生信息
def list_all_students(self): if not self.students: print("當(dāng)前無(wú)任何學(xué)生信息!") return # 查詢所有學(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、查詢單個(gè)學(xué)生信息
6、查詢多個(gè)學(xué)生信息
五、運(yùn)行代碼
全部運(yùn)行代碼放在這里:
class User: def __init__(self, username=None, password=None): self.users_database = {} # 類級(jí)別的用戶數(shù)據(jù)庫(kù) self.username = username self.password = password self.logged_in = False def register(self): # 新用戶注冊(cè) while True: username = input("請(qǐng)輸入用戶名:") if username in self.users_database: print(f"用戶名{username}已存在,請(qǐng)重新輸入!") continue password = input('請(qǐng)輸入密碼:') self.users_database[username] = password print(f"用戶{username}注冊(cè)成功!") choice = input('是否繼續(xù)注冊(cè)用戶?(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)輸入用戶名:") # 先檢查用戶是否注冊(cè) if username not in self.users_database: print(f"用戶名 {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): # 用戶系統(tǒng)主界面 while True: print("\n================== 用戶系統(tǒng) ==================") choice = input("請(qǐng)選擇:1、注冊(cè) 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("無(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},電話:{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)輸入地址:") # 電話改為字符串,避免以0開頭的號(hào)碼問(wèn)題 tel = input("請(qǐng)輸入電話:") 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: 電話 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("新的電話:") # 如果學(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("新的電話:") 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 # 查詢單個(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 # 查詢所有學(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è)查詢") print("5: 全部查詢") 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)建用戶系統(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)容請(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-02Python+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-02Pandas之缺失數(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-01Python3標(biāo)準(zhǔn)庫(kù)之functools管理函數(shù)的工具詳解
functools模塊提供的主要工具就是partial類,可以用來(lái)“包裝”一個(gè)有默認(rèn)參數(shù)的callable對(duì)象。這篇文章主要介紹了Python3標(biāo)準(zhǔn)庫(kù)functools管理函數(shù)的工具的實(shí)例詳解,需要的朋友可以參考下2020-02-02Django和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