[go: up one dir, main page]

0% found this document useful (0 votes)
107 views61 pages

Uni-Placer Insight Project Report

The document presents a project report titled 'UNI-PLACER INSIGHT' submitted by students from SRM Institute of Science and Technology for their Bachelor of Computer Applications degree. It outlines the development of a centralized platform to analyze and manage university placement data, addressing issues with existing manual systems that are prone to errors. The report details the software requirements, system analysis, design, and the benefits of the proposed solution for enhancing decision-making in placement management.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
107 views61 pages

Uni-Placer Insight Project Report

The document presents a project report titled 'UNI-PLACER INSIGHT' submitted by students from SRM Institute of Science and Technology for their Bachelor of Computer Applications degree. It outlines the development of a centralized platform to analyze and manage university placement data, addressing issues with existing manual systems that are prone to errors. The report details the software requirements, system analysis, design, and the benefits of the proposed solution for enhancing decision-making in placement management.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

UNI-PLACER INSIGHT

A PROJECT REPORT SUBMITTED TO

SRM INSTITUTE OF SCIENCE AND TECHNOLOGY

IN PARTIAL FULFILLMENT OF THE REQUIREMENT FOR

THE AWARD OF THE DEGREE OF

BACHELOR OF COMPUTER APPLICATION

BY
DEVPRIYA NALIN
[Link]. RA2131241010045
ARINDAM BHATTACHARJEE
[Link]. RA2131241010041
SUBHAYAN MAJUMDER
[Link]. RA2131241010056

UNDER THE GUIDANCE OF


[Link] MR, [Link]., [Link]., PhD

DEPARTMENT OF COMPUTER APPLICATION


FACULTY OF SCIENCE AND HUMANITIES
SRM INSTITUTE OF SCIENCE AND TECHNOLOGY
KATTANKULATHUR
APRIL 2024

i
BONAFIDE CERTIFICATE

This is to certify that the project report titled “UNI-PLACER INSIGHT” is a bonafide
work carried out by Arindam Bhattacharjee (Regno:RA2131241010041), Devpriya
Nalin (Reg no: RA2131241010045) and Subhayan Majumder (Reg no:
RA2131241010056) under my supervision for the award of the Degree of Bachelor of
Computer Applications. To my knowledge, the work reported herein is the original
work done by this student.

DR. M.R. Sudha DR. S. ALBERT ANTONY RAJ


Assistant Professor, Head,
Department of Computer Applications Department of Computer Applications
(GUIDE)

Internal Examiner External Examiner

ii
ACKNOWLEDGEMENT

With profound gratitude to the ALMIGHTY, I take this chance to thank the people
who helped me to complete this project.
We take this as the right opportunity to say THANKS to my Parents who are there to
stand with me always with the words “YOU CAN”.
We are thankful to Dr. T. R. Paarivendhar, Chancellor, SRM Institute of Science &
Technology who gave us the platform to establish myself to reach greater heights.
We earnestly thank Dr. A. Vinay Kumar Pro-Vice Chancellor, Dr. A. Duraisamy Dean,
Dr. S. Albert Antony Raj Head and Deputy Dean, Faculty of Science and Humanities,
SRM Institute of Science & Technology who always encourage us to do novel things.
We express our sincere thanks to Dr. S. Albert Antony Raj [Link]., [Link]., Ph.D.,
Head, Department of Computer Applications, for his valuable guidance and support
in executing all incline in learning.
It is our delight to thank our project guide Dr. Sudha MR , [Link]., [Link]., PhD,
Assistant Professor, Department of Computer Applications for her help, support,
encouragement, suggestions, and guidance throughout the development phases of
the project.

We convey our gratitude to all the faculty members of the department who extended
their support through valuable comments and suggestions during the reviews.
A great note of gratitude to friends and people who are known and unknown to me
who helped in carrying out this project work successfully.

Subhayan Majumder
Devpriya Nalin
Arindam Bhattacharjee

iii
Table of Contents

SNO NAME OF THE CHAPTER PAGE NO


1 INTRODUCTION
1.1 Key Features and Capabilities 1-2
1.2 Benefits and Value Proposition
1.3 In Conclusion
2 SOFTWARE REQUIREMENT ANALYSIS
2.1 Required Hardware 3-4
2.2 Required Software
2.3 About the system and its features
3 SYSTEM ANALYSIS
3.1 Existing Model
3.2 Issues with the current model 5-7
3.3 Proposed model
3.4 Feasibility Report
4 SYSTEM DESIGN
4.1 Sequence Diagram
4.2 Work Flow Diagram
4.3 Class Diagram 8-15
4.4 ER Diagram
4.5 Use-Case Diagram
4.6 Data-Flow Diagram
4.7 System Architecture
5 CODE TEMPLATES
5.1 Data Manager 16-43
5.2 View
6 OUTPUT SCREENS 44-49
7 TESTING 50-51
8 CONCLUSION 52
9 FURTHER ENHANCEMENT 53
10 REFERENCES 54
11 APPENDICES 55

iv
List of Figures

SNO FIGURE PAGE NO

1 Sequence Diagram 8

2 Work-Flow Diagram 9

3 Class Diagram 10

4 ER Diagram 11

5 Use-case Diagram 12

6 Data Flow Diagram 13

7 System Architecture 14-15

8 Landing Page 44

9 Student Placement Statistics 45

10 Company Placement Statistics 45

11 List of Companies Modal 46

12 Database Credentials 47

13 Login Modal 48

14 File Manager 49

v
ABSTRACT

Even while career development is becoming more and more important in


higher education, one major obstacle is the absence of a centralized, effective
system for monitoring placement data. There are currently few comprehensive
insights into student outcomes due to the fragmented nature of current
techniques. By offering a centralized platform that easily collects and analyses
university placement data, UniPlacer Insight seeks to solve this issue.

UniPlacer Insight provides customisable reports and trend analysis to support


well-informed decision-making. This application will work on the dataset given
by the placement cell. It will normalize the given data and help automate the
labour-intensive process of extracting and analysing. This application will use
graphical representation to help in decision making and comprehending
complex data.

In conclusion, UniPlacer Insight emerges as a transformative solution, poised


to revolutionize how universities track and utilize placement data.

