用Python写一个带界面的宿舍管理系统
一个程序员必备的“小项目”——用Python写一个带界面的宿舍管理系统。
要知道,宿舍管理系统对学生和宿管人员来说可是必不可少的工具,尤其在大规模的校园里,如果没有一个高效的管理工具,那宿舍分配简直就是“千里之堤毁于蚁穴”。
今天,我就给大家展示如何通过Python,特别是使用Tkinter库,实现一个简单的宿舍管理系统。
宿舍管理系统的核心代码
作为一个程序员,我觉得做一个简单的宿舍管理系统是个挺好的练习项目,能涵盖类的定义、对象的管理,甚至还能实现一些简单的界面交互功能。我们先从核心的功能代码说起。
1. 类定义
首先,我们需要设计几个类来帮助我们实现宿舍管理系统。就像写程序的时候,我们总得把功能模块拆开,每个模块都有自己的职责。这里,我给大家设计了三个核心类:
Dormitory类:表示一个宿舍,它会存储宿舍名称、宿舍容量以及宿舍内的学生列表。Student类:表示一个学生,主要包含学生姓名和学生ID。DormitoryManager类:这是宿舍管理的核心,负责宿舍的创建、学生的分配以及宿舍信息的查询。
# 学生类
class Student:
def __init__(self, name, student_id):
self.name = name # 学生姓名
self.student_id = student_id # 学生ID# 宿舍类
class Dormitory:
def __init__(self, name, capacity):
self.name = name # 宿舍名称
self.capacity = capacity # 宿舍容量
self.students = [] # 宿舍学生列表
def add_student(self, student):
"""向宿舍中添加学生"""
if len(self.students) < self.capacity:
self.students.append(student)
print(f"{student.name} 已经分配到宿舍 {self.name} 了!")
else:
print(f"宿舍 {self.name} 已经满员,无法分配!")
def get_students(self):
"""获取宿舍内所有学生"""
return [student.name for student in self.students]
# 宿舍管理类
class DormitoryManager:
def __init__(self):
self.dormitories = [] # 宿舍列表
def add_dormitory(self, dormitory):
"""添加宿舍"""
self.dormitories.append(dormitory)
print(f"宿舍 {dormitory.name} 已添加!")
def allocate_dormitory(self, student, dormitory_name):
"""为学生分配宿舍"""
dormitory = next((d for d in self.dormitories if d.name == dormitory_name), None)
if dormitory:
dormitory.add_student(student)
else:
print(f"宿舍 {dormitory_name} 不存在!")
def get_dormitory_students(self, dormitory_name):
"""查看宿舍内的学生列表"""
dormitory = next((d for d in self.dormitories if d.name == dormitory_name), None)
if dormitory:
return dormitory.get_students()
else:
print(f"宿舍 {dormitory_name} 不存在!")
return []
2. 功能实现
通过上述代码,我们已经完成了宿舍、学生、宿舍管理的基础功能。接下来,看看每个功能如何运作:
Dormitory.add_student():将学生添加到宿舍。如果宿舍已经满员,则无法继续添加。Dormitory.get_students():获取宿舍中的所有学生。DormitoryManager.add_dormitory():添加一个新宿舍。DormitoryManager.allocate_dormitory():为某个学生分配宿舍。DormitoryManager.get_dormitory_students():查看某个宿舍的所有学生。
接下来,我们可以进行测试,创建宿舍管理器,添加宿舍和学生,并进行宿舍分配。
# 创建宿舍管理器实例
manager = DormitoryManager()# 添加宿舍
dorm1 = Dormitory("A楼-101", 3)
dorm2 = Dormitory("B楼-202", 2)
manager.add_dormitory(dorm1)
manager.add_dormitory(dorm2)
# 创建学生
student1 = Student("张三", "202101")
student2 = Student("李四", "202102")
student3 = Student("王五", "202103")
# 分配宿舍
manager.allocate_dormitory(student1, "A楼-101")
manager.allocate_dormitory(student2, "A楼-101")
manager.allocate_dormitory(student3, "A楼-101") # 超过容量的情况
# 查看宿舍学生
print(f"A楼-101的学生: {manager.get_dormitory_students('A楼-101')}")
3. 系统测试
运行这段代码,你会发现:
当宿舍容量满时,学生无法再分配进去,系统会提示“宿舍已满”。 你可以查看每个宿舍里的学生信息。
这个部分其实就是系统的核心逻辑,基本上可以解决宿舍分配的需求了。
宿舍管理系统的GUI界面
说到GUI,这可是程序员最喜欢的一部分。毕竟,界面好看了,用户体验才会更好,宿舍管理员也能更高效地管理宿舍。我决定使用Python的Tkinter库来实现图形界面。
GUI设计
我们需要创建一个窗口,用户可以输入宿舍名称和容量,点击按钮来添加宿舍。通过Tkinter,我们可以非常轻松地实现这些功能。
import tkinter as tk
from tkinter import messageboxclass DormitoryApp:
def __init__(self, root):
self.root = root
self.manager = DormitoryManager()
# 设置窗口
self.root.title("宿舍管理系统")
self.root.geometry("400x300")
# 宿舍名称输入框
self.dorm_name_label = tk.Label(root, text="宿舍名称")
self.dorm_name_label.pack(pady=10)
self.dorm_name_entry = tk.Entry(root)
self.dorm_name_entry.pack()
# 宿舍容量输入框
self.dorm_capacity_label = tk.Label(root, text="宿舍容量")
self.dorm_capacity_label.pack(pady=10)
self.dorm_capacity_entry = tk.Entry(root)
self.dorm_capacity_entry.pack()
# 添加宿舍按钮
self.add_dorm_button = tk.Button(root, text="添加宿舍", command=self.add_dormitory)
self.add_dorm_button.pack(pady=20)
def add_dormitory(self):
dorm_name = self.dorm_name_entry.get()
dorm_capacity = self.dorm_capacity_entry.get()
if dorm_name and dorm_capacity.isdigit():
dorm_capacity = int(dorm_capacity)
dorm = Dormitory(dorm_name, dorm_capacity)
self.manager.add_dormitory(dorm)
messagebox.showinfo("成功", f"宿舍 {dorm_name} 添加成功!")
else:
messagebox.showerror("错误", "请输入有效的宿舍名称和容量!")
界面功能
用户可以输入宿舍名称和容量。 点击“添加宿舍”按钮后,宿舍会被添加到管理系统中。 弹出提示框,显示宿舍添加是否成功。
4. 完整代码
下面是完整的宿舍管理系统代码,包含核心功能和图形界面:
import tkinter as tk
from tkinter import messagebox# 定义Student、Dormitory和DormitoryManager类(见前文)
# 定义DormitoryApp类(见前文)
if __name__ == "__main__":
root = tk.Tk()
app = DormitoryApp(root)
root.mainloop()
总结
通过这篇文章,我给大家展示了如何用Python开发一个带GUI界面的宿舍管理系统。你不但学到了如何设计和实现宿舍管理的核心功能,还通过Tkinter实现了一个简单的界面,让宿舍管理员能够方便地管理宿舍信息。
相信大家看完之后,自己也能动手实现一个类似的系统,甚至在这个基础上加入更多高级功能!😎
对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》。