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-

