每周测验

每周测验

1.学生信息录入系统

要求可以录入多个学生的信息(包括学号\姓名\性别),录入结果存入Student对象中。录入完毕,找到所有包含“张”的学生,并打印学生对象的信息(可能有多个)

学生管理类:
import java.util.Scanner;

/**
 * 思路:定义 
 * 1. 学生类:学号,姓名,性别  
 * 2. 工具类:查找学生信息 
 * 3. 在StudentInfo中建立student数组存储学生,进行测试
 */
public class StudentInfo {
    public static Student[] stuArr = new Student[100];
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(true){// 提示输入学生信息
            System.out.println("请录入学生学号:");
            int id = scan.nextInt();
            if(id == 0){
                break;
            }
            System.out.println("请录入学生姓名:");
            String name = scan.next();
            System.out.println("请录入学生性别:");
            String sex = scan.next();
            Student stu = new Student(id,name,sex);

            StudentUtil.enterInfo(stu); // 加入到学生信息管理系统

            System.out.print("输入0结束录入!");
        }
        System.out.println("输入要查询的学生姓氏:");
        String las = scan.next();
        StudentUtil.queryInfo(las);

        scan.close();
    }
}
学生类:
public class Student {
    public static int num;
    private int stuId;
    private String name;
    private String sex;

    public Student(){
        num++;
    }

    public Student(int stuId,String name,String sex){
        this.stuId = stuId;
        this.name = name;
        this.sex = sex;
        num++;
    }

    public int getStuId() {
        return stuId;
    }
    public void setStuId(int stuId) {
        this.stuId = stuId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
}
工具类:
/**
 * 查询学生信息的方法,录入学生信息方法
 */
public class StudentUtil {
    public static String queryInfo(String lastName){// 查询信息
        String result = "";
        for(int i=0;i<Student.num;i++){
            char lName = StudentInfo.stuArr[i].getName().charAt(0);
            if(lName == lastName.charAt(0)){
                printInfo(StudentInfo.stuArr[i]);
            }
        }
        return result;
    }

    public static void printInfo(Student student){// 打印学生信息
        System.out.println("Student " + "[Id:" + student.getStuId() + " name:" + student.getName() + " sex:" + student.getSex() + " ]");
    }

    public static void enterInfo(Student student){// 录入学生信息
        int i=0;
        while(StudentInfo.stuArr[i] != null){
            i++;
        }
        StudentInfo.stuArr[i] = student;
    }
}

2、写一个员工管理系统

员工包括:
行政(name、id、sal、car)、
技术(name、id、sal、team项目组、comm项目奖金)、
管理(name、id、sal、position、bounds分红)
写一个EmpUtil工具类,提供如下方法:
开除员工
计算员工年薪(包括技术人员的项目奖金,管理人员的分红)

公司类:
/**
 * 思路:定义 1.Company公司管理员工(测试类),员工数组
 * 2.员工类Employee 
 * 3.行政类Administration继承Employee
 * 4.技术类Science继承Employee 
 * 5.管理类Manager继承Employee 
 * 6.工具类EmpUtil
 */
public class Company {
    public static Employee[] employees = new Employee[100];
    public static void main(String[] args) {
        Employee admin1 = new Administration("行政员",1001,3000);
        Employee science = new Science("技术员", 1002, 5000, 10000);
        Employee manager = new Manager("管理员",1003,8000,15000);
        Employee admin2 = new Administration("行政员2",1004,3500);

        EmpUtil.hire(admin);// 雇佣行政人员
        EmpUtil.hire(science);// 雇佣技术人员
        EmpUtil.hire(manager);// 雇佣管理人员
//        EmpUtil.hire(adEmployee);// 测试选项

        System.out.println(EmpUtil.getSal(admin));// 计算行政年薪
        System.out.println(EmpUtil.getSal(science));// 计算技术年薪
        System.out.println(EmpUtil.getSal(manager));// 计算管理年薪

        System.out.println("员工有:");
        for(int i=0;i<Employee.num;i++){
            if(employees[i] == null){
                continue;
            }
            System.out.print(employees[i].getName() + " ");
        }
        System.out.println();

        EmpUtil.fire(manager);// 开除管理人员

        System.out.println("开除了管理人员后员工有:");
        for(int i=0;i<Employee.num;i++){
            if(employees[i] == null){
                continue;
            }
            System.out.print(employees[i].getName() + " ");
        }
    }
}
员工类:
public class Employee {
    public static int num;// 计算员工数量
    protected String name;// 员工姓名
    protected int id;// 员工id
    protected double sal;// 员工月薪

