学工管理系统
小明:嘿,小李,最近我在学习Python编程,想做一个学生管理信息系统,你觉得怎么样?
小李:听起来不错啊!不过你打算用什么技术呢?
小明:我想用Python,因为它的语法简单,而且有很多库可以用。不过我还不太清楚具体怎么开始。

小李:那你可以先从系统的设计开始。学生管理信息系统通常包括哪些功能呢?比如学生信息录入、查询、修改、删除等。
小明:对,还有成绩管理、课程安排、班级管理这些功能。不过我可能还需要一个数据库来存储数据。
小李:没错,数据库是关键。你可以用MySQL或者SQLite,两者都适合做小型项目。如果是初学者的话,SQLite可能更简单一些。
小明:好的,那我先试试SQLite吧。那前端怎么做呢?是不是需要网页界面?
小李:可以考虑用Flask框架来做Web应用,它很适合做小型系统。如果你不想做网页,也可以用命令行界面,但网页更直观。
小明:那我应该怎么做呢?有没有具体的代码示例?
小李:当然有,我可以给你一个简单的例子。首先,我们需要创建一个学生表,包含学号、姓名、性别、年龄、班级等字段。
小明:好的,那我们先写数据库部分的代码。
小李:没问题,以下是使用Python和SQLite创建学生表的代码:
import sqlite3
# 连接数据库(如果不存在则会自动创建)
conn = sqlite3.connect('student.db')
cursor = conn.cursor()
# 创建学生表
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
student_id TEXT NOT NULL,
name TEXT NOT NULL,
gender TEXT,
age INTEGER,
class TEXT
)
''')
# 提交更改并关闭连接
conn.commit()
conn.close()
小明:这看起来挺简单的。那接下来怎么添加学生信息呢?
小李:我们可以编写一个插入数据的函数。例如:
def add_student(student_id, name, gender, age, class_name):
conn = sqlite3.connect('student.db')
cursor = conn.cursor()
cursor.execute('INSERT INTO students (student_id, name, gender, age, class) VALUES (?, ?, ?, ?, ?)',
(student_id, name, gender, age, class_name))
conn.commit()
conn.close()
小明:明白了,那怎么查询学生信息呢?
小李:可以用SELECT语句。比如按学号查询:
def get_student_by_id(student_id):
conn = sqlite3.connect('student.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM students WHERE student_id = ?', (student_id,))
result = cursor.fetchone()
conn.close()
return result
小明:这样就可以获取到学生的信息了。那怎么展示所有学生呢?
小李:可以用SELECT * FROM students,然后遍历结果返回列表:
def get_all_students():
conn = sqlite3.connect('student.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM students')
results = cursor.fetchall()
conn.close()
return results
小明:好的,那接下来怎么用Flask做一个简单的网页界面呢?
小李:我们可以用Flask创建一个Web应用,处理GET和POST请求。以下是一个简单的例子:
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/')
def index():
students = get_all_students()
return render_template('index.html', students=students)
@app.route('/add', methods=['POST'])
def add():
student_id = request.form['student_id']
name = request.form['name']
gender = request.form['gender']
age = request.form['age']
class_name = request.form['class']
add_student(student_id, name, gender, age, class_name)
return '学生信息已添加'
if __name__ == '__main__':
app.run(debug=True)
小明:那HTML页面应该怎么写呢?

小李:可以创建一个templates目录,里面放index.html文件。内容如下:
<!DOCTYPE html>
<html>
<head><title>学生管理系统</title></head>
<body>
<h1>学生信息管理</h1>
<form method="post" action="/add">
学号: <input type="text" name="student_id"><br>
姓名: <input type="text" name="name"><br>
性别: <input type="text" name="gender"><br>
年龄: <input type="number" name="age"><br>
班级: <input type="text" name="class"><br>
<input type="submit" value="提交">
</form>
<h2>学生列表</h2>
<ul>
{% for student in students %}
<li>{{ student[0] }} - {{ student[1] }} - {{ student[2] }} - {{ student[3] }} - {{ student[4] }}</li>
{% endfor %}
</ul>
</body>
</html>
小明:这样就能在网页上看到学生信息了。那这个系统能不能扩展呢?比如加入更多功能?
小李:当然可以。你可以继续添加查询、更新和删除功能。比如,增加一个编辑学生的页面,或者根据姓名、班级进行筛选。
小明:那我现在已经有一个基本的系统了,但感觉还可以优化一下。
小李:是的,比如可以加入用户登录功能,或者用Spring Boot来构建更复杂的后端系统。不过对于初学者来说,现在的系统已经很好了。
小明:嗯,我还想把这个系统部署到苏州本地的服务器上,让它能被更多人访问。
小李:你可以使用Docker容器化部署,或者直接将代码上传到云服务器。苏州有很多高校,如果你把这个系统做成开源的,说不定会有其他学校的人感兴趣。
小明:听起来很有意思。那我现在就按照这个思路继续完善我的项目。
小李:加油!希望你能做出一个实用的学生管理系统,帮助苏州的高校提高管理效率。