100% lauffähig pep8 Check fehlt noch. Doc Strings sind alle eingefügt.

This commit is contained in:
david_g 2021-02-05 19:28:48 +01:00
parent d1d3438d20
commit daa3ee18bd
2 changed files with 316 additions and 185 deletions

View File

@ -6,51 +6,65 @@ import random
#----------------CLASS---KEY------------------------------------------
class Key:
"""Key class for key management."""
how_many_keys = 0
# Initialisation of keys
def __init__(self, keynumber):
"""Initialization of a new key object."""
self.number = keynumber
self.possessor = "Rezeption"
#where are the keys
def status_key(self, keynumber=None):
"""Prints the current possessor of a key."""
print("Schlüssel", self.number, "im Besitz", self.possessor)
def hand_out_key(self, keynumber, Guest):
self.possessor = Guest
def hand_out_key(self, keynumber, guest):
"""Changes the current possessor of a key to the guest who checks
in."""
self.possessor = guest
def get_back_key(self, keynumber):
"""Changes the current possessor of a key to the reception."""
self.possessor = "Rezeption"
# Generates all the keys, two for each room
# results in keynumbers: 11, 12, 21, 22, 31, 32, 41, 42
# Generates all the keys, two for each room.
# results in keynumbers: 11, 12, 21, 22, 31, 32, 41, 42 .
key_list = []
for i in range(11, 42, 10):
a = "key_" + str(i) + " = Key(" + str(i) + ")"
exec(a)
a2 = "key_list.append(key_" + str(i) + ")"
exec(a2)
b = "key_" + str(i+1) + " = Key(" + str(i+1) + ")"
exec(b)
b2 = "key_list.append(key_" + str(i+1) + ")"
exec(b2)
#----------------CLASS---CLIENT------------------------------------------
#----------------CLASS---CLIENT-------------------------------------
#List of clients that are currently checked in.
checked_in_list = []
#List of clients that are currently checked out.
client_list = []
#List of all clients of the hotel.
all_clients = []
class Client():
months = ['Januar', 'Februar','März','April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']
"""Client class for customer management."""
months = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli',\
'August', 'September', 'Oktober', 'November', 'Dezember']
clients = 0
def __init__(self, name: str, surname: str, client_num: str, room: str, period, key_num: int, bookings, status: bool,\
def __init__(self, name: str, surname: str, client_num: str, room: str,\
period, key_num: int, bookings, status: bool,\
checked_in: bool):
"""Initialization of a new client object."""
self.name = name
self.surname = surname
self.client_num = client_num
@ -60,59 +74,87 @@ class Client():
self.bookings = []
self.status = False
self.checked_in = checked_in
Client.clients += 1
def check_in(self, room, key_num, period):
print("Check In")
"""Check In function: assign client to room and hand out keys.
Args:
room: room name : str
key_num: key number : str
period: str
Returns:
new_bill: command for creating a new bill matching the booking
"""
self.checked_in = True
self.period = str(period)
room_list[reference.index(str(room))].occupy(self.surname, self.period)
self.room = str(room)
num_ = "key_" + str(key_num) + ".hand_out_key(" + str(key_num) + "," + "'" + str(self.surname) + "')"
num_ = "key_" + str(key_num) + ".hand_out_key(" + str(key_num) + "," +\
"'" + str(self.surname) + "')"
checked_in_list.append(str(self.client_num))
client_list.remove(str(self.client_num))
self.key_num = int(key_num)
self.vip_status()
try:
exec(num_)
self.key_num = key_num
checked_in_list.append(self.client_num)
client_list.remove(str(self.client_num))
if self.status == True:
print("Der Kunde besitzt VIP Previlegien. Er erhält kostenloses \
Frühstück sowie die kostenlose Benutzung der Mini-Bar.")
except:
("Schlüssel mit Daten nicht gefunden.")
new_bill = add_bill(self.name, self.surname, self.client_num, room, self.period)
if self.status == True:
print("Der Kunde besitzt VIP Previlegien. Er erhält \
kostenloses Frühstück sowie die kostenlose Benutzung der Mini-Bar.")
print("Check In erfolgreich.")
new_bill = add_bill(self.name, self.surname, self.client_num, room,\
self.period)
return new_bill
def check_out(self):
room_list[reference.index(self.room)].free()
key_num = self.key_num
num_ = "key_" + str(key_num) + ".get_back_key(" + str(key_num)+ ")"
try:
exec(num_)
print("Der Gast ist erfolgreich ausgecheckt worden.")
"""Check out function: clear room, key to reception"""
if self.checked_in == True:
room_list[reference.index(self.room)].free()
key_num = self.key_num
num_ = "key_" + str(key_num) + ".get_back_key(" + str(key_num) +\
")"
self.checked_in = False
self.room = None
self.period = None
self.key_num = None
self.vip_status()
checked_in_list.remove(self.client_num)
client_list.append(self.client_num)
except:
("Schlüssel mit Daten nicht gefunden.")
try:
exec(num_)
print("Der Gast ist erfolgreich ausgecheckt worden.")
except:
("Schlüssel mit Daten nicht gefunden.")
def client_bill(self, bill_num):
"""Appends the new bill number to the bookings of client."""
self.bookings.append(str(bill_num))
def client_bill_delete(self, bill_num):
"""Deletes a bill number that includes the checking out process."""
if bill_num in self.bookings:
self.bookings.remove(bill_num)
print("Rechnung wurde beim Gast", self.client_num, "gelöscht.")
self.check_out()
def vip_status(self):
"""Adjusts the VIP Status of a client."""
if len(self.bookings) > 3:
self.status = True
# Length of stay as print
else:
self.status = False
def period_print(self):
"""Prints the stay period of a guest in a legible format."""
# creates a list format to work with
stay_period = []
num_string = ""
for i in self.period:
@ -132,6 +174,7 @@ Frühstück sowie die kostenlose Benutzung der Mini-Bar.")
month_print = Client.months[month_num]
print("Der Kunde bleibt", abs(days), "Tage.")
print("Vom", stay_period[0], "bis", stay_period[2], month_print)
# Across months
if stay_period[1] != stay_period[3]:
# Stay period more than 1 month
@ -147,11 +190,12 @@ Frühstück sowie die kostenlose Benutzung der Mini-Bar.")
month_print_1 = Client.months[month_num_1]
month_print_2 = Client.months[month_num_2]
print("Der Kunde bleibt", abs(days), "Tage.")
print("Vom", stay_period[0], month_print_1, "bis", stay_period[2], month_print_2)
print("Vom", stay_period[0], month_print_1, "bis", \
stay_period[2], month_print_2)
# Client information
def info(self, action = None):
"""Prints infomation of a client, selected if desired."""
dic_ = {"Name" : self.name,
"Nachname" : self.surname,
"Kundennummer" : self.client_num,
@ -182,39 +226,50 @@ Frühstück sowie die kostenlose Benutzung der Mini-Bar.")
class Room:
''' Implementierung der Klasse Zimmer '''
'''Room class for room management.'''
def __init__(self, room_number, guest=None, period=None):
"""Initialization of a new room object."""
self.number = room_number
self.occupied = False
self.resident = None
self.period = None
# Room gets occupied by a client
def occupy(self, guest, period):
"""Values in accordance with the given information,
when room gets occupied"""
self.occupied = True
self.resident = guest
self.period = period
# Room is no longer occupied
def free(self):
def free(self):
"""Frees the room."""
self.occupied = False
self.resident = None
self.period = None
def is_free(self, client_num, room_name, period):
"""Checks if room is free in desired period.
Returns:
check: command for checking in.
"""
occupied = self.period
if occupied == None:
room_types = [["Single", 10], ["Double", 20], ["Suite", 30], ["Panorama_Suite", 40]]
room_types = [["Single", 10], ["Double", 20], ["Suite", 30],\
["Panorama_Suite", 40]]
for i in room_types:
if i[0] == room_name:
key_num = i[1]+1
check = "exec(" + str(client_num) + ".check_in(" + "'" + str(room_name) + "'" + "," + str(key_num)\
+ "," + "'" + str(period) + "'" +"))"
print(check)
exec(check)
check = "exec(" + str(client_num) + ".check_in(" + "'" + \
str(room_name) + "'" + "," + str(key_num) + "," + "'" + str(period) + "'" +"))"
return (check)
else:
stay_period = []
@ -240,38 +295,43 @@ class Room:
stay_period_new.append(num_string)
if int(stay_period[3]) < int(stay_period_new[1]):
room_types = [["Single", 10], ["Double", 20], ["Suite", 30], ["Panorama_Suite", 40]]
room_types = [["Single", 10], ["Double", 20], ["Suite", 30],\
["Panorama_Suite", 40]]
for i in room_types:
if i[0] == room_name:
key_num = i[1]+1
check = "exec(" + str(client_num) + ".check_in(" + "'" + str(room_name) + "'" + "," + str(key_num)\
+ "," + "'" + str(period) + "'" +"))"
print(check)
exec(check)
check = "exec(" + str(client_num) + ".check_in(" + "'" +\
str(room_name) + "'" + "," + str(key_num) + "," + "'" + str(period) + "'" +"))"
return (check)
if int(stay_period[3]) > int(stay_period_new[1]):
print("Das Zimmer", room_name, " ist in dem gewünschten Zeitraum belegt.")
print("Das Zimmer", room_name, "ist in dem gewünschten\
Zeitraum belegt.")
if int(stay_period[3]) == int(stay_period_new[1]):
if int(stay_period[0]) > int(stay_period_new[2]):
print("Das Zimmer", room_name, " ist in dem gewünschten Zeitraum belegt.")
if int(stay_period[2]) > int(stay_period_new[0]):
print("Das Zimmer", room_name, "ist in dem gewünschten\
Zeitraum belegt.")
if int(stay_period[0]) <= int(stay_period_new[2]):
room_types = [["Single", 10], ["Double", 20], ["Suite", 30], ["Panorama_Suite", 40]]
if int(stay_period[2]) <= int(stay_period_new[0]):
room_types = [["Single", 10], ["Double", 20],\
["Suite", 30], ["Panorama_Suite", 40]]
for i in room_types:
if i[0] == room_name:
key_num = i[1]+1
check = "exec(" + str(client_num) + ".check_in(" + "'" + str(room_name) + "'" + "," + str(key_num)\
+ "," + "'" + str(period) + "'" +"))"
print(check)
exec(check)
check = "exec(" + str(client_num) + ".check_in(" +\
"'" + str(room_name) + "'" + "," + str(key_num) + "," + "'" + \
str(period) + "'" +"))"
return (check)
def is_occupied(self, room_name, period):
"""Checks if room is available in given period."""
if self.period == None:
print("Das Zimmer", str(room_name)," ist frei.")
if self.period != None:
@ -296,25 +356,29 @@ class Room:
num_string = ""
stay_period_new.append(num_string)
#print(stay_period, stay_period_new)
if int(stay_period[3]) < int(stay_period_new[1]):
print(stay_period[3], stay_period_new[1])
print("Das Zimmer", room_name, "ist in dem gewünschten Zeitraum frei.")
print("Das Zimmer", room_name, "ist in dem gewünschten\
Zeitraum frei.")
if int(stay_period[3]) > int(stay_period_new[1]):
print("Das Zimmer", room_name, " ist in dem gewünschten Zeitraum belegt.")
print("Das Zimmer", room_name, "ist in dem gewünschten\
Zeitraum belegt.")
if int(stay_period[3]) == int(stay_period_new[1]):
if int(stay_period[2]) > int(stay_period_new[0]):
print("Das Zimmer", room_name, " ist in dem gewünschten Zeitraum belegt.")
#print(stay_period[2], stay_period_new[0])
print("Das Zimmer", room_name, "ist in dem gewünschten\
Zeitraum belegt.")
if int(stay_period[2]) <= int(stay_period_new[0]):
print("Das Zimmer", room_name, "ist in dem gewünschten Zeitraum frei.")
#print(stay_period[2], stay_period_new[0])
# room information
print("Das Zimmer", room_name, "ist in dem gewünschten\
Zeitraum frei.")
def info(self, action = None):
"""Prints infomation of a room, selected if desired."""
dic_ = {"Nummer" : self.number,
"Gast" : self.resident,
}
@ -325,9 +389,11 @@ class Room:
if action == "Gast":
if dic_["Gast"] != None:
print("Das Zimmer", str(self.number), "ist gerade vom Gast", dic_["Gast"], "belegt")
print("Das Zimmer", str(self.number),\
"ist gerade vom Gast", dic_["Gast"], "belegt")
else:
print("Das Zimmer", str(self.number), "ist im Moment nicht belegt.")
print("Das Zimmer", str(self.number),\
"ist im Moment nicht belegt.")
else:
for i in dic_:
@ -337,7 +403,8 @@ class Room:
# Generates all the rooms
# nr.10-"Single", nr.20-"Double", nr.30-"Suite", nr.40-"Panorama_Suite"
reference = ["Single", "Double", "Suite", "Panorama_Suite"]
room_types = [["Single", 10], ["Double", 20], ["Suite", 30], ["Panorama_Suite", 40]]
room_types = [["Single", 10], ["Double", 20], ["Suite", 30], \
["Panorama_Suite", 40]]
room_list = []
for i in room_types:
tmp = i[0] + " = Room(" + str(i[1]) + ")"
@ -345,14 +412,15 @@ for i in room_types:
tmp = "room_list.append(" + str(i[0]) + ")"
exec(tmp)
#----------------CLASS--ACCOUNTING----------------------------
class Accounting():
'''Accounting class for accounting management.'''
all_bills = []
counter = 0
def __init__(self, name:str, surname:str, client_num:str, room:str, period:str, bill_num:str, bill_status:bool):
print("Wird Ausgeführt")
def __init__(self, name:str, surname:str, client_num:str, room:str,\
period:str, bill_num:str, bill_status:bool):
"""Initialization of a new bill object."""
self.name = name
self.surname = surname
self.client_num = client_num
@ -361,16 +429,17 @@ class Accounting():
self.bill_status = bill_status
Accounting.counter += 1
room_types = [["Single", 10], ["Double", 20], ["Suite", 30], ["Panorama_Suite", 40]]
room_types = [["Single", 10], ["Double", 20], ["Suite", 30],\
["Panorama_Suite", 40]]
for i in room_types:
if i[0] == room:
self.room = i[1]
var = str(client_num) + ".client_bill(" + "'" + bill_num + "'" + ")"
print(var)
exec(var)
def show_bill(self):
"""Prints the bill."""
stay_period = []
num_string = ""
@ -395,25 +464,27 @@ class Accounting():
if int(stay_period[3]) - int(stay_period[1]) > 1:
days = 28 - int(stay_period[0]) + int(stay_period[2]) + \
((int(stay_period[3]) - int(stay_period[1])-1) * 28)
# Stay period
# Stay period
else:
days = 28 - int(stay_period[0]) + int(stay_period[2])
days = abs(days)
costs = int(days) * int(self.room)
"""_______________________________________________________________________"""
lines = [[] for i in range(13)]
lines[0].append( '┌─────────────────────────────┐')
lines[1].append( '│ Rechnung │')
lines[2].append( '│ │')
lines[3].append( '│Kunde: {} {} '.format(self.name, self.surname))
lines[3].append( '│Kunde: {} {} '.format(self.name,\
self.surname))
lines[4].append( '│Zimmer: {} '.format(self.room))
lines[5].append( '│Anz. Tage:{} '.format(days))
lines[6].append( '│pro Nacht:{}'.format(self.room))
lines[7].append( '│Kosten: {}'.format(costs))
lines[8].append( '')
lines[9].append( '│Rech. Nr.:{} '.format(self.bill_num,))
lines[10].append('│Beglichen:{} '.format(self.bill_status))
lines[9].append( '│Rech. Nr.:{} '.format\
(self.bill_num,))
lines[10].append('│Beglichen:{} '.format\
(self.bill_status))
lines[11].append('│ │')
lines[12].append('└─────────────────────────────┘')
@ -422,18 +493,19 @@ class Accounting():
def pay_bill(self):
"""Pay function."""
self.bill_status = True
print("Rechnung", self.bill_num, "wurde bezahlt.")
def delete_bill(self, bill_num):
"""Deletes bill from bill list and from client."""
for i in all_clients:
var = str(i) + ".client_bill_delete(" + "'" + bill_num + "'" + ")"
exec(var)
var_ = str(i) + ".check_out()"
exec(var_)
def __del__(self):
"""Called when object is destroyed."""
print("Rechnung wurde storniert.")
@ -442,17 +514,33 @@ bill_list = []
def add_bill(name, surname, client_num, room, period):
"""Fuction for adding bill when bookings are made.
Args:
name: str
surname: str
client_num: str
room: str
period: str
Returns:
c: command for creating the bill in accounting class
"""
bill_numb = "r" + str(Accounting.counter)
c = bill_numb + " = Accounting(" + '"' + str(name) + '"' + "," + '"' + \
str(surname) + '"' + "," + '"' + str(client_num) + '"' + "," + '"' + str(room) + '"' + "," + '"' + str(period) + \
str(surname) + '"' + "," + '"' + str(client_num) + '"' + "," + '"' + \
str(room) + '"' + "," + '"' + str(period) + \
'"' + "," + '"'+ str(bill_numb) + '"' + ", False)"
bill_list.append(bill_numb)
return c
def show_single_bill():
"""Prints the bill of a given bill number."""
print("Volgenden Rechnungsnummern stehen zur Auswahl:")
print(bill_list)
while True:
@ -465,9 +553,12 @@ def show_single_bill():
exec(c)
except:
print("Rechnung wurde nicht gefunden.")
def pay_your_bill():
"""Function for pay a bill of a client."""
print("Folgenden Rechnungsnummern stehen zur Auswahl:")
print(bill_list)
print("Rechungsnummer? ")
@ -484,15 +575,17 @@ def pay_your_bill():
def delete_bill(bill_numb):
"""Function that calls the delete function of a bill in the
accounting class."""
k = str(bill_numb) + ".delete_bill(bill_numb)"
exec(k)
#-------------ADDITIONAL---CLIENT---METHODS-------------------------
def clear():
"""Clear function for clean surface."""
if os.name == "posix":
os.system("clear")
elif os.name in ("nt", "dos", "ce"):
@ -502,6 +595,10 @@ def clear():
def add_client():
"""Add a new client.
Returns:
c: command for creating the client in client class."""
while True:
name = input("Name : ")
if name.isalpha():
@ -515,26 +612,22 @@ def add_client():
client_num = "c" + str(Client.clients)
room_num = None
key_num = None
c = str(client_num) + " = Client(" + '"' + str(name) + '"' + "," + '"' + \
str(surname) + '"' + "," + '"' + str(client_num) + '"' + "," + '"' + str(room_num) \
+ '"' + "," + '"' + str(period) + '"' + "," + '"'+ str(key_num) + '"' + ",[], False, False)"
c = str(client_num) + " = Client(" + '"' + str(name) + '"' + "," + '"' +\
str(surname) + '"' + "," + '"' + str(client_num) + '"' + "," + '"' + \
str(room_num) + '"' + "," + '"' + str(period) + '"' + "," + '"'+ \
str(key_num) + '"' + ",[], False, False)"
client_list.append(client_num)
all_clients.append(client_num)
return c
k = add_client()
exec(k)
j = c0.check_in("Suite",31, "2,3,4,5")
exec(j)
clear()
#Path for soundfile
dir_path = os.path.dirname(os.path.realpath(__file__))
#Checks if simpleaudio module is imported
imported = True
try:
import simpleaudio
@ -543,6 +636,12 @@ except ModuleNotFoundError:
def play_sound():
"""Plays sound with simpleaudio module.
Returns:
play_obj: plays the sound
None if no sound plays."""
if imported:
wave_obj = simpleaudio.WaveObject.from_wave_file\
(os.path.join(dir_path, "grandhotel.wav"))
@ -552,24 +651,29 @@ def play_sound():
def stop_sound(play_obj):
"""Stops the sound."""
if play_obj is not None:
play_obj.stop()
def ascii_print():
"""Prints the intro logo."""
with open('ascii_print_hotel', 'r', encoding='utf8') as ascii_:
for line in ascii_:
sys.stdout.write(line)
time.sleep(0.1)
system_list = ["1", "2", "3", "4", "5"]
"""-------------START-----INTERFACE--------------------"""
input("Start?")
system_list = ["1", "2", "3", "4", "5"]
clear()
#Intro
#Intro sound
play_obj = play_sound()
#Logo Print
#Intro Logo Print
ascii_print()
@ -689,7 +793,8 @@ Abbrechen
print("Kunde anzeigen\n")
print(all_clients)
while True:
k = input("Über welchen Kunden wollen sie sich Information anzeigen lassen? ")
k = input("Über welchen Kunden wollen sie sich Information\
anzeigen lassen? ")
if k in all_clients:
break
else:
@ -716,33 +821,46 @@ Abbrechen
if room_ in reference:
break
else:
print("Dieses Zimmer ist in unserem Hotel leider nicht vorhanden.")
print("Dieses Zimmer ist in unserem Hotel leider nicht\
vorhanden.")
print("Aufenthaltszeitraum")
while True:
day_arrival = input("Anreisetag: ")
if day_arrival.isdigit() and 0 < int(day_arrival) and int(day_arrival) < 28:
if day_arrival.isdigit() and 0 < int(day_arrival) and \
int(day_arrival) < 28:
break
while True:
month_arrival = input("Anreisemonat: ")
if month_arrival.isdigit() and 0 < int(month_arrival) and int(month_arrival) < 12:
if month_arrival.isdigit() and 0 < int(month_arrival) and\
int(month_arrival) < 12:
break
while True:
day_depature = input("Abreisetag: ")
if day_depature.isdigit() and 0 < int(day_depature) and int(day_depature) < 28:
if day_depature.isdigit() and 0 < int(day_depature) and\
int(day_depature) < 28:
break
while True:
month_depature = input("Abreisemonat: ")
if month_depature.isdigit() and 0 < int(month_depature) and int(month_depature) < 12:
if month_depature.isdigit() and 0 < int(month_depature) \
and int(month_depature) < 12:
break
period = str(day_arrival) + "," +str(month_arrival) + "," + str(day_depature) + "," + str(month_depature)
check_ = str(room_) + ".is_free(" + "'" + str(client) + "'" + "," + "'" + str(room_) \
+ "'" + "," + "'" + str(period) + "'" + ")"
print(check_)
exec(check_)
period = str(day_arrival) + "," +str(month_arrival) + "," + \
str(day_depature) + "," + str(month_depature)
check_ = "j = " + str(room_) + ".is_free(" + "'" + str(client)\
+ "'" + "," + "'" + str(room_) + "'" + "," + "'" + str(period) + "'" + ")"
try:
exec(check_)
except:
pass
try:
exec(j)
except:
pass
input()
clear()
continue
@ -759,7 +877,7 @@ Abbrechen
if client == "abbrechen":
break
input()
clear()
continue
@ -767,31 +885,39 @@ Abbrechen
if client == "5":
print("Freie Zimmer anzeigen\n")
while True:
print("In welchem Zeitraum möchten Sie schauen, ob Zimmer frei sind?")
print("In welchem Zeitraum möchten Sie schauen,\
ob Zimmer frei sind?")
print("Aufenthaltszeitraum")
while True:
day_arrival = input("Anreisetag: ")
if day_arrival.isdigit() and 0 < int(day_arrival) and int(day_arrival) < 28:
if day_arrival.isdigit() and 0 < int(day_arrival) \
and int(day_arrival) < 28:
break
while True:
month_arrival = input("Anreisemonat: ")
if month_arrival.isdigit() and 0 < int(month_arrival) and int(month_arrival) < 12:
if month_arrival.isdigit() and 0 < int(month_arrival) \
and int(month_arrival) < 12:
break
while True:
day_depature = input("Abreisetag: ")
if day_depature.isdigit() and 0 < int(day_depature) and int(day_depature) < 28:
if day_depature.isdigit() and 0 < int(day_depature) \
and int(day_depature) < 28:
break
while True:
month_depature = input("Abreisemonat: ")
if month_depature.isdigit() and 0 < int(month_depature) and int(month_depature) < 12:
if month_depature.isdigit() and 0 < \
int(month_depature) and int(month_depature) < 12:
break
period = str(day_arrival) + "," +str(month_arrival) + "," + str(day_depature) + "," + str(month_depature)
#print(period)
period = str(day_arrival) + "," + str(month_arrival) +\
"," + str(day_depature) + "," + str(month_depature)
for i in reference:
k = str(i) + ".is_occupied(" + "'" + str(i) + "'" + "," + "'" + str(period) + "'" + ")"
#print(k)
k = str(i) + ".is_occupied(" + "'" + str(i) + "'"\
+ "," + "'" + str(period) + "'" + ")"
exec(k)
break
input()
clear()
continue
@ -870,7 +996,8 @@ Abbrechen""")
if key_input == "1":
while True:
print("Schlüsselstatus anzeigen\n")
all_key_numbers = ["11", "12", "21", "22", "31", "32", "41", "42"]
all_key_numbers = ["11", "12", "21", "22", \
"31", "32", "41", "42"]
print(all_key_numbers)
key_num = input("Schlüsselnummer ")
print("")
@ -891,21 +1018,28 @@ Abbrechen""")
if system == "5": #duty_roster
clear()
def duty_roster_write():
"""Creates duty roster for hotel employees."""
with open('dienstplan.txt', 'w', encoding='utf8') as d:
employees = ['M. Gustave', 'Zero Mustafa', 'M. Jean', 'Agatha', 'M. Chuck']
employees = ['M. Gustave', 'Zero Mustafa', 'M. Jean',\
'Agatha', 'M. Chuck']
job = ['Concierge', 'Lobby-Boy', 'Rezeptionist', 'Portier']
i = 1
while i < 53:
random.shuffle(employees)
random.shuffle(job)
a = "KW" + str(i)
d.write(a + "#" + employees[0] + ": " + job[0] + "#" + employees[1]\
+ ": " + job[1] + "#" + employees[2] + ": " + job[2] + "#" + employees[3] + ": " \
+ job[3] + "#" + "frei: " + employees[4] + "\n")
d.write(a + "#" + employees[0] + ": " + job[0] + "#" +\
employees[1] + ": " + job[1] + "#" + employees[2] + ": " + job[2] + "#" + \
employees[3] + ": " + job[3] + "#" + "frei: " + employees[4] + "\n")
i += 1
def duty_roster_read():
"""Prints duty roster of employees."""
with open('dienstplan.txt', 'r', encoding='utf8') as d:
for line in d:
print(line)
@ -957,6 +1091,3 @@ dienstplan.txt im Verzeichnis gefunden werden.")
print("The Grand Budapest Hotel wünscht noch einen angenehmen Tag.")
print("Auf Wiedersehen!")
break
#break

View File

@ -1,52 +1,52 @@
KW1#Zero Mustafa: Lobby-Boy#M. Jean: Rezeptionist#M. Chuck: Concierge#M. Gustave: Portier#frei: Agatha
KW2#M. Jean: Concierge#Agatha: Rezeptionist#Zero Mustafa: Lobby-Boy#M. Gustave: Portier#frei: M. Chuck
KW3#M. Jean: Rezeptionist#M. Gustave: Lobby-Boy#Zero Mustafa: Concierge#M. Chuck: Portier#frei: Agatha
KW4#M. Gustave: Portier#Zero Mustafa: Concierge#Agatha: Lobby-Boy#M. Jean: Rezeptionist#frei: M. Chuck
KW5#M. Gustave: Concierge#Agatha: Portier#M. Chuck: Rezeptionist#M. Jean: Lobby-Boy#frei: Zero Mustafa
KW6#Zero Mustafa: Portier#Agatha: Rezeptionist#M. Chuck: Concierge#M. Jean: Lobby-Boy#frei: M. Gustave
KW7#Agatha: Rezeptionist#M. Jean: Concierge#Zero Mustafa: Portier#M. Chuck: Lobby-Boy#frei: M. Gustave
KW8#M. Chuck: Lobby-Boy#M. Jean: Portier#Zero Mustafa: Rezeptionist#M. Gustave: Concierge#frei: Agatha
KW9#M. Chuck: Concierge#Zero Mustafa: Rezeptionist#M. Gustave: Lobby-Boy#Agatha: Portier#frei: M. Jean
KW10#M. Chuck: Concierge#M. Gustave: Portier#Agatha: Lobby-Boy#M. Jean: Rezeptionist#frei: Zero Mustafa
KW11#Zero Mustafa: Rezeptionist#M. Gustave: Concierge#Agatha: Portier#M. Chuck: Lobby-Boy#frei: M. Jean
KW12#M. Chuck: Concierge#Agatha: Portier#M. Gustave: Rezeptionist#Zero Mustafa: Lobby-Boy#frei: M. Jean
KW13#M. Chuck: Rezeptionist#Agatha: Lobby-Boy#Zero Mustafa: Portier#M. Jean: Concierge#frei: M. Gustave
KW14#Agatha: Portier#M. Chuck: Lobby-Boy#M. Gustave: Concierge#Zero Mustafa: Rezeptionist#frei: M. Jean
KW15#Zero Mustafa: Lobby-Boy#M. Gustave: Portier#Agatha: Concierge#M. Jean: Rezeptionist#frei: M. Chuck
KW16#M. Jean: Lobby-Boy#M. Chuck: Rezeptionist#M. Gustave: Concierge#Zero Mustafa: Portier#frei: Agatha
KW17#Agatha: Portier#M. Gustave: Lobby-Boy#M. Chuck: Rezeptionist#Zero Mustafa: Concierge#frei: M. Jean
KW18#Zero Mustafa: Rezeptionist#M. Jean: Concierge#M. Chuck: Lobby-Boy#Agatha: Portier#frei: M. Gustave
KW19#Agatha: Rezeptionist#M. Gustave: Portier#M. Chuck: Concierge#Zero Mustafa: Lobby-Boy#frei: M. Jean
KW20#M. Chuck: Lobby-Boy#Agatha: Rezeptionist#M. Gustave: Concierge#M. Jean: Portier#frei: Zero Mustafa
KW21#Zero Mustafa: Rezeptionist#Agatha: Portier#M. Gustave: Lobby-Boy#M. Chuck: Concierge#frei: M. Jean
KW22#Zero Mustafa: Rezeptionist#M. Chuck: Concierge#M. Jean: Portier#M. Gustave: Lobby-Boy#frei: Agatha
KW23#M. Chuck: Lobby-Boy#M. Gustave: Rezeptionist#M. Jean: Portier#Zero Mustafa: Concierge#frei: Agatha
KW24#M. Gustave: Concierge#Zero Mustafa: Rezeptionist#Agatha: Lobby-Boy#M. Jean: Portier#frei: M. Chuck
KW25#M. Gustave: Concierge#Agatha: Rezeptionist#M. Jean: Portier#Zero Mustafa: Lobby-Boy#frei: M. Chuck
KW26#Zero Mustafa: Lobby-Boy#M. Chuck: Portier#M. Jean: Concierge#M. Gustave: Rezeptionist#frei: Agatha
KW27#M. Chuck: Rezeptionist#Agatha: Portier#Zero Mustafa: Lobby-Boy#M. Jean: Concierge#frei: M. Gustave
KW28#Agatha: Portier#M. Gustave: Lobby-Boy#Zero Mustafa: Concierge#M. Chuck: Rezeptionist#frei: M. Jean
KW29#M. Jean: Portier#M. Gustave: Concierge#Zero Mustafa: Lobby-Boy#Agatha: Rezeptionist#frei: M. Chuck
KW30#Agatha: Rezeptionist#M. Gustave: Concierge#M. Chuck: Lobby-Boy#M. Jean: Portier#frei: Zero Mustafa
KW31#M. Chuck: Portier#M. Jean: Concierge#Agatha: Rezeptionist#M. Gustave: Lobby-Boy#frei: Zero Mustafa
KW32#M. Jean: Lobby-Boy#M. Gustave: Portier#Zero Mustafa: Rezeptionist#M. Chuck: Concierge#frei: Agatha
KW33#M. Jean: Lobby-Boy#Zero Mustafa: Portier#M. Gustave: Concierge#M. Chuck: Rezeptionist#frei: Agatha
KW34#Zero Mustafa: Lobby-Boy#M. Gustave: Concierge#M. Chuck: Portier#Agatha: Rezeptionist#frei: M. Jean
KW35#M. Chuck: Rezeptionist#Zero Mustafa: Concierge#M. Gustave: Portier#M. Jean: Lobby-Boy#frei: Agatha
KW36#Zero Mustafa: Rezeptionist#M. Chuck: Portier#M. Gustave: Lobby-Boy#M. Jean: Concierge#frei: Agatha
KW37#M. Gustave: Rezeptionist#Zero Mustafa: Lobby-Boy#M. Jean: Concierge#Agatha: Portier#frei: M. Chuck
KW38#M. Chuck: Rezeptionist#M. Gustave: Portier#M. Jean: Concierge#Zero Mustafa: Lobby-Boy#frei: Agatha
KW39#Agatha: Rezeptionist#M. Jean: Lobby-Boy#Zero Mustafa: Portier#M. Gustave: Concierge#frei: M. Chuck
KW40#M. Gustave: Lobby-Boy#Zero Mustafa: Portier#Agatha: Concierge#M. Chuck: Rezeptionist#frei: M. Jean
KW41#Zero Mustafa: Concierge#Agatha: Portier#M. Chuck: Lobby-Boy#M. Jean: Rezeptionist#frei: M. Gustave
KW42#M. Chuck: Portier#M. Jean: Rezeptionist#Agatha: Concierge#M. Gustave: Lobby-Boy#frei: Zero Mustafa
KW43#M. Gustave: Portier#M. Jean: Rezeptionist#Zero Mustafa: Concierge#M. Chuck: Lobby-Boy#frei: Agatha
KW44#Agatha: Concierge#M. Chuck: Portier#M. Gustave: Lobby-Boy#M. Jean: Rezeptionist#frei: Zero Mustafa
KW45#Zero Mustafa: Portier#M. Gustave: Lobby-Boy#M. Jean: Rezeptionist#M. Chuck: Concierge#frei: Agatha
KW46#Zero Mustafa: Concierge#M. Jean: Lobby-Boy#M. Chuck: Portier#M. Gustave: Rezeptionist#frei: Agatha
KW47#M. Gustave: Concierge#M. Chuck: Rezeptionist#Zero Mustafa: Portier#M. Jean: Lobby-Boy#frei: Agatha
KW48#M. Gustave: Portier#Zero Mustafa: Rezeptionist#M. Jean: Concierge#M. Chuck: Lobby-Boy#frei: Agatha
KW49#Agatha: Rezeptionist#M. Gustave: Lobby-Boy#M. Chuck: Concierge#Zero Mustafa: Portier#frei: M. Jean
KW50#Agatha: Concierge#M. Jean: Lobby-Boy#M. Gustave: Portier#Zero Mustafa: Rezeptionist#frei: M. Chuck
KW51#M. Jean: Portier#Agatha: Rezeptionist#Zero Mustafa: Lobby-Boy#M. Gustave: Concierge#frei: M. Chuck
KW52#Zero Mustafa: Lobby-Boy#Agatha: Rezeptionist#M. Jean: Portier#M. Chuck: Concierge#frei: M. Gustave
KW1#Zero Mustafa: Rezeptionist#M. Gustave: Concierge#M. Jean: Lobby-Boy#Agatha: Portier#frei: M. Chuck
KW2#Agatha: Lobby-Boy#M. Gustave: Portier#M. Chuck: Rezeptionist#M. Jean: Concierge#frei: Zero Mustafa
KW3#M. Jean: Rezeptionist#Zero Mustafa: Concierge#M. Gustave: Lobby-Boy#Agatha: Portier#frei: M. Chuck
KW4#Zero Mustafa: Portier#M. Chuck: Concierge#Agatha: Lobby-Boy#M. Gustave: Rezeptionist#frei: M. Jean
KW5#Agatha: Rezeptionist#Zero Mustafa: Concierge#M. Gustave: Portier#M. Jean: Lobby-Boy#frei: M. Chuck
KW6#Zero Mustafa: Rezeptionist#M. Jean: Lobby-Boy#Agatha: Concierge#M. Chuck: Portier#frei: M. Gustave
KW7#Agatha: Concierge#Zero Mustafa: Portier#M. Gustave: Lobby-Boy#M. Chuck: Rezeptionist#frei: M. Jean
KW8#Agatha: Concierge#M. Jean: Portier#Zero Mustafa: Lobby-Boy#M. Gustave: Rezeptionist#frei: M. Chuck
KW9#M. Jean: Rezeptionist#M. Gustave: Portier#Agatha: Lobby-Boy#Zero Mustafa: Concierge#frei: M. Chuck
KW10#Agatha: Rezeptionist#Zero Mustafa: Lobby-Boy#M. Gustave: Portier#M. Chuck: Concierge#frei: M. Jean
KW11#M. Jean: Concierge#Agatha: Lobby-Boy#M. Chuck: Rezeptionist#Zero Mustafa: Portier#frei: M. Gustave
KW12#M. Jean: Rezeptionist#Agatha: Portier#M. Gustave: Concierge#M. Chuck: Lobby-Boy#frei: Zero Mustafa
KW13#Agatha: Lobby-Boy#M. Chuck: Portier#M. Gustave: Rezeptionist#Zero Mustafa: Concierge#frei: M. Jean
KW14#M. Chuck: Concierge#Agatha: Portier#Zero Mustafa: Rezeptionist#M. Jean: Lobby-Boy#frei: M. Gustave
KW15#Zero Mustafa: Portier#Agatha: Concierge#M. Gustave: Lobby-Boy#M. Jean: Rezeptionist#frei: M. Chuck
KW16#M. Jean: Rezeptionist#Zero Mustafa: Lobby-Boy#M. Chuck: Portier#Agatha: Concierge#frei: M. Gustave
KW17#Zero Mustafa: Rezeptionist#Agatha: Portier#M. Chuck: Lobby-Boy#M. Gustave: Concierge#frei: M. Jean
KW18#M. Chuck: Portier#Zero Mustafa: Rezeptionist#M. Gustave: Concierge#Agatha: Lobby-Boy#frei: M. Jean
KW19#M. Gustave: Lobby-Boy#M. Chuck: Rezeptionist#Agatha: Portier#Zero Mustafa: Concierge#frei: M. Jean
KW20#M. Gustave: Lobby-Boy#Zero Mustafa: Concierge#M. Chuck: Portier#M. Jean: Rezeptionist#frei: Agatha
KW21#Agatha: Portier#Zero Mustafa: Concierge#M. Jean: Lobby-Boy#M. Gustave: Rezeptionist#frei: M. Chuck
KW22#Agatha: Lobby-Boy#Zero Mustafa: Portier#M. Jean: Rezeptionist#M. Chuck: Concierge#frei: M. Gustave
KW23#M. Gustave: Lobby-Boy#Agatha: Rezeptionist#M. Chuck: Concierge#Zero Mustafa: Portier#frei: M. Jean
KW24#Zero Mustafa: Lobby-Boy#M. Gustave: Concierge#M. Chuck: Rezeptionist#M. Jean: Portier#frei: Agatha
KW25#M. Jean: Concierge#Agatha: Lobby-Boy#M. Chuck: Portier#Zero Mustafa: Rezeptionist#frei: M. Gustave
KW26#M. Chuck: Rezeptionist#Agatha: Concierge#M. Gustave: Lobby-Boy#Zero Mustafa: Portier#frei: M. Jean
KW27#M. Chuck: Rezeptionist#M. Gustave: Concierge#Agatha: Lobby-Boy#Zero Mustafa: Portier#frei: M. Jean
KW28#Zero Mustafa: Rezeptionist#M. Jean: Lobby-Boy#Agatha: Portier#M. Chuck: Concierge#frei: M. Gustave
KW29#Agatha: Rezeptionist#M. Gustave: Portier#M. Chuck: Lobby-Boy#M. Jean: Concierge#frei: Zero Mustafa
KW30#M. Chuck: Lobby-Boy#M. Jean: Rezeptionist#Zero Mustafa: Portier#M. Gustave: Concierge#frei: Agatha
KW31#M. Chuck: Portier#Agatha: Lobby-Boy#Zero Mustafa: Rezeptionist#M. Gustave: Concierge#frei: M. Jean
KW32#M. Gustave: Concierge#M. Jean: Lobby-Boy#Zero Mustafa: Portier#M. Chuck: Rezeptionist#frei: Agatha
KW33#Zero Mustafa: Portier#Agatha: Concierge#M. Chuck: Lobby-Boy#M. Jean: Rezeptionist#frei: M. Gustave
KW34#M. Gustave: Lobby-Boy#M. Chuck: Concierge#Zero Mustafa: Portier#M. Jean: Rezeptionist#frei: Agatha
KW35#M. Gustave: Rezeptionist#Zero Mustafa: Concierge#M. Chuck: Lobby-Boy#Agatha: Portier#frei: M. Jean
KW36#Agatha: Portier#M. Chuck: Lobby-Boy#M. Jean: Rezeptionist#Zero Mustafa: Concierge#frei: M. Gustave
KW37#M. Chuck: Lobby-Boy#Zero Mustafa: Concierge#M. Jean: Portier#Agatha: Rezeptionist#frei: M. Gustave
KW38#Agatha: Lobby-Boy#M. Chuck: Portier#Zero Mustafa: Rezeptionist#M. Gustave: Concierge#frei: M. Jean
KW39#M. Jean: Rezeptionist#Zero Mustafa: Portier#M. Gustave: Concierge#M. Chuck: Lobby-Boy#frei: Agatha
KW40#M. Chuck: Concierge#Zero Mustafa: Portier#Agatha: Lobby-Boy#M. Gustave: Rezeptionist#frei: M. Jean
KW41#Agatha: Concierge#Zero Mustafa: Portier#M. Jean: Rezeptionist#M. Gustave: Lobby-Boy#frei: M. Chuck
KW42#M. Chuck: Lobby-Boy#Zero Mustafa: Portier#M. Gustave: Rezeptionist#M. Jean: Concierge#frei: Agatha
KW43#Agatha: Concierge#M. Chuck: Portier#M. Gustave: Lobby-Boy#M. Jean: Rezeptionist#frei: Zero Mustafa
KW44#M. Chuck: Lobby-Boy#Agatha: Portier#M. Jean: Rezeptionist#Zero Mustafa: Concierge#frei: M. Gustave
KW45#M. Chuck: Concierge#M. Gustave: Lobby-Boy#M. Jean: Rezeptionist#Zero Mustafa: Portier#frei: Agatha
KW46#M. Gustave: Lobby-Boy#Agatha: Concierge#M. Jean: Rezeptionist#M. Chuck: Portier#frei: Zero Mustafa
KW47#Agatha: Lobby-Boy#Zero Mustafa: Rezeptionist#M. Jean: Portier#M. Gustave: Concierge#frei: M. Chuck
KW48#M. Jean: Rezeptionist#Agatha: Portier#M. Chuck: Lobby-Boy#M. Gustave: Concierge#frei: Zero Mustafa
KW49#Agatha: Concierge#M. Chuck: Lobby-Boy#M. Jean: Portier#M. Gustave: Rezeptionist#frei: Zero Mustafa
KW50#Zero Mustafa: Lobby-Boy#M. Gustave: Rezeptionist#Agatha: Portier#M. Chuck: Concierge#frei: M. Jean
KW51#Zero Mustafa: Lobby-Boy#Agatha: Rezeptionist#M. Gustave: Portier#M. Chuck: Concierge#frei: M. Jean
KW52#Zero Mustafa: Concierge#M. Chuck: Portier#M. Gustave: Lobby-Boy#M. Jean: Rezeptionist#frei: Agatha