上机实验3 您所在的位置:网站首页 定义family类 上机实验3

上机实验3

2024-03-08 03:15| 来源: 网络整理| 查看: 265

实验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传递5 System.out.println("haierTV的频道是"+haierTV.getChannel()); Family zhangSanFamily = new Family(); zhangSanFamily.buyTV(haierTV);//【代码3】//zhangSanFamily调用void buyTV(TV tv)方法,并将haierTV传递给参数TV System.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());//显示方程组的解 else System.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()); else System.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()); else System.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类对象user if(user.checkUser()) {//checkUser()方法返回ture System.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类对象ft public 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); else return "要修改的数据已存在"; } public String editUser(String newPwd){//用于修改密码的方法 if(!ft.query(fileName,userData).equals("keyIsNoFound")) return ft.editFile(fileName,userData,name+""+ newPwd); else return "要修改的数据已存在"; } }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有