要求

要求完成这些功能
第一个用户的注册和登录
这个位置要注意的是对输入的密码的次数的限制,不能无限输出并且还要能够退出来。


其实第一个没有多大的难度反而是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就不好改了。
1477

被折叠的 条评论
为什么被折叠?



