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();
}
}
实验截图:
Class_third_实验报告的更多相关文章
- 北京电子科技学院(BESTI)实验报告5
北京电子科技学院(BESTI)实验报告5 课程: 信息安全系统设计基础 班级:1452.1453 姓名:(按贡献大小排名) 郑凯杰.周恩德 学号:(按贡献大小排名) 20145314.20145217 ...
- 北京电子科技学院(BESTI)实验报告4
北京电子科技学院(BESTI)实验报告4 课程: 信息安全系统设计基础 班级:1452.1453 姓名:(按贡献大小排名)周恩德 .郑凯杰 学号:(按贡献大小排名)20145217 .201453 指 ...
- 20145215&20145307信息安全系统设计基础实验报告
20145215&20145307信息安全系统设计基础实验报告 PART1 一.实验原理 交叉编译,简单地说,就是在一个平台上生成另一个平台上的可执行代码.同一个体系结构可以运行不同的操作系统 ...
- 北京电子科技学院(BESTI)实验报告1
北京电子科技学院(BESTI)实验报告1 课程: 信息安全系统设计基础 班级:1452.1453 姓名:(按贡献大小排名)郑凯杰 .周恩德 学号:(按贡献大小排名)20145314 .20145217 ...
- 北京电子科技学院(BESTI)实验报告3
北京电子科技学院(BESTI)实验报告3 课程: 信息安全系统设计基础 班级:1452.1453 姓名:(按贡献大小排名)周恩德 .郑凯杰 学号:(按贡献大小排名)20145217 .201453 指 ...
- 20145205 《Java程序设计》实验报告五:Java网络编程及安全
20145205 <Java程序设计>实验报告五:Java网络编程及安全 实验要求 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.客户端中输入明文,利用DES算法加密,D ...
- 20145220&20145209&20145309信息安全系统设计基础实验报告(5)
20145220&20145209&20145309信息安全系统设计基础实验报告(5) 实验报告链接: http://www.cnblogs.com/zym0728/p/6132249 ...
- 20145220&20145209&20145309信息安全系统设计基础实验报告(3)
20145220&20145209&20145309信息安全系统设计基础实验报告(3) 实验报告链接: http://www.cnblogs.com/zym0728/p/6132243 ...
- 20145220&20145209&20145309信息安全系统设计基础实验报告(4)
20145220&20145209&20145309信息安全系统设计基础实验报告(4) 实验报告链接: http://www.cnblogs.com/zym0728/p/6132246 ...
随机推荐
- log4j layout日志信息格式
Log4j提供的layout有以下几种 org.apache.log4j.HTMLLayout(以HTML表格形式布局), org.apache.log4j.PatternLayout(可以灵活地指定 ...
- SVN服务的模式和多种访问方式 多种访问原理图解与优缺点
SVN企业应用场景 SVN任是当前企业的主流.git正在发展,未来会成为主流.如果大家精力足够,建议同时掌握. 1.4运维人员掌握版本管理 对于版本管理系统,运维人员需要掌握的技术点: 1.安装.部署 ...
- python实现根据当前时间创建目录并输出日志
举个例子:比如我们要实现根据当前时间的年月日来新建目录来存放每天的日志,当前时间作为日志文件名称:代码如下: #!/usr/bin/env python3 # _*_ coding: utf-8 _* ...
- element-table中使用checkbox
<el-table-column label="> <template slot-scope="scope"> <el-checkbox v ...
- resful规范
1.简介 什么是resful resful是一个规范,说白了就是面向资源编程,把网络中所有的东西,想象成资源 2.规范 10条规范 1)API与用户的通信协议,总是用HTTPS协议:HTTPS比htt ...
- (转)区块链共识机制分析——论PoW,PoS,DPos和DAG的优缺点
近期,随着区块链技术在社区中的声音越来越大,业界已经开始从技术角度对区块链进行全方位的解读.作为第一批区块链技术的实现,传统比特币与以太坊在共识机制.存储机制.智能合约机制.跨链通讯机制等领域并没有非 ...
- 【Python】-NO.98.Note.3.Python -【Python3 解释器、运算符】
1.0.0 Summary Tittle:[Python]-NO.98.Note.3.Python -[Python3 解释器] Style:Python Series:Python Since:20 ...
- Python 初始函数
python之路——初识函数 阅读目录 为什么要用函数 函数的定义与调用 函数的返回值 函数的参数 本章小结 为什么要用函数 我们就想啊,要是我们能像使用len一样使用我们这一大段“计算长度”的代 ...
- [LeetCode] 884. Uncommon Words from Two Sentences_Easy tag: Hash Table
We are given two sentences A and B. (A sentence is a string of space separated words. Each word co ...
- cycript使用
cycript的原理是动态库注入,但是其动态库注入的原理,与我们常见的通过LC_LOAD_DYLIB在可执行文件中注入动态库不同. cycript的操作是 : 抓取到要挂载的应用, 由于越狱机上拥有权 ...