vi
1. Introduction

With its extensive feature set, UniPlacer Insight is a smart platform designed to
extract significant insights from placement data. Through the utilization of
sophisticated analytics and adaptable reporting features, UniPlacer Insight
enables stakeholders to interpret patterns, assess performance indicators, and
precisely tailor placement plans.

1.1 Key Features and Capabilities:


Customizable Reports: With the comprehensive range of configurable reporting
capabilities provided by UniPlacer Insight, users can customize reports to meet
their unique needs. The platform offers versatility and agility in producing
meaningful analytics, whether assessing recruiter engagement, monitoring
student performance, or reviewing placement trends.
Trend Analysis: Stakeholders can anticipate future trends, spot patterns, and
modify placement plans with UniPlacer Insight's extensive trend analysis
functionalities. Users can explore the data landscape in great detail and find
possibilities and issues that are concealed thanks to interactive visualizations and
user-friendly dashboards.
User-Friendly Interface: Understanding the value of a positive user experience,
UniPlacer Insight has an easy-to-use interface that makes navigating around
easier and improves usability. The platform accommodates a range of skill levels,
from inexperienced users to experienced analysts, guaranteeing smooth
communication and optimal efficiency.

1.2 Benefits and Value Proposition:


Enhanced Decision-Making: UniPlacer Insight facilitates informed decision-
making processes by giving stakeholders access to timely and useful insights,
boosting the effectiveness and efficiency of placement management tactics.
Strategic Partnerships: Institutions can establish mutually beneficial ties and
improve collaboration with recruiters and industry stakeholders by utilizing the
information obtained from UniPlacer Insight to form strategic collaborations.

1
Optimized Resource Allocation: By having a thorough grasp of student
preferences and placement trends, educational institutions may allocate resources
optimally, focusing their efforts on areas that have the greatest chance of success.
Improved Student Outcomes: UniPlacer Insight gives institutions the tools they
need to improve student results and create an environment that values success by
providing tailored interventions and focused support.

1.3 In Conclusion:
In the field of placement management, UniPlacer Insight is a paradigm
shift that offers a revolutionary method of data analysis and decision-
making. The platform is a driving force behind institutional success
because of its extensive feature set, user-friendly design, and practical
insights. It also gives stakeholders the ability to negotiate the complex
placement landscape confidently and clearly. With UniPlacer Insight, you
can unleash the potential of data-driven decision-making and set off on a
path to placement management success never before seen.

2
[Link] Requirement Analysis

2.1 Required Hardware


o Pentium IV Processor.
o 4GB RAM.
o 20 GB Hard Disk space.
o Ethernet card with an Internet and Internet zone.

2.2 Required Software


o Windows 8 operating system.
o MySQL Database.
o TCP/IP Protocol suite.
2.2.1 Front-End
o QT Designer
o VS code
2.2.2 Back-End
o My SQL
o PySide6

2.3 About the System and its Features


In the field of placement management, UniPlacer Insight is a paradigm
shift that offers a revolutionary method of data analysis and decision-
making. The platform is a driving force behind institutional success
because of its extensive feature set, user-friendly design, and practical
insights.
Customizable Reports: With the comprehensive range of configurable reporting
capabilities provided by UniPlacer Insight, users can customize reports to meet
their unique needs. The platform offers versatility and agility in producing

3
meaningful analytics, whether assessing recruiter engagement, monitoring
student performance, or reviewing placement trends.
Trend Analysis: Stakeholders can anticipate future trends, spot patterns, and
modify placement plans with UniPlacer Insight's extensive trend analysis
functionalities. Users can explore the data landscape in detail and find
possibilities and issues that are concealed thanks to interactive visualizations and
user-friendly dashboards.
User-Friendly Interface: Understanding the value of a positive user experience,
UniPlacer Insight has an easy-to-use interface that makes navigating around
easier and improves usability.
Enhanced Decision-Making: UniPlacer Insight facilitates informed decision-
making processes by giving stakeholders access to timely and useful insights,
boosting the effectiveness and efficiency of placement management tactics.
Strategic Partnerships: Institutions can establish mutually beneficial ties and
improve collaboration with recruiters and industry stakeholders by utilizing the
information obtained from UniPlacer Insight to form strategic collaborations.
Improved Student Outcomes: UniPlacer Insight gives institutions the tools they
need to improve student results and create an environment that values success by
providing tailored interventions and focused support.

4
3. System Analysis

3.1 EXISTING MODEL

The organization's placement data is stuck in an antiquated system that uses


Excel sheets, which makes human adjustments prone to errors and inefficiencies
in the process. Not only does this antiquated approach waste time and money, but
it also leaves the data open to errors, jeopardizing the accuracy of important
placement data. The absence of automation makes it more difficult to be flexible
and raises the risk of missing significant changes, which could cause problems
when organizing and using placement data.
To prevent the mistakes and labour-intensiveness associated with this antiquated
technique, a more contemporary and efficient method is required.
The placement cell's data analysts use a crude system whereby they physically
update a physical board with the names of those who have been put successfully.
Although this conventional method makes accomplishments obvious, it has
drawbacks regarding data security, accessibility, and real-time updates.
Depending solely on a physical board could slow down the process of informing
pertinent parties and possibly make the placement process less effective.
Investigating integrated systems or digital alternatives may improve placement
data accessibility and transparency for more efficient analysis and decision-
making.

3.2 Issues with the current model


 The organization's placement data is stuck in an antiquated system that
uses Excel sheets, which makes human adjustments prone to errors and
inefficiencies in the process
 The absence of automation makes it more difficult to be flexible and raises
the risk of missing significant changes, which could cause problems when
organizing and using placement data.
 This conventional method makes accomplishments obvious; it has
drawbacks regarding data security, accessibility, and real-time updates.

3.3 Proposed Model


5
UniPlacer Insight provides customisable reports and trend analysis to support
well-informed decision-making. This application will work on the dataset given
by the placement cell. It will normalize the given data and help automate the
labour-intensive process of extracting and analysing. This application will use
graphical representation to help in decision making and comprehending complex
data. This feature-rich platform enables data-driven decision-making, facilitating
a deeper understanding of placement trends, performance metrics, and key
indicators. By providing a user-friendly interface for tailoring reports to specific
needs, UniPlacer Insight enhances the agility and efficiency of decision-makers,
ensuring they have the necessary information at their fingertips.

