This application takes care of IIT JEE admission process after the results of JEE is declared. This is done by a group of 20 people. My part is the backend coding of the admission process. The entire logic is given at the beginning of this report in a flow chart. This application was designed using java with mysql database using JDBC connector and Net Beans served as the primary IDE in this project.
15. Take care of the first round of seat allocation
Take care of the second round of seat allocation
Take care of registration fee payments
Providing information like counselling dates,slots etc.
Assigning roll numbers to the students who've secured seats in the institutes.
Admin
16. User
Login using the credentials provided.
Select choices.
Edit/Remove Choices.
Save choices.
Submit choices
Obtain information like counseling dates, slots etc..
Will be informed about the first counseling result.
Paying registration fee
Will be assigned a roll number.
Will be informed about the second counseling result.
17.
18. :student
LoginClicked(Reg:int,pass:string)
.connectToDataBase()
:DataBase
.checkPassword(RegNo:int,password:string)
correct or not
.displayCredintials()
:DisplayCredintials .getName(RegNo:int)
Name
.getCategory(RegNo:int)
category
opt
If category is not GE
:getCategoryAcceptance(RegNo:int,category:string)
opt
if category not accepted then category = GE
else category = respective category
.getRank(RegNo:int)
rank
opt
if category accepted
.getCategoryRank(RegNo:int)
Category Rank
.nextButtonClicked()
:Choices
.AlreadySubmitted(RegNo:int)
submitted or not
opt
if not submitted .displayPrefrences(RegNo:int)
displayChoices'
.getPrefrences(RegNo:int)
prefrences
.AddButtonClicked()
.saveButtonClicked()
.savePrefrences(RegNo:int,prefrences:string)
submitButtonClicked()
.savePrefrences(RegNo:int,prefrences:string)
.submitted(RegNo:int)
.RemoveButtonClicked()
.removeSelectedPreferences()
.displayAddedPreferences(preferences:string)
opt
if submitted .displayPrefrences(RegNo:int)
.PrintButtonClicked()
.printPreferences()
opt
if loginned
accepted or not
20. IIT JEE Seat Allocation System
And Admission Process
-Group 3
Team Leaders:
PYDI PEDDIGARI VENKAT SAI - 10010149
ABHISHEK JOSHI - 10010102
Members of the Team:
9010156 TEJINDER SINGH
10010169 VIMAL BHUSHAN CHOUDHARY
10010166 SUDHANSHU MITTAL
10010159 SAURAV KUMAR PATEL
10010102 ABHISHEK JOSHI
07010145 SUMAN KUMAR
10010163 SHIVANGI SRIVASTAVA
10010154 ROHIT SINGLA
10010161 SHEFALI R KALYANI
10010123 HEMANT KUMAR MEENA
10010109 AMERINENI ROHITH
10010173 RANTI DEV SHARMA
10010149 PYDI PEDDIGARI VENKAT SAI
10010146 PRATEEK RASTOGI
10010125 JUVVIGUNTA NARASIMHA TEJA
10010153 REVANTH BHATTARAM
10010135 MUDIT GUPTA
10010106 ADITYA SHARMA
10010120 GAURAV VERMA
10010167 SUNKU VINESH REDDY
10010152 RANUVA SAI TEJA
10010176 ANUJ GUPTA
21. Write UP
Users of the Software: Students who have been qualified and given a rank
Admin of the Software: The JEE authorities who maintain the database of all the
candidates information and also the information of the no of vacancies(seats) available in
each branch of every IIT
The main objectives of the software are as follows:
We represent these objectives in the form of Use Case diagrams for the User of the
software and the Admin
Description of Use Case Diagram for User:
The following are the features available to the user (in this case, the student):
Login Using Credentials Provided: The user will be provided a username and
password with which he can log in.
Select Choices: The user can fill his choice sheet by selecting the available courses.
Edit/Remove Choices: The user has the ability to change the preference order of
his selected choices. Additionally, he can remove a previously selected course.
Save Choices And Logout: The user can save the choice sheet at any point of time
and can resume editing later.
Submit Choices: The user can submit his final choice sheet after confirmation.
First Counseling Result: The user gets to find out the seat allotted after the first
counseling.
Paying Registration Fee: The user has to pay the registration fee after the first
allotment to confirm the seat allotted to him/her.
Second Counseling Result: The user gets to find out the seat allotted to him after
second counseling.
Assignment of Roll Number: After the entire seat allocation procedure, the user is
assigned a unique roll number by the institute where he received admission.
22. Description of Use Case Diagram for Admin:
The following are the features available to the Administrator:
Providing Login Credentials: The admin is supposed to provide login credentials to
each student.
Providing Information: The admin will have to provide information like counseling
dates, slots, and previous year statistics like opening and closing ranks of each
course, etc... to the students.
First Round of Seat Allotment: The admin will have to take care of the first round
of seat allocation. The results of the first round of seat allotment have to be made
available to all the candidates.
Registration Fee Payments: The admin will have to handle the process of
registration fee payment. A list of candidates who have paid the registration fees
should be prepared.
Remove Candidates: The candidates who haven’t paid the registration fees
thereby opting out of the counseling procedure will have to be removed from the
database.
Second Round of Seat Allotment: The admin will have to take care of the second
round of seat allocation. The results of the second round of seat allotment have to
be made available to all the candidates.
Assigning Roll Numbers: After the entire seat allocation procedure, the admin has
to assign a unique roll number to each student.
So now, as the functions that a user and an admin can perform are clear, we go with the
explanation of the Databases, detailing the Tables present in the Database and the fields
present in each table including details of the type of data of each field.
23. DATABASE DESIGN
1. The Database for the software will contain the following tables
CML list
OBC list
SC list
ST list
GE-PD list
OBC-PD list
SC-PD list
ST-PD list
Tables relating to the number of seats available in each branch of each IIT for
all categories.(There will be 17 such tables going by the current number)
2. In what follows are the description of the fields of the tables of which the fields
common to all the tables are listed below with their MS Access datatypes.
3. CML List
CML Rank Number{0}
4. OBC List
OBC Rank Number{0}
Category Acceptance Yes/No{No}
5. SC List
SC Rank Number{0}
Category Acceptance Yes/No{No}
6. ST List
ST Rank Number{0}
Category Acceptance Yes/No{No}
7. GE-PD List
GE-PD Rank Number{0}
Category Acceptance Yes/No{No}
8. OBC-PD List
Name Text{none}
JEE Roll No[will be used for login] Number{xxxxxxx}
Preferences Memo{xxxx}
Fees paid Yes/No{No}
Category Text{GE}
Branch Allotted Text{xxxx}
Choice Submitted Yes/No{No}
Marks obtained in each subject[3] Number{0}
Password[will be used for login] Text{none}
24. OBC-PD Rank Number
Category Acceptance Yes/No
9. SC-PD List
SC-PD Rank Number{0}
Category Acceptance Yes/No{No}
10. ST-PD List
ST-PD Rank Number{0}
Category Acceptance Yes/No{No}
11. Tables containing information related to the number of seats available in each branch of
each IIT for all categories
There will be a table for each IIT.
The fields of a table of one such IIT are shown below
I. Branch-Code Text{none}
II. GE seats Number{0}
III. GE-PD seats Number{0}
IV. OBC seats Number{0}
V. OBC-PD seats Number{0}
VI. SC seats Number{0}
VII. SC-PD seats Number{0}
VIII. ST seats Number{0}
IX. ST-PD seats Number{0}
X. DS Seats Number{2}
To cover more features we can cover/add fields listed below [if time permits]
I. GE opening rank Number{0}
II. GE closing rank Number{0}
III. Category rank(SC/ST/OBC etc) Number{0}
Where bold italics indicates that it is to be used as the primary key, and bold indicate that it can also be
used as the primary key. Also the values in the curly brackets indicate the default values of the respective
fields. The numbers in the square brackets indicate the number of columns in the table, for example
Marks in each subject[3] means one column for physics, math, chemistry respectively.
Some points to be noted in case of Databases are as follows:
1. The relevant student information is stored in the database, out of which only JEE Roll No and the
password are used to gain access to the page where he can enter the preferences.
2. The preferences entered by the candidate are enter into the database as soon as he presses the save
button and are stored in the following format:-
For example if preferences of the candidate are W010,B010,B011,D011 in the order mentioned, then it
will be stored in the database as W010,B010,B011,D011.These can be tokenized with ‘,’ as the delimiter
and then used.
3. As soon as the student presses the submit button then his/her choices are freezed and “Choice
25. Submitted” is made into Yes.
4. The password field although is stored as a Text field but it can be encrypted using some simple function
so that confidential data is not tampered with.
5. After the first allotment, if fees is paid by the candidate then only “Fees Paid” field should be made Yes
otherwise No should be retained, that’s why default value is important here.
6. Similar thing applies to “Category” field as well if a candidate fails to produce a certificate of his/her
category, then he/she is automatically designated as GE candidate, once again the default value is
important.
7. The DS seats are over and above the seats as mentioned in the counseling brochure.
8. The DS candidates once they have been allocated seats under the DS category, will be removed from
the CML list, and the other DS Candidates are treated as GE candidates[default value].
Now, we divide the software into the following modules:
Front End Module: Through which the user can login with certain credentials and then use the
software based on a user interface to fill the choices, save and submit the choices(i.e. the
preferences) of IITs etc.
Back End Module: This is the module which is the key part of the software. This has the entire
algorithm for Seat allocation process to all candidates and it performs the allocation in two rounds
of allotment. The information required from the database tables is processed and is accessed in this
module to generate the results for seat allotment. Moreover, two rounds of allotment are involved
here. This module also comprises of tasks of fee refund and rolls no allocation.
How to follow these diagrams:
The information about the classes(which includes attributes, and their methods) with the
relationships among them is clearly stated in the Class Diagrams attatched.
What follows is the description of the methods present in the class diagrams of each class used in
the diagram
So, by understanding these methods, you can proceed with the understanding of the sequence
diagrams used in the project.
The sequence diagrams give an outline of the logic of execution of both the front end and the back
end.
Description of class diagrams with their methods:
After the user fills the required forms and clicks on the login button, the registration number and password are sent
as arguments to loginClicked(Reg:int,pass:string) which is a member of “student” class.
We will now describe the functioning of the various classes:
student:
loginClicked(Reg:int,pass:string): In this function, we call the connectToDatabase() function which is used to connect
to the database.
checkPassword(RegNo:int,password:string): This function checks if the password entered by the user is correct.
Once the user the user is logged in, the following process takes place:
displayCredentials() function (a member of DisplayCredentials class) is called.
The nextButtonClicked() function (a member of Choices class) is called when the user clicks on the “Next”
26. button.
DisplayCredentials:
displayCredentials(): This function will obtain the required information from the database and display it.
getName(RegNo:int): This function is used to obtain the name of a student.
getCategory(RegNo:int): The function is used to obtain the category of a student.
Note: If the category of the candidate is not GE then, getCategoryAcceptance(Regno:int,category:string) is used to
find out if the candidate has submitted the caste certificate. If the candidate fails to submit the caste certificate, then
category of that candidate is changed to GE.
getRank(RegNo:int): This function is used to obtain the CML rank of the candidate.
getCategoryRank(RegNo:int,category:string): This function is used to obtain the category rank of the candidate.
Choices:
nextButtonClicked(): When this function is called, the control flow is as follows :
AlreadySubmitted(RegNo:int) (a member of Database class) is called which checks if the candidate has already
submitted his choice sheet.
Now, we have two cases:
Case 1: If the candidate has not submitted the choices then,
displayPreferences(region:int) function in displaychoices class is called which displays the saved choice sheet.
The user has the choice of adding a course to his choice sheet. This can be done by selecting a course from the
list and then clicking on the Add button. When the user clicks on the button the AddButtonClicked() function
is called which in turn calls displayAddedPreferences(preference:string) which displays the new list with the
latest choice at the bottom.
If the user clicks on the Save button then the saveButtonclicked() function is called which in turn calls the
savePreferences(regNo:int,Preferences:string) function. The choice sheet is saved.
If the user clicks on the Submit button then the submitButtonclicked() function is called which in turn calls the
savePreferences(regNo:int,Preferences:string) function. The choice sheet is saved and then submitted.
The user can select multiple choices in his choices and can click on the remove button. The
removeselectedpreferences() function is called which removes the selected preferences from the list.
Case 2: If the candidate has already submitted the list then,
displayPreferences(region:int) function (a member of DisplayChoices class) is called which displays the
submitted choice sheet.
The user has the option of clicking on the Print button which will call the PrintPreferences() function which
prints the choice sheet.
DisplayChoices:
DisplayPreferences(region:int): This function is used to display the candidate’s choice sheet. This function in turn
calls getPreferences(region:int) which gets the list of preferences separated by ',' .
displayAddedPreferences(preference:string): This function is used to display the modified choice sheet after
addition of a few choices.
PrintPreferences(): This function is used to print the choice sheet.
removeselectedPreferences(): This function is called when the user selects a few choices in his choice sheet and
27. clicks on the Remove button. This function removes the selected choices from the list.
DataBase:
connectToDataBase(): This function is used to connect to the database.
checkPassword(RegNo:int,password:string): This function checks if the user has entered the right password.
getName(RegNo:int): This function is used to obtain the name of a candidate. The name is extracted from the Name
column in the CML list table.
getCategory(RegNo:int): This function is used to obtain the category of the candidate. The category is extracted
from the Category column in the CML list table.
getCategoryAcceptance(Regno:int,category:string): This function returns the value in the Category Acceptance
column of the candidate with Registration Number=Regno in the required Category list table.
getRank(RegNo:int): This function returns the CML rank of a student(with Registration Number=Regno) by searching
in the CML list table.
getCategoryRank(RegNo:int,category:string): This function returns the category rank of a candidate (with
Registration Number=Regno) by searching in the required Category list table.
AlreadySubmitted(RegNo:int): This function checks if the user has already submitted the choice sheet by checking
the Choice Submitted column.
getPreferences(regNo:int): This function returns the preferences of the candidate by extracting details from the
respective column.
savePreferences(region:int,Preferences:string): This function updates the preferences of a candidate.
submitted(regNo:int): This function changes the submitted column (of the entry with Registration Number=Regno)
to Yes.
Allotment class:
1. It is responsible for doing the following things
a. Running the first allotment pass, the corresponding function is AllotmentPass(Dbase).
b. Assigning the counseling dates to the various IIT’s, the corresponding function is
counsellingDates().
c. Adjusting the list i.e filtering out those candidates who did not pay the fees, the corresponding
function is adjustList(Dbase).
d. Running the second allotment pass, using the same Allotment Pass function.
e. Refunding the candidates their fees if they don’t get a seat even after the second allocation, the
corresponding function is refund(Dbase).
2. It has a dependency with the DataBase class since it accesses all the data in the DataBase.
3. Whenever AllotmentPass() is mentioned, refer “Allotment Pass” activity diagram.
28. 4. Whenever counsellingDates() is mentioned, the function just assigns a window of four days to each IIT
,that too non-overlapping one after the another.
5. adjustList(Dbase) filters out the candidates who did not pay the fees i.e the candidates whose “Fees
Paid” field is set to No after the first allotment.
6. refund(Dbase) refunds the cadidates their fees if they don’t get a seat even after the second allotment,
and setting the “Fees Paid” field to No.
Activity Diagrams:
The following activity diagrams have been used:
Complete Seat Allocation Diagram
Allotment Pass Diagram
Adjust List Diagram
Basic Algorithm Diagram
Seat Allocation Diagram
GEN Allocation Diagram
OBC Allocation Diagram
SC Allocation Diagram
ST Allocation Diagram
GEN-PD Allocation Diagram
OBC-PD Allocation Diagram
SC-PD Allocation Diagram
ST-PD Allocation Diagram
Roll No Allocation Diagram
Complete Logic/Flow of Execution of the Software:
The sequence of execution of the software is as follows:
From the user interface provided, all the students would fill in their respective preferences and it will
be put in a field in the database(as described above in the database section).This is in brief, the
Frontend module execution.
Now, we have the list of all candidates who have got a rank in our students table
We form the CML list as follows:
Step 1: From the AIR rank list,first remove the DS candidates who have been allocated the
seats(which is done manually)
Step 2: To this list first append all the OBC candidates who have got an OBC rank but do not have an
AIR rank
Step 3: To this list append all OBC-PD candidtaes who have got an OBC-PD rank but do not have an
OBC rank
Step 4: Repeat the steps 3 and 4 for SC
Step 5: Repeat the steps 3 and 4 for ST
For the further running of algorithmic passes we consider these CML lists itself.
So, what remains in the software is just the Backend module execution.
Backend Module Execution:
Here, execution of the entire seat allocation algorithm forms the main part of the backend module
execution.
As mentioned before, it has got several functions as follows:
Allocate seats in the first allotment
29. Adjust the list (i.e. exclude the candidates who have not paid reg. fees)
Generate counseling dates
Allocate seats in the second allotment
Refund of fees to those who have not got a seat
Allocation of roll nos in the respective IIT
To understand this backend module execution follow the following diagram sequence as guided in
the following part of the document:
Note: Whenever we have a circle containing some Text like this, this indicates that this “Allotment
Pass” is referred somewhere else in another diagram which describes the complete algorithm to be
followed for just this entity “Allotment Pass”. For example, here this Allotment Pass entity has been
expanded as a whole algorithm in “Allotment Pass Diagram”. So, in that diagram, whatever has
been elaborated under Allotment Pass entity refers to the algorithm that should be incorporated in
the actual diagram that we are looking at now.
Go to “Complete Seat Allocation Diagram”: This diagram is the one which contains the complete
outer flow of execution of the back end module.
This has got some sub entities like:
“Allotment Pass” entity -- which is referred under “Allotment Pass diagram”
“Adjust List” entity – which is referred under “Adjust List Diagram”
“Roll no Allocation” entity – which is referred under “Roll no allocation diagram”
To describe in brief, it has 1st
round, 2nd
round of allotment in main and also has adjust list(which
adjusts the list) and some other functions like counseling dates generation, fee refund and roll no
allocation
Now, as we have to address those individual entities that we have referred to, we go those
individual entity diagrams…
“Allotment Pass Diagram”: This is the diagram which runs a certain flow as follows:
Run “Basic Algo” entity – This is present in the “Basic Algorithm diagram”
Check through certain conditional flow as described in the diagram and again execute the
remaining flow as suggested in the diagram flow.
The flow is very clear to be understood in the diagram itself
So describe in few words, this Allotment Pass algorithm is just one round of allotment of seats
“Adjust List Diagram”: This is the algo to scan through the CML list and see if they have Not agreed
for 2nd allotment from the 'Fees Paid' field of CML list and then,if a branch has been allocated for
that candidate under whichever category, increase the no.of seats for that branch by 1 and
Moreover remove that candidate from the initial CML list considered
“Basic Algo Diagram”: This algorithmic entity is a single pass of “seat allocation” on all the
candidates appearing in the CML list prepared.
This has “Seat Allocation” entity – which can be referred in the “Seat Allocation Diagram”
“Seat Allocation Diagram”: This algorithmic entity on the whole works on the algorithm/logic to be
followed for the seat allocation of a particular candidate and gives the result accordingly.
It hase got various sub entities as follows:
“GE ALLOC” entity : referred in the “GEN Allocation Diagram”
“OBC ALLOC” entity: referred in the “OBC Allocation Diagram”
“SC ALLOC” entity: referred in the “SC Allocation Diagram”
“ST ALLOC” entity: referred in the “ST Allocation Diagram”
30. “GE/PD ALLOC” entity : referred in the “GEN-PD Allocation Diagram”
“OBC/PD ALLOC” entity: referred in the “OBC-PD Allocation Diagram”
“SC/PD ALLOC” entity: referred in the “SC-PD Allocation Diagram”
“ST/PD ALLOC” entity: referred in the “ST-PD Allocation Diagram”
Well, the logic for the Seat allocation diagram is stated clearly in the “Seat Allocation Diagram” to
be understood.
Now, we have to address those individual entities which are stated above. The logic for these
entities has been stated in their respective activity diagrams:
“GEN Allocation Diagram”: This algorithmic entity works on the algorithm/logic to allocate a seat
for a candidate of GEN category
“OBC Allocation Diagram”: This algorithmic entity works on the algorithm/logic to allocate a seat
for a candidate of OBC category. In this case, in whichever case, the candidate can get a better
preference, i.e., if he is under OBC or GEN is considered and the seat would be allocated
accordingly.
The same logic is followed for SC,ST,GEN-PD,OBC-PD,SC-PD,ST-PD for the following diagrams.
“SC Allocation Diagram”: This algorithmic entity works on the algorithm/logic to allocate a seat for a
candidate of SC category
“ST Allocation Diagram”: This algorithmic entity works on the algorithm/logic to allocate a seat for a
candidate of ST category
“GEN-PD Allocation Diagram”: This algorithmic entity works on the algorithm/logic to allocate a
seat for a candidate of GEN-PD category
“OBC-PD Allocation Diagram”: This algorithmic entity works on the algorithm/logic to allocate a
seat for a candidate of OBC-PD category
“SC-PD Allocation Diagram”: This algorithmic entity works on the algorithm/logic to allocate a seat
for a candidate of SC-PD category
“ST-PD Allocation Diagram”: This algorithmic entity works on the algorithm/logic to allocate a seat
for a candidate of ST-PD category
All these algorithm entities listed above now do not have sub entities anymore
Now, whatever sub entities that are referred to have terminated and hence revert back to their
super entity(just like a nested function)(This sentence is to just get a feel of the execution of the
algorithm going on)
We have one more entity left to be described…
“Roll No Allocation Diagram”: This algorithmic entity allocates the roll no’s for all the students who
have been given a seat after the 2nd
allotment process(which is indeed, interpreted in the activity
diagrams)
So, this all the work flow that would be followed.
So, this is all the summary of the process and the work flow involved in this software in different
modules,which are both front end and back end