You are on page 1of 26

PROJECT

REPORT

JOB COACH

THE AMAATRA ACADEMY


THE AMAATRA ACADEMY

CLASS PROJECT

CERTIFICATE

THIS IS TO CERTIFY THAT Vikhyat Sai Jagini, CLASS 12, WITH REGISTER NUMBER

18601763 STYDYING IN THE AMAATRA ACADEMY HAS COMPLETED THIS PROJECT

UNDER DINAKAR K.S. GUIDENCE AND MAY BE CONSIDERED AS A PART OF THE

PRACTICAL EXAM CONDUCTED BY CBSE BOARD FOR AISSCE 2021-22.

__________________ __________________

GUIDE PRINCIPAL

_________ ________
INTERNAL EXAMINER EXTERNAL EXAMINER
ACKNOWLEDGEMENT

THIS PROJECT COULD NOT HAVE BEEN SUCCESSFULLY COMPLETED WITHOUT THE

UNENDING AND CONTINOUS SUPPORT AND HELP FROM ALL MY TEACHERS AND

GROUP MEMBERS. I WOULD ALSO LIKE TO THANK MY PARENTS FOR THEIR LOVE

AND ENCOURAGEMENT THROUGHOUT THE MAKING OF THIS PROJECT

VIKHYAT SAI JAGINI


INDEX
Team Members Page #1

Chapter 1: Project Definition Page #2

Chapter 2: Reason for choosing this topic Page #3

Chapter 3: Objective Page #4

Chapter 4: System Requirements Page #5

Chapter 5: Source Code Page #6 - 14

Chapter 6: Output Screen Page #15 - 20

Chapter 7: Limitations Page #21

Bibliography Page #22


TEAM MEMBERS

 Sri Shaatvika
Registration number: 18601672
Email-id: srishaatvika@gmail.com

 Neha Namburi
Registration number: 18601750
Email-id: namburi.neha@gmail.com

1
PROJECT DEFINITION

With the COVID variants pushing countries into lockdowns, the search for a job has become
worse- especially for the uneducated, underprivileged and the poor. Several catastrophes,
including wars, wildfires, hurricanes, have forced people to leave their hometowns in search
of a suitable job and livelihood. These people depend on jobs in the informal sector which
consists of uncertainty during the pandemic era. There is no job security in the event of a
disaster. Those who aren't educated have the least opportunities and are the most affected by
such calamities.
In 2021 alone, over 46.2 million people immigrated. Studies indicate that it is immensely
hard for these immigrants to find suitable jobs for themselves.

To address this growing problem, our group has come up with a project which recommends
immigrants prospective jobs. This way, immigrants can find a suitable job that can enable
them to earn a sustainable livelihood. Using the data published in a survey conducted by the
Government of India, we created Job Coach: a user-friendly platform that takes in data from
the user through an elaborate questionnaire and suggests them a suitable job with the help
of the survey results. Using the programming learnt at school, we integrated python
programming language to MySQL databases and generated a calculated suggestion on what
job would be suitable for the user. We suggest suitable jobs by analyzing their skill set: namely
age, origin, background, and other important factors. Using their phone number, they will be
able to register.

The project is designed to handle the migrant workers from various parts of the country. We
wish to incorporate the various other aspects and address its limitations in its future versions.

2
REASON FOR CHOOSING THIS TOPIC

 With the help of our classroom knowledge on programming, we wanted to solve a


real-life problem that would make a difference in society.
 We wanted to give the under-privileged and daily wage laborers a chance for better
job opportunities through an avenue that would suggest jobs based on their skill set.
 The global pandemic has led to severe job losses and the informal sector was worst
impacted. Other worldwide uncertainties like the Afghanistan crisis have also
impacted the lives of the vulnerable the most. This platform was implemented to
help these people find jobs- at least temporary replacement jobs.
 We also wanted to tackle the lack of job search engines in the informal sector
through our initiative.
 Through such a platform, we hope to mobilize more people and assign better and
more fruitful jobs to more people, thereby improving the state of the people in our
country. This, in turn, could help boost the country’s economy.

3
OBJECTIVE OF THE PROJECT

Our main objective is to make the process of immigration easier for the daily wage laborers.
With our interactive application, we recommend laborers suitable jobs which fit their
personal and professional conditions.
To make a well-informed decision, we gather information about the laborers’ age, education
and skills and integrate these with statistical findings from a study by the name The Life and
Times of Migrant Workers in Chennai conducted by J.Jeyaranjan from the Institute of
Development Alternatives, Chennai . This way, we can help a labourer find a sector that has
jobs in which he/she can fit into easily and ensure a sustainable livelihood.
Our project integrates 2 programming languages- MySQL and Python. MySQL serves as the
storehouse of the jobs and questions through which we ask for inputs from the user - namely
age, education, marital status, etc. Once the user inputs these details, we compare it with our
statistical findings and recommend several jobs which come under a particular sector (which
is best-suited for the user). Next, we upload the user’s data in a CSV file. We then access our
database and print the various jobs that belong to a particular sector.
This way, the user can make an informed decision and pursue a job that can provide him with
better returns.

