??目录
前言
一、开发团队调度管理模块
1.模块功能说明
2.模块结构
3. 模块运行效果
二、开发项目管理模块
1.模块功能说明
2.模块结构
3.模块运行效果
三、程序运行主界面类
四、完整源代码链接
前言
???????这篇博客的内容是接着我的上一篇博客《Java小白实践项目初体验——项目开发团队分配管理软件(一)》。因为篇幅限制,上一篇博客只给小伙伴们分享了项目的前两个模块,这次我给大家分享下剩下的两个模块:开发团队调度管理模块、开发项目管理模块。
建议大家阅读本篇博客之前,先阅读我的上一篇博客:
《Java小白实践项目初体验——项目开发团队分配管理软件(一)》
一、开发团队调度管理模块
1.模块功能说明
① 实现添加团队功能
- 查看当前团队成员列表子功能
- 添加团队成员子功能(添加后该开发人员的状态要变为false)
- 删除团队成员子功能(删除后该开发人员的状态要变为true)
② 实现查看团队功能
???????列出所有的团队,当没有团队时要给出提示。
③ 实现删除团队功能
???????当没有团队或用户输入的团队编号有误时给出提示;删除后该团队所有成员的状态要变为true。
? ? 添加团队成员子功能中,包含以下几种失败信息:(需要抛出自定义异常)
- 成员已满,无法添加
- 该成员不是开发人员,无法添加
- 该员工已在本开发团队中
- 该员工已是某团队成员
- 团队中至多只能有一名架构师(以下判断可借用instanceof进行判断)
- 团队中至多只能有两名设计师
- 团队中至多只能有三名程序员
2.模块结构
? ? 与开发团队调度管理模块相关的类有3个:TeamException、TeamService和TeamView。
? ? 1)TeamException类
???????本类是自定义异常类,目的是添加团队成员时可根据情况抛出自定义异常,它的代码非常简单(代码如下所示)。
package com.team.service;
public class TeamException extends Exception{
public TeamException() {
}
public TeamException(String message) {
super(message);
}
}
? ? 2)TeamService类结构
???????TeamService类包含10个方法。首先是3个主功能实现方法:addTeam方法是实现添加团队的功能,getAllTeam方法是实现查看团队的功能,removeTeam方法是实现删除团队的功能。
???????然后是添加团队主功能里的3个子功能实现方法:getTeam方法是实现查看当前团队成员列表的子功能,addMember方法是实现添加团队成员的子功能(本方法中要注意根据不同情况抛出相应的自定义异常),removeMember方法是实现删除团队成员的子功能。
???????最后是私有的仅供本类addMember方法调用的4个团队成员判断方法,作用是为了判断团队成员的组成情况,以便抛出异常。isBelongTeam方法是判断待添加成员对象是否在当前团队中;isHaveArchitect方法是当待添加成员对象是架构师时,判断当前团队中是否已经有一名架构师;isHaveDesigner方法是当待添加成员对象是设计师时,判断当前团队中是否已经有两名设计师;isHaveProgrammer方法是当待添加成员对象是程序员时,判断当前团队中是否已经有三名程序员。
? ? 3)TeamView类结构
???????TeamView类包含8个方法。首先是developTeamMainMenu方法,该方法是实现开发团队调度管理主菜单。接下来是addTeamView、allTeamShow和removeTeamView方法,这三个方法分别实现添加团队、查看团队和删除团队这三个主功能的交互界面(这三个方法都是private,仅供本类developTeamMainMenu方法调用)。
???????然后是teamShowView、addMemberView和removeMemberView方法,这三个方法分别实现查看团队成员列表、添加团队成员和删除团队成员这三个子功能的交互界面(这三个方法都是private,仅供本类addTeamView方法调用)。最后是teamShow方法,本方法是打印当前团队成员列表(这个方法也是private,仅供本类teamShowView、removeMemberView方法调用)。
3. 模块运行效果
? ? 添加团队:
? ? 添加团队成员(添加团队里的子功能):
? ? 团队成员列表(添加团队里的子功能):
? ? 删除团队成员(添加团队里的子功能):
? ? 查看团队:
? ? 删除团队:
二、开发项目管理模块
1.模块功能说明
① 实现项目的添加功能
???????根据给出的参考项目添加(不能重复添加同一个项目)。
② 实现项目分配开发团队功能
? ? ? ?项目随机分配给一个空闲的开发团队(没有空闲团队要给成相应提示,没有添加项目也要给出相应提示)。
③ 实现项目的查看功能
???????可以查看所有项目的相关信息以及项目的开发状态(没有添加项目给出相应提示)。
④ 实现项目的删除功能
???????可以将未被开发的项目删除(开发中的项目不能删除)。
2.模块结构
? ? 与开发项目管理模块相关的类有3个:Project、ProjectService和ProjectView。
? ? 1)Project类的设计
???????Project类的UML类图如下:
???????小伙伴们可根据自身需要提供各属性的get/set方法以及重载构造器等其他方法。
? ? 2)ProjectService类结构?
? ? ? ?ProjectService类包含6个方法。前4个是主要方法,addProject方法是实现项目的添加功能,dealingPro方法是实现项目分配开发团队功能,getPro方法是实现项目的查看功能,delPro方法是实现项目的删除功能。后2个是辅助方法,?isNotDeveloped方法是判断是否有未被开发的项目,isAdded方法是判断项目是否已被添加到集合中(此方法是private,仅供本类addProject方法调用)。
? ? 3)ProjectView类结构
???????ProjectView类包含5个方法。首先是projectManageMainMenu方法,该方法是实现开发项目管理主菜单。然后是addProjectView、dealingProView、showPro和delProView方法,这四个方法分别实现项目的添加功能交互界面、项目分配开发团队交互界面、项目的查看展示和项目的删除交互界面(这四个方法都是private,仅供本类projectManageMainMenu方法调用)。
3.模块运行效果
? ? 项目的添加:?
? ? 项目分配开发团队:
? ? 项目的查看:
? ? 项目的删除:
三、程序运行主界面类
???????将程序的4个模块编写完后,我们需要将4个模块连接起来,组成一个完整的程序,并且要为程序编写运行主界面,所以我们需要写一个IndexView(程序运行主界面)类。代码如下:
package com.team.view;
/*
软件主界面类(将4个模块衔接在一起)
*/
public class IndexView {
private static LoginView lv = new LoginView();
private static NameListView nlv = new NameListView();
private static TeamView tv = new TeamView();
private static ProjectView pv = new ProjectView();
/*
颜色特效
*/
public static final String ANSI_RESET = "\u001B[0m";
public static final String ANSI_BLUE = "\u001B[34m";
public static void main(String[] args) {
IndexView iv = new IndexView();
lv.initMenu();
iv.softwareMainMenu();
}
//软件主菜单
private void softwareMainMenu() {
while (true) {
System.out.println(ANSI_RESET + ANSI_BLUE);
System.out.println("🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣");
System.out.println("🔣 🔣");
System.out.println("🔣 ~软件主菜单~ 🔣");
System.out.println("🔣 🔣");
System.out.println("🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣");
System.out.println("🐻1. <用户信息修改> *");
System.out.println("🐘2. <开发人员管理> *");
System.out.println("🦁3. <开发团队调度管理> *");
System.out.println("🐻4. <开发项目管理> *");
System.out.println("🦊5. <退出软件> *");
System.out.println("?请选择: ");
System.out.print(ANSI_RESET);
switch (TSUtility.readMenuSelectionPro()) {
case '1':
lv.modifyMenu();
break;
case '2':
try {
TSUtility.loadSpecialEffects();
} catch (InterruptedException e) {
e.printStackTrace();
}
nlv.DeveloperManageMainMenu();
break;
case '3':
tv.developTeamMainMenu();
break;
case '4':
pv.projectManageMainMenu();
break;
case '5':
System.out.print("确认是否退出(Y/N):");
if (TSUtility.readConfirmSelection() == 'Y') {
System.exit(0);
}
break;
}
}
}
}
? ? 软件主菜单展示:
四、完整源代码链接
待添加~
ps:博主创作不易,喜欢这篇文章的小伙伴们,点个赞吧!(づ ̄3 ̄)づ╭?~
|