思路拓展:
1.创建实体类(entity)
2.创建数据源(EmployeeDataSource)
3.创建数据访问层(Data Access Object)
4.创建服务层(Service)
5.创建控制层(Controller)
思路具体的实现:
1.数据源调实体类,然后把数据存放到集合中,因为我们没有数据库,只能用集合充当数据库。
2.数据访问层调用数据源,充当它的数据访问对象。
3.服务层调用数据访问层,因为服务层是业务类。
4.控制层调用服务层,因为每一个控制器是由若干个业务逻辑组成的。
使用SpringMVC框架实现的好处:
1.可以提高代码的重用性和维护性
2.框架搭建好之后可以快速的进行操作
3.层次分明,一目了然
4.可以大大的减少实现员工管理系统的时间
----------------------------------------------------------------------------------------
1.实体类包(entity)
package cn.axukt.empsys.lesson2.entity;
public class Employee {
private String empId;
private String empName;
private String gender;
private int age;
private String homeTown;
private double salary;
public Employee() {
}
public Employee(String empId, String empName, String gender, int age, String homeTown, double salary) {
this.empId = empId;
this.empName = empName;
this.gender = gender;
this.age = age;
this.homeTown = homeTown;
this.salary = salary;
}
public String getEmpId() {
return empId;
}
public void setEmpId(String empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getHomeTown() {
return homeTown;
}
public void setHomeTown(String homeTown) {
this.homeTown = homeTown;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
public class Account {
private String id;
private String userName;
private String passWord;
public Account() {
}
public Account(String id, String userName, String passWord) {
this.id = id;
this.userName = userName;
this.passWord = passWord;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
----------------------------------------------------------------------------------------
2.数据包(data)
package cn.axukt.empsys.lesson2.data;
import cn.axukt.empsys.lesson2.entity.Account;
import cn.axukt.empsys.lesson2.entity.Employee;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class EmployeeDataSource {
//创建员工数据源
static List<Employee> list=new ArrayList<Employee>();
//初始化员工数据源
public static List<Employee> initEmployeeDataSource(){
list.add(new Employee("tst2005010001","王明","男",26,"河南省许昌市",6000));
list.add(new Employee("tst2005020006","张馨予","男",27,"河南省平顶山市",5800));
return list;
}
//创建账户数据源
static Map<String, Account> map=new HashMap<String, Account>();
//初始化账户数据源
public static Map<String,Account> initAccountDataSource(){
map.put("",new Account("123123123113","ROSE","1005"));
map.put("",new Account("13123123123","Jay","123"));
return map;
}
}
3.数据访问层(dao)
package cn.axukt.empsys.lesson2.dao;
import cn.axukt.empsys.lesson2.entity.Employee;
import java.util.List;
public interface EmployeeDao {
//查询所有员工信息
public List<Employee> queryEmployeeList();
//添加员工
public void addEmployee(Employee employee);
//根据empId删除员工
public void deleteEmployee(String empId);
//根据empId修改员工信息
public void modifyEmployeeInfo(Employee employee);
//根据empId查询相应的员工信息
public Employee queryEmployeeInfo(String empId);
}
public interface AccountDao {
//验证用户是否合法
public boolean verifyUser(String userName,String passWord);
}
实现类(impl)
package cn.axukt.empsys.lesson2.dao.impl;
import cn.axukt.empsys.lesson2.dao.EmployeeDao;
import cn.axukt.empsys.lesson2.data.EmployeeDataSource;
import cn.axukt.empsys.lesson2.entity.Employee;
import java.util.ArrayList;
import java.util.List;
public class EmpDaoImp implements EmployeeDao {
//注入员工数据源
List<Employee>list=new ArrayList<Employee>();
//初始化员工数据源
public EmpDaoImp(){
list = EmployeeDataSource.initEmployeeDataSource();
}
@Override
public List<Employee> queryEmployeeList() {
return list;
}
@Override
public void addEmployee(Employee employee) {
list.add(employee);
}
@Override
public void deleteEmployee(String empId) {
for (Employee e:list) {
if (empId.equals(e.getEmpId())){
list.remove(e);
}
}
}
@Override
public void modifyEmployeeInfo(Employee employee) {
employee=null;
for (Employee e:list) {
if (employee.getEmpId().equals(e.getEmpId())){
employee=e;
}
}
}
@Override
public Employee queryEmployeeInfo(String empId) {
Employee employee=null;
for (Employee e:list) {
if (empId.equals(e.getEmpId())){
employee=e;
}
}
return employee;
}
}
package cn.axukt.empsys.lesson2.dao.impl;
import cn.axukt.empsys.lesson2.dao.AccountDao;
import cn.axukt.empsys.lesson2.data.EmployeeDataSource;
import cn.axukt.empsys.lesson2.entity.Account;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class AccountDaoImp implements AccountDao {
//注入数据源
Map<String, Account> map=new HashMap<String, Account>();
//初始化账户数据源
public AccountDaoImp(){
map=EmployeeDataSource.initAccountDataSource();
}
@Override
public boolean verifyUser(String userName, String passWord) {
Account account=new Account();
//判断标识
boolean flag=false;
Set<Map.Entry<String, Account>> entries = map.entrySet();
for (Map.Entry<String, Account> entry:entries) {
Account value = entry.getValue();
System.out.println(value);
}
if (userName.equals(account.getUserName())&&passWord.equals(account.getPassWord())){
//返回合法
return flag=true;
}
return false;
}
}
----------------------------------------------------------------------------------------
4.服务层(Service)
package cn.axukt.empsys.lesson2.service;
import cn.axukt.empsys.lesson2.entity.Employee;
import java.util.List;
public interface EmployeeService {
//查询所有员工信息
public void queryEmployeeList();
//添加员工信息
public void addEmployee(Employee employee);
//根据empId删除员工信息
public void deleteEmployee(String empId);
//根据empId修改员工信息
public void modifyEmployee(Employee employee);
//根据empID员工编号查询员工信息
public void queryEmployee(String empId);
}
public interface AccountService {
//验证用户是否合法
public boolean verifyUser(String userName,String passWord);
}
实现类(impl)
package cn.axukt.empsys.lesson2.service.impl;
import cn.axukt.empsys.lesson2.dao.EmployeeDao;
import cn.axukt.empsys.lesson2.dao.impl.EmpDaoImp;
import cn.axukt.empsys.lesson2.service.EmployeeService;
import cn.axukt.empsys.lesson2.entity.Employee;
import java.util.List;
public class EmployeeServiceImp implements EmployeeService {
//定义一个数据库访问对象EmployeeDao的实现类
EmployeeDao employeeDao=new EmpDaoImp();
@Override
public void queryEmployeeList() {
//获取所有员工的信息
List<Employee> empList=employeeDao.queryEmployeeList();
System.out.println("\t\t【编号】\t\t【姓名】\t\t【性别】\t\t【年龄】\t\t【籍贯】\t【薪资】");
//按照指定格式进行遍历
for (Employee e:empList) {
System.out.println("\t\t"+e.getEmpId()+"\t"+e.getEmpName()+"\t\t"+e.getGender()+"\t\t"+e.getAge()+"\t\t"+e.getHomeTown()+"\t"+e.getSalary()+"\n");
}
}
@Override
public void addEmployee(Employee employee) {
employeeDao.addEmployee(employee);
}
//根据empId删除对应的员工信息
@Override
public void deleteEmployee(String empId) {
employeeDao.deleteEmployee(empId);
}
//根据empId修改对应的员工信息
@Override
public void modifyEmployee(Employee employee) {
employeeDao.modifyEmployeeInfo(employee);
}
//根据输入的empId查询相应的员工信息
@Override
public void queryEmployee(String empId) {
//根据empId获取相应的员工信息
Employee employee = employeeDao.queryEmployeeInfo(empId);
System.out.println("\t\t【编号】\t\t\t【姓名】\t\t【性别】\t【年龄】\t\t【籍贯】\t\t【薪资】");
System.out.println("\t\t"+employee.getEmpId()+"\t"+employee.getEmpName()+"\t\t"+employee.getGender()+"\t\t"+employee.getAge()+"\t\t"+employee.getHomeTown()+"\t"+employee.getSalary()+"\n");
}
}
package cn.axukt.empsys.lesson2.service.impl;
import cn.axukt.empsys.lesson2.dao.AccountDao;
import cn.axukt.empsys.lesson2.dao.impl.AccountDaoImp;
import cn.axukt.empsys.lesson2.service.AccountService;
public class AccountServiceImp implements AccountService {
//定义一个数据库访问对象AccountDaoImp
AccountDao accountDao=new AccountDaoImp();
@Override
public boolean verifyUser(String userName, String passWord) {
return accountDao.verifyUser(userName,passWord);
}
}
----------------------------------------------------------------------------------------
5.控制层(Controller)
package cn.axukt.empsys.lesson2.controller;
import cn.axukt.empsys.lesson2.entity.Employee;
import cn.axukt.empsys.lesson2.service.AccountService;
import cn.axukt.empsys.lesson2.service.EmployeeService;
import cn.axukt.empsys.lesson2.service.impl.AccountServiceImp;
import cn.axukt.empsys.lesson2.service.impl.EmployeeServiceImp;
import java.util.ConcurrentModificationException;
import java.util.Scanner;
public class Console {
//创建一个Employee业务类的实现类
EmployeeService employeeService=new EmployeeServiceImp();
public void setMainMenu(){
System.out.println("\t\t操作码\t操作名称");
System.out.println("\t\t1------添加员工");
System.out.println("\t\t2------删除员工");
System.out.println("\t\t3------修改员工");
System.out.println("\t\t4------查询员工");
System.out.println("\t\t5------退出系统");
}
//启动程序
public void run() {
Scanner sc = new Scanner(System.in);
//登录验证
//创建一个Account的业务类的实现类
AccountService accountService = new AccountServiceImp();
System.out.println("请输入账户名称:");
String userName = sc.next();
System.out.println("请输入密码:");
String passWord = sc.next();
if (accountService.verifyUser(userName, passWord))
System.out.println("此用户合法");
//显示系统主菜单
System.out.println("************************欢迎登录员工信息管理系统**********************************");
setMainMenu();
System.out.println("请输入操作码:【提示:必须是数字,如:1】---4");
employeeService.queryEmployeeList();
//定义一个操作码
String opCode = sc.next();
//判断输入的这个操作码对应的是什么操作
while (!"5".equals(opCode)) {
if ("1".equals(opCode)) {
System.out.println("编号:");
String empId = sc.next();
System.out.println("姓名:");
String empName = sc.next();
System.out.println("性别:");
String empGender = sc.next();
System.out.println("年龄:");
int empAge = sc.nextInt();
System.out.println("籍贯:");
String homeTown = sc.next();
System.out.println("薪资:");
double salary = sc.nextDouble();
//封装成对象
Employee employee = new Employee(empId, empName, empGender, empAge, homeTown, salary);
//调用添加员工的业务类的实现类
employeeService.addEmployee(employee);
System.out.println("\t\t操作码\t操作名称");
System.out.println("\t\t1------继续添加");
System.out.println("\t\t2------返回上级菜单");
System.out.print("请输入操作码:【提示:必须是数字,如:1】---");
opCode = sc.next();
if ("1".equals(opCode)) {
continue;
}else if ("2".equals(opCode)){
setMainMenu();
System.out.print("请输入操作码:【提示:必须是数字,如:1】---");
opCode=sc.next();
}
}
if ("2".equals(opCode)) {
System.out.println("请输入要删除的员工对应的员工编号:");
String empIdOne = sc.next();
System.out.println("你是否确认要删除(y/n):");
String keyboardConfirmOne = sc.next();
if ("y".equalsIgnoreCase(keyboardConfirmOne)) {
//调用删除员工的业务类的实现类
try {
employeeService.deleteEmployee(empIdOne);
System.out.println("删除成功!!!员工列表如下:");
employeeService.queryEmployeeList();
} catch (ConcurrentModificationException e) {
e.getStackTrace();
} finally {
employeeService.deleteEmployee(empIdOne);
System.out.println("删除成功!!!员工列表如下:");
employeeService.queryEmployeeList();
}
System.out.println("\t\t操作码\t操作名称");
System.out.println("\t\t1-------继续删除");
System.out.println("\t\t2-------返回上级菜单");
System.out.print("请输入操作码:【提示:必须是数字,如:1】---");
opCode = sc.next();
if ("1".equals(opCode)) {
continue;
} else if ("2".equals(opCode)) {
setMainMenu();
System.out.print("请输入操作码:【提示:必须是数字,如:1】---");
opCode=sc.next();
}
} else if ("n".equalsIgnoreCase(keyboardConfirmOne)) {
setMainMenu();
System.out.println("请输入操作码:【提示:必须是数字,如:1】---");
opCode=sc.next();
}
}
if ("3".equals(opCode)) {
System.out.println("请输入你要修改的员工对应的员工编号:");
String empIdTwo = sc.next();
System.out.println("员工姓名:");
String empNameTwo = sc.next();
System.out.println("员工性别:");
String empGenderTwo = sc.next();
System.out.println("员工年龄:");
int empAgeTwo = sc.nextInt();
System.out.println("员工籍贯:");
String homeTownTwo = sc.next();
System.out.println("员工薪资:");
double salaryTwo = sc.nextDouble();
//调用修改员工的业务类的实现类
employeeService.modifyEmployee(new Employee(empIdTwo, empNameTwo, empGenderTwo, empAgeTwo, homeTownTwo, salaryTwo));
employeeService.queryEmployeeList();
setMainMenu();
System.out.print("请输入操作码:【提示:必须是数字,如:1】---");
opCode=sc.next();
}
if ("4".equals(opCode)) {
System.out.println("请输入你要查询的员工对应的员工编码:");
String empIdThree = sc.next();
//调用查询员工的业务类的实现类
employeeService.queryEmployee(empIdThree);
setMainMenu();
System.out.print("请输入操作码:【提示:必须是数字,如:1】---");
opCode=sc.next();
}
}
System.out.println("你已成功退出程序!!!");
}
public static void main(String[] args) {
Console console=new Console();
console.setMainMenu();
console.run();
}
}
使用SpringMVC框架实现员工管理系统
于 2022-04-03 10:20:01 首次发布
该博客详细介绍了如何使用SpringMVC框架构建一个简单的员工管理系统,包括创建实体类、数据源、数据访问层、服务层和控制层。通过模拟数据展示了各层之间的交互,实现了员工信息的增删改查功能,并阐述了SpringMVC框架带来的好处,如代码复用、快速开发等。
摘要由CSDN通过智能技术生成