用Python写个学生宿舍管理系统(附源码)

今天我们用Python写个简单的学生宿舍管理系统。

学生宿舍管理系统可以包括学生信息管理、宿舍信息管理、评价管理等功能。以下是一个简单的Python实现:

class Student:  
    def __init__(self, name, age, gender, id):  
        self.name = name  
        self.age = age  
        self.gender = gender  
        self.id = id  
  
class Dorm:  
    def __init__(self, name, floor, capacity):  
        self.name = name  
        self.floor = floor  
        self.capacity = capacity  
        self.students = []  
  
    def add_student(self, student):  
        if len(self.students)< self.capacity:  
            self.students.append(student)  
        else:  
            print("宿舍已满,无法添加学生。")  
  
    def remove_student(self, student):  
        if student in self.students:  
            self.students.remove(student)  
        else:  
            print("学生不在此宿舍,无法移除。")  
  
    def get_students(self):  
        return self.students  
  
class DormManagementSystem:  
    def __init__(self):  
        self.dorms = []  
        self.students = []  
  
    def add_dorm(self, dorm):  
        self.dorms.append(dorm)  
  
    def add_student(self, student):  
        self.students.append(student)  
  
    def assign_student_to_dorm(self, student, dorm):  
        if student in self.students and dorm in self.dorms:  
            dorm.add_student(student)  
        else:  
            print("学生或宿舍不存在,无法分配。")  
  
    def remove_student_from_dorm(self, student, dorm):  
        if student in self.students and dorm in self.dorms:  
            dorm.remove_student(student)  
        else:  
            print("学生或宿舍不存在,无法移除。")  
  
    def get_dorm_students(self, dorm):  
        if dorm in self.dorms:  
            return dorm.get_students()  
        else:  
            print("宿舍不存在。")  
  
# 示例  
dms = DormManagementSystem()  
  
# 添加宿舍和学生  
dms.add_dorm(Dorm("A楼1号楼", 1, 6))  
dms.add_dorm(Dorm("A楼2号楼", 2, 6))  
dms.add_student(Student("张三", 20, "男", "20230001"))  
dms.add_student(Student("李四", 21, "女", "20230002"))  
  
# 分配学生到宿舍  
dms.assign_student_to_dorm(dms.students[0], dms.dorms[0])  
dms.assign_student_to_dorm(dms.students[1], dms.dorms[1])  
  
# 获取宿舍学生信息  
print(dms.get_dorm_students(dms.dorms[0]))  
  
# 移除宿舍学生  
dms.remove_student_from_dorm(dms.students[0], dms.dorms[0])  

这个示例中,我们定义了三个类:StudentDormDormManagementSystemStudent表示学生,Dorm表示宿舍,DormManagementSystem表示学生宿舍管理系统。

DormManagementSystem类包括添加宿舍、添加学生、分配学生到宿舍、移除宿舍学生、获取宿舍学生信息等方法。

在示例中,我们创建了一个DormManagementSystem实例,添加了两个宿舍和两个学生,然后将学生分配到宿舍,并获取宿舍学生信息。

我们可以使用Python的Tkinter库来实现一个简单的GUI界面。以下是一个示例:

import tkinter as tk  
from tkinter import ttk  
  
class Student:  
    def __init__(self, name, age, gender, id):  
        self.name = name  
        self.age = age  
        self.gender = gender  
        self.id = id  
  
class Dorm:  
    def __init__(self, name, floor, capacity):  
        self.name = name  
        self.floor = floor  
        self.capacity = capacity  
        self.students = []  
  
    def add_student(self, student):  
        if len(self.students)< self.capacity:  
            self.students.append(student)  
        else:  
            print("宿舍已满,无法添加学生。")  
  
    def remove_student(self, student):  
        if student in self.students:  
            self.students.remove(student)  
        else:  
            print("学生不在此宿舍,无法移除。")  
  
    def get_students(self):  
        return self.students  
  
class DormManagementSystem:  
    def __init__(self):  
        self.dorms = []  
        self.students = []  
  
    def add_dorm(self, dorm):  
        self.dorms.append(dorm)  
  
    def add_student(self, student):  
        self.students.append(student)  
  
    def assign_student_to_dorm(self, student, dorm):  
        if student in self.students and dorm in self.dorms:  
            dorm.add_student(student)  
        else:  
            print("学生或宿舍不存在,无法分配。")  
  
    def remove_student_from_dorm(self, student, dorm):  
        if student in self.students and dorm in self.dorms:  
            dorm.remove_student(student)  
        else:  
            print("学生或宿舍不存在,无法移除。")  
  
    def get_dorm_students(self, dorm):  
        if dorm in self.dorms:  
            return dorm.get_students()  
        else:  
            print("宿舍不存在。")  
  
