Java基础实验三

类与对象(一)

 [实验任务1]超市购物程序设计

[任务介绍]

        1.任务描述

去超市购物时人们日常生活的重要事情之一。在超市中有很多日常生活的用品,如水果、蔬菜、洗衣机、电冰箱等。人们只能买到超市中的已有物品,如果所需要的商品在超市中没有或者已经卖完了,那么只能白跑一趟。

本任务要求,使用所学知识编写一个超市购物程序,实现超市购物功能。购物时,如果购物者所需要购买的商品在超市中有,则提示购物者买到了某商品;如果超市中没有购物者所需的商品,则提示购物者白跑了一趟,在超市中什么都没有买到。

备注:

(1)要求编写set和get方法给超市类中的成员变量货物二维数组赋值;

(2)编写两个类:超市类和测试类(二维数组定义如下:String[][] product={{"苹果","20"},{"手机","2000"},{"空调","4888"},{"笔","2"},{"娃娃菜","10"},{"洗衣机","2999"},       {"大米","18"},{"娃哈哈","30"},{"费列罗","88"},{"棉被四件套","518"}};)。超市类UML图如下:

         2.运行结果

[任务目标]

  1. 学会分析“超市购物”程序的实现思路;
  2. 根据思路独立完成“超市购物”的源代码编写、编译和运行;
  3. 能够根据“超市购物”程序功能的不同,将功能封装到不同的方法中;
  4. 理解类与对象的概念以及两者的创建和使用;
  5. 掌握使用类来封装对象的属性和方法。

[实现思路]

首先设计两个类,分别是SuperMarket和Test。在SuperMarket类中获取get和set函数,根据UML图可知,sell函数用于查找用户输入的货物名称是否存在(用equals方法与二维数组product进行比较,如果字符串与数组中的数据相等,返回1,否则返回0)。getPrice函数用于获取货物名称相对于的价格(同样是for循环中用equals方法与数组进行比较,如果存在与之相等的货物名称,则输出相对于的货物价格,否则返回“0”)。在Test类中,通过调用SuperMarket中的函数实现。

 [实现代码及运行结果]

实现代码如下:

package b;
import java.util.Scanner;
public class Test {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner reader=new Scanner(System.in);
		SuperMarket a=new SuperMarket();
		String name,huowu;
		String[][] product={{"苹果","20"},{"手机","2000"},{"空调","4888"},{"笔","2"},
				{"娃娃菜","10"},{"洗衣机","2999"},{"大米","18"},
				{"娃哈哈","30"},{"费列罗","88"},{"棉被四件套","518"}};
		a.setProduct(product);
		while (true){
			System.out.print("顾客姓名:");
			name=reader.next();
			System.out.print("货物名称:");
			huowu=reader.next();
			if (a.sell(huowu)==1)
				System.out.println(name+"买到了"+huowu+",花费"+a.getPrice(huowu)+"元。");
			else
				System.out.println(name+"白跑了一趟,什么也没有买到。");
		}
	}
}
package b;
public class SuperMarket {
	String[][] product;
	public String[][] getProduct() {
		return product;
	}
	public void setProduct(String[][] product) {
		this.product = product;
	}
	int sell(String name){
		for (String[] i:product){
			if (i[0].equals(name)) return 1;
		}
		return 0;
	}
	String getPrice(String name){
		for (String[] i:product){
			if (i[0].equals(name)) return i[1];
		}
		return "0";
	}
}

运行结果如下: 

UML图如下: 

[实验任务2]银行新用户现金业务办理

[任务介绍]

        1.任务描述

        编写一个银行新用户现金业务办理程序,使其模拟新用户到银行办理现金存取业务时的场景。要求此场景中,要模拟出银行对用户到来的欢迎动作、对用户离开的提醒动作,以及用户的开户、存款和取款动作,在完成开户、存款和取款操作后,要提示用户的账户金额。例如:一个新用户来到招商银行,首先银行要表示欢迎,然后银行工作人员会为用户办理开户手续。开户后,用户先进行存款操作,之后又进行了取款操作,取款操作时需要用户输入正确的密码和取款金额,且取款金额需小于当前账户余额。当业务办理完,离开银行,银行提醒用户携带好随身财务。至此银行新用户现金业务办理结束。

