java程序设计课程——实验3

1、编一个学生类(Student),其中包含以下内容:

属性:学号studentNo,姓名studentName,性别studentGender,年龄studentAge。

方法:构造方法,显示学号方法showNo(),显示姓名方法showName(),显示性别方法showSex(),显示年龄方法showAge(),修改年龄方法modifyAge()。

主类(S3_1)包含:主方法main(),在其中创建两个学生对象s1和s2并初始化,两个对象的属性自行确定,然后分别显示这两个学生的学号、姓名、性别、年龄,然后修改s1的年龄并显示修改后的结果。

class Student{
    Scanner in = new Scanner(System.in);
    public String studentNo;
    public int studentAge;
    public String studentName;
    public String studentGender;

    public Student(String studentNo, int studentAge, String studentName, String studentGender) {
        this.studentNo = studentNo;
        this.studentAge = studentAge;
        this.studentName = studentName;
        this.studentGender = studentGender;
    }
    void showNo(){
        System.out.println("学号为:"+studentNo);
    }
    void showName(){
        System.out.println("姓名为:"+studentName);
    }
    void showSex(){
        System.out.println("性别为:"+studentGender);
    }
    void showAge(){
        System.out.println("年龄为:"+studentAge);
    }
    //修改年龄
    void modifyAge(){
        int age;
        System.out.println("请输入你要修改的年龄:");
        age = in.nextInt();
        studentAge = age;
        System.out.println("修改成功");
    }
}
public class S3_1 {
    public static void main(String[] args) {
        Student s1 = new Student("001",19,"spraing","男");
        Student s2 = new Student("002",20,"段boy","男");
        System.out.println("s1的相关信息:");
        s1.showNo();
        s1.showName();
        s1.showSex();
        s1.showAge();
        System.out.println("s2的相关信息:");
        s2.showNo();
        s2.showName();
        s2.showSex();
        s2.showAge();
        System.out.println("修改s1的年龄:");
        s1.modifyAge();
        System.out.println("修改之后s1年龄为:");
        s1.showAge();
    }
}

2、编写一个简单计算器类,拥有加减乘除等方法,每个方法都有2个操作数,同为double类型或同为整型,方法设计为重载,在测试类里通过键盘输入操作数,显示计算结果。

class Caculator {
    int x,y;
    double m,n;
    public Caculator(int x, int y, double m, double n) {
        this.x = x;
        this.y = y;
        this.m = m;
        this.n = n;
    }
    public Caculator(int x, int y) {
        this.x = x;
        this.y = y;
    }
   public int add(int x, int y){
       return x+y;
    }
   //此处为方法的重载,方法名一致,参数类型不同
    public double add (double m, double n){
        return m+n;
    }
    public int subtraction(int x, int y){
        return x-y;
    }
    public int multi(int m, int n){
        return x*y;
    }
    public double divide(double m, double n){
        return m / n;
    }
}
public class S3_2 {
    public static void main(String[] args) {
        Caculator caculator = new Caculator(12,15, 1.0, 4.0);
        System.out.println("整型参数加法测试:");
        System.out.println("加法结果为:"+caculator.add(caculator.x,caculator.y));
        System.out.println("double型参数加法测试:");
        System.out.println("加法结果为:"+caculator.add(caculator.m,caculator.n));
        System.out.println("减法测试:");
        System.out.println("减法结果为:"+caculator.subtraction(caculator.x,caculator.y));
        System.out.println("乘法测试:");
        System.out.println("乘法结果为:"+caculator.multi(caculator.x,caculator.y));
        System.out.println("除法测试:");
        System.out.println("除法结果为:"+caculator.divide(caculator.m,caculator.n));
    }
}

3、设计一个日期类,定义类的构造方法对日期进行初始化,在toString()中将其输出格式定为“月/日/年”。最后,编写一个测试程序来测试所定义的日期类能否实现预定的功能。

class Date{
    public int year;
    public int month;
    public int day;

    public Date(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }
    //toString()方法重写
    @Override
    public String toString() {
        return month + "/" + day + "/" + year;
    }
}
public class S3_3 {
    public static void main(String[] args) {
        Date date = new Date(2022, 11, 13);
        System.out.println(date.toString());
    }
}

4、设计一个分数类,分数的分子和分母用两个整型数表示,类所拥有的方法包括对分数进行加、减、乘、除等运算,以及输出分数的方法,输出分数的格式应该是:分子/分母。

在测试类中定义分数类对象,运算并输出运算结果。

class grade{
    public int molecular; //分子
    public int denominator; //分母
    public static grade result = new grade();//在类里面定义自身为一属性
    public grade() {
    }
    public grade(int molecular, int denominator) {
        this.molecular = molecular;
        this.denominator = denominator;
    }
    //约分操作
    void reduction(grade result){
        int num = 0;//num表示最大公约数
        if (result.molecular > result.denominator && result.molecular % result.denominator == 0 && result.denominator != 1){
            num = result.molecular / result.denominator;
            result.molecular /= num;
            result.denominator /= num;
        }
        if (result.molecular < result.denominator && result.denominator % result.molecular == 0 && result.molecular != 1){
            num = result.denominator / result.molecular;
            result.molecular /= num;
            result.denominator /= num;
        }
        if (result.molecular == result.denominator){
            result.denominator = 1;
            result.molecular = 1;
        }
    }
    //加法
    void add(grade g1, grade g2){
        result.molecular = g1.molecular*g2.denominator + g1.denominator*g2.molecular;
        result.denominator = g1.denominator* g2.denominator;
        reduction(result);
    }
    //减法
    void subtract(grade g1, grade g2){
        result.molecular = g1.molecular*g2.denominator - g1.denominator*g2.molecular;
        result.denominator = g1.denominator* g2.denominator;
        reduction(result);
    }
    //乘法
    void multiply(grade g1, grade g2){
        result.molecular = g1.molecular* g2.molecular;
        result.denominator = g1.denominator* g2.denominator;
        reduction(result);
    }
   //除法
    void divided(grade g1, grade g2){
        result.molecular = g1.molecular * g2.denominator;
        result.denominator = g1.denominator * g2.molecular;
        reduction(result);
    }
}
public class S3_4 {
    public static void main(String[] args) {
        grade G = new grade();//改对象用于保存运算结果
        grade g1 = new grade(1,2);
        grade g2 = new grade(1,3);
        G.add(g1, g2);
        System.out.println("加法:"+G.result.molecular + "/" + G.result.denominator);
        G.subtract(g1,g2);
        System.out.println("减法:"+G.result.molecular + "/" + G.result.denominator);
        G.multiply(g1,g2);
        System.out.println("乘法:"+G.result.molecular + "/" + G.result.denominator);
        G.divided(g1,g2);
        System.out.println("除法:"+G.result.molecular + "/" + G.result.denominator);
    }
}

5、(1)设计一个雇员类,属性包括:编号、姓名、年龄、职务、部门,要求合理选定属性类型;该雇员类还拥有统计出勤人数的功能,可以考虑为雇员类设计一个静态属性;方法包括:构造方法、输出信息的方法、签到方法;

(2)创建雇员类对象,统计雇员的出勤人数。

注意考虑属性和方法的访问权限,方法的功能,及main方法中如何实现要求统计的信息。

class Employee{
    public int employees = 100; //雇员人数
    //属性,这里采用数组进行存储雇员数据
    public String[] ID = new String[employees]; //编号
    public String[] name = new String[employees]; //姓名
    public String[] age = new String[employees]; //年龄
    public String[] position = new String[employees]; //职位
    public String[] department = new String[employees];  //部门
    public int attendNum = 0; //出勤人数
    //无参构造
    public Employee() {
    }
    //签到方法
    public void sign(){
        for (int i = 0; i < employees; ++i){
            Scanner in = new Scanner(System.in);
            attendNum = i+1;
            System.out.println("请输入编号:");
            ID[i] = in.nextLine();
            System.out.println("请输入姓名:");
            name[i] = in.nextLine();
            System.out.println("请输入年龄:");
            age[i] = in.nextLine();
            System.out.println("请输入职务:");
            position[i] = in.nextLine();
            System.out.println("请输入部门:");
            department[i] = in.nextLine();
            System.out.println("如果你是最后一个签到的请输入0,否则输入1:");
            int j = in.nextInt();
            System.out.println("j:"+j);
            if (j == 0){
                break;
            }
        }

    }
    //输出信息方法
    public void output(){
        System.out.println("签到人数:"+attendNum);
        for (int i = 0; i < attendNum; ++i){
            System.out.println("编号:"+ID[i]+"  "+"姓名:"+name[i]+"  "+"年龄:"+age[i]+"  "+"职位:"+position[i]+"  "+"部门:"+department[i]);
        }
    }
}
public class S3_5 {
    public static void main(String[] args) {
        Employee employee = new Employee();
        System.out.println("开始签到~~~");
        employee.sign();
        System.out.println("签到结束~~~");
        System.out.println("签到人员相关信息:");
        employee.output();
    }
}

6、设计一个电视机类,属性包括商品编号、开关状态、音量、频道等,同时设计一些方法对电视机的状态进行控制。例如,方法应包括开/关电视机、更换频道、提高/减小音量等。要求商品编号自动生成(可以考虑为电视机类设置一个管理商品编号的静态成员变量,或者专门设置一个编号管理类)。

class TV {
    Random random = new Random();
    public int ID = random.nextInt(10000); //商品编号
    public static int channel = 28; //当前电视频道
    public static int voice = 50; //当前电视声音
    public static String status = "OFF";
    public TV() {
    }
    static void changechannel(int num){
        channel = num;
    }
     static String tvstatus(){
       if (status == "OFF"){
           status = "ON";
           return status;
       }
       status = "OFF";
       return status;
    }
    static void addvoice(){
        voice++;
    }
    static void lowervoice(){
    voice--;
    }
    public void showmessage(){
        System.out.println("电视机的编号是:"+ID);
        System.out.println("电视机的状态是:"+status);
        System.out.println("电视机的频道是:"+channel);
        System.out.println("电视机的声音是:"+voice);
    }
}
public class S3_6 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        TV tv = new TV();
        tv.showmessage();
        int num;
        System.out.println("开电视......");
        tv.tvstatus();
        System.out.println("换台........");
        System.out.println("请输入你想换的频道:");
        num = in.nextInt();
        tv.changechannel(num);
        System.out.println("加声音......");
        tv.addvoice();
        System.out.println("最终电视的信息为:");
        tv.showmessage();
    }
}
  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Spraing※boy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值