Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等)

目录

1.项目大纲

  1.项目前提

  2.项目说明

3.项目内容

 3.该软件完成以下功能:

2.软件设计

     1.结构

  2.类设计

3. 部分代码展示

心得:


1.项目大纲

  1.项目前提

  1. 掌握java基本语法
  2. 熟悉使用流程控制
  3. 了解Arraylist集合的基本
  4. 理解面向对象思想
  5. 熟练封装,继承,多态
  6. 熟悉使用接口,异常

  2.项目说明

  1. 本实践项目是一个项目开发团队分配管理系统,可以对开发人员和开发团队进行统一管理,并且可以给一个项目分配一个团队进行开发。
  2. 本实践项目有四个模块:用户注册和登录模块,开发人员管理模块,开发团队调度管理模块和开发项目管理模块
  3. 开发人员相关信息请按照需求文档设计
  4. 团队组建过程包括将成员插入到团队中,或从团队中删除某成员,还可以列出团队中现有成员的列表开发团队成员包括架构师、设计师和程序员。
  5. 最后,需要完成每一个项目都能有一个开发团队在进行开发即可

3.项目内容

Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等)_第1张图片

系统流程:

Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等)_第2张图片

 3.该软件完成以下功能:

             软件启动时,首先进入登录界面进行注册和登录功能。 当登陆成功后,进入菜单,首先就可以对开发人员账户和密码进行修改。 然后可以对开发人员进行增删改操作 人员添加成功后,根据菜单提示,基于现有的公司成员,组建一个开发团队以开发一个新的项目。 组建过程包括将成员插入到团队中,或从团队中删除某成员,还可以列出团队中现有成员的列表,开发团队成员包括架构师、设计师和程序员。 团队组建成功,则可以进入项目模块,添加项目,分配开发团队进行开发。

2.软件设计

     1.结构

           com.team.view    模块为主控模块,负责菜单的显示和处理用户操作 com.team.service  模块为实体对象(Employee及其子类如程序员等)的管理模块, NameListService和TeamService类分别用各自的数组来管理公司员工和开发团队成员对象 ProjectService是对项目的操作对象类 domain模块为Employee及其子类等JavaBean类所在的包

Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等)_第3张图片

 

  2.类设计

   1. 定义一个LoginView类

       1.1 实现注册方法

            如果没有账户则需要注册

             如果有账号则直接进行登录

       1.2实现登录功能

              判断用户输入的值是否正确

              如果正确则进入软件菜单

               如果错误则重新输入,限制次数只有5次,超过次数则程序停止,重新启动

        1.3实现修改用户密码功能

                可以实现对用户名,密码,或者两者都可以进行修改即可。

   2.实体类

      2.1Equipment接口以及实现子类

Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等)_第4张图片

说明: model 表示机器的型号 display 表示显示器名称 type 表示机器的类型 根据需要提供各属性的get/set方法以及重载构造器 实现类实现接口的方法,返回各自属性的信息

   2.2Employee类及子类的设计 

Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等)_第5张图片

Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等)_第6张图片

 3.开发人员管理模块

    3.1在NameListService类中完成功能操作

       实现员工的添加(根据职业添加(无,程序员,设计师,架构师)) 实现员工的修改(至少修改员工的姓名,年龄,工资) 实现员工的删除(注意员工id需要动态显示,也就是删除后,员工id需要更新) 实现员工的查看 (显示所有数据)

Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等)_第7张图片

 

按照设计要求编写NameListService类 一个属性为:private ArrayList employees 有一个代码块用作数据的填充,如图(注意不同人的身份和设备都不同) 有一个方法:getAllEmployees(),返回employees对象即可 还有一个方法:getEmployee(int id),得到指定id的员工,没有则抛出自定义的异常。 其他方法

4.开发团队调度管理模块

