// Entity Classes
// Employee.java
package com.employee.entity;
import java.util.Date;
public class Employee {
private int employeeId;
private String firstName;
private String lastName;
private String employeeName;
private int employeeAge;
private Date dateOfBirth;
private String gender;
private String email;
private String phoneNo;
private Date hireDate;
private int departmentId;
// Constructors
public Employee() {}
public Employee(int employeeId, String firstName, String lastName, String
gender, String email) {
this.employeeId = employeeId;
this.firstName = firstName;
this.lastName = lastName;
this.employeeName = firstName + " " + lastName;
this.gender = gender;
this.email = email;
}
// Getters and Setters
public int getEmployeeId() {
return employeeId;
}
public void setEmployeeId(int employeeId) {
this.employeeId = employeeId;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
this.employeeName = this.firstName + " " + this.lastName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
this.employeeName = this.firstName + " " + this.lastName;
}
// Other getters and setters
public String getEmployeeName() {
return employeeName;
}
public int getEmployeeAge() {
return employeeAge;
}
public void setEmployeeAge(int employeeAge) {
this.employeeAge = employeeAge;
}
public Date getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(Date dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhoneNo() {
return phoneNo;
}
public void setPhoneNo(String phoneNo) {
this.phoneNo = phoneNo;
}
public Date getHireDate() {
return hireDate;
}
public void setHireDate(Date hireDate) {
this.hireDate = hireDate;
}
public int getDepartmentId() {
return departmentId;
}
public void setDepartmentId(int departmentId) {
this.departmentId = departmentId;
}
@Override
public String toString() {
return "Employee{" +
"employeeId=" + employeeId +
", name='" + employeeName + '\'' +
", email='" + email + '\'' +
", department=" + departmentId +
'}';
}
}
// Department.java
package com.employee.entity;
public class Department {
private int departmentId;
private String departmentName;
private double departmentBudget;
private double remainingBudget;
// Constructors
public Department() {}
public Department(int departmentId, String departmentName) {
this.departmentId = departmentId;
this.departmentName = departmentName;
}
// Getters and Setters
public int getDepartmentId() {
return departmentId;
}
public void setDepartmentId(int departmentId) {
this.departmentId = departmentId;
}
public String getDepartmentName() {
return departmentName;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
public double getDepartmentBudget() {
return departmentBudget;
}
public void setDepartmentBudget(double departmentBudget) {
this.departmentBudget = departmentBudget;
}
public double getRemainingBudget() {
return remainingBudget;
}
public void setRemainingBudget(double remainingBudget) {
this.remainingBudget = remainingBudget;
}
@Override
public String toString() {
return "Department{" +
"departmentId=" + departmentId +
", departmentName='" + departmentName + '\'' +
", budget=" + departmentBudget +
'}';
}
}
// DBUtil.java - Database Utility Class
package com.employee.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
private static final String URL =
"jdbc:mysql://localhost:3306/employee_management";
private static final String USERNAME = "root";
private static final String PASSWORD = "password"; // Change to your MySQL
password
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USERNAME, PASSWORD);
}
public static void closeConnection(Connection connection) {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
// EmployeeDAO.java - Data Access Object for Employee
package com.employee.dao;
import com.employee.entity.Employee;
import com.employee.util.DBUtil;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class EmployeeDAO {
public boolean addEmployee(Employee employee) {
String sql = "INSERT INTO Employee (Employee_ID, First_name, Last_name,
Employee_name, " +
"Employee_age, Date_of_birth, Gender, Email, Phone_NO,
Hire_date, Department_ID) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
try (Connection conn = DBUtil.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, employee.getEmployeeId());
pstmt.setString(2, employee.getFirstName());
pstmt.setString(3, employee.getLastName());
pstmt.setString(4, employee.getEmployeeName());
pstmt.setInt(5, employee.getEmployeeAge());
pstmt.setDate(6, new
java.sql.Date(employee.getDateOfBirth().getTime()));
pstmt.setString(7, employee.getGender());
pstmt.setString(8, employee.getEmail());
pstmt.setString(9, employee.getPhoneNo());
pstmt.setDate(10, new java.sql.Date(employee.getHireDate().getTime()));
pstmt.setInt(11, employee.getDepartmentId());
int rowsAffected = pstmt.executeUpdate();
return rowsAffected > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
public Employee getEmployeeById(int employeeId) {
String sql = "SELECT * FROM Employee WHERE Employee_ID = ?";
try (Connection conn = DBUtil.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, employeeId);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
Employee employee = new Employee();
employee.setEmployeeId(rs.getInt("Employee_ID"));
employee.setFirstName(rs.getString("First_name"));
employee.setLastName(rs.getString("Last_name"));
employee.setEmployeeAge(rs.getInt("Employee_age"));
employee.setDateOfBirth(rs.getDate("Date_of_birth"));
employee.setGender(rs.getString("Gender"));
employee.setEmail(rs.getString("Email"));
employee.setPhoneNo(rs.getString("Phone_NO"));
employee.setHireDate(rs.getDate("Hire_date"));
employee.setDepartmentId(rs.getInt("Department_ID"));
return employee;
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public List<Employee> getAllEmployees() {
List<Employee> employees = new ArrayList<>();
String sql = "SELECT * FROM Employee";
try (Connection conn = DBUtil.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
while (rs.next()) {
Employee employee = new Employee();
employee.setEmployeeId(rs.getInt("Employee_ID"));
employee.setFirstName(rs.getString("First_name"));
employee.setLastName(rs.getString("Last_name"));
employee.setEmployeeAge(rs.getInt("Employee_age"));
employee.setDateOfBirth(rs.getDate("Date_of_birth"));
employee.setGender(rs.getString("Gender"));
employee.setEmail(rs.getString("Email"));
employee.setPhoneNo(rs.getString("Phone_NO"));
employee.setHireDate(rs.getDate("Hire_date"));
employee.setDepartmentId(rs.getInt("Department_ID"));
employees.add(employee);
}
} catch (SQLException e) {
e.printStackTrace();
}
return employees;
}
public boolean updateEmployee(Employee employee) {
String sql = "UPDATE Employee SET First_name = ?, Last_name = ?,
Employee_name = ?, " +
"Employee_age = ?, Date_of_birth = ?, Gender = ?, Email = ?, "
+
"Phone_NO = ?, Hire_date = ?, Department_ID = ? WHERE
Employee_ID = ?";
try (Connection conn = DBUtil.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, employee.getFirstName());
pstmt.setString(2, employee.getLastName());
pstmt.setString(3, employee.getEmployeeName());
pstmt.setInt(4, employee.getEmployeeAge());
pstmt.setDate(5, new
java.sql.Date(employee.getDateOfBirth().getTime()));
pstmt.setString(6, employee.getGender());
pstmt.setString(7, employee.getEmail());
pstmt.setString(8, employee.getPhoneNo());
pstmt.setDate(9, new java.sql.Date(employee.getHireDate().getTime()));
pstmt.setInt(10, employee.getDepartmentId());
pstmt.setInt(11, employee.getEmployeeId());
int rowsAffected = pstmt.executeUpdate();
return rowsAffected > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
public boolean deleteEmployee(int employeeId) {
String sql = "DELETE FROM Employee WHERE Employee_ID = ?";
try (Connection conn = DBUtil.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, employeeId);
int rowsAffected = pstmt.executeUpdate();
return rowsAffected > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
public List<Employee> getEmployeesByDepartment(int departmentId) {
List<Employee> employees = new ArrayList<>();
String sql = "SELECT * FROM Employee WHERE Department_ID = ?";
try (Connection conn = DBUtil.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, departmentId);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
Employee employee = new Employee();
employee.setEmployeeId(rs.getInt("Employee_ID"));
employee.setFirstName(rs.getString("First_name"));
employee.setLastName(rs.getString("Last_name"));
employee.setEmployeeAge(rs.getInt("Employee_age"));
employee.setDateOfBirth(rs.getDate("Date_of_birth"));
employee.setGender(rs.getString("Gender"));
employee.setEmail(rs.getString("Email"));
employee.setPhoneNo(rs.getString("Phone_NO"));
employee.setHireDate(rs.getDate("Hire_date"));
employee.setDepartmentId(rs.getInt("Department_ID"));
employees.add(employee);
}
} catch (SQLException e) {
e.printStackTrace();
}
return employees;
}
}
// Main Application Class
package com.employee;
import com.employee.dao.EmployeeDAO;
import com.employee.entity.Employee;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
public class EmployeeManagementSystem {
private static Scanner scanner = new Scanner(System.in);
private static EmployeeDAO employeeDAO = new EmployeeDAO();
private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-
dd");
public static void main(String[] args) {
boolean exit = false;
while (!exit) {
System.out.println("\n===== Employee Management System =====");
System.out.println("1. Add Employee");
System.out.println("2. View Employee Details");
System.out.println("3. View All Employees");
System.out.println("4. Update Employee");
System.out.println("5. Delete Employee");
System.out.println("6. View Employees by Department");
System.out.println("0. Exit");
System.out.print("Enter your choice: ");
int choice = scanner.nextInt();
scanner.nextLine(); // Clear buffer
switch (choice) {
case 1:
addEmployee();
break;
case 2:
viewEmployeeDetails();
break;
case 3:
viewAllEmployees();
break;
case 4:
updateEmployee();
break;
case 5:
deleteEmployee();
break;
case 6:
viewEmployeesByDepartment();
break;
case 0:
exit = true;
System.out.println("Thank you for using Employee Management
System!");
break;
default:
System.out.println("Invalid choice. Please try again.");
}
}
}
private static void addEmployee() {
try {
Employee employee = new Employee();
System.out.print("Enter Employee ID: ");
employee.setEmployeeId(scanner.nextInt());
scanner.nextLine(); // Clear buffer
System.out.print("Enter First Name: ");
employee.setFirstName(scanner.nextLine());
System.out.print("Enter Last Name: ");
employee.setLastName(scanner.nextLine());
System.out.print("Enter Age: ");
employee.setEmployeeAge(scanner.nextInt());
scanner.nextLine(); // Clear buffer
System.out.print("Enter Date of Birth (yyyy-MM-dd): ");
String dobStr = scanner.nextLine();
Date dob = dateFormat.parse(dobStr);
employee.setDateOfBirth(dob);
System.out.print("Enter Gender (Male/Female/Other): ");
employee.setGender(scanner.nextLine());
System.out.print("Enter Email: ");
employee.setEmail(scanner.nextLine());
System.out.print("Enter Phone Number: ");
employee.setPhoneNo(scanner.nextLine());
System.out.print("Enter Hire Date (yyyy-MM-dd): ");
String hireDateStr = scanner.nextLine();
Date hireDate = dateFormat.parse(hireDateStr);
employee.setHireDate(hireDate);
System.out.print("Enter Department ID: ");
employee.setDepartmentId(scanner.nextInt());
scanner.nextLine(); // Clear buffer
boolean success = employeeDAO.addEmployee(employee);
if (success) {
System.out.println("Employee added successfully!");
} else {
System.out.println("Failed to add employee.");
}
} catch (ParseException e) {
System.out.println("Invalid date format. Please use yyyy-MM-dd
format.");
}
}
private static void viewEmployeeDetails() {
System.out.print("Enter Employee ID: ");
int employeeId = scanner.nextInt();
scanner.nextLine(); // Clear buffer
Employee employee = employeeDAO.getEmployeeById(employeeId);
if (employee != null) {
System.out.println("\n===== Employee Details =====");
System.out.println("ID: " + employee.getEmployeeId());
System.out.println("Name: " + employee.getEmployeeName());
System.out.println("Age: " + employee.getEmployeeAge());
System.out.println("Date of Birth: " +
dateFormat.format(employee.getDateOfBirth()));
System.out.println("Gender: " + employee.getGender());
System.out.println("Email: " + employee.getEmail());
System.out.println("Phone: " + employee.getPhoneNo());
System.out.println("Hire Date: " +
dateFormat.format(employee.getHireDate()));
System.out.println("Department ID: " + employee.getDepartmentId());
} else {
System.out.println("Employee not found.");
}
}
private static void viewAllEmployees() {
List<Employee> employees = employeeDAO.getAllEmployees();
if (employees.isEmpty()) {
System.out.println("No employees found.");
return;
}
System.out.println("\n===== All Employees =====");
System.out.printf("%-5s %-20s %-10s %-30s %-10s%n", "ID", "Name", "Gender",
"Email", "Dept ID");
System.out.println("-------------------------------------------------------------")
;
for (Employee employee : employees) {
System.out.printf("%-5d %-20s %-10s %-30s %-10d%n",
employee.getEmployeeId(),
employee.getEmployeeName(),
employee.getGender(),
employee.getEmail(),
employee.getDepartmentId());
}
}
private static void updateEmployee() {
System.out.print("Enter Employee ID to update: ");
int employeeId = scanner.nextInt();
scanner.nextLine(); // Clear buffer
Employee employee = employeeDAO.getEmployeeById(employeeId);
if (employee == null) {
System.out.println("Employee not found.");
return;
}
try {
System.out.print("Enter First Name (current: " +
employee.getFirstName() + "): ");
String firstName = scanner.nextLine();
if (!firstName.isEmpty()) {
employee.setFirstName(firstName);
}
System.out.print("Enter Last Name (current: " + employee.getLastName()
+ "): ");
String lastName = scanner.nextLine();
if (!lastName.isEmpty()) {
employee.setLastName(lastName);
}
System.out.print("Enter Age (current: " + employee.getEmployeeAge() +
"): ");
String ageStr = scanner.nextLine();
if (!ageStr.isEmpty()) {
employee.setEmployeeAge(Integer.parseInt(ageStr));
}
System.out.print("Enter Email (current: " + employee.getEmail() + "):
");
String email = scanner.nextLine();
if (!email.isEmpty()) {
employee.setEmail(email);
}
System.out.print("Enter Phone Number (current: " +
employee.getPhoneNo() + "): ");
String phone = scanner.nextLine();
if (!phone.isEmpty()) {
employee.setPhoneNo(phone);
}
System.out.print("Enter Department ID (current: " +
employee.getDepartmentId() + "): ");
String deptIdStr = scanner.nextLine();
if (!deptIdStr.isEmpty()) {
employee.setDepartmentId(Integer.parseInt(deptIdStr));
}
boolean success = employeeDAO.updateEmployee(employee);
if (success) {
System.out.println("Employee updated successfully!");
} else {
System.out.println("Failed to update employee.");
}
} catch (NumberFormatException e) {
System.out.println("Invalid number format.");
}
}
private static void deleteEmployee() {
System.out.print("Enter Employee ID to delete: ");
int employeeId = scanner.nextInt();
scanner.nextLine(); // Clear buffer
System.out.print("Are you sure you want to delete this employee? (y/n): ");
String confirm = scanner.nextLine();
if (confirm.equalsIgnoreCase("y")) {
boolean success = employeeDAO.deleteEmployee(employeeId);
if (success) {
System.out.println("Employee deleted successfully!");
} else {
System.out.println("Failed to delete employee.");
}
} else {
System.out.println("Deletion cancelled.");
}
}
private static void viewEmployeesByDepartment() {
System.out.print("Enter Department ID: ");
int departmentId = scanner.nextInt();
scanner.nextLine(); // Clear buffer
List<Employee> employees =
employeeDAO.getEmployeesByDepartment(departmentId);
if (employees.isEmpty()) {
System.out.println("No employees found in this department.");
return;
}
System.out.println("\n===== Employees in Department " + departmentId + "
=====");
System.out.printf("%-5s %-20s %-10s %-30s%n", "ID", "Name", "Gender",
"Email");
System.out.println("-------------------------------------------------------------")
;
for (Employee employee : employees) {
System.out.printf("%-5d %-20s %-10s %-30s%n",
employee.getEmployeeId(),
employee.getEmployeeName(),
employee.getGender(),
employee.getEmail());
}
}
}