2021-07-30
作者:互联网
任务要求 idea jdk1.8 三层结构的任务管理系统可以实现登录,判断登录用户权限等操作
任务管理系统
一、系统需求
查询所有任务信息:展示所有任务信息
录入任务信息:
- 用户输入:任务名, 预计完成时间(Date) , 责任人
- 状态: 默认是 未开始
开始任务
提示用户输入任务编号
将任务的状态改为进行中
完成任务
提示用户输入任务编号
将任务的状态改为已完成, 同时将 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