需求:

    如果添加操作因某种原因失败,将显示类似以下信息(失败原因视具体原因而不同): 1-团队列表  2-添加团队成员  3-删除团队成员 4-退出   请选择(1-4):2 ---------------------添加成员--------------------- 请输入要添加的员工ID:2 添加失败,原因:该员工已是某团队成员 按回车键继续...     失败信息包含以下几种:  (需要抛出自定义异常) 成员已满,无法添加 该成员不是开发人员,无法添加 该员工已在本开发团队中 该员工已是某团队成员 团队中至多只能有一名架构师(以下判断可借用instanceof进行判断) 团队中至多只能有两名设计师 团队中至多只能有三名程序员

当选择“添加团队成员”菜单时,将执行从列表中添加指定(通过ID)成员到开发团队的功能: 1-团队列表  2-添加团队成员  3-删除团队成员  4-退出   请选择(1-4):2 ---------------------添加成员--------------------- 请输入要添加的员工ID:2 添加成功 按回车键继续... 添加成功后,按回车键将重新显示主界面。 开发团队人员组成要求: 最多一名架构师 最多两名设计师 最多三名程序员

功能:关于开发团队成员的管理:添加、删除等(还需要自行实现)。 说明: counter为静态变量,用来为开发团队新增成员自动生成团队中的唯一ID,即memberId。(提示:应使用增1的方式) MAX_MEMBER:表示开发团队最大成员数 team数组:用来保存当前团队中的各成员对象 (也可以用一个新的集合)

Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等)_第8张图片

 说明: getTeam()方法:返回当前团队的所有对象 返回:包含所有成员对象的数组,数组大小与成员人数一致 addMember(e: Employee)方法:向团队中添加成员 参数:待添加成员的对象 异常:添加失败, TeamException中包含了失败原因 removeMember(memberId: int)方法:从团队中删除成员 参数:待删除成员的memberId 异常:找不到指定memberId的员工,删除失败 另外,可根据需要自行添加其他方法或重载构造器

Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等)_第9张图片

 Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等)_第10张图片

 

Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等)_第11张图片

3. 部分代码展示

3.1登录界面

package ProjectOne.view;

import ProjectOne.domain.UserRegistration;

import java.util.ArrayList;

/**
 * @author 黎豪
 * @version 1.0
 */

public class LoginView {
    /**
     * 颜色特效
     */
    public static final String ANSI_RESET = "\u001B[0m";
    public static final String ANSI_GREEN = "\u001B[32m";
    public static final String ANSI_YELLOW = "\u001B[33m";
    public static final String ANSI_PURPLE = "\u001B[35m";
    public static final String ANSI_BLUE = "\u001B[34m";
    public static final String ANSI_CYAN = "\u001B[36m";