备注:

        (1)编写两个类:银行类和测试类。

        (2)银行类的UML图如下所示。其中blankName为静态变量。 

        2.运行结果 

图1  开户、存款和查询 

图2  取款、查询和退出

[任务目标]

  1. 学会分析“银行新用户现金业务办理”程序的实现思路;
  2. 根据思路独立完成“银行新用户现金业务办理”的源代码编写、编译和运行;
  3. 学会构造方法以及this关键字的使用;
  4. 学会静态变量的使用。

[实现思路]

        银行新用户现金业务办理主要有开户,存款,取款,查询,退出五个环节。根据UML图可知,deposit()用于存款(输入要存款的金额,然后将其加到账户余额中去,达到存款的目的)。withdrawal()用于取款(取款前需要输入密码,用equals()方法将输入的密码与正确密码进行字符串比较,如果不相等,显示密码错误退出取款,当密码输入正确,就可以输入要取款的金额,将账户余额与要取款金额进行比较,取款金额必须小于账户余额,然后将账户余额减去要取款金额,实现取款的操作)。Fun()用于查询账户余额。goodbye()用于退出系统。 

        在主函数中通过switch调用Bank类中的函数实现各个功能。

[实现代码及运行结果]

 实现代码如下:

package b;
import java.util.Scanner;
public class Test {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner reader=new Scanner(System.in);
		String name,password="123456";
		double balance=0.0;
		System.out.print("请输入用户名:");
		name=reader.next();
		Bank bank=new Bank(name,password,balance);
		System.out.println("欢迎"+name+"来到招商银行!");
		System.out.println(name+" 开户成功,账户余额"+balance+"元");
		while (true){
			System.out.println("*************银行业务*************");
			System.out.println("1、存款	2、取款	3、查询	4、退出");
			System.out.println("********************************");
			System.out.print("请选择:");
			int op;
			op=reader.nextInt();
			switch(op){
				case 1:
					bank.deposit();
					break;
				case 2:
					bank.witchdrawal();
					break;
				case 3:
					bank.Fun();
					break;
			}
			if (op==4){
				bank.goodbye();
				break;
			}
		}
	}
}
package b;
import java.util.Scanner;
public class Bank {
	static String bankName="招商银行";
	Scanner reader=new Scanner(System.in);
	String name,password;
	double balance;
	public Bank(String name, String password, double balance) {
		super();
		this.name = name;
		this.password = password;
		this.balance = balance;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public double getBalance() {
		return balance;
	}
	public void setBalance(double balance) {
		this.balance = balance;
	}
	void deposit(){//存款
		double balance;
		System.out.print("请输入存款金额:");
		balance=reader.nextDouble();
		this.balance+=balance;
		System.out.println(this.name+"您好!您的账户已存入"+balance+"元,当前账户余额"+this.balance+"元");
	}
	public void witchdrawal(){//取款
		double balance;
		String password;
		System.out.print("请输入取款密码:");//取款密码为123456
		password=reader.next();
		if (password.equals(this.password)){
			System.out.print("请输入取款金额:");
			balance=reader.nextDouble();
			this.balance-=balance;
			System.out.println(this.name+"您好!您的账户已取出"+balance+"元,当前账户余额"+this.balance+"元");
		}
		else System.out.println("密码错误!");
	}
	public void Fun(){//查询
		System.out.println(this.name+"您好!当前账户余额"+this.balance+"元");
	}
	public void goodbye(){//退出
		System.out.println("请携带好随身财务,欢迎下次光临"+bankName+"!");
	}
}

运行结果如下: 

图1 

图2 

UML图如下:

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于JAVA超市自助购物系统的设计与实现 资料包里包含完整源码+软件环境(也就是安装包都有)+视频(代码调试、运行、讲解视频) 基于RFID的自动识别技术,通过无线射频方式实获得磁卡对超市物品的电子标签进行读取,然后将数据通过网络传输至服务器,在应用层开发一个管理系统,对超市物品信息、店内消费等各种行为进行管理和显示。系统需有登录注册功能,商品的信息管理,付款等功能。 拟解决的主要问题 本课题拟解决主要问题如下: (1)使用RFID自动识别技术,对超市商品信息进行读取 (2) 将接受到的数据传输给服务器 (3)在应用层管理系统中对信息进行管理 (4) 管理员对整个后台系统的商品进行管理 整个系统的设计: (1). (管理员操作)超市每上架一个新产品,就在软件端进行入库注册、注册填入商品的名称、编号(可以使用UUID动态生成)、数量、价格、图片、数据都保存在软件端的数据库里。 (2). (管理员操作)开卡-入库: 上架的新产品入库注册之后,需要为这个产品办理一张电子标签卡,这个卡里存放着产品的编号;这个卡就放在产品货架上(与产品对应),如果后面这个产品的信息如果查询,就读取电子标签里的编号,到数据库里查询。 (3). (管理员操作)开卡和查询的数据传输: 设备端与软件端采用 TCP网络方式进行通信;设备端当做TCP客户端,软件端当做TCP服务器;当设备端查询产品的电子标签,设备端读取编号之后,会通过约定的数据格式通过网络传递给软件端。 当软件端开卡注册,也会用约定好的数据格式传递给设备端,如果设备端收到数据,开发板上的LED会点亮;这把IC拿到RC522射频模块上刷一下即可;如果成功写入LED灯就会关闭。 (4). 软件端的设计: 有注册界面、登录界面; 主界面上显示店内有所有登记入库的商品信息,每个产品有图片进行显示、图片下面就显示产品的数量与价格; 管理员界面: 可以进行商品添加、设计价格、修改信息等。 查询页面: 输入产品的信息,可以查询产品的所有详细信息。 顾客可以选择购买的商品进行,然后点击支付。
以下是Java方法基础实验的介绍和演示: Java方法是一段可重用的代码块,可以接受输入并返回输出。在Java中,方法是类的一部分,可以在类中定义和调用。Java方法的语法如下: ```java 修饰符 返回类型 方法名(参数列表) { // 方法体 return 返回值; } ``` 其中,修饰符可以是public、private、protected或默认,返回类型可以是任何Java数据类型,方法名是标识符,参数列表是一组用逗号分隔的输入参数,方法体是一组执行语句,return语句用于返回方法的输出。 下面是一个Java方法的例子: ```java public class Calculator { public static int add(int a, int b) { return a + b; } } ``` 这个例子定义了一个名为add的静态方法,接受两个整数作为输入,返回它们的和。在另一个类中,可以通过以下方式调用这个方法: ```java int sum = Calculator.add(2, 3); ``` 这个调用将返回5,并将其赋值给变量sum。 现在,我们来进行一个Java方法基础实验。假设我们要编写一个程序,计算两个数的平均值。请按照以下步骤进行操作: 1.创建一个名为Average的类。 2.在Average类中定义一个名为calculateAverage的静态方法,接受两个double类型的参数,返回它们的平均值。 3.在calculateAverage方法中,使用以下代码计算平均值: ```java double average = (num1 + num2) / 2; ``` 其中,num1和num2是方法的输入参数。 4.在另一个类中,调用calculateAverage方法,并将其输出到控制台。 下面是完整的Java代码: ```java public class Average { public static double calculateAverage(double num1, double num2) { double average = (num1 + num2) / 2; return average; } } public class Main { public static void main(String[] args) { double num1 = 3.5; double num2 = 4.2; double average = Average.calculateAverage(num1, num2); System.out.println("The average of " + num1 + " and " + num2 + " is " + average); } } ``` 输出结果为: ``` The average of 3.5 and 4.2 is 3.85 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值