客服热线:139 1319 1678

学工管理系统

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

25-12-06 07:18

嘿,朋友们!今天咱们来聊聊怎么用Python和SQLite做个学工管理系统,而且是跟泉州有关的。别看这标题有点技术味儿,其实我就是想给大家讲讲,怎么从零开始写一个能管理学生信息的小系统,还顺便教你怎么把数据存到.doc文件里。听起来是不是有点意思?那咱们就一步步来。

 

学工管理系统

首先,什么是“学工管理系统”呢?简单来说,就是一个用来管理学生信息、成绩、班级、老师等信息的系统。在泉州这样的城市,很多学校可能都用过类似的系统,但大多数都是比较传统的,比如用Excel或者Word来记录,这样效率低、容易出错。所以,我们今天的目标就是用Python和SQLite做一个更高效、更灵活的系统。

 

先说一下我们的开发环境。我们需要安装Python,还有SQLite数据库。如果你对这些不太熟悉也没关系,我会一步一步带你们走。另外,我们还会用到一些Python库,比如sqlite3(这个是Python自带的),还有pywin32,因为它可以帮助我们操作.doc文件。

 

那么,为什么选Python呢?因为Python语法简单,上手快,而且有很多现成的库可以使用。对于初学者来说,是个很好的选择。而SQLite是一个轻量级的数据库,不需要复杂的配置,非常适合做小型项目。再加上.doc文件,它是一种常见的文档格式,适合做数据导出或报告生成。

 

现在,我们先来创建一个简单的数据库结构。假设我们要管理的是学生的基本信息,包括学号、姓名、性别、班级、出生日期、联系方式等。那么,我们可以先建一个表,叫student_info。这个表的字段应该包括id(主键)、student_id(学号)、name(姓名)、gender(性别)、class(班级)、birthday(出生日期)、phone(电话)。

 

