import sys
import csv
employeeList = {}
employeeImport = {}
lstMenuOption = ('1', '2', '3', '4', 'Q')
edtMenuOption = ('1', '2', '3', '4', '5', 'Q')
validation = False #initialize validation check to "False"
menuSelection = None
numEmployees = None
num = 1
def cls():
print('\n'*50)
def main_menu():
totalEmployees = len(employeeList) #Display number of employees in the databse
print('{:~^79}'.format('~'))
print('{:~^79}'.format(' '))
print('{:~^79}'.format(' Employee Management System '))
print('{:~^79}'.format(' James Hardy '))
print('{:~^79}'.format(' '))
print('{:~^79}'.format('~'))
print(' ')
print('{:^79}'.format('There are (%d) employees in the database\n' % totalEmployees))
print('{:~^79}'.format('~'))
print(' ')
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')
print('{:~^79}'.format('~'))
print(' ')
option = input('Please select an option from the menu: ')
return option
def edit_menu():
totalEmployees = len(employeeList) #Display number of employees in the databse
print('There are (%d) employees in the database\n' % totalEmployees)
print('{:~^79}'.format('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')
print('{:~^79}'.format('~'))
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
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':
pass
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.capitalize()] = employeeList.pop(empEdit)
return revFullName.capitalize()
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()
print(' ')
else:
print('You have entered an invalid quantity')
return None
else:
numEmployees = int(numEmployees)
return numEmployees
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
employeeInfo = [employeeFName.capitalize(), employeeLName.capitalize(), employeeSSN, employeePhone, employeeEmail, employeeSalary]
if (employeeFull and employeeSSN) not in employeeList.keys():
with open('Employee_database.csv', 'a+') as employeeCSV:
employee_writer = csv.writer(employeeCSV)
employee_writer.writerow(employeeInfo)
else:
print('Employee is already in the database, please try again.')
return employeeFull.upper(), employeeInfo
def view_all_employees(): #Function to display all the keys of employeeList, Functionality 1 part 2
print('{:~^79}'.format('~'))
print(' ')
print('The following employees are currently in the database\n')
for key in employeeList.keys():
record = employeeList[key]
print('{:~^79}'.format(' %s ' % key))
print('SSN: %s' % record[2])
print('Phone: %s' % record[3])
print('Email: %s' % record[4])
print('Salary: $%s' % record[5])
print('{:~^79}'.format('~'))
def view_employee(empName): #Funtionality 1 part 2.5
record = employeeList[empName]
print('{:-^79}'.format(' %s ' % empName))
print('SSN: %s' % record[2])
print('Phone: %s' % record[3])
print('Email: %s' % record[4])
print('Salary: $%s' % record[5])
print('{:~^79}'.format('-'))
def import_employees():
with open('Employee_database.csv', 'r') as csvfile: #Opens the student answer file, and closes once finished
employee_reader = csv.reader(csvfile)
first_row = True
for row in employee_reader:
#Skip the first row with column names
if first_row:
first_row = False
continue
try:
fullName = row[0] + ' ' + row[1] #Creates full name for dictionary key
employeeList[fullName] = row
except IndexError:
pass
print('The following employees were imported:\n')
for employee in employeeList.keys():
print(employee)
print(' ')
input('<Press Enter to Continue>')
try:
import_employees()
except:
with open('Employee_database.csv', 'w') as employeeCSV:
employee_writer = csv.writer(employeeCSV)
csvrow1 = ['FirstName','LastName','SSN','Phone','Email','Salary']
employee_writer.writerow(csvrow1)
try:
while menuSelection == None:
menuSelection = main_menu()
cls()
if menuSelection.upper() 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
cls()
break
if menuSelection == '2':
view_all_employees()
input('<Press Enter to Continue>')
menuSelection = None #Reset check values to default
break
if menuSelection == '3':
record = search_by_ssn()
edit_question()
menuSelection = None
break
if menuSelection == '4':
pass
menuSelection = None
break
else: #(menuSelection.isnumeric() == False):
if menuSelection == 'Q':
exit()
else:
print('You have not selected a valid option. Please try again.')
menuSelection = None
except ValueError:
print('You have not selected a valid option. Please try again.')
import csv
employeeList = {}
employeeImport = {}
lstMenuOption = ('1', '2', '3', '4', 'Q')
edtMenuOption = ('1', '2', '3', '4', '5', 'Q')
validation = False #initialize validation check to "False"
menuSelection = None
numEmployees = None
num = 1
def cls():
print('\n'*50)
def main_menu():
totalEmployees = len(employeeList) #Display number of employees in the databse
print('{:~^79}'.format('~'))
print('{:~^79}'.format(' '))
print('{:~^79}'.format(' Employee Management System '))
print('{:~^79}'.format(' James Hardy '))
print('{:~^79}'.format(' '))
print('{:~^79}'.format('~'))
print(' ')
print('{:^79}'.format('There are (%d) employees in the database\n' % totalEmployees))
print('{:~^79}'.format('~'))
print(' ')
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')
print('{:~^79}'.format('~'))
print(' ')
option = input('Please select an option from the menu: ')
return option
def edit_menu():
totalEmployees = len(employeeList) #Display number of employees in the databse
print('There are (%d) employees in the database\n' % totalEmployees)
print('{:~^79}'.format('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')
print('{:~^79}'.format('~'))
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
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':
pass
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.capitalize()] = employeeList.pop(empEdit)
return revFullName.capitalize()
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()
print(' ')
else:
print('You have entered an invalid quantity')
return None
else:
numEmployees = int(numEmployees)
return numEmployees
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
employeeInfo = [employeeFName.capitalize(), employeeLName.capitalize(), employeeSSN, employeePhone, employeeEmail, employeeSalary]
if (employeeFull and employeeSSN) not in employeeList.keys():
with open('Employee_database.csv', 'a+') as employeeCSV:
employee_writer = csv.writer(employeeCSV)
employee_writer.writerow(employeeInfo)
else:
print('Employee is already in the database, please try again.')
return employeeFull.upper(), employeeInfo
def view_all_employees(): #Function to display all the keys of employeeList, Functionality 1 part 2
print('{:~^79}'.format('~'))
print(' ')
print('The following employees are currently in the database\n')
for key in employeeList.keys():
record = employeeList[key]
print('{:~^79}'.format(' %s ' % key))
print('SSN: %s' % record[2])
print('Phone: %s' % record[3])
print('Email: %s' % record[4])
print('Salary: $%s' % record[5])
print('{:~^79}'.format('~'))
def view_employee(empName): #Funtionality 1 part 2.5
record = employeeList[empName]
print('{:-^79}'.format(' %s ' % empName))
print('SSN: %s' % record[2])
print('Phone: %s' % record[3])
print('Email: %s' % record[4])
print('Salary: $%s' % record[5])
print('{:~^79}'.format('-'))
def import_employees():
with open('Employee_database.csv', 'r') as csvfile: #Opens the student answer file, and closes once finished
employee_reader = csv.reader(csvfile)
first_row = True
for row in employee_reader:
#Skip the first row with column names
if first_row:
first_row = False
continue
try:
fullName = row[0] + ' ' + row[1] #Creates full name for dictionary key
employeeList[fullName] = row
except IndexError:
pass
print('The following employees were imported:\n')
for employee in employeeList.keys():
print(employee)
print(' ')
input('<Press Enter to Continue>')
try:
import_employees()
except:
with open('Employee_database.csv', 'w') as employeeCSV:
employee_writer = csv.writer(employeeCSV)
csvrow1 = ['FirstName','LastName','SSN','Phone','Email','Salary']
employee_writer.writerow(csvrow1)
try:
while menuSelection == None:
menuSelection = main_menu()
cls()
if menuSelection.upper() 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
cls()
break
if menuSelection == '2':
view_all_employees()
input('<Press Enter to Continue>')
menuSelection = None #Reset check values to default
break
if menuSelection == '3':
record = search_by_ssn()
edit_question()
menuSelection = None
break
if menuSelection == '4':
pass
menuSelection = None
break
else: #(menuSelection.isnumeric() == False):
if menuSelection == 'Q':
exit()
else:
print('You have not selected a valid option. Please try again.')
menuSelection = None
except ValueError:
print('You have not selected a valid option. Please try again.')
Comments
Post a Comment