赞
踩
实验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 © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。