学院

计算机科学与教育软件学院

年级、专业、班

网络16*

姓名

卟咚君

学号

1606100***

实验课程名称

Java语言实验

成绩

 

实验项目名称

Java 语言面向对象编程技术基础

指导老师

**

一.实验目的

• 掌握开发 Java 应用程序的步骤,掌握 Java 应用程序的基本结构。

• 掌握 Java 基本数据类型在命令行的输入和输出方法。

• 熟悉如何使用 Java 分支和循环语句解决问题。

• 熟悉类的基本设计方法,根据 Java 类的继承机制有效解决问题。

二.实验任务

1.编写一个 Java 应用程序,在主类的 main 方法中实现下列功能。

• 程序随机分配给用户一个 1 至 100 之间的整数

• 用户通过键盘输人自己的猜测

• 程序返回提示信息,提示信息分别是:“猜大了”、“猜小了”和“猜对了”

• 用户可根据提示信息再次输入猜测,直到提示信息是“猜对了”

• 用户猜对以后,显示猜测次数,并提供“重新开始”和“退出”功能

2. 假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资:

• 经理(Manager):每月获得一份固定的工资

• 销售人员(Salesman):在基本工资的基础上每月还有销售提成。

• 工人(Worker):按照每月工作的天数计算工资。

根据上述要求试用类的继承和相关机制描述这些功能,并编写一个 Java 应用程序,演示这些类的用法。

提示:应设计一个雇员类(Employee)描述所有雇员的共图特性,这个类应该提供一个计算工资的抽象方法 ComputeSalary( ),使得可以通过这个类计算所有雇员的工资。经理、销售人员和一般工人对应的类都应该继承这个类,并重新定义计算工资的方法,进而给出它的具体实现。

三.实验内容

(1)编写一个 Java 应用程序,在主类的 main 方法中实现下列功能。

• 程序随机分配给用户一个 1 至 100 之间的整数

• 用户通过键盘输人自己的猜测

• 程序返回提示信息,提示信息分别是:“猜大了”、“猜小了”和“猜对了”

• 用户可根据提示信息再次输入猜测,直到提示信息是“猜对了”

• 用户猜对以后,显示猜测次数,并提供“重新开始”和“退出”功能

package byd001;
import java.util.Scanner;
public class Test {
	public static void main(String[] args) {
		boolean flag = true;
		@SuppressWarnings("resource")
		Scanner reader = new Scanner(System.in);
		while (flag) {
			int cnt = 0;
			int num = (int) (Math.random() * 100+1);   
//生成1~100的随机数
			while (true) {      //进行猜数
				cnt++;          //猜数次数记录
				int random_num = reader.nextInt();    //猜一个数
				if (random_num > num)
					System.out.println("猜大了!");
				else if (random_num < num)
					System.out.println("猜小了!");
				else {
					System.out.println("猜对了!,一共猜了" + cnt + "次!");   //猜中数字,输出本次猜数的次数,并结束这次猜数
					break;
				}
				System.out.println("请再次输入猜测!");   
//猜不对就继续猜
			}
			  System.out.print("继续玩猜数游戏输入1,退出游戏请输入0:");              //完成一次猜数后,询问继续游戏还是退出游戏
			int temp = reader.nextInt();
			if (temp == 1)
				flag = true;
			else
				flag = false;
		}
	}
}

(2)假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资:

• 经理(Manager):每月获得一份固定的工资

• 销售人员(Salesman):在基本工资的基础上每月还有销售提成。

• 工人(Worker):按照每月工作的天数计算工资。

根据上述要求试用类的继承和相关机制描述这些功能,并编写一个 Java 应用程序,演示这些类的用法。

提示:应设计一个雇员类(Employee)描述所有雇员的共图特性,这个类应该提供一个计算工资的抽象方法 ComputeSalary( ),使得可以通过这个类计算所有雇员的工资。经理、销售人员和一般工人对应的类都应该继承这个类,并重新定义计算工资的方法,进而给出它的具体实现。

