学工管理系统
小明:最近我在学习Python编程,想做一个学生管理系统,你觉得怎么样?
小李:挺好的!特别是如果你能结合一些实际需求,比如为扬州的学校设计一个管理系统,那就更有意义了。
小明:那我应该怎么开始呢?有没有什么推荐的技术栈?
小李:建议使用Python,因为它的语法简单,而且有很多现成的库可以帮你快速开发。比如Django或者Flask这样的框架,非常适合做Web应用。
小明:那如果我要把数据保存下来呢?是不是需要数据库?
小李:对,你需要一个数据库来存储学生信息,比如姓名、学号、班级、成绩等。可以用SQLite,它是一个轻量级的数据库,适合小型项目。
小明:那具体怎么操作呢?能不能给我一个例子?
小李:当然可以!我们可以用Python的sqlite3模块来操作数据库。首先创建一个学生表,然后插入数据。
小明:听起来不错,那你能给我写一段代码吗?
小李:没问题,下面是一段简单的Python代码,用来创建学生表并插入一条记录:
import sqlite3
# 连接到SQLite数据库(如果文件不存在,则会自动创建)
conn = sqlite3.connect('student.db')
# 创建游标对象
cursor = conn.cursor()
# 创建学生表
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
student_id TEXT NOT NULL UNIQUE,
class TEXT NOT NULL,
score REAL
)
''')
# 插入一条学生记录
cursor.execute('INSERT INTO students (name, student_id, class, score) VALUES (?, ?, ?, ?)',
('张三', '2021001', '计算机科学与技术', 85.5))
# 提交事务
conn.commit()
# 关闭连接
conn.close()
小明:这代码看起来很清晰,不过我是不是还需要一个界面来展示这些数据?
小李:是的,你可以用Flask或者Django来搭建一个Web界面。这样用户可以通过浏览器访问系统,进行增删改查操作。
小明:那我可以先用Flask来实现一个简单的Web接口吗?
小李:当然可以,下面是一个简单的Flask示例,它提供了一个获取所有学生的API端点:
from flask import Flask, jsonify
import sqlite3
app = Flask(__name__)
def get_db():
return sqlite3.connect('student.db')
@app.route('/students', methods=['GET'])
def get_students():
conn = get_db()
cursor = conn.cursor()
cursor.execute('SELECT * FROM students')
rows = cursor.fetchall()
conn.close()
return jsonify(rows)
if __name__ == '__main__':
app.run(debug=True)
小明:这个代码运行后,我应该可以在浏览器中看到学生数据了,对吧?
小李:对,你只需要在浏览器中访问http://localhost:5000/students,就能看到返回的JSON数据。
小明:那如果我想添加一个学生呢?是不是要写一个POST请求?
小李:没错,我们可以再添加一个路由来处理POST请求,例如添加学生信息:
@app.route('/students', methods=['POST'])
def add_student():
data = request.get_json()
name = data['name']
student_id = data['student_id']
class_name = data['class']
score = data['score']
conn = get_db()
cursor = conn.cursor()
cursor.execute('INSERT INTO students (name, student_id, class, score) VALUES (?, ?, ?, ?)',
(name, student_id, class_name, score))
conn.commit()
conn.close()
return jsonify({'message': '学生信息添加成功'}), 201
小明:那我需要安装Flask吗?
小李:是的,你需要先安装Flask。可以使用pip来安装:
pip install flask
小明:明白了,那我应该怎样测试这个系统呢?
小李:你可以使用curl或者Postman来发送HTTP请求。比如用curl发送一个POST请求添加学生:
curl -X POST http://localhost:5000/students -H "Content-Type: application/json" -d '{"name": "李四", "student_id": "2021002", "class": "软件工程", "score": 90}'
小明:那如果我想查询某个学生的信息呢?
小李:可以添加一个根据学号查询的路由,例如:

@app.route('/students/
def get_student(student_id):
conn = get_db()
cursor = conn.cursor()
cursor.execute('SELECT * FROM students WHERE student_id = ?', (student_id,))
row = cursor.fetchone()
conn.close()
if row:
return jsonify(row)
else:
return jsonify({'error': '学生未找到'}), 404
小明:看来这个系统已经具备基本功能了,但我觉得还可以扩展一下,比如添加删除和修改功能。
小李:没错,我们可以继续添加DELETE和PUT方法来支持删除和更新学生信息。
小明:那删除功能的代码应该怎么写?
小李:如下所示,这是一个删除学生的路由:
@app.route('/students/
def delete_student(student_id):
conn = get_db()
cursor = conn.cursor()
cursor.execute('DELETE FROM students WHERE student_id = ?', (student_id,))
conn.commit()

conn.close()
return jsonify({'message': '学生信息删除成功'})
小明:那修改功能呢?
小李:同样,我们可以通过PUT方法来实现,比如:
@app.route('/students/
def update_student(student_id):
data = request.get_json()
name = data.get('name')
class_name = data.get('class')
score = data.get('score')
conn = get_db()
cursor = conn.cursor()
cursor.execute('UPDATE students SET name=?, class=?, score=? WHERE student_id=?',
(name, class_name, score, student_id))
conn.commit()
conn.close()
return jsonify({'message': '学生信息更新成功'})
小明:太好了,这样我的系统就比较完善了。
小李:是的,现在你已经有了一个基础的学生管理系统,可以根据需求进一步扩展,比如添加用户登录、权限控制等功能。
小明:我还想把这个系统部署到服务器上,让扬州的学校可以使用。
小李:部署的话,可以考虑使用云服务器,比如阿里云、腾讯云,或者使用Docker容器化部署,这样更方便管理和扩展。
小明:谢谢你的指导,我现在对这个系统有了更清晰的认识。
小李:不客气,希望你能顺利完成这个项目,祝你在扬州的学校信息化建设中取得好成绩!