实验1 家中的电视

一、实验目的

成员变量也可能是引用类型,通过实验让学生掌握对象的组合以及参数传递

二、实验内容

编写一个Java应用程序,模拟家中买了一台电视机,家庭将电视机作为自己的一个成员。具体要求如下:

1、有三个源文件:

TV.java 负责创建电视类TV类

Family.java 负责创建家庭类Famliy类

MainClass.java 测试的主类

2、在主类的main()方法中首先使用TV类创建一个对象haierTV,然后使用Family类创建对象ZhangSanFamily,并将先前的TV类的对象实例haierTV的引用传递给ZhangSanFamily对象的成员变量homeTV.

三、程序代码

TV.java

public class TV {int channel;   //电视频道void setChannel(int m) {if(m>=1){channel=m;}
}int getChannel(){return channel;}void showProgram(){switch(channel) {case 1 : System.out.println("综合频道");break;case 2 : System.out.println("经济频道");break;case 3 : System.out.println("文艺频道");break;case 4 : System.out.println("国际频道");break; case 5 : System.out.println("体育频道");break;default : System.out.println("不能收看"+channel+"频道");} }}

Family.java

public class Family {TV homeTV;void buyTV(TV tv) {homeTV=tv;//【代码1】            //将参数tv赋值给homeTV}void remoteControl(int m) {homeTV.setChannel(m);  }void seeTV() {homeTV.showProgram();  //homeTV调用showProgram()方法}
}

MainClass.java

public class MainClass {public static void main(String args[]) {TV haierTV = new TV(); Family lisiFamily=new Family();haierTV.setChannel(5);System.out.println("haierTV的频道是"+haierTV.getChannel());lisiFamily.buyTV(haierTV);System.out.println("lisiFamily开始看电视节目");lisiFamily.seeTV();haierTV.setChannel(5);//【代码2】 //haierTV调用setChannel(int m),并向参数m传递5System.out.println("haierTV的频道是"+haierTV.getChannel());Family zhangSanFamily = new Family();zhangSanFamily.buyTV(haierTV);//【代码3】//zhangSanFamily调用void buyTV(TV tv)方法,并将haierTV传递给参数TVSystem.out.println("zhangSanFamily开始看电视节目");zhangSanFamily.seeTV();int m=2; System.out.println("hangSanFamily将电视更换到"+m+"频道");zhangSanFamily.remoteControl(m);System.out.println("haierTV的频道是"+haierTV.getChannel());System.out.println("hangSanFamily再看电视节目");zhangSanFamily.seeTV(); }
}

实验2 课后实训

求解一元二次方程或二元一次方程

1.设计一个用于求解任意一元二次方程的QuadraticEquation类

public class QuadraticEquation {
private int a,b,c;//私有字段
public QuadraticEquation(int a,int b,int c) {this.a=a;this.b=b;this.c=c;
}
public int getDiscriminant() {//计算判别式值的方法return b*b-4*a*c;
}
public double getRoot1() {//计算正实根的方法return(-b+Math.sqrt(b*b-4*a*c))/(2*a);
}
public double getRoot2() {//计算负实根的方法return(-b-Math.sqrt(b*b-4*a*c))/(2*a);
}
}

2.设计一个用于求解任意二元一次方程的LinearEquation类

public class LinearEquation {
private int a,b,c,d,e,f;//定义6个私有字段
LinearEquation(int a,int b,int c,int d,int e,int f){//创建类的构造方法this.a=a;this.b=b;this.c=c;this.d=d;this.e=e;this.f=f;
}//用于读取6个字段值的get()方法,无set()方法表示6个字段为只读字段
public int getA() {return a;
}
public int getB() {return b;
}
public int getC() {return c;
}
public int getD() {return d;
}
public int getE() {return e;
}
public int getF() {return f;
}
public boolean isSolvable() {//判别式方法,测试方程组是否有解return a*d-b*c!=0;
}
public double getX() {//计算方程组的解(x)return(double)(c*e-b*f)/(double)(a*e-b*d);
}
public double getY() {//计算方程组的解(y)return(double)(a*f-c*d)/(double)(a*e-b*d);
}
}

3.测试代码检验设计结果是否正确

public class SX1 {
public static void main(String[] args) {//调用构造函数创建对象le,通过其构造方法为6个系数字段赋值LinearEquation le=new LinearEquation(1,2,3,4,5,6);if(le.isSolvable())//调用判别式,判断方程组是否有解System.out.println("x="+le.getX()+", y="+le.getY());//显示方程组的解elseSystem.out.println("方程无解");
}
}

4.设计用户交互界面及程序整合

import java.util.*;
public class SX2 {
public static void main(String[] args) {Scanner val=new Scanner(System.in);while(true) {//选择3的时候退出System.out.println("一元二次方程--1 二元一次方程--2 退出--3 请选择:");switch(val.nextInt()) {case 1://处理一元二次方程System.out.println("请输入一元二次方程的3个系数:");QuadraticEquation qe=new QuadraticEquation(val.nextInt(),val.nextInt(),val.nextInt());if(qe.getDiscriminant()>=0)System.out.println("x1="+qe.getRoot1()+", x2="+qe.getRoot2());elseSystem.out.println("方程无实根");break;case 2://处理二元一次方程System.out.println("请输入二元一次方程的6个系数:");LinearEquation le=new LinearEquation(val.nextInt(),val.nextInt(),val.nextInt(),val.nextInt(),val.nextInt(),val.nextInt());if(le.isSolvable())System.out.println("x="+le.getX()+", y="+le.getY());elseSystem.out.println("方程无解");break;case 3:System.out.println("bye!");return;}}
}
}

简单用户管理的实现

1.编写主方法的代码

import java.util.*;
public class SX3_2 {//主类
public static void main(String[] args) {//主方法Scanner val = new Scanner(System.in);System.out.println("1--登录  2--注册新用户,请选择:");switch(val.nextInt()) {case 1://登录System.out.println("输入用户名和密码:");Users user = new Users(val.next(),val.next());//创建User类对象userif(user.checkUser()) {//checkUser()方法返回tureSystem.out.println("登录成功");System.out.print("1--修改密码  2--退出,请选择:");if(val.nextInt()==1) {//用户选择了"修改密码"System.out.print("输入新密码");System.out.println(user.editUser(val.next()));}else//用户选择了“退出”System.out.println("bye!");}else//登录失败System.out.println("用户名和密码错误");break;case 2://用户选择了“注册新用户”System.out.print("输入新的用户名和密码:");user = new Users(val.next(),val.next());System.out.println(user.addUser());break;default:System.out.println("菜单选择错误");}val.close();}
}

2.创建Users类

import sky.mytools.FileTools;
public class Users {//创建Users类private String name,userData;//封装私有字段private final String fileName="e:\\users.txt";//私有的final类型字段,用于储存数据文件名private FileTools ft=new FileTools();//声明一个FileTool类对象ftpublic Users(String n,String p){//User类的构造方法name=n;userData=n+""+p;//将用户名和密码组合成一个用空格分割的字符串}public boolean checkUser(){//用于检测用户是否合法的方法return !ft.query(fileName,userData).equals("keyIsNoFound");}public String addUser(){//用于实现新用户注册的方法if(ft.query(fileName,userData).equals("keyIsNoFound"))return ft.appendToFile(fileName,userData);elsereturn "要修改的数据已存在";}public String editUser(String newPwd){//用于修改密码的方法if(!ft.query(fileName,userData).equals("keyIsNoFound"))return ft.editFile(fileName,userData,name+""+ newPwd);elsereturn "要修改的数据已存在";}
}

上机实验3-2 Java面向对象编程(二)相关推荐

  1. Java实验报告之java面向对象编程

    一.实验目的: 1. 理解 Java 语言是如何体现面向对象编程基本思想的: 2. 掌握类的声明以及对象的创建: 3. 了解类的成员变量和成员方法的特性以及类的构造方法的使用. 二.实验环境: Ecl ...

  2. java实验Java面向对象编程_Java实验项目 面向对象编程.doc

    Java实验项目 面向对象编程 Java实验项目二 面向对象编程 第1部分 类与对象 [实验目的] 熟悉Java面向对象程序设计的基本思想. 掌握类与对象的定义及使用方法. 掌握package语句与i ...

  3. 面对对象课程设计报告java,面向对象编程 JAVA编程综合实验报告.doc

    PAGE \* MERGEFORMAT 20 成绩: JAVA编程B综合实验报告 实验名称:面向对象编程 实验时间:2012年 5月 31日星期四 JAVA编程B综合实验报告 一.实验名称 面向对象编 ...

  4. 5.Java面向对象编程

    文章目录 05 Java面向对象编程 1. 面向过程与面向对象比较 2. 类和对象 2.1 对象的属性和方法 2.2 类的属性和方法 2.3 定义一个类 2.4 创建和使用对象 2.5 对象和类的总结 ...

  5. java 密钥工厂 desede_20145212 实验五《Java网络编程》

    20145212 实验五<Java网络编程> 一.实验内容1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代 ...

  6. java面向对象编程知识点总结

    一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ...

  7. 20155201 实验四《Java面向对象程序设计》实验报告

    20155201 实验四<Java面向对象程序设计>实验报告 一.实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android.组件.布局 ...

  8. java面向对象编程 漫画_Java面向对象编程(一)

    由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ...

  9. 20165301陈潭飞2017-2018-2 20165301 实验三《Java面向对象程序设计》实验报告

    2017-2018-2 20165301 实验三<Java面向对象程序设计>实验报告 一.敏捷开发与XP实践-1 实验要求: 在IDEA中使用工具(Code->Reformate C ...

  10. Java面向对象编程入门练习:Manager类继承Employee类并实现求得员工平均业绩

    Java面向对象编程入门练习:Manager类继承Employee类并实现求得员工平均业绩 请定义一个Manager类,该类继承Employee类,并定义两个变量及一个构造方法,两个变量:depart ...

最新文章

  1. ajax请求json和xml数据及对json和xml格式数据的解析
  2. javascript入门·简单运算和数据类型转换
  3. 微服务架构可能不适合所有企业
  4. 使用dumpsys检测Activity任务栈
  5. 【人脸识别】初识人脸识别
  6. Hibernate实现limit查询报错 unexpected token: ? near line 1, column 30 [from cn.com.bean.Layer limit ? ,
  7. java如何取出数组指定数据6_java 从数组取出指定数量的值,相加大于等于或小于等于指定的值,取出对应的组合下标,下标不能重复...
  8. SQL注入攻击测试入实战(1)—成功渗透台湾某净化设备公司官网
  9. UTF-8 编码及检查其完整性
  10. SkewTransform
  11. 2014年5月第二个周末总结--保守自己的心
  12. 全国大学生数学建模竞赛2016A题系泊系统的设计MATLAB程序
  13. BEA Tuxedo中间件应用初探
  14. java excel 复杂表头_【分享】使用一个Excel模板就能搞定Excel复杂表头样式
  15. 二、azkaban 指南
  16. 在github上托管属于自己的网页
  17. node.js学习笔记Day2
  18. Unity鼠标左键控制物体
  19. 网页的首屏标准你了解多少?
  20. 修改seting里面的休眠时间列表

热门文章

  1. 2019-2020-1 20175227 《信息安全系统设计基础》第三周学习总结
  2. 【日常考试】中山市2016年小学生信息学竞赛试(shui)题
  3. 澳洲最有“名气”的十三大黑客
  4. 求自动检测技术及应用课后练习答案
  5. 自助咖啡机解决方案 ,咖啡市场的新型售卖渠道
  6. 掌握未来趋势的前端开发成长之路
  7. 2022年全球与中国99.999%纯度氧化亚氮行业市场需求预测与投资战略规划分析报告
  8. 在php中冒泡排序,php中实现快排与冒泡排序
  9. 【安卓病毒分析报告】FakeBank-盗取韩国银行信息的手机病毒
  10. 读书时如何做读书笔记?