用Python开发一个课程表系统

随着互联网的发展,学校的管理系统也愈发向数字化、智能化发展。课程表作为学校管理的重要组成部分,开发一个简易的课程表系统显得尤为重要。本文将介绍如何用Python开发一个简单的课程表系统,帮助学生和教师更好地管理和查看课程信息。

系统需求

我们的课程表系统需要满足以下基本需求:

  1. 管理课程信息(课程名、教师、时间、地点)。
  2. 学生可以查看自己的课程安排。
  3. 教师可以查看自己教授的课程。

数据设计

首先,我们需要设计数据库的表结构。我们将使用SQLite作为我们的数据库,以便于轻松管理数据。下面是一个简单的ER图,展示了我们的数据表结构:

erDiagram
    COURSES {
        INTEGER course_id
        STRING course_name
        STRING teacher_name
        STRING time
        STRING location
    }
    
    STUDENTS {
        INTEGER student_id
        STRING student_name
    }

    ENROLLMENTS {
        INTEGER student_id
        INTEGER course_id
    }

在这个设计中,我们有三张表:

  • COURSES: 存储课程信息。
  • STUDENTS: 存储学生信息。
  • ENROLLMENTS: 记录学生和课程之间的关联。

开发环境

我们将使用以下工具和库:

  • Python
  • SQLite
  • Flask(用于构建Web应用)

首先,我们需要安装Flask和SQLite库:

pip install Flask

代码实现

接下来,我们可以开始实现基本框架。首先,初始化一个Flask应用并创建数据库。

from flask import Flask, request, jsonify
import sqlite3

app = Flask(__name__)

def init_db():
    conn = sqlite3.connect('courses.db')
    cursor = conn.cursor()
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS COURSES (
            course_id INTEGER PRIMARY KEY,
            course_name TEXT NOT NULL,
            teacher_name TEXT NOT NULL,
            time TEXT NOT NULL,
            location TEXT NOT NULL
        )
    ''')
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS STUDENTS (
            student_id INTEGER PRIMARY KEY,
            student_name TEXT NOT NULL
        )
    ''')
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS ENROLLMENTS (
            student_id INTEGER,
            course_id INTEGER,
            FOREIGN KEY (student_id) REFERENCES STUDENTS(student_id),
            FOREIGN KEY (course_id) REFERENCES COURSES(course_id)
        )
    ''')
    conn.commit()
    conn.close()

@app.route('/')
def index():
    return "Welcome to the Course Schedule System!"

if __name__ == "__main__":
    init_db()  # 初始化数据库
    app.run(debug=True)  # 启动Flask应用

添加课程的功能

我们接下来实现一个添加课程的功能。

@app.route('/add_course', methods=['POST'])
def add_course():
    data = request.get_json()
    conn = sqlite3.connect('courses.db')
    cursor = conn.cursor()
    cursor.execute('''
        INSERT INTO COURSES (course_name, teacher_name, time, location)
        VALUES (?, ?, ?, ?)
    ''', (data['course_name'], data['teacher_name'], data['time'], data['location']))
    conn.commit()
    conn.close()
    return jsonify({'message': 'Course added successfully!'}), 201

查询课程的功能

我们也可以提供一个查询课程的接口。

@app.route('/get_courses', methods=['GET'])
def get_courses():
    conn = sqlite3.connect('courses.db')
    cursor = conn.cursor()
    cursor.execute('SELECT * FROM COURSES')
    courses = cursor.fetchall()
    conn.close()
    return jsonify(courses), 200

总结

通过上述代码,我们构建了一个简单的课程表管理系统。我们可以添加课程、查看课程信息,后续可以继续扩展功能,例如学生注册和成绩管理等。此外,通过Flask作为Web框架,使得系统的可扩展性和易用性得到了保证。

希望这一小段示例代码和步骤能够帮助学习Python的你,开辟出一片新天地!继续探索更复杂的功能,会让你的编程技能不断提升。