MAHATMA EDUCATION SOCIETY’S
PILLAI COLLEGE OF ARTS, COMMERCE & SCIENCE
(Autonomous) NEW PANVEL
PROJECT REPORT ON
“Employee Management System”
IN PARTIAL FULFILLMENT OF
BACHELOR OF COMPUTER SCIENCE
SEMESTER V 2024-25
PROJECT GUIDE
Prof. SHUBANGI MAM
SUBMITTED BY: ABHIJITH CHANDRAN
ROLL NO: 9101
EMPLOYEE MANAGEMENT SYSTEM
• The Employee Management System is a web-based
application designed to streamline the management of
employee information within an organization. This system allows
users to perform various operations related to employee data,
making it a valuable tool for HR departments and management
teams. • Key Features
• User-Friendly Interface:
o The application features a responsive and intuitive user
interface built with Bootstrap, ensuring easy navigation
and a pleasant user experience.
• Employee CRUD Operations:
o Users can perform Create, Read, Update, and Delete
(CRUD) operations on employee records. This includes
adding new employees, viewing existing records, updating
details, and removing employees from the database.
• Database Integration:
o The system is connected to a MySQL database (or Oracle,
depending on your setup) where all employee data is
stored. This ensures data persistence and allows for
efficient data retrieval.
• Session Management:
o The application uses session management to maintain
user states, such as login status and user-specific
messages (e.g., success or error messages).
• Data Validation:
o Input validation is performed to ensure that the data
entered by users meets the required criteria before being
processed and stored in the database.
CODE :
[Link]
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="[Link]
xmlns:p="[Link]
xmlns:tx="[Link]
xmlns:util="[Link]
xmlns:xsi="[Link]
xmlns:context="[Link] t"
xmlns:mvc="[Link] "
xsi:schemaLocation="
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
<!-- Component scan -->
<context:component-scan base-package="[Link]" />
<!-- View Resolver -->
<bean name="viewResolver"
class="[Link]
ewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
<tx:annotation-driven/>
<bean name="ds"
class="[Link]
Source">
<property name="driverClassName"
value="[Link]"/>
<property name="url"
value="jdbc:mysql://localhost:3306/spring_orm"/>
<property name="username" value="root"/>
<property name="password" value="admin"/>
</bean>
<!-- Session Factory Bean -->
<bean name="factory"
class="[Link]
yBean">
<property name="dataSource" ref="ds"/>
<property name="hibernateProperties">
<props>
<prop
key="[Link]">[Link].MySQL57Dialect</
prop>
<prop key="[Link]">update</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.use_sql_comments">true</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>[Link]</value>
</list>
</property>
</bean>
<bean name="hibernateTemplate"
class="[Link]"
>
<property name="sessionFactory" ref="factory"/>
</bean>
<bean name="transactionManager"
class="[Link]
nManager">
<property name="sessionFactory" ref="factory"/>
</bean>
</beans>
Home [Link]
package [Link];
import
[Link].C
ontroller; import
[Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link]; // Correct import for Java List
import [Link]; import
[Link];
import [Link];
import [Link];
@Controller
public class HomeController {
@Autowired private
EmpDao empDao;
@RequestMapping(path = "/home") public String
home(Model m) {
List<Emp> list = [Link]();
[Link]("empList" , list);
return "home"; // This should resolve to
/WEBINF/views/[Link]
}
@RequestMapping(path = "/addEmp")
public String addEmp() {
return "addEmp"; // This should resolve to /WEB-
INF/views/add_Emp.jsp
@RequestMapping(path = "/createEmp" , method =
[Link])
public String createEmp(@ModelAttribute Emp emp,HttpSession
session) {
[Link](emp);
// Ensure empDao is not null if
(empDao == null) {
[Link]("empDao is null");
return "error"; // Handle error gracefully
}
int i = [Link](emp);
[Link]("msg","Resgister Successfully");
return"redirect:/addEmp";
@RequestMapping(path = "/editEmp/{id}")
public String editEmp(@PathVariable int id,Model m) {
Emp emp =[Link](id);
[Link]("emp",emp);
return "edit_emp";
}
@RequestMapping(path = "/updateEmp" , method =
[Link])
public String updateEmp(@ModelAttribute Emp emp,HttpSession
session) {
[Link](emp);
[Link]("msg","Update Succesfully");
return "redirect:/home";
}
@RequestMapping("/deleteEmp/{id}")
public String deleteEmp(@PathVariable int id,HttpSession
session) {
[Link](id);
[Link]("msg","employee deleted succefully");
return "redirect:/home";
}
[Link]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="[Link]
%>
<%@page isELIgnored="false"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Add Employee</title>
<link
href="[Link]
[Link]" rel="stylesheet" crossorigin="anonymous">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
<div class="container-fluid">
<a class="navbar-brand" href="#">Employee Management
System</a>
<button class="navbar-toggler" type="button" data-
bstoggle="collapse" data-bs-target="#navbarSupportedContent" aria-
controls="navbarSupportedContent" aria-expanded="false" aria-
label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse"
id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page"
href="home">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="addEmp">Add Employee</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="row">
<div class="col-md-6 offset-md-3">
<div class="card">
<div class="card-header text-center">
<h2>Add Employee</h2>
<c:if test="${not empty msg }">
<h5> ${msg} </h5>
<c:remove var="msg"/>
</c:if>
</div>
<div class="card-body">
<form action="createEmp" method="post">
<div class="mb-3">
<label for="fullname">Enter Full Name</label>
<input type="text" id="fullname" name="fullname"
class="form-control">
</div>
<div class="mb-3">
<label for="address">Enter Address</label>
<input type="text" id="address" name="address" class="form-
control">
</div>
<div class="mb-3">
<label for="email">Enter Email</label>
<input type="text" id="email" name="email"
class="formcontrol">
</div>
<div class="mb-3">
<label for="password">Enter Password</label>
<input type="password" id="password" name="password"
class="form-control">
</div>
<div class="mb-3">
<label for="designation">Enter Designation</label>
<input type="text" id="designation" name="designation"
class="form-control">
</div>
<div class="mb-3">
<label for="salary">Enter Salary</label>
<input type="text" id="salary" name="salary"
class="formcontrol">
</div>
<button type ="submit" class="btn
btnprimary">Submit</button>
</form>
</div>
</div>
</div>
</div>
</div>
<!-- Include Bootstrap JS and [Link] -->
<script
src="[Link]
d/[Link]" crossorigin="anonymous"></script>
<script
src="[Link]
[Link]" crossorigin="anonymous"></script>
</body>
</html>
[Link]
<%@ page language="java" contentType="text/html;
charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="[Link] %>
<%@page isELIgnored="false"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Employee Management System</title>
<link
href="[Link]
[Link]" rel="stylesheet" crossorigin="anonymous">
<style>
body {
background-
color: #f8f9fa;
/* Light
background
color */
.card-header {
background-color: #007bff; /* Blue color for header */
color: white; /* White text */
}
.success-message {
color: green; /* Success message color */
.error-message {
color: red; /* Error message color */
</style>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
<div class="container-fluid">
<a class="navbar-brand" href="#">Employee Management
System</a>
<button class="navbar-toggler" type="button" data-
bstoggle="collapse" data-bs-target="#navbarSupportedContent" aria-
controls="navbarSupportedContent" aria-expanded="false" aria-
label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse"
id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page"
href="home">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="addEmp">Add Employee</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container mt-4">
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header">
<h4>All Employee Details</h4>
<c:if test="${not empty msg }">
<h5 class="success-message">${msg}</h5>
<c:remove var="msg"/>
</c:if>
</div>
<div class="card-body">
<table class="table table-striped">
<thead>
<tr>
<th scope="col">Id</th>
<th scope="col">Full Name</th>
<th scope="col">Address</th>
<th scope="col">Email</th>
<th scope="col">Password</th>
<th scope="col">Designation</th>
<th scope="col">Salary</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
<c:forEach items="${empList}" var="emp">
<tr>
<th scope="row">${[Link]}</th>
<td>${[Link]}</td>
<td>${[Link]}</td>
<td>${[Link]}</td>
<td>${[Link]}</td>
<td>${[Link]}</td>
<td>${[Link]}</td>
<td>
<a href="editEmp/${[Link]}" class="btn btn-
sm btn-primary">Edit</a>
<a href="deleteEmp/${[Link]}" class="btn
btn-sm btn-danger">Delete</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- Include Bootstrap JS and [Link] -->
<script
src="[Link]
d/[Link]" crossorigin="anonymous"></script>
<script
src="[Link]
[Link]" crossorigin="anonymous"></script>
</body>
</html>
Edit_emp.jsp
<%@ page language="java" contentType="text/html;
charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="[Link]
%>
<%@page isELIgnored="false"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Add Employee</title>
<link
href="[Link]
[Link]" rel="stylesheet" crossorigin="anonymous">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
<div class="container-fluid">
<a class="navbar-brand" href="#">Employee Management
System</a>
<button class="navbar-toggler" type="button" data-
bstoggle="collapse" data-bs-target="#navbarSupportedContent" aria-
controls="navbarSupportedContent" aria-expanded="false" aria-
label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse"
id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page"
href="home">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="addEmp">Add Employee</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="row">
<div class="col-md-6 offset-md-3">
<div class="card">
<div class="card-header text-center">
<h2>Edit Employee</h2>
<c:if test="${not empty msg }">
<h5> ${msg} </h5>
<c:remove var="msg"/>
</c:if>
</div>
<div class="card-body">
<form
action="${[Link]}/updateEmp"
method="post">
<input type="hidden" name="id" value="${[Link] }">
<div class="mb-3">
<label for="fullname">Enter Full Name</label>
<input type="text" id="fullname" name="fullname"
class="form-control" value="${[Link] }">
</div>
<div class="mb-3">
<label for="address">Enter Address</label>
<input type="text" id="address" name="address"
class="form-control" value="${[Link] }">
</div>
<div class="mb-3">
<label for="email">Enter Email</label>
<input type="text" id="email" name="email"
class="formcontrol" value="${[Link] }">
</div>
<div class="mb-3">
<label for="password">Enter Password</label>
<input type="password" id="password" name="password"
class="form-control" value="${[Link] }">
</div>
<div class="mb-3">
<label for="designation">Enter Designation</label>
<input type="text" id="designation" name="designation"
class="form-control" value="${[Link] }">
</div>
<div class="mb-3">
<label for="salary">Enter Salary</label>
<input type="text" id="salary" name="salary"
class="formcontrol" value="${[Link] }">
</div>
<button type ="submit" class="btn
btnprimary">Update</button>
</form>
</div>
</div>
</div>
</div>
</div>
<!-- Include Bootstrap JS and [Link] -->
<script
src="[Link]
d/[Link]" crossorigin="anonymous"></script>
<script
src="[Link]
[Link]" crossorigin="anonymous"></script>
</body>
</html>
[Link] package
[Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Repository
public class EmpDaoImpl implements EmpDao{
@Autowired
private HibernateTemplate hibernateTemplate;
@Transactional
public int saveEmp(Emp emp) {
int i = (Integer) [Link](emp);
return i;
public Emp getEmpById(int id) {
Emp emp = [Link]([Link],id);
return emp;
public List<Emp> getAllEmp() {
List<Emp> list=[Link]([Link]);
return list;
}
@Transactional public void
update(Emp emp) {
[Link](emp);
}
@Transactional
public void deleteEmp(int id) {
Emp emp = [Link]([Link], id);
[Link](emp)
}
[Link]
package [Link];
import [Link]; import
[Link]; import
[Link]; import
[Link]; import
[Link];
@Entity
@Table(name = "emp_dtls") public
class Emp {
@Id
@GeneratedValue(strategy = [Link]) private
int id;
private String fullname;
private String address;
private String email;
private String password;
private String designation;
private String salary;
public int getId() {
return id;
} public void setId(int id) {
[Link] = id;
public String getFullname() {
return fullname;
public void setFullname(String fullname) {
[Link] = fullname;
}
public String getAddress() {
return address;
public void setAddress(String address) {
[Link] = address;
}
public String getEmail() {
return email;
public void setEmail(String email) {
[Link] = email;
}
public String getPassword() {
return password;
public void setPassword(String password) {
[Link] = password;
}public String getDesignation() { return designation;
} public void setDesignation(String designation) {
[Link] = designation; }
public String getSalary() {
return salary;
}
public void setSalary(String salary) {
[Link] = salary;
}
public String toString() {
return "Emp [id=" + id + ", fullname=" + fullname + ",
address=" + address + ", email=" + email + ", password="
+ password + ", designation=" +
designation + ", salary=" + salary + "]";
Output :
Database output :
PLSQL QUERIES
USE VIEW :
USE FUNCTION :
TO GET THE EMPLOYEE DETAIL WITH THEIR ID.
USE STORED PROCEDURE : TO ADD EMPLOYEE
USE EXCEPTION
TO CHECK EMPLOYEE SALARY GREATER THAN 50000
USE EXPLICIT CURSOR
TO CHECK SALARY MORE THAN 20000.
SWOT analysis for the Employee Management System project:
Strengths
• User-friendly interface: The application features a responsive
and intuitive user interface built with Bootstrap, making it easy
for users to navigate and perform tasks.
• CRUD operations: The system allows users to perform Create,
Read, Update, and Delete operations on employee records,
providing comprehensive management capabilities.
• Database integration: The application is connected to a
MySQL or Oracle database, ensuring data persistence and efficient
retrieval.
• Session management: The system uses session management to
maintain user states, such as login status and user-specific
messages, enhancing the overall user experience.
• Error handling: The application includes comprehensive error
handling to manage exceptions gracefully, improving the overall
stability and reliability of the system.
Weaknesses
• Limited functionality: The current version of the system focuses
on basic CRUD operations and may lack advanced features like
employee performance tracking, attendance management, or
payroll integration.
• Dependency on external libraries: The project relies on several
external libraries and frameworks (e.g., Spring MVC, Hibernate),
which may introduce compatibility issues or require additional
maintenance.
• Lack of user roles and permissions: The system does not
differentiate between user roles (e.g., HR manager, employee)
and their respective permissions, which could lead to security
concerns or unauthorized access to sensitive data.
Opportunities
• Expanding functionality: The project can be extended to
include additional features like employee performance tracking,
attendance management, payroll integration, and reporting,
making it a more comprehensive solution for employee
management.
• Improving user experience: The application can be further
enhanced by incorporating user feedback, improving
navigation, and adding features that streamline common tasks
performed by HR professionals and managers.
• Integrating with other systems: The system can be integrated
with other enterprise applications, such as payroll software or
HR information systems, to create a more seamless and
efficient workflow.
Threats
• Competition from existing solutions: There are several
commercial and open-source employee management systems
available in the market, which may offer more features, better
performance, and larger user communities.
• Security vulnerabilities: If not properly secured, the application
may be susceptible to various security threat.