前言
本实践项目是一个项目开发团队分配管理系统,可以对开发人员和开发团队进行统一管理,并且可以给一个项目分配一个团队进行开发。
1.系统的功能的结构,流程
①结构
本实践项目有四个模块:用户注册和登录模块,开发人员管理模块,开发团队调度管理模块和开发项目,管理模块开发人员相关信息请按照需求文档设计,团队组建过程包括将成员插入到团队中,或从团队中删除某成员,还可以列出团队中现有成员的列表开发团队成员包括架构师、设计师和程序员。最后,需要完成每一个项目都能有一个开发团队在进行开发即可
②流程
3.代码设计结构
4.具体代码实现
流程介绍:首先注册——登入——开发人员添加(已经有初始值)——团队人员的添加——添加项目——分配项目——退出。
主页面
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();
LoginView loginvi = new LoginView();
try {
loginvi.login();
} catch (InterruptedException e) {
e.printStackTrace();
}
do {
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("⬇请选择: ");
char c = TSUtility.readMenuSelection();
switch (c) {
case '1'://注册
try {
loginvi.update();
} catch (InterruptedException e) {
e.printStackTrace();
}
break;
case '2'://开发人员管理主菜单
developerManagement();
break;
case '3'://开发团队调度管理
manyTeam = teamView.teamManagementView();
break;
case '4'://开发项目管理
projectManagement();
break;
case '5':
System.out.println("确定要退出吗Y/N");
char c1 = TSUtility.readConfirmSelection();
if (c1 == 'Y') {
flag = false;
}
break;
}
} while (flag);
}
①注册登入
//登入功能
public void login() throws InterruptedException {
boolean flag = true;
while (flag) {
System.out.println("********************🐱");
System.out.println("*** <登录界面> ***");
System.out.println("*** (: ***🐱");
System.out.println("********************🐱");
Scanner sc = new Scanner(System.in);
System.out.println("友情提示——账号,密码长度均小于8位");
System.out.println("请输入你的账号名称");
String userName = TSUtility.readKeyBoard(8, false);
System.out.println("请输入你的密码");
String password = TSUtility.readKeyBoard(8, false);
//分两种情况,注册,未注册
if (this.userName.length() == 0 || this.password.length() == 0) {
System.out.println("未注册账号,请先注册");
//返回注册方法
try {
regist();
} catch (InterruptedException e) {
e.printStackTrace();
}
continue;
} else if (this.userName.equals(userName) && this.password.equals(password)) {
System.out.println("登入成功");
flag = false;
}
}
}
//注册功能
public void regist() throws InterruptedException {
System.out.println("开始注册");
System.out.println("友情提示——账号,密码长度均小于8位");
System.out.println("请输入你的账号名称");
String userName = TSUtility.readKeyBoard(8, false);
this.userName = userName;
System.out.println("请输入你的密码");
String password = TSUtility.readKeyBoard(8, false);
this.password = password;
System.out.println("注册成功,请登入");
}
②用户信息修改
System.out.println("请输入你需要修改的类型:");
System.out.println("1(修改用户名)");
System.out.println("2(修改密码名)");
System.out.println("3(修改用户名和密码名)");
System.out.println("4(不修改,退出)");
Scanner sc = new Scanner(System.in);
//选择修改类型
String option = sc.next();
if (option.equals("1") || option.equals("2") ||option.equals("3") || option.equals("4") || option.equals("5") ) {
switch (option) {
case "1":
System.out.println("友情提示——账号长度小于8位");
System.out.println("请输入新用户名");
String userName = TSUtility.readKeyBoard(8, false);
this.userName = userName;
System.out.println("修改成功");
break;
case "2":
System.out.println("友情提示——密码长度小于8位");
System.out.println("请输入新用户名");
String password = TSUtility.readKeyBoard(8, false);
this.password = password;
System.out.println("修改成功");
break;
case "3":
System.out.println("友情提示——账号,密码长度均小于8位");
System.out.println("请输入新用户名");
userName = TSUtility.readKeyBoard(8, false);
System.out.println("请输入新用户名");
password = TSUtility.readKeyBoard(8, false);
this.userName = userName;
this.password = password;
System.out.println("修改成功");
break;
case "4":
System.out.println();
flag = false;
}
} else {
System.out.println("输入的数字并非是1/2/3/4,请重新输入");
}
③开发人员管理
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("⬇请选择: ");
char c1 = TSUtility.readMenuSelectionPro();
switch (c1) {
case '1':
try {
nameListService.addPeople();
} catch (TeamException e) {
e.printStackTrace();
}
break;
case '2':
try {
nameListService.lookPeople();
} catch (TeamException e) {
e.printStackTrace();
}
break;
case '3':
try {
nameListService.updatePeople();
} catch (Exception e) {
e.printStackTrace();
}
break;
case '4':
try {
nameListService.delatePeople();
} catch (InterruptedException e) {
e.printStackTrace();
}
break;
case '5':
System.out.println("你确定该操作吗?(y/n)");
char c2 = TSUtility.readConfirmSelection();
if (c2 == 'Y') {
flag2 = false;
}
break;
default:
System.out.println("输入有误,重新输入");
break;
}
}
}
}
④开发团队调度管理
System.out.println("🐕1. <开发团队的添加> *");
System.out.println("🐖2. <开发团队的查看> *");
System.out.println("🐂3. <开发团队的删除> *");
System.out.println("🐇4. <退出当前菜单> *");
char ch = TSUtility.readMenuSelection();
switch (ch) {
case '1'://添加
enterMainMenu();
break;
case '2'://查看
if (team.size() == 0) {
System.out.println("暂无团队,请添加");
} else {
System.out.println("-------团队列表--------");
System.out.println("TID/ID\t姓名\t\t年龄\t 工资\t 职位\t 奖金\t 股票");
System.out.println("");
for (Programmer[] team : team) {
for (int i = 0; i < team.length; i++) {
System.out.println(team[i].getTeamDtails());
}
System.out.println("------------------");
}
}
break;
case '3'://删除
for (int i = 0; i < team.size(); i++) {
Programmer[] programmers = team.get(i);
System.out.println(programmers);
}
System.out.println("请输入你要删除团队的编号");
int number1 = TSUtility.readInt();
if (number1 - 1 > team.size()) {
System.out.println("你要修改的人员不存在");
} else {
team.remove(number1 - 1);
System.out.println("删除成功");
}
case '4'://退出当前菜单
System.out.println("你确定要退出吗?(y/n)");
char ch2 = TSUtility.readConfirmSelection();
if (ch2 == 'Y') {
flag = false;
}
break;
⑤开发项目管理
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("做出你的选择1-5");
char ch = TSUtility.readMenuSelectionPro();
switch (ch) {
case '1':
if (manyTeam == null) {
System.out.println("暂无团队人员,请先添加团队人员");
}else {
projectSer.addProject();
}
break;
case '2':
if (manyTeam == null) {
System.out.println("暂无团队人员,请先添加团队人员");
} else {
for (Programmer[] programmers : manyTeam) {
try {
projectSer.dealingPro(programmers);
} catch (TeamException e) {
System.out.println(e.getMessage());
}
}
}
break;
case '3':
projectSer.showPro();
break;
case '4':
projectSer.delPro();
break;
case '5':
System.out.println("你确定该操作吗?(y/n)");
char c2 = TSUtility.readConfirmSelection();
if (c2 == 'Y') {
flag = false;
break;
6.易错点
在代码运行过程中有几个点需要强调:
①删除团队人员的ID时,后面的ID要变动(TID同理)
②添加人员时,信息同步到团队模块中
③项目被添加时不可重复添加,项目被分配是不可被删除、
总结
该项目是第一个代码量目前遇到较多的项目,完成了之后有几点心得:①遇到项目首先把框架列出来,之后再把具体功能一个个实现。②在遇到BUG时,遇到及处理原则,否则回过头再处理,代码量变动可能较大。③代码是实现有许多种方法与思路,不可闭门造车。
代码链接(网盘)
链接:https://pan.baidu.com/s/1IVdg1GKSSIwGbw61WaejqA
提取码:1234