用Python开发一个迎新管理系统,结合.doc文件处理的实战指南
大家好,今天咱们来聊聊怎么用Python写一个迎新管理系统,而且还要和.doc文件打交道。别担心,我不会太技术化地讲,咱们就聊得像朋友一样,轻松一点。

首先,什么是迎新管理系统呢?简单来说,就是学校或者企业为了迎接新员工或新生,用来管理他们信息的一个系统。比如登记基本信息、分配宿舍、安排培训等等。听起来是不是挺常见的?但实际做起来,其实也挺有意思的。
那为什么我要提到.doc文件呢?因为很多单位在处理这类信息的时候,还是习惯用Word文档,比如发通知、发资料、做名单之类的。所以我们的系统可能需要生成或者读取.doc文件,方便用户直接查看或打印。
好的,接下来咱们就开始动手了。先说一下我们的目标:做一个简单的迎新管理系统,可以添加学生信息,保存到数据库,然后还能导出成.doc文件,这样方便打印和分发。
一、环境准备
首先,你得安装Python。如果你还没装的话,去官网下载就行。推荐用3.8以上版本,比较稳定。然后还需要几个库,比如python-docx,这个是用来处理.doc文件的。还有sqlite3,这是Python自带的数据库,不用额外安装。
不过,如果你想用更强大的数据库,比如MySQL或者PostgreSQL,也可以,但为了简单起见,我们先用sqlite3吧。
二、项目结构
咱们的项目大概会分成几个部分:
主程序:负责用户交互
数据库模块:处理数据存储和查询
文档生成模块:把数据导出为.doc文件
这样分模块的好处是代码更清晰,也方便以后扩展。
三、代码实现

咱们先从最基础的部分开始,也就是创建数据库。这里我们会用sqlite3,因为它简单又方便。
import sqlite3
def create_table():
conn = sqlite3.connect('new_students.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
student_id TEXT,
department TEXT,
dormitory TEXT
)
''')
conn.commit()
conn.close()
create_table()
这段代码的作用是创建一个名为students的表,里面有学生的姓名、学号、院系和宿舍信息。如果表已经存在,就不会重复创建。
接下来是添加学生信息的功能。我们可以写一个函数,让用户输入信息,然后插入到数据库里。
def add_student(name, student_id, department, dormitory):
conn = sqlite3.connect('new_students.db')
cursor = conn.cursor()
cursor.execute('INSERT INTO students (name, student_id, department, dormitory) VALUES (?, ?, ?, ?)',
(name, student_id, department, dormitory))
conn.commit()
conn.close()
# 示例调用
add_student('张三', '2023001', '计算机学院', '3号楼A区')
这样,你就把一个学生的信息存进去了。是不是很简单?
接下来是查询功能。比如你想查所有学生的信息,或者按学号查某个学生。
def get_all_students():
conn = sqlite3.connect('new_students.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM students')
rows = cursor.fetchall()
conn.close()
return rows
# 示例调用
for student in get_all_students():
print(student)
这样就能看到所有学生的信息了。你可以根据需要修改查询条件。
现在,重点来了,怎么把数据导出成.doc文件呢?这就需要用到python-docx这个库了。
首先,你需要安装它。打开终端,运行:
pip install python-docx
然后,我们写一个函数,把数据库里的数据导出到.doc文件中。
from docx import Document
def export_to_doc():
conn = sqlite3.connect('new_students.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM students')
rows = cursor.fetchall()
conn.close()
doc = Document()
doc.add_heading('迎新学生名单', 0)
table = doc.add_table(rows=len(rows)+1, cols=4)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '姓名'
hdr_cells[1].text = '学号'
hdr_cells[2].text = '院系'
hdr_cells[3].text = '宿舍'
for i, row in enumerate(rows):
cells = table.rows[i+1].cells
cells[0].text = row[1]
cells[1].text = row[2]
cells[2].text = row[3]
cells[3].text = row[4]
doc.save('student_list.docx')
print("导出成功!文件已保存为 student_list.docx")
# 示例调用
export_to_doc()
这段代码会生成一个.docx文件,里面有一个表格,显示所有学生的姓名、学号、院系和宿舍信息。你可以在Word里打开看看效果。
好了,到这里为止,我们已经完成了迎新管理系统的基本功能:添加学生信息、查询信息、导出为.docx文件。
四、用户交互界面
现在,我们再加个简单的命令行界面,让用户能通过输入数字选择功能。
def main():
while True:
print("\n欢迎使用迎新管理系统")
print("1. 添加学生信息")
print("2. 查看所有学生")
print("3. 导出为.docx文件")
print("4. 退出")
choice = input("请选择操作(1-4):")
if choice == '1':
name = input("请输入姓名:")
student_id = input("请输入学号:")
department = input("请输入院系:")
dormitory = input("请输入宿舍:")
add_student(name, student_id, department, dormitory)
print("信息已添加!")
elif choice == '2':
print("\n学生信息如下:")
for student in get_all_students():
print(f"姓名:{student[1]} | 学号:{student[2]} | 院系:{student[3]} | 宿舍:{student[4]}")
elif choice == '3':
export_to_doc()
elif choice == '4':
print("感谢使用,再见!")
break
else:
print("无效选项,请重新输入!")
if __name__ == "__main__":
main()
这样,用户就可以通过命令行和系统互动了。虽然看起来有点简陋,但对于一个小型系统来说已经够用了。
五、总结与拓展建议
今天咱们一起做了一个迎新管理系统,主要用到了Python的sqlite3和python-docx这两个库。整个过程不算复杂,但涉及到数据库操作、用户交互和文档处理,算是一个不错的练习项目。
当然,这只是一个基础版本。如果你想让它更强大,可以考虑以下几点:
加入图形界面(比如用Tkinter或PyQt)
支持导入Excel或CSV文件
增加权限管理,比如管理员和普通用户的区别
集成邮件发送功能,自动发送通知给学生
总之,这个项目是一个很好的起点,适合初学者练手,也能帮助你理解一些实际开发中的常见问题。
如果你对Python感兴趣,或者想了解如何处理文档,这篇文章应该对你有帮助。希望你能动手试试,说不定以后你就是这个系统的开发者了!
本站知识库部分内容及素材来源于互联网,如有侵权,联系必删!

