亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

手把手教你做python學(xué)生管理系統(tǒng)

 更新時間:2025年04月26日 09:28:48   作者:程丞Q香  
這篇文章主要介紹了python學(xué)生管理系統(tǒng)的相關(guān)資料,分為用戶類、學(xué)生類和學(xué)生管理類,用戶類負(fù)責(zé)用戶注冊和登錄,學(xué)生類存儲學(xué)生信息,學(xué)生管理類提供增加、刪除、修改和查詢學(xué)生信息的功能,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

學(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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python實現(xiàn)PDF與SVG互轉(zhuǎn)

    使用Python實現(xiàn)PDF與SVG互轉(zhuǎn)

    SVG(可縮放矢量圖形)和PDF(便攜式文檔格式)是兩種常見且廣泛使用的文件格式,本文將詳細(xì)介紹如何使用?Python?實現(xiàn)?SVG?和?PDF?之間的相互轉(zhuǎn)換,感興趣的可以了解下
    2025-02-02
  • 淺談DataFrame和SparkSql取值誤區(qū)

    淺談DataFrame和SparkSql取值誤區(qū)

    今天小編就為大家分享一篇淺談DataFrame和SparkSql取值誤區(qū),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python+Selenium+Webdriver實現(xiàn)自動執(zhí)行微軟獎勵積分腳本

    Python+Selenium+Webdriver實現(xiàn)自動執(zhí)行微軟獎勵積分腳本

    這篇文章主要為大家詳細(xì)介紹了如何利用Python+Selenium+Webdriver實現(xiàn)自動執(zhí)行微軟獎勵積分腳本,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-02-02
  • 淺談Python中的作用域規(guī)則和閉包

    淺談Python中的作用域規(guī)則和閉包

    本文簡單講解了PYTHON的閉包,作用域的基本知識配合實例簡單明了,適合初學(xué)者
    2018-03-03
  • Pandas之缺失數(shù)據(jù)的實現(xiàn)

    Pandas之缺失數(shù)據(jù)的實現(xiàn)

    這篇文章主要介紹了Pandas之缺失數(shù)據(jù)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python3標(biāo)準(zhǔn)庫之functools管理函數(shù)的工具詳解

    Python3標(biāo)準(zhǔn)庫之functools管理函數(shù)的工具詳解

    functools模塊提供的主要工具就是partial類,可以用來“包裝”一個有默認(rèn)參數(shù)的callable對象。這篇文章主要介紹了Python3標(biāo)準(zhǔn)庫functools管理函數(shù)的工具的實例詳解,需要的朋友可以參考下
    2020-02-02
  • 基于pandas向csv添加新的行和列

    基于pandas向csv添加新的行和列

    這篇文章主要介紹了基于pandas向csv添加新的行和列,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Django和Ueditor自定義存儲上傳文件的文件名

    Django和Ueditor自定義存儲上傳文件的文件名

    這篇文章主要介紹了Django和Ueditor自定義存儲上傳文件的文件名,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 關(guān)于pymysql模塊的使用以及代碼詳解

    關(guān)于pymysql模塊的使用以及代碼詳解

    在本篇文章里小編給大家整理的是關(guān)于關(guān)于pymysql模塊的使用以及代碼詳解,有興趣的朋友們學(xué)習(xí)下。
    2019-09-09
  • 詳解Python如何根據(jù)給定模型計算權(quán)值

    詳解Python如何根據(jù)給定模型計算權(quán)值

    這篇文章將通過一個簡單的例子,為大家展示Python如何根據(jù)給定的模型結(jié)構(gòu)來計算和提取權(quán)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11

最新評論