    public Employee(){

    }
    // 全参构造
    public Employee(String name,int id,double sal){
        this.name = name;
        this.id = id;
        this.sal = sal;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public double getSal() {
        return sal;
    }
    public void setSal(double sal) {
        this.sal = sal;
    }
}
行政人员类:
public class Administration extends Employee{// 继承员工类
    private String car;// 私有属性

    public Administration(){

    }

    public Administration(String name,int id,double sal){
        super(name,id,sal);
    }

    public String getCar() {
        return car;
    }
    public void setCar(String car) {
        this.car = car;
    }
}
技术人员类:
/**
 * 技术(name、id、sal、team项目组、comm项目奖金)、
 */
public class Science extends Employee{// 继承员工类
    private String team;// 私有属性
    private double comm;

    public Science(){
    }

    public Science(String name,int id,double sal,double comm){
        super(name,id,sal);
        this.comm = comm;
    }

    public String getTeam() {
        return team;
    }
    public void setTeam(String team) {
        this.team = team;
    }
    public double getComm() {
        return comm;
    }
    public void setComm(double comm) {
        this.comm = comm;
    }
}
管理人员类:
/**
 * 管理(name、id、sal、position、bounds分红)
 */
public class Manager extends Employee{// 继承员工类
    private String position;// 私有属性
    private double bounds;

    public Manager(){

    }

    public Manager(String name,int id,double sal,double bounds){
        super(name,id,sal);
        this.bounds = bounds;
    }

    public String getPosition() {
        return position;
    }
    public void setPosition(String position) {
        this.position = position;
    }
    public double getBounds() {
        return bounds;
    }
    public void setBounds(double bounds) {
        this.bounds = bounds;
    }
}
工具类:
/**
 *  写一个EmpUtil工具类,提供如下方法:
 * 开除员工
 * 计算员工年薪(包括技术人员的项目奖金,管理人员的分红)
 */
public class EmpUtil {

    public static void fire(Employee employee){// 开除员工
        for(int i=0;i<Employee.num;i++){
            if(Company.employees[i].getId() == employee.getId()){
                Company.employees[i] = null;
            }
        }
    }

    public static void hire(Employee employee){// 雇佣员工
        int i=0;
        while(Company.employees[i] != null){
            i++;
        }
        Company.employees[i] = employee;
        Employee.num++;
    }

    public static double getSal(Employee employee){// 计算年薪
        // 判断计算的员工的工作
        if(employee instanceof Administration){
            Administration admin = (Administration) employee;
            return 12*admin.getSal();// 年薪=12*月薪
        }else if(employee instanceof Science){
            Science sci = (Science) employee;
            return 12*sci.getSal()+sci.getComm();// 年薪=12*月薪+奖金
        }else if(employee instanceof Manager){
            Manager mang = (Manager) employee;
            return 12*mang.getSal()+mang.getBounds();// 年薪=12*月薪+分红
        }
        return -1;// 数据错误!
    }
}

3、请说明重写和重载的区别

重载:发生在一个类中不同的方法之间,要求方法名相同,参数类型或参数顺序或参数个数不同
重写:发生在父类与子类方法之间,要求方法名相同,返回值相同,参数相同


4、请说明static和final的用法

**static :静态的类的,可以修饰方法或变量。
static修饰的方法或变量可以使用类名.来调用,受权限修饰符的限制,
static修饰的变量只在第一次创建对象是初始化一次,所有的对象共享一个变量**

**final:最终的,可以修饰类、方法或变量。final修饰的类不能被继承,final修饰的方法不能被重写,final修饰的变量不可改变,必须赋值,有三种赋值方法:
1)创建变量时直接赋值
2)在构造器中赋值
3)在一般代码块中赋值**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值