项目大纲

  • 项目介绍
    • 【项目前提】
    • 【项目说明】
    • 【项目结构】
    • 【项目需求】
    • 【项目设计框架】
  • 系统功能设计
    • 用户登录和注册
    • 开发人员管理
    • 开发团队调度管理
    • 开发项目管理
  • 各系统功能合并
    • 合并过程
    • 注意事项
  • 心得体会


项目详细代码,提取码: hwrk

项目介绍

【项目前提】

掌握java基本语法
    熟悉使用流程控制
        了解Arraylist集合的基本
            理解面向对象思想
                熟练 封装,继承,多态
                    熟悉使用接口,异常

【项目说明】

1、本实践项目是一个项目开发团队分配管理系统,可以对开发人员和开发团队进行统一管理,并且可以给一个项目分配一个团队进行开发。团队组建过程包括将成员插入到团队中,或从团队中删除某成员,还可以列出团队中现有成员的列表开发团队成员包括架构师、设计师和程序员。最后,需要完成每一个项目都能有一个开发团队在进行开发即可。

2、本实践项目有四个模块:用户注册和登录模块开发人员管理模块开发团队调度管理模块开发项目管理模块

【项目结构】

【项目需求】

软件启动时,首先进入登录界面进行注册和登录功能。

当登陆成功后,进入菜单,首先就可以对开发人员账户和密码进行修改。 然后可以对开发人员进行增删改操作

人员添加成功后,根据菜单提示,基于现有的公司成员,组建一个开发团队以开发一个新的项目。

组建过程包括将成员插入到团队中,或从团队中删除某成员,还可以列出团队中现有成员的列表,开发团队成员包括架构师、设计师和程序员。

团队组建成功,则可以进入项目模块,添加项目,分配开发团队进行开发.

【项目设计框架】

1、创建一个MainMenu类,用于编写各个系统的访问界面,在这个类中,调用各个系统的功能类。

代码如下:

public class MainMenu {//主菜单界面public void mainInterface(){}//登录和注册界面public void loginInterface(){}//开发人员管理界面public void developerManage(){}//开发团队人员管理界面public void developerteamManagement(){}//团队管理界面public void teamManagement(){}//项目管理界面public void projectManagement(){}public static void main(String[] args){}}



2、创建一个operate包,将 MainMenu类各个系统的功能类 都放入其中。




3、创建一个tool_class包,用于存放异常类(自定义的异常)和一个工具类(该工具类用于从替代键盘输入

设计好大致的框架,后面我们要做的就是将每一个系统的功能设计出来,然后统一进行合并的衔接。




--------------------------------------------------------------------------------完美分割线-------------------------------------------------------------------------------------

系统功能设计




-------------------小小分割线------------------------

用户登录和注册

用户需要在登录界面进行登录进入到系统中去,这里的用户指的是管理人员。考虑到用户是否有账号这一情况,需要设计注册功能;还有用户要修改密码,也需要设计用户修改功能


1、创建一个登录界面。

因为登录时的情况分为有账号无账号两种情况,所以用if语句进行判断,然后为了键盘输入一次后能再进行选择,在外面又嵌套一个while循环。

后面为了在MainMenu中调用,进行用户信息修改,这里将返回值设定为一个用户信息类的集合。

注意:register 方法 和 login 方法后面会提到

代码如下:

//登录界面public static ArrayList<ManagementInfor> loginInterface() {ArrayList<ManagementInfor> al = new ArrayList<>();System.out.println("---------用户登录界面---------");Scanner sc = new Scanner(System.in);while (true) {System.out.println("请问您是否已有账号? (请输入有或无)");String s = sc.nextLine();if (s.equals("无")) {System.out.println("------------------");System.out.println("您已进入账号注册系统");register(al);System.out.println("注册成功");System.out.println("------------------");} else if (s.equals("有")) {System.out.println("------------------");System.out.println("您已进入账号登录系统");login(al);System.out.println("登录成功");System.out.println("------------------");break;} else {System.out.println("输入错误,请重新输入");}}return al;}



2、创建一个用户信息类ManagementInfor

登录的管理员只需要一个ID和密码,所以在用户信息类中只需要有两个成员变量ID和card,然后写上set/get方法,还有该类的有参和无参构造。


代码如下:

public class ManagementInfor {private String ID;private String card;public ManagementInfor() {}public ManagementInfor(String ID, String card) {this.ID = ID;this.card = card;}public String getCard() {return card;}public void setCard(String card) {this.card = card;}public String getID() {return ID;}public void setID(String ID) {this.ID = ID;}
}



3、创建三个功能的方法

( 1 )注册方法 register():

此时我们是没有账号的,用户信息集合中也是没有对象的,所以先创建一个用户信息类的对象来存储即将注册的用户信息。

代码如下:

    ManagementInfor mf = new ManagementInfor();



从键盘录入信息后,将录入的信息传递到用户信息表中,然后将该对象传入集合中。

代码如下:

        mf.setID(s1);mf.setCard(s2);al.add(mf);



( 2 )登录方法 login():

首先要从键盘录入用户信息。创建一个boolean类型的变量flag,初始值为false,用于判断用户是否存在。

然后在集合进行for循环,看是否有账户信息与键盘录入一致的对象,如果有,令flag为true。

     if (id.equals(s1) && card.equals(s2)) {flag = true;break;} else {flag = false;}

最后对flag进行判断,如果为true就登录成功,如果为false就重新输入,为了能够重新输入,需从键盘输入开始到判断flag,将整个过程用while循环包起来。
(详细代码见链接)


( 3 )修改方法 insert():

首先键盘录入需要修改的用户的ID。创建一个boolean类型的变量flag,初始值为false,用于判断用户是否存在。

然后在集合中进行for循环,查询是否有这个ID,如果有就令flag=true。

for (int i = 0; i < al.size(); i++) {String name = al.get(i).getID();if (name.equals(id)) {flag = true;break;}}

然后对flag进行判断,如果为true就可以重新录入新的用户信息,如果为false就会退出报错并退出修改,要想再修改需重新进入。




-------------------小小分割线------------------------

开发人员管理

创建一个NameListService类完成开发人员管理模块,并创建一个成员变量:

ArrayList<Employee> employees=new ArrayList<>();


1、创建各个类的实体类

Employee(雇员)—>Programmer (程序员)—>Designer(设计师)
—>Architect(架构师)

Equipment(工具)—>PC(台式电脑) Equipment(工具)—>NoteBook(笔记本电脑)
Equipment(工具)—>Printer(打印机)

Employee(雇员)实现了Equipment(工具)接口
Equipment(工具)接口包含方法:String getDescription();

(详细代码请看链接)



2、创建实现功能的方法

做开发人员管理的功能设计,需要设计以下方法:

初始化:这里的初始化是提前录入一些数据,以便于后面进行测试。


查询:(显示所有数据)

直接用for循环将员工集合里的每一个对象的信息都打印出来

    for (int i = 0; i < employees.size(); i++) {System.out.println(employees.get(i));}


添加信息:(根据职业添加(无,程序员,设计师,架构师))

因为这里有四个选项,故我使用了switch语句来进行循环;我们以程序员举例,通过键盘录入程序员的每条信息后,创建一个Programmer对象,使用Programmer类的有参构造方法赋值,程序员的工具是Equipment的子类PC,又创建一个PC对象,并使用有参构造方法赋值。然后将该Programmer 对象添加到员工集合中。

代码如下:

            case 2:System.out.print("请输入当前雇员的姓名:");String name2=TSUtility.readKeyBoard(4,false);System.out.print("请输入当前雇员的年龄:");int age2=TSUtility.readInt();System.out.print("请输入当前雇员的工资:");double salary2=TSUtility.readDouble();System.out.println("请为当前雇员配一台好的台式电脑");System.out.print("请输入台式电脑的机器型号:");String model2=TSUtility.readKeyBoard(10,false);System.out.print("请输入台式电脑的显示器名称:");String display2=TSUtility.readKeyBoard(10,false);PC pc=new PC(model2,display2);Programmer programmer=new Programmer(++count,name2,age2,salary2,pc);employees.add(programmer);System.out.println("人员添加成功!");TSUtility.readReturn();break;


删除信息:(注意员工id需要动态显示,也就是删除后,员工id需要更新)

删除的思路是一样的,先键盘输入要删除的员工id,然后用for循环查看该员工是否存在

如果存在则删除成功,如果不存在则抛出异常。
代码如下:

        if (flag){System.out.println("删除成功");}else {throw new TeamException("该员工不存在");}


修改信息:(至少修改员工的姓名,年龄,工资)

先键盘输入要修改的员工id,再利用for循环寻找该员工是否存在

若存在,就键盘录入要修改的信息;若不存在,就抛出异常。

我这里设计的是如果抛出了异常,那么就重新返回到键盘输入id那里,故要从键盘输入id到判断结尾处添加一个while循环。


获取指定的某个成员的信息:获取指定ID的员工对象。

通过形参传入要获取的员工对象的ID,然后用for循环查询该员工是否存在。

如果存在,打印该员工的信息并返回;如果不存在,则抛出异常。


(详细代码请看链接)



-------------------小小分割线------------------------

开发团队调度管理


每个开发团队都需要管理其中的人员,所以我们需要创建一个用来管理开发团队里的人员的类TeamServer。

(1)首先,我们要先创建一些成员变量。

int counter=1;  //为静态变量,用来为开发团队新增成员自动生成团队中的唯一ID
final int MAX_MEMBER=5; //表示开发团队最大成员数
int total=0; //记录团队成员的实际人数
Programmer[] team=new Programmer[MAX_MEMBER]; //用来保存当前团队中的各成员对象

(2)然后创建了一个初始化Programmmer数组的方法,还有返回数组成员的方法,因为后面会对团队进行添加、删除和查询,所以这两个方法是必须创建的。

    //返回team中所有程序员构成的数组public Programmer[] getTeam(){}//初始化当前团队成员数组public void clearTeam()


(3)创建查询方法,用一个for循环将数组中的数据都打印出来,注意此时人员的id有两个,一个是开发人员系统里的id,一个是开发团队人员系统里的memberId(我写的时候写错了,把i写成了l,因为后面引用太多,不方便修改),故打印的时候要将两个都打印出来。

        for (int i = 0; i < total; i++) {System.out.println(team[i].getMemberld()+"\\"+team[i]);}


(4)创建添加方法,直接键盘输入要添加的员工id,然后直接调用开发人员管理系统的员工集合。在添加时,有以下的一些规定:

成员已满,无法添加

该成员不是开发人员,无法添加

该员工已在本开发团队中 该员工已是某团队成员

团队中至多只能有一名架构师(以下判断可借用instanceof进行判断)

团队中至多只能有两名设计师 团队中至多只能有三名程序员

出现以上的情况就要抛出异常。


(5)创建删除方法

首先键盘输入要删除的成员的团队id(memberId)。

然后利用for循环找到指定memberId的员工,并删除。

如果遍历一遍,都找不到,则报异常。

然后又用for循环,使后面的元素覆盖前面的元素

      for (int i = n + 1; i < total; i++) {team[i].setMemberld(i);team[i - 1] = team[i];}team[--total] = null;



2、在MainMenu中创建团队管理界面的方法




-------------------小小分割线------------------------

开发项目管理

1、创建项目类Project

创建以下成员变量,并写出set/get方法,还有类的有参和无参构造。

    int prold;  //项目号String projectName; //项目名称String desName; //项目介绍Programmer[] team; //开发团队String teamName; //开发团队名称boolean status=false; //开发状态 status=false(true为开发中,false为未开发中))



2、创建实现功能的方法

(1)项目的添加

键盘输入项目的名称和介绍。

然后创建一个新的项目,并传入数据。

        Project p=new Project();p.setProld(count++);p.setProjectName(projectName);p.setDesName(desName);

再将该对象添加到项目的集合pro中



(2)项目分配团队

分配团队、分配项目,然后给分配好的团队取名
(注意:在分配团队和项目的时候,都要查询团队和项目是否存在,如果不存在,都需要抛出异常)

然后创建项目对象,将数据传入进去,注意要把Project中的status状态改为true,表示该项目已被开发。



(3)查看项目当前状态

用for循环将项目里的对象的信息都打印出来

        for (int i = 0; i < pro.size(); i++) {System.out.println(pro.get(i));}



(4)项目的删除

首先键盘输入要删除的项目编号,并查询是否存在,若不存在要抛出异常。

如果项目存在,又查看该项目的status。如果为true(开发状态)就不能删除,因为开发状态中的项目是不能够删除的,这时就要抛出异常并退出;如果为false(未开发状态)便可用remove方法将该项目删除。

        if (flag){if (pro.get(temp).isStatus()){throw new TeamException("该项目正在被开发中,无法删除");}else {pro.remove(temp);System.out.println("删除成功");count--;}


(详细代码请看链接)



-------------------小小分割线------------------------


--------------------------------------------------------------------------------完美分割线-------------------------------------------------------------------------------------

各系统功能合并

合并过程

用户登录和注册系统 LoginServer

开发人员管理系统 NameListServer

开发团队管理系统 TeamServer

项目管理系统 ProjectServer

在MainMenu类中,创建以上类对应的方法,并调用类的成员方法,完成各个系统的功能。

创建各个功能类的对象,还有需要使用到的集合对象,代码如下:

    private ArrayList<ManagementInfor> al=loginInterface();private ArrayList<Programmer[]> team_sum = new ArrayList<>();private ArrayList<Employee> employees=new ArrayList<>();TeamServer teamServer=new TeamServer();NameListService nls=new NameListService();ProjectService pjs=new ProjectService();

然后创建一个主菜单界面方法mainInterface,将各个系统对应的方法在其中调用。

最后在main方法中创建一个MainMenu的对象,调用mainInterface方法。

-------------------小小分割线------------------------

注意事项

(1)在打印信息时,可以打印出想要的信息,这需要到实体类中重写toString方法,而打印时可以不用调用toString方法。

(2)凡是删除、修改或者查询都需要查看该对象是否存在。

(3)抛出异常后,统一在调用界面的方法里进行try/catch处理,否则会报错并直接退出

--------------------------------------------------------------------------------完美分割线-------------------------------------------------------------------------------------

心得体会

写完这个管理系统,又经过老师的验收后,发现自己有很多的细节并没有做到,要是给客户看,肯定会很不满意。
自己在构建大体结构上还是很有心得的,只是在以后的项目实践中要注意一些小细节,这些细节都是以后的客户可能很看重的。

学无止境

【面向对象应用~.~】——项目开发团队分配管理软件相关推荐

  1. 项目开发团队分配管理软件总结

    目录 前言 一.项目需求 二.主要思路 三.系统流程 四.代码实现 4.1 登录 4.2 开发人员管理模块 4.3开发团队调度管理模块 4.4开发项目管理模块 4.5 IndexView类的设计 五. ...

  2. Java综合项目----开发团队分配管理软件

    Java综合项目----开发团队分配管理软件 源代码下载地址: 简介 需求说明 系统功能结构 系统流程 用户注册和登录模块 开发人员管理模块 Equipment接口及其实现子类的设计 Employee ...

  3. Java 项目开发团队分配管理软件

    目录 1 系统结构功能 2 系统流程 3 软件设计 3.0 前提 3.1 用户注册登录模块 3.2 开发人员管理模块 在这个模块中,我们需要创建几个实体类 3.3 开发团队调度管理模块 3.3.1 需 ...

  4. 【JAVA】项目开发团队分配管理软件

    目录 前言: 一.系统功能结构 二.系统流程 三.实现思路 四.常见问题 五.具体实现代码 六.全部代码 前言: 模拟实现一个基于文本界面的<项目开发团队分配管理软件> 熟悉Java面向对 ...

  5. 项目开发团队分配管理软件

    一.目标 1.模拟实现一个基于文本界面的<项目开发团队分配管理软件>: 2.熟悉Java面向对象的高级特性,进一步掌握编程技巧和调试技巧. 3.主要涉及以下知识点: 类的继承性和多态性 对 ...

  6. java实现、项目开发团队分配管理软件

    目标: 模拟实现一个基于文本界面的<项目开发团队分配管理软件> 熟悉Java面向对象的高级特性,进一步掌握编程技巧和调试技巧 主要涉及以下知识点: 类的继承性和多态性 对象的值传递.接口 ...

  7. 实现一个项目开发团队分配管理软件思路及过程

    做一个项目之前首先要知道做什么?实现什么功能?得到什么效果?然后再理思绪以及怎么做,慢慢来,一口吃不成个胖子,切忌一上来就动手做,简单的代码还好,一旦代码更多更复杂进行到后面就很容易乱成一锅粥,所以我 ...

  8. 项目 开发团队分配管理软件

    一.系统功能结构 二.系统流程 三.实现 以下功能不分先后 3.1账户 3.1.1账户类 3.1.2账户管理类 3.2开发人员 3.2.1架构师类 3.2.2开发人员管理类 3.2.3无职务类 3.2 ...

  9. 实践项目《项目开发团队分配管理软件》

    引言 学习接触java有一段时间了,过了一关又一关,掌握并且应用了许多知识同时也在遗忘,第一次接触包含各个部分内容的对我来说大型的项目.在写博客总结的时候回顾为这个项目敲下第一个字符的时候,觉得我能坚 ...

最新文章

  1. mysql去重保留最后一个_MySQL-去重留一
  2. Spring boot整合dubbo
  3. 为什么有人说面向对象编程就是面向接口编程?
  4. 使用ThreadLocal不当可能会导致内存泄露
  5. Java程序开发三步骤:编写、编译、运行
  6. ffmpeg的学习-00
  7. Qt文档阅读笔记-Image QML官方解析与实例
  8. Linux系统调用表:x86和x86_64
  9. linux模拟dnf,每天学一个 Linux 命令:dnf
  10. Spring 注解 @Controller,@Service,@Repository,@Component,重定向 与 服务端跳转
  11. java中bool_java中boolean用法
  12. ubuntu 卸载mysql_Ubuntu16.04彻底卸载MySQL
  13. _stdcall相关
  14. python_基础部分(1)
  15. QML_虚拟键盘使用
  16. 顺丰,四通一达,京东,百世,天天,德邦快递接口java-demo【快递100API】
  17. 关于Linux的那些事儿--系统状态检测命令
  18. Java中关于空格遇到的一些问题
  19. apos mysql,The /usr/local/mysql/data directory is not owned by the apos;mysqlapos; to apos;_mysql...
  20. 教师资格证面试题库中职计算机,2017年高中信息技术教师资格证面试真题及答案(第四批)...

热门文章

  1. 平塘天眼和大数据有什么关系_“中国天眼”选址贵州平塘的缘由
  2. [工具]更新音乐下载网站,MP3音乐无损音乐下载器
  3. C++模板/泛型编程
  4. java EE单例Singleton自启动
  5. wireshark分析oracle报错,Linux下抓包工具tcpdump以及分析包的工具wireshark
  6. 逻辑回归三部曲——逻辑回归项目实战(信贷数据+Python代码实现)
  7. 一首沉下来特别好听的歌
  8. 共享网约车Uber的前世今生
  9. python中pymysql的小坑
  10. 宝宝小暑吃什么,祛湿健脾,温补阳气