Python技术迷

用Python写一个带界面的宿舍管理系统

一个程序员必备的“小项目”——用Python写一个带界面的宿舍管理系统。

要知道,宿舍管理系统对学生和宿管人员来说可是必不可少的工具,尤其在大规模的校园里,如果没有一个高效的管理工具,那宿舍分配简直就是“千里之堤毁于蚁穴”。

今天,我就给大家展示如何通过Python,特别是使用Tkinter库,实现一个简单的宿舍管理系统。

Image

宿舍管理系统的核心代码

作为一个程序员,我觉得做一个简单的宿舍管理系统是个挺好的练习项目,能涵盖类的定义、对象的管理,甚至还能实现一些简单的界面交互功能。我们先从核心的功能代码说起。

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 messagebox

class 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高级架构师资料合集》。

资料包含了《IDEA视频教程》、《最全python面试题库》、《最全项目实战源码及视频》及《毕业设计系统源码》,总量高达650GB,全部免费领取。