chatGPT答: |
8v6.cn |
这是一个简单的会议室预订程序,使用Python实现。该程序允许用户查看会议室的占用情况,并申请未被占用的时间段。
首先,我们需要定义一个Meeting类来表示每个会议。Meeting类具有以下属性:
- start_time: 会议开始时间
- end_time: 会议结束时间
- topic: 会议主题
- organizer: 组织者姓名
- participants: 参与者姓名列表
```python
class Meeting:
def __init__(self, start_time, end_time, topic, organizer, participants):
self.start_time = start_time
self.end_time = end_time
self.topic = topic
self.organizer = organizer
self.participants = participants
def __str__(self):
return f"{self.start_time} - {self.end_time}: {self.topic}, Organizer:{self.organizer}, Participants:{', '.join(self.participants)}"
```
接下来,我们需要定义一个Room类来表示整个房间。Room类具有以下属性:
- name:房间名称。
- meetings:已经安排好的所有Meeting对象列表。
```python
class Room:
def __init__(self,name):
# 房间名称
self.name=name
# 已经安排好的所有 Meeting 对象列表
self.meetings=[]
```
然后,我们可以为Room添加一些方法:
1. add_meeting()方法:将新建立的meeting对象添加到meetings列表中。
2. remove_meeting()方法:从meetings列表中删除指定meeting对象。
3. is_available()方法:检查给定时间段是否可用。
```python
class Room:
...
def add_meeting(self,start,end,topic,organizer,*participants):
# 检查给定时间段是否可用
if not is_available(start,end,self.meetings):
print(f"Sorry! The room '{room_name}' is already booked for the given time slot.")
return False
# 创建新 meeting 对象并添加到 meetings 列表中
new_meeting=Meeting(start,end,topic,organizer,list(participants))
self.meetings.append(new_meeting)
print(f"The meeting has been scheduled successfully in the room '{room_name}'.")
def remove_meeting(self,start,end):
for m in range(len(self.meetings)):
if (start==m.start and end==m.end) :
del meetings[m]
print("The meeting has been cancelled successfully.")
break
else:
print("No such meeting found!")
def is_available(start,end):
for m in range(len(meetings)):
if (start>=m.start and end<=m.end) or (start<=m.start and end>=m.end) or (start<=end and m.start<end) or (end>=m.end and start<m.end):
return False
return True
```
最后,我们可以创建一个main函数作为程序入口点,并在其中创建和管理多个房间和meeting对象。
```python
def main():
rooms=[Room('A'), Room('B'), Room('C')]
while True:
choice=input("\nWhat would you like to do?\n1. Book a Meeting\n2. Cancel a Meeting\n3. View Meetings Schedule\n4.Exit\nEnter your choice(1/2/3/4): ")
if choice=='1':
room_name=input("\nEnter the name of the room(A/B/C): ")
start=datetime.strptime(input("Enter the starting time(YYYY-MM-DD HH:mm format): "), '%Y-%M-%d %H:%M')
duration=int(input("Enter the duration of your meeting(in minutes): "))
end=start+timedelta(minutes=duration)
topic=input("Enter the Topic of your meeting:")
organizer=input("Enter Your Name:")
n=int(input("\nEnter number of Participants(including you:)"))
participants=[]
for i in range(n):
p=input(f"Participant-{i+1} Name:")
participants.append(p)
# 在指定房间上预订新开展了一次性开放活动
for r in rooms:
if r.name==room_name.upper():
r.add_meeting(start,end,duration_in_minutes,title,speaker,*participants)
break
elif choice=='2':
room_name=input("\nEnter name of Room(A/B/C)")
found=False
# 查找指定名字对应于哪个房间
for r in rooms:
if r.name == room_name.upper():
found=True
s=datetime.strptime(input("\nEnter Starting Time(YYYY-MM-DD HH:mm format)"),'%Y-%M-%d %H:%M')
e=s+timedelta(minutes=int(input('\nEnter Duration(in minutes)\n')))
r.remove_event(s,e)
break
else:
print('\nNo Such Rooms Found!')
elif choice=='3':
date=datetime.strptime(input('\nEnter Date(YYYY-MM-DD)'),'%Y-%M-%d')
available=False
print('\nThe Schedule For All Rooms on',date.strftime('%A,%B %d,%Y'),'is as follows:\n')
for i,r in enumerate(rooms):
available=True
schedule=f"\t{i+1}.Schedule For {r.name}\n"
schedule+='-'*50+'\n'
events=[e.__str__()+'\n'for e in sorted(r.events,key=lambda x:x.s)]
schedule+= ''.join(events)
if not events:
schedule+="\t\t No Events Scheduled!\t\t"
else:
available=False
print(schedule)
if __name__=="__main__":
main()
```
以上就是简单实现了基本功能的Python代码示例。
|