上机实验3-2 Java面向对象编程(二)
实验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面向对象编程(二)相关推荐
- Java实验报告之java面向对象编程
一.实验目的: 1. 理解 Java 语言是如何体现面向对象编程基本思想的: 2. 掌握类的声明以及对象的创建: 3. 了解类的成员变量和成员方法的特性以及类的构造方法的使用. 二.实验环境: Ecl ...
- java实验Java面向对象编程_Java实验项目 面向对象编程.doc
Java实验项目 面向对象编程 Java实验项目二 面向对象编程 第1部分 类与对象 [实验目的] 熟悉Java面向对象程序设计的基本思想. 掌握类与对象的定义及使用方法. 掌握package语句与i ...
- 面对对象课程设计报告java,面向对象编程 JAVA编程综合实验报告.doc
PAGE \* MERGEFORMAT 20 成绩: JAVA编程B综合实验报告 实验名称:面向对象编程 实验时间:2012年 5月 31日星期四 JAVA编程B综合实验报告 一.实验名称 面向对象编 ...
- 5.Java面向对象编程
文章目录 05 Java面向对象编程 1. 面向过程与面向对象比较 2. 类和对象 2.1 对象的属性和方法 2.2 类的属性和方法 2.3 定义一个类 2.4 创建和使用对象 2.5 对象和类的总结 ...
- java 密钥工厂 desede_20145212 实验五《Java网络编程》
20145212 实验五<Java网络编程> 一.实验内容1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代 ...
- java面向对象编程知识点总结
一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ...
- 20155201 实验四《Java面向对象程序设计》实验报告
20155201 实验四<Java面向对象程序设计>实验报告 一.实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android.组件.布局 ...
- java面向对象编程 漫画_Java面向对象编程(一)
由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ...
- 20165301陈潭飞2017-2018-2 20165301 实验三《Java面向对象程序设计》实验报告
2017-2018-2 20165301 实验三<Java面向对象程序设计>实验报告 一.敏捷开发与XP实践-1 实验要求: 在IDEA中使用工具(Code->Reformate C ...
- Java面向对象编程入门练习:Manager类继承Employee类并实现求得员工平均业绩
Java面向对象编程入门练习:Manager类继承Employee类并实现求得员工平均业绩 请定义一个Manager类,该类继承Employee类,并定义两个变量及一个构造方法,两个变量:depart ...
最新文章
- ajax请求json和xml数据及对json和xml格式数据的解析
- javascript入门·简单运算和数据类型转换
- 微服务架构可能不适合所有企业
- 使用dumpsys检测Activity任务栈
- 【人脸识别】初识人脸识别
- Hibernate实现limit查询报错 unexpected token: ? near line 1, column 30 [from cn.com.bean.Layer limit ? ,
- java如何取出数组指定数据6_java 从数组取出指定数量的值,相加大于等于或小于等于指定的值,取出对应的组合下标,下标不能重复...
- SQL注入攻击测试入实战(1)—成功渗透台湾某净化设备公司官网
- UTF-8 编码及检查其完整性
- SkewTransform
- 2014年5月第二个周末总结--保守自己的心
- 全国大学生数学建模竞赛2016A题系泊系统的设计MATLAB程序
- BEA Tuxedo中间件应用初探
- java excel 复杂表头_【分享】使用一个Excel模板就能搞定Excel复杂表头样式
- 二、azkaban 指南
- 在github上托管属于自己的网页
- node.js学习笔记Day2
- Unity鼠标左键控制物体
- 网页的首屏标准你了解多少?
- 修改seting里面的休眠时间列表