You are on page 1of 36

Faculty Allocation System

Group members:
1. Rituparna Hazra
2. Dipayan Mondal
3. Parnab Ghosh
4. Rudrashish Bose
5. Asish Bhakat
6. Sanjoy Mondal.

Acknowledgement:
We take this opportunity to express my profound
gratitude and deep regards to my faculty
Mr. ARNAB CHAKRABORTY for his exemplary
guidance, monitoring and constant
encouragement throughout the course of this
project. The blessing, help and guidance given by
his time to time shall carry me a long way in the
journey of life on which I am about to embark.
We are obliged to our all project team members for
the valuable information provided by them in their
respective fields. We are grateful for their
cooperation during the period of assignment.

1. Rituparna Hazra
2. Dipayan Mondal
3. Parnab Ghosh
4. Rudrashish Bose
5. Asish Bhakat
6. Sanjoy Mondal.

Contents:
1. Acknowledgment
2. Project objective
3. Project scopes
4. Requirement specification
5. Schema, E-R Diagram and Screenshots
6. Codes implemented
7. Future scope of the project
8. Certificate.

Project objective:
Develop a Faculty Allocation System so that an
administrator can add a batch, update the
components of the project, and create a
particular batch.
The primary goal of the project is to:
To allocate faculty to subjects in a routine
automatically to batch
Administrator can allocate faculty to the
periods.
Administrator can allocate the choices of
the batch and day according to the
availability of faculty of a subject
Faculty can apply for leave for a particular
day.

Project scope:
It will provide a platform for the
administrator to easily handle the faculty
and their allocation.
The system will provide batch routine for
the institution.
The system will help the administrator to
keep the faculty information and routine
information in the form of list.
The Administrator can control the
maximum classes allotted for a particular
faculty.
The system will guard against null or
invalid operations using alerts.
Faculty Report, Routine Report, Student
Report and Faculty Leave Report can be
accessed independently.

Requirement specification:
Domain description:
Faculty Allocation deals with the Administrator
being able to add, store and update the details of
the Faculty and subject as well as topics.

Problem description:
Administrator can face massive problems in
logistics if allocation of Faculty is done by hand
and paper or using a text file. It will get very
complicated if the allocation needs to altered
based on availability, also data redundancy is a
major possibility. Thus by the use of this software
this problem can be easily solved.

Functional requirements:
Some important features of this project are:
Add Faculty Details: Administrator can add
faculty details like Faculty name, subject,
batch, join date uniquely identified by
FACULTY ID.

Routine: We can allocate faculty to classes


in a routine based on the subject and available
faculty for a particular batch and day.
Subject: Admin can assign maximum
classes for a particular subject and insert topics
for each of those classes for that subject.
Faculty Leave: Administrator can update
the routine by setting OFF periods for faculty
applying for leave for a particular day.
View Routine: Routines of all the batches
can be viewed as a report on a separate form.
View Faculty Report: Administrator can
view Faculty Details as a report on a separate
form
View Subject Details Report: Administrator
can view Subject details like Subject Name, and
topics on a separate form
View Subject Record Report: Administrator
can view details like Subject Name, Maximum
Classes, Highest Marks and Subject type
(Theory/Practical).

Hardware requirement:
Memory: Ram 512mb and above.
Processor: Pentium 4 and above.
Software requirement:
Operating system: Windows XP, Windows
Server 2003, Windows NT Server 4.0,
Windows 2000 SP1.
Oracle 10G, Oracle Developer Suite.
Browser JVM compatible.

Schema Design
Faculty_Details

Faculty_id, Faculty_name, Subject_name,


Batch_number, Join_date

Routine_Details

Day, Period, faculty_name, Subject_name,


Batch_number

Leave_Details
Subject_Details
Subject_Records

Faculty_name, Day
Subject_name, Topic
Subject_name, Total_number_of_class,
Highest_marks, Type

E-R Diagram

Faculty Details Form

Declare
a number;
myfid faculty_details.fid%type;
myfname faculty_details.fname%type;
mysub faculty_details.sub%type;
mybatch faculty_details.batch%type;
myjdate faculty_details.jdate%type;
begin
set_item_property('ti3',enabled,property_false);
set_item_property('ti4',enabled,property_false);
select count(*) into a
from faculty_details;
if (a=0) then
:global.reccount:=0;
:global.currecno:=0;
message('I am in the then block...');
else
message('I am in the else block...');
:global.currecno:=1;
:global.reccount:=a;
:di3:=:global.currecno||'/'||:global.reccount;

select fid,fname,sub,batch,jdate into myfid,myfname,mysub,mybatch,myjdate from


(select rownum rn,fid,fname,sub,batch,jdate from faculty_details order by rownum)
where rn=1;
:ti49:=myfid;
:ti2:=myfname;
:di1:=mysub;
:di73:=mybatch;
:forms_date:=myjdate;
end if;
end;

