目录
一、引言
实践是检验真理的唯一标准,项目开发团队分配管理软件这个项目综合的涉及了Java基础知识,在第一次接触实践项目的练习后,遇到了很多问题,但是从问题中学习到了更多的知识,接下来跟大家分享一下我在这次项目中的一些心得。
二、实现过程
在拿到项目的第一件事情就是分析开发需求文档,只有了解清楚需求才能实现功能。
1、确定开发方向
从整体来分析,明确项目的系统流程、系统功能结构,确定项目开发的方向。
(1)系统流程图

(2)系统功能结构

2、设计结构
从每一个部分,根据具体需求来设计软件结构,使其条理清晰便于查看,修改。
(1)需求说明

(2)软件设计结构

最后根据系统功能结构对项目的功能进行编程,一点一点的完成整个项目的开发,具体功能实现就不一一说明了,主要讲一讲实现过程中遇到的一些问题以及处理的方法。
三、 问题以及解决
1、异常信息修改
为了让用户有更好的体验,在出现异常后要让用户明白问题是什么,在用户选择错误可能会导致出现异常的地方都需要进行异常信息的修改以防止程序的终止运行导致用户体验不佳。
例如:
代码解决演示
private void addMember(){//添加新成员
System.out.println("-------------------添加成员-----------------------");
System.out.println("请输入要添加员工的ID");
int id = TSUtility.readInt();
try{
Employee e = listSvc.getEmployee(id);
teamSvc.addMember(e);
System.out.println("添加成功!");
}catch (TeamException e){
System.out.println("添加失败,原因:"+e.getMessage());
}
TSUtility.readReturn();
}
2、成员变动后id自动更新
在每一次添加或者删除成员后,员工的id都应该自动更新。
代码实现演示
//删除
public void delEmployee(int id){
boolean flag = false;
for(int i =0;i<employees.size();i++){
if(employees.get(i).getId()==id){//通过id查找,删除索引处的id
employees.remove(i);
for(i = id;i<=employees.size();i++){
employees.get(i-1).setId(employees.get(i-1).getId()-1);//删除后更新id
}
flag = true;
}
}
if(flag){
System.out.println("删除成功!");
count--;
}else {
try {
throw new TeamException("该员工不存在!");
}catch (TeamException e){
System.out.println(e.getMessage());;
}
}
}
3、项目重复添加的问题
项目分配后不能再进行添加,一个项目只能添加一次,需要再项目添加前进行判断条件,以及判断后给出提示。
代码演示
int aa = -1;
int bb = -1;
int cc = -1;
int dd = -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.setProName("小米官网");
p1.setDesName("开发完成类似小米官网的web项目。");
if (aa == -1) {
pro.add(p1);
TSUtility.loadSpecialEffects();
System.out.println("已添加项目:" + p1.getProName());
aa++;
} else {
System.out.println(p1.getProName() + "已添加,请勿重复添加!");
}
break;
case '2':
Project p2 = new Project();
p2.setProId(count++);
p2.setProName("公益在线商城");
p2.setDesName("猫宁Morning公益商城是中国公益性的在线电子商城");
if (bb == -1) {
pro.add(p2);
TSUtility.loadSpecialEffects();
System.out.println("已添加项目:" + p2.getProName());
bb++;
} else {
System.out.println(p2.getProName() + "已添加,请勿重复添加!");
}
break;
case '3':
Project p3 = new Project();
p3.setProId(count++);
p3.setProName("博客系统");
p3.setDesName("java博客系统,让每一个有故事的人更好的表达想法!");
if (cc == -1) {
pro.add(p3);
TSUtility.loadSpecialEffects();
System.out.println("已添加项目:" + p3.getProName());
cc++;
} else {
System.out.println(p3.getProName() + "已添加,请勿重复添加!");
}
break;
case '4':
Project p4 = new Project();
p4.setProId(count++);
p4.setProName("在线协作文档编辑系统");
p4.setDesName("一个很常用的功能,适合小组内的文档编辑!");
if (dd == -1) {
pro.add(p4);
TSUtility.loadSpecialEffects();
System.out.println("已添加项目:" + p4.getProName());
dd++;
} else {
System.out.println(p4.getProName() + "已添加,请勿重复添加!");
}
break;
default:
System.out.println("项目不存在");
break;
}
}
代码解析,通过定义aa,bb,cc,dd等于-1,当项目被分配出去后aa,bb,cc,dd的值进行更改,下一次分配项目就不允许再添加,也就解决了项目重复添加的问题,并且给出了提示。
4、项目在开发状态时不能被删除
当项目的状态为开发时,那么就不能执行删除项目的功能,需要在删除项目前添加一个状态判断条件用于防止开发中的项目被删除。
代码解决演示
public void delPro(int id) {
boolean flag = false;
for (int i = 0; i < pro.size(); i++) {
if (pro.get(i).getProId() == id) {
if (pro.get(i).isStatus() == false) {
System.out.println("当前项目正在开发无法删除");
return;
}
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) {
System.out.println(e.getMessage());
}
}
}
5、数据共享的问题(重点)
在涉及两个模块时,集合无法实现数据的互通,也就是我在上一个模块进行成员的添加,删除等操作,更改了数据的信息,然而在下一个模块数据却没有发生改变。这个问题可以采用stastic修饰符来进行解决,静态修饰后可以实现数据的共享,但是同时也会导致打印两次数据,一次是初始化数据,一次时更新后的数据,所以需要加上判断条件boolean isEmpty()来进行限制。
代码演示
public class NameListService {
private static ArrayList<Employee>employees=new ArrayList<>();//存储员工数据的集合
private int count = 1;
{
if (employees.isEmpty())
四、总结
1、在项目编程前先要做好项目的流程、功能结构等方向性的分析,明确需求,根据需求去实现功能,每完成一个功能都需要先去测试一番,保证每一个具体功能没有bug,那么项目整体运行起来问题就会少很多了。
2、项目的代码的分类,也就时软件设计结构,可以按照domain、service,view来分别存放,方便查看,修改。
3、合理运用工具类,对代码进行优化,提升用户体验感。
本文分享了作者在开发Java项目团队分配管理软件时的心得体会,包括确定开发方向、设计系统结构,以及在异常处理、成员变动、项目重复添加、项目删除和数据共享等问题上的解决方案。通过这次实践,作者强调了需求分析、代码结构和测试的重要性,提倡合理利用工具优化代码以提升用户体验。

374

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



