Error on line 181, in generating the slip, is my info in .txt is wrong? Code: class EmployeeInfo: emp_number = 0 emp_last = "" emp_first = "" emp_position = "" emp_department = "" emp_birth = "" emp_RD = 0 emp_NDWM = 0 def setEmpNumber(self,emp_number): self.emp_number = emp_number def setEmpLast(self,emp_last): self.emp_last = emp_last def setEmpFirst(self,emp_first): self.emp_first = emp_first def setEmpPositio(self,emp_position): self.emp_position = emp_position def setEmpDepartment(self,emp_department): self.emp_department = emp_department def setEmpBirth(self,emp_birth): self.emp_birth = emp_birth def setRD(self,emp_RD): self.emp_RD = emp_RD def setNDWM(self,emp_NDWM): self.emp_NDWM = emp_NDWM def add_emp(self): with open('employee.txt', 'a+') as f: self.emp_number = int(input("Enter emp number: ")) self.emp_last = input("Enter emp last: ") self.emp_first = input("Enter emp first: ") self.emp_position = input("Enter emp position: ") self.emp_department = input("Enter emp department: ") if self.emp_position == 'Manager': self.emp_RD = 1000 allowence = 5000 self.emp_NDWM = self.emp_RD+allowence elif self.emp_position == 'Asst.Manager': self.emp_RD = 750 allowence = 300 self.emp_NDWM = self.emp_RD+allowence elif self.emp_position == 'Secratery': self.emp_RD = 500 allowence = 0 self.emp_NDWM = self.emp_RD+allowence elif self.emp_position == 'Staff': self.emp_RD = 475 allowence = 0 self.emp_NDWM = self.emp_RD+allowence self.emp_birth = input("Enter emp birth: ") f.write(f"{self.emp_number},{self.emp_last},{self.emp_first},{self.emp_position},{self.emp_department},{self.emp_birth},{self.emp_RD},{self.emp_NDWM}\n") f.close() print("Employee Added Successfully\n"); def update_emp(self): number,last,first,pos,dep,birth,RD,NDWM = [],[],[],[],[],[],[],[] with open('employee.txt', 'r') as f: lines = f.readlines(); for line in lines: number.append(int(line.split(",")[0])) last.append(line.split(",")[1]) first.append(line.split(",")[2]) pos.append(line.split(",")[3]) dep.append(line.split(",")[4]) birth.append(line.split(",")[5]) RD.append(int(line.split(",")[6])) NDWM.append(int(line.split(",")[7])) f.close() print("Update by All Datas") num = int(input("Enter your emp number: ")) for i in range(len(number)): if num == number[i]: print("1-Emp Last") print("2-Emp First") print("3-Emp Position") print("4-Emp Department") print("5-Emp Birth") ch = int(input("Enter your choice: ")) if ch==1: ln = input("Enter new last naem: ") last[i] = ln elif ch==2: fn = input("Enter new first naem: ") first[i] = fn elif ch==3: p = input("Enter new position: ") pos[i] = p elif ch==4: d = input("Enter new department: ") dep[i] = d elif ch==5: bt = input("Enter new birth: ") birth[i] = bt else: print("Wrong input try again") # else: # print("Emp Number Not Found") with open('employee.txt', 'w') as wf: for i in range(len(number)): wf.write(f"{number[i]},{last[i]},{first[i]},{pos[i]},{dep[i]},{birth[i]},{RD[i]},{NDWM[i]}\n") print("Updated Successfully\n") wf.close() def increase_pay(self): number,last,first,pos,dep,birth,RD,NDWM = [],[],[],[],[],[],[],[] with open('employee.txt', 'r') as f: lines = f.readlines(); for line in lines: number.append(int(line.split(",")[0])) last.append(line.split(",")[1]) first.append(line.split(",")[2]) pos.append(line.split(",")[3]) dep.append(line.split(",")[4]) birth.append(line.split(",")[5]) RD.append(float(line.split(",")[6])) NDWM.append(float(line.split(",")[7])) f.close() for i in range(len(number)): if pos[i] == "Manager": RD[i] = RD[i] * 2 NDWM[i] = RD[i] + 5000 else: RD[i] = (RD[i]/2) + RD[i] if pos[i] == "Asst.Manager": NDWM[i] = RD[i] + 300 else: NDWM[i] = RD[i] + 0 with open('employee.txt', 'w') as wf: for i in range(len(number)): wf.write(f"{number[i]},{last[i]},{first[i]},{pos[i]},{dep[i]},{birth[i]},{RD[i]},{NDWM[i]}\n") print("Increased Pay Successfully\n") wf.close() def generate_slip(self): number,last,first,pos,dep,birth,RD,NDWM = [],[],[],[],[],[],[],[] with open('employees.txt', 'r') as f: lines = f.readlines(); for line in lines: number.append(int(line.split(",")[0])) last.append(line.split(",")[1]) first.append(line.split(",")[2]) pos.append(line.split(",")[3]) dep.append(line.split(",")[4]) birth.append(line.split(",")[5]) RD.append(float(line.split(",")[6])) NDWM.append(float(line.split(",")[7])) f.close() print("Pay Slips") print("Emp Number\tEmp Last\tEmp First\tEmp Position\tEmp Department\tEmp Birth\tEmp RD\tEmp NDWM") for i in range(len(number)): print(f"{number[i]}\t\t{last[i]}\t\t{first[i]}\t\t{pos[i]}\t\t{dep[i]}\t\t{birth[i]}\t{RD[i]}\t{NDWM[i]}") print("Pay Slip Generated Successfully\n") def exit_program(self): quit() while True: print("1 - ADD EMPLOYEE DATA") print("2 - UPDATE EMPLOYEE DATA") print("3 - INCREASE PAY") print("4 - GENERATE PAY SLIP") print("5 - EXIT PROGRAM") print("----------") userChoice = int(input("Enter Choice: ")) c = EmployeeInfo() if userChoice == 1: c.add_emp() elif userChoice == 2: c.update_emp() elif userChoice == 3: c.increase_pay() elif userChoice == 4: c.generate_slip() elif userChoice == 5: c.exit_program()
Error on line 181, in generating the slip, is my info in .txt is wrong?
Code:
class EmployeeInfo:
emp_number = 0
emp_last = ""
emp_first = ""
emp_position = ""
emp_department = ""
emp_birth = ""
emp_RD = 0
emp_NDWM = 0
def setEmpNumber(self,emp_number):
self.emp_number = emp_number
def setEmpLast(self,emp_last):
self.emp_last = emp_last
def setEmpFirst(self,emp_first):
self.emp_first = emp_first
def setEmpPositio(self,emp_position):
self.emp_position = emp_position
def setEmpDepartment(self,emp_department):
self.emp_department = emp_department
def setEmpBirth(self,emp_birth):
self.emp_birth = emp_birth
def setRD(self,emp_RD):
self.emp_RD = emp_RD
def setNDWM(self,emp_NDWM):
self.emp_NDWM = emp_NDWM
def add_emp(self):
with open('employee.txt', 'a+') as f:
self.emp_number = int(input("Enter emp number: "))
self.emp_last = input("Enter emp last: ")
self.emp_first = input("Enter emp first: ")
self.emp_position = input("Enter emp position: ")
self.emp_department = input("Enter emp department: ")
if self.emp_position == 'Manager':
self.emp_RD = 1000
allowence = 5000
self.emp_NDWM = self.emp_RD+allowence
elif self.emp_position == 'Asst.Manager':
self.emp_RD = 750
allowence = 300
self.emp_NDWM = self.emp_RD+allowence
elif self.emp_position == 'Secratery':
self.emp_RD = 500
allowence = 0
self.emp_NDWM = self.emp_RD+allowence
elif self.emp_position == 'Staff':
self.emp_RD = 475
allowence = 0
self.emp_NDWM = self.emp_RD+allowence
self.emp_birth = input("Enter emp birth: ")
f.write(f"{self.emp_number},{self.emp_last},{self.emp_first},{self.emp_position},{self.emp_department},{self.emp_birth},{self.emp_RD},{self.emp_NDWM}\n")
f.close()
print("Employee Added Successfully\n");
def update_emp(self):
number,last,first,pos,dep,birth,RD,NDWM = [],[],[],[],[],[],[],[]
with open('employee.txt', 'r') as f:
lines = f.readlines();
for line in lines:
number.append(int(line.split(",")[0]))
last.append(line.split(",")[1])
first.append(line.split(",")[2])
pos.append(line.split(",")[3])
dep.append(line.split(",")[4])
birth.append(line.split(",")[5])
RD.append(int(line.split(",")[6]))
NDWM.append(int(line.split(",")[7]))
f.close()
print("Update by All Datas")
num = int(input("Enter your emp number: "))
for i in range(len(number)):
if num == number[i]:
print("1-Emp Last")
print("2-Emp First")
print("3-Emp Position")
print("4-Emp Department")
print("5-Emp Birth")
ch = int(input("Enter your choice: "))
if ch==1:
ln = input("Enter new last naem: ")
last[i] = ln
elif ch==2:
fn = input("Enter new first naem: ")
first[i] = fn
elif ch==3:
p = input("Enter new position: ")
pos[i] = p
elif ch==4:
d = input("Enter new department: ")
dep[i] = d
elif ch==5:
bt = input("Enter new birth: ")
birth[i] = bt
else:
print("Wrong input try again")
# else:
# print("Emp Number Not Found")
with open('employee.txt', 'w') as wf:
for i in range(len(number)):
wf.write(f"{number[i]},{last[i]},{first[i]},{pos[i]},{dep[i]},{birth[i]},{RD[i]},{NDWM[i]}\n")
print("Updated Successfully\n")
wf.close()
def increase_pay(self):
number,last,first,pos,dep,birth,RD,NDWM = [],[],[],[],[],[],[],[]
with open('employee.txt', 'r') as f:
lines = f.readlines();
for line in lines:
number.append(int(line.split(",")[0]))
last.append(line.split(",")[1])
first.append(line.split(",")[2])
pos.append(line.split(",")[3])
dep.append(line.split(",")[4])
birth.append(line.split(",")[5])
RD.append(float(line.split(",")[6]))
NDWM.append(float(line.split(",")[7]))
f.close()
for i in range(len(number)):
if pos[i] == "Manager":
RD[i] = RD[i] * 2
NDWM[i] = RD[i] + 5000
else:
RD[i] = (RD[i]/2) + RD[i]
if pos[i] == "Asst.Manager":
NDWM[i] = RD[i] + 300
else:
NDWM[i] = RD[i] + 0
with open('employee.txt', 'w') as wf:
for i in range(len(number)):
wf.write(f"{number[i]},{last[i]},{first[i]},{pos[i]},{dep[i]},{birth[i]},{RD[i]},{NDWM[i]}\n")
print("Increased Pay Successfully\n")
wf.close()
def generate_slip(self):
number,last,first,pos,dep,birth,RD,NDWM = [],[],[],[],[],[],[],[]
with open('employees.txt', 'r') as f:
lines = f.readlines();
for line in lines:
number.append(int(line.split(",")[0]))
last.append(line.split(",")[1])
first.append(line.split(",")[2])
pos.append(line.split(",")[3])
dep.append(line.split(",")[4])
birth.append(line.split(",")[5])
RD.append(float(line.split(",")[6]))
NDWM.append(float(line.split(",")[7]))
f.close()
print("Pay Slips")
print("Emp Number\tEmp Last\tEmp First\tEmp Position\tEmp Department\tEmp Birth\tEmp RD\tEmp NDWM")
for i in range(len(number)):
print(f"{number[i]}\t\t{last[i]}\t\t{first[i]}\t\t{pos[i]}\t\t{dep[i]}\t\t{birth[i]}\t{RD[i]}\t{NDWM[i]}")
print("Pay Slip Generated Successfully\n")
def exit_program(self):
quit()
while True:
print("1 - ADD EMPLOYEE DATA")
print("2 - UPDATE EMPLOYEE DATA")
print("3 - INCREASE PAY")
print("4 - GENERATE PAY SLIP")
print("5 - EXIT PROGRAM")
print("----------")
userChoice = int(input("Enter Choice: "))
c = EmployeeInfo()
if userChoice == 1:
c.add_emp()
elif userChoice == 2:
c.update_emp()
elif userChoice == 3:
c.increase_pay()
elif userChoice == 4:
c.generate_slip()
elif userChoice == 5:
c.exit_program()
Step by step
Solved in 3 steps with 3 images