class DormManagementGUI:  
    def __init__(self, dms):  
        self.dms = dms  
        self.window = tk.Tk()  
        self.window.title("学生宿舍管理系统")  
  
        # 添加宿舍按钮  
        self.add_dorm_button = ttk.Button(self.window, text="添加宿舍", command=self.add_dorm)  
        self.add_dorm_button.grid(column=0, row=0)  
  
        # 添加学生按钮  
        self.add_student_button = ttk.Button(self.window, text="添加学生", command=self.add_student)  
        self.add_student_button.grid(column=1, row=0)  
  
        # 分配学生到宿舍按钮  
        self.assign_student_button = ttk.Button(self.window, text="分配学生到宿舍", command=self.assign_student_to_dorm)  
        self.assign_student_button.grid(column=0, row=1)  
  
        # 移除宿舍学生按钮  
        self.remove_student_button = ttk.Button(self.window, text="移除宿舍学生", command=self.remove_student_from_dorm)  
        self.remove_student_button.grid(column=1, row=1)  
  
        # 获取宿舍学生信息按钮  
        self.get_dorm_students_button = ttk.Button(self.window, text="获取宿舍学生信息", command=self.get_dorm_students)  
        self.get_dorm_students_button.grid(column=0, row=2)  
  
        self.window.mainloop()  
  
    def add_dorm(self):  
        pass  
  
    def add_student(self):  
        pass  
  
    def assign_student_to_dorm(self):  
        pass  
  
    def remove_student_from_dorm(self):  
        pass  
  
    def get_dorm_students(self):  
        pass  
  
# 示例  
dms = DormManagementSystem()  
gui = DormManagementGUI(dms)  

这个示例中,我们定义了一个DormManagementGUI类,用于创建GUI界面。在__init__方法中,我们创建了一个窗口,并添加了添加宿舍、添加学生、分配学生到宿舍、移除宿舍学生、获取宿舍学生信息等按钮。每个按钮都有一个对应的方法,用于实现相应的功能。

接着我们可以在DormManagementGUI类中添加输入框和列表框等控件,以便用户输入信息和查看结果。以下是一个示例:

import tkinter as tk  
from tkinter import ttk  
  
class Student:  
    def __init__(self, name, age, gender, id):  
        self.name = name  
        self.age = age  
        self.gender = gender  
        self.id = id  
  
class Dorm:  
    def __init__(self, name, floor, capacity):  
        self.name = name  
        self.floor = floor  
        self.capacity = capacity  
        self.students = []  
  
    def add_student(self, student):  
        if len(self.students)< self.capacity:  
            self.students.append(student)  
        else:  
            print("宿舍已满,无法添加学生。")  
  
    def remove_student(self, student):  
        if student in self.students:  
            self.students.remove(student)  
        else:  
            print("学生不在此宿舍,无法移除。")  
  
    def get_students(self):  
        return self.students  
  
class DormManagementSystem:  
    def __init__(self):  
        self.dorms = []  
        self.students = []  
  
    def add_dorm(self, dorm):  
        self.dorms.append(dorm)  
  
    def add_student(self, student):  
        self.students.append(student)  
  
    def assign_student_to_dorm(self, student, dorm):  
        if student in self.students and dorm in self.dorms:  
            dorm.add_student(student)  
        else:  
            print("学生或宿舍不存在,无法分配。")  
  
    def remove_student_from_dorm(self, student, dorm):  
        if student in self.students and dorm in self.dorms:  
            dorm.remove_student(student)  
        else:  
            print("学生或宿舍不存在,无法移除。")  
  
    def get_dorm_students(self, dorm):  
        if dorm in self.dorms:  
            return dorm.get_students()  
        else:  
            print("宿舍不存在。")  
  
class DormManagementGUI:  
    def __init__(self, dms):  
        self.dms = dms  
        self.window = tk.Tk()  
        self.window.title("学生宿舍管理系统")  
  
        # 添加宿舍按钮  
        self.add_dorm_button = ttk.Button(self.window, text="添加宿舍", command=self.add_dorm)  
        self.add_dorm_button.grid(column=0, row=0)  
  
        # 添加学生按钮  
        self.add_student_button = ttk.Button(self.window, text="添加学生", command=self.add_student)  
        self.add_student_button.grid(column=1, row=0)  
  
        # 分配学生到宿舍按钮  
        self.assign_student_button = ttk.Button(self.window, text="分配学生到宿舍", command=self.assign_student_to_dorm)  
        self.assign_student_button.grid(column=0, row=1)  
  
        # 移除宿舍学生按钮  
        self.remove_student_button = ttk.Button(self.window, text="移除宿舍学生", command=self.remove_student_from_dorm)  
        self.remove_student_button.grid(column=1, row=1)  
  
        # 获取宿舍学生信息按钮  
        self.get_dorm_students_button = ttk.Button(self.window, text="获取宿舍学生信息", command=self.get_dorm_students)  
        self.get_dorm_students_button.grid(column=0, row=2)  
  
        # 添加宿舍名称输入框  
        self.dorm_name_label = ttk.Label(self.window, text="宿舍名称:")  
        self.dorm_name_label.grid(column=0, row=3)  
        self.dorm_name_entry = ttk.Entry(self.window)  
        self.dorm_name_entry.grid(column=1, row=3)  
  
        # 添加宿舍楼层输入框  
        self.dorm_floor_label = ttk.Label(self.window, text="宿舍楼层:")  
        self.dorm_floor_label.grid(column=0, row=4)  
        self.dorm_floor_entry = ttk.Entry(self.window)  
        self.dorm_floor_entry.grid(column=1, row=4)  
  
        # 添加宿舍容量输入框  
        self.dorm_capacity_label = ttk.Label(self.window, text="宿舍容量:")  
        self.dorm_capacity_label.grid(column=0, row=5)  
        self.dorm_capacity_entry = ttk.Entry(self.window)  
        self.dorm_capacity_entry.grid(column=1, row=5)  
  
        # 添加学生姓名输入框  
        self.student_name_label = ttk.Label(self.window, text="学生姓名:")  
        self.student_name_label.grid(column=0, row=6)  
        self.student_name_entry = ttk.Entry(self.window)  
        self.student_name_entry.grid(column=1, row=6)  
  
        # 添加学生年龄输入框  
        self.student_age_label = ttk.Label(self.window, text="学生年龄:")  
        self.student_age_label.grid(column=0, row=7)  
        self.student_age_entry = ttk.Entry(self.window)  
        self.student_age_entry.grid(column=1, row=7)  
  
        # 添加学生性别输入框  
        self.student_gender_label = ttk.Label(self.window, text="学生性别:")  
        self.student_gender_label.grid(column=0, row=8)  
        self.student_gender_entry = ttk.Entry(self.window)  
        self.student_gender_entry.grid(column=1, row=8)  
  
        # 添加学生ID输入框  
        self.student_id_label = ttk.Label(self.window, text="学生ID:")  
        self.student_id_label.grid(column=0, row=9)  
        self.student_id_entry = ttk.Entry(self.window)  
        self.student_id_entry.grid(column=1, row=9)  
  
        # 添加宿舍列表框  
        self.dorm_listbox = tk.Listbox(self.window, height=5, width=20)  
        self.dorm_listbox.grid(column=2, row=0, rowspan=5)  
  
        # 添加学生列表框  
        self.student_listbox = tk.Listbox(self.window, height=5, width=20)  
        self.student_listbox.grid(column=2, row=5, rowspan=5)  
  
        self.window.mainloop()  
  
    def add_dorm(self):  
        dorm_name = self.dorm_name_entry.get()  
        dorm_floor = self.dorm_floor_entry.get()  
        dorm_capacity = self.dorm_capacity_entry.get()  
        dorm = Dorm(dorm_name, dorm_floor, dorm_capacity)  
        self.dms.add_dorm(dorm)  
        self.dorm_listbox.insert(tk.END, dorm_name)  
  
    def add_student(self):  
        student_name = self.student_name_entry.get()  
        student_age = self.student_age_entry.get()  
        student_gender = self.student_gender_entry.get()  
        student_id = self.student_id_entry.get()  
        student = Student(student_name, student_age, student_gender, student_id)  
        self.dms.add_student(student)  
        self.student_listbox.insert(tk.END, student_name)  
  
    def assign_student_to_dorm(self):  
        dorm_name = self.dorm_listbox.get(tk.ACTIVE)  
        student_name = self.student_listbox.get(tk.ACTIVE)  
        dorm = self.dms.get_dorm(dorm_name)  
        student = self.dms.get_student(student_name)  
        self.dms.assign_student_to_dorm(student, dorm)  
  
    def remove_student_from_dorm(self):  
        dorm_name = self.dorm_listbox.get(tk.ACTIVE)  
        student_name = self.student_listbox.get(tk.ACTIVE)  
        dorm = self.dms.get_dorm(dorm_name)  
        student = self.dms.get_student(student_name)  
        self.dms.remove_student_from_dorm(student, dorm)  
  
    def get_dorm_students(self):  
        dorm_name = self.dorm_listbox.get(tk.ACTIVE)  
        dorm = self.dms.get_dorm(dorm_name)  
        students = self.dms.get_dorm_students(dorm)  
        for student in students:  
            print(student.name)  
  
# 示例  
dms = DormManagementSystem()  
gui = DormManagementGUI(dms) 

这个示例中,我们在DormManagementGUI类中添加了输入框和列表框等控件,以便用户输入信息和查看结果。

这样我们就实现了一个简单的学生宿舍管理系统了,大家有兴趣的可以做进一步的完善。

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
若有侵权,请联系删除
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值