溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

實(shí)現(xiàn)Python面向?qū)ο蟀鎸W(xué)員管理系統(tǒng)的示例

發(fā)布時(shí)間:2021-02-25 11:02:24 來(lái)源:億速云 閱讀:346 作者:清風(fēng) 欄目:編程語(yǔ)言

這篇“實(shí)現(xiàn)Python面向?qū)ο蟀鎸W(xué)員管理系統(tǒng)的示例”除了程序員外大部分人都不太理解,今天小編為了讓大家更加理解“實(shí)現(xiàn)Python面向?qū)ο蟀鎸W(xué)員管理系統(tǒng)的示例”,給大家總結(jié)了以下內(nèi)容,具有一定借鑒價(jià)值,內(nèi)容詳細(xì)步驟清晰,細(xì)節(jié)處理妥當(dāng),希望大家通過(guò)這篇文章有所收獲,下面讓我們一起來(lái)看看具體內(nèi)容吧。

python可以做什么

Python是一種編程語(yǔ)言,內(nèi)置了許多有效的工具,Python幾乎無(wú)所不能,該語(yǔ)言通俗易懂、容易入門(mén)、功能強(qiáng)大,在許多領(lǐng)域中都有廣泛的應(yīng)用,例如最熱門(mén)的大數(shù)據(jù)分析,人工智能,Web開(kāi)發(fā)等。


一. 系統(tǒng)需求

使用面向?qū)ο缶幊趟枷胪瓿蓪W(xué)員管理系統(tǒng)的開(kāi)發(fā),具體如下:

  • 系統(tǒng)要求:學(xué)員數(shù)據(jù)存儲(chǔ)在文件中

  • 系統(tǒng)功能:添加學(xué)員、刪除學(xué)員、修改學(xué)員信息、查詢學(xué)員信息、顯示所有學(xué)員信息、保存學(xué)員信息及退出系統(tǒng)等功能。

二. 準(zhǔn)備程序文件

2.1 分析

  • 角色分析

    • 學(xué)員

    • 管理系統(tǒng)

工作中注意事項(xiàng)

  1. 為了方便維護(hù)代碼,一般一個(gè)角色一個(gè)程序文件;

  2. 項(xiàng)目要有主程序入口,習(xí)慣為main.py

2.2 創(chuàng)建程序文件

創(chuàng)建項(xiàng)目目錄,例如:StudentManagerSystem

程序文件如下:

  • 程序入口文件:main.py

  • 學(xué)員文件:student.py

  • 管理系統(tǒng)文件:managerSystem.py

三. 書(shū)寫(xiě)程序

3.1 student.py

需求:

  • 學(xué)員信息包含:姓名、性別、手機(jī)號(hào);

  • 添加__str__魔法方法,方便查看學(xué)員對(duì)象信息

3.1.2 程序代碼

class Student(object):
    def __init__(self, name, gender, tel):
        self.name = name
        self.gender = gender
        self.tel = tel    def __str__(self):
        return f'{self.name}, {self.gender}, {self.tel}'

3.2 managerSystem.py

需求:

  • 存儲(chǔ)數(shù)據(jù)的位置:文件(student.data)

    • 加載文件數(shù)據(jù)

    • 修改數(shù)據(jù)后保存到文件

  • 存儲(chǔ)數(shù)據(jù)的形式:列表存儲(chǔ)學(xué)員對(duì)象

  • 系統(tǒng)功能

    • 添加學(xué)員

    • 刪除學(xué)員

    • 修改學(xué)員

    • 查詢學(xué)員信息

    • 顯示所有學(xué)員信息

    • 保存學(xué)員信息

    • 退出系統(tǒng)

3.2.1 定義類(lèi)

class StudentManager(object):
    def __init__(self):
        # 存儲(chǔ)數(shù)據(jù)所用的列表
        self.student_list = []

3.2.2 管理系統(tǒng)框架

需求:系統(tǒng)功能循環(huán)使用,用戶輸入不同的功能序號(hào)執(zhí)行不同的功能。

  • 步驟

    • 加載數(shù)據(jù)

    • 顯示功能菜單

    • 用戶輸入功能序號(hào)

    • 根據(jù)用戶輸入的功能序號(hào)執(zhí)行不同的功能

    • 定義程序入口函數(shù)

    • 定義系統(tǒng)功能函數(shù),添加、刪除學(xué)員等