In a landscape where informed choices are paramount, this tool serves as a


strategic asset for optimizing placement strategies and outcomes.

In conclusion, UniPlacer Insight emerges as a transformative solution, poised to


revolutionize how universities track and utilize placement data.

3.4 Feasibility Report


After identifying the scope of the project, the feasibility study is needed to be
carried out. It is basically keeping the following points in mind. Building the
software for meeting the scope: This software has met the scope. The processing
of this software is very simple as it has been designed in python and it has been
well divided into several functions according to the need.
3.4.1 Technically feasible:
This software is very much technically feasible. This software is very much
concerned with specifying equipment and the software will successfully satisfy
almost all the admin’s requirements. The technical need for this system may vary
considerably but might include:
a. The facility to produce output in a given time.
b. Response time under certain conditions.
c. Ability to process data at a particular speed.
Therefore, the basic input/output of data is identified. So, the project can easily
be build up and it will also be technically feasible.
3.4.2 State of Art:
The project is very much within the state of art since the project is a
WINDOWS/MACOS/LINUX based; it uses very modern and common

6
technique. Beside it is very much modern and user friendly. It also works as
middleware i.e. only in between the user and the file. So, it is completely a state
of art project.

3.4.3 Financially Feasible:


The project is very much financially feasible. The implementation and
development cost of this software under the reach of any college. It also reduces
the labour and extra cost to be paid for labour. So indeed, it is financially
feasible.
3.4.4 Resources:
As motioned earlier that the resources are easily available. Sometimes situations
may arise when it may not be so much easy. For a person completely unaware of
using a computer system could result in a training cost or for a very small
organization the purchase of a computer, instalment of the system and other
charges may lead to a difficult matter.

7
4. System Design

4.1 Sequence Diagram


In this sequence, the user initiates an action through the UI, which sends a
request to the UniPlacer Insight view controller. The view controller interacts
with the database to fetch data, processes it, and sends a response back to the UI.
Finally, the UI displays the results to the user.

Fig 4.1

8
4.2 Work-Flow Diagram

Here is a step-by-step explanation of the workflow:

1. Module Selection: The user starts by selecting a module from the


available options.
2. Filter Application: After selecting a module, the user applies various
filters to refine the data they wish to view or manipulate.
3. Data Filtering: Based on the selected module and applied filters, the
controller updates and filters the data accordingly.
4. View Modal Interaction: The controller interacts with the view modal,
which is likely a component that displays data or options to the user.
5. Data Manager Update: Finally, the data manager updates the data as per
the filters applied, completing the interaction cycle.

Fig. 4.2

9
4.3 Class Diagram
The class diagram provided represents a software system using the Model-View-
Controller (MVC) architecture, specifically for visualizing student placement
statistics. Here is a brief explanation:

 View: Manages the user interface and user inputs.


 Controller: Processes user actions and responds to user inputs.
 ViewModel: Works alongside the Controller to manage the presentation
logic and handle the data that the View uses.
 DataManager: Organizes and manages the underlying data related to
student placements.

This MVC structure helps in separating concerns within the application, making
it easier to manage and maintain.

Fig 4.3

10
4.4 ER-Diagram
The ER diagram provided shows a user interaction flow with three distinct
modules. Here is a concise explanation:

 User Interaction: A user interacts with three separate modules within the
system.
 Module 1/2/3: This module is responsible for filtering data specifically
related to “Placement.”
 Data Representation: The filtered data leads to two outcomes: a
comparison among all modules and a graphical representation of the data..

Fig 4.4

11
4.5 Use-Case Diagram
In this simplified Use Case Diagram:

 The User can choose between two modules:


o View Student Placement Data
o View Company Hiring Data

The User can filter data within each module based on course, gender, batch, and
department. These filters allow for more specific and customized views of
placement and hiring data.

Fig 4.5

12
4.6 Data-Flow Diagram
In this DFD:

 The User (depicted in orange) logs in and chooses a module (either “View
Student Placement Data” or “View Company Hiring Data”).
 The chosen module retrieves data from the respective data storage
(Students Data or Company Data).
 The user can apply filters to further refine the data displayed.

Fig 4.6

13
4.7 System Architecture

4.7.1 MVC (Model-View-Controller):

 Model: Manages the data and business logic of the application.


 View: Handles the display and presentation of data to the user.
 Controller: Acts as an intermediary between the Model and the View,
processing user input and responding accordingly.

Fig 4.7.1

14
4.7.2 MVVM (Model-View-ViewModel):

 Model: Similar to MVC, it manages the data and business logic.


 View: Displays the data and sends user commands to the ViewModel.
 ViewModel: Serves as an intermediary that handles the presentation logic
and state, reacting to user inputs and updating the View.

Fig 4.7.2

15
5. Code Templates

5.1 [Link]

Code function: These set of codes contains the SQL queries and data retrieving
functionalities.

Code:

class DataManager():

def__init__(self,app=None,appstorage=None,loadinganimationdialog=None):

[Link] = app
[Link] = appstorage

username,password,host,dbname =
[Link]()

self._dbUsername = username
self._dbPassword = password
self._dbName = dbname
self._dbHost = host

self._coeFilePath = ""
self._placementFilePath = ""
self._companyFilePath = ""

16
[Link] = ""
[Link] = loadinganimationdialog

[Link] = QThreadPool()

def setDbConfig(self,username,password,name,host):
self._dbUsername = username
self._dbPassword = password
self._dbName = name
self._dbHost = host

def setFolderPath(self,path):
[Link] = path
[Link]()

barChartYaxisRange =
max(max(categoriesNotEnrolled),max(categoriesEnrolled))+20
return
(categoriesEnrolled,categoriesNotEnrolled,categories,barChartYaxisRange)
except Exception as e:
pass

def getCompanyStatBarChartData(self,batchFilter):

