大家好,今天咱们来聊一聊怎么用Python开发一个学生工作管理系统,而且还要能生成.doc文件。这事儿听起来是不是有点高大上?别担心,我来一步步给你讲清楚。
首先,咱们得先理解什么是“学生工作管理系统”。简单来说,就是用来管理学生信息、成绩、活动记录之类的系统。在南通这样的城市,很多学校可能都想要一个这样的系统来提高工作效率。
那咱们怎么开始呢?首先,你得安装Python,这个不用多说吧?如果你还没装,建议去官网下载最新版本,或者用Anaconda也行,它里面集成了很多库,方便开发。
接下来,我们需要选择一个框架或者工具来开发这个系统。这里我推荐使用Flask,因为它轻量、容易上手,适合做小型的Web应用。当然,如果你不想做Web版,也可以直接写个命令行程序,不过今天我们还是以Web为主。
首先,我们创建一个简单的Flask项目。新建一个文件夹,比如叫student_management,然后在里面创建一个app.py文件。接着,在终端里输入以下命令:
pip install flask
然后,我们写一些基础代码。比如,定义一个路由,返回一个简单的页面。代码大概是这样:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "欢迎来到南通学生工作管理系统!"
if __name__ == '__main__':
app.run(debug=True)
运行之后,访问http://127.0.0.1:5000/,就能看到欢迎页面了。看起来是不是挺简单的?这就是一个最基础的Web系统了。
接下来,我们需要添加功能,比如添加学生信息、查看学生信息、导出为.doc文件。为了实现这些功能,我们需要用到数据库。这里我们可以用SQLite,它是Python自带的,不需要额外安装。

首先,我们创建一个数据库。在项目目录下创建一个db.py文件,写入以下代码:
import sqlite3
def init_db():
conn = sqlite3.connect('students.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
student_id TEXT,
major TEXT,
contact TEXT
)
''')
conn.commit()
conn.close()
init_db()
这段代码会创建一个名为students.db的数据库,里面有一个students表,包含学生的姓名、学号、专业和联系方式。
接下来,我们可以在app.py中添加路由,用来处理添加学生信息的请求。例如,添加一个POST接口,接收用户提交的数据,然后插入到数据库中。
不过,这里有个问题:如果直接用Flask处理HTML表单,可能会有点麻烦。所以我们可以使用一个模板引擎,比如Jinja2,来渲染页面。或者,为了简化,我们先不加前端页面,只用curl或者Postman测试API。
现在,我们来写一个简单的添加学生信息的接口。在app.py中添加以下代码:
from flask import request, jsonify
@app.route('/add_student', methods=['POST'])
def add_student():
data = request.json
name = data.get('name')
student_id = data.get('student_id')
major = data.get('major')
contact = data.get('contact')
conn = sqlite3.connect('students.db')
cursor = conn.cursor()
cursor.execute('INSERT INTO students (name, student_id, major, contact) VALUES (?, ?, ?, ?)',
(name, student_id, major, contact))
conn.commit()
conn.close()
return jsonify({"message": "学生信息已添加"}), 201
这样,我们就有了一个可以接收JSON数据的接口。你可以用Postman发送POST请求,把数据填进去,就能成功添加学生信息了。
接下来,我们还需要一个查看所有学生信息的接口。同样在app.py中添加:
@app.route('/get_students', methods=['GET'])
def get_students():
conn = sqlite3.connect('students.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM students')
students = cursor.fetchall()
conn.close()
result = []
for student in students:
result.append({
'id': student[0],
'name': student[1],
'student_id': student[2],
'major': student[3],
'contact': student[4]
})
return jsonify(result)
现在,你就可以通过GET请求获取所有学生的信息了。
接下来,最重要的一步来了——导出为.doc文件。我们知道,.doc是微软Word的文档格式,要生成这种文件,可以用python-docx库。
首先,安装这个库:
pip install python-docx

然后,我们写一个函数,从数据库中读取所有学生信息,然后生成一个.doc文件。
在app.py中添加如下代码:
from docx import Document
@app.route('/export_doc', methods=['GET'])
def export_doc():
conn = sqlite3.connect('students.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM students')
students = cursor.fetchall()
conn.close()
doc = Document()
doc.add_heading('南通学生工作管理系统 - 学生信息列表', 0)
table = doc.add_table(rows=1, cols=5)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'ID'
hdr_cells[1].text = '姓名'
hdr_cells[2].text = '学号'
hdr_cells[3].text = '专业'
hdr_cells[4].text = '联系方式'
for student in students:
row_cells = table.add_row().cells
row_cells[0].text = str(student[0])
row_cells[1].text = student[1]
row_cells[2].text = student[2]
row_cells[3].text = student[3]
row_cells[4].text = student[4]
doc.save('students_list.docx')
return jsonify({"message": "文件已生成", "file": "students_list.docx"})
这样,当你访问/export_doc时,系统就会自动生成一个.docx文件,并返回提示信息。注意,这个文件保存在你的项目目录下,你可以下载下来查看。
不过,这里有个问题:如果用户访问这个接口,他们只能看到提示信息,而不能直接下载文件。所以我们需要修改一下,让浏览器能直接下载这个文件。
这时候,我们可以使用Flask的send_file方法,直接返回文件。修改一下export_doc函数:
from flask import send_file
@app.route('/export_doc', methods=['GET'])
def export_doc():
conn = sqlite3.connect('students.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM students')
students = cursor.fetchall()
conn.close()
doc = Document()
doc.add_heading('南通学生工作管理系统 - 学生信息列表', 0)
table = doc.add_table(rows=1, cols=5)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'ID'
hdr_cells[1].text = '姓名'
hdr_cells[2].text = '学号'
hdr_cells[3].text = '专业'
hdr_cells[4].text = '联系方式'
for student in students:
row_cells = table.add_row().cells
row_cells[0].text = str(student[0])
row_cells[1].text = student[1]
row_cells[2].text = student[2]
row_cells[3].text = student[3]
row_cells[4].text = student[4]
doc.save('students_list.docx')
return send_file('students_list.docx', as_attachment=True)
这样,当用户访问这个接口时,浏览器就会自动下载生成的.docx文件了。
到这里,我们的学生工作管理系统已经具备了基本的功能:添加学生信息、查看学生信息、导出为.doc文件。虽然这个系统还比较简单,但它已经可以满足一些基础需求了。
当然,实际开发中还有很多需要完善的地方,比如增加用户登录、权限管理、数据验证等。但作为入门项目,这个例子已经足够帮助你理解整个流程了。
总结一下,我们用了Flask搭建了一个Web服务,用SQLite存储数据,用python-docx生成.doc文件。整个过程虽然有些复杂,但只要你一步步来,其实也不难。
最后,如果你想把这个系统部署到服务器上,可以考虑使用Docker或者Heroku等平台。不过那是另一个话题了,我们下次再聊。
希望这篇文章对你有帮助,如果你有任何问题,欢迎随时留言交流。祝你编程愉快!
本站部分内容及素材来源于互联网,如有侵权,联系必删!



客服经理