4
SYSTEM REQUIREMENTS

Hardware Requirements:

 A Computer/Laptop with
 Operating System-Windows 7 or above
 x86 64-bit CPU (Intel / AMD architecture)
 4 GB RAM.
 5 GB free disk space

Software Requirements:

 Python 3.6.x or higher version


 Pandas Library preinstalled
 Matplotlib Library preinstalled
 MS-Office

5
SOURCE CODE

#importing modules
import csv
import tkinter as tk
import mysql.connector
from tkinter import *

import mysql.connector as m

#Assigning Tkinter Object


root = Tk()

#Establishing MySQL- Python Connectivity


con=m.connect(host='127.0.0.1',user='root',password='amaatra',database='client')
cur=con.cursor()

#Fetching questions from MySQL


cur.execute("select * from personal_details")
data=list(cur.fetchall())
w=[]
hold=[]
for i in range (len(data)):
w.append(data[i][1])
#print(w) -- test case

#Display screen dimensions


root.geometry('1500x1500')
root.title("INFORMATION PORTAL")

6
#----------------------------------------------- FRONT END ------------------------------------------
-----------

#Header
l0 = Label(root, text="INFORMATION PORTAL",width=25, font=("Helvetica", 35))
l0.place(x=400,y=53)

#l1 and e1 -> Question 1 and Textbox


l1 = Label(root, text=w[0],width=20,font=("bold", 10))
l1.place(x=100,y=130)

e1 = Entry(root)
e1.place(x=700,y=130)

#e2 and l2 -> Question 2 and Text box


l2 = Label(root, text=w[1],width=20,font=("bold", 10))
l2.place(x=83,y=180)

e2 = Entry(root)
e2.place(x=700,y=180)

#l3 and radio -> Question 3 and Radio button


l3 = Label(root, text=w[2],width=20,font=("bold", 10))
l3.place(x=147,y=230)
var3 = IntVar()
Radiobutton(root, text="Uneducated",padx = 5, variable=var3,
value=1).place(x=700,y=230)
Radiobutton(root, text="Matriculate",padx = 20, variable=var3,
value=2).place(x=900,y=230)

7
Radiobutton(root, text="College Graduate",padx = 20, variable=var3,
value=3).place(x=1100,y=230)

#l4 and e4 -> Question 4 and Text box


l4 = Label(root, text=w[3],width=25,font=("bold", 10))
l4.place(x=93,y=280)

e4 = Entry(root)
e4.place(x=700,y=280)

#l5 and radio -> Question 5 and Radio button


l5 = Label(root, text=w[4],width=20,font=("bold", 10))
l5.place(x=90,y=330)
var5 = IntVar()
Radiobutton(root, text="Male",padx = 5, variable=var5, value=1).place(x=700,y=330)
Radiobutton(root, text="Female",padx = 20, variable=var5, value=2).place(x=900,y=330)

#l6 and radio -> Question 6 and Radio button


l6 = Label(root, text=w[5],width=20,font=("bold", 10))
l6.place(x=115,y=380)
var6 = IntVar()
Radiobutton(root, text="N-E India",padx = 5, variable=var6, value=1).place(x=700,y=380)
Radiobutton(root, text="N India",padx = 20, variable=var6, value=2).place(x=900,y=380)
Radiobutton(root, text="S India",padx = 20, variable=var6, value=3).place(x=1100,y=380)

#l7 and e7 -> Question 7 and Text box


l7 = Label(root, text=w[6],width=50,font=("bold", 10))
l7.place(x=34,y=430)

e7 = Entry(root)
e7.place(x=700,y=430)

8
#l8 and radio -> Question 8 and Radio button
l8 = Label(root, text=w[7],width=40,font=("bold", 10))
l8.place(x=102,y=480)
var8 = IntVar()
Radiobutton(root, text="Speak",padx = 5, variable=var8, value=1).place(x=700,y=480)
Radiobutton(root, text="Read & Speak",padx = 20, variable=var8,
value=2).place(x=900,y=480)
Radiobutton(root, text="Studied Language in School",padx = 20, variable=var8,
value=3).place(x=1100,y=480)

#l9 and radio -> Question 9 and Radio button


l9 = Label(root, text=w[8],width=30,font=("bold", 10))
l9.place(x=73,y=530)
var9 = IntVar()
Radiobutton(root, text="Married",padx = 5, variable=var9, value=1).place(x=700,y=530)
Radiobutton(root, text="Unmarried",padx = 20, variable=var9,
value=2).place(x=900,y=530)

#l10 and radio -> Question 10 and Radio button


l10 = Label(root, text=w[9],width=30,font=("bold", 10))
l10.place(x=75,y=580)
var10 = IntVar()
Radiobutton(root, text="Yes",padx = 5, variable=var10, value=1).place(x=700,y=580)
Radiobutton(root, text="No",padx = 20, variable=var10, value=2).place(x=900,y=580)