lpaRangesDict = {"2LPA-5LPA":0,"5LPA-10LPA":0,"10LPA-
15LPA":0,"15LPA-20LPA":0,"20LPA-25LPA":0,"25LPA-30LPA":0,"30LPA-
35LPA":0,"35LPA-40LPA":0}

17
try:
connection =
connect(host=self._dbHost,user=self._dbUsername,password=self._dbPassword,
database=self._dbName)
cursor = [Link]()

for lpaRange in lpaRangesDict:

minimum_ctc,maximum_ctc = [Link]("-")

minimum_ctc = int(minimum_ctc.split("L")[0]) *
100000
maximum_ctc = int(maximum_ctc.split("L")[0]) *
100000

[Link]("select count(distinct
Company_Name) from profiles_{} where Number_of_Select_Students > 0 and
CTC_Minimum >= {} and (case when CTC_Maximum is null then
CTC_Maximum is null else CTC_Maximum <={}
end)".format(batchFilter,minimum_ctc,maximum_ctc))
count = [Link]()[0][0]

lpaRangesDict[lpaRange] = count

lpaRangesDict = {key:value for key,value in


[Link]() if value != 0}
lpaRangesDict =
dict(sorted([Link](),key=lambda x:x[1],reverse=True))

lpaRanges = list([Link]())[0:3]
companiesInRanges = list([Link]())[0:3]
18
return(lpaRanges,companiesInRanges)

except Exception as e:
print(e,"datamanager")

def
getStudentPlacementStatAggregates(self,campusFilter=None,batchFilter=None,d
epartmentFilter=None,courseFilter=None,genderFilter=None):
totalStudents = 0
totalEnrolled = 0
totalNotEnrolled = 0
totalPlaced = 0
totalNotPlaced = 0
totalDisqualified = 0
try:
connection =
connect(host=self._dbHost,user=self._dbUsername,password=self._dbPassword,
database=self._dbName)
cursor = [Link]()

totalQuery = "select count(*) from students_{} where


Office_Name like '{}' and Branch like '{}' and Course_Name like '{}' and
Gender like '{}';".format(batchFilter,"%" if campusFilter==None else
campusFilter,"%" if departmentFilter==None else departmentFilter,"%" if
courseFilter==None else courseFilter,"%" if genderFilter==None else
genderFilter)
totalEnrolledQuery = "select count(*) from students_{}
where Enrolled_in_SS='Enrolled' and Office_Name like '{}' and Branch like '{}'
and Course_Name like '{}' and Gender like '{}';".format(batchFilter,"%" if
campusFilter==None else campusFilter,"%" if departmentFilter==None else

19
departmentFilter,"%" if courseFilter==None else courseFilter,"%" if
genderFilter==None else genderFilter)
totalNotEnrolledQuery = "select count(*) from students_{}
where (Enrolled_in_SS like 'Not Enrolled' or Enrolled_in_SS is null) and
Office_Name like '{}' and Branch like '{}' and Course_Name like '{}' and
Gender like '{}';".format(batchFilter,"%" if campusFilter==None else
campusFilter,"%" if departmentFilter==None else departmentFilter,"%" if
courseFilter==None else courseFilter,"%" if genderFilter==None else
genderFilter)
totalPlacedQuery = "select count(*) from students_{} where
Placed is not null and Office_Name like '{}' and Branch like '{}' and
Course_Name like '{}' and Gender like '{}';".format(batchFilter,"%" if
campusFilter==None else campusFilter,"%" if departmentFilter==None else
departmentFilter,"%" if courseFilter==None else courseFilter,"%" if
genderFilter==None else genderFilter)
totalNotPlacedQuery = "select count(*) from students_{}
where Placed is null and Enrolled_in_SS='Enrolled' and Office_Name like '{}'
and Branch like '{}' and Course_Name like '{}' and Gender like
'{}';".format(batchFilter,"%" if campusFilter==None else campusFilter,"%" if
departmentFilter==None else departmentFilter,"%" if courseFilter==None else
courseFilter,"%" if genderFilter==None else genderFilter)
totalDisqualifiedQuery = "select count(*) from students_{}
where Enrolled_in_SS like 'Not Blocked' or Enrolled_in_SS like 'Removed' and
Office_Name like '{}' and Branch like '{}' and Course_Name like '{}' and
Gender like '{}';".format(batchFilter,"%" if campusFilter==None else
campusFilter,"%" if departmentFilter==None else departmentFilter,"%" if
courseFilter==None else courseFilter,"%" if genderFilter==None else
genderFilter)

[Link](totalQuery)
totalStudents = [Link]()[0][0]
[Link]()

[Link](totalEnrolledQuery)
totalEnrolled = [Link]()[0][0]
[Link]()

20
[Link](totalNotEnrolledQuery)
totalNotEnrolled = [Link]()[0][0]
[Link]()

[Link](totalPlacedQuery)
totalPlaced = [Link]()[0][0]
[Link]()

[Link](totalNotPlacedQuery)
totalNotPlaced = [Link]()[0][0]
[Link]()

[Link](totalDisqualifiedQuery)
totalDisqualified = [Link]()[0][0]
[Link]()

return
(totalStudents,totalEnrolled,totalNotEnrolled,totalPlaced,totalNotPlaced,totalDis
qualified)

except Error as e:
if "uniplacer_insight.students_2024" in str([Link]):
# print("table does not exist")
pass
print(e)

21
def
getCompanyAggregates(self,jobTypeFilter,jobSectorFilter,ctcFilter,companyLev
elFilter, batchFilter):
#getting company aggregates for second module according to the
filters
totalCompanies = 0
totalVisited = 0
totalNotVisited = 0
companiesHired = 0
companiesNotHired = 0

if jobSectorFilter != None:
jobSectorFilter = "_".join([Link](" "))

try:
minimum_ctc = ""
maximum_ctc = ""
minimum_ctc,maximum_ctc = [Link]("-")

minimum_ctc = int(minimum_ctc.split("L")[0]) * 100000


maximum_ctc = int(maximum_ctc.split("L")[0]) * 100000
except Exception as e:
minimum_ctc = 0
maximum_ctc = 99999999
pass
try:

connection =
connect(host=self._dbHost,user=self._dbUsername,password=self._dbPassword,
database=self._dbName)

22
cursor = [Link]()

totalVisitedQuery_0 = "select distinct Company_Name from


