项目一(开发团队管理)

要求

 要求完成这些功能

第一个用户的注册和登录

这个位置要注意的是对输入的密码的次数的限制,不能无限输出并且还要能够退出来。

 

 其实第一个没有多大的难度反而是234

开发人员管理

开发人员管理:主要是进行增删改查‘;退出(一般用循环让他退出)

首先是查看

 查看是把这个代码块放在集合里面然后再遍历一下就可以看了  这有一点问题是如果零基础的同学可能清楚什么是代码块

遍历

 添加

添加是在集合的基础上添加 主要是分为四种 1 无开发人员 2 程序员 3 设计师 4 架构师  

 删除

删除在这里主要是集合的删除,值得注意的是这里删除后的装态得改回来 并且得把ID改回来

修改 

 团队的人员的添加删除

这里是本系统 的难点和重点 我们的方法就是把团队装在一个集合里面,那么团队用什么来装呢,团队要用数组来装,数组的每一个的成员都是一条成员的消息 首先我们应该把成员放在数组里面

public Employee getEmpoyees(int count)throws TeamExption{
    for (int i = 0; i < employees.size(); i++) {
        if (employees.get(i).getId()==count){
            return employees.get(i);
        }
    } throw new  TeamExption("该员工不存在");


}

 这里就是i把数组的元素调过来,充当数组里面的一个元素 数组是有限制的 限制条件也大多数用判断语句来执行。