class StudentManager(object):
    def __init__(self):
        # 存儲(chǔ)數(shù)據(jù)所用的列表
        self.student_list = []

    # 一. 程序入口函數(shù),啟動(dòng)程序后執(zhí)行的函數(shù)
    def run(self):
        # 1. 加載學(xué)員信息
        self.load_student()

        while True:
            # 2. 顯示功能菜單
            self.show_menu()

            # 3. 用戶輸入功能序號(hào)
            menu_num = int(input('請(qǐng)輸入您需要的功能序號(hào):'))

            # 4 根據(jù)用戶輸入的功能序號(hào)執(zhí)行不同的功能
            if menu_num == 1:
                # 添加學(xué)員
                self.add_student()
            elif menu_num == 2:
                # 刪除學(xué)員
                self.del_student()
            elif menu_num == 3:
                # 修改學(xué)員信息
                self.modify_student()
            elif menu_num == 4:
                # 查詢學(xué)員信息
                self.search_student()
            elif menu_num == 5:
                # 顯示所有學(xué)員信息
                self.show_student()
            elif menu_num == 6:
                # 保存學(xué)員信息
                self.save_student()
            elif menu_num == 7:
                # 退出系統(tǒng)
                break

    # 二. 定義功能函數(shù)
    # 2.1 顯示功能菜單
    @staticmethod
    def show_menu():
        print('請(qǐng)選擇如下功能-----------------')
        print('1:添加學(xué)員')
        print('2:刪除學(xué)員')
        print('3:修改學(xué)員信息')
        print('4:查詢學(xué)員信息')
        print('5:顯示所有學(xué)員信息')
        print('6:保存學(xué)員信息')
        print('7:退出系統(tǒng)')

    # 2.2 添加學(xué)員
    def add_student(self):
        pass

    # 2.3 刪除學(xué)員
    def del_student(self):
        pass

    # 2.4 修改學(xué)員信息
    def modify_student(self):
        pass

    # 2.5 查詢學(xué)員信息
    def search_student(self):
        pass

    # 2.6 顯示所有學(xué)員信息
    def show_student(self):
        pass

    # 2.7 保存學(xué)員信息
    def save_student(self):
        pass

    # 2.8 加載學(xué)員信息
    def load_student(self):
        pass

3.3 main.py

# 1. 導(dǎo)入managerSystem模塊from managerSystem import *# 2. 啟動(dòng)學(xué)員管理系統(tǒng)if __name__ == '__main__':
    student_manager = StudentManager()

    student_manager.run()

3.4 定義系統(tǒng)功能函數(shù)

3.4.1 添加功能

  • 需求:用戶輸入學(xué)員姓名、性別、手機(jī)號(hào),將學(xué)員添加到系統(tǒng)。

  • 步驟

    • 用戶輸入姓名、性別、手機(jī)號(hào)

    • 創(chuàng)建該學(xué)員對(duì)象

    • 將該學(xué)員對(duì)象添加到列表

  • 代碼

# 添加學(xué)員函數(shù)內(nèi)部需要?jiǎng)?chuàng)建學(xué)員對(duì)象,故先導(dǎo)入student模塊from student import *class StudentManager(object):
		......
    
    # 2.2 添加學(xué)員
    def add_student(self):
        # 1. 用戶輸入姓名、性別、手機(jī)號(hào)
        name = input('請(qǐng)輸入您的姓名:')
        gender = input('請(qǐng)輸入您的性別:')
        tel = input('請(qǐng)輸入您的手機(jī)號(hào):')

        # 2. 創(chuàng)建學(xué)員對(duì)象:先導(dǎo)入學(xué)員模塊,再創(chuàng)建對(duì)象
        student = Student(name, gender, tel)

        # 3. 將該學(xué)員對(duì)象添加到列表
        self.student_list.append(student)
        
        # 打印信息
        print(self.student_list)
        print(student)

