当前位置: 首页 > 新闻资讯  > 宿舍管理系统

手把手教你用Python打造校园宿舍管理系统并导出PDF

本文通过Python实现一个简单的校园宿舍管理系统,并展示如何将数据导出为PDF文件,方便宿舍管理。

大家好,今天我要给大家分享一个超级实用的小项目——“校园宿舍管理系统”。这玩意儿能帮咱们轻松管理宿舍信息,比如学生姓名、宿舍号啥的。而且最后还能把数据导出成PDF文件,方便打印或者存档。是不是很酷?

 

首先,咱们得准备好工具。这里我用的是Python,它简单易学又强大。另外,还会用到SQLite数据库来存储宿舍信息,还有PyPDF2库用来生成PDF。

 

咱们先从最基础的开始。首先创建一个SQLite数据库,用来存放宿舍信息。代码如下:

 

    import sqlite3

    # 连接到SQLite数据库(如果不存在则会自动创建)
    conn = sqlite3.connect('dormitory.db')
    cursor = conn.cursor()

    # 创建宿舍表
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS dormitory (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            name TEXT NOT NULL,
            room_number TEXT NOT NULL
        )
    ''')

    # 添加一些示例数据
    cursor.execute("INSERT INTO dormitory (name, room_number) VALUES (?, ?)", ('张三', 'A101'))
    cursor.execute("INSERT INTO dormitory (name, room_number) VALUES (?, ?)", ('李四', 'B202'))

    # 提交更改并关闭连接
    conn.commit()
    conn.close()
    

 

接下来就是编写一个函数,用于查询宿舍信息并生成PDF。这里需要用到reportlab库,它可以轻松生成PDF文件。安装方法很简单,直接pip install reportlab就行。

 

    from reportlab.pdfgen import canvas

    def generate_pdf():
        # 打开数据库连接
        conn = sqlite3.connect('dormitory.db')
        cursor = conn.cursor()

        # 查询所有宿舍信息
        cursor.execute("SELECT * FROM dormitory")
        data = cursor.fetchall()

        # 创建PDF文件
        pdf = canvas.Canvas("dormitory_list.pdf")

        # 设置字体大小
        pdf.setFont("Helvetica", 12)

        # 写入标题
        pdf.drawString(100, 750, "宿舍信息列表")

        # 写入表格数据
        y_position = 700
        for row in data:
            pdf.drawString(100, y_position, f"ID: {row[0]}, 姓名: {row[1]}, 宿舍号: {row[2]}")
            y_position -= 20

        # 保存PDF文件
        pdf.save()

        print("PDF文件已生成!")

    if __name__ == "__main__":
        generate_pdf()
    

校园宿舍管理系统

 

运行完这段代码后,你会在当前目录下看到一个名为“dormitory_list.pdf”的文件。打开一看,里面包含了所有宿舍的信息,是不是特别方便?

 

总结一下,咱们用Python创建了一个简单的宿舍管理系统,还学会了如何把数据导出成PDF文件。这个功能不仅适用于学校,也可以用在公司、图书馆等地方。希望你们喜欢这个小项目!

 

如果你想进一步扩展这个系统,可以试试添加更多功能,比如删除或修改宿舍信息之类的。总之,编程的世界无限广阔,大家加油吧!

相关资讯

    暂无相关的数据...