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
  • 概述:本文代碼示例演示瞭如何在WPF中使用LiveCharts庫創建動態條形圖。通過創建數據模型、ViewModel和在XAML中使用`CartesianChart`控制項,你可以輕鬆實現圖表的數據綁定和動態更新。我將通過清晰的步驟指南包括詳細的中文註釋,幫助你快速理解並應用這一功能。 先上效果: 在 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • 概述:本示例演示了在WPF應用程式中實現多語言支持的詳細步驟。通過資源字典和數據綁定,以及使用語言管理器類,應用程式能夠在運行時動態切換語言。這種方法使得多語言支持更加靈活,便於維護,同時提供清晰的代碼結構。 在WPF中實現多語言的一種常見方法是使用資源字典和數據綁定。以下是一個詳細的步驟和示例源代 ...
  • 描述(做一個簡單的記錄): 事件(event)的本質是一個委托;(聲明一個事件: public event TestDelegate eventTest;) 委托(delegate)可以理解為一個符合某種簽名的方法類型;比如:TestDelegate委托的返回數據類型為string,參數為 int和 ...
  • 1、AOT適合場景 Aot適合工具類型的項目使用,優點禁止反編 ,第一次啟動快,業務型項目或者反射多的項目不適合用AOT AOT更新記錄: 實實在在經過實踐的AOT ORM 5.1.4.117 +支持AOT 5.1.4.123 +支持CodeFirst和非同步方法 5.1.4.129-preview1 ...
  • 總說周知,UWP 是運行在沙盒裡面的,所有許可權都有嚴格限制,和沙盒外交互也需要特殊的通道,所以從根本杜絕了 UWP 毒瘤的存在。但是實際上 UWP 只是一個應用模型,本身是沒有什麼許可權管理的,許可權管理全靠 App Container 沙盒控制,如果我們脫離了這個沙盒,UWP 就會放飛自我了。那麼有沒... ...
  • 目錄條款17:讓介面容易被正確使用,不易被誤用(Make interfaces easy to use correctly and hard to use incorrectly)限制類型和值規定能做和不能做的事提供行為一致的介面條款19:設計class猶如設計type(Treat class de ...
  • title: 從零開始:Django項目的創建與配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories: 後端開發 tags: Django WebDev Python ORM Security Deployment Op ...
  • 1、BOM對象 BOM:Broswer object model,即瀏覽器提供我們開發者在javascript用於操作瀏覽器的對象。 1.1、window對象 視窗方法 // BOM Browser object model 瀏覽器對象模型 // js中最大的一個對象.整個瀏覽器視窗出現的所有東西都 ...