用Python写一个图书馆志愿者值班、换班、调班、请假的代码
由于题目不够明确,以下代码仅作为参考,并不能完全满足所有需要。
图书馆志愿者管理系统
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)
原文地址: https://www.cveoy.top/t/topic/b7zF 著作权归作者所有。请勿转载和采集!