declare
a number;
myfid faculty_details.fid%type;
myfname faculty_details.fname%type;
mysub faculty_details.sub%type;
mybatch faculty_details.batch%type;
myjdate faculty_details.jdate%type;
begin
set_item_property('ti3',enabled,property_false);
set_item_property('ti4',enabled,property_false);
select count(*) into a from faculty_details;

if (a=0) then
:global.reccount:=0;
:global.currecno:=0;

else
if (:global.currecno=:global.reccount) then
a := show_alert('lastrecord');
else
:global.currecno:=:global.currecno + 1;
select fid,fname,sub,batch,jdate into myfid,myfname,mysub,mybatch,myjdate from
(select rownum rn,fid,fname,sub,batch,jdate from faculty_details order by rownum)
where rn=:global.currecno;
:ti49:=myfid;
:ti2:=myfname;
:di1:=mysub;
:di73:=mybatch;
:forms_date:=myjdate;
:di3:=:global.currecno||'/'||:global.reccount;
end if;
end if;
end;

Declare
a number;
myfid faculty_details.fid%type;
myfname faculty_details.fname%type;
mysub faculty_details.sub%type;
mybatch faculty_details.batch%type;
myjdate faculty_details.jdate%type;

begin
set_item_property('ti3',enabled,property_false);
set_item_property('ti4',enabled,property_false);
select count(*) into a
from faculty_details;
if (a=0) then
:global.reccount:=0;
:global.currecno:=0;
else
if (:global.currecno=1) then
a := show_alert('firstrecord');
else
:global.currecno:=:global.currecno - 1;

select fid,fname,sub,batch,jdate into myfid,myfname,mysub,mybatch,myjdate from


(select rownum rn,fid,fname,sub,batch,jdate from faculty_details order by rownum )
where rn=:global.currecno;
:ti49:=myfid;
:ti2:=myfname;
:di1:=mysub;
:di73:=mybatch;
:forms_date:=myjdate;
:di3:=:global.currecno||'/'||:global.reccount;
end if;
end if;
end;

declare
a number;
myfid faculty_details.fid%type;
myfname faculty_details.fname%type;
mysub faculty_details.sub%type;
mybatch faculty_details.batch%type;
myjdate faculty_details.jdate%type;
begin
set_item_property('ti3',enabled,property_false);
set_item_property('ti4',enabled,property_false);
select count(*) into a from faculty_details;
if (a=0) then
:global.reccount:=0;
:global.currecno:=0;
message('I am in the then block...');
else
message('I am in the else block...');
:global.currecno:=:global.reccount;
:di3:=:global.currecno||'/'||:global.reccount;
select fid,fname,sub,batch,jdate into myfid,myfname,mysub,mybatch,myjdate from (
select rownum rn,fid,fname,sub,batch,jdate from faculty_details order by rownum )
where rn=:global.reccount;
:ti49:=myfid;
:ti2:=myfname;
:di1:=mysub;

:di73:=mybatch;
:forms_date:=myjdate;
end if;
end;

set_item_property('ti3',enabled,property_true);
set_item_property('ti4',enabled,property_true);
:ti49:='';
:ti2:='';
:di73:='';
:di1:='';
:forms_date:='';
go_item('ti49');

set_item_property('ti3',enabled,property_false);
set_item_property('ti4',enabled,property_false);
:ti49:='';
:ti2:='';
:ti3:='';

:di73:='';
:di1:='';
:forms_date:='';
go_item('ti49');

set_item_property('ti3',enabled,property_false);
set_item_property('ti4',enabled,property_false);
:ti49:='';
:ti2:='';
:ti3:='';
:di73:='';
:di1:='';
:forms_date:='';
go_item('ti49');

Declare
a number;

begin
set_item_property('ti3',enabled,property_true);
set_item_property('ti4',enabled,property_true);
if :ti2 is null or :ti3 is null or :ti4 is null or :ti49 is null or :forms_date is null then
a:=show_alert('blankfield');

else
insert into faculty_details values (:ti49,:ti2,:ti3,:ti4,:forms_date);
standard.commit;
:global.reccount:=:global.reccount+1;
:global.currecno:=:global.reccount;

message('record inserted successfully');


