一、系統概述

        本項目的目標是實現一個簡易的健身房管理系統,旨在幫助健身房管理者高效地管理會員信息和健身課程信息。系統功能包括會員的添加、查詢、刪除、健身課程的添加、查看和查詢等操作,並且支持通過命令行界面進行交互。適用於小型健身房或個人健身教練管理的日常運營。系統不僅能管理員工和會員之間的互動,還能幫助管理員跟蹤課程的安排和教練的工作負擔。

本系統的主要功能包括:

        1.會員管理:添加新會員、查看所有會員、根據會員編號查詢會員、刪除會員。

        2.課程管理:添加健身課程、查看所有課程、根據課程名稱查詢課程。

        3.數據管理:支持對會員和課程數據的基本操作,管理會員信息和課程安排。

系統設計簡單,基於命令行進行交互,方便用户快速輸入信息和查詢數據,適合小型健身房日常的管理需求。

二、系統設計

1. 類的設計

1.1 Member 類

Member 類用於表示健身房的會員。每個會員擁有一個唯一的 member_id 作為標識符,此外還有 name(姓名)、age(年齡)和 membership_type(會籍類型)。會籍類型可以是普通、高級或VIP,會員的不同會籍類型可能決定他們享有不同的服務和價格。

        構造函數:初始化會員的編號、姓名、年齡和會籍類型。

        __str__ 方法:返回會員的詳細信息,包括會員編號、姓名、年齡和會籍類型,便於在命令行中打印會員信息。

1.2 GymManagementSystem 類

GymManagementSystem 類是整個系統的核心類,負責所有會員和課程的管理操作。該類包含以下方法:

        add_member(self, member_id, name, age, membership_type):添加新會員,將會員信息存儲在 members 列表中。如果添加成功,系統會輸出提示信息。

        list_members(self):列出所有會員的信息。如果當前沒有任何會員,系統會輸出“暫無會員信息”。

        search_member_by_id(self, member_id):根據會員編號查詢會員信息。如果找到對應會員,輸出其詳細信息;否則,輸出“未找到會員”的提示。

        remove_member(self, member_id):刪除指定編號的會員信息,確保會員數據的準確性。若會員不存在,系統會輸出提示。

        add_class(self, class_name, instructor, schedule):添加健身課程,課程信息包括課程名稱、教練和時間表,並將其存儲在 classes 列表中。

        list_classes(self):列出所有健身課程的基本信息。如果沒有課程信息,系統會提示“暫無課程信息”。

        search_class_by_name(self, class_name):根據課程名稱查詢課程信息。如果找到對應課程,輸出課程詳細信息;否則,輸出“未找到課程”的提示。

2. 數據存儲

        系統目前的數據存儲採用內存管理,即通過 Python 的列表(members 和 classes)存儲會員和課程信息。在程序運行期間,所有的數據都存在內存中,當程序關閉後,數據會丟失。如果需要長期保存和恢復數據,可以考慮將會員信息和課程信息保存到本地文件(如 JSON 或 CSV 文件)或數據庫中,以便數據持久化。

3. 主程序設計

        主程序提供了一個交互式命令行界面,用户可以選擇不同的操作,如添加會員、查詢會員、刪除會員、添加課程、查詢課程等。每個操作都對應一個選項編號,通過輸入選項編號,用户可以實現相應的功能。程序通過一個無限循環來接受用户輸入,直到用户選擇退出系統。

三、系統功能分析

1. 會員管理功能

1.1 添加會員

        用户可以通過輸入會員編號、姓名、年齡和會籍類型來添加新會員。會員類型包括普通、高級和VIP,每種類型的會員在健身房內享有不同的優惠或服務。添加成功後,系統會在會員列表中新增該會員,並返回提示信息。

1.2 查看所有會員

        系統可以列出當前所有的會員信息。如果沒有會員,系統會提示“暫無會員信息”。每個會員的詳細信息包括會員編號、姓名、年齡和會籍類型。