Employee.java  
package byd001;
public abstract class Employee {
	String name;         //姓名
	int age;             //年龄
	String position;     //职务
	double salary;       //工资
	public Employee(String Name,int Age) {     //构造函数
		name=Name;
		age=Age;
	}
	public String getName() {             //返回姓名
		return name;
	}
	public int getAge() {                 //返回年龄
		return age;
	}
	public abstract double ComputeSalary();  //抽象类计算并返回工资的函数
}
Manager.java
package byd001;
public class Manager extends Employee {
	Manager(String Name,int Age){   
		super(Name,Age);   //调用父类的构造函数
		position="经理";
	}
	public double ComputeSalary() {  //自定义计算工资的方法
		salary=10000;
		return salary;
	}
}
Salesman.java
package byd001;
public class Salesman extends Employee{
	double sells;
	Salesman(String Name,int Age){  
		super(Name,Age);    //调用父类的构造函数
		position="销售人员";
	}
	public void setSells(double Sells) {   //设置销售员的销售额
		sells=Sells;
	}
public double ComputeSalary() {    //自定义计算销售员的工资方法
		salary=4000+sells*0.3;
		return salary;
	}
}
Worker.java
package byd001;
public class Salesman extends Employee{
	double sells;
	Salesman(String Name,int Age){  
		super(Name,Age);    //调用父类的构造函数
		position="销售人员";
	}
	public void setSells(double Sells) {   //设置销售员的销售额
		sells=Sells;
	}
	public double ComputeSalary() {    //自定义计算销售员的工资方法
		salary=4000+sells*0.3;
		return salary;
	}
}
EmployeeTest.java
package byd001;
public class EmployeeTest {
	public static void main(String[] args) {
		Manager manager=new Manager("张三", 40);   //创建一个管理员对象
		System.out.println(manager.name+"的职位是"+manager.position+",工资是"+manager.ComputeSalary()+"元");  //输出管理员的姓名,职位,工资
		Salesman salesman=new Salesman("李四",35);  //创建一个销售员对象
		salesman.setSells(6000);   //设置该销售员的销售额
		System.out.println(salesman.name+"的职位是"+salesman.position+",工资是"+salesman.ComputeSalary()+"元");//输出销售员的姓名,职位,工资
		Worker worker=new Worker("王五",30);  //创建一个工人对象
		worker.setworkdays(28);              //设置工人的工作天数
		System.out.println(worker.name+"的职位是"+worker.position+",工资是"+worker.ComputeSalary()+"元");//输出工人的姓名,职位,工资	
	}
}

 

四.实验结果记录(程序运行结果截图)

1.编写一个 Java 应用程序,实现猜数功能

(1)进行猜数,输入一个数字50,结果表示猜大了

(2)进行猜数,输入一个数字25,结果表示猜大了

java预测算法得到下个月数据 java 数据训练和预测_Java

(3)进行猜数,输入一个数字12,结果表示猜大了

(4)进行猜数,输入一个数字 6,结果表示猜小了

java预测算法得到下个月数据 java 数据训练和预测_提示信息_02

(5)进行猜数,输入一个数字9,结果表示猜对了,这轮游戏猜了5次

(6)选择继续猜数,输入一个数字1

java预测算法得到下个月数据 java 数据训练和预测_java_03

(7)进行猜数,输入一个数字50,结果表示猜小了

(8)进行猜数,输入一个数字75,结果表示猜大了

java预测算法得到下个月数据 java 数据训练和预测_提示信息_04

(9)进行猜数,输入一个数字62,结果表示猜小了

(10)进行猜数,输入一个数字69,结果表示猜小了

java预测算法得到下个月数据 java 数据训练和预测_java预测算法得到下个月数据_05

(9)进行猜数,输入一个数字73,结果表示猜小了

(10)进行猜数,输入一个数字74,结果表示猜对了本轮游戏一共猜了6次

java预测算法得到下个月数据 java 数据训练和预测_java_06

(11)选择退出游戏,输入0

java预测算法得到下个月数据 java 数据训练和预测_System_07

2. 为某个公司编写雇员工资支付程序

java预测算法得到下个月数据 java 数据训练和预测_提示信息_08

五.实验心得总结

通过本次实验,掌握了编写源文件,编译源文件,和运行程序的步骤。更加熟悉了java应用程序的基本结构,能联合多个类编译应用程序,学会了创建对象,通过键盘输入输出和类的基本设计方法,以及使用抽象类的方法,能够根据java类的继承机制灵活的解决问题。