其他分享
首页 > 其他分享> > 2021-07-30

2021-07-30

作者:互联网

任务要求 idea jdk1.8 三层结构的任务管理系统可以实现登录,判断登录用户权限等操作

任务管理系统

一、系统需求

查询所有任务信息:展示所有任务信息

录入任务信息:

开始任务

提示用户输入任务编号

将任务的状态改为进行中

完成任务

提示用户输入任务编号

将任务的状态改为已完成, 同时将 finishDate 设置为当前系统时间

二、任务信息

编号 id , 任务名 name,预计完成时间 deadLine ,完成时间 finishDate , 状态: 进行中、已完成、未开始,责任人:worker

三、升级

不做强制要求

难度: ⭐⭐⭐⭐⭐

添加一个登录功能:

运行系统,

**** 欢迎使用 xxx 系统 ****

请登录

请输入账户:xxx

请输入密码:xxx

1、登录失败

用户名密码错误!

**** 欢迎使用 xxx 系统 ****

请登录

请输入账户:xxx

请输入密码:xxx

2、登录成功

欢迎您:昵称

原始菜单: 用户类User: nickname, loginname,password , role

如果role = 1: 超级管理员,能看到所有菜单

如果role = 0:普通用户: 看不到添加菜单

3、查询任务

普通用户只能查到自己的任务

超管能查到所有用户的任务

任务类中,应该多一个用户id字段

4、退出

实体类-Task(任务信息)

package cn.kgc.bms.entity;

import java.util.Date;
import java.util.Objects;

public class Task {
    private int id;
    private String name;
    private Date deadLine;
    private Date finishDate;
    private String state;
    private String worker;

    public Task(String state) {
        this.state = state;
    }

    public Task(int id, String name, Date deadLine, Date finishDate, String state, String worker) {
        this.id = id;
        this.name = name;
        this.deadLine = deadLine;
        this.finishDate = finishDate;
        this.state = state;
        this.worker = worker;
    }

    public Task(String name, Date deadLine, Date finishDate, String state, String worker) {
        this.name = name;
        this.deadLine = deadLine;
        this.finishDate = finishDate;
        this.state = state;
        this.worker = worker;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Task task = (Task) o;
        return id == task.id;
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }

    @Override
    public String toString() {
        return id+"\t"+name+"\t"+deadLine+"\t"+finishDate+"\t"+state+"\t"+worker;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getDeadLine() {
        return deadLine;
    }

    public void setDeadLine(Date deadLine) {
        this.deadLine = deadLine;
    }

    public Date getFinishDate() {
        return finishDate;
    }

    public void setFinishDate(Date finishDate) {
        this.finishDate = finishDate;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public String getWorker() {
        return worker;
    }

    public void setWorker(String worker) {
        this.worker = worker;
    }

    public Task() {
    }
}

实体类-User(用户信息)

package cn.kgc.bms.entity;

public class User {
    private String nickName;
    private String loginName;
    private String password;
    private int role;

    public User() {
    }

    public User(String loginName, String password) {
        this.loginName = loginName;
        this.password = password;
    }

    public User(String nickName, String loginName, String password, int role) {
        this.nickName = nickName;
        this.loginName = loginName;
        this.password = password;
        this.role = role;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public String getLoginName() {
        return loginName;
    }

    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getRole() {
        return role;
    }

    public void setRole(int role) {
        this.role = role;
    }
}

工具包-DateUtil

package cn.kgc.bms.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtil {
    private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";

    /**
     * 获取当前的系统时间
     * @return 系统时间
     */
    public static Date currentDate(){
        return new Date();
    }

    /**
     * 将 date 格式的字符串转换为一个日期对象
     * @param dateStr  date 格式的字符串
     * @param pattern  日期字符串的格式
     * @return 日期对象
     */
    public static Date str2Date(String dateStr,String pattern) {
        try {
            SimpleDateFormat sf = new SimpleDateFormat(pattern);
            return sf.parse(dateStr);
        } catch (ParseException e) {
            throw new RuntimeException("字符串转换日期出错,字符串:" + dateStr+",格式为:" + pattern,e);
        }
    }

    /**
     * 将 date 格式的字符串转换为一个日期对象
     * 使用默认的格式: yyyy-MM-dd HH:mm:ss
     * @param dateStr  date 格式的字符串
     * @return 日期对象
     */
    public static Date str2Date(String dateStr) {
        return str2Date(dateStr,DEFAULT_PATTERN);
    }

    /**
     * 将日期转为字符串
     * @param date      日期
     * @param pattern   日期格式
     * @return 转换后的字符串
     */
    public static String date2String( Date date , String pattern){
        SimpleDateFormat sf= new SimpleDateFormat(pattern);
        return sf.format(date);
    }

    /**
     * 将日期转为字符串
     * 使用默认的格式: yyyy-MM-dd HH:mm:ss
     * @param date      日期
     * @return 转换后的字符串
     */
    public static String date2String(Date date){
        return date2String(date,DEFAULT_PATTERN);
    }

    /**
     * 获取当前系统时间的下一天的日期
     * @return 日期对象
     */
    public static Date getNextDay(){
        return getNextDay(currentDate(),1);
    }

    /**
     * 获取特定日期的下一天
     * @param oriDate 某个日期
     * @return 下一天的日期
     */
    public static Date getNextDay(Date oriDate){
        return getNextDay(oriDate,1);
    }

    /**
     * 获取指定日期的指定天数后的日期
     * @param oriDate 原始日期
     * @param amount  天数
     * @return 新日期
     */
    public static Date getNextDay(Date oriDate,int amount){
        Calendar c = Calendar.getInstance();
        c.setTime(oriDate);
        c.add(Calendar.DAY_OF_MONTH,amount);
        return c.getTime();
    }

    /**
     * 获取当前系统日期的指定天数后的日期
     * @param amount  天数
     * @return 新日期
     */
    public static Date getNextDay(int amount){
        return getNextDay(currentDate(),amount);
    }

    /**
     * 获取年份
     * @param date 日期
     * @return 年份
     */
    public static Integer getYear(Date date){
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        return c.get(Calendar.YEAR);
    }

    /**
     * 获取月份
     * @param date 日期
     * @return 月份
     */
    public static Integer getMonth(Date date){
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        return c.get(Calendar.MONTH) + 1;
    }

    /**
     * 获取日期
     * @param date 日期
     * @return 日期
     */
    public static Integer getDate(Date date){
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        return c.get(Calendar.DAY_OF_MONTH);
    }

    /**
     * 获取小时
     * @param date 日期
     * @return 小时
     */
    public static Integer getHour(Date date){
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        return c.get(Calendar.HOUR_OF_DAY);

    }

    /**
     * 获取分钟
     * @param date 日期
     * @return 分钟
     */
    public static Integer getMinute(Date date){
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        return c.get(Calendar.MINUTE);
    }
    /**
     * 获取秒数
     * @param date 日期
     * @return 秒数
     */
    public static Integer getSecond(Date date){
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        return c.get(Calendar.SECOND);
    }


    /**
     * 获取两个日期相差的天数: 精确到秒
     * @param startDate 起始日期  7.22 15
     * @param endDate 终止日期    7.24 16
     * @return 天数
     */
    public static Integer getDurationWithSecond(Date startDate,Date endDate){
        int duration = 0;
        while (startDate.before(endDate)){
            startDate =  getNextDay(startDate);
            duration++;
        }
        return duration;
    }

    /**
     * 获取两个日期相差的天数: 精确到天
     * @param startDate 起始日期  7.22 13
     * @param endDate 终止日期    7.24 15
     * @return 天数
     */
    public static Integer getDurationWithDay(Date startDate,Date endDate){
        Calendar start = Calendar.getInstance();
        Calendar end = Calendar.getInstance();
        clearTime(start);
        clearTime(end);
        return getDurationWithSecond(start.getTime(),end.getTime());
    }

    /**
     * 获取一个日期
     * @param year  年
     * @param month 月
     * @param day   日
     * @return
     */
    public static Date getDate(int year,int month,int day){
        Calendar c = Calendar.getInstance();
        c.set(year, month-1, day,0,0,0);
        return c.getTime();
    }

    /**
     * 获取一个日期
     * @param year   年
     * @param month  月
     * @param day    日
     * @param hour   时
     * @param minute 分
     * @param second 秒
     * @return
     */
    public static Date getDate(int year,int month,int day,int hour,int minute,int second){
        Calendar c = Calendar.getInstance();
        c.set(year, month-1, day, hour, minute, second);
        return c.getTime();
    }

    private static void clearTime(Calendar calendar){
        calendar.set(Calendar.HOUR,0);
        calendar.set(Calendar.MINUTE,0);
        calendar.set(Calendar.SECOND,0);
    }

}

接口类-TaskMapper

package cn.kgc.bms.mapper;

import cn.kgc.bms.entity.Task;

import java.util.List;

public interface TaskMapper {
    List<Task> selectAll();
    void insert(Task task);
    void begin(int id);
    void complete(int id);
    List<Task> selectName(String name);
}

接口类-UserMapper

package cn.kgc.bms.mapper;

import cn.kgc.bms.entity.User;

import java.util.List;

public interface UserMapper {
    User login(String loginName, String passWord);
}

接口类-TaskService

package cn.kgc.bms.service;

import cn.kgc.bms.entity.Task;

import java.util.List;

public interface TaskService {
    List<Task> selectAll();
    void insert(Task task);
    void begin(int id);
    void complete(int id);
    List<Task> selectName(String name);
}

接口类-UserService

package cn.kgc.bms.service;

import cn.kgc.bms.entity.User;

public interface UserService {
    User login(String loginName, String passWord);

}

实现类-TaskMapperImpl

package cn.kgc.bms.mapper.impl;

import cn.kgc.bms.entity.Task;
import cn.kgc.bms.mapper.TaskMapper;
import cn.kgc.bms.util.DateUtil;
import sun.security.timestamp.TSRequest;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class TaskMapperImpl implements TaskMapper {
    private Integer i =6;
    private List<Task> taskList = new ArrayList<>();
    private Date date = new Date(0);

    public TaskMapperImpl() {
        taskList.add(new Task(1,"打扫卫生",null,date,"未开始","狗蛋"));
        taskList.add(new Task(2,"搬凳子",null,date,"未开始","叮当"));
        taskList.add(new Task(3,"擦窗户",null,date,"未开始","张三"));
        taskList.add(new Task(4,"擦车",null,date,"未开始","HGG"));
        taskList.add(new Task(5,"吃饭",null,date,"未开始","HGG"));
    }

    @Override
    public List<Task> selectAll() {
        return this.taskList;
    }

    @Override
    public void insert(Task task) {
        task.setId(i++);
        taskList.add(task);
    }

    @Override
    public void begin(int id) {
        for (int j = 0; j < taskList.size(); j++) {
            Task taskBegin = taskList.get(j);
            if (taskBegin.getId() == id){
                taskList.get(j).setState("进行中");
            }
        }
    }

    @Override
    public void complete(int id) {
        for (int j = 0; j < taskList.size(); j++) {
            Task taskComplete = taskList.get(j);
            if (taskComplete.getId() == id){
                Date dateNow = new Date();
                taskList.get(j).setState("已完成");
                taskList.get(j).setDeadLine(dateNow);
            }
        }
    }

    @Override
    public List<Task> selectName(String name) {
        List<Task> findNameList = new ArrayList<>();
        for (int i = 0; i < taskList.size(); i++) {
            if (taskList.get(i).getWorker().equals(name)){
                findNameList.add(taskList.get(i));
            }
        }
        return findNameList;
    }
}

实现类-UserMapperImpl

package cn.kgc.bms.mapper.impl;

import cn.kgc.bms.entity.User;
import cn.kgc.bms.mapper.UserMapper;
import sun.dc.pr.PRError;

import java.util.ArrayList;
import java.util.List;

public class UserMapperImpl implements UserMapper {
    private List<User> userList = new ArrayList<>();
    public UserMapperImpl() {
        userList.add(new User("HGG","a","a",1));
        userList.add(new User("超级管理员","b","b",0));
    }

    @Override
    public User login(String loginName, String passWord) {
        for (int i = 0; i < userList.size(); i++) {
            if (userList.get(i).getLoginName().equals(loginName) && userList.get(i).getPassword().equals(passWord)){
                return userList.get(i);
            }
        }
        return null;
    }


}

实现类-TaskServiceImpl

package cn.kgc.bms.service.impl;

import cn.kgc.bms.entity.Task;
import cn.kgc.bms.factory.ObjectFactory;
import cn.kgc.bms.mapper.TaskMapper;
import cn.kgc.bms.service.TaskService;

import java.util.List;

public class TaskServiceImpl implements TaskService {
    private TaskMapper taskMapper = ObjectFactory.getBean(TaskMapper.class);
    @Override
    public List<Task> selectAll() {
        return taskMapper.selectAll();
    }

    @Override
    public void insert(Task task) {
        taskMapper.insert(task);
    }

    @Override
    public void begin(int id) {
        taskMapper.begin(id);
    }

    @Override
    public void complete(int id) {
        taskMapper.complete(id);
    }

    @Override
    public List<Task> selectName(String name) {
        return taskMapper.selectName(name);
    }
}

实现类-UserServiceImpl

package cn.kgc.bms.service.impl;

import cn.kgc.bms.entity.User;
import cn.kgc.bms.factory.ObjectFactory;
import cn.kgc.bms.mapper.UserMapper;
import cn.kgc.bms.service.UserService;

public class UserServiceImpl implements UserService {
    UserMapper userMapper = ObjectFactory.getBean(UserMapper.class);
    @Override
    public User login(String loginName, String passWord) {
        return userMapper.login(loginName,passWord);
    }
}

工厂类-ObjectFactory

package cn.kgc.bms.factory;

import cn.kgc.bms.entity.Task;
import cn.kgc.bms.mapper.TaskMapper;
import cn.kgc.bms.mapper.UserMapper;
import cn.kgc.bms.mapper.impl.TaskMapperImpl;
import cn.kgc.bms.mapper.impl.UserMapperImpl;
import cn.kgc.bms.service.TaskService;
import cn.kgc.bms.service.UserService;
import cn.kgc.bms.service.impl.TaskServiceImpl;
import cn.kgc.bms.service.impl.UserServiceImpl;

import java.util.HashMap;
import java.util.Map;

public class ObjectFactory {
    private static Map<Class,Object> objects;

    static {
        // 初始化map
        objects =  new HashMap<>();
        // 将所有的对象全部放到map中
        objects.put(TaskMapper.class,new TaskMapperImpl());
        objects.put(TaskService.class,new TaskServiceImpl());
        objects.put(UserMapper.class,new UserMapperImpl());
        objects.put(UserService.class,new UserServiceImpl());
    }

    public static <T> T getBean(Class<T> cls){
        return (T)objects.get(cls);
    }
}

输入输出层-UserController

package cn.kgc.bms.controller;

import cn.kgc.bms.entity.Task;
import cn.kgc.bms.entity.User;
import cn.kgc.bms.factory.ObjectFactory;
import cn.kgc.bms.service.TaskService;
import cn.kgc.bms.service.UserService;
import cn.kgc.bms.util.DateUtil;
import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
import sun.security.timestamp.TSRequest;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

public class TaskController {
    private UserService userService = ObjectFactory.getBean(UserService.class);
    private TaskService taskService = ObjectFactory.getBean(TaskService.class);
    private Scanner sc = new Scanner(System.in);
    private int role = 0;
    private String name = null;
    public void run(){
        while (true){
            login();
            if (role == 0){
                role0();
            }
            if (role == 1){
                role1();
            }

        }
    }

    private void role0() {
        while (true){
                printMenu();
                int chioce = sc.nextInt();
                if (chioce == 1){
                    findAll();
                }
                if (chioce == 2){
                    insert();
                }
                if (chioce == 3){
                    begin();
                }
                if (chioce == 4){
                    complete();
                }
                if (chioce == 5){
                    System.out.println("再见");
                    break;
                }
        }
    }

    private void role1() {
        while (true){
            printMenuPuTong();
            int choice = sc.nextInt();
            if (choice == 1){
                findName();
            }
            if (choice == 2){
                begin();
            }
            if (choice == 3){
                complete();
            }
            if (choice == 4){
                System.out.println("再见");
                break;
            }
        }
    }

    private void findName() {
        List<Task> findNameList =taskService.selectName(name);
        findNameList.forEach(System.out::println);
    }

    private void printMenuPuTong() {
        System.out.println("您好,"+name);
        System.out.println("1.查询");
        System.out.println("2.开始任务");
        System.out.println("3.完成任务");
        System.out.println("4.退出登录");
        System.out.println("请选择...");
    }

    private void login() {
        while (true){
            System.out.println("****欢迎使用本系统****");
            System.out.println("请登录:");
            System.out.println("请输入用户名");
            String loginName = sc.next();
            System.out.println("请输入密码");
            String passWord = sc.next();
            User user = userService.login(loginName,passWord);
            if (user == null){
                System.out.println("账户或者密码不对!");
            }else {
                System.out.println("登录成功");
                role = user.getRole();
                name = user.getNickName();
                break;
            }
        }

    }


    private void complete() {
        System.out.println("请输入id:");
        int id = sc.nextInt();
        taskService.complete(id);
        System.out.println("状态已经更改为“已完成”");
    }

    private void begin() {
        System.out.println("请输入id:");
        int id = sc.nextInt();
        taskService.begin(id);
        System.out.println("状态已经更改为“进行中”");
    }

    private void insert() {
        System.out.println("请输入任务名");
        String name = sc.next();
        System.out.println("请输入预计完成时间,格式:yyyy-MM--dd");
        Date deadLine  = DateUtil.str2Date(sc.next(),"yyyy-MM-dd");
        System.out.println("请输入责任人");
        String worker = sc.next();
        Task taskInsert = new Task(name,null,deadLine,"未开始",worker);
        taskService.insert(taskInsert);
        System.out.println("添加成功");
    }

    private void findAll() {
        List<Task> taskList = taskService.selectAll();
        System.out.println("编号        任务名      完成时间      预计完成时间          状态         责任人");
        taskList.forEach(System.out::println);
    }

    private void printMenu() {
        System.out.println("您好,"+name);
        System.out.println("****欢迎使用HGG任务管理系统****");
        System.out.println("1.查询所有任务信息");
        System.out.println("2.录入任务信息");
        System.out.println("3.开始任务");
        System.out.println("4.完成任务");
        System.out.println("5.退出登录");
        System.out.println("请选择....");
    }
}

测试类-Test

package cn.kgc.bms;

import cn.kgc.bms.controller.TaskController;

public class Test {
    public static void main(String[] args) {
        TaskController taskController = new TaskController();
        taskController.run();
    }
}

标签:return,07,30,kgc,2021,import,cn,public,String
来源: https://blog.csdn.net/u013602257/article/details/119252821