profiles_{} where (Date_of_Visit is not null or Number_of_Select_Students > 0)
and Position_Type like '{}' and Job_sector like '{}' and Placement_category like
'{}' and CTC_Minimum >= {} and (case when CTC_Maximum is null then
CTC_Maximum is null else CTC_Maximum <={} end)".format(batchFilter,"%"
if jobTypeFilter==None else jobTypeFilter, "%" if jobSectorFilter==None else
jobSectorFilter, "%" if companyLevelFilter==None else companyLevelFilter,
"%" if minimum_ctc==None else minimum_ctc, "%" if maximum_ctc==None
else maximum_ctc)
totalNotVisitedQuery_0 = "select distinct Company_Name
from profiles_{} where Date_of_Visit is null and Position_Type like '{}' and
Job_sector like '{}' and Placement_category like '{}' and CTC_Minimum >= {}
and (case when CTC_Maximum is null then CTC_Maximum is null else
CTC_Maximum <={} end)".format(batchFilter,"%" if jobTypeFilter==None else
jobTypeFilter, "%" if jobSectorFilter==None else jobSectorFilter, "%" if
companyLevelFilter==None else companyLevelFilter, "%" if
minimum_ctc==None else minimum_ctc, "%" if maximum_ctc==None else
maximum_ctc)

#this basically means these companies are visiting but not


visiting in another sector. We will basically take it as it visiting so minus this
count from not visited
intersectionBetweenVisitedNotVisitedQuery = "select
count(*) from (({}) intersect ({}))
I".format(totalVisitedQuery_0,totalNotVisitedQuery_0)
[Link](intersectionBetweenVisitedNotVisitedQuery)
intersectionBetweenVisitedNotVisited = [Link]()[0]
[0]
[Link]()

companiesHiredQuery_0 = "select distinct


(Company_Name) from profiles_{} where (Number_of_Select_Students > 0)
and Position_Type like '{}' and Job_sector like '{}' and Placement_category like
'{}' and CTC_Minimum >= {} and (case when CTC_Maximum is null then
CTC_Maximum is null else CTC_Maximum <={} end)".format(batchFilter,"%"
23
if jobTypeFilter==None else jobTypeFilter, "%" if jobSectorFilter==None else
jobSectorFilter, "%" if companyLevelFilter==None else companyLevelFilter,
"%" if minimum_ctc==None else minimum_ctc, "%" if maximum_ctc==None
else maximum_ctc)
companiesNotHiredQuery_0 = "select distinct
(Company_Name) from profiles_{} where Date_of_Visit is not null and
Number_of_Select_Students = 0 and Position_Type like '{}' and Job_sector like
'{}' and Placement_category like '{}' and CTC_Minimum >= {} and (case when
CTC_Maximum is null then CTC_Maximum is null else CTC_Maximum <={}
end)".format(batchFilter,"%" if jobTypeFilter==None else jobTypeFilter, "%" if
jobSectorFilter==None else jobSectorFilter, "%" if companyLevelFilter==None
else companyLevelFilter, "%" if minimum_ctc==None else minimum_ctc, "%" if
maximum_ctc==None else maximum_ctc)

#same as above
intersectionBetweenHiredNotHiredQuery = "select count(*)
from (({}) intersect ({}))
I".format(companiesHiredQuery_0,companiesNotHiredQuery_0)
[Link](intersectionBetweenHiredNotHiredQuery)
intersectionBetweenHiredNotHired = [Link]()[0][0]
[Link]()
totalNotVisitedQuery = "select count(distinct Company_Name) from
profiles_{} where Date_of_Visit is null and Position_Type like '{}' and
Job_sector like '{}' and Placement_category like '{}' and CTC_Minimum >= {}
and (case when CTC_Maximum is null then CTC_Maximum is null else
CTC_Maximum <={} end);".format(batchFilter,"%" if jobTypeFilter==None
else jobTypeFilter, "%" if jobSectorFilter==None else jobSectorFilter, "%" if
companyLevelFilter==None else companyLevelFilter, "%" if
minimum_ctc==None else minimum_ctc, "%" if maximum_ctc==None else
maximum_ctc)
companiesHiredQuery = "select count(distinct
Company_Name) from profiles_{} where Number_of_Select_Students > 0 and
Position_Type like '{}' and Job_sector like '{}' and Placement_category like '{}'
and CTC_Minimum >= {} and (case when CTC_Maximum is null then
CTC_Maximum is null else CTC_Maximum <={} end);".format(batchFilter,"%"
if jobTypeFilter==None else jobTypeFilter, "%" if jobSectorFilter==None else
jobSectorFilter, "%" if companyLevelFilter==None else companyLevelFilter,

24
"%" if minimum_ctc==None else minimum_ctc, "%" if maximum_ctc==None
else maximum_ctc)
[Link](totalCompaniesQuery)
totalCompanies = [Link]()[0][0]
[Link]()

[Link](totalVisitedQuery)
totalVisited = [Link]()[0][0]
[Link]()

[Link](totalNotVisitedQuery)
totalNotVisited = [Link]()[0][0]
[Link]()

[Link](companiesHiredQuery)
companiesHired = [Link]()[0][0]
[Link]()

[Link](companiesNotHiredQuery)
companiesNotHired = [Link]()[0][0]
[Link]()

return (totalCompanies, totalVisited, totalNotVisited-


intersectionBetweenVisitedNotVisited, companiesHired, companiesNotHired-
intersectionBetweenHiredNotHired)

except Error as e:
print(e)
try:

25
connection =
connect(host=self._dbHost,user=self._dbUsername,password=self._dbPassword,
database=self._dbName)
cursor = [Link]()

