以下是 學生信息管理系統 的簡化版代碼示例(控制臺版本,使用文件存儲數據),包含核心功能:
?
1. 定義學生類
?
class Student:
? ? def __init__(self, sid, name, score):
? ? ? ? self.sid = sid # 學號
? ? ? ? self.name = name # 姓名
? ? ? ? self.score = score# 成績
?
? ? def to_dict(self):
? ? ? ? """轉為字典格式,方便存儲"""
? ? ? ? return {"sid": self.sid, "name": self.name, "score": self.score}
?
?
2. 數據存儲模塊(文件操作)
?
import json
?
DATA_FILE = "students.txt"
?
def save_students(students):
? ? """將學生列表保存到文件"""
? ? with open(DATA_FILE, "w", encoding="utf-8") as f:
? ? ? ? json.dump([s.to_dict() for s in students], f)
?
def load_students():
? ? """從文件加載學生列表"""
? ? try:
? ? ? ? with open(DATA_FILE, "r", encoding="utf-8") as f:
? ? ? ? ? ? data = json.load(f)
? ? ? ? ? ? return [Student(**item) for item in data]
? ? except FileNotFoundError:
? ? ? ? return []
?
?
3. 核心功能函數
?
# 初始化學生列表(從文件加載)
students = load_students()
?
def add_student():
? ? """添加學生"""
? ? sid = input("請輸入學號:")
? ? name = input("請輸入姓名:")
? ? score = float(input("請輸入成績:"))
? ? students.append(Student(sid, name, score))
? ? save_students(students)
? ? print("添加成功!")
?
def query_student():
? ? """查詢學生(按學號)"""
? ? sid = input("請輸入要查詢的學號:")
? ? for s in students:
? ? ? ? if s.sid == sid:
? ? ? ? ? ? print(f"學號:{s.sid},姓名:{s.name},成績:{s.score}")
? ? ? ? ? ? return
? ? print("未找到該學生!")
?
def update_student():
? ? """修改學生成績"""
? ? sid = input("請輸入要修改的學號:")
? ? for s in students:
? ? ? ? if s.sid == sid:
? ? ? ? ? ? new_score = float(input("請輸入新成績:"))
? ? ? ? ? ? s.score = new_score
? ? ? ? ? ? save_students(students)
? ? ? ? ? ? print("修改成功!")
? ? ? ? ? ? return
? ? print("未找到該學生!")
?
def delete_student():
? ? """刪除學生"""
? ? sid = input("請輸入要刪除的學號:")
? ? global students
? ? students = [s for s in students if s.sid != sid]
? ? save_students(students)
? ? print("刪除成功!")
?
def show_all_students():
? ? """顯示所有學生"""
? ? if not students:
? ? ? ? print("暫無學生信息!")
? ? ? ? return
? ? print("學號\t姓名\t成績")
? ? for s in students:
? ? ? ? print(f"{s.sid}\t{s.name}\t{s.score}")
?
?
4. 菜單交互
?
def main_menu():
? ? print("\n===== 學生信息管理系統 =====")
? ? print("1. 添加學生")
? ? print("2. 查詢學生")
? ? print("3. 修改成績")
? ? print("4. 刪除學生")
? ? print("5. 顯示所有學生")
? ? print("0. 退出系統")
? ? choice = input("請選擇操作(0-5):")
? ? return choice
?
if __name__ == "__main__":
? ? while True:
? ? ? ? choice = main_menu()
? ? ? ? if choice == "1":
? ? ? ? ? ? add_student()
? ? ? ? elif choice == "2":
? ? ? ? ? ? query_student()
? ? ? ? elif choice == "3":
? ? ? ? ? ? update_student()
? ? ? ? elif choice == "4":
? ? ? ? ? ? delete_student()
? ? ? ? elif choice == "5":
? ? ? ? ? ? show_all_students()
? ? ? ? elif choice == "0":
? ? ? ? ? ? print("退出系統,感謝使用!")
? ? ? ? ? ? break
? ? ? ? else:
? ? ? ? ? ? print("輸入有誤,請重新選擇!")
?
?
使用說明:
?
1.?運行代碼后,根據菜單提示輸入數字選擇功能。
2.?數據會自動保存到同目錄的 ?students.txt? 文件中,下次運行時自動加載。
3.?可擴展功能:
- 添加成績統計(平均分、最高分)
- 支持多條件查詢(如按姓名模糊查詢)
- 改用 SQLite 數據庫存儲(需引入 ?sqlite3? 模塊)
?
需要其他案例的代碼或功能擴展,可隨時告訴我!