由于代码很长所以就放在最后吧。
目录
系统功能结构
系统流程
目标
需求说明
软件设计结构
代码流程
1.用户注册和登录模块
2.开发人员管理模块(domain包)
设计结构
domain模块中包含了所有实体类:
Equipment接口及其实现子类的设计
Employee类及其子类的设计
3.开发人员管理模块(NameService包)
设计结构
4.开发团队调度管理模块
需求说明
3.开发团队调度管理模块
参考实现:TeamService类的设计:
TeamView类的设计
4.开发项目管理模块
源代码
运行效果概览
系统功能结构
系统流程
目标
①模拟实现一个基于文本界面的《项目开发团队分配管理软件》
②熟悉Java面向对象的高级特性,进一步掌握编程技巧和调试技巧
主要涉及以下知识点:
类的继承性和多态性
对象的值传递、接口
static和final修饰符
特殊类的使用:包装类、抽象类、内部类
异常处理
Java基本语法和流程控制
数组,ArrayList集合
需求说明
该软件实现以下功能:
软件启动时,首先进入登录界面进行注册和登录功能。
当登陆成功后,进入菜单,首先就可以对开发人员账户和密码进行修改。
然后可以对开发人员进行增删改操作
人员添加成功后,根据菜单提示,基于现有的公司成员,组建一个开发团队以开发一个新的项目。
组建过程包括将成员插入到团队中,或从团队中删除某成员,还可以列出团队中现有成员的列表,开发团队成员包括架构师、设计师和程序员。
团队组建成功,则可以进入项目模块,添加项目,分配开发团队进行开发。
软件设计结构
domain包:存放该项目所需的类
Service包:各个模块的操作方法(增删改查等等)
View包:界面展示
代码流程
1.用户注册和登录模块
定义一个LoginView类
实现注册方法
如果没有账户则需要注册
如果有账 则直接进行登录
实现登录功能
判断用户输入的值是否正确
如果正确则进入软件菜单
如果错误则重新输入,限制次数只有5次,超过次数则程序停止,重新启动
实现修改用户密码功能
可以实现对用户名,密码,或者两者都可以进行修改即可。
2.开发人员管理模块(domain包)
设计结构
domain模块中包含了所有实体类:
其中程序员(Programmer)及其子类,均会领用某种电子设备(Equipment)。
Equipment接口及其实现子类的设计
说明:
model 表示机器的型
display 表示显示器名称
type 表示机器的类型
根据需要提供各属性的get/set方法以及重载构造器
实现类实现接口的方法,返回各自属性的信息
Employee类及其子类的设计
说明: memberId 用来记录成员加入开发团队后在团队中的ID
Status是项目中人员的状态,先赋值为true,当添加到团队时为false
equipment 表示该成员领用的设备
可根据需要为类提供各属性的get/set方法以及重载构造器
说明:
bonus 表示奖金
stock 表示公司奖励的股票数量
可根据需要为类提供各属性的get/set方法以及重载构造器
3.开发人员管理模块(NameService包)
在NameListService类中完成功能操作
实现员工的添加(根据职业添加(无,程序员,设计师,架构师))
实现员工的修改(至少修改员工的姓名,年龄,工资)
实现员工的删除(注意员工id需要动态显示,也就是删除后,员工id需要更新)
实现员工的查看 (显示所有数据)
设计结构
说明:
getAllEmployees ()方法:获取当前所有员工。 返回:包含所有员工集合
getEmployee(id : int)方法:获取指定ID的员工对象。 参数:指定员工的ID 返回:指定员工对象
异常:找不到指定的员工
在service子包下提供自定义异常类:TeamException
另外,可根据需要自行添加其他方法或重载构造器
按照设计要求编写NameListService类
一个属性为:private ArrayList<Employee> employees
有一个代码块用作数据的填充,如图(注意不同人的身份和设备都不同)
有一个方法:getAllEmployees(),返回employees对象即可
还有一个方法:getEmployee(int id),得到指定id的员工,没有则抛出自定义的异常。
其他方法
4.开发团队调度管理模块
需求说明
团队界面显示公司成员的列表(这些是默认值,请在开发人员管理模块中实现),如下:
如果添加操作因某种原因失败,将显示类似以下信息(失败原因视具体原因而不同):
1-团队列表 2-添加团队成员 3-删除团队成员 4-退出 请选择(1-4):2
———————添加成员———————
请输入要添加的员工ID:2
添加失败,原因:该员工已是某团队成员 按回车键继续…
失败信息包含以下几种: (需要抛出自定义异常)
成员已满,无法添加
该成员不是开发人员,无法添加
该员工已在本开发团队中
该员工已是某团队成员
团队中至多只能有一名架构师(以下判断可借用instanceof进行判断)
团队中至多只能有两名设计师
团队中至多只能有三名程序员
当选择“添加团队成员”菜单时,将执行从列表中添加指定(通过ID)成员到开发团队的功能:
1-团队列表 2-添加团队成员 3-删除团队成员 4-退出 请选择(1-4):
2 ———————添加成员———————
请输入要添加的员工ID:2
添加成功 按回车键继续…
添加成功后,按回车键将重新显示主界面。
开发团队人员组成要求:
最多一名架构师
最多两名设计师
最多三名程序员
当选择“删除团队成员”菜单时,将执行从开发团队中删除指定(通过TeamID)成员的功能:
1-团队列表 2-添加团队成员 3-删除团队成员 4-退出 请选择(1-4):3
———————删除成员———————
请输入要删除员工的TID:1
确认是否删除(Y/N):y
删除成功
按回车键继续…
删除成功后,按回车键将重新显示主界面。
当选择“团队列表”菜单时,将列出开发团队中的现有成员,例如:
1-团队列表 2-添加团队成员 3-删除团队成员 4-退出 请选择(1-4):1
——————–团队成员列表———————
TDI/ID 姓名 年龄 工资 职位 奖金 股票
2/4 刘强东 24 7300.0 程序员 3/2 马化腾 32 18000.0 架构师 15000.0 2000 4/6 任志强 22 6800.0 程序员 5/12 杨致远 27 600.0 设计师 4800.0
3.开发团队调度管理模块
参考实现:TeamService类的设计:
功能:关于开发团队成员的管理:添加、删除等(还需要自行实现)。
说明: counter为静态变量,用来为开发团队新增成员自动生成团队中的唯一ID,即memberId。(提示:应使用增1的方式)
MAX_MEMBER:表示开发团队最大成员数
team数组:用来保存当前团队中的各成员对象 (也可以用一个新的集合)
total:记录团队成员的实际人数
说明:
getTeam()方法:返回当前团队的所有对象
返回:包含所有成员对象的数组,数组大小与成员人数一致
addMember(e: Employee)方法:向团队中添加成员
参数:待添加成员的对象
异常:添加失败, TeamException中包含了失败原因
removeMember(memberId: int)方法:从团队中删除成员
参数:待删除成员的memberId
异常:找不到指定memberId的员工,删除失败
另外,可根据需要自行添加其他方法或重载构造器
TeamView类的设计
说明: listSvc和teamSvc属性:供类中的方法使用
enterMainMenu ()方法:主界面显示及控制方法。
以下方法仅供enterMainMenu()方法调用:
listAllEmployees ()方法:以表格形式列出公司所有成员
getTeam()方法:显示团队成员列表操作
addMember ()方法:实现添加成员操作
deleteMember ()方法:实现删除成员操作
4.开发项目管理模块
在domain包中完成项目实体类Project的创建
在service包中完成项目操作类ProjectService的创建
源代码
Package domain:
1.Architect.java
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!