[Link]("select * from (({}) intersect ({}))


I".format(totalVisitedQuery_0,totalNotVisitedQuery_0))
intersectCompanies0 = [Link]()
[Link]()

[Link]("select * from (({}) intersect ({}))


I".format(companiesHiredQuery_0,companiesNotHiredQuery_0))
intersectHired0 = [Link]()
[Link]()

intersectCompanies = []
intersectHired = []

for comp in intersectCompanies0:


[Link]("'"+comp[0]+"'")

for cmpny in intersectHired0:


[Link]("'"+cmpny[0]+"'")

intersectCompanies = "Company_Name not in ("+


(",".join(intersectCompanies))+")"
intersectHired = "Company_Name not in ("+
(",".join(intersectHired))+")"

26
if intersectHired == "Company_Name not in ()":
intersectHired="Company_Name like '%'"
if intersectCompanies == "Company_Name not in ()":
intersectCompanies = "Company_Name like '%'"
notVisitedCompanies0 = [Link]()
[Link]()
notHiredCompanies0 = [Link]()
[Link]()

notVisitedCompanies = []
notHiredCompanies = []

for c in notVisitedCompanies0:
[Link](c[0])

for cm in notHiredCompanies0:
[Link](cm[0])

if len(notVisitedCompanies)>len(notHiredCompanies):
toAdd = len(notVisitedCompanies)-
len(notHiredCompanies)
for _ in range(0,toAdd):
[Link]("-----")
else:
toAdd = len(notHiredCompanies) -
len(notVisitedCompanies)
for _ in range(0,toAdd):
[Link]("-----")

27
data = {'Not Visited': notVisitedCompanies,
'Not Hired': notHiredCompanies}

df = [Link](data)

return df

except Exception as e:
print(e,"datamanager")

def getHiredTableData(self,
jobTypeFilter,jobSectorFilter,ctcFilter,companyLevelFilter, batchFilter):

if jobSectorFilter != None:
jobSectorFilter = "_".join([Link](" "))

try:
minimum_ctc = ""
maximum_ctc = ""
minimum_ctc,maximum_ctc = [Link]("-")

minimum_ctc = int(minimum_ctc.split("L")[0]) * 100000


maximum_ctc = int(maximum_ctc.split("L")[0]) * 100000
except Exception as e:
minimum_ctc = 0
maximum_ctc = 99999999
pass
try:

28
connection =
connect(host=self._dbHost,user=self._dbUsername,password=self._dbPassword,
database=self._dbName)
cursor = [Link]()

[Link](hiredTableData)
finalHiredTableData = [Link]()
[Link]()

hiredCompanies = []
hiredCompanySector = []
hiredStudentsNumber = []

for cmp in finalHiredTableData:

[Link](cmp[0])
[Link](cmp[1])
[Link](int(cmp[2]))

hiredData = { 'Companies Hired' : hiredCompanies,


'Job Sector':hiredCompanySector,
'No. of Students Hired':hiredStudentsNumber

df1 = [Link](hiredData)

29
return df1
except Exception as e:
print(e,"datamanager")

def checkDb(self):

if(self._dbHost == None or self._dbName == None or


self._dbPassword == None or self._dbUsername == None):
return 3

try:
connection =
connect(host=self._dbHost,user=self._dbUsername,password=self._dbPassword,
database=self._dbName)
cursor = [Link]()
[Link]("select * from students_2024")

return 0
except Exception as e:
print(e)
if "No localization support for" in str(e):
return 5
elif "not allowed to connect" in str(e):
return 4
elif "Can't connect to MySQL server on" in str(e):
return 3
elif "refused" in str(e):
return 2
elif "uniplacer_insight.students" in str([Link]):

30
5.2 companyPlacementStatView
Code function: These set of code will accept the filter choices of the user and
retrieve the necessary data and show it in the Ui for company placement statistics
module.
Code:
class CompanyPlacementStatPageViewModel():

def __init__(self,datamanager):

[Link] = datamanager

[Link] = 0
[Link] = 0
[Link] = 0
[Link] = 0
[Link] = 0

[Link] = []
[Link] = []

[Link] = []
[Link] = []

[Link] = None

[Link] = None

def getTableData(self):

31
return [Link]

def
setTableData(self,jobTypeFilter,jobSectorFilter,ctcFilter,companyLevelFilter,batc
hFilter):
try:

tableData =
[Link](jobTypeFilter,jobSectorFilter,ctcFilter,companyL
evelFilter,batchFilter)
[Link] = TableModel(tableData)

except Exception as e:
print(e)
if "cannot unpack non-iterable NoneType" in str(e):
[Link] = None

def getHiredTableData(self):

return [Link]

def
setHiredTableData(self,jobTypeFilter,jobSectorFilter,ctcFilter,companyLevelFilte
r,batchFilter):
try:

hiredTableData =
[Link](jobTypeFilter,jobSectorFilter,ctcFilter,comp
anyLevelFilter,batchFilter)
[Link] = TableModel(hiredTableData)

32
except Exception as e:
print(e)
if "cannot unpack non-iterable NoneType" in str(e):
[Link] = None

def getCompanyAggregates(self):
return
([Link],[Link],[Link],[Link],se
[Link])

def
setCompanyAggregates(self,jobTypeFilter,jobSectorFilter,ctcFilter,companyLeve
lFilter, batchFilter):
try:

(totalCompanies,totalVisited,totalNotVisited,companiesHired,companiesNotHire
d) =
[Link](jobTypeFilter,jobSectorFilter,ctcFilter,
companyLevelFilter, batchFilter)

[Link] = totalCompanies
[Link] = totalVisited
[Link] = totalNotVisited
[Link] = companiesHired
[Link] = companiesNotHired

except Exception as e:
if "cannot unpack non-iterable NoneType" in str(e):

33
[Link] = 0
[Link] = 0
[Link] = 0
[Link] = 0
[Link] = 0

def getBarChartData(self):
return ([Link],[Link])

def setBarChartData(self,batchFilter):
try:
(lpaRanges,companiesInRange) =
[Link](batchFilter)

[Link] = lpaRanges
[Link] = companiesInRange
except Exception as e:
if "cannot unpack non-iterable NoneType" in str(e):
[Link] = []
[Link] = []

def getLineChartData(self):
return ([Link],[Link])

def setLineChartData(self,batchFilter):
try:
(months,companiesArriving) =
[Link](batchFilter)

34
[Link] = months
[Link] = companiesArriving

except Exception as e:
if "cannot unpack non-iterable NoneType" in str(e):
[Link] = []
[Link] = []

5.3 studentPlacementStatPageView
Code function: These set of code will accept the filter choices of the user and
retrieve the necessary data and show it in the Ui for student placement statistics
module.
Code:
class StudentPlacementStatPageViewModel():

def __init__(self,datamanager):
[Link] = datamanager

[Link] = 0
[Link] = 0
[Link] = 0
[Link] = 0
[Link] = 0
[Link] = 0

[Link] = []
[Link] = []

35
[Link] = []

[Link] = 0

def getStudentAggregates(self):
#getting aggregate code
return
([Link],[Link],[Link],[Link]
talPlacedStudents,[Link],[Link])

def
setStudentAggregates(self,campusFilter,batchFilter,departmentFilter,courseFilter,
genderFilter):
#setting aggregate code
try:

(totalStudents,totalEnrolled,totalNotEnrolled,totalPlaced,totalNotPlaced,totalDis
qualified) =
[Link](campusFilter,batchFilter,d
epartmentFilter,courseFilter,genderFilter)
[Link] = totalStudents
[Link] = totalEnrolled
[Link] = totalNotEnrolled
[Link] = totalPlaced
[Link] = totalNotPlaced
[Link] = totalDisqualified
except Exception as e:
if "cannot unpack non-iterable NoneType" in str(e):
[Link] = 0

36
[Link] = 0
[Link] = 0
[Link] = 0
[Link] = 0
[Link] = 0

[Link] = []
[Link] = []

[Link] = []

[Link] = 0
print(e,"StudentPlacementStatPageViewModel")

def getBarChartValues(self):
return
([Link],[Link],[Link],[Link])

def setBarChartValues(self,campusFilter,batchFilter):
placedList = []
notPlacedList = []
categories = []
barChartYaxisRange = 0
try:
placedList,notPlacedList,categories,barChartYaxisRange =
[Link](campusFilter,batchFilter
)

37
except Exception as e:
# print(e.__class__.__name__)
pass

[Link] = placedList
[Link] = notPlacedList
[Link] = categories
[Link] = barChartYaxisRange

5.4 Controller Code


Code Function:
Code:

class CompanyPlacementStatPageController():

def __init__(self,app,viewmodel):
[Link] = app
[Link] = viewmodel

def updateBarAndLineChartValues(self,batchFilter):
[Link](batchFilter)
[Link](batchFilter)

def
changeFilter(self,jobTypeFilter,jobSectorFilter,ctcFilter,companyLevelFilter,
batchFilter):

[Link](jobTypeFilter,jobSectorFilter,ctcFilter,co
mpanyLevelFilter,batchFilter)

38
[Link](jobTypeFilter,jobSectorFilter,ctcFilter,companyLev
elFilter,batchFilter)

[Link](jobTypeFilter,jobSectorFilter,ctcFilter,compa
nyLevelFilter,batchFilter)

def returnToLanding(self):
[Link](-1)

class LandingPageController():

_currentCardIndex = 0

def __init__(self,app,datamanager):
[Link] = app
[Link] = datamanager

def showModuleWindow(self,event):
#contains code to show the module that has been clicked
#this function can't change show or hide views by itself and has to
call an application function to do so
# [Link]([Link])
[Link](self._currentCardIndex)

def setCurrentCardIndex(self, index):


if index < 0 or index > 2:
pass
else:

39
self._currentCardIndex = index

def setDirPath(self,path):
[Link](path)

def getCurrentCardIndex(self):
return self._currentCardIndex

def updateDbAuth(self,username,password,name,host):
[Link](username,password,name,host)

def checkDb(self):
return [Link]()

def showErrorModal(self,code):
[Link](code)

def closeApp(self):
[Link]()

class StudentPlacementStatPageController():

40
def __init__(self,app,viewmodel):
[Link] = app
[Link] = viewmodel

def
changeFilter(self,campusFilter,batchFilter,departmentFilter,courseFilter,genderFil
ter):

[Link](campusFilter,batchFilter,departmentFilter,
courseFilter,genderFilter)

def updateBarChartValues(self,campusFilter,batchFilter):
[Link](campusFilter,batchFilter)

def returnToLanding(self):
[Link](-1)

5.5 Database Design


In relation to MySQL, a database is a structured collection of data organized and
stored in tables. It serves as a central repository where information is efficiently
managed, allowing users to store, retrieve, update, and delete data. MySQL
provides the software framework to create, maintain, and interact with these
databases, making data storage and retrieval seamless and reliable
We have created a comprehensive table to manage student placement data. The
table includes fields for company names, position types, offered packages, and
other relevant details.
To create such a database, we used SQL commands to define the table structure,
data types, and any constraints or indexes needed for efficient data retrieval and
integrity.
For instance, we used the CREATE TABLE statement to establish the table,
followed by ALTER TABLE statements to fine-tune the structure,
and INSERT statements to populate the table with initial data.
After creating the table with the CREATE TABLE statement and populating it
with INSERT statements, we proceeded by doing the following:

41
 Updating Records: Use UPDATE statements to modify existing entries
as new placement data becomes available or when corrections are needed.
 Querying Data: Implement SELECT queries to retrieve and display data,
possibly with JOIN clauses if your database has multiple related tables.
 Data Integrity: Enforce data integrity with PRIMARY KEY, FOREIGN
KEY, UNIQUE, NOT NULL, and CHECK constraints to ensure the
database holds accurate and valid data.
 Indexing: Create indexes using CREATE INDEX to improve the
performance of the database, especially for complex queries involving
sorting and searching operations.

These steps are part of routine database management and are crucial for
maintaining a robust and efficient system for tracking student placements.

Table name: Profiles_Year

42
Table name: Student_Year

Table name: Users

43
[Link] Screens

6.1 Landing Page


The landing page for “UNI-PLACER Insight” is designed with a focus on
providing insightful student placement statistics. It features a modern and user-
friendly interface, highlighting the project’s purpose through a clear and visually
engaging presentation of data. The use of visual elements aids in conveying
information effectively, making it a valuable resource for those interested in
university placements.

6.2 Student Placement Statistics


The student placement statistics module, as showcased in the image, seems to be
a robust feature of your project designed to track and analyze student placements.
It provides a detailed breakdown of student enrollment and placement outcomes,
categorizing students into ‘enrolled’ and ‘not enrolled’, as well as ‘placed’ and
‘not placed’. The inclusion of a pie chart and bar graphs offers a visual
representation of the data, making it easier to understand at a glance. This
module is a valuable tool for administrative planning and decision-making,
offering insights into departmental preferences and overall placement success.

44
6.3 Company Placement Statistics
The company placement statistics module, as shown in the image, is a dynamic
and informative dashboard that tracks and visualizes the university’s placement
activities. It features a line graph illustrating the trend of company visits over
time, bar graphs detailing the number of hires across various sectors, and a
summary section that provides a quick overview of total companies involved in
the placement process. The pie chart offers an intuitive breakdown of the
companies visited and hired, enhancing the module’s utility for strategic planning
and performance evaluation. This module is a valuable asset for assessing the
effectiveness of the university’s placement initiatives.

45
6.4 List of Companies Table (Company Placement Statistics)
The table is referring to lists companies under two categories: “Not Visited” and
“Not Hired.” For the “Not Visited” category, it includes companies that have not
engaged with the university for placement activities. This could be for various
reasons such as lack of awareness, mismatch in recruitment needs, or other
priorities. The “Not Hired” category lists companies that may have visited but
did not end up hiring any students. This information is crucial for the university’s
placement cell to analyze and strategize future engagement with the corporate
sector to improve placement opportunities for students.

46
6.5 Database Credentials Modal (Landing Page)
The “DB-CREDENTIALS” modal shown in the image is a user interface
element designed for users to enter their database connection details. It typically
includes fields for:

 User: The username associated with the database.


 Password: The password for authentication.
 Hostname: The server address where the database is hosted.
 Name: The specific name of the database to connect to.

Once the credentials are entered, the user would click the “SUBMIT” button to
establish a connection to the database. This modal is essential for applications
that require database access and ensures that sensitive information like passwords
is entered securely.

47
6.6 Login Modal (On Click)
The user will use this to log into any module.
Every time the user exits he has to re-login for security reasons.

48
6.7 File Manager (Landing Page)
The file manager is the modal where the user can upload the required files.

49
[Link]

Test case 1- To check If the application is working on LINUX


Test done in student’s laptop and University Devices
7.1.1 Opening Landing Page, File Uploading and Database connection
Result:
Landing page loaded successfully.
Required file Uploaded successfully.
Database connection established successfully.
7.1.2 Opening Student Placement Statistics, Applying filters, Cross-checking
number, and graphs
Result:
Student Placement module opened successfully.
All the filters are working and displaying correct data.
The info-cards and the graphs are showing the correct data.
7.1.3 2 Opening Company Placement Statistics, Applying filters, Cross-checking
number, and graphs
Results:
Company Placement Statistics opened successfully.
All the filters are working and displaying correct data.
The info-cards and the graphs are showing the correct data.

Test case 2- To check If the application is working on WINDOWS


50
Test done in student’s laptop and University Devices
7.2.1 Opening Landing Page, File Uploading and Database connection
Result:
Landing page loaded successfully.
Required file Uploaded successfully.
Database connection established successfully.
7.2.2 Opening Student Placement Statistics, Applying filters, Cross-checking
number, and graphs
Result:
Student Placement module opened successfully.
All the filters are working and displaying correct data.
The info-cards and the graphs are showing the correct data.
7.2.3 Opening Company Placement Statistics, Applying filters, Cross-checking
number, and graphs
Results:
Company Placement Statistics opened successfully.
All the filters are working and displaying correct data.
The info-cards and the graphs are showing the correct data.

Test case 3 - To check If the queries are fetching the correct data
Result:
All the queries are fetching the correct data.

51
[Link]

In conclusion, UniPlacer Insight emerges as a transformative solution in the


domain of placement management, offering a comprehensive suite of features
designed to empower stakeholders with actionable insights and informed
decision-making capabilities. Through its customizable reports, trend analysis
functionalities, and real-time data insights, UniPlacer Insight equips educational
institutions, placement cells, and recruiters with the tools they need to navigate
the complexities of the placement landscape with confidence and clarity.

By harnessing the power of advanced analytics and intuitive user interfaces,


UniPlacer Insight facilitates seamless interaction and maximum productivity,
ensuring that users can derive meaningful insights from placement data with
ease. Moreover, the platform's focus on optimizing resource allocation,
enhancing student outcomes, and fostering strategic partnerships underscores its
commitment to driving tangible results and fostering success across all facets of
placement management.

As educational institutions continue to evolve and adapt to changing market


dynamics and student preferences, UniPlacer Insight stands poised to serve as a
trusted ally, guiding stakeholders towards innovative strategies and impactful
interventions. By unlocking the power of data-driven decision-making, UniPlacer
Insight paves the way for a future where placement management is not just a
process but a strategic imperative for driving institutional success and student
achievement.

In summary, UniPlacer Insight represents a paradigm shift in the way placement


data is analyzed and utilized, offering a transformative approach that promises to
redefine the future of placement management in educational institutions
worldwide.

[Link] Enhancement
52
Linking UniPlacer Insight with current LMS platforms will enable the collection
of extensive student performance data, enabling a more in-depth examination of
academic performance and skill development in addition to placement results.
Through integration, student progress might be seen holistically and academic
goals could be more closely aligned with placement techniques.

Predictive Analytics: Use UniPlacer Insight's predictive analytics algorithms


to estimate placement trends, project future demand for particular skill sets, and
spot new job opportunities. The platform can enable educational institutions to
proactively modify their placement tactics and curricula in response to changing
business demands by utilizing historical data and machine learning techniques.

Improved Data Visualization: Spend money on cutting-edge data


visualization strategies to make dashboards in UniPlacer Insight more engaging
and easy to use. Users can more effectively find actionable insights and analyze
placement data in greater detail by utilizing features like dynamic charts,
interactive maps, and customisable widgets.

Provide feedback methods in UniPlacer Insight to get opinions from placement


coordinators, recruiters, and students. By using this feedback, placement
procedures may be improved, placement recommendations can be made more
relevant, and platform user satisfaction can be raised overall.

[Link]
53
[Link] Forum

[Link]

[Link] Documnetation

54
[Link]

11.1 Installation Instruction

1. An installer file will be provided to the placement office.

[Link] user will download the exe file through that installer.

55

You might also like