前言
本项目主要是锻炼编程逻辑思维和考察Java中的面向对象(三大特性),ArrayList 集合,数组及其它基本知识点的灵活应用的一个掌握情况。本篇文章主要对在编程的过程中遇到的问题进行一个分析与总结。
1️⃣ 需求
开发人员要求:(职业分配)
无->只有姓名、年龄、工资
程序员->姓名、年龄、工资、职位(程序员)、是否空闲(状态)、领用的设备(笔记本)
设计师->姓名、年龄、工资、职位(程序员)、是否空闲(状态)、奖金、领用的设备(打印机)
架构师->姓名、年龄、工资、职位(程序员)、是否空闲(状态)、奖金、股票、领用的设备(台式电脑)
团队人员组成要求:
1.最多一名架构师
2.最多两名设计师
3.最多三名程序员
4.无职位成员提示该成员不是开发成员
5.添加失败主要原因:
(1)成员已满,无法添加
(2)该成员不是开发人员,无法添加
(3)该员工已在本开发团队中
(4)该员工已是某团队成员
项目管理要求:
为添加的项目随机分配开发团队
为项目添加一个状态值,第一次删除团队时,将项目关闭,显示未开发状态,第二次在进行删除
2️⃣ 项目分析
1.该软件实现功能:
1. 软件启动时,首先进入登录界面进行注册和登录功能。 2. 当登录成功后,进入菜单,首先就可以对开发人员账户和密码进行修改。 3. 然后可以对开发人员进行增删改操作。 4.人员添加成功后,根据菜单提示,基于现有的公司成员,组建一个开发团队以开发一个新的项目。 5.组建过程包括将成员插入到团队中,或从团队中删除某成员,还可以列出团队中现有成员的列表,开发团队成员包括架构师,设计师和程序员。 6.团队组建成功,则可以进行项目模块,添加项目,分配开发团队进行开发。
2.系统功能结构:
3.系统流程
4.软件设计结构
该软件由下面三个模块组成:
3️⃣ 项目实现
🌑登录,注册,修改模块
package com.team.view;
import java.util.Scanner;
public class LoginView {
//首先给定属性:登录用户和密码
private String userName = "";
private String password = "";
//注册功能
public void regis() throws InterruptedException {
System.out.println("========注册=========");
TSUtility.loadSpecialEffects();
System.out.println("开始注册:");
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的注册账户名称:");
String userName = TSUtility.readKeyBoard(4, false);
this.userName = userName;
System.out.println("请输入你的注册密码:");
String password = TSUtility.readKeyBoard(8, false);
this.password = password;
System.out.println("注册成功!请登录!");
}
public void register() throws InterruptedException {
System.out.println("=======<1. 登录>==========");
System.out.println("=======<2. 注册>==========");
System.out.println("请选择(1-2):");
char c = TSUtility.readMenuSelectionPro();
switch (c) {
case '1':
login();
break;
case '2':
regis();
login();
break;
}
}
//登录功能
public void login() throws InterruptedException {
//登录失败的次数限制
int count = 5;
boolean flag = true;
while (flag) {
System.out.println("********************🐱");
System.out.println("*** ***");
System.out.println("*** <登录界面> ***");
System.out.println("*** ***🐱");
System.out.println("********************🐱");
System.out.println("请输入你的登录账户名称:");
String userName = TSUtility.readKeyBoard(4, false);
System.out.println("请输入你的登录密码:");
String password = TSUtility.readKeyBoard(8, false);
//未注册
if (this.userName.length() == 0 || this.password.length() == 0) {
System.out.println("未检测到您的账号,请您先注册!");
regis();
}
//已注册
//正常登录
else if (this.userName.equals(userName) && this.password.equals(password)) {
TSUtility.loadSpecialEffects();
System.out.println("登陆成功!欢迎您:" + userName);
flag = false;
} else {
if (count <= 0) {
System.out.println("登录次数不足!退出!");
return;
} else {
count--;
System.out.println("登录失败!用户名或密码不匹配!");
System.out.println("登录次数还剩" + count + "次,请重新输入:");
}
}
}
}
//修改功能
public void update() throws InterruptedException {
boolean flag = true;
while (flag) {
System.out.println("********************🐱");
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(不修改,退出)");
Scanner sc = new Scanner(System.in);
String options = sc.next();
if (options.equals("1")) {
System.out.println("请输入你的修改的账户名称:");
String userName = TSUtility.readKeyBoard(4, false);
this.userName = userName;
System.out.println("修改成功!");
} else if (options.equals("2")) {
System.out.println("请输入你的修改密码:");
String password = TSUtility.readKeyBoard(8, false);
this.password = password;
System.out.println("修改成功!");
} else if (options.equals("3")) {
System.out.println("请输入你的修改的账户名称:");
String userName = TSUtility.readKeyBoard(4, false);
this.userName = userName;
System.out.println("请输入你的修改密码:");
String password = TSUtility.readKeyBoard(8, false);
this.password = password;
System.out.println("修改成功!");
} else if (options.equals("4")) {
System.out.println("退出中");
TSUtility.loadSpecialEffects();
flag = false;
} else {
System.out.println("输入错误!请输入“1”或者“2”或者“3”或者“4”:");
}
}
}
}
🌒开发人员管理模块
package com.team.service;
import com.team.domain.*;
import com.team.view.TSUtility;
import java.util.ArrayList;
import java.util.Scanner;
//开发人员管理
public class NameListService {
private int count = 1;
public static ArrayList<Employee> employees = new ArrayList<>();
{
employees.add(new Employee(count, "马云 ", 44, 3444));
employees.add(new Programmer(++count, "陈芊芊", 34, 7000, new PC("戴尔", "NEC 17寸")));
employees.add(new Designer(++count, "金金晶", 23, 6000, new NoteBook("惠普m6", 5000), 4000));
employees.add(new Architect(++count, "马化腾", 43, 7000, new Printer("激光", "佳能2900"), 15000.0, 1200));
employees.add(new Programmer(++count, "刘飞翔", 34, 7000, new PC("戴尔", "NEC 17寸")));
employees.add(new Designer(++count, "旭东华", 23, 6000, new NoteBook("惠普m6", 5000), 4000));
employees.add(new Architect(++count, "余晓东", 43, 7000, new Printer("激光", "佳能2900"), 15000.0, 1200));
employees.add(new Programmer(++count, "雷洋洋", 34, 7000, new PC("戴尔", "NEC 17寸")));
employees.add(new Designer(++count, "李清扬", 23, 6000, new NoteBook("惠普m6", 5000), 4000));
employees.add(new Architect(++count, "徐灵鑫", 43, 7000, new Printer("激光", "佳能2900"), 15000.0, 1200));
}
//获取当前所有员工
public static ArrayList<Employee> getEmployees(){
return employees;
}
public void setEmployees(ArrayList<Employee> employees) {
this.employees = employees;
}
//获取指定ID的员工对象
public static Employee getEmployee(int id) throws TeamException {
for (int i = 0; i < employees.size(); i++) {
if (employees.get(i).getId() == id) {
return employees.get(i);
}
}
throw new TeamException("该员工不存在");
}
//查看员工
public void lookEmployee() throws InterruptedException {
// TSUtility.loadSpecialEffects();
System.out.println("ID\t 姓名\t年龄\t 工资\t 职位\t 状态\t 奖金\t 股票\t 领用设备");
for (int i = 0; i < employees.size(); i++) {
System.out.println(" " + employees.get(i));
}
}
//添加员工
public void addEmployee() {
boolean blag = false;
do {
System.out.println("请输入你要添加的员工对应的职位:");
System.out.println("1. 无");
System.out.println("2. 程序员");
System.out.println("3. 设计师");
System.out.println("4. 架构师");
System.out.println("请选择:(1~4)");
String key = String.valueOf(TSUtility.readMenuSelectionPro());
if (key.equals("1")) {
System.out.println("当前雇员的职位分配为:无");
System.out.println("请输入当前雇员的姓名:");
String name = TSUtility.readKeyBoard(4, false);
System.out.println("请输入雇员的年龄:");
int age = TSUtility.readInt();
System.out.println("请输入雇员的工资:");
double salary = TSUtility.readDouble();
Employee employee = new Employee(++count, name, age, salary);
employees.add(employee);
System.out.println("人员添加成功!");
TSUtility.readReturn();
blag = false;
} else if (key.equals("2")) {
System.out.println("当前雇员分配的职位为:程序员");
System.out.println("请输入当前雇员的姓名:");
String name = TSUtility.readKeyBoard(4, false);
System.out.println("请输入雇员的年龄:");
int age = TSUtility.readInt();
System.out.println("请输入程序员的工资:");
double salary = TSUtility.readDouble();
System.out.println("请为程序员配置一台台式电脑:");
PC pc = new PC().addPc();
Programmer programmer = new Programmer(++count, name, age, salary, pc);
employees.add(programmer);
System.out.println("人员添加成功!");
TSUtility.readReturn();
blag = false;
} else if (key.equals("3")) {
System.out.println("当前雇员分配的职位为:设计师");
System.out.println("请输入当前雇员的姓名:");
String name = TSUtility.readKeyBoard(4, false);
System.out.println("请输入雇员的年龄:");
int age = TSUtility.readInt();
System.out.println("请输入此设计师的工资:");
double salary = TSUtility.readDouble();
System.out.println("请为设计师配置一台笔记本电脑:");
NoteBook noteBook = new NoteBook().addNoteBook();
System.out.println("设计师的奖金为:");
double bonus = TSUtility.readDouble();
Designer designer = new Designer(++count, name, age, salary, noteBook, bonus);
employees.add(designer);
System.out.println("人员添加成功!");
TSUtility.readReturn();
blag = false;
} else if (key.equals("4")) {
System.out.println("当前雇员分配的职位为:架构师");
System.out.println("请输入当前雇员的姓名:");
String name = TSUtility.readKeyBoard(4, false);
System.out.println("请输入雇员的年龄:");
int age = TSUtility.readInt();
System.out.println("请输入架构师的工资:");
double salary = TSUtility.readDouble();
System.out.println("请为架构师分配一台打印机:");
Printer printer = new Printer().addPrinter();
System.out.println("请输入此架构师的奖金:");
double bonus = TSUtility.readDouble();
System.out.println("请输入架构师的股票:");
Integer stock = TSUtility.readstock();
Architect architect = new Architect(++count, name, age, salary, printer, bonus, stock);
employees.add(architect);
System.out.println("人员添加成功!");
TSUtility.readReturn();
blag = false;
} else {
System.out.println("你输入的有误!请输入(1-4):");
blag = true;
}
}while (blag);
}
//修改员工
public void modifyEmployee(int id) {
boolean flog = false;
for (int i = 0; i < employees.size(); i++) {
Employee emp = employees.get(i);
if (emp.getId() == id) {
System.out.println("请输入你要修改的员工姓名:");
String name = TSUtility.readString(4, emp.getName());
System.out.println("请输入此员工的年龄:");
int age = Integer.parseInt(TSUtility.readString(2, emp.getAge() + ""));
System.out.println("请输入此员工的工资:");
double salary = Double.parseDouble(TSUtility.readString(10, emp.getSalary() + ""));
emp.setName(name);
emp.setAge(age);
emp.setSalary(salary);
employees.set(i, emp);
flog = true;
}
}
if (flog) {
System.out.println("修改成功!");
}
else {
try {
throw new TeamException("该员工不存在");
} catch (TeamException e) {
System.out.println(e.getMessage());
}
}
}
//删除员工
public void deleteEmployee(int id) throws TeamException {
boolean flag = false;
for (int i = 0; i < employees.size(); i++) {
if (employees.get(i).getId() == id) {
employees.remove(i);
for (i = id; i <= employees.size(); i++) {
employees.get(i - 1).setId(employees.get(i - 1).getId() - 1);
}
flag = true;
}
}
if(flag){
System.out.println("员工删除成功");
}else{
try {
throw new TeamException("该员工不存在!");
}catch (TeamException e){
System.out.println(e.getMessage());
}
}
}
}
🌓开发团队调用管理模块
package com.team.view;
import com.team.domain.Employee;
import com.team.domain.Programmer;
import com.team.service.NameListService;
import com.team.service.TeamException;
import com.team.service.TeamService;
import java.util.ArrayList;
//团队调度界面
public class TeamView {
// NameListService listService = new NameListService();
private TeamService teamService = new TeamService();
private ArrayList<Programmer[]> team = new ArrayList<>();
//主界面显示即控制
public void enterMainMenu() {
boolean loopFlag = true;
char c = 0;
do {
if (c != '1') {
listAllEmployees();
}
System.out.println("1-团队列表 2-添加团队成员 3-删除团队成员 4-退出 请选择(1-4):");
c = TSUtility.readMenuSelection();
switch (c) {
case '1':
getTeam();
break;
case '2':
addMember();
break;
case '3':
deleteMember();
break;
case '4':
System.out.println("是否确定退出(Y/N)");
char yn = TSUtility.readConfirmSelection();
if (yn == 'Y') {
team.add(teamService.getTeam());
teamService.clearTeam();
loopFlag = false;
}
break;
default:
break;
}
}
while (loopFlag);
}
//显示所有成员列表
private void listAllEmployees() {
System.out.println("------------------开发团队调度软件-------------------");
ArrayList<Employee> emp = NameListService.getEmployees();
if (emp.size() == 0) {
System.out.println("没有员工记录!");
} else {
System.out.println("ID\t 姓名\t年龄\t 工资\t 职位\t 状态\t 奖金\t 股票\t 领用设备");
}
for (int i = 0; i < emp.size(); i++) {
System.out.println(" " + emp.get(i));
}
System.out.println("--------------------------------------------------");
}
//显示团队列表
private void getTeam() {
System.out.println("--------------------团队成员列表--------------------");
Programmer[] team = teamService.getTeam();
if (team.length == 0) {
System.out.println("开发团队目前没有开发成员,请先添加!");
} else {
System.out.println("TID/ID\t 姓名\t年龄\t 工资\t 职位\t 奖金\t 股票\t ");
}
for (int i = 0; i < team.length; i++) {
System.out.println(" " + team[i].getDetailsForTeam());
}
System.out.println("--------------------------------------------------");
}
//添加成员操作
private void addMember() {
System.out.println("---------------------添加成员-----------------------");
boolean flag = true;
do {
System.out.println("请输入你想要添加成员的ID号:");
int id = TSUtility.readInt();
try {
Employee e = NameListService.getEmployee(id);
teamService.addMember(e);
System.out.println("添加成功!");
} catch (TeamException e) {
System.out.println("添加失败! 原因:" + e.getMessage());
}
System.out.println("是否继续添加:(Y/N)");
char yn = TSUtility.readConfirmSelection();
if (yn == 'N') {
flag = false;
}
} while (flag);
}
//删除成员操作
private void deleteMember() {
System.out.println("---------------------删除成员-----------------------");
System.out.println("请输入你想要删除成员的ID号:");
int id = TSUtility.readInt();
System.out.print("确认是否删除(Y/N):");
char yn = TSUtility.readConfirmSelection();
if (yn == 'N')
return;
try {
teamService.removeMember(id);
System.out.println("删除成功");
} catch (TeamException e) {
System.out.println("删除失败,原因:" + e.getMessage());
}
// 按回车键继续...
TSUtility.readReturn();
}
public ArrayList<Programmer[]> getAllTeam() throws Exception {
boolean flag = true;
char c = 0;
do {
System.out.println("🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈");
System.out.println("🎈 🎈");
System.out.println("🎈 团队调度界面 🎈");
System.out.println("🎈 🎈");
System.out.println("🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈");
System.out.println("1-添加团队 2-查看团队 3-删除团队 4-退出 请选择(1-4):");
c = TSUtility.readMenuSelection();
switch (c) {
case '1':
enterMainMenu();
break;
case '2':
int count = 1;
System.out.println("----------------------团队列表--------------------");
if (team.size() == 0) {
System.out.println("暂时还没有团队,请先添加团队!");
} else {
System.out.println("ID\t 姓名\t年龄\t 工资\t 职位\t 状态\t 设备\t ");
for (Programmer[] team : team) {
System.out.println("团队" + count++ + ":");
for (int i = 0; i < team.length; i++) {
System.out.println(team[i]);
}
System.out.println("---------------------------------------");
}
}
System.out.println("-------------------------------------------");
break;
case '3':
System.out.println("请输入你想要删除团队的号:");
int num = TSUtility.readInt();
if (num <= team.size()) {
System.out.print("确认是否删除(Y/N):");
char d = TSUtility.readConfirmSelection();
if (d == 'Y') {
team.remove(num - 1);
} else {
System.out.println("退出删除!");
}
} else if (num < 0) {
throw new Exception("你输入的团队号有误,请输入正确的团队号");
} else {
System.out.println("没有该团队,请重新输入!" + "目前团队只有" + team.size() + "个团队");
}
break;
case '4':
System.out.println("是否确定退出(Y/N)");
char yn = TSUtility.readConfirmSelection();
if (yn == 'Y') {
flag = false;
}
break;
default:
break;
}
} while (flag);
return team;
}
}
🌔开发项目管理摸块
package com.team.service;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
import com.team.domain.Programmer;
import com.team.domain.Project;
import com.team.view.TSUtility;
import java.util.ArrayList;
import java.util.Random;
//开发项目管理
public class ProjectService {
private ArrayList<Project> pro = new ArrayList<Project>();//存项目的集合
private int count = 1; //添加项目的标号
//新项目添加
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.setProjectName("小米官网");
p1.setDesName("开发完成类似于小米官网的web项目");
pro.add(p1);
TSUtility.loadSpecialEffects();
System.out.println("已添加项目:" + p1.getProjectName());
break;
case '2':
Project p2 = new Project();
p2.setProId(count++);
p2.setProjectName("公益在线商城");
p2.setDesName("猫宁Morning公益商城是中国公益性在线电子商城");
pro.add(p2);
TSUtility.loadSpecialEffects();
System.out.println("已添加项目:" + p2.getProjectName());
break;
case '3':
Project p3 = new Project();
p3.setProId(count++);
p3.setProjectName("博客系统");
p3.setDesName("Java博客系统,让每一个有故事的人更好的表达想法");
pro.add(p3);
TSUtility.loadSpecialEffects();
System.out.println("已添加项目:" + p3.getProjectName());
break;
case '4':
Project p4 = new Project();
p4.setProId(count++);
p4.setProjectName("在线协作文档编译系统");
p4.setDesName("一个很常用的功能,适合小组内的文档编辑");
pro.add(p4);
TSUtility.loadSpecialEffects();
System.out.println("已添加项目:" + p4.getProjectName());
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(10, false);
Random r = new Random();
int rand = r.nextInt(pro.size());
Project project = this.pro.get(rand);
project.setTeamName(teamName);
project.setTeam(team);
project.setStatus(true);
pro.set(rand, project);
}
//查看项目当前状态
public void showPro() throws InterruptedException {
TSUtility.loadSpecialEffects();
Project p = new Project();
p.toString();
if(pro.size() == 0){
System.out.println("当前还没有项目,请添加项目!");
}
for (int i = 0; i < pro.size(); i++) {
System.out.println(pro.get(i));
}
}
//删除选择的项目
public void deletePr(int id) {
boolean flag = false;
for (int i = 0; i < pro.size(); i++) {
if (pro.get(i).getProId() == id){
pro.remove(i);
for (i = id; i <= pro.size(); i++) {
pro.get(i - 1).setProId(pro.get(i - 1).getProId() - 1);
}
flag = true;
}
}
if (flag) {
System.out.println("删除成功!");
count--;
} else {
try {
throw new TeamException("该项目不存在");
} catch (TeamException e) {
e.printStackTrace();
}
}
}
//得到所有项目数据集合
public ArrayList<Project> getAllPro() {
return pro;
}
}
🌝主界面的实现
package com.team.view;
import com.team.domain.Programmer;
import com.team.domain.Project;
import com.team.service.NameListService;
import com.team.service.ProjectService;
import com.team.service.TeamException;
import java.util.ArrayList;
public class IndexView {
public static final String ANSI_CYAN = "\u001B[36m";
private LoginView log = new LoginView();
private NameListService nameListService = new NameListService();
private TeamView teamView = new TeamView();
private ProjectService projectService = new ProjectService();
private ArrayList<Programmer[]> manyTeam = null;
public void menu() throws Exception, TeamException {
char c = 0;
boolean flag = true;
System.out.println(ANSI_CYAN);
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();
log.register();
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("👇请选择");
c = TSUtility.readMenuSelectionPro();
switch (c) {
case '1':
log.update();
break;
case '2':
try {
nameListService.lookEmployee();
} catch (InterruptedException e) {
e.printStackTrace();
}
boolean loopFlag = true;
char key = 0;
do {
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):");
key = TSUtility.readMenuSelectionPro();
switch (key) {
case '1':
nameListService.addEmployee();
break;
case '2':
try {
nameListService.lookEmployee();
} catch (InterruptedException e) {
e.printStackTrace();
//System.out.println(e.getMessage());
}
break;
case '3':
System.out.println("请输入需要修改员工的ID号:");
int id = TSUtility.readInt();
nameListService.modifyEmployee(id);
break;
case '4':
System.out.println("请输入你想要删除员工的ID号:");
int id1 = TSUtility.readInt();
nameListService.deleteEmployee(id1);
break;
case '5':
System.out.println("是否确定退出(Y/N)");
char yn = TSUtility.readConfirmSelection();
if (yn == 'Y') {
loopFlag = false;
}
break;
default:
System.out.println("你输入的有误!请重新输入!");
break;
}
} while (loopFlag);
break;
case '3':
try{
manyTeam = teamView.getAllTeam();
}catch (Exception e) {
System.out.println("你输入的团队号有误!");
}
break;
case '4':
boolean flags = true;
char keys = 0;
do {
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("👇请选择");
keys = TSUtility.readMenuSelectionPro();
switch (keys) {
case '1':
projectService.addProject();
break;
case '2':
try {
for (Programmer[] pro : manyTeam) {
try {
projectService.dealingPro(pro);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
} catch (Exception e) {
System.out.println("目前没有团队请先添加!");
}
break;
case '3':
projectService.showPro();
break;
case '4':
System.out.println("请输入你要删除的项目号:");
int id = TSUtility.readInt();
projectService.deletePr(id);
break;
case '5':
System.out.println("是否确定退出(Y/N)");
char yn = TSUtility.readConfirmSelection();
if (yn == 'Y') {
flags = false;
}
break;
default:
break;
}
} while (flags) ;
break;
case '5':
System.out.println("是否确定退出(Y/N)");
char yn = TSUtility.readConfirmSelection();
if (yn == 'Y') {
flag = false;
}
}
} while (flag) ;
}
public static void main (String[]args) throws TeamException, Exception {
new IndexView().menu();
}
}
4️⃣ Bug
1.在最开始看到这个项目的时候,脑子是比较混乱的,怎么将每个模块之间建立联系,怎么将每个具体类实现其相关的功能最终达到我们需要的一个输出,等..... 这些问题怎么去解决呢?我觉得最好是自己去画一画流程图,理清思路在进行类的创建并实现。 2.初始化,基本数据类型Java虚拟机是会自动进行初始化;但在我们的对象引用类型变量,这种类属性,就需要明确的进行初始化,不然编译器就会抗议了。 3.对于try-catch也是一样,如果只有在try块里才有初始化语句,编译部通过。如果在 catch或finally里也有,则可以通过编译。总之,要保证局部变量在使用之前一定被初始化了。所以,一个好的做法是在声明他们的时候就初始化他们。 4.开发人员管理和团队人员管理应互通,这个问题是最主要的问题,该怎么去解决呢?这就需要我们对存放开发人员管理的集合静态化,使其能直接访问而不是创建新的对象,如果创建新的对象,就会使内部重新分配一个内存,就不能使数据很好的流通。 5.项目在开发状态,不能被删除;相同的项目名不能重复;团队未添加,直接删除虚拟机会报错;这些问题就需要我们灵活的使用自定义异常来解决了。
5️⃣ 总结
1.通过重写toString()方法可以控制输出格式; 子类构造器的定义,通过super先调用父类的构造器; 2.注意封装性,类属性利用private修饰,通过get/set方法赋值或取值; 3.字符串—>整形:Integer.parseInt(“123”); 多类别重复判断时,switch-case代替if-else; 4.对于数组固定值,可以提前用变量进行存储,使用时更加简洁和直观; 出现错误时,抛出自定义异常(throw new…); 5.调用当前代码的方法就可以用try-catch捕获刚才抛出的异常并处理; 6. 利用team[i] instanceof Designer,来判断当前对象是否属于某类; 父类的引用不能直接调用子类的方法,需要强制转换后才可以调用; 删除数组中某一元素:
第一次做这种项目,有什么不对的地方,望指出
有需要请自行下载👇
https://download.csdn.net/download/CHENZULAN/32534479