最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

相關(guān)文章

  • python基于plotly實(shí)現(xiàn)畫(huà)餅狀圖代碼實(shí)例

    python基于plotly實(shí)現(xiàn)畫(huà)餅狀圖代碼實(shí)例

    這篇文章主要介紹了python基于plotly實(shí)現(xiàn)畫(huà)餅狀圖代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python使用subprocess模塊檢測(cè)Linux用戶(hù)是否存在

    Python使用subprocess模塊檢測(cè)Linux用戶(hù)是否存在

    本文介紹了使用Python的subprocess模塊檢測(cè)和創(chuàng)建Unix系統(tǒng)用戶(hù)的方法,通過(guò)調(diào)用id命令判斷用戶(hù)是否存在,若不存在則使用adduser命令創(chuàng)建用戶(hù),適用于Ubuntu/Debian系統(tǒng),感興趣的小伙伴可以了解下
    2026-01-01
  • Python通過(guò)websocket與js客戶(hù)端通信示例分析

    Python通過(guò)websocket與js客戶(hù)端通信示例分析

    網(wǎng)站大多使用 HTTP 協(xié)議通信,而 HTTP 是無(wú)連接的協(xié)議。只有客戶(hù)端請(qǐng)求時(shí),服務(wù)器端才能發(fā)出相應(yīng)的應(yīng)答, HTTP 請(qǐng)求的包也比較大,如果只是很小的數(shù)據(jù)通信,開(kāi)銷(xiāo)過(guò)大。于是,我們可以使用 websocket 這個(gè)協(xié)議,用最小的開(kāi)銷(xiāo)實(shí)現(xiàn)面向連接的通信。
    2014-06-06
  • 詳解Python中迭代器和生成器的原理與使用

    詳解Python中迭代器和生成器的原理與使用

    關(guān)于python中迭代器,生成器介紹的文章不算少數(shù),有些寫(xiě)的也很透徹,但是更多的是碎片化的內(nèi)容。本篇嘗試用系統(tǒng)的介紹三者的概念和關(guān)系,需要的可以參考一下
    2022-05-05
  • Python高效地進(jìn)行字符串操作的技巧分享

    Python高效地進(jìn)行字符串操作的技巧分享

    Python 提供了強(qiáng)大的字符串操作功能,涵蓋從基本的拼接、查找到正則表達(dá)式的復(fù)雜操作,掌握這些字符串處理技巧,不僅能提高代碼效率,還能使開(kāi)發(fā)過(guò)程更加順暢,本文將介紹常見(jiàn)的字符串操作技巧以及如何在實(shí)際場(chǎng)景中高效應(yīng)用它們,需要的朋友可以參考下
    2025-02-02
  • Python在 FastAPI 中配置靜態(tài)文件服務(wù)的實(shí)現(xiàn)及應(yīng)用詳解

    Python在 FastAPI 中配置靜態(tài)文件服務(wù)的實(shí)現(xiàn)及應(yīng)用詳解

    隨著現(xiàn)代 Web 開(kāi)發(fā)的進(jìn)步,前端和后端的分工越來(lái)越明確,靜態(tài)文件的管理和提供已經(jīng)成為后端服務(wù)的重要組成部分,下面我們就來(lái)看看Python如何在 FastAPI 中配置靜態(tài)文件服務(wù)吧
    2025-11-11
  • Python中列表復(fù)制的常用方法解析

    Python中列表復(fù)制的常用方法解析

    在Python編程中,經(jīng)常需要對(duì)列表進(jìn)行復(fù)制或克隆操作,以便保護(hù)原始數(shù)據(jù)或創(chuàng)建獨(dú)立的副本,本文將詳細(xì)介紹如何在Python中進(jìn)行列表克隆,以及如何選擇合適的方法來(lái)保護(hù)數(shù)據(jù),希望對(duì)大家有所幫助
    2024-02-02
  • Python中裝飾器的基本功能理解

    Python中裝飾器的基本功能理解

    裝飾器本質(zhì)上是一個(gè)Python函數(shù),它可以讓其他函數(shù)在不需要做任何代碼變動(dòng)的前提下增加額外功能,下面這篇文章主要給大家介紹了關(guān)于Python中裝飾器的基本功能,需要的朋友可以參考下
    2021-10-10
  • Pytorch中關(guān)于nn.Conv2d()參數(shù)的使用

    Pytorch中關(guān)于nn.Conv2d()參數(shù)的使用

    這篇文章主要介紹了Pytorch中關(guān)于nn.Conv2d()參數(shù)的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • pandas實(shí)現(xiàn)對(duì)一列/多列進(jìn)行數(shù)據(jù)區(qū)間篩選

    pandas實(shí)現(xiàn)對(duì)一列/多列進(jìn)行數(shù)據(jù)區(qū)間篩選

    這篇文章主要介紹了pandas實(shí)現(xiàn)對(duì)一列/多列進(jìn)行數(shù)據(jù)區(qū)間篩選方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02

最新評(píng)論

沙河市| 长顺县| 张家口市| 思茅市| 深州市| 安宁市| 安福县| 安福县| 龙胜| 云安县| 宁都县| 澄迈县| 云安县| 格尔木市| 邛崃市| 安徽省| 洱源县| 泾源县| 五寨县| 浮梁县| 富顺县| 乌苏市| 阳朔县| 高阳县| 花垣县| 兖州市| 天镇县| 普安县| 南郑县| 汾西县| 喀什市| 芒康县| 武冈市| 毕节市| 方城县| 昭觉县| 南漳县| 六安市| 时尚| 南汇区| 库尔勒市|