要求:
某公司要开发内部的 “办公信息化管理系统”,请使用面向对象的思想描述以下员工信息
那么我们来实现以下该要求。
首先看看运行效果
姓名:张铭
工号:S001
性别:男
年龄:18
职务:人事部经理
==================================
姓名:张艾爱
工号:S002
性别:女
年龄:18
职务:人事部助理
==================================
姓名:孙超
工号:S004
性别:男
年龄:18
职务:人事部职员
==================================
姓名:孙美美
工号:S005
性别:女
年龄:18
职务:市场部职员
==================================
姓名:蓝迪
工号:S006
性别:男
年龄:18
职务:市场部经理
==================================
姓名:米莉
工号:S007
性别:女
年龄:18
职务:市场部职员
==================================
人事部总共有3名员工
市场部总共有3名员工
1.员工类实现
public class Staff {
/**
* Staff 员工
* @param args
*/
//员工的属性:姓名、性别、工号、年龄
private String name;
private String sex;
private String num;
private int age;
private String zhiwu;
//对全部属性进行赋值
public Staff(String name, String sex, String num, int age,String zhiwu) {
this.setName(name);
this.setSex(sex);
this.setNum(num);
this.setAge(age);
this.setZhiwu(zhiwu);
}
//get/set
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
//限定性别只能为男或者女,否则强制赋值为男
public void setSex(String sex) {
if(!sex.equals("男")&&!sex.equals("女"))
this.sex = "男";
else
this.sex = sex;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(this.age>18 && this.age<65)
this.age = age;
else
this.age = 18;
}
public String getZhiwu() {
return zhiwu;
}
public void setZhiwu(String zhiwu) {
this.zhiwu = zhiwu;
}
/**
* 员工介绍信息方法
* @return 返回的是员工的信息字符串
*/
public String introduce(Department dp,Post ps){
String str="姓名:"+this.getName()+"\n工号:"+this.getNum()+"\n性别:"+this.getSex()+"\n年龄:"+this.getAge()+"\n职务:"+dp.getName()+ps.getName();
return str;
}
}
2.职务类实现
public class Post {
/**
* post 职务
* @param args
*/
//成员属性:职务编号、职务名称
private int num;
private String name;
//对属性赋值包括职务编号、职务名称
public Post(int num, String name) {
this.setNum(num);
this.setName(name);
}
// get/set
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String info(){
String str="职务:"+this.getName();
return str;
}
}
3.接下来就是部门类的实现了。
public class Department {
/**
* Department 部门
* @param args
*/
//部门属性:部门编号、部门名称、该部门员工信息
private int num;
private String name;
private Staff [] st;
private int size;
//对成员属性进行赋值:包括部门编号、部门名称、该部门员工信息
public Department(int num, String name) {
this.setNum(num);
this.setName(name);
this.setSt(st);
this.setSize(size);
}
//对成员属性进行赋值:包括部门编号、部门名称、该部门员工信息
public Department(int num, String name, Staff[] st, int size) {
this.setNum(num);
this.setName(name);
this.setSt(st);
this.setSize(size);
}
//get /set
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Staff[] getSt() {
if(st==null)
this.st = new Staff[200];
return st;
}
//如果存放该部门人员信息数组为空,那么初始化分配空间,以免运行出现空指针异常
public void setSt(Staff[] st) {
if(st==null)
st = new Staff[50];
else
this.st = st;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public String sign(){
String str="部门属性:"+"\n部门编号:"+this.getNum()+"\n部门名称:"+this.getName();
return str;
}
/**
* 方法是添加员工信息到部门里面。利用st数组下标的增加来实现。
* @param sf
* @return
*/
public void addStudent(Staff sf){
/**
* 1.将员工保存到数组中
* 2.将员工个数保存到Size中
*/
//1.将员工保存到数组中
for(int i=0;i if(this.getSt()[i]==null){
this.getSt()[i]=sf;
//2.将员工个数保存到Size中
this.size = i+1;
return;
}
}
}
}
4.我们新建一个test类测试
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
//实例化部门类 并且赋值
Department dc1 = new Department(1, "人事部");
Department dc2 = new Department(2, "市场部");
//实例化职务类 并且赋值
Post po1 = new Post(1, "职员");
Post po2 = new Post(2, "经理");
Post po3 = new Post(3, "助理");
//实例化员工类 并且赋值
Staff sf1 = new Staff("张铭", "yier", "S001", 29,"人事部");
System.out.println(sf1.introduce(dc1, po2));
System.out.println("==================================");
Staff sf2 = new Staff("张艾爱", "女", "S002", 21,"人事部");
System.out.println(sf2.introduce(dc1,po3));
System.out.println("==================================");
Staff sf3 = new Staff("孙超", "男", "S004", 29,"人事部");
System.out.println(sf3.introduce(dc1,po1));
System.out.println("==================================");
Staff sf4 = new Staff("孙美美", "女", "S005", 26,"市场部");
System.out.println(sf4.introduce(dc2,po1));
System.out.println("==================================");
Staff sf5 = new Staff("蓝迪", "男", "S006", 37,"市场部");
System.out.println(sf5.introduce(dc2,po2));
System.out.println("==================================");
Staff sf6 = new Staff("米莉", "女", "S007", 24,"市场部");
System.out.println(sf6.introduce(dc2,po1));
System.out.println("==================================");
//将市场部/人事部的人员加入到数组中,并统计人数
dc1.addStudent(sf1);
dc1.addStudent(sf2);
dc1.addStudent(sf3);
dc2.addStudent(sf4);
dc2.addStudent(sf5);
dc2.addStudent(sf6);
System.out.println(dc1.getName()+"总共有"+dc1.getSize()+"名员工");
System.out.println(dc2.getName()+"总共有"+dc2.getSize()+"名员工");
}
}
运行即可。
以上是我在学习过程中写的,也算是笔记类的东西,有什么不对之处希望各位指出。谢谢。源代码见下面