为了方便,我们可以先用Python代码来创建这个表。下面是一段示例代码:

 

    import sqlite3

    # 连接数据库,如果不存在则创建
    conn = sqlite3.connect('quanzhou_student.db')
    cursor = conn.cursor()

    # 创建学生信息表
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS student_info (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            student_id TEXT NOT NULL UNIQUE,
            name TEXT NOT NULL,
            gender TEXT,
            class TEXT,
            birthday DATE,
            phone TEXT
        )
    ''')

    # 提交更改
    conn.commit()
    

 

这段代码很简单,就是连接数据库,然后创建一个表。注意,这里用了`IF NOT EXISTS`,这样就不会重复创建了。同时,我们给student_id加了一个唯一约束,防止重复录入。

 

接下来,我们再写一段代码,用来添加学生信息到数据库中。比如说,我们有一个学生,学号是20230101,姓名是张三,性别是男,班级是高一(1)班,生日是2005-05-05,电话是13800000000。我们可以这样插入数据:

 

    def add_student(student_id, name, gender, class_name, birthday, phone):
        conn = sqlite3.connect('quanzhou_student.db')
        cursor = conn.cursor()
        cursor.execute('''
            INSERT INTO student_info (student_id, name, gender, class, birthday, phone)
            VALUES (?, ?, ?, ?, ?, ?)
        ''', (student_id, name, gender, class_name, birthday, phone))
        conn.commit()
        conn.close()
    

 

这里用到了参数化查询,避免SQL注入的问题。然后我们调用这个函数,把数据插入进去。

 

然后,我们还可以写一个查询功能,比如根据学号查询学生信息:

 

    def get_student_by_id(student_id):
        conn = sqlite3.connect('quanzhou_student.db')
        cursor = conn.cursor()
        cursor.execute('SELECT * FROM student_info WHERE student_id = ?', (student_id,))
        result = cursor.fetchone()
        conn.close()
        return result
    

 

这样,我们就有了基本的数据增删改查功能。不过,这只是基础,后面我们还可以扩展更多功能,比如批量导入数据、导出到.doc文件等等。

 

现在,我们来聊一下怎么把数据导出到.doc文件。因为.doc是微软Word的格式,我们可以用pywin32库来操作。首先,你需要安装这个库,可以用pip install pywin32。

 

举个例子,如果我们想要把所有学生的数据导出到一个.doc文件中,我们可以这样做:

 

    import win32com.client as win32

    def export_to_doc():
        # 创建Word应用程序
        word = win32.Dispatch('Word.Application')
        doc = word.Documents.Add()

        # 添加表格
        table = doc.Tables.Add(doc.Range(0, 0), 7, 6)  # 7行6列
        table.Cell(1, 1).Range.Text = "学号"
        table.Cell(1, 2).Range.Text = "姓名"
        table.Cell(1, 3).Range.Text = "性别"
        table.Cell(1, 4).Range.Text = "班级"
        table.Cell(1, 5).Range.Text = "出生日期"
        table.Cell(1, 6).Range.Text = "电话"

        # 查询所有学生
        conn = sqlite3.connect('quanzhou_student.db')
        cursor = conn.cursor()
        cursor.execute('SELECT * FROM student_info')
        rows = cursor.fetchall()
        conn.close()

        # 填充数据
        for i, row in enumerate(rows, start=2):
            for j in range(6):
                table.Cell(i, j+1).Range.Text = str(row[j])

        # 保存文档
        doc.SaveAs(r'C:\students.doc')
        doc.Close()
        word.Quit()
    

 

这段代码会创建一个新的Word文档,然后添加一个表格,把学生信息填进去,最后保存为students.doc。当然,你也可以根据需要修改表格样式、字体等。

 

不过,需要注意的是,pywin32依赖于Windows系统,如果你是在Linux或者Mac上运行,可能需要换一种方式,比如用python-docx库,它支持跨平台。那我们就用另一个例子来演示一下。

 

使用python-docx库的话,可以这样写:

 

    from docx import Document

    def export_to_docx():
        doc = Document()
        doc.add_heading('学生信息表', 0)

        table = doc.add_table(rows=1, cols=6)
        hdr_cells = table.rows[0].cells
        hdr_cells[0].text = '学号'
        hdr_cells[1].text = '姓名'
        hdr_cells[2].text = '性别'
        hdr_cells[3].text = '班级'
        hdr_cells[4].text = '出生日期'
        hdr_cells[5].text = '电话'

        conn = sqlite3.connect('quanzhou_student.db')
        cursor = conn.cursor()
        cursor.execute('SELECT * FROM student_info')
        rows = cursor.fetchall()
        conn.close()

        for row in rows:
            row_cells = table.add_row().cells
            row_cells[0].text = row[1]
            row_cells[1].text = row[2]
            row_cells[2].text = row[3]
            row_cells[3].text = row[4]
            row_cells[4].text = row[5]
            row_cells[5].text = row[6]

        doc.save('students.docx')
    

 

这样就可以生成一个.docx文件了,而且不依赖Windows系统。如果你是用Windows的话,两种方法都可以用,如果是其他系统,推荐用python-docx。

 

说到这里,我觉得咱们可以把这个系统做得更完善一点。比如增加一个图形界面,让用户更容易操作。我们可以用Tkinter来做前端,虽然不是特别炫酷,但够用。

 

比如,我们可以做一个简单的窗口,里面有输入框和按钮,用户输入学生信息,点击“添加”按钮,就会把数据存入数据库。然后再加一个“导出”按钮,点击之后就把数据导出到.doc文件。

 

下面是一个简单的Tkinter示例:

 

    import tkinter as tk
    from tkinter import messagebox

    def add_student():
        student_id = entry_id.get()
        name = entry_name.get()
        gender = entry_gender.get()
        class_name = entry_class.get()
        birthday = entry_birthday.get()
        phone = entry_phone.get()

        if not all([student_id, name, gender, class_name, birthday, phone]):
            messagebox.showerror("错误", "请填写所有字段")
            return

        try:
            add_student(student_id, name, gender, class_name, birthday, phone)
            messagebox.showinfo("成功", "学生信息已添加")
        except Exception as e:
            messagebox.showerror("错误", f"添加失败: {e}")

    def export_data():
        try:
            export_to_docx()
            messagebox.showinfo("成功", "数据已导出到students.docx")
        except Exception as e:
            messagebox.showerror("错误", f"导出失败: {e}")

    root = tk.Tk()
    root.title("泉州学工管理系统")

    tk.Label(root, text="学号:").grid(row=0, column=0)
    entry_id = tk.Entry(root)
    entry_id.grid(row=0, column=1)

    tk.Label(root, text="姓名:").grid(row=1, column=0)
    entry_name = tk.Entry(root)
    entry_name.grid(row=1, column=1)

    tk.Label(root, text="性别:").grid(row=2, column=0)
    entry_gender = tk.Entry(root)
    entry_gender.grid(row=2, column=1)

    tk.Label(root, text="班级:").grid(row=3, column=0)
    entry_class = tk.Entry(root)
    entry_class.grid(row=3, column=1)

    tk.Label(root, text="出生日期:").grid(row=4, column=0)
    entry_birthday = tk.Entry(root)
    entry_birthday.grid(row=4, column=1)

    tk.Label(root, text="电话:").grid(row=5, column=0)
    entry_phone = tk.Entry(root)
    entry_phone.grid(row=5, column=1)

    btn_add = tk.Button(root, text="添加", command=add_student)
    btn_add.grid(row=6, column=0)

    btn_export = tk.Button(root, text="导出到.docx", command=export_data)
    btn_export.grid(row=6, column=1)

    root.mainloop()
    

 

这个界面看起来挺简单的,但是确实能实现基本的功能。你可以通过这个界面输入学生信息,然后点击“添加”,数据就会被存到数据库里。再点“导出到.docx”,就能生成一个文档。

 

当然,这只是一个小系统,还有很多地方可以优化。比如,可以加入数据验证,防止用户输入错误;可以添加搜索功能,方便查找特定学生;还可以加入删除和修改功能,让系统更完整。

 

另外,如果你是泉州本地的开发者,或者学校正在寻找一个低成本的学工管理系统,这样的系统可以作为一个起点。你可以根据实际需求进一步扩展,比如接入微信小程序、网页端、甚至移动端。

 

总结一下,今天我们用Python和SQLite搭建了一个简单的学工管理系统,还学会了如何将数据导出到.doc文件中。虽然只是基础版本,但它已经具备了基本的数据管理能力,而且代码简单易懂,适合初学者学习和实践。

 

如果你对这个项目感兴趣,建议多动手试试,看看能不能加入更多功能。毕竟,编程最重要的就是实践。希望这篇文章对你有帮助,也欢迎你在评论区留言,分享你的想法或者遇到的问题。我们一起进步,一起探索更多的可能性!

 

最后,如果你觉得这个文章不错,记得点赞、收藏,或者转发给需要的朋友。感谢大家的阅读,我们下期再见!

智慧校园一站式解决方案

产品报价   解决方案下载   视频教学系列   操作手册、安装部署  

  微信扫码,联系客服