DS Project Report
DS Project Report
On
B. TECH.
in
SUBMITTED BY
1
CERTIFICATE
2
EVALUATION SHEET
7. Result: [APPROVED/REJECTED]
3
CANDIDATE’S DECLARATION
Signature of Student
4
ACKNOWLEDGEMENT
5
ABSTRACT
Employees are the backbone of any company therefore their
management plays a major role in deciding the success of an
organization. Employees Management Software makes it easy for the
employer to keep track of all records. This software allows the
administrator to edit employees, add new employees,
transfer/promote/terminate employees. Each employee in the database
is associated with a position can be added and edited when need
arises. Employees can be transferred between positions easily without
having to retype back their information in the database. You can
check to see if there are duplicate positions/employees in the
database. Most of all, the employer can assign tasks to employees and
assess their progress in order to keep track of employee performance.
A flexible and easy to use Employee Management software solution
for small and medium sized companies provides modules for
personnel information management thereby organization and
companies are able to manage the crucial organization asset – people.
6
INTRODUCTION
This project is all about the Employee Management System using
Doubly Linked List. Employees Management Software makes it easy
for the employer to keep track of all records. This software allows the
administrator to edit employees, add new employees, transfer/promote
/Terminate employees by using the Doubly Linked List algorithm
which makes this easy. It examines theories, concepts, approaches,
methods and techniques relevant to the project. Similar existing
technologies relating to the development the EMS are discussed.
Doubly Linked:
As in the singly linked list, the doubly linked list also has a head and a
tail. The previous pointer of the head is set to NULL as this is the first
node. The next pointer of the tail node is set to NULL as this is the
last node.
7
Declaration
8
float sal;
char name[20], dept[10], desg[20];
struct node* next;
}
Building the Employee’s table: For building the employee table the
idea is to use the above struct datatype which will use to store the
information regarding the employee and every new employee’s
details will be added as a linked list node.
Deleting in the record: Since, a doubly-linked list is used to store
the data, therefore to delete the data at any index just link the next to
the next of the deleted data and link the previous node of the next
data of the deleted node to its previous data.
Searching in the record: For searching in the record based on any
parameter, the idea is to traverse the data and if at any index the
value parameters match with the record stored, print all the
information of that employee.
CODE
INPUT:
// C-program to demonstrate employer
// details using a Doubly-linked
list #include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Global
declaration int
count = 0;
// Structure
declaration struct
node {
struct node*
prev; int ssn;
long int phno;
float sal;
char name[20], dept[10],
desg[20]; struct node* next;
9
} * h, *temp, *temp1, *temp2, *temp4;
10
// Function to create node
void create()
{
int ssn;
long int phno;
float sal;
char name[20], dept[10], desg[20];
temp = (struct node*)malloc(sizeof(struct
node)); temp->prev = NULL;
temp->next = NULL;
printf("\n enter ssn, name,
depart" "ment, designation,
salary " "and phno of
employee:\n");
scanf("%d %s %s %s %f
%ld", &ssn, name, dept,
desg, &sal, &phno);
temp->ssn = ssn;
strcpy(temp->name, name);
strcpy(temp->dept, dept);
strcpy(temp->desg, desg);
temp->sal = sal;
temp->phno = phno;
count++;
}
// Function to insert at
beginning void insertbeg()
{
// If DLL is empty
if (h == NULL) {
create();
h=
temp;
temp1 = h;
}
11
temp; h = temp;
}
12
}
// Function to insert at
end void insertend()
{
// If DLL is empty
if (h == NULL) {
create();
h=
temp;
temp1 = h;
}
13
printf("number of employees=%d", count);
}
14
// Function to delete at
end int deleteend()
{
struct node*
temp; temp = h;
if (temp == NULL) {
printf("list is empty\
n"); return 0;
}
if (temp->next == NULL) {
printf("%d %s %s %s %f %ld\
n",
temp->ssn, temp->name,
temp->dept, temp->desg,
temp->sal, temp->phno);
free(temp);
h =
NULL;
}
else {
temp = temp1;
temp2 = temp1->prev;
temp2->next =
NULL;
printf("%d %s %s %s %f %ld\
n", temp->ssn, temp->name,
temp->dept, temp->desg,
temp->sal, temp->phno);
free(temp);
temp1 = temp2;
}
count--;
return 0;
}
15
if (temp->next == NULL) {
printf("%d %s %s %s %f %ld\
n",
temp->ssn, temp->name,
16
temp->dept, temp->desg,
temp->sal, temp->phno);
free(temp);
h=
NULL;
}
else {
h = h->next;
h->prev = NULL;
printf("%d %s %s %s %f %ld\
n", temp->ssn, temp->name,
temp->dept, temp->desg,
temp->sal, temp->phno);
free(temp);
}
count--;
return 0;
}
// Function displaying
menus void
employerDetails()
{
int ch, n, i;
h=
NULL;
temp = temp1 = NULL;
printf("--------Menu-----------\n");
printf("\n 1.create a DLL of n
emp"); printf("\n 2.display from
beginning"); printf("\n 3.insert at
end");
printf("\n 4.delete at end");
printf("\n 5.insert at beginning");
printf("\n 6.delete at
beginning");
printf("\n 7.to show DLL as
queue"); printf("\n 8.exit\n");
printf("---------------------\n");
while (1) {
printf("\n enter choice :
"); scanf("%d", &ch);
// Switch statements
17
begins switch (ch) {
case 1:
printf("\n enter number
of" " employees:");
scanf("%d", &n);
18
for (i = 0; i < n; i++)
insertend();
break;
case 2:
displaybeg();
break;
case 3:
insertend();
break;
case 4:
deleteend();
break;
case 5:
insertbeg();
break;
case 6:
deletebeg();
break;
case 7:
printf(
"\n to show DLL as
queue" " \n1.perform
insert and"
" deletion operation by "
"calling insertbeg() and "
"deleteend() respectively\n "
"\t OR \n 2.perform insert "
"and delete operations by"
"calling insertend() and "
"deletebeg() respectively\n");
break;
case 8:
exit(0);
default:
printf("wrong choice\n");
}
}
}
// Driver Code
int main()
{
// Function Call
employerDetails();
19
return 0;
}
OUTPUT:
Explanation:
1. create():The create() function creates a doubly linked list node
using dynamic memory allocation i.e., using malloc() function. Data
inserted into it such as name, dept, designation, salary, Phno. into
temp node.
2. insertbeg(): This function is used for inserting the node at the
beginning of the doubly linked list. In this function,
if h==NULL means the list is completely empty so need to create a
new node. Otherwise, create a node and insert it at the beginning.
Then make this node a new temp node.
3. insertend(): This function is used for inserting the node at the end
of the doubly linked list. In this function, if h==NULL means the list
is completely empty so need to create a new node. Otherwise, insert
this temp after the temp1 node, lastly assign temp as temp1 for future
use.
4. displaybeg(): This function is used for displaying the elements of
the list from the beginning. It also helps to know the number of
employees.
20
5. deleteend(): This function is useful for deleting the node from the
end. Since memory is allocated dynamically for the node, need to
explicitly write the function to free the node that is done by
using free(temp).
6. deletebeg(): This function is useful for deleting the node from the
beginning Since the memory is allocated dynamically for the node,
need to explicitly write the function to free the node that is done by
using free(temp).
7. main(): This is the main function that drives the whole program.
It uses switch statements to operate all the functions which are
required to run a successful program.
21