1.3 按會員編號查詢會員

        用户可以根據會員編號查詢特定會員的詳細信息。如果找到了對應的會員,系統會輸出其詳細信息;如果沒有找到該會員,系統會提示未找到該會員編號。

1.4 刪除會員

        管理員可以刪除不再需要的會員數據。刪除會員時,系統會在會員列表中找到指定編號的會員並移除。如果未找到該會員編號,系統會提示無法刪除。

2. 課程管理功能

2.1 添加課程

        用户可以為健身房添加新課程。每個課程包括課程名稱、教練和時間表。通過該功能,管理員可以方便地錄入和管理健身房的所有課程。

2.2 查看所有課程

        系統允許管理員查看當前所有已添加的課程。如果沒有課程,系統會提示“暫無課程信息”。列出的信息包括課程名稱、教練和時間表,幫助管理員瞭解當前課程安排。

2.3 按課程名稱查詢課程

        管理員可以通過課程名稱查詢特定課程的信息。通過查詢課程,管理員可以瞭解課程的教練和時間安排,確保課程安排的合理性。如果未找到課程,系統會提示未找到該課程。

3. 系統交互與操作流程

        系統通過命令行界面與用户進行交互,提供了清晰的操作菜單,包括會員管理、課程管理等。每次操作後,系統會返回相應的提示信息,幫助用户確認操作結果。用户通過輸入編號選擇所需操作,簡單直觀,容易上手。

4. 數據存儲與持久化

        目前,系統的數據存儲僅限於程序的內存中,關閉後數據會丟失。為了提升系統的可用性,建議增加數據持久化功能,將會員信息和課程信息存儲到文件或數據庫中。這樣,管理員可以在程序重啓後恢復之前的操作記錄,避免數據丟失。

四、系統優點與缺點

1. 系統優點

        簡潔易用:系統通過命令行界面實現,操作直觀,用户只需輸入編號即可進行相應操作,特別適合初學者或小型健身房使用。

        功能全面:系統支持會員管理和課程管理,能夠滿足健身房日常運營的基本需求。

        靈活性強:管理員可以根據需求靈活添加、刪除會員和課程,查詢和查看信息也十分方便。

2. 系統缺點

        數據存儲不持久:當前系統的數據僅存儲在內存中,關閉後數據丟失,缺乏長期數據存儲的能力。

        界面簡單:由於是命令行程序,系統界面較為單一,不適合大規模或對界面有較高要求的用户。

        缺乏詳細的財務管理功能:系統主要關注會員和課程的管理,未涉及財務管理功能,如會員收費、課程收入等。

五、改進建議

1. 數據持久化

        為了避免數據丟失,可以通過將會員信息和課程信息存儲到本地文件中(如 JSON 格式)或使用數據庫進行存儲。這樣可以確保數據在系統關閉後仍然能夠保存,並在系統重啓時恢復。

2. 圖形化界面

        可以考慮開發圖形化用户界面(GUI),替代當前的命令行界面,提升用户體驗。通過使用 Python 的 Tkinter、PyQt 等框架,可以使系統更加直觀、友好,適合更多用户。

3. 財務管理功能

        增加財務管理功能,如會員收費記錄、課程收入統計等。通過統計和報表,幫助管理員分析健身房的收入和支出情況,優化資源配置。

4. 增強安全性和多用户支持

        考慮加入用户權限管理系統,支持不同的管理員角色(如普通管理員、財務管理員等),確保不同級別的用户只能訪問和操作特定的數據或功能。

六、總結

        本健身房管理系統為健身房提供了一個簡潔高效的管理工具,能夠方便地管理會員信息和健身課程。通過該系統,管理員可以輕鬆地添加、查詢和刪除會員和課程,並且能夠跟蹤健身房的日常運營。然而,系統也存在數據存儲不持久、界面簡陋等不足。隨着需求的增長,系統可以進一步擴展,加入數據持久化、圖形化界面和財務管理功能,使其更具實用性和可擴展性。

