/GradePointFinder

A webapp that assigns grade points to a list of students according to their marks in a subject and sends the result file to user specified E-mail ID.

Primary LanguagePython

GradePointFinder

A webapp that assigns grade points to a list of students according to the marks of overall batch in a subject and sends the result file to user specified E-mail ID.

Live Link

https://gp-finder.herokuapp.com/

Novelty

  1. Designed the complete frontend and backend.
  2. Created dummy dataset for testing purpose.
  3. Merging multiple files into a single csv file, removing duplicate entries and invalid entries.
  4. Sending email to multiple accounts with the result file attached.
  5. Able to attach multiple files at once.
  6. Only certain extensions allowed so that no invalid file has to be processed.
  7. Live project that can be accessed from anywhere.
  8. Implementation novelty: a) Different files for each feature (modular approach). b) Making standard template for HTML files to remove redundancy in code.

Technologies Used

  1. Flask (Backend)

image

  1. HTML (Frontend)

image

  1. CSS (Frontend)

image

  1. Heroku (Hosting website)

image

Steps Involved:

  1. User uploads the .csv or .txt files to the website.
  2. The files are pre-processed(removed duplicates and invalid entries) and merged together to form the list of the complete institution.
  3. The gpFinder.py script is run which calculates the grade and the grade point assigned to each student.
  4. Final result.csv is made and user is asked to enter his/her email-id(s), providing which he/she will receive the file.

FlowChart Methodology

image

UI Screenshots

image

image

image

image

GIF showing process for one example:

GP-Finder-Google-Chrome-2021-09

Input example:

image

imageimage

Output example:

image

image

Challenges

  1. Google Authentication for third party apps: Allow access in security settings of your account.
  2. File upload error for invalid files: Only allow certain extensions to be uploaded.
  3. HTML template was not getting extended to other pages correctly: Use "{% block .. %}" and "{% endblock %}" to rectify.

Future Scope

  1. Account authentication for different users who use this website.

Requirements

  1. Working Internet connection (around 2 Mbps)
  2. Mail account where you will receive the result.

Creating dummy dataset to test the code

#Creating a csv
rollNumbers = []
marks = []
for i in range(0,357):
  if len(str(i)) == 1:
    rollNumbers.append('10180368' + str(i))
  elif len(str(i)) == 2:
    rollNumbers.append('1018037' + str(i))
  else:
    rollNumbers.append('101803' + str(i))
  marks.append(random.randrange(30, 100))

data = {}
data['roll'] = rollNumbers
data['marks'] = marks

finalDataset = pd.DataFrame.from_dict(data)
finalDataset.to_csv('scores.csv')

image