You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

校园管理系统Admin端新增Update Timetable功能需求及代码改造

理科班课表更新功能改造方案

一、重构现有课表数据结构

原代码用列表索引对应星期,维护性差,改成字典映射更直观,同时新增持久化逻辑避免重启后数据丢失:

import json

# 默认课表模板(首次运行或文件丢失时使用)
DEFAULT_TIMETABLE = {
    "Monday": ["English", "Maths", "Biology", "Moral"],
    "Tuesday": ["Add_Maths", "Physics", "Malay"],
    "Wednesday": ["History", "Chemistry", "English"],
    "Thursday": ["Moral", "Biology", "Maths", "Malay"],
    "Friday": ["Physics", "Chemistry", "Add_Maths", "History"]
}

# 从本地文件加载课表
def load_timetable():
    try:
        with open("science_timetable.json", "r") as f:
            return json.load(f)
    except FileNotFoundError:
        save_timetable(DEFAULT_TIMETABLE)
        return DEFAULT_TIMETABLE

# 将课表保存到本地文件
def save_timetable(timetable):
    with open("science_timetable.json", "w") as f:
        json.dump(timetable, f, indent=2)

# 初始化加载课表
timetable = load_timetable()

二、封装现有查看课表功能

把原查询逻辑封装成独立函数,方便在用户菜单和管理员页面复用:

def view_timetable():
    day = input("Day of the week? ").title()
    if day in timetable:
        print("Your lessons on this day:")
        for idx, lesson in enumerate(timetable[day], 1):
            print(f"{idx}. {lesson}")
    else:
        print("Not a valid week day!")

三、实现管理员课表更新功能

新增管理员专属的更新函数,支持单日课程修改和整表重置,包含输入校验和操作确认:

def update_timetable():
    print("\n=== Admin - Update Timetable ===")
    print("1. Update a single day's lessons")
    print("2. Reset entire timetable to default")
    choice = input("Enter your choice (1/2): ")

    if choice == "1":
        day = input("Enter the day to update (e.g. Monday): ").title()
        if day not in timetable:
            print("Invalid day!")
            return
        
        # 接收逗号分隔的课程输入,自动清理空格
        new_lessons = input(f"Enter new lessons for {day}, separated by commas: ").strip().split(",")
        new_lessons = [lesson.strip() for lesson in new_lessons if lesson.strip()]
        
        if not new_lessons:
            print("No valid lessons entered!")
            return
        
        # 确认更新操作
        confirm = input(f"Confirm update {day}'s lessons to: {', '.join(new_lessons)}? (y/n): ").lower()
        if confirm == "y":
            timetable[day] = new_lessons
            save_timetable(timetable)
            print(f"{day}'s timetable updated successfully!")
        else:
            print("Update cancelled.")
    
    elif choice == "2":
        confirm = input("Are you sure you want to reset entire timetable to default? (y/n): ").lower()
        if confirm == "y":
            global timetable
            timetable = DEFAULT_TIMETABLE.copy()
            save_timetable(timetable)
            print("Timetable reset to default successfully!")
        else:
            print("Reset cancelled.")
    
    else:
        print("Invalid choice!")

四、整合到Admin页面菜单

在现有Admin菜单中添加更新选项,示例菜单逻辑:

def admin_menu():
    while True:
        print("\n=== Admin Menu ===")
        print("1. View Timetable")
        print("2. Update Timetable")
        print("3. Exit")
        choice = input("Enter your choice: ")
        
        if choice == "1":
            view_timetable()
        elif choice == "2":
            update_timetable()
        elif choice == "3":
            print("Exiting admin panel...")
            break
        else:
            print("Invalid choice!")

# 系统入口示例(需结合现有身份验证逻辑调用)
if __name__ == "__main__":
    admin_menu()

核心优化说明

  • 数据持久化:用JSON文件存储课表,解决内存数据重启丢失问题
  • 代码复用:拆分功能函数,减少冗余代码,方便后续扩展
  • 输入校验:对星期、课程输入、操作确认做多层校验,避免非法操作
  • 操作灵活性:支持单日课程修改和整表重置,覆盖管理员常见操作场景

内容的提问来源于stack exchange,提问作者mjpro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:10:20