代碼如下:

# -*- coding: utf-8 -*-
# 健身房管理系統
class Member:
    def __init__(self, member_id, name, age, membership_type):
        self.member_id = member_id
        self.name = name
        self.age = age
        self.membership_type = membership_type
    def __str__(self):
        return f"會員編號: {self.member_id}, 姓名: {self.name}, 年齡: {self.age}, 會籍類型: {self.membership_type}"
class GymManagementSystem:
    def __init__(self):
        self.members = []
        self.classes = []
    # 添加會員
    def add_member(self, member_id, name, age, membership_type):
        member = Member(member_id, name, age, membership_type)
        self.members.append(member)
        print(f"會員 {name} 添加成功!")
    # 查看所有會員
    def list_members(self):
        if not self.members:
            print("暫無會員信息!")
            return
        print("當前會員信息如下:")
        for member in self.members:
            print(member)
    # 按會員編號查詢會員
    def search_member_by_id(self, member_id):
        for member in self.members:
            if member.member_id == member_id:
                print(member)
                return member
        print(f"未找到會員編號為 {member_id} 的會員。")
        return None
    # 刪除會員
    def remove_member(self, member_id):
        for member in self.members:
            if member.member_id == member_id:
                self.members.remove(member)
                print(f"會員編號 {member_id} 的會員信息已刪除!")
                return
        print(f"未找到會員編號為 {member_id} 的會員。")
    # 添加健身課程
    def add_class(self, class_name, instructor, schedule):
        gym_class = {
            "課程名稱": class_name,
            "教練": instructor,
            "時間表": schedule
        }
        self.classes.append(gym_class)
        print(f"課程 {class_name} 添加成功!")
    # 查看所有課程
    def list_classes(self):
        if not self.classes:
            print("暫無課程信息!")
            return
        print("當前課程信息如下:")
        for gym_class in self.classes:
            print(f"課程名稱: {gym_class['課程名稱']}, 教練: {gym_class['教練']}, 時間表: {gym_class['時間表']}。")
    # 查詢課程
    def search_class_by_name(self, class_name):
        for gym_class in self.classes:
            if gym_class["課程名稱"] == class_name:
                print(f"課程名稱: {gym_class['課程名稱']}, 教練: {gym_class['教練']}, 時間表: {gym_class['時間表']}。")
                return gym_class
        print(f"未找到課程名稱為 {class_name} 的課程。")
        return None
# 主程序
def main():
    system = GymManagementSystem()
    while True:
        print("\n===== 健身房管理系統 =====")
        print("1. 添加會員")
        print("2. 查看所有會員")
        print("3. 按會員編號查詢會員")
        print("4. 刪除會員")
        print("5. 添加健身課程")
        print("6. 查看所有課程")
        print("7. 按課程名稱查詢課程")
        print("8. 退出系統")
        choice = input("請輸入操作編號:")
        if choice == "1":
            member_id = input("請輸入會員編號:")
            name = input("請輸入會員姓名:")
            age = int(input("請輸入會員年齡:"))
            membership_type = input("請輸入會籍類型(普通/高級/VIP):")
            system.add_member(member_id, name, age, membership_type)
        elif choice == "2":
            system.list_members()
        elif choice == "3":
            member_id = input("請輸入會員編號:")
            system.search_member_by_id(member_id)
        elif choice == "4":
            member_id = input("請輸入會員編號:")
            system.remove_member(member_id)
        elif choice == "5":
            class_name = input("請輸入課程名稱:")
            instructor = input("請輸入教練姓名:")
            schedule = input("請輸入課程時間表:")
            system.add_class(class_name, instructor, schedule)
        elif choice == "6":
            system.list_classes()
        elif choice == "7":
            class_name = input("請輸入課程名稱:")
            system.search_class_by_name(class_name)
        elif choice == "8":
            print("退出系統,再見!")
            break
        else:
            print("無效輸入,請重新選擇!")
if __name__ == "__main__":
    main()