首页 > 资讯 > 学工管理系统> 用Python开发南通学生工作管理系统并导出为.doc文件

用Python开发南通学生工作管理系统并导出为.doc文件

学工管理系统在线试用
学工管理系统
在线试用
学工管理系统解决方案
学工管理系统
解决方案下载
学工管理系统源码
学工管理系统
源码授权
学工管理系统报价
学工管理系统
产品报价

大家好,今天咱们来聊一聊怎么用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等平台。不过那是另一个话题了,我们下次再聊。

希望这篇文章对你有帮助,如果你有任何问题,欢迎随时留言交流。祝你编程愉快!

本站部分内容及素材来源于互联网,如有侵权,联系必删!

标签:
首页
关于我们
在线试用
电话咨询