此练习假定您已经创建了用于编程练习4的Employee类。创建一个将Employee对象存储在字典中的程序。使用员工ID编号作为密钥。程序应该提供一个菜单,让用户执行以下操作:·在字典中查找员工。向字典中添加一个新员工。在字典中更改现有员工的姓名、部门和职务。从字典中删除员工。在程序结束时退出该程序,它应该对字典进行筛选并将其保存到文件中。每次程序启动时,它都应该尝试从文件中加载经过腌制的字典。如果文件不存在,程序应该以一个空字典开始。
好的,这是我的解决方案:-
class Employee:
'ID, number, department, job title'
def __init__(self,ID,number,department,job_title):
self.ID = ID
self.number = number
self.department = department
self.job_title = job_title
# Mutators
def set_ID(self,ID):
self.ID = ID
def set_number(self,number):
self.number = number
def set_department(self,department):
self.department = department
def job_title(self,job_title):
self.job_title = job_title
#Accessor Methods
def get_ID(self):
return self.ID
def get_number(self):
return self.number
def get_department(self):
return self.department
def get_job_title(self):
return self.job_title
def get_data(self):
print self.ID, self.number,self.department,self.job_title我将上面的内容作为Employee.py保存在一个文件夹中。然后我启动了一个新文件并将其保存为System.py,这里是该文件中的代码
import Employee
import pickle
filename = 'contacts.dat'
input_file = open(filename,'rb')
unpickle_input_file = pickle.load(input_file)
def test_system():
user = input('Press 1 to look up employee,\nPress 2 to add employee'
'\n3Press 3 to change an existing employee name, department and job title'
'\n4 Delete an employee from the dictionary'
'\n5 Quit the program'
'\nMake your choice ')
if user == 2:
ID = raw_input('Enter the name ')
number = input('Enter the number')
deparment = raw_input('Enter the department ')
job_title = raw_input('Enter the job title ')
entry = module from Employee??.class name(id,number,department,job_title)??
empty_dictionary = {}
empty_dictionary[number] = entry
input_file.close()我的第一个问题是,我试图在Employee.py中使用创建的属性。特别是init并向其添加条目。我知道上面的代码并不是在最符合逻辑的论坛上,但我首先想看看是否可以添加数据,然后先对文件进行筛选。如果我能做好这两件事的话,其他的事情以后都很容易搞清楚。
它让我想起
import math
x = math.pi(3.14)
x = module.function(3.14)但我似乎不能把这两个例子联系起来。谢谢
发布于 2016-09-21 01:52:00
您要做的是用给定的参数实例化一个Employee对象。要做到这一点,只需像调用函数一样调用类名并传入这些参数。在您的示例中,类名是Employee模块中的Employee,因此您可以这样做:
entry = Employee.Employee(id, number, department, job_title)这将创建一个新的Employee对象,并使用传入的参数调用其__init__方法。
发布于 2018-02-28 20:48:11
我能写一段工作代码,检查一下
注emp表示雇员,而emp_dic表示员工字典。
class Employee():
def __init__(self, name, number, department, job):
self.name = name
self.number = number
self.department = department
self.job = job
def set_name(self, name):
self.name = name
def set_number(self, number):
self.number = number
def set_department (self, department):
self.department = department
def set_job (self, job):
self.job = job
def get_name(self):
return self.name
def get_number(self):
return self.number
def get_department(self):
return self.department
def get_job(self):
return self.job
def __str__(self):
return "Name: " +self.name+ "\nID Number "+self.number+"\nDepartment "+self.department+"\nJob "+self.job
import pickle
def main():
emp_dic = load_emp()
menu()
choice = input('Enter your choice')
while choice!=5:
if choice == 1:
lookup(emp_dic)
elif choice == 2:
add_(emp_dic)
elif choice == 3:
change(emp_dic)
elif choice ==4:
dele_(emp_dic)
elif choice <= 0 or choice > 5:
print 'You made a wrong selection'
elif choice == 5:
print "The program would quit now..."
print''
print''
menu()
choice = input('Enter your choice')
save_emp(emp_dic)
def load_emp():
try:
load_dic = open('employee.dat' , 'rb')
emp_details = pickle.load(load_dic)
load_dic.close()
except IOError:
emp_details = {}
return emp_details
def save_emp(emp_dic):
save_file = open('employee.dat','wb')
pickle.dump(emp_dic , save_file)
save_file.close()
def lookup(emp_dic):
search = raw_input("Enter your search query")
search_result = emp_dic.get(search, "Entry not found")
print search_result
def add_(emp_dic):
again = 'y'
while again.lower() == 'y':
name_ = raw_input("Enter employee name")
number = raw_input("Enter the ID number")
depart = raw_input("Enter Department")
job = raw_input("Enter Job title")
if name_ not in emp_dic:
entry = Employee(name_ ,number, depart, job)
emp_dic[name_] = entry
print name_, "has been successfully added"
else:
print name_, "already exists!"
again = raw_input("Enter 'y' to continue or any other alphabet to quit")
def change(emp_dic):
search = raw_input("Enter the name you want to change the details")
if search in emp_dic:
name_ = raw_input("Enter new employee name")
number = raw_input("Enter new the ID number")
depart = raw_input("Enter new Department")
job = raw_input("Enter new Job title")
entry = Employee(name_,number, depart, job)
emp_dic[name_] = entry
print name_, "has been successfully updated"
else:
print "Entry not found"
def delete_ (emp_dic):
search = raw_input("Enter the name you want to change the details")
if search in emp_dic:
del emp_dic[search]
print search, " has been deleted successfully"
else:
print "Entry not found"
def menu():
print 'Choose your Option below'
print "Look-up Employee Details = 1"
print 'Add new Employee Details = 2'
print 'Change an existing Employee Details = 3'
print 'Delete an Employee Details = 4'
print 'Quit the program = 5'
main()https://stackoverflow.com/questions/39606186
复制相似问题