3.4.2 刪除學(xué)員

  • 需求:用戶輸入目標(biāo)學(xué)員姓名,如果學(xué)員存在則刪除該學(xué)員。

  • 步驟

    • 用戶輸入目標(biāo)學(xué)員姓名

    • 遍歷學(xué)員數(shù)據(jù)列表,如果用戶輸入的學(xué)員姓名存在則刪除,否則則提示該學(xué)員不存在。

  • 代碼

    # 2.3 刪除學(xué)員:刪除指定姓名的學(xué)員
    def del_student(self):
        # 1. 用戶輸入目標(biāo)學(xué)員姓名
        del_name = input('請(qǐng)輸入要?jiǎng)h除的學(xué)員姓名:')
        
        # 2. 如果用戶輸入的目標(biāo)學(xué)員存在則刪除,否則提示學(xué)員不存在
        for i in self.student_list:
            if i.name == del_name:
                self.student_list.remove(i)
                break
        else:
            print('查無(wú)此人!')

        # 打印學(xué)員列表,驗(yàn)證刪除功能
        print(self.student_list)

3.4.3 修改學(xué)員信息

  • 需求:用戶輸入目標(biāo)學(xué)員姓名,如果學(xué)員存在則修改該學(xué)員信息。

  • 步驟

    • 用戶輸入目標(biāo)學(xué)員姓名;

    • 遍歷學(xué)員數(shù)據(jù)列表,如果用戶輸入的學(xué)員姓名存在則修改學(xué)員的姓名、性別、手機(jī)號(hào)數(shù)據(jù),否則則提示該學(xué)員不存在。

  • 代碼

    # 2.4 修改學(xué)員信息
    def modify_student(self):
        # 1. 用戶輸入目標(biāo)學(xué)員姓名
        modify_name = input('請(qǐng)輸入要修改的學(xué)員的姓名:')
        # 2. 如果用戶輸入的目標(biāo)學(xué)員存在則修改姓名、性別、手機(jī)號(hào)等數(shù)據(jù),否則提示學(xué)員不存在
        for i in self.student_list:
            if i.name == modify_name:
                i.name = input('請(qǐng)輸入學(xué)員姓名:')
                i.gender = input('請(qǐng)輸入學(xué)員性別:')
                i.tel = input('請(qǐng)輸入學(xué)員手機(jī)號(hào):')
                print(f'修改該學(xué)員信息成功,姓名{i.name},性別{i.gender}, 手機(jī)號(hào){i.tel}')
                break
        else:
            print('查無(wú)此人!')

3.4.5 查詢學(xué)員信息

  • 需求:用戶輸入目標(biāo)學(xué)員姓名,如果學(xué)員存在則打印該學(xué)員信息

  • 步驟

    • 用戶輸入目標(biāo)學(xué)員姓名

    • 遍歷學(xué)員數(shù)據(jù)列表,如果用戶輸入的學(xué)員姓名存在則打印學(xué)員信息,否則提示該學(xué)員不存在。

  • 代碼

    # 2.5 查詢學(xué)員信息
    def search_student(self):
        # 1. 用戶輸入目標(biāo)學(xué)員姓名
        search_name = input('請(qǐng)輸入要查詢的學(xué)員的姓名:')

        # 2. 如果用戶輸入的目標(biāo)學(xué)員存在,則打印學(xué)員信息,否則提示學(xué)員不存在
        for i in self.student_list:
            if i.name == search_name:
                print(f'姓名{i.name},性別{i.gender}, 手機(jī)號(hào){i.tel}')
                break
        else:
            print('查無(wú)此人!')

3.4.6 顯示所有學(xué)員信息

  • 打印所有學(xué)員信息

  • 步驟

    • 遍歷學(xué)員數(shù)據(jù)列表,打印所有學(xué)員信息

  • 代碼

    # 2.6 顯示所有學(xué)員信息
    def show_student(self):
        print('姓名\t性別\t手機(jī)號(hào)')
        for i in self.student_list:
            print(f'{i.name}\t{i.gender}\t{i.tel}')

3.4.7 保存學(xué)員信息

  • 需求:將修改后的學(xué)員數(shù)據(jù)保存到存儲(chǔ)數(shù)據(jù)的文件。

  • 步驟

    • 打開(kāi)文件

    • 文件寫(xiě)入數(shù)據(jù)

    • 關(guān)閉文件

思考

  1. 文件寫(xiě)入的數(shù)據(jù)是學(xué)員對(duì)象的內(nèi)存地址嗎?

  2. 文件內(nèi)數(shù)據(jù)要求的數(shù)據(jù)類(lèi)型是什么?

  • 拓展__dict__

