Java实现部门员工管理
作者:四维空间中的未知点 发布时间:2021-07-21 21:40:41
本文实例为大家分享了Java实现部门员工管理的具体代码,供大家参考,具体内容如下
项目作业:部门员工管理
题目要求:
某公司要开发内部的 “办公信息化管理系统”,请使用面向对象的思想描述以下员工信息。
程序运行参考效果图如下:
任务描述
一、程序整体要求
划分功能模块,根据题目要求设置不同的包和类,在类中实现相应功能的管理。
类的标识要清楚易懂,代码结构要层次分明,代码编辑思路要清晰、整洁。
要求Java代码书写、命名符合规范,属性所属数据类型要准确合理,在代码中添加必要的注释,程序运行效果与提供的页面效果图、结构保持一致,信息间分隔符“=”号数量不做统一要求,文字大小、颜色也不做统一要求,将作业项目形成压缩文件并提交。
二、思路分析
由场景和运行效果,可以分析出项目中可以抽取如下类(要求编码时注意面向对象思想及封装特性的应用):
1、部门类:
类型描述:能够描述部门编号、部门名称、员工数组、统计部门中的员工个数
要求:设定方法统计该部门员工个数
提示:部门类的属性有四个,分别是部门编号,部门名称,员工数组 和 统计变量 ,具体是市场部还是人事部,是通过部门类的对象来表示的,如果是市场部的对象,那么添加并统计的就是市场部的人数,同样如果是人事部的对象,添加并统计的就是人事部的人数。
2、职务类:
类型描述:能够描述职务编号、职务名称。
3、员工类:
类型描述:能够描述员工姓名、工号、年龄、性别、所属部门、职务信息
要求:
1、 设定方法限定年龄只能是18--65之间,反之则设置默认为18岁
2、 设定方法限定性别只能是“男”或者“女”,反之则设置默认为"男"(使用字符串的equals()方法)
3、 设定方法,实现员工自我介绍信息,将员工信息作为字符串返回
4、测试类:
类型描述:测试程序,并参照效果图输出结果
注意:可以在属性上添加适当的信息验证,提高信息的安全性
评分标准:
1、规范【10分】
每个类都封装在自己独立的 ".java"文件中;
文件、class、成员变量命名规范;
代码结构要层次分明;
Java代码规范及添加适量注释。
2、程序整体运行效果【10分】
程序正常运行效果,且满足效果图要求。信息间分隔符“=”号数量不做统一要求
3、部门类【22分】
能够描述部门编号、部门名称、获取所有该部门员工信息;设定方法,完成统计该部门员工个数的功能
4、职务类【6分】
能够描述职务编号、职务名称
5、员工类【34分】
能够描述员工姓名、工号、年龄、性别、所属部门、职务信息;
设定方法来约束年龄的范围;
设定方法来限定性别的选择;
设定方法,实现员工自我介绍信息,将员工信息作为字符串返回
6、测试类【18分】
测试程序,将题目中的员工信息传入到程序中,参照效果图输出结果
package com.staff;
//部门类
public class Department{
private String DNumber; //部门编号
private String DName; //部门名称
private Staff[] Staff=new Staff[10]; //定义一个Staff类的员工数组
private int StaffNum; //员工人数
public void setDNumber(String DNumber)
{
this.DNumber=DNumber;
}
public String getNumb0er()
{
return DNumber;
}
public void setDName(String DName)
{
this.DName=DName;
}
public String getDName(){
return DName;
}
public void setStaff(Staff Staff[])
{
this.Staff=Staff;
}
public Staff[] getStaff()
{
return Staff;
}
public void setStaffNum(int StaffNum)
{
this.StaffNum=StaffNum;
}
public int getStaffNum()
{
return StaffNum;
}
//定义构造方法,获得DNumber和DName的值
public Department(String DNumber,String DName){
this.setDNumber(DNumber);
this.setDName(DName);
}
/*将员工保存到数组中*/
public void togetherStaff(Staff Sta){
for (int i=0;i<this.getStaff().length;i++){
if(this.getStaff()[i]==null){
this.getStaff()[i]=Sta;
this.StaffNum=i+1;
return;
}
}
}
}
package com.staff;
//职务类
public class Office{
private String ONumber; //职务编号
private String OName; //职务名称
public void setONumber(String ONumber)
{
this.ONumber=ONumber;
}
public String getONumber(){
return ONumber;
}
public void setOName(String OName){
this.OName=OName;
}
public String getOName()
{
return OName;
}
//定义构造方法,获得ONumber和OName的值
public Office(String ONumber,String OName){
this.setONumber(ONumber);
this.setOName(OName);
}
}
package com.staff;
//员工类
public class Staff{
private String Name; //员工姓名
private String Number; //员工工号
private int Age; //员工年龄
private String Sex; //员工性别
private Department department; //员工所属部门
private Office officeInfo; //员工职务信息
public void setName(String name){
this.Name=name;
}
public String getName(){
return Name;
}
public void setNumber(String Number){
this.Number=Number;
}
public String getNumber(){
return Number;
}
public void setAge(int Age){
if (Age<18||Age>65){
System.out.println("年龄只能在18~65岁之间,如果不在,则默认为18岁");
this.Age=18;
}
else
this.Age=Age;
}
public int getAge(){
return Age;
}
public void setSex(String Sex){
if(!Sex.equals("男") && !Sex.equals("女")){
System.out.println("输入性别有误,默认值为男");
this.Sex="男";
}
else
this.Sex=Sex;
}
public String getSex(){
return Sex;
}
public void setDepartment(Department department) {
this.department=department;
}
public Department getDepartment(){
return department;
}
public void setOfficeInfo(Office officeInfo) {
this.officeInfo = officeInfo;
}
public Office getOfficeInfo(){
return officeInfo;
}
//定义构造方法,分别获得员工姓名,员工工号,员工性别,员工姓名,员工所属部门,员工职务信息
public Staff(String Name,String Number,String Sex,int Age,Department department,Office officeInfo){
this.setName(Name);
this.setNumber(Number);
this.setSex(Sex);
this.setAge(Age);
this.setDepartment(department);
this.setOfficeInfo(officeInfo);
}
//定义普通方法,返回员工所有基本信息
public String staffIntroduction(){
return "姓名:"+ this.getName()+"\n工号:"+ this.getNumber()+"\n年龄:"+ this.getAge()+"\n性别:"+ this.getSex()+"\n职务:"+ this.getDepartment().getDName()+ this.getOfficeInfo().getOName();
}
}
package com.staff;
//员工类
public class Staff{
private String Name; //员工姓名
private String Number; //员工工号
private int Age; //员工年龄
private String Sex; //员工性别
private Department department; //员工所属部门
private Office officeInfo; //员工职务信息
public void setName(String name){
this.Name=name;
}
public String getName(){
return Name;
}
public void setNumber(String Number){
this.Number=Number;
}
public String getNumber(){
return Number;
}
public void setAge(int Age){
if (Age<18||Age>65){
System.out.println("年龄只能在18~65岁之间,如果不在,则默认为18岁");
this.Age=18;
}
else
this.Age=Age;
}
public int getAge(){
return Age;
}
public void setSex(String Sex){
if(!Sex.equals("男") && !Sex.equals("女")){
System.out.println("输入性别有误,默认值为男");
this.Sex="男";
}
else
this.Sex=Sex;
}
public String getSex(){
return Sex;
}
public void setDepartment(Department department) {
this.department=department;
}
public Department getDepartment(){
return department;
}
public void setOfficeInfo(Office officeInfo) {
this.officeInfo = officeInfo;
}
public Office getOfficeInfo(){
return officeInfo;
}
//定义构造方法,分别获得员工姓名,员工工号,员工性别,员工姓名,员工所属部门,员工职务信息
public Staff(String Name,String Number,String Sex,int Age,Department department,Office officeInfo){
this.setName(Name);
this.setNumber(Number);
this.setSex(Sex);
this.setAge(Age);
this.setDepartment(department);
this.setOfficeInfo(officeInfo);
}
//定义普通方法,返回员工所有基本信息
public String staffIntroduction(){
return "姓名:"+ this.getName()+"\n工号:"+ this.getNumber()+"\n年龄:"+ this.getAge()+"\n性别:"+ this.getSex()+"\n职务:"+ this.getDepartment().getDName()+ this.getOfficeInfo().getOName();
}
}
来源:https://blog.csdn.net/CNSA183_20/article/details/124518378


猜你喜欢
- 注解定义: 注解是一种注释机制,它可以注释包、类、方法、变量、参数,在编译器生成类文件时,标注可以被嵌入到字节码中。注解的分类:内置注解Ov
- 一、系统介绍本系统实现扑克的分发,抢地主,电脑自动出牌等功能。二、系统展示1.扑克分发2.抢地主3.出牌4.游戏胜利三、系统实现Card.j
- 在日常Android手机的使用过程中,根据电话号码获得联系人头像,是经常会碰到的问题。本文即以实例形式讲述了Android根据电话号码获得联
- 在算法面试中,面试官总是喜欢围绕链表、排序、二叉树、二分查找来做文章,而大多数人都可以跟着专业的书籍来做到倒背如流。而面试官并不希望招收的是
- 下面一段代码给大家分享了android中判断手机是否安装了qq或者微信,代码简单易懂,非常不错,具有参考借鉴价值,需要的的朋友参考下吧pub
- 本文实例为大家分享了DigitalClock实现商品倒计时的具体代码,供大家参考,具体内容如下自定义DigitalClock控件:packa
- 一次性全部绘制出来实现代码import java.awt.*;public class AlgoVisualizer {private st
- SpringBoot访问html和js等静态资源配置把静态资源放到resources/static下,这是springboot静态资源默认访
- mq是实现代码扩展的有利手段,个人喜欢用概念来学习新知识,介绍堵塞问题的之前,先来段概念的学习。ConnectionFactory:创建co
- 序列帧动画经常用到,最直接的方式就是用Animation录制。但某些情况下这种方式并不是太友好,需要靠代码的方式进行序列帧动画的实现。代码实
- 什么是建造者模式建造者模式( Builder Pattern )是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以
- 1.线程状态(生命周期)一个线程在给定的时间点只能处于一种状态。线程可以有如下6 种状态:New (新创建):未启动的线程;Runnable
- 面向对象有封装、继承、多态这三个特性,面向对象编程按照现实世界的特点来管理复杂的事物,把它们抽象为对象,具有自己的状态和行为,通过对消息的反
- 最近研究了下Java socket通信基础,利用代码实现了一个简单的多人聊天室功能,现把代码共享下,希望能帮到有兴趣了解的人。目录结构:Ch
- Java设计模式访问者模式模式概念访问者模式表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的
- 一、Spinner的两种展示样式下拉列表的展示方式有两种,一种是在当前下拉框的正下方展示列表,此时把spinnerMode属性设置为drop
- 我们在编写网络程序的时候,经常会进行如下操作:申请一个缓冲区从数据源中读入数据至缓冲区解析缓冲区的数据重复第2步表面上看来这是一个很常规而简
- Java中的final关键字1、修饰类的成员变量 这是final的主要用途之一,和C/C++的const,即该成员被修饰为常量,意味着不可修
- 前言我们之前介绍了不少有关动画的篇章。前面介绍的动画都是只有一个动画效果,那如果我们想对某个组件实现一组动效,比如下面的效果,该怎么办?st
- 由于大多数便携式设备支持浏览图片而不支持浏览PowerPoint 文件,所以相比较而言,图像对于用户而言更加友好。除此之外,将PowerPo