public void addMenber(Employee e) throws TeamExption{
    if (number>=total){
throw new TeamExption("成员已经满了,无法添加");
    }
    if (!(e instanceof Programmer)){
        throw new TeamExption("该成员不是开发人员,无法添加");
    }
    Programmer p=(Programmer)e;//转型
    if (isExist(p)){
       throw new TeamExption("该成员已在开发团队中");
    }
    if (!p.getStatus()){
        throw new TeamExption("该员工已是某团队成员");
    }
    int Pro=0; int Des=0; int Arc=0;
    for (int i = 0; i < number; i++) {
        if (arr[i]instanceof Architect){Arc++;}
        else if (arr[i]instanceof Designer){Des++; }
        else if (arr[i]instanceof Programmer){
            Pro++;
        }
    }
    if (p instanceof Architect){
        if (Arc>=1){
            throw new TeamExption("团队中最多只能有一名架构师");
        }
    }
    else if (p instanceof Designer){
        if (Des>=2){
            throw new TeamExption("团队中最多只能有两个设计师");

        }
    }
    else if (p instanceof Programmer){
        if (Pro>=3)
        throw new TeamExption("团队中最多只能有三名程序员");

 这里是这个项目的最难点。

这里对团队和人员都定义了的。

团队的添加这里y重要的是需要把数组清空就像坐船一样把,数组当做一条船,把人员当做人。

 private boolean isExist(Programmer p) {
        for (int i = 0; i < number; i++) {
            if (arr[i].getId() == p.getId()) return true;
        }

        return false;
    }
    public void removeMember(int memberId) throws TeamExption {
        int n = 0;
        //找到指定memberId的员工,并删除
        for (; n < number; n++) {
            if (arr[n].getMemberId() == memberId) {
                arr[n].setStatus(true);
                break;
            }
        }
        //如果遍历一遍,都找不到,则报异常
        if (n == number)
            throw new TeamExption("找不到该成员,无法删除");
        //后面的元素覆盖前面的元素
        for (int i = n + 1; i < number; i++) {
            arr[i - 1] = arr[i];
        }
       arr[--number] = null;
    }
}
System.out.println("请输入想要删除第几个团队");
int num = TSUtility.readInt();
if (num<=0){
    System.out.println("'输入有误");
}else {
    if (num <= team.size()) {
        System.out.print("确认是否删除(Y/N):");
        char de = TSUtility.readConfirmSelection();
        if (de == 'Y') {
            team.remove(num - 1);
        } else {
            System.out.println("请考虑清楚!");
        }
    } else {
        System.out.println("没有该团队,请正常输入!" + "目前团队只有" + team.size() + "个");
    }
}
break;

这里的内容是比较难的,

4开发项目

public void ProjectBill(){
    boolean flag=true;
    char key = 0;
    do {
        System.out.println("00     ~开发项目管理主菜单~           00");
        System.out.println("--1.     <项目的添加>           ---");
        System.out.println("--2.     <项目分配开发团队>        --- *");
        System.out.println("--3.     <项目的查看>           -----*");
        System.out.println("--4.     <项目的删除>          -----");
        System.out.println("---5.     <退出当前菜单>            -- *");
        System.out.println("⬇请选择:  ");
        key=TSUtility.readMenuSelectionPro();
        switch (key){
            case '1':
                try {
                    addProject();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                break;
            case '2':
                System.out.println((pro.size()));
                if (pro.size()==0){
                    System.out.println("请添加项目");
                }
                System.out.println(team.size());
                System.out.println(manyTeam.size());
                if (manyTeam.size()==0){
                    System.out.println("请返回添加团队");
                }
                else{ for (Programmer[] pro : manyTeam) {
                    dealingPro(pro);
                }
                  }
                break;
            case'3':
               examineProj();
                break;
            case'4':
                System.out.println("输入你想要删除的项目ID");
                int a=TSUtility.readInt();
                delPro(a);
                break;
            case '5':
                System.out.print("确认是否退出(Y/N):");
                char yn = TSUtility.readConfirmSelection();
                if (yn == 'Y') {
                    flag = false;
                }
                break;
            default:
                System.out.println("输入有误请重新输入");
                break;
        }
    }while (flag);

}

主页采用了循环 循环的好处就是能够返回上一层,并且能够使退出能够更简单

第一个项目的添加

public class ProjectService extends TeamView{
   private ArrayList<Project>pro=new ArrayList<>();
   private int count=1;
   //public TeamView teamView =new TeamView();
    private ArrayList<Programmer[]> manyTeam=team;
   //项目的添加
    public void  addProject() throws InterruptedException {

        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);
                System.out.println("已添加"+p1.getProName());
                break;
            case '2':
                Project p2=new Project();
                p2.setProId(count++);
                p2.setProName("公益在线商城");
                p2.setDesName("猫宁Morning公益商城是中国公益性在线电子商城");
                pro.add(p2);
                System.out.println("已添加"+p2.getProName());
                break;
            case'3':
                Project p3=new Project();
                p3.setProId(count++);
                p3.setProName("博客系统");
                p3.setDesName("Java博客系统,让每一个有故事的人更好的表达想法!");
                pro.add(p3);
                System.out.println("已添加"+p3.getProName());
                break;
            case '4':
                Project p4=new Project();
                p4.setProId(count++);
                p4.setProName("在线协作文档编辑系统");
                p4.setDesName("一个很常用的功能,适合小组内的文档编辑!");
                pro.add(p4);
                System.out.println("已添加"+p4.getProName());
                break;
            default:
                System.out.println("该项目不存在");
                break;

        }
    }这里是把把几个项目打包给集合。
public void dealingPro(Programmer[] team)
{
    System.out.println("当前团队有人员:");
    for (int i = 0; i < team.length; i++) {
        System.out.println(team[i]);
    }
    System.out.println("请为当前团队创建一个团队名称:");
    String teamName = TSUtility.readKeyBoard(6, false);
    //随机分配项目
    Random ra = new Random();
    int ranNum = ra.nextInt(pro.size());
    Project project = this.pro.get(ranNum);

    project.setTeamName(teamName);
    project.setTeam(team);
    project.setStatus(true);

    pro.set(ranNum,project);

}

分配给团队。

项目的查看是遍历,删除是集合的remove。

总结:

其实对于我们这些新手来说这一千多行代码还是有难度的,主要是要考虑到规范,我们的格式,,不然出现bug就不好改了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值