Class_third_实验报告

设计思路:声明一个父类Shape并声明一个getArea()计算面积的空方法让子类Circle,Echelon,Triangle,Rectangle 继承父类的方法并根据类的不同重写getArea()方法。最后声明一个Test类实现这四个类的方法,实现时用子类赋给父类的方法实现(学以致用);

代码:

package area_design;

//父类

public class Shape {

public double getArea() {

return 0;

}

}

//矩形

public class Rectangle extends Shape {

private double x,y;

public void setX(double x) {

this.x = x;

}

public void setY(double y) {

this.y = y;

}

public double getArea() {

return x*y;

}

}

//梯形

public class Echelon extends Shape{

private double x1,x2,h;

public void setX1(double x1) {

this.x1 = x1;

}

public void setX2(double x2) {

this.x2 = x2;

}

public void setH(double h) {

this.h = h;

}

public double getArea() {

return (x2+x1)*h/2;

}

}

//三角形

public class Triangle extends Shape{

private double x,h;

public void setX(double x) {

this.x = x;

}

public void setH(double h) {

this.h = h;

}

public double getArea() {

return x*h/2;

}

}

//圆

public class Circle extends Shape{

private double r;

public void setR(double r) {

this.r = r;

}

public double getArea() {

return Math.PI*r*r;

}

}

//Test测试类

import java.util.Scanner;

public class TestShape {

static Scanner scan = new Scanner(System.in);

static double area=0;

static public void countArea(Shape s) {

int x,y,h;

Circle a = new Circle();

Triangle b = new Triangle();

Rectangle c = new Rectangle();

Echelon d = new Echelon();

s = a;

System.out.print("请设置圆形的半径:");

x = scan.nextInt();

a.setR(x);

area+=s.getArea();

s = b;

System.out.print("请设置三角形的底边:");

x = scan.nextInt();

System.out.print("请设置三角形的高度:");

y = scan.nextInt();

b.setH(y);

b.setX(x);

area+=s.getArea();

s = c;

System.out.print("请设置矩形的高:");

x = scan.nextInt();

System.out.print("请设置矩形的宽:");

y = scan.nextInt();

c.setX(x);

c.setY(y);

area+=s.getArea();

s = d;

System.out.print("请设置梯形的高:");

h = scan.nextInt();

System.out.print("请设置梯形的上底边长:");

x = scan.nextInt();

System.out.print("请设置梯形的下底边长:");

y = scan.nextInt();

d.setH(h);

d.setX1(x);

d.setX2(y);

area+=s.getArea();

}

public static void main(String[] args) {

Shape s = new Shape();

TestShape.countArea(s);

System.out.println("他们的面积之和为:"+TestShape.area);

}

}

运行结果

2,抽象类和接口的设计(设计型)。

设计思路:该实验任务有两个,第一个是要求应用abstract抽象类,先声明一个抽象类Shape并声明一个抽象方法showArea();然后声明Rectangle,Circle,Square类继承抽象类Shape并重写showArea()方法;最后用子类化身父类的方法显示他们的面积;

第二个要求是应用interface接口类;

首先声明一个DiagArea接口类,并声明两个方法分别是:getDiagonal(),getArea();然后声明两个类分别是Rectangle_interfaces和Square_interfaces类,在Rectangle_interfaces类进行两个接口方法的重写,Square_interfaces类继承Rectangle_interfaces类并重写继承下来的两个接口方法再声明一个showDiagonalArea()方法输出它的对角线长度,边长以及它的面积;最后声明一个它们的对象实现它们的功能;

注:接口类继承用:implements,抽象类等类继承用:extends;接口可以继承多个用“,”隔开,但抽象类等类只能继承一个;

代码:

package abstract_and_interfaces;

//抽象类

public abstract class Shape {

abstract public void showArea();//用来计算并显示面积

}

//矩形类继承抽象类

public  class Rectangle extends Shape{

private double x,y;

public void setRectangle(double a,double b) {

x = a;

y = b;

}

public void showArea() {

System.out.println("矩形的面积为:"+x*y);

}

}

//圆形类继承抽象类

public class Circle extends Shape{

private double r;

public void setCircle(double a) {

r = a;

}

public void showArea() {

System.out.println("圆的面积为:"+r*Math.PI);

}

}

//正方形类继承抽象类

public class Square extends Shape{

private double a;

public void setSquare(double m) {

a = m;

}

public void showArea() {

System.out.println("正方形的面积为:"+a*a);

}

}

//接口类

public interface DiagArea {

public double getDiagonal();

public double getArea();

}

//连接接口

public class Rectangle_interfaces implements DiagArea{

private double w,h;

public void setRectangle(double a,double b) {

w = a;

h = b;

}

@Override

public double getDiagonal() {

return Math.sqrt(w*w+h*h);

}

@Override

public double getArea() {

return w*h;

}

}

//正方形继承长方形

public class Square_interfaces extends Rectangle_interfaces{

private double x,diagonal,area;

public void setSquare(double a) {

x = a;

}

public double getDiagonal() {

diagonal = Math.sqrt(x*x*2);

return diagonal;

}

public double getArea() {

area = x*x;

return area;

}

public void showDiagonalArea() {

System.out.println("正方形的边长为:"+x);

System.out.println("正方形的对角线为:"+getDiagonal());

System.out.println("正方形的面积为:"+ getArea());

}

}

//测试类

public class Test {

public static void main(String[] args) {

/*---------抽象类--------*/

Shape A;

Rectangle a = new Rectangle();

Square b = new Square();

Circle c = new Circle();

a.setRectangle(3, 4);

b.setSquare(2);

c.setCircle(1);

A = a;

A.showArea();

A = b;

A.showArea();

A = c;

A.showArea();

/*------------接口------------*/

DiagArea s;

Rectangle_interfaces n =  new Rectangle_interfaces();

Square_interfaces m = new Square_interfaces();

n.setRectangle(3, 4);

s = n;

System.out.println("矩形的对角线长为:"+s.getDiagonal());

System.out.println("矩形的面积为:"+s.getArea());

m.setSquare(3);

m.showDiagonalArea();

}

}

实验截图:

3,班级信息管理类设计(设计综合型实验)

设计思路:很简单就是声明一个人的基本类Mankind,再声明一个大学生类Student,让Student继承Mankind类在两个类中分别声明它们属性即成员变量的获取和设置的方法;由于增删改查系统做过太多次就不做详细介绍;直接拿原来的增删改查系统改变一下类就可以了;

代码:

package Class_message_management;

//人的基本类

public class Mankind {

private String sex,bornday;

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public String getBornday() {

return bornday;

}

public void setBornday(String bornday) {

this.bornday = bornday;

}

//大学生类

public class Student extends Mankind{

private String name,number,comfrom,score;

Student() {

number = null;

}

public String getScore() {

return score;

}

public void setScore(String score) {

this.score = score;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getNumber() {

return number;

}

public void setNumber(String number) {

this.number = number;

}

public String getComfrom() {

return comfrom;

}

public void setComfrom(String comfrom) {

this.comfrom = comfrom;

}

}

}

import java.util.Scanner;

public class Manager {

public Scanner scan;

final int cc=5;

private int select;

public Student student[];

Manager()       //构造函数

{

student=new Student[cc];          //对Student类student初始化

for(int i=0;i<cc;i++)

{

student[i]=new Student();

}

scan=new Scanner(System.in);

}

//-----<<--判断条件-->>-----

public boolean addcan ()      //判断是否可以添加

{

for(int i = 0;i < cc;i++)

{

if(student[i].getNumber()==null )

return true;

}

return false;

}

public int number()   //找到可以添加学生信息的下标

{

for(int i = 0;i < cc;i++)

{

if(student[i].getNumber()==null )

return i;

}

return -1;

}

public int lookp(String num)    //查找学生编号

{

String mm;

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

{

mm = student[i].getNumber();

if(mm.equals(num))

return i;

}

return -1;

}

public boolean test(String num)   //判断输入的学号是否重名

{

String mm;

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

{

mm = student[i].getNumber();

if(mm==null)

return true;

if(mm.equals(num))

return false;

}

return true;

}

//----<<--实现功能-->>-----

public void add(String nam,String num,String sex,String bornday,String score,String comfrom)  //添加学生信息

{

int he = number();

student[he].setName(nam);

student[he].setNumber(num);

student[he].setSex(sex);

student[he].setBornday(bornday);

student[he].setScore(score);

student[he].setComfrom(comfrom);

}

public void delet(String num)    //删除学生信息

{

int i=lookp(num);

student[i].setNumber(null);;

}

public void show()         //展示学生信息

{

for(int i = 0;i < cc;i++)

{

if(student[i].getNumber()!=null)

{

System.out.println("学生姓名:"+student[i].getName());

System.out.println("学生学号:"+student[i].getNumber());

System.out.println("学生性别:"+student[i].getSex());

System.out.println("学生出生日期:"+student[i].getBornday());

System.out.println("学生入学成绩:"+student[i].getScore());

System.out.println("学生籍贯:"+student[i].getComfrom());

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

System.out.println();

}

}

}

//----<<--界面,界面信息与功能实现连接-->>----

public void start()

{

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

System.out.println("\t"+ "学生教务系统v2.0");

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

System.out.println("\t"+"1.添加学生信息。");

System.out.println("\t"+"2.修改学生信息。");

System.out.println("\t"+"3.查询学生信息。");

System.out.println("\t"+"4.删除学生信息。");

System.out.println("\t"+"5.展示学生信息。");

System.out.println("\t"+"6.退出学生系统。");

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

System.out.println("请输入您想要实现功能的序号");

if(scan.hasNext())

{

select=scan.nextInt();

}

switch (select) {

case 1:      //实现1所代表的功能

{

if(addcan())

{

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

String nam,ids,comfrom,score,sex,bornday;

ids = scan.next();

if(!test(ids))

{

System.out.println("该学号已存在");

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

start();

}

else

{

System.out.println("请输入学生姓名");

nam = scan.next();

System.out.println("请输入学生性别");

sex = scan.next();

System.out.println("请输入学生出生日期");

bornday = scan.next();

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

score = scan.next();

System.out.println("请输入学生籍贯");

comfrom = scan.next();

add(nam,ids,sex,bornday,score,comfrom);

System.out.println("添加成功");

show();

start();

}

}

else

{

System.out.println("教务系统人数已满");

start();

}

}break;

case 2:     //实现2所代表的功能

{

System.out.print("请输入您所想要修改的学生学号:");

String ids,comfrom,score,sex,bornday;

ids = scan.next();

if(!test(ids))

{

String id;

System.out.print("请输入设置后的学生学号:");

id = scan.next();

student[lookp(ids)].setNumber(id);

System.out.print("请输入设置后的学生姓名:");

String nam;

nam = scan.next();

student[lookp(id)].setName(nam);

System.out.print("请输入设置后的学生性别:");

sex = scan.next();

student[lookp(id)].setSex(sex);

System.out.print("请输入设置后的学生出生日期:");

bornday = scan.next();

student[lookp(id)].setBornday(bornday);

System.out.print("请输入设置后的学生入学成绩:");

score = scan.next();

student[lookp(id)].setScore(score);

System.out.print("请输入设置后的学生籍贯:");

comfrom = scan.next();

student[lookp(id)].setComfrom(comfrom);

System.out.println("成功修改该学生信息");

show();

start();

}

else

{

System.out.println("您所输入的学号不存在!");

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

start();

}

}break;

case 3:      //实现3所代表的功能

{

System.out.print("请输入您想要查询的学生学号:");

String num;

num = scan.next();

if(!test(num))

{

System.out.println("学生姓名:"+student[lookp(num)].getName());

System.out.println("学生学号:"+student[lookp(num)].getNumber());

System.out.println("学生性别:"+student[lookp(num)].getSex());

System.out.println("学生出生日期:"+student[lookp(num)].getBornday());

System.out.println("学生入学成绩:"+student[lookp(num)].getScore());

System.out.println("学生籍贯:"+student[lookp(num)].getComfrom());

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

System.out.println();

start();

}

else

{

System.out.println("该学号不存在!");

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

start();

}

}break;

case 4:

{

System.out.print("请输入您想要删除的学生学号:");

String ids;

ids = scan.next();

if(!test(ids))

{

delet(ids);

System.out.println("删除成功!");

start();

}

else

{

System.out.println("您输入的学生学号不存在!");

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

start();

}

}break;

case 5:

{

show();

start();

}break;

case 6:

{

return ;

}

default: {

System.out.println("您输入的序号错误!");

start();

}

}

}

public static void main(String[] args) {

// TODO 自动生成的方法存根

Manager  aa = new Manager();

aa.start();

}

}

实验截图:

4,按照题目要求设计并编写一个 JAVA 程序(综合设计型)

设计思路:声明两个接口Student和Teacher;Student接口中声明setFee()和getFee()方法,Teacher接口声明setPay()和getPay()方法;声明一个Graduate类连接这两个接口并重写接口里的方法,再声明一个方法计算是否贷款;

代码:

package teachers_students;

//老师接口

public interface TeacherManageInterface {

public void setPay(int a);

public int getPay();

}

//学生接口

public interface StudentInterface {

public void setFee(int a);

public int getFee();

}

//研究生类连接两个接口

public class Graduate implements TeacherManageInterface,StudentInterface{

private int fee,pay,age;

private String name,sex;

Graduate(String nam,String Sex,int Age){

name = nam;

sex = Sex;

age = Age;

}

@Override

public void setPay(int a) {

pay = a;

}

@Override

public int getPay() {

return pay;

}

@Override

public void setFee(int a) {

// TODO 自动生成的方法存根

fee = a;

}

@Override

public int getFee() {

// TODO 自动生成的方法存根

return fee;

}

public void whetherloan() {

if(getPay()*12-getFee()*2<2000)

System.out.println("provide a loan");

}

public static void main(String[] args) {

Graduate a = new Graduate("zhangsan", "woman", 35);

a.whetherloan();

}

}

实验截图:

原文地址:https://www.cnblogs.com/goubb/p/9899999.html

时间: 2024-08-12 22:07:37

Class_third_实验报告的相关文章

广外第二周的实验报告来这里分享一下

虽然有很多还不知道怎么改,可能也有很多测试不到的地方,但是通过这个星期我好歹了解了好多东西啊 实验报告 通过本次学习,能了解到VC6.0.是用于将已生成的C++语言源程序代码转换为计算机能读懂的目标代码,计算机用的均是二进制代码.编辑完成后它首先生成扩展名为obj的文件(程序编译后的二进制文件),若想进行之后的链接.运行过程,必须不断修改源程序文件至完全正确. 在文件→新建→源代码这里可以新建源代码:新建→打开项目或文件中可以打开以前写过的源代码或者程序:运行→编译中即把所打源文件转换为二进制代

2062326 齐力锋 实验四《Java面向对象程序设计Android开发》实验报告

北京电子科技学院(BESTI) 实 验 报 告 课程: 程序设计与数据结构  班级: 1623  姓名: 齐力锋 学号: 20162326 成绩: 指导教师: 娄嘉鹏/王志强 实验日期: 2017年5月26日 实验密级:非密级 预习程度: 优良 实验时间: 2 Hours 仪器组次: 必修/选修: 必修 实验序号: 04 实验名称:Java面向对象程序设计Android开发 实验内容 1.Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBI

词法分析实验报告

词法分析实验报告 一.        实验目的 编制一个词法分析器,通过该词法分析程序的设计实例,进一步了解词法分析程序构造的一些细节. 二.        实验内容和要求 实验内容: 对字符串表示的源程序,从左到右进行扫描和分解.根据词法规则,识别出一个一个具有独立意义的单词符号,以供语法分析之用,若发现词法错误,则返回出错信息. 实验要求: 输入:源程序字符串 输出:二元组(种别,单词本身) 待分析语言的词法规则 三. 实验方法.步骤及结果测试 源程序名:压缩包文件(rar或zip)中源程序

DAY01 WINDOWS 实验报告

DAY 01   Windows 实验一 实验名称:虚拟机的安装以及win7系统的安装 实验描述:学习安装虚拟机,以及安装不同的系统,可以满足用户不同时期的不同的需求 实验步骤: 步骤1:点击开始-选择vmware文件夹-点击Vmware Workstation                             步骤2:点击文件-新建虚拟机-下一步-选择客户机操作系统和版本-选择虚拟机安装位置-设置虚拟机的处理器.内存等信息-完成虚拟机裸机的安装 步骤3:点击编辑虚拟器-双击CD/DVD(

DAY02 WINDOWS 实验报告

实验一 实验名称: ghost做系统的备份与还原 实验描述:对系统进行备份,可以使用户在电脑中病毒或出故障后,可以还原到一个比较纯净的系统环境 实验步骤: 步骤1:点击编辑虚拟机设置-CD/DVD-选择镜像文件-选择超级急救箱 步骤2:启动虚拟机-进入资源管理器-运行超级急救箱安装文件 步骤3:重启系统-选择超级急救箱-选择ghost32 for winpe 步骤4:进入PE系统以后,点击ghost32程序-选择local->partition->To image-下一步-选择要备份的分区-选

数据结构与算法 第四次实验报告 图

数据结构与算法 第四次实验报告 姓名:许恺 学号:2014011329 班级:计算机14-1     中国石油大学(北京)计算机科学与技术系 1.图的定义,文件为"Graph.h" #ifndef GRAPH_H//定义头文件 #define GRAPH_H #include<string>//引入标准库中的头文件 using namespace std; const int MaxSize=12; struct ArcNode//定义边表结点 { int adjvex;/

《信息安全系统设计基础》第二次实验实验报告

<信息安全系统设计基础>实验二实验报告 实验报告封面 实验目的与要求 解多线程程序设计的基本原理,学习 pthread 库函数的使用. 了解在 linux 环境下串行程序设计的基本方法. 掌握终端的主要属性及设置方法,熟悉终端I /O 函数的使用.学习使用多线程来完成串口的收发处理. 熟悉linux开发环境,学会基于S3C2410的linux开发环境的配置和使用.使用linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程 实验步

《信息安全系统设计》第四次实验报告

实验报告:外设驱动设计 小组成员 :20145306张文锦,20145334赵文豪,20145331魏澍琛. 实验仪器:windows xp,arm开发板. 实验内容.步骤与体会 1. 进入/arm2410cl/exp/drivers/01_demo,使用vi 编辑器阅读理解源代码. 2. Makefile 中有两种编译方法,可以在本机上使用gcc:也可以使用交叉编译器进行编译. 如果编译的时候出现问题,需要是在/usr/src 下没有建立一个linux 连接,可以使用下面的命令:[[email

20145301《Java程序设计》实验报告一:Java开发环境的熟悉

20145301<Java程序设计>实验报告一:Java开发环境的熟悉 课程:Java程序设计 实验名称:Java开发环境的熟悉 实验目的与要求: 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 2.完成实验.撰写实验报告,实验报告模板见QQ群,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如“查网络”.“问同学”.“看书”等一律得0分)以及分析(从中可以得到什