要求
要求完成这些功能
第一个用户的注册和登录
这个位置要注意的是对输入的密码的次数的限制,不能无限输出并且还要能够退出来。
其实第一个没有多大的难度反而是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就不好改了。