python基礎入門之十八 —— 面向對象版學員管理系統

来源:https://www.cnblogs.com/LynHome/archive/2020/04/06/12650318.html
-Advertisement-
Play Games

main.py: from StudentMannager.manager import * if __name__ == '__main__': student_manager = Manager() student_manager.run() manager.py: from StudentMa ...


 

 main.py:

from StudentMannager.manager import *

if __name__ == '__main__':
    student_manager = Manager()
    student_manager.run()

manager.py:

from StudentMannager.student import *

class Manager(object):
    def __init__(self):
        self.stu_list = []

    # 一. 程式入口函數
    def run(self):
        # 1. 載入文件裡面的學員數據
        self.load_student()
        while True:
            # 2. 顯示功能菜單
            self.show_menu()
            # 3. 用戶輸入目標功能序號
            menu_num = int(input('請輸入您需要的功能序號:'))
            # 4. 根據用戶輸入的序號執行不同的功能 -- 如果用戶輸入1,執行添加
            if menu_num == 1:
                # 添加學員
                self.add_student()
            elif menu_num == 2:
                # 刪除學員
                self.del_student()
            elif menu_num == 3:
                # 修改學員信息
                self.modify_student()
            elif menu_num == 4:
                # 查詢學員信息
                self.search_student()
            elif menu_num == 5:
                # 顯示所有學員信息
                self.show_student()
            elif menu_num == 6:
                # 保存學員信息
                self.save_student()
            elif menu_num == 7:
                # 退出系統 -- 退出迴圈
                break

    # 二. 系統功能函數
    # 2.1 顯示功能菜單 -- 列印序號的功能對應關係 -- 靜態
    @staticmethod
    def show_menu():
        print('請選擇如下功能:')
        print('1:添加學員')
        print('2:刪除學員')
        print('3:修改學員信息')
        print('4:查詢學員信息')
        print('5:顯示所有學員信息')
        print('6:保存學員信息')
        print('7:退出系統')

    # 2.2 添加學員
    def add_student(self):
        name = input("name = ")
        gender = input("gender = ")
        tel = input("tel = ")
        stu = student(name,gender,tel)
        self.stu_list.append(stu)
        print('添加成功')

    # 2.3 刪除學員
    def del_student(self):
        del_name = input("del_name = ")
        for i in self.stu_list:
            if del_name == i.name:
                self.stu_list.remove(i)
                break
        else:
            print('查無此人!')
        print('刪除成功')

    # 修改學員信息
    def modify_student(self):
        modify_name = input("modify_name = ")
        for i in self.stu_list:
            if modify_name == i.name:
                i.gender = input(f'{i.name}\'s gender = ')
                i.tel = input(f'{i.name}\'s tel = ')
                print('修改成功')
                break
        else:
            print('查無此人!')

    # 查詢學員信息
    def search_student(self):
        search_name = input("search_name = ")
        for i in self.stu_list:
            if search_name == i.name:
                print(i)
                break
        else:
            print('查無此人!')

    # 顯示所有學員信息
    def show_student(self):
        print('姓名\t年齡\t電話\t')
        for i in self.stu_list:
            print(f'{i.name}\t{i.gender}\t{i.tel}')
        print('-'*20)

    # 保存學員信息
    def save_student(self):
        try:
            f = open('student.data','w')
            new_list = [i.__dict__ for i in self.stu_list]  # __dict__ 返回類內部所有的屬性和方法對應的字典
print(new_list)
            f.write(str(new_list))
            f.close()
        except Exception as result:
            print(result)

    # 載入學員信息
    def load_student(self):
        try:
            f = open('student.data','r')
        except:
            f = open('student.data', 'w')
        else:
            data = f.read()
            new_list = eval(data)  # eval() 函數用來執行一個字元串表達式,並返回表達式的值。
            self.stu_list = [student(i['name'],i['gender'],i['tel']) for i in new_list]
        finally:
            f.close()

student.py:

class student(object):
    def __init__(self,name,gender,tel):
        self.name = name
        self.gender = gender
        self.tel = tel

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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 先上效果圖: 沒有打字的功能,純屬是個界面圖(一時無聊寫的) 代碼如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>鍵盤ui </title> </head> <style type="text/css"> *{ ma ...
  • 1、在進行tp5->tp5.1的時候,沒有想太多,直接使用之前的代碼;結果在該操作中,多次調用該get方法,tp5.1的鏈式操作一直保持了之前的搜索條件,截圖如下:(具體的代碼沒有展示) 2、然後查閱了手冊,發現手冊說的很明白(嘗試了改變tp的版本,但是都沒有作用) 文檔位置:資料庫-》查詢構造器- ...
  • 本文主要記錄,使用 VBScript,如何找到 Excel 頁面中的,最後一行。 參考 VBA 中的解決方式: 很多 VBA 與 VBScript 的解決方法都是通用的,尤其是針對 Excel 的時候, 所以,我們先來看下 VBA 中,常用的3中方法: VBScript 中的解決方式: 然後,我們來 ...
  • 雖然百度大家一直在罵,但是我發現其實百度有些東西還是可以用的。現在大家都搞人工智慧了,我們Delphi也不可以落後。廢話不多說,直接上代碼 第一步,先獲取AccessToken function GetAccessToken(const client_id, client_secret: strin ...
  • 題目:合根植物 題目描述: w星球的一個種植園,被分成 m * n 個小格子(東西方向m行,南北方向n列)。每個格子里種了一株合根植物。 這種植物有個特點,它的根可能會沿著南北或東西方向伸展,從而與另一個格子的植物合成為一體。 如果我們告訴你哪些小格子間出現了連根現象,你能說出這個園中一共有多少株合 ...
  • java方法 一、Java方法 1. 方法聲明 [修飾符1 修飾符2 ...] 返回值類型 方法名(形式參數列表) { 語句... } 2. 方法調用 對象名.方法名(實際參數); 1 public class TestMethod { 2 public static void main(Strin ...
  • 恢復內容開始 1,字元編碼 ASCII 用1個字元來表示所有的英文字母和特殊符號 GB2313(GBK)用2個字元來表示英文字母及中文字元,且決定如果兩個位元組連在一起,每個位元組的128的位置都是1的話,表示漢字,否則表示兩個英文字母。 Unicode 現在的國際標準,使用4個位元組來表示,且pytho ...
  • SpringDI(Dependency Injection) DI作用:因為IOC解除了程式間的依賴關係,所以DI就是weil維護程式間的依賴關係,稱:依賴註入 能註入的三類數據類型: 基本類型和String 其他bean類型(在配置文件中或者註解配置過的bean) 複雜類型/集合類型 註入的三種方 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...