CPT 200: Functionality 4 - Strings, Lists, and Dictionaries - Search by SSN and Edit Employee Information
import sys
employeeList = {}
lstMenuOption = ('1', '2', '3', 'Q')
edtMenuOption = ('1', '2', '3', '4', '5', 'Q')
#i = 0 #loop count variable
validation = False #initialize validation check to "False"
menuSelection = None
numEmployees = None
num = 1
def cls():
print('\n'*50)
def main_menu():
print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') #53 Characters
print('(1) Add new employee(s)')
print('(2) View all employees in the database')
print("(3) Search for employee by SSN")
print('(Q) Exit\n')
totalEmployees = len(employeeList) #Display number of employees in the databse
print('There are (%d) in the database' % totalEmployees)
print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
option = input('Please select an option from the menu: ')
return option
def edit_menu():
print('------------------Choose which field to edit------------------')
print('(1) Name')
print('(2) SSN')
print('(3) Phone Number')
print("(4) Email")
print("(5) Salary")
print('(Q) Exit\n')
totalEmployees = len(employeeList) #Display number of employees in the databse
print('There are (%d) in the database' % totalEmployees)
print('-----------------------------------------------------')
option = input('Please select an option from the menu: ')
return option
def search_by_ssn():
search = input('Please enter the SSN you want to find: ')
for empName in employeeList.keys():
record = employeeList[empName]
if record[2] == search:
view_employee(empName)
global empEdit
empEdit = empName
return record
else:
print('Invalid option, try again')
continue
def edit_info(editSelect):
if editSelect.upper() in edtMenuOption:
while editSelect.isnumeric() == True:
if editSelect == '1':
newName = edit_name()
return newName
elif editSelect == '2':
pass
elif editSelect == '3':
pass
elif editSelect == '4':
pass
elif editSelect == '5':
pass
elif editSelect.upper() == 'Q':
break
elif editSelect.upper() != 'Q':
print('Invalid option, please try again')
editSelect = edit_menu()
break
else:
print('Invalid option, please try again')
editSelect = edit_menu()
def edit_question():
yesno = input('Would you like to edit the employee record (y/n): ')
if yesno.lower() == 'y':
editSelect = edit_menu()
edit_info(editSelect)
view_all_employees()
elif yesno.lower() == 'n':
menuSelection = None #Reset check values to default
validation = False
elif (yesno.lower() != ('y' or 'n')) or (yesno.isnumeric() == True):
print('You have entered an invalid option, please try again')
edit_question()
def edit_name():
revFName = input("Please enter the employee's first name: ")
revLName = input("Please enter the employee's last name: ")
revFullName = revFName + ' ' + revLName
record[0] = revFName
record[1] = revLName
employeeList[revFullName.upper()] = employeeList.pop(empEdit)
return revFullName.upper()
def valid(option): #Function to validate menu selection
if (option.isnumeric() == True):
if option in lstMenuOption:
return True
elif (option.upper() == 'Q'):
global menuSelection
menuSelection = option.upper()
return True
elif (option.isnumeric() == False):
print('You have not entered a correct option.')
return False
def num_employees():
numEmployees = (input('Please enter the number of employee(s) you are entering (Q to Quit): '))
if (numEmployees.isnumeric() == True) and (int(numEmployees) < 0):
print('You have entered an invalid quantity\n')
elif (numEmployees.isnumeric() == False):
if (numEmployees.upper() == 'Q'):
main_menu()
else:
print('You have entered an invalid quantity')
return None
else:
numEmployees = int(numEmployees)
return numEmployees
#while (numEmployees > 0):
def add_employee(): #CPT 200: Functionality 1 part 1
employeeFName = input("Please Emter the Employee #%d's First Name:" % num)
employeeLName = input("Please Enter the Employee #%d's Last Name:" % num)
employeeSSN = input("Please Enter %s %s's SSN (123456789):" % (employeeFName, employeeLName))
employeePhone = input("Please Enter %s %s's Phone Number:" % (employeeFName, employeeLName))
employeeEmail = input("Please Enter %s %s's Email Address:" % (employeeFName, employeeLName))
employeeSalary = input("Please Enter %s %s's Salary:" % (employeeFName, employeeLName))
employeeFull = employeeFName + ' ' + employeeLName
print(" ")
employeeInfo = [employeeFName.capitalize(), employeeLName.capitalize(), employeeSSN, employeePhone, employeeEmail, employeeSalary]
#employeeList[employeeLName] = employeeInfo
return employeeFull.upper(), employeeInfo
def view_all_employees(): #Function to display all the keys of employeeList, Functionality 1 part 2
print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
print('The following employees are currently in the database')
for key in employeeList.keys():
record = employeeList[key]
print('---------------------------- %s -----------------------------' % key)
print('SSN: %s' % record[2])
print('Phone: %s' % record[3])
print('Email: %s' % record[4])
print('Salary: $%s' % record[5])
print('-----------------------------------------------------')
print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
def view_employee(empName): #Funtionality 1 part 2.5
#print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
#empName = input('Please enter the name of the employee you want to view: ').upper()
#if empName in employeeList:
record = employeeList[empName]
print('---------------------------- %s -----------------------------' % empName)
print('SSN: %s' % record[2])
print('Phone: %s' % record[3])
print('Email: %s' % record[4])
print('Salary: $%s' % record[5])
print('--------------------------------------------------------------------')
while menuSelection == None:
while validation == False: #Menu option validation
menuSelection = main_menu()
validation = valid(menuSelection)
if menuSelection in lstMenuOption: #Menu option selection
while (menuSelection.isnumeric() == True):
if menuSelection == '1':
while numEmployees == None or numEmployees == 0:
numEmployees = num_employees()
for employee in range(0, numEmployees, 1):
employeeFull, employeeInfo = add_employee()
employeeList[employeeFull] = employeeInfo
numEmployees = numEmployees - 1
num = num + 1
if (numEmployees > 0):
print('Prepare to enter employee #%d' % num)
menuSelection = None #Reset check values to default
validation = False
cls()
break
if menuSelection == '2':
view_all_employees()
menuSelection = None #Reset check values to default
validation = False
break
if menuSelection == '3':
record = search_by_ssn()
edit_question()
menuSelection = None
validation = False
break
else: #(menuSelection.isnumeric() == False):
if menuSelection == 'Q':
exit()
else:
print('You have not selected a valid option. Please try again.')
menuSelection = None
validation = False
employeeList = {}
lstMenuOption = ('1', '2', '3', 'Q')
edtMenuOption = ('1', '2', '3', '4', '5', 'Q')
#i = 0 #loop count variable
validation = False #initialize validation check to "False"
menuSelection = None
numEmployees = None
num = 1
def cls():
print('\n'*50)
def main_menu():
print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') #53 Characters
print('(1) Add new employee(s)')
print('(2) View all employees in the database')
print("(3) Search for employee by SSN")
print('(Q) Exit\n')
totalEmployees = len(employeeList) #Display number of employees in the databse
print('There are (%d) in the database' % totalEmployees)
print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
option = input('Please select an option from the menu: ')
return option
def edit_menu():
print('------------------Choose which field to edit------------------')
print('(1) Name')
print('(2) SSN')
print('(3) Phone Number')
print("(4) Email")
print("(5) Salary")
print('(Q) Exit\n')
totalEmployees = len(employeeList) #Display number of employees in the databse
print('There are (%d) in the database' % totalEmployees)
print('-----------------------------------------------------')
option = input('Please select an option from the menu: ')
return option
def search_by_ssn():
search = input('Please enter the SSN you want to find: ')
for empName in employeeList.keys():
record = employeeList[empName]
if record[2] == search:
view_employee(empName)
global empEdit
empEdit = empName
return record
else:
print('Invalid option, try again')
continue
def edit_info(editSelect):
if editSelect.upper() in edtMenuOption:
while editSelect.isnumeric() == True:
if editSelect == '1':
newName = edit_name()
return newName
elif editSelect == '2':
pass
elif editSelect == '3':
pass
elif editSelect == '4':
pass
elif editSelect == '5':
pass
elif editSelect.upper() == 'Q':
break
elif editSelect.upper() != 'Q':
print('Invalid option, please try again')
editSelect = edit_menu()
break
else:
print('Invalid option, please try again')
editSelect = edit_menu()
def edit_question():
yesno = input('Would you like to edit the employee record (y/n): ')
if yesno.lower() == 'y':
editSelect = edit_menu()
edit_info(editSelect)
view_all_employees()
elif yesno.lower() == 'n':
menuSelection = None #Reset check values to default
validation = False
elif (yesno.lower() != ('y' or 'n')) or (yesno.isnumeric() == True):
print('You have entered an invalid option, please try again')
edit_question()
def edit_name():
revFName = input("Please enter the employee's first name: ")
revLName = input("Please enter the employee's last name: ")
revFullName = revFName + ' ' + revLName
record[0] = revFName
record[1] = revLName
employeeList[revFullName.upper()] = employeeList.pop(empEdit)
return revFullName.upper()
def valid(option): #Function to validate menu selection
if (option.isnumeric() == True):
if option in lstMenuOption:
return True
elif (option.upper() == 'Q'):
global menuSelection
menuSelection = option.upper()
return True
elif (option.isnumeric() == False):
print('You have not entered a correct option.')
return False
def num_employees():
numEmployees = (input('Please enter the number of employee(s) you are entering (Q to Quit): '))
if (numEmployees.isnumeric() == True) and (int(numEmployees) < 0):
print('You have entered an invalid quantity\n')
elif (numEmployees.isnumeric() == False):
if (numEmployees.upper() == 'Q'):
main_menu()
else:
print('You have entered an invalid quantity')
return None
else:
numEmployees = int(numEmployees)
return numEmployees
#while (numEmployees > 0):
def add_employee(): #CPT 200: Functionality 1 part 1
employeeFName = input("Please Emter the Employee #%d's First Name:" % num)
employeeLName = input("Please Enter the Employee #%d's Last Name:" % num)
employeeSSN = input("Please Enter %s %s's SSN (123456789):" % (employeeFName, employeeLName))
employeePhone = input("Please Enter %s %s's Phone Number:" % (employeeFName, employeeLName))
employeeEmail = input("Please Enter %s %s's Email Address:" % (employeeFName, employeeLName))
employeeSalary = input("Please Enter %s %s's Salary:" % (employeeFName, employeeLName))
employeeFull = employeeFName + ' ' + employeeLName
print(" ")
employeeInfo = [employeeFName.capitalize(), employeeLName.capitalize(), employeeSSN, employeePhone, employeeEmail, employeeSalary]
#employeeList[employeeLName] = employeeInfo
return employeeFull.upper(), employeeInfo
def view_all_employees(): #Function to display all the keys of employeeList, Functionality 1 part 2
print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
print('The following employees are currently in the database')
for key in employeeList.keys():
record = employeeList[key]
print('---------------------------- %s -----------------------------' % key)
print('SSN: %s' % record[2])
print('Phone: %s' % record[3])
print('Email: %s' % record[4])
print('Salary: $%s' % record[5])
print('-----------------------------------------------------')
print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
def view_employee(empName): #Funtionality 1 part 2.5
#print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
#empName = input('Please enter the name of the employee you want to view: ').upper()
#if empName in employeeList:
record = employeeList[empName]
print('---------------------------- %s -----------------------------' % empName)
print('SSN: %s' % record[2])
print('Phone: %s' % record[3])
print('Email: %s' % record[4])
print('Salary: $%s' % record[5])
print('--------------------------------------------------------------------')
while menuSelection == None:
while validation == False: #Menu option validation
menuSelection = main_menu()
validation = valid(menuSelection)
if menuSelection in lstMenuOption: #Menu option selection
while (menuSelection.isnumeric() == True):
if menuSelection == '1':
while numEmployees == None or numEmployees == 0:
numEmployees = num_employees()
for employee in range(0, numEmployees, 1):
employeeFull, employeeInfo = add_employee()
employeeList[employeeFull] = employeeInfo
numEmployees = numEmployees - 1
num = num + 1
if (numEmployees > 0):
print('Prepare to enter employee #%d' % num)
menuSelection = None #Reset check values to default
validation = False
cls()
break
if menuSelection == '2':
view_all_employees()
menuSelection = None #Reset check values to default
validation = False
break
if menuSelection == '3':
record = search_by_ssn()
edit_question()
menuSelection = None
validation = False
break
else: #(menuSelection.isnumeric() == False):
if menuSelection == 'Q':
exit()
else:
print('You have not selected a valid option. Please try again.')
menuSelection = None
validation = False
Comments
Post a Comment