欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

相關(guān)文章

  • 使用Python實(shí)現(xiàn)PDF與SVG互轉(zhuǎ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
  • 淺談DataFrame和SparkSql取值誤區(qū)

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

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

    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
  • 淺談Python中的作用域規(guī)則和閉包

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

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

    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ù)的工具詳解

    Python3標(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-02
  • 基于pandas向csv添加新的行和列

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

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

    Django和Ueditor自定義存儲(chǔ)上傳文件的文件名

    這篇文章主要介紹了Django和Ueditor自定義存儲(chǔ)上傳文件的文件名,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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ù)給定模型計(jì)算權(quán)值

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

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

最新評(píng)論