30

IIT JEE Seat Allocation System

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: IIT JEE Seat Allocation System
Page 2: IIT JEE Seat Allocation System
Page 3: IIT JEE Seat Allocation System
Page 4: IIT JEE Seat Allocation System
Page 5: IIT JEE Seat Allocation System
Page 6: IIT JEE Seat Allocation System
Page 7: IIT JEE Seat Allocation System
Page 8: IIT JEE Seat Allocation System
Page 9: IIT JEE Seat Allocation System
Page 10: IIT JEE Seat Allocation System
Page 11: IIT JEE Seat Allocation System
Page 12: IIT JEE Seat Allocation System
Page 13: IIT JEE Seat Allocation System
Page 14: IIT JEE Seat Allocation System
Page 15: IIT JEE Seat Allocation System

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

Page 16: IIT JEE Seat Allocation System

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.

Page 17: IIT JEE Seat Allocation System
Page 18: IIT JEE Seat Allocation System

:studentLoginClicked(Reg:int,pass:string)

.connectToDataBase():DataBase

.checkPassword(RegNo:int,password:string)correct or not

.displayCredintials():DisplayCredintials .getName(RegNo:int)

Name

.getCategory(RegNo:int)

category

optIf category is not GE

:getCategoryAcceptance(RegNo:int,category:string)

optif category not accepted then category = GEelse category = respective category

.getRank(RegNo:int)

rank

optif category accepted

.getCategoryRank(RegNo:int)

Category Rank

.nextButtonClicked():Choices

.AlreadySubmitted(RegNo:int)

submitted or not

optif 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)

optif submitted .displayPrefrences(RegNo:int)

.PrintButtonClicked().printPreferences()

optif loginned

accepted or not

Page 19: IIT JEE Seat Allocation System

Allotment-Dbase:Database+AllotmentPass(Dbase:DataBase):void+counsellingDates():void+adjustList(Dbase:DataBase):void+refund(Dbase:DataBase):void+roll_noAllocation(Dbase:DataBase):voidResponsibilities-- This class will run the whole allotment process.

:allotment

:DataBase.AllotmentPass(Dbase)

.adjustList(Dbase)

.AllotmentPass(Dbase).refund(Dbase)

DataBase

+connectToDataBase():void+checkPassword(RegNo:int,password:string):bool+getName(RegNo:int):string;+getCategory(RegNo:int):string+getCategoryAcceptance(RegNo:int,category:string):bool+getRank(RegNo:int):int+getCategoryRank(RegNo:int,category:string):int+AlreadySubmitted(RegNo:int):bool+getPrefrences(RegNo:int):string+savePrefrences(RegNo:int,prefrences:string):void+submitted(RegNo:int):void

.roll_noAllocation(Dbase)

.counsellingDates()

Page 20: IIT JEE Seat Allocation System

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

Page 21: IIT JEE Seat Allocation System

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.

Page 22: IIT JEE Seat Allocation System

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.

Page 23: IIT JEE Seat Allocation System

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}

Page 24: IIT JEE Seat Allocation System

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

Page 25: IIT JEE Seat Allocation System

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”

Page 26: IIT JEE Seat Allocation System

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

Page 27: IIT JEE Seat Allocation System

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.

Page 28: IIT JEE Seat Allocation System

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

Page 29: IIT JEE Seat Allocation System

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”

Page 30: IIT JEE Seat Allocation System

“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