嘿,朋友们!今天我要跟大家聊聊怎么用Python写一个学生宿舍管理系统,然后还能把这个系统的数据导出成docx文件。听起来是不是有点高大上?其实啊,只要咱们一步一步来,真的不难。
首先,我得说一下,这个系统是干嘛的。它主要是用来管理学生宿舍的信息,比如学生的姓名、学号、宿舍号、房间类型等等。你可能会问:“为什么要写这个系统?”嗯,因为学校里宿舍信息管理确实挺麻烦的,手动整理太费时间了,而且容易出错。所以如果能有一个程序来自动处理这些信息,那可就方便多了。
接下来,咱们先从最基础的部分开始讲起——代码。我打算用Python来写这个系统,因为它语法简单,功能强大,而且有很多现成的库可以用。特别是要生成docx文件的话,我推荐大家用python-docx这个库,它真的很友好,用起来特别顺手。
首先,我们得定义一个学生类。这一步很重要,因为我们要把每个学生的信息都保存下来。你可以想象一下,每个学生都有自己的属性,比如姓名、学号、宿舍号、房间类型、是否入住等等。那我们就用Python的类来把这些信息组织起来。
比如,下面这段代码就是定义了一个Student类:
class Student:
def __init__(self, name, student_id, dorm_number, room_type, is_occupied):
self.name = name
self.student_id = student_id
self.dorm_number = dorm_number
self.room_type = room_type
self.is_occupied = is_occupied
def __str__(self):
return f"{self.name} - {self.student_id}, 宿舍{self.dorm_number}, {self.room_type}, {'已入住' if self.is_occupied else '未入住'}"
你看,这个Student类是不是很直观?我们用__init__方法初始化每个学生的信息,再用__str__方法来让输出更美观一点。这样,当我们打印学生信息的时候,就会看到一个清晰的字符串。
接下来,我们需要一个宿舍管理的类。这个类可以用来添加学生、删除学生、查询学生信息,甚至还可以根据不同的条件来筛选学生。比如说,我们可以按宿舍号来查找所有住在某个宿舍的学生,或者找出所有未入住的学生。
下面是DormManager类的代码示例:
class DormManager:
def __init__(self):
self.students = []
def add_student(self, student):
self.students.append(student)
def remove_student(self, student_id):
for student in self.students:
if student.student_id == student_id:
self.students.remove(student)
return True
return False
def find_students_by_dorm(self, dorm_number):
return [student for student in self.students if student.dorm_number == dorm_number]
def find_unoccupied_students(self):
return [student for student in self.students if not student.is_occupied]
这个DormManager类是不是也很简单?我们用了列表来存储学生信息,然后通过各种方法来操作这些数据。比如add_student就是添加学生,remove_student就是根据学号删除学生,find_students_by_dorm就是根据宿舍号查找学生,而find_unoccupied_students则是找那些没入住的学生。
现在,我们已经有了一个基本的宿舍管理系统了。不过,光有这些还不够,我们还需要一个用户界面,让用户能够方便地操作这个系统。虽然我们没有图形界面,但可以用简单的命令行交互来实现。
比如,我们可以写一个主函数,让用户输入命令来执行不同的操作。比如输入“1”来添加学生,输入“2”来删除学生,输入“3”来查找学生,输入“4”来导出为docx文件,输入“5”来退出程序。
下面是一个简单的主函数示例:
def main():
manager = DormManager()
while True:
print("\n学生宿舍管理系统")
print("1. 添加学生")
print("2. 删除学生")
print("3. 查找学生")
print("4. 导出为docx")
print("5. 退出")
choice = input("请选择操作:")
if choice == "1":
name = input("请输入学生姓名:")
student_id = input("请输入学号:")
dorm_number = input("请输入宿舍号:")
room_type = input("请输入房间类型(单人间/双人间):")
is_occupied = input("是否入住?(y/n):").lower() == 'y'
student = Student(name, student_id, dorm_number, room_type, is_occupied)
manager.add_student(student)
print("学生信息已添加。")

elif choice == "2":
student_id = input("请输入要删除的学号:")
if manager.remove_student(student_id):
print("学生信息已删除。")
else:
print("未找到该学生。")
elif choice == "3":
dorm_number = input("请输入要查找的宿舍号:")
students = manager.find_students_by_dorm(dorm_number)
if students:
for student in students:
print(student)
else:
print("未找到相关学生。")
elif choice == "4":
# 导出为docx
from docx import Document
doc = Document()
doc.add_heading('学生宿舍管理系统', 0)
table = doc.add_table(rows=1, cols=5)
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 = '是否入住'
for student in manager.students:
row_cells = table.add_row().cells
row_cells[0].text = student.name
row_cells[1].text = student.student_id
row_cells[2].text = student.dorm_number
row_cells[3].text = student.room_type
row_cells[4].text = '是' if student.is_occupied else '否'
doc.save('students.docx')
print("数据已成功导出为students.docx文件。")
elif choice == "5":
print("感谢使用,再见!")
break
else:
print("无效选项,请重新选择。")
你看,这个主函数是不是很直观?我们在里面用到了一些基本的输入输出操作,还用到了python-docx库来生成docx文件。特别是导出部分,我们创建了一个文档,添加了一个标题,然后创建了一张表格,把所有学生的信息都填进去,最后保存成students.docx文件。
不过,这里有个小问题需要注意。就是当用户运行这段代码的时候,必须已经安装了python-docx库。如果没有安装的话,会报错。那怎么办呢?很简单,只需要在终端里运行pip install python-docx就可以了。
接下来,我想说的是,这个系统虽然简单,但它已经具备了基本的功能。如果你觉得不够完善,可以继续扩展。比如,可以加入更多的查询条件,比如按房间类型来筛选学生,或者按是否入住来筛选。还可以增加保存和读取功能,这样即使程序关闭后,数据也不会丢失。
另外,也可以考虑用更复杂的数据库来存储数据,比如SQLite,这样数据持久化会更方便。不过对于现在的例子来说,用列表已经足够了。
总的来说,这个学生宿舍管理系统虽然简单,但已经涵盖了大部分实际应用中需要的功能。而且,通过导出为docx文件,我们可以把系统中的数据以一种更易读、更专业的形式呈现出来,非常适合用于报告或统计分析。
最后,我再给大家提个建议。如果你对Python不太熟悉,建议先学习一些基础知识,比如类、函数、循环、条件语句等。这样在看这段代码的时候就不会那么吃力了。同时,多动手实践,遇到问题不要怕,网上有很多资源可以帮助你解决。
好了,今天的分享就到这里。希望这篇文章对你有所帮助,也希望大家都能尝试着自己动手写点东西,你会发现编程真的很有意思!