    private static int count=0;
    private static boolean b=true;
    public static ArrayList array=new ArrayList<>();
    //下面是用户登录界面
    public static void menu() {
        while (b){
            System.out.println(ANSI_CYAN);
            System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
            System.out.println("$                            $");
            System.out.println("$欢迎来到项目开发团队分配管理软件$");
            System.out.println("$                            $");
            System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
            System.out.println("$");
            System.out.println("$");
            System.out.println("$");
            System.out.println("$");
            System.out.println("--------请您先登录-----------");
            TSUtility.readReturn();
            System.out.println(ANSI_YELLOW);
            System.out.println("*******************");
            System.out.println("***  <登录界面>  ***");
            System.out.println("***     (:      ***");
            System.out.println("********************");
            System.out.println("请先输入你的登录账户名称:");
            String userAccount = TSUtility.readKeyBoard(20, false);
            System.out.println("请输入你的密码:");
            String LoginPassword=TSUtility.readKeyBoard(11, false);
            if (array.size() == 0) {
                System.out.println("未检测到您的账号,请您先注册!");
                try {

                    UserRegistration.addUserAccount(array);//注册账号
                    System.out.println();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            else if (!(array.get(0).equals(userAccount))){
                    count++;
                    System.out.println("用户名不存在请重新输入:"+"你还有"+(5-count)+"次机会");

                 if (count==5){
                     System.out.println("你已经错了5次,请联系管理员");
                    System.exit(0);
                }
                }
            else if (!(array.get(1).equals(LoginPassword))){
                count++;
                    System.out.println("密码错误!请重新输入!"+"你还有"+(5-count)+"次机会");

                if (count==5){
                    System.out.println("你已经错了5次,请联系管理员");
                    System.exit(0);
                }
                }
            else if (count==5){
                System.exit(0);
            }
            else {
                    UserRegistration.CheckUserAccount(array, userAccount, LoginPassword);
                    b=false;

                }
        }
    }


}

3.2团队调度管理

package ProjectOne.view;

import ProjectOne.domain.*;
import ProjectOne.service.NameListService;
import ProjectOne.service.TeamException;

import java.util.ArrayList;

/**
 * @author 黎豪
 * @version 1.0
 */
//开发团队调度管理
public class TeamView extends NameListService implements TID {
    /**
     * 颜色特效
     */
    public static final String ANSI_RESET = "\u001B[0m";
    public static final String ANSI_GREEN = "\u001B[32m";
    public static final String ANSI_YELLOW = "\u001B[33m";
    public static final String ANSI_PURPLE = "\u001B[35m";
    public static final String ANSI_BLUE = "\u001B[34m";
    public static final String ANSI_CYAN = "\u001B[36m";
   public static int count=1,count1=1,count2=1;
    public  static ArrayList team=new ArrayList<>();
    //团队调度界面1,2,3,4;
    public static ArrayList programmer=new ArrayList<>();
    public static void DispatchingTeam(){
        boolean b=true;
        while (b) {
            System.out.println(ANSI_BLUE);
            System.out.println("※※※※※※※※※※※");
            System.out.println("※   团队调度界面   ※");
            System.out.println("※※※※※※※※※※※");
            System.out.print("1-添加团队  2-查看团队  3-删除团队 4-退出   请选择(1-4):");
            char number = TSUtility.readMenuSelection();
            switch (number) {
                case '1':
                    addTeam();
                    break;
                case '2':
                    findTeam();
                    break;
                case '3':
                    deletaTeam();
                    break;

                case '4':
                    //b=false;
                    System.out.println("确认退出Y/N:");
                    char c3=TSUtility.readConfirmSelection();
                    if (c3=='Y') {
                        b = false;
                    }else {
                        break;
                    }

                    break;
            }
        }

    }
    //1.添加团队
    public static void addTeam(){
        int k=0;
        boolean b=true;
        while (b){
            viewDeveloper();
          System.out.println("---------------------------------------------");
          System.out.println("1-团队列表  2-添加团队成员   3-删除团队成员  4-退出");
          char c=TSUtility.readMenuSelection();
          switch (c){
              case '1':
                  viewTeampeople();
                  break;
              case '2':
                  addTeampeople();
                  break;
              case '3':
                  deletaTeampeople();
                  break;
              case '4':
                  if (programmer.size()==0){
                      System.out.println("此次操作你没有添加任何成员!!!");
                  }
                  else {
                      if (programmer.size()!=0){
                          team.add(k,programmer);
                      }
                      programmer=new ArrayList<>();
                      k++;
                      count=1;count1=1;count2=1;
                  }
                  b = false;
                  break;
      }
        }
    }
    //2.查看团队列表
    public static void viewTeampeople(){
        if (programmer.size()==0){

            System.out.println("没有任何成员,请先添加团队成员!!!");
        }else {
            System.out.println("-------------------------------");
            System.out.println("TID/ID\t姓名\t\t年龄\t 工资\t 职位\t 奖金\t 股票    领用设备");
        for (int i = 0; i programmer.size()||i<=0){
                System.out.println("删除失败,员工TID错误!!!");
            }else {
                programmer.get(i-1).setStatus(true);
                System.out.println("删除成功!");
                if (programmer.get(i-1) instanceof Architect){
                    count--;
                }
                //最多两名设计师
                else if (programmer.get(i-1) instanceof Desigener){
                   count1--;
                }
                //最多三名程序员
                else if (programmer.get(i-1) instanceof Programmer){
                    count2--;

                }
                programmer.remove(i-1);

            }
        }
    }
    //添加团队成员
    public static void addTeampeople(){
        System.out.println(ANSI_GREEN);
        System.out.println("----------添加成员--------");
        System.out.println("请输入要添加的员工ID:");
        int num=TSUtility.readInt();

        try {
            abnormal(num);
        } catch (TeamException e) {
            System.out.println("添加失败!原因:"+e.getMessage());
        }
    }
    //各种异常的处理------------------------------
    public static void abnormal(int num) throws TeamException {
        //员工ID不存在
        if (num>employees.size()||num<=0){
                throw new TeamException("该员工不存在!");
        }
        //该成员不是开发团队
        else if (!(employees.get(num-1) instanceof Programmer)){
                throw new TeamException("该成员不是开发团队,无法添加!!!");

        }
        //状态为false的不添加
        else if (((Programmer)employees.get(num-1)).getStatus()==false){
            //已存在该队伍
            for (int i = 0; i 4){
                throw new TeamException("团队成员最多只能有五个");

        }
        //只能有一名架构师
        else if (employees.get(num-1) instanceof Architect){
            if (count>1){
                    throw new TeamException("团队中至多只能有一名架构师!");
            }
            else {
                programmer.add((Programmer) employees.get(num-1));
                System.out.println("添加了一名架构师");
                count++;
                ((Programmer) employees.get(num-1)).setStatus(false);
            }

        }
        //最多两名设计师
        else if (employees.get(num-1) instanceof Desigener){
            if (count1>2){
                    throw new TeamException("最多两名设计师");

            }
            else {
                programmer.add((Programmer) employees.get(num-1));
                count1++;
                System.out.println("添加了一名设计师");
                ((Programmer) employees.get(num-1)).setStatus(false);
            }
       }
        //最多三名程序员
        else if (employees.get(num-1) instanceof Programmer){

               if (count2>3){
                    throw new TeamException("添加失败!最多三名程序员");
               }
            else {
                programmer.add((Programmer) employees.get(num-1));
                count2++;
                   System.out.println("添加了一名程序员");
                   ((Programmer) employees.get(num-1)).setStatus(false);
            }
        }
}
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    //查看团队
    public static void findTeam(){
        System.out.println(ANSI_GREEN);
          if (team.size()==0){
              System.out.println("没有团队!!!请先添加!!!!!");
          }
          else{
              System.out.println("TID/ID\t姓名\t\t年龄\t 工资\t 职位\t 奖金\t 股票    领用设备");
              for (int i = 0; i team.size()||a<=0){
                System.out.println("你输入的编号有误!!!删除失败!!");
            }else {
                for (int i = 0; i 

3.3项目管理

package ProjectOne.service;

import ProjectOne.domain.Programmer;
import ProjectOne.domain.Project;
import ProjectOne.view.TSUtility;
import ProjectOne.view.TeamView;

import java.util.ArrayList;

/**
 * @author 黎豪
 * @version 1.0
 */
/管理项目的类、、、、、
public class ProjectService {
    public static final String ANSI_RESET = "\u001B[0m";
    public static final String ANSI_YELLOW = "\u001B[33m";
    public static ArrayList pro=new ArrayList();
    public static ArrayListtotal=new ArrayList<>();
    public static ArrayList newpro=new ArrayList<>();
    public static int count=1;
    //增加项目
    public static void addProject(){
        System.out.println(ANSI_YELLOW);
        System.out.println("项目参考:--------------------------------------------------");
        System.out.println("1.小米官网:开发完成类似于小米官网的web项目.");
        System.out.println("2.公益在线商城:猫宁Morning公益商城是中国公益性在线电子商城.");
        System.out.println("3.博客系统:Java博客系统,让每一个有故事的人更好的表达想法!");
        System.out.println("4.在线协作文档编辑系统:一个很常用的功能,适合小组内的文档编辑。");
        System.out.println("------------------------------------------------------------");
        TSUtility.readReturn();
        System.out.println("请输入你想添加的项目名: ");
        char c=TSUtility.readMenuSelection();
        switch (c) {
            case '1':
                Project p1 = new Project();
                p1.setProId(count++);
                p1.setProName("小米官网");
                p1.setDesName("开发完成类似于小米官网的web项目.");
                pro.add(p1);
                try {
                    TSUtility.loadSpecialEffects();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("已添加项目:"+p1.getProName());

                break;
            case '2':
                Project p2 = new Project();

                p2.setProId(count++);
                p2.setProName("公益在线商城");
                p2.setDesName("猫宁Morning公益商城是中国公益性在线电子商城.");
                pro.add(p2);
                try {
                    TSUtility.loadSpecialEffects();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("已添加项目:"+p2.getProName());

                break;
            case '3':
                Project p3 = new Project();

                    p3.setProId(count++);
                    p3.setProName("博客系统");
                    p3.setDesName("Java博客系统,让每一个有故事的人更好的表达想法!");
                    pro.add(p3);
                    try {
                        TSUtility.loadSpecialEffects();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println("已添加项目:" + p3.getProName());

                break;
            case '4':
                Project p4 = new Project();

                p4.setProId(count++);
                p4.setProName("在线协作文档编辑系统");
                p4.setDesName("一个很常用的功能,适合小组内的文档编辑。");
                pro.add(p4);
                try {
                    TSUtility.loadSpecialEffects();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("已添加项目:"+p4.getProName());
                break;
            default:
                System.out.println("项目不存在!!!");

        }
    }
    //项目分配
    public static void distributionProject(ArrayListteam){
        if (pro.size()==0){
            System.out.println("你还没有项目,请先添加");
        }
        else{
            if (team.size()==0){
                System.out.println("你的团队已经被分配完了!!!请去添加团队");
            }
            else {
                System.out.println("TID/ID\t姓名\t\t年龄\t 工资\t 职位\t 奖金\t 股票    领用设备");
                for (int i = 0; i < team.size(); i++) {
                    for (int j = 0; j < team.get(i).size(); j++) {
                        System.out.println((j + 1) + "/" + team.get(i).get(j));
                    }
                    System.out.println("======这是团队" + (i + 1) + "=======");

                    System.out.println("==========================================");
                }
                System.out.println("请先选择团队:");
                int t = TSUtility.readInt();
                if (t > team.size() || t <= 0) {
                    System.out.println("你输入有误!!!分配失败!!");
                } else {
                    System.out.println("请给他们取一个新的团队名称:");
                    String name = TSUtility.readKeyBoard(6, false);


                    for (int j = 0; j < pro.size(); j++) {
                        System.out.println(pro.get(j));
                    }
                    System.out.println("请为该团队分配任务!!!请输入项目序号(从一开始):");
                    int c1 = TSUtility.readInt();
                    if (c1 > pro.size() || c1 <= 0) {
                        System.out.println("你输入有误!!添加项目失败!!");
                    } else if ((pro.get(c1 - 1).getStatus())) {
                        System.out.println("该项目已被开发!!!");
                    } else if (!(pro.get(c1 - 1).getStatus())) {

                        pro.get(c1 - 1).setStatus(true);
                        pro.get(c1 - 1).setTeamName(name);
                        total.add(team.get(t - 1));
                        team.remove(t - 1);
                        newpro.add(pro.get(c1 - 1));
                        pro.remove(c1 - 1);
                        System.out.println("项目分配成功!!");
                        TSUtility.readReturn();

                    }

                }

            }
        }

    }
    //查看项目
    public static void findProject(){
        System.out.println(ANSI_RESET);
        if (newpro.size()==0){
            if (pro.size()==0){
                System.out.println("请先添加项目在查看!!!");
            }else
            {
                for (int i = 0; i  pro.size()) {
                System.out.println("该项目不存在!!!!");
            } else {
                pro.remove(a - 1);
                System.out.println("删除成功!!!");
            }
        }
    }


}

心得:

  第一次写千行代码,感觉自己又行了!!!!

你可能感兴趣的:(intellij-idea)