message('

');

:di3:=:global.currecno||'/'||:global.reccount;
end if;
end;

begin
delete from faculty_details where fid =:block3.ti49;
standard.commit;
:global.reccount:=:global.reccount-1;
:global.currecno:=:global.reccount;
:di3:=:global.currecno||'/'||:global.reccount;

message('record deleted successfully');


message('

');

end;

exit_form;

Class Details Form

:ti2:='';
:ti4:='';
:ti5:='';
go_item('LIST42');

declare
a number;
cnt number := 0;

x number;
tot number;
begin
select count(*) into cnt from sub_details where (SUBJECT_NAME=:LIST42);
select count(*) into x from sub_record where (SUBJECT_NAME=:LIST42 and
MAX_CLASS = 0) ;
go_item('LIST42');
if(x=1 and :ti4 <= 20) then
update sub_record set MAX_CLASS=:ti4 where (SUBJECT_NAME=:LIST42);
standard.commit;
select MAX_CLASS into tot from sub_record where (SUBJECT_NAME=:LIST42);
else
select MAX_CLASS into tot from sub_record where (SUBJECT_NAME=:LIST42);
end if;
--:ti4 := tot;
if(cnt= tot) then
a := show_alert('OVERFLOW');
elsif(tot > 20) then
a := show_alert('MAXCLASS');
elsif(:ti2 is null) then
a := show_alert('EMPREC');
else
insert into sub_details values (:LIST42,:ti2);
standard.commit;
:ti3:=cnt+1||'/'||tot;
end if;
end;

declare
a number;
begin
select HMARKS into :ti5 from sub_record where (SUBJECT_NAME=:LIST42);
select MAX_CLASS into :ti4 from sub_record where
(SUBJECT_NAME=:LIST42);
end;

Routine Details

declare
a number;
begin
if :bat is null then
a:= show_alert('nobatch');
else
select count(*) into a from faculty_details where batch= :bat;
a:= populate_group('rg1');
populate_list('SUB','rg1');
end if;
end;

declare
b number;
begin
select count(*) into b from faculty_details where sub= :sub;
b:= populate_group('rg2');
populate_list('fac','rg2');
end;

declare
c number;
d number;
begin
select count(*) into c from routine where working_day= :dy and period= :pr;
select count(*) into d from routine where fname= :fac and working_day= :dy;
if c=1 then
c:= show_alert('assigned');
elsif
d=3 then
d:=show_alert('max_class');
else
insert into routine values(:dy,:pr,:fac,:sub,:bat);

standard.commit;
end if;
end ;

Begin
open_form('C:\Project\leave\leave.fmx',activate,no_session);
end;

open_form('C:\Documents and
Settings\Administrator\Desktop\Project\ROUTINE\ROUTINE_REPORT.fmx',activate,no_session;

Leave Form

Declare
a number;
begin
if :li2 is null then
a:= show_alert('noday');

else
select count(*) into a from routine where working_day= :li2;
a:= populate_group('rg3');
populate_list('li1','rg3');
end if; end;

declare
b number;
begin
if :li2 is null then
b:= show_alert('noday');
else
update routine set period='OFF' where fname= :block3.li1;
standard.commit;
end if;
end;

begin
open_form('C:\Project\routine\ROUTINE.fmx',activate,no_session);
end;

Future scopes of the project:


The Project can be extended to handle
routines of multiple departments of a
college.
The Faculty Report could be made more
attractive by including images as BLOBs.

Certificate
This is to certify that Ms. Rituparna Hazra of
Calcutta
Institute
of
Engineering
and
Management, registration number: 27833, has
successfully completed a project on Faculty
Allocation System using Oracle Forms under the
guidance of Mr. ARNAB CHAKRABORTY.
--- --------------------------------------------------- Globsyn Finishing School
(a division of Globsyn Skills)

Certificate
This is to certify that Mr. Dipayan Mondal of
Haldia Institute of Technology, registration
number: 27832, has successfully completed a
project on Faculty Allocation System using Oracle
Forms under the guidance of Mr. ARNAB
CHAKRABORTY.
--- --------------------------------------------------- Globsyn Finishing School
(a division of Globsyn Skills)

Certificate
This is to certify that Mr. Parnab Ghosh of Haldia
Institute of Technology, registration number:
27851, has successfully completed a project on
Faculty Allocation System using Oracle Forms
under
the
guidance
of
Mr.
ARNAB
CHAKRABORTY.
--- --------------------------------------------------- Globsyn Finishing School
(a division of Globsyn Skills)

Certificate
This is to certify that Mr. Rudrashish Bose of
Calcutta
Institute
of
Engineering
and
Management, registration number: 27831, has
successfully completed a project on Faculty
Allocation System using Oracle Forms under the
guidance of Mr. ARNAB CHAKRABORTY.
--- --------------------------------------------------- Globsyn Finishing School
(a division of Globsyn Skills)

Certificate
This is to certify that Mr. Asish Bhakat of Haldia
Institute of Technology, registration number:
29659, has successfully completed a project on
Faculty Allocation System using Oracle Forms
under
the
guidance
of
Mr.
ARNAB
CHAKRABORTY.
--- --------------------------------------------------- Globsyn Finishing School
(a division of Globsyn Skills)

Certificate
This is to certify that Mr. Sanjoy Mondal of Haldia
Institute of Technology, registration number:
27850, has successfully completed a project on
Faculty Allocation System using Oracle Forms
under
the
guidance
of
Mr.
ARNAB
CHAKRABORTY.
--- --------------------------------------------------- Globsyn Finishing School
(a division of Globsyn Skills)

You might also like