class A(object):
    a = 0

    def __init__(self):
        self.b = 1aa = A()# 返回類(lèi)內(nèi)部所有屬性和方法對(duì)應(yīng)的字典print(A.__dict__)# 返回實(shí)例屬性和值組成的字典print(aa.__dict__)

在Python中

  • 代碼

    # 2.7 保存學(xué)員信息
    def save_student(self):
        # 1. 打開(kāi)文件
        f = open('student.data', 'w')

        # 2. 文件寫(xiě)入學(xué)員數(shù)據(jù)
        # 注意1:文件寫(xiě)入的數(shù)據(jù)不能是學(xué)員對(duì)象的內(nèi)存地址,需要把學(xué)員數(shù)據(jù)轉(zhuǎn)換成列表字典數(shù)據(jù)再做存儲(chǔ)
        new_list = [i.__dict__ for i in self.student_list]
        # [{'name': 'aa', 'gender': 'nv', 'tel': '111'}]
        print(new_list)

        # 注意2:文件內(nèi)數(shù)據(jù)要求為字符串類(lèi)型,故需要先轉(zhuǎn)換數(shù)據(jù)類(lèi)型為字符串才能文件寫(xiě)入數(shù)據(jù)
        f.write(str(new_list))

        # 3. 關(guān)閉文件
        f.close()

3.4.8 加載學(xué)員信息

  • 需求:每次進(jìn)入系統(tǒng)后,修改的數(shù)據(jù)是文件里面的數(shù)據(jù)

  • 步驟

    • 讀取數(shù)據(jù)

    • 轉(zhuǎn)換數(shù)據(jù)類(lèi)型為列表并轉(zhuǎn)換列表內(nèi)的字典為對(duì)象

    • 存儲(chǔ)學(xué)員數(shù)據(jù)到學(xué)員列表

    • 嘗試以"r"模式打開(kāi)學(xué)員數(shù)據(jù)文件,如果文件不存在則以"w"模式打開(kāi)文件

    • 如果文件存在則讀取數(shù)據(jù)并存儲(chǔ)數(shù)據(jù)

    • 關(guān)閉文件

  • 代碼

    # 2.8 加載學(xué)員信息
    def load_student(self):
        # 嘗試以"r"模式打開(kāi)數(shù)據(jù)文件,文件不存在則提示用戶;文件存在(沒(méi)有異常)則讀取數(shù)據(jù)
        try:
            f = open('student.data', 'r')
        except:
            f = open('student.data', 'w')
        else:
            # 1. 讀取數(shù)據(jù)
            data = f.read()

            # 2. 文件中讀取的數(shù)據(jù)都是字符串且字符串內(nèi)部為字典數(shù)據(jù),故需要轉(zhuǎn)換數(shù)據(jù)類(lèi)型再轉(zhuǎn)換字典為對(duì)象后存儲(chǔ)到學(xué)員列表
            new_list = eval(data)
            self.student_list = [Student(i['name'], i['gender'], i['tel']) for i in new_list]
        finally:
            # 3. 關(guān)閉文件
            f.close()

四. 總結(jié)

  • 函數(shù)

    • 定義和調(diào)用

    • 參數(shù)的使用

  • 面向?qū)ο?/p>

    • 定義類(lèi)

    • 創(chuàng)建對(duì)象

    • 定義和調(diào)用實(shí)例屬性

    • 定義和調(diào)用實(shí)例方法

  • 數(shù)據(jù)類(lèi)型

    • 增加刪除數(shù)據(jù)

    • 列表推導(dǎo)式

    • 列表

    • 字典

    • 字符串

  • 文件操作

    • 打開(kāi)文件

    • 讀取或?qū)懭?/p>

    • 關(guān)閉文件

感謝你的閱讀,希望你對(duì)“實(shí)現(xiàn)Python面向?qū)ο蟀鎸W(xué)員管理系統(tǒng)的示例”這一關(guān)鍵問(wèn)題有了一定的理解,具體使用情況還需要大家自己動(dòng)手實(shí)驗(yàn)使用過(guò)才能領(lǐng)會(huì),快去試試吧,如果想閱讀更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI