JAVA 面向对象开发作业

目录

1.设计一个包含多个构造方法的类,并分别用这些构造方法实例化对象。

2.编写一个类Calculate1,实现加、减两种运算,然后,编写另一个派生类Calculate2,实现乘、除两种运算。

3.建立三个类:居民、成人、官员。居民包含身份证号、姓名、出生日期,而成人继承自居民,多包含学历、职业两项数据;官员则继承自成人,多包含党派、职务两项数据。要求每个类的字段都以属性的方式对外提供数据输入输出的功能。

4.编写一个类,其中包含一个排序的方法sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。

5.设计一个立方体类Box,它能计算并输出立方体的体积和表面积。

6.编写一个程序,设计一个点类Point,实例化两个点之后,能调用其方法求两个点之间的距离。

7、 写一个学生类,包括属性: 学号,班号,姓名,年龄,性别;要求用无参构造,方法获得:学号,班号,姓名,年龄(只能小于100岁,大于1,否则重新输入) ,性别(只能男或者女,否则重新输入),最后在主方法输出你对一个学生对象赋值的信息。

8、设计一个BankAccount类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。BankAccount类包括,账号(BankAccountId)、开户日期Date(日期),Money(金额),Rest(余额)。另有一个构造方法和三个成员方法Bankin()(处理存入账),Bankout()处理取出账)和和一个负责生成账号的自动增长的方法。

9、 编写一个程序,已有若干学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。思路:设计一个学生类Stud,除了包括no(学号)、name(姓名)、和deg(成绩)数据成员外。有两个静态变量sum和num,分别存放总分和人数,另有一个构造方法、一个普通成员方法disp()和一个静态成员方法avg(),它用于计算平均分。

10.编写一个程序,统计学生成绩,其功能包括输入学生的姓名和成绩,按成绩从高到低排列打印输出,对前70%的学生定为合格(PASS),而后30%的学生定为不合格(FAIL)。思路: 设计一个类student,包含学生的姓名和成绩等数据。设计一个类Compute: sort()、disp(),它们分别用于按成绩排序和输出数据。


 

1.设计一个包含多个构造方法的类,并分别用这些构造方法实例化对象。

classLike {

   publicStringname;

   publicStringage;

   publicStringhobby;

   publicLike() {

   }

   publicLike(Stringname, Stringage, Stringhobby) {

      this.name=name;

      this.age=age;

      this.hobby=hobby;

   }

   //说话

   public voidsay() {

      System.out.println(name+"说:沸羊羊你个臭**");

   }

   public voidsaying() {

      System.out.println(name+"说:美羊羊你TMD真双标");

   }

   public voidshow() {

      System.out.println("我可是"+name+age+hobby);

   }

}

public classNO1 {

   public static voidmain(String[]args) {

      Likelandawang=newLike("懒大王,","你什么身份,我什么地位",",你在狗叫什么!");

      Likelaozi=newLike("羊村村霸,","村长都得给我递烟!","TM在那逼逼赖赖!");

      landawang.show();

      laozi.show();

      landawang.say();

      laozi.saying();

   }

}

2.编写一个类Calculate1,实现加、减两种运算,然后,编写另一个派生类Calculate2,实现乘、除两种运算。

public classNO2 {

   public static voidmain(String[]args) {

      Calculate1c1=newCalculate1();

      Calculate2c2=newCalculate2();

      System.out.println("c1的加法:"+c1.plus(3, 2));

      System.out.println("c1的减法:"+c1.subtraction(5, 3));

      System.out.println("c2的乘法:"+c2.multiply(4, 4));

      System.out.println("c2的除法:"+c2.remove(6, 3));

   }

}

classCalculate1 {

   public doubleplus(double x,double y) {

      return x+y;

   }

   public doublesubtraction(double x,double y) {

      return x-y;

   }

}

classCalculate2extendsCalculate1 {

   public doublemultiply(double x,double y) {

      return x*y;

   }

   public doubleremove(double x,double y) {

      return x/y;

   }

}

 

3.建立三个类:居民、成人、官员。居民包含身份证号、姓名、出生日期,而成人继承自居民,多包含学历、职业两项数据;官员则继承自成人,多包含党派、职务两项数据。要求每个类的字段都以属性的方式对外提供数据输入输出的功能。

classPerson {

   publicStringno;

   publicStringname;

   publicStringbirth;

   publicPerson(Stringno, Stringname, Stringbirth) {

      LO(no);

      LOV(name);

      LOVE(birth);

   }

   public voidLO(Stringno) {

      System.out.println("身份证号:"+no);

      this.no=no;

   }

   public voidLOV(Stringname) {

      System.out.println("姓名:"+name);

      this.name=name;

   }

   public voidLOVE(Stringbirth) {

      System.out.println("出生日期:"+birth);

      this.birth=birth;

   }

}

classAdultextendsPerson {

   publicStringstudy;

   publicStringjob;

   publicAdult(Stringno, Stringname, Stringbirth, Stringstudy, Stringjob) {

      super(no,name,birth);

      ST(study);

      JO(job);

   }

   public voidST(Stringstudy) {

      System.out.println("学历:"+study);

      this.study=study;

   }

   public voidJO(Stringjob) {

      System.out.println("职业:"+job);

      this.job=job;

   }

}

classOfficialextendsAdult {

   publicStringpolitical;

   publicStringpost;

   publicOfficial(Stringno, Stringname, Stringbirth, Stringstudy, Stringjob, Stringpolitical, Stringpost) {

      super(no,name,birth,study,job);

      Pol(political);

      Pos(post);

   }

   public voidPol(StringPolitical) {

      System.out.println("党派:"+Political);

      this.political=Political;

   }

   public voidPos(Stringpost) {

      System.out.println("职务:"+post);

      this.post=post;

   }

}

public classNO3 {

   public static voidmain(String[]args) {

      Personm=newPerson("4************0","美羊羊","2000-02-02");

      System.out.println();

      Adultf=newAdult("4************1","沸羊羊","2001-03-08","小学羊","添购");

      System.out.println();

      Officiall=newOfficial("4************2","懒大王","2002-08-08","研究羊","","羊党","羊村村霸");

   }

}

4.编写一个类,其中包含一个排序的方法sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。

importjava.util.Arrays;

public classNO4 {

   public static voidmain(String[]args) {

      int[]obj= { 3, 6, 1, 10, 8 };

      obj= sort(obj);

      //随便建一个字符的数组

      String[]objs= {"b","a","c","h","d"};

      objs= sort(objs);

      //打印

      System.out.println("字符输出\t");

      for(int i= 0;i<objs.length;i++) {

          System.out.print(objs[i] +" ");

      }

      System.out.println("\t");

      System.out.println("整数输出\t");

      for(int i= 0;i<obj.length;i++) {

          System.out.print(obj[i] +" ");

      }

   }

   //Arrays.sort()方法排序,默认从小到大

   public static int[] sort(int[]nums) {

      Arrays.sort(nums);

      return nums;

   }

   //字符串排序,用冒泡排序,通过compareTo(str)方法进行比较,该方法是根据字典表的顺序进行比较,如果参数大于本值,则返回-1,如果相等返回0,大于返回1

   public staticString[] sort(String[]strs) {

      for(int i= 0;i<strs.length;i++) {

          for(int j= 0;j<strs.length-i- 1;j++) {

             if(strs[j].compareTo(strs[j+ 1]) < 1) {

                Stringtemp=strs[j];

                strs[j] =strs[j+ 1];

                strs[j+ 1] =temp;

             }

          }

      }

      return strs;

   }

}

5.设计一个立方体类Box,它能计算并输出立方体的体积和表面积。

importjava.util.Scanner;

classBox {

   private int length;

   private int width;

   private int heigth;

   voidsetBox(int l,int w,int h) {

      length=l;

      width=w;

      heigth=h;

   }

   intvolume() {

      System.out.println("立方体的体积是;"+length*width*heigth);

      return0;

   }

   intsuperficial() {

      System.out.println("立方体的表面积是;"+ 2 * (length*width+width*heigth+length*heigth));

      return0;

   }

}

public classNO5 {

   public static voidmain(String[]args) {

      Boxb=newBox();

      System.out.println("下面将输入你所要计算的立方体体积和表面积");

      System.out.println("下面将输入你所要计算的立方体长");

      Scannersc=newScanner(System.in);

      int i=sc.nextInt();

      System.out.println("下面将输入你所要计算的立方体宽");

      int j=sc.nextInt();

      System.out.println("下面将输入你所要计算的立方体高");

      int k=sc.nextInt();

      b.setBox(i,j,k);

      b.volume();

      b.superficial();

   }

}

6.编写一个程序,设计一个点类Point,实例化两个点之后,能调用其方法求两个点之间的距离。

class Point {

     private double x;

     private double y;

     public Point(double x, double y) {

          this.x = x;

          this.y = y;

     }

     /*

      *计算两点之间的距离 公式:根号下(x1-x2)^2+(y1-y2)^2

      */

     public static void distance(Point p1, Point p2) {

          double sum = Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));

          System.out.println("两点间的距离为\t");

          System.out.println(sum);

     }

}

public class NO6 {

     public static void main(String[] args) {

          Point.distance(new Point(0, 0), new Point(3, 4));

          //原点到(3,4)的距离

     }

}

7、 写一个学生类,包括属性: 学号,班号,姓名,年龄,性别;要求用无参构造,方法获得:学号,班号,姓名,年龄(只能小于100岁,大于1,否则重新输入) ,性别(只能男或者女,否则重新输入),最后在主方法输出你对一个学生对象赋值的信息。

importjava.util.Scanner;

public classNO7 {

   public static classStudent {//public class开头的内部类为动态的,而主程序以public static class开头

      //java中,类中的静态方法不能直接调用动态方法,只有将某个内部类修饰为静态类,能够在静态类中调用该类的成员变量与成员方法。即此处应改为public

      // static class Student

      int num;//学号

      int classnum;//班号

      Stringname;//姓名

      int age;//年龄

      Stringsex;//性别

      publicStudent()//空参构造

      {

          super();

      }

      publicStudent(int num,int classnum, Stringname,int age, Stringsex)//有参构造

      {

          this.num=num;

          this.classnum=classnum;

          this.name=name;

          this.age=age;

          this.sex=sex;

      }

      //各属性的gettersetter方法

      public intgetNum() {

          return num;

      }

      public voidsetNum(int num) {

          this.num=num;

      }

      public intgetClassnum() {

          return classnum;

      }

      public voidsetClassnum(int classnum) {

          this.classnum=classnum;

      }

      publicString getName() {

          return name;

      }

      public voidsetName(Stringname) {

          this.name=name;

      }

      public intgetAge() {

          return age;

      }

      public voidsetAge(int age) {

          this.age=age;

      }

      publicString getSex() {

          return sex;

      }

      public voidsetSex(Stringsex) {

          this.sex=sex;

      }

      //数组中顺序显示所有学生信息

      voidPrint(Student[]array)// Student[] array为对象数组,其在使用时必须逐一实例化

      {

          for(int i= 0;i<array.length;i++) {

             System.out.println("学号:"+array[i].num+班号:"+array[i].classnum+姓名:"+array[i].name

                   +年龄:"+array[i].age+性别:"+array[i].sex);

          }

      }

      //通过学生学号查找学生信息

      voidFind(int num, Student[]array)//参数为num。和学生类数组array

      {

          for(int i= 0;i<array.length;i++) {

             if(num==array[i].getNum()) {

                System.out.println("学号:"+array[i].num+班号:"+array[i].classnum+姓名:"+array[i].name

                      +年龄:"+array[i].age+性别:"+array[i].sex);

             }

          }

      }

      public static voidmain(String[]args) {

          //法一:手动输入学生信息

          Scannersc=newScanner(System.in);

          System.out.println("请输入学生人数:");

          int x=sc.nextInt();

          Student[]array=newStudent[x];

          for(int i= 0;i<array.length;i++) {

             array[i] =newStudent();//若在编写一个java程序时没有添加无参构造方法,编译器会自动添加无参构造方法;

             //但是若编写时添加了有参构造方法而未添加无参构造方法,则编译器只认有参构造方法而不会默认添加无参构造方法,需要注意的是如果需要使用无参构造方法,一定要在类中里面添加

             System.out.println("请输入第"+ (i+ 1) +"个学生的学号");

             int num=sc.nextInt();//输入学号

             array[i].setNum(num);

             System.out.println("请输入第"+ (i+ 1) +"个学生的班号");

             int classnum=sc.nextInt();//输入班号

             array[i].setClassnum(classnum);

             System.out.println("请输入第"+ (i+ 1) +"个学生的姓名");

             Stringname=sc.next();//输入姓名

             array[i].setName(name);

             System.out.println("请输入第"+ (i+ 1) +"个学生的年龄");

             int age=sc.nextInt();//输入年龄

             if(age< 100 &&age> 1)

                array[i].setAge(age);

             else{

                System.out.println("请重新输入");

                continue;

             }

             System.out.println("请输入第"+ (i+ 1) +"个学生的性别");

             Stringsex=sc.next();//输入性别

             if(sex!=""||sex!="")

                array[i].setSex(sex);

             else{

                System.out.println("请重新输入");

                continue;

             }

          }

          System.out.println("所有学生初始信息如下:");

          array[0].Print(array);

          System.out.println("----------------------------------");

          System.out.println("学号为201801学生信息如下:");

          array[0].Find(201801,array);

          System.out.println("----------------------------------");

      }

   }

}

8、设计一个BankAccount类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。BankAccount类包括,账号(BankAccountId)、开户日期Date(日期),Money(金额),Rest(余额)。另有一个构造方法和三个成员方法Bankin()(处理存入账),Bankout()处理取出账)和和一个负责生成账号的自动增长的方法。

importjava.util.Scanner;

public classdenglu2 {

   public static voidmain(String[]args){

       Scannersc=newScanner(System.in);

       geren1[]user=newgeren1[10];

       //System.out.println(user[1]);

       BankAccount(sc,user);

   }

   public static voidBankAccount(Scannersc,geren1[]user){

       while(true)

       {

           System.out.println("===银行系统===");

           System.out.println();

           System.out.println("1,登录\t\t2,注册\t\t3,退出");

           int xuanze=sc.nextInt();

           if(xuanze== 1)

           {

               //print(user);

               denglu1(sc,user);

           }else if(xuanze== 2){

             BankAccountId(sc,user);

               //print(user);

           }else if(xuanze== 3){

               break;

           }

           else{System.out.println("输入有误!");}

       }

   }

   public static voidBankAccountId(Scannersc, geren1[]user){

       System.out.println("====  ====");

       for(int i=0;i<user.length;i++)

       {

           if(user[i] ==null)

           {

               System.out.println("请输入注册账号:");

               //user[i][0] = sc.next();

               Stringzhanghao=sc.next();

               System.out.println("请输入注册密码:");

               //user[i][1] = sc.next();

               Stringmima=sc.next();

               System.out.println("请输入您的真实姓名:");

               Stringname=sc.next();

               System.out.println("请输入手机号:");

               //zijin[i][2] = sc.nextInt();

               Stringphone=sc.next();

               geren1gr=newgeren1(zhanghao,mima,name,phone,i);

               user[i] =gr;

               System.out.println("注册成功");

               return;

           }

       }

   }

   public static voiddenglu1(Scannersc,geren1[]user){

       System.out.println("====  =====");

       System.out.println("请输入账号:");

       Stringzh=sc.next();

       System.out.println("请输入密码:");

       Stringmm=sc.next();

       for(int i= 0;i<user.length;i++){

           //System.out.println(user[i]);

           if(user[i] !=null){

               geren1gr=user[i];

               //System.out.println(gr.getZijin());

               if(zh.equals(gr.getZhanghao()) &&mm.equals(gr.getMima()))

               {

                   System.out.println("登录成功!");

                   grjiemian(sc,user,gr);

                   return;

               }

           }

       }

       System.out.println("无此账号或密码错误!");

   }

   public static voidgrjiemian(Scannersc,geren1[]user,geren1gr){

       while(true){

           System.out.println("====个人页面=====");

           System.out.println("请选择您要办理的业务:");

           System.out.println("1,存款\t\t\t2,取款");

           System.out.println("3,查询余额\t\t4,转账");

           System.out.println("5,查询个人信息\t6,退出登录");

           int xuanze=sc.nextInt();

           if(xuanze== 1){

               System.out.println("请输入存款金额:");

               gr.setZijin(gr.getZijin()+sc.nextInt());

               System.out.println("存款成功,当前余额:"+gr.getZijin()+"");

           }else if(xuanze== 2){

               System.out.println("请输入取款金额:");

               int qk=sc.nextInt();

               if(qk>gr.getZijin()){

                   System.out.println("余额不足。。。");

               }else{

                   gr.setZijin(gr.getZijin()-qk);

                   System.out.println("取款成功,当前余额:"+gr.getZijin()+"");

               }

           }else if(xuanze== 3){

               System.out.println("当前余额:"+gr.getZijin()+"");

           }

           else if(xuanze== 4){

               System.out.println("请输入转账账号:");

               Stringzh=sc.next();

               System.out.println("请输入转账金额:");

               int jine=sc.nextInt();

               for(int zhao= 0;zhao<user.length;zhao++){

                   if(user[zhao] !=null){

                       geren1gr1=user[zhao];

                       if(zh.equals(gr1.getZhanghao())){

                           gr1.setZijin(gr1.getZijin()+jine);

                           gr.setZijin(gr.getZijin() -jine);

                       }

                   }

               }

           }

           else if(xuanze== 5){

               gr.print();

           }

           else if(xuanze== 6){

               return;

           }

       }

   }

}

9、 编写一个程序,已有若干学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。思路:设计一个学生类Stud,除了包括no(学号)、name(姓名)、和deg(成绩)数据成员外。有两个静态变量sum和num,分别存放总分和人数,另有一个构造方法、一个普通成员方法disp()和一个静态成员方法avg(),它用于计算平均分。

importjava.util.Scanner;

public classStudent {

   int no;

   Stringname;

   double score;

   static double sum;

   static int num;

  

   publicStudent() {

     

   }

   public voiddisp() {

      Scannersc=newScanner(System.in);

     

      System.out.println("请输入存放同学的位数为*");

      num=sc.nextInt();

      System.out.println("请输入学号");

      no=sc.nextInt();

      System.out.println("请输入名字");

      name=sc.next();

      System.out.println("请输入成绩");

      score=sc.nextDouble();

      sum=sum+score;

   }

  

   static doubleave() {return sum/num;}

  

   public voidshowInto() {

      System.out.println("该同学学号为"+no);

      System.out.println("该同学名字为"+name);

      System.out.println("该同学成绩为"+score);

      System.out.println("截至该同学目前平均成绩为"+ave());

   }

}

\\

public classStud {

   public static voidmain(String[]args) {

      System.out.println("请存放三个学生的信息");

      Studentone=newStudent();

      Studenttwo=newStudent();

      Studentthree=newStudent();

     

      one.disp();

      one.showInto();

     

      two.disp();

      two.showInto();

     

      three.disp();

      three.showInto();

   }

}

10.编写一个程序,统计学生成绩,其功能包括输入学生的姓名和成绩,按成绩从高到低排列打印输出,对前70%的学生定为合格(PASS),而后30%的学生定为不合格(FAIL)。思路: 设计一个类student,包含学生的姓名和成绩等数据。设计一个类Compute: sort()、disp(),它们分别用于按成绩排序和输出数据。

student类

public classStudent {

    Stringname;

    double deg;

    publicStudent(Stringname,double deg) {

        this.name=name;

        this.deg=deg;

    }

}

compute

public classCompute {

    public voidsort(Student []students){

        for(int i= 0;i<students.length;i++){

            for(int j=i;j<students.length;j++){

                if(students[i].deg<students[j].deg){

                    Studenttemp=students[i];

                    students[i] =students[j];

                    students[j] =temp;

                }

            }

        }

    }

    public voiddisp(Student[]students){

        sort(students);

        for(int i= 0;i<students.length;i++){

            if(i<=students.length*0.7-1){

                System.out.println("姓名:"+students[i].name+成绩:"+students[i].deg+"  PASS");

            }else{

                System.out.println("姓名:"+students[i].name+成绩:"+students[i].deg+"  FAIL");

            }

        }

    }

}

Demo

public classDemo {

   public static voidmain(String[]args) {

      Student[]s=newStudent[5];

        s[0] =newStudent("四浪",79);

        s[1] =newStudent("三根",88);

        s[2] =newStudent("二狗",56);

        s[3] =newStudent("一休",75);

        s[4] =newStudent("零零",65);

        Computecompute=newCompute();

        compute.disp(s);

   }

}


版权声明:本文为m0_62029216原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。