#----------------------------------------------------------------------------------------------------------
---------

9
#--------------------------------------- BACK END / LOGIC -----------------------------------------
----------

def recorddata():
inform = Label(root, text = "Please look at IDLE output for job recommendations", width
= 100, fg = "red", font = ("bold",10))
inform.place(x=370,y=650)

#Storing user entered values entered into 'hold'

hold.extend([e1.get(),e2.get(),var3.get(),e4.get(),var5.get(),var6.get(),e7.get(),var8.get(),var
9.get(),var10.get()])

#Accepting only 10 digit values as phone numbers


if (len(str(hold[3]))!=10):
print("Enter a Valid Phone number of 10 digits")

else:
#print(hold) --test case

#Checking phone number


f=open("userInfo.csv")
data=csv.reader(f)
#print(data) --test case

next(data)
rows=[]
for row in data:
rows.append(row)

10
#print(rows) --test case
flag=0

#Using Phone Number as a unique identifier


for i in range(len(rows)):
if (rows[i]!=[]):
if (rows[i][3]==hold[3]):
print("A form with this phone number already exists. Please give another phone
number.")
flag=1
f.close()
#Program ends

if (flag!=1):
cs=ms=ss=0

# Checking Age
if int(hold[1]) in range(18,30):
ms=ms+1
elif int(hold[1]) in range (30,50):
ss=ss+1
else:
cs=cs+1

# Checking Education
if hold[2] == 1:
cs=cs+1
elif hold[2] == 2:
ss=ss+1
else:

11
ms=ms+1

# Checking Origin
if hold[5] == 1:
ms=ms+1
elif hold[5] == 2:
ss=ss+1
else:
cs=cs+1
# Checking Marital Status
if hold[8]==1:
cs=cs+1
ss=ss+1
else:
ms=ms+1

# Checking Driver's License


if hold[9]==1:
ss+=1
else:
ms+=1
cs+=1
#print(cs,ms,ss) -- test case

#Incase the parameters become equal


if ms == cs:
if hold[2] == 1:
ms=ms+1
else:

12
cs=cs+1
elif ms == ss:
if hold[2] == 3:
ss=ss+1
else:
ms=ms+1

elif cs == ss:
if hold[2] == 3:
ss=ss+1
else:
cs=cs+1

#Final result printing


x = max(ms,cs,ss)
jobRec=[]
if x == ms:
print("MANUFACTURING SECTOR")
cur.execute("select * from manufacture")
display = cur.fetchall()
for i in range (len(display)):
jobRec.append(display[i][0])
elif x == cs:
print("CONSTRUCTION SECTOR")
cur.execute("select * from construction")
display = cur.fetchall()
for i in range (len(display)):
jobRec.append(display[i][0])
else:
print("SERVICE SECTOR")

13
cur.execute("select * from service")
display = cur.fetchall()
for i in range(len(display)):
jobRec.append(display[i][0])
print("******** JOB RECOMMENDATIONS ********")
for i in jobRec:
print(i)
print("*************************************")

print("Thank you")

#Storing in CSV File


f=open("userInfo.csv",'a')
writerobj=csv.writer(f)
#writerobj.writerow(['Name','Age','Level of Education','Phone
number','Gender','Region','Number of Languages','Expertise inLanguage','Marital
Status','Driving License']) ---test case
writerobj.writerow(hold)
f.close()
#------------------------------------------------------------------------------------------------------

#Submit button
btn=Button(root, text='Submit',width=20,bg='brown',fg='white', command=recorddata)
btn.place(x=700,y=620)

root.mainloop()

14
OUTPUT SCREENSHOTS

Figure 1: The front-end where user inputs information

15
Figure 2: User interface with information from user 1

16
Figure 3: Output screen of user 1

17
Figure 4: User interface with information from user 2

18
Figure 5: Output screen for user 2

19
Figure 6: CSV file containing details of the users

20
LIMITATIONS OF THE PROJECT

 This application is only limited to Indian users and focuses on migration within the
country only.
 Cannot accommodate more user-defined functions because of variable type.
 Lacks a real-world search engine and high-quality user experience.
 Users cannot input the names of the languages known and their expertise in each of
them.
 Lack of data to streamline the project for a specific city/ locality
 It also lacks specificity in the jobs offered. All the assignments are made sector-wise.
 Analyzing the data of the users is hard because the data is stored in a CSV file.
 Cannot validate the information entered by the user
 The output of the jobs is printed on the IDLE output screen while the user inputs
his/her details on the Tkinter interface. Hence, it is hard to locate the output.

21
BIBLIOGRAPHY

 https://labour.gov.in/list-professions-occupations-covered
 https://docs.python.org/3/library/tkinter.html
 https://www.tutorialspoint.com/python/python_gui_programming.htm
 Computer Science with python (class 11) – Sumita Arora
 Computer Science with Python (class 12) – Sumita Arora
 The Life and Times of Migrant Workers in Chennai – J Jeyaranjan

22

You might also like