Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Main file of the Python program.
- import csv
- def menu():
- #this prints the menu
- print()
- print('STUDENT INFORMATION SYSTEM')
- print('1 - load student data')
- print('2 - create student report')
- print('3 - enter new student details')
- print('4 - exit')
- print()
- choice = int(input('enter the menu number: '))
- #returns the choice to the main program
- return choice
- def reportMenu():
- #this prints the report menu
- print()
- print('STUDENT INFORMATION SYSTEM - report generator')
- print('1 - contact details')
- print('2 - personal details')
- print('3 - full report')
- print('4 - back')
- print()
- choice = int(input('enter the menu number: '))
- #returns the choice to the main program
- return choice
- def datasave(save_number, save_sname, save_fname, save_dob, save_addr, save_phone, save_gend, save_tutor, save_email):
- student = [0 for i in range(10)] # initialise an array. the stuff in the brackets basically creates an array with 10 cells
- # save all the data to the cells of the array. Arrays are 0 indexed - the first cell is cell 0
- student[0] = save_number
- student[1] = save_sname
- student[2] = save_fname
- student[3] = save_dob
- student[4] = save_addr
- student[5] = save_phone
- student[6] = save_gend
- student[7] = save_tutor
- student[8] = save_email
- student[9] = 1 # check digit
- return student # returns the array of student details
- def extractData(studentNumber):
- # open the file
- file = open('students.csv')
- reader = csv.reader(file)
- data = list(reader)
- index = 0
- row = 0
- while studentNumber != index:
- index = data[row][0]
- # variable = array[row number][column number]
- # row and column numbers are 0 indexed, so they start at 0
- if studentNumber != index:
- row = row + 1
- student = datasave(data[row][0], data[row][1], data[row][2], data[row][3], data[row][4], data[row][5], data[row][6], data[row][7], data[row][8])
- print(student[1])
- print('The details of student number ' + studentNumber + ' have been loaded.')
- file.close
- return student
- # the following 3 functions create reports and save to a file
- def contactDetails(student):
- print()
- reportName = student[0] + '_' + student[1] + '_cont'
- reportFile = open(reportName + '.txt', 'w')
- print('The contact details for student ' + student[0] + ' are: ')
- reportFile.write('The contact details for student ' + student[0] + ' are: ' + '\n')
- print(' Address: ' + student[4])
- reportFile.write(' Address: ' + student[4] + '\n')
- print(' Phone number: ' + student[5])
- reportFile.write(' Phone number: ' + student[5] + '\n')
- print('Email Address: ' + student[8])
- reportFile.write('Email Address: ' + student[8] + '\n')
- reportFile.close()
- print('these details have been written to ' + reportName + '.txt')
- input()
- def personalDetails(student):
- print()
- reportName = student[0] + '_' + student[1] + '_pers'
- reportFile = open(reportName + '.txt', 'w')
- print('The personal details for student ' + student[0] + ' are: ')
- reportFile.write('The personal details for student ' + student[0] + ' are: ' + '\n')
- print(' Name: ' + student[2] + ' ' + student[1])
- reportFile.write(' Name: ' + student[2] + ' ' + student[1] + '\n')
- print('Date of birth: ' + student[3])
- reportFile.write('Date of birth: ' + student[3] + '\n')
- print(' Gender: ' + student[6])
- reportFile.write(' Gender: ' + student[6] + '\n')
- reportFile.close()
- print('these details have been written to ' + reportName + '.txt')
- input()
- def fullReport(student):
- print()
- reportName = student[0] + '_' + student[1] + '_full'
- reportFile = open(reportName + '.txt', 'w')
- print('The full details for student ' + student[0] + ' are: ')
- reportFile.write('The full details for student ' + student[0] + ' are: ' + '\n')
- print(' Number: ' + student[0])
- reportFile.write(' Number: ' + student[0] + '\n')
- print(' Name: ' + student[2] + ' ' + student[1])
- reportFile.write(' Name: ' + student[2] + ' ' + student[1] + '\n')
- print('Date of birth: ' + student[3])
- reportFile.write('Date of birth: ' + student[3] + '\n')
- print(' Address: ' + student[4])
- reportFile.write(' Address: ' + student[4] + '\n')
- print(' Phone number: ' + student[5])
- reportFile.write(' Phone number: ' + student[5] + '\n')
- print(' Gender: ' + student[6])
- reportFile.write(' Gender: ' + student[6] + '\n')
- print(' Tutor group: ' + student[7])
- reportFile.write(' Tutor group: ' + student[7] + '\n')
- print('Email Address: ' + student[8])
- reportFile.write('Email Address: ' + student[8] + '\n')
- reportFile.close()
- print('these details have been written to ' + reportName + '.txt')
- input()
- # this functions write the details of a new student
- def writeDataToFile():
- file = open('students.csv')
- reader = csv.reader(file)
- lastrow = sum(1 for row in reader)
- #the file needs to be opened twice for this part, I think it's just a quirk of python
- file = open('students.csv')
- reader = csv.reader(file)
- data = list(reader)
- studentNumber = int(data[lastrow - 1][0]) + 1
- print('The new student will be saved as student number ' + str(studentNumber))
- sname = input('enter student surname: ')
- fname = input('enter student forename: ')
- dob = input('enter student birthdate: ')
- addr = input('enter student address: ')
- phone = input('enter student phone number: ') # add error handling here so a user can only input a number
- gend = input('enter student gender (M/F): ') # add error handling here so a user can only enter 'M' or 'F', or a single character
- tutor = input('enter student tutor group: ')
- email = str(studentNumber) + '@treeroad.sch.uk'
- print('the email address will be ' + email)
- student = datasave(studentNumber, sname, fname, dob, addr, phone, gend, tutor, email)
- file = open('students.csv', 'a', newline = '')
- writer = csv.writer(file, delimiter = ',')
- writer.writerow([student[0], student[1], student[2], student[3], student[4], student[5], student[6], student[7], student[8]])
- print()
- print('Welcome to the Student Information System')
- usern = input("Enter username: ")
- print('Welcome ' + usern)
- passw = input('Enter password: ')
- print('Logged in to system as ' + usern)
- state = 0
- student_loaded = 0
- while (state != 4):
- if state == 0:
- state = menu()
- elif state == 1:
- studentNumber = input('input student number: ')
- chosen = extractData(studentNumber)
- student_loaded = chosen[9]
- state = 0
- elif state == 2:
- if student_loaded == 1:
- report = reportMenu()
- if report == 1:
- contactDetails(chosen)
- elif report == 2:
- personalDetails(chosen)
- elif report == 3:
- fullReport(chosen)
- else:
- state = 0
- state = 0
- else:
- print('no student data has been loaded')
- state = 0
- elif state == 3:
- chosen = writeDataToFile()
- state = 0
- else:
- state = 0
- print('Thanks for using the system.')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement