Click here to Skip to main content
15,886,071 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
import pickle
import student


LOOK_UP = 1
ADD = 2
CHANGE = 3
CHANGE_2 = 4
DISPLAY = 5
QUIT = 6

File = 'students.dat'

def main():
    mystudents = load_students()
    add(mystudents)
    look_up(mystudents)
    change_GPA(mystudents)
    change_grade(mystudents)
    print_data(mystudents)

##    choice = 0
##    while choice != QUIT:
##        choice = get_menu_choice()
##        if choice == LOOK_UP:
##            look_up(mystudents)
##
##save_students(mystudents)

def load_students():
    try:
        input_file = open(File, 'rb')
        student_dict = pickle.load(input_file)
        input_file.close()
    except IOError:
        student_dict = {}
    return student_dict


def look_up(mystudents):
    student_ID = input('Enter an ID')
##    try:
##        print(mystudents[student_ID])
##    except KeyError:
##        print('Not found!')
    print(mystudents.get(student_ID, "Not found!"))
    #print(mystudents)

def add(mystudents):
   name = input('Name:')
   student_ID = input('ID:')
   GPA = input('GPA:')
   grade_course = input('Grade:')
   work_time = input('Hours work:')
   entry = student.Student(name,student_ID, GPA, grade_course, work_time)
   if student_ID not in mystudents:
        mystudents[student_ID] = entry
        print('Student added')
   else:
      print('Entry existed')

def change_GPA(mystudents):
    name = input('Enter student name:')
    student_ID = input('Enter an ID')
    if student_ID in mystudents:
        new_GPA = input('Enter new GPA')
        grade = mystudents[student_ID].grade_course
        work = mystudents[student_ID].work_time
        new_student = student.Student(name,student_ID,new_GPA,grade,work)
        mystudents[student_ID] = new_student
        ##mystudents[student_ID].GPA = new_GPA
        ##mystudents[student_ID].GPA = mystudents[student_ID]
##        #entry = student.Student(name,student_ID, new_GPA,grade_course,work_time)
        print(mystudents[student_ID])
        print('Updated')
    else:
        print('Not found!')
        
def change_grade(mystudents):
    student_ID = input('Enter an ID')
    if student_ID in mystudents:
        grade = input('Enter new grade')
        mystudents[student_ID]
##        grade = mystudents[student_ID].grade_course
##        old_GPA = mystudents[student_ID].GPA
##        old_work = mystudents[student_ID].work_time
##        new_student = student.Student(student_ID,old_GPA,grade,old_work)
##        mystudents[student_ID] = new_student
        mystudents[student_ID].grade_course = grade
        print(mystudents[student_ID])
        print('Updated')
    else:
        print('Not found!')

def display_student_info(mystudents[student_ID]):
    print("Name\tI.D. #\t\tGPA\t\tExpected Grade\t\tEmployment")
    print("----------------------------------------------------------")
    for name in mystudents[student_ID]:
        print(name, '\t', getattr(name, "id_number"),
              '\t', getattr(name, "gpa"), '\t', getattr(name, "expected_grade"), '\t', getattr(name, "work_status"))

        
def save_students(mystudents):
    output_file = open(Filename, 'wb')
    pickle.dump(mystudents, output_file)
    output_file.close()

main()




This is what I'm supposed to do but I've been staring at this code for hours.
1. Look up and print the student GPA
2. Add a new student to the class
3. Change the GPA of a student
4. Change the expected grade of a student
5. Print the data of all the students in a tabular format
6. Quit the program


This is the error message
VB
Traceback (most recent call last):
  File "/Users/kimmyyveee/Documents/Computer Science/Lab10.test2.py", line 104, in <module>
    main()
  File "/Users/kimmyyveee/Documents/Computer Science/Lab10.test2.py", line 18, in main
    change_GPA(mystudents)
  File "/Users/kimmyyveee/Documents/Computer Science/Lab10.test2.py", line 67, in change_GPA
    grade = mystudents[student_ID].grade_course
AttributeError: 'Student' object has no attribute 'grade_course'


And that's my class Student.

#student.py

        class Student:
            def __init__(self, name, student_ID,GPA,grade_course,work_time):
                self.__name = name
                self.__student_ID = student_ID
                self.__GPA = GPA
                self.__grade_course = grade_course
                self.__work_time = work_time
        #Mutator
            def set__student_ID(self, student_ID):
                self.__student_ID = student_ID
            def set__GPA(self, GPA):
                self.__GPA = GPA
            def set__grade_course(self, grade_course):
                self.__grade_course = grade_course
            def set__work_time(self, work_time):
                self.__work_time = work_time

        #return values(Acessor)
            def get_student_ID(self):
                return self.__student_ID
            def get_GPA(self):
                return self.__GPA
            def get_grade_course(self):
                return self.__grade_course
            def get_work_time(self):
                return self.__work_time
            
                
            def __str__(self):
                return '\nStudent Name:'+ self.__name+\
                       '\nStudent ID:'+ self.__student_ID+\
                       '\nStudent GPA:'+ self.__GPA+\
                       '\nStudent Expected Grade:'+ self.__grade_course+\
                       '\nStudent Work Time '+ self.__work_time
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900