2016-09-21 1 views
1

In dieser Übung wird davon ausgegangen, dass Sie die Klasse Employee für Programmieraufgabe 4 erstellt haben. Erstellen Sie ein Programm, das Mitarbeiterobjekte in einem Wörterbuch speichert. Verwenden Sie die Mitarbeiter-ID-Nummer als Schlüssel. Das Programm sollte ein Menü darstellen, in dem der Benutzer folgende Aktionen ausführen kann: • Nachschlagen eines Mitarbeiters im Wörterbuch • Hinzufügen eines neuen Mitarbeiters zum Wörterbuch • Ändern Sie den Namen, die Abteilung und den Titel eines vorhandenen Mitarbeiters im Wörterbuch • Löschen Sie einen Mitarbeiter aus dem Wörterbuch • Beenden Sie das Programm Wenn das Programm beendet wird, sollte es das Wörterbuch einlegen und in einer Datei speichern. Jedes Mal, wenn das -Programm gestartet wird, sollte es versuchen, das eingelegte Wörterbuch aus der Datei zu laden. Wenn die Datei nicht vorhanden ist, sollte das Programm mit einem leeren Wörterbuch beginnen.Python-Klasse: Mitarbeiterverwaltungssystem

Okay, so ist hier meine Lösung: -

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 

ich die oben als Employee.py in einem Ordner gespeichert. Dann begann ich eine neue Datei und gespeichert, dass als Mitarbeitermanagement System.py Hier ist der Code in der Datei

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() 

Mein erstes Problem ist, dass ich das erstellte Attribué in Employee.py zu verwenden versuchen. Insbesondere die init und Eintrag hinzufügen. Ich weiß, dass der oben genannte Code nicht im logischsten Forum ist, aber ich versuche zuerst zu sehen, ob ich Daten hinzufügen kann, dann pickele die Datei zuerst. Alles andere wäre später leicht zu verstehen, wenn ich diese zwei Dinge machen könnte.

Es erinnert mich irgendwie an

import math 
x = math.pi(3.14) 
x = module.function(3.14) 

aber ich kann die Verbindung zwischen den beiden Beispielen aus nicht nur zu sein scheinen. Vielen Dank

Antwort

2

Was Sie versuchen, ist ein Objekt Employee mit den angegebenen Parametern instanziieren. Um dies zu tun, rufen Sie einfach den Klassennamen auf, als wäre es eine Funktion, und übergeben Sie diese Parameter. In Ihrem Fall ist der Klassenname Employee im Employee Modul, so dass Sie dies tun würden.

 entry = Employee.Employee(id, number, department, job_title) 

Dies wird ein neues Employee-Objekt und ruft seine __init__ Methode mit den Parametern erstellen Sie in geben

+0

ich thou Das war es, aber Employee. Der Angestellte schien mir einfach falsch zu sein. – JDDoe

+0

Auch können Sie mir bitte einen Rat geben, wie Sie die Beizdatei aktualisieren können. – JDDoe

+0

Ich verstehe es immer noch nicht. Hier ist was ich bisher http://pastebin.com/QLfKywtN – JDDoe

1

ich konnte einen funktionierenden Code schreiben, check it out
emp Notiz stellt Mitarbeiter während emp_dic Mitarbeiter Wörterbuch repräsentieren

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() 
+1

Willkommen in der Gemeinschaft. Können Sie Ihr Beispiel erläutern? Was genau wird angesprochen? – Litty

+0

Danke, Nun, das Beispiel löst tatsächlich die ganze Frage. lese ich ein Lehrbuch und die Frage war eine Übung dort und ich konnte es lösen. Das Beispiel behandelt also das ganze Problem – Rammy