由于题目不够明确,以下代码仅作为参考,并不能完全满足所有需要。

图书馆志愿者管理系统

class Volunteer: def init(self, name): self.name = name self.status = 'available' self.shift = None

def assign_shift(self, shift):
    self.status = 'busy'
    self.shift = shift

def change_shift(self, shift):
    self.shift = shift

def leave(self):
    self.status = 'available'
    self.shift = None

class Shift: def init(self, date, start_time, end_time, volunteers=[]): self.date = date self.start_time = start_time self.end_time = end_time self.volunteers = volunteers

def add_volunteer(self, volunteer):
    self.volunteers.append(volunteer)
    volunteer.assign_shift(self)

def remove_volunteer(self, volunteer):
    self.volunteers.remove(volunteer)
    volunteer.leave()

class Library: def init(self, shifts=[]): self.shifts = shifts

def add_shift(self, shift):
    self.shifts.append(shift)

def remove_shift(self, shift):
    self.shifts.remove(shift)

def change_volunteer_shift(self, volunteer, new_shift):
    old_shift = volunteer.shift
    old_shift.remove_volunteer(volunteer)
    new_shift.add_volunteer(volunteer)
    volunteer.change_shift(new_shift)

def find_shift_by_date(self, date):
    for shift in self.shifts:
        if shift.date == date:
            return shift
    return None

def find_available_volunteers(self):
    available_volunteers = []
    for shift in self.shifts:
        for volunteer in shift.volunteers:
            if volunteer.status == 'available':
                available_volunteers.append(volunteer)
    return available_volunteers

测试代码

v1 = Volunteer('Alice') v2 = Volunteer('Bob') v3 = Volunteer('Charlie')

s1 = Shift('2021-01-01', '9:00', '12:00', [v1, v2]) s2 = Shift('2021-01-01', '12:00', '15:00', [v2, v3]) s3 = Shift('2021-01-02', '9:00', '12:00', [v1, v3])

library = Library([s1, s2, s3])

查找某一天的值班表

shift = library.find_shift_by_date('2021-01-01') print('Shift on 2021-01-01:', shift.start_time, '-', shift.end_time) for volunteer in shift.volunteers: print(volunteer.name)

查找可用的志愿者

available_volunteers = library.find_available_volunteers() print('Available volunteers:') for volunteer in available_volunteers: print(volunteer.name)

调班

library.change_volunteer_shift(v1, s2) print('Alice is now on shift:') print(v1.shift.date, v1.shift.start_time, '-', v1.shift.end_time)

请假

v2.leave() print('Bob is now available')

新增值班表

s4 = Shift('2021-01-03', '9:00', '12:00') library.add_shift(s4) print('Shifts:') for shift in library.shifts: print(shift.date, shift.start_time, '-', shift.end_time)

用Python写一个图书馆志愿者值班、换班、调班、请假的代码

原文地址: https://www.cveoy.top/t/topic/b7zF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录