2020-7-17 Java综合案例练习
一、选择
-
执行下面代码后,哪几个结论是正确的 (B)
A. f[0]
B. f[0] = 0.0
C. 编译失败
D. 在运行时抛出异常 -
执行下面代码后,哪几个结论是正确的(多选)(AC)
String[ ] s = new String[10];
A. s[9]为null
B. s[10]的内容为空字符串
C. 没有s[0]
D. s.length=10
二、编程题
- 题目要求:
某公司要开发内部的 “办公信息化管理系统”,请使用面向对象的思想描述以下员工信息。
程序运行参考效果图如下:
任务描述
一、语言和环境
实现语言
Java语言
环境要求及开发工具
JDK、Eclipse
二、程序整体要求
划分功能模块,根据题目要求设置不同的类,在类中实现相应功能的管理。
类的标识要清楚易懂,代码结构要层次分明,代码编辑思路要清晰、整洁。
要求Java代码书写、命名符合规范,属性所属数据类型要准确合理,在代码中添加必要的注释
程序运行效果与提供的页面效果图、结构保持一致,信息间分隔符“=”号数量不做统一要求,文字大小、颜色也不做统一要求
作业完成后发表在自己的博客上
三、思路分析:
由场景和运行效果,可以分析出项目中可以抽取如下类(要求编码时注意面向对象思想及封装特性的应用):
部门类:
类型描述:能够描述部门编号、部门名称、员工数组、统计部门中的员工个数
要求:设定方法统计该部门员工个数
提示:部门类的属性有四个,分别是部门编号,部门名称,员工数组 和 统计变量 ,具体是市场部还是人事部,是通过部门类的对象来表示的,如果是市场部的对象,那么添加并统计的就是市场部的人数,同样如果是人事部的对象,添加并统计的就是人事部的人数
职务类:
类型描述:能够描述职务编号、职务名称
员工类:
类型描述:能够描述员工姓名、工号、年龄、性别、所属部门、职务信息
要求:
设定方法限定年龄只能是18–65之间,反之则设置默认为18岁
设定方法限定性别只能是“男”或者“女”,反之则设置默认为"男"
设定方法,实现员工自我介绍信息,将员工信息作为字符串返回
测试类:
类型描述:测试程序,并参照效果图输出结果
PS:注意:可以在属性上添加适当的信息验证,提高信息的安全性
部门类:
package com.dodoke.project;
public class Department {
//设置部门类的私有属性
private String depName;//部门名称
private String depNum;//部门编号
private int staffNums;//员工个数
private Staff[] staffArray;//员工数组
//get\set方法
//部门名称
public String getDepName() {
return depName;
}
public void setDepName(String depName) {
this.depName = depName;
}
//部门编号
public String getDepNum() {
return depNum;
}
public void setDepNum(String depNum) {
this.depNum = depNum;
}
//员工个数
public int getStaffNums() {
return staffNums;
}
public void setStaffNums(int staffNums) {
//如果部门人数小于0,部符合实际,为其赋值为0
if(this.staffNums < 0){
this.staffNums = 0;
return;
}
this.staffNums = staffNums;
}
//员工数组
public Staff[] getStaffArray() {
if(this.staffArray == null){
this.staffArray = new Staff[100];
}
return staffArray;
}
public void setStaffArray(Staff[] staffArray) {
this.staffArray = staffArray;
}
/**
* 构造方法 -- 设置部门名称,部门编号
* @param depName
* @param depNum
*/
public Department(String depName, String depNum) {
this.setDepName(depName);
this.setDepNum(depNum);
}
public Department() {
}
/**
* 将同部门的员工填入数组中
* @param sta -- 形参内填写测试类中员工的实例化对象
*/
public void addStaff(Staff sta){
int i;
for (i = 0;i < this.getStaffArray().length;i++){
if (this.getStaffArray()[i] == null) {
this.getStaffArray()[i] = sta;
break;
}
}
//填写部门人数
this.setStaffNums(i + 1);
}
}
职位类:
package com.dodoke.project;
public class Position {
//设置职位类的私有
private String posName;//职位名称
private String posNum;//职位编号
//get\set方法
public String getPosName() {
return posName;
}
public void setPosName(String posName) {
this.posName = posName;
}
public String getPosNum() {
return posNum;
}
public void setPosNum(String posNum) {
this.posNum = posNum;
}
/**
* 构造方法 -- 设置职位名称,职位编号
* @param posName
* @param posNum
*/
public Position(String posName, String posNum) {
this.setPosName(posName);
this.setPosNum(posNum);
}
public Position(){
}
}
员工类:
package com.dodoke.project;
public class Staff {
//设置员工类私有属性
private String staffName;//员工姓名
private String staffNum;//工号
private String staffSex;//性别
private int staffAge;//年龄
//使用对象作为属性
//添加职位属性 、部门属性
private Position pos;
private Department dep;
//get\set方法
public String getStaffName() {
return staffName;
}
public void setStaffName(String staffName) {
this.staffName = staffName;
}
public String getStaffNum() {
return staffNum;
}
public void setStaffNum(String staffNum) {
this.staffNum = staffNum;
}
public String getStaffSex() {
return staffSex;
}
public void setStaffSex(String staffSex) {
//如果输入的性别非“男”、非“女” 设置默认为“男”
if(!staffSex.equals("男") && !staffSex.equals("女")){
this.staffSex = "男";
}else{
this.staffSex = staffSex;
}
}
public int getStaffAge() {
return staffAge;
}
public void setStaffAge(int staffAge) {
//如果输入的年龄不在181-65之间。设置默认为18岁
if (staffAge < 18 || staffAge > 65) {
this.staffAge = 18;
} else {
this.staffAge = staffAge;
}
}
public Department getDep() {
if(this.dep == null){
this.dep = new Department();
}
return dep;
}
public void setDep(Department dep) {
this.dep = dep;
}
public Position getPos() {
if(this.pos == null){
this.pos = new Position();
}
return pos;
}
public void setPos(Position pos) {
this.pos = pos;
}
/**
* 构造方法 -- 输入实例化对象的具体参数
* @param staffName -- 姓名
* @param staffNum -- 工号
* @param staffSex -- 性别
* @param staffAge -- 年龄
* @param dep -- 测试类中部门的实例化对象
* @param pos -- 测试类中职位的实例化对象
*/
public Staff(String staffName, String staffNum, String staffSex, int staffAge, Department dep, Position pos) {
this.setStaffName(staffName);
this.setStaffNum(staffNum);
this.setStaffSex(staffSex);
this.setStaffAge(staffAge);
this.setPos(pos);
this.setDep(dep);
}
public Staff() {
}
//员工共信息介绍
public String info(){
String str = "姓名:" + this.getStaffName();
str += "\n工号:" + this.getStaffNum();
str += "\n性别:" + this.getStaffSex();
str += "\n年龄:" + this.getStaffAge();
str += "\n职务:" + this.getDep().getDepName() + this.getPos().getPosName();
return str;
}
}
测试类:
package com.dodoke.test;
import com.dodoke.project.Department;
import com.dodoke.project.Position;
import com.dodoke.project.Staff;
public class test {
public static void main(String[] args){
//部门
Department dep1 = new Department("人事部","D001");
Department dep2 = new Department("市场部","D002");
//职位
Position pos1 = new Position("经理","P001");
Position pos2 = new Position("助理","P002");
Position pos3 = new Position("职员","P003");
//员工
Staff sta1 = new Staff("张铭","S001","男",29,dep1,pos1);
Staff sta2 = new Staff("李艾爱","S002","女",21,dep1,pos2);
Staff sta3 = new Staff("孙超","S003","男",29,dep1,pos3);
Staff sta4 = new Staff("张美美","S004","女",26,dep2,pos3);
Staff sta5 = new Staff("蓝迪","S005","男",37,dep2,pos1);
Staff sta6 = new Staff("米莉","S006","女",24,dep2,pos3);
//输出员工信息
System.out.println(sta1.info());
//将员工同部门的员工添加到数组
dep1.addStaff(sta1);
System.out.println("======================");
System.out.println(sta2.info());
dep1.addStaff(sta2);
System.out.println("======================");
System.out.println(sta3.info());
dep1.addStaff(sta3);
System.out.println("======================");
System.out.println(sta4.info());
dep2.addStaff(sta4);
System.out.println("======================");
System.out.println(sta5.info());
dep2.addStaff(sta5);
System.out.println("======================");
System.out.println(sta6.info());
dep2.addStaff(sta6);
System.out.println("======================");
//输出各部门有多少人
System.out.println(dep1.getDepName() + "总共有" + dep1.getStaffNums() + "名员工");
System.out.println(dep2.getDepName() + "总共有" + dep2.getStaffNums() + "名员工");
}
}