Write a menu driven program in Python that asks the user to add, display, and search records of students stored in a binary file.
The student record contains roll no, name and test score. It should be stored in a dictionary object.
Your program should pickle the object and save it to a binary file.
import pickle def set_data(): rollno = int(input('Enter roll number: ')) name = input('Enter name: ') test_score = int(input('Enter test score: ')) print() #create a dictionary student = { } student['rollno'] = rollno student['name'] = name student['test_score'] = test_score return student def display_data(student): print('Roll number:', student['rollno']) print('Name:', student['name']) print('Test Score:', student['test_score']) print() def write_record(): #open file in binary mode for writing. outfile = open('student.dat', 'ab') #serialize the object and writing to file pickle.dump(set_data(), outfile) #close the file outfile.close() def read_records(): #open file in binary mode for reading infile = open('student.dat', 'rb') #read to the end of file. while True: try: #reading the oject from file student = pickle.load(infile) #display the object display_data(student) except EOFError: break #close the file infile.close() def search_record(): infile = open('student.dat', 'rb') rollno = int(input('Enter rollno to search: ')) flag = False #read to the end of file. while True: try: #reading the oject from file student = pickle.load(infile) #display record if found and set flag if student['rollno'] == rollno: display_data(student) flag = True break except EOFError: break if flag == False: print('Record not Found') print() #close the file infile.close() def show_choices(): print('Menu') print('1. Add Record') print('2. Display Records') print('3. Search a Record') print('4. Exit') def main(): while(True): show_choices() choice = input('Enter choice(1-4): ') print() if choice == '1': write_record() elif choice == '2': read_records() elif choice == '3': search_record() elif choice == '4': break else: print('Invalid input') #call the main function. main()
Output:
Menu 1. Add Record 2. Display Records 3. Search a Record 4. Exit Enter choice(1-4): "1" () Enter roll number: 1 Enter name: "Amit" Enter test score: 23 () Menu 1. Add Record 2. Display Records 3. Search a Record 4. Exit Enter choice(1-4): "2" () ('Roll number:', 1) ('Name:', 'Amit') ('Test Score:', 23) () Menu 1. Add Record 2. Display Records 3. Search a Record 4. Exit Enter choice(1-4): "3" () Enter rollno to search: 1 ('Roll number:', 1) ('Name:', 'Amit') ('Test Score:', 23) () Menu 1. Add Record 2. Display Records 3. Search a Record 4. Exit Enter choice(1-4):
Screenshots-