java小项目水果摊

【华为2019年校园招聘】2019-4-17 软件题-水果摊小买卖 题目描述 小王手里有点闲钱,想着做点卖水果的小买卖,给出两个数组m,n,用m[i]表示第i个水果的成本价, n[i]表示第i个水果能卖出的价钱,假如现在有本钱k元,试问最后最多能赚多少钱? 说明: 1. 每种水果只能买一次,只能卖一次; 2. 数组m,n大小不超过50; 3. 数组元素为正整数,不超过1000 输入描述 1. 数组m, n; 2. 本钱k 输出描述 最多能赚多少钱 示例 输... 阅读详情

介绍

刚学完java 集合和IO流,想做了一个简单的小项目来练手,于是我就运用一些基础知识做了这个水果摊。水果摊的主要功能有:

  1. 进货
  2. 查看水果列表
  3. 购买水果
  4. 查看购物车
  5. 结账
  6. 退出

都是一些简单的功能,下面就来展示代码;
在这里插入图片描述

代码

主菜单

public class MyList {
	public static void main(String[] args) throws ClassNotFoundException, FileNotFoundException, IOException {
		System.out.println("欢迎来到水果摊");
		Scanner scanner =new Scanner(System.in);
		int f=0;
		while(true) {
			System.out.println("请选择业务类型:");
			System.out.println("0.进货,1.查看列表,2.购买水果,3.查看购物车,4.结账,5"
					+ "退出");
			int m =scanner.nextInt();
			switch(m) {
			case 0:Stock.Stock();
			break;
			case 1:Kind.Kind();	 
            break;
			case 2:Buy.Buy();
			break;
			case 3:Shoppings.Shoppings();
			break;
			case 4:Pay.Pay();
			break;
			case 5:System.out.println("感谢惠顾!");
			       f=1;
			break;
			 default:
				 System.out.println("输入错误,请重新输入");
			break;	
		}
			if(f==1)break;
	
	}

}
	}

进货

package com.vector.units;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import com.vector.dao.Fruit;
import com.vector.service.FileOutput;

public class Stock {

	static List<Fruit> list;
	public static void Stock() throws FileNotFoundException {
		List<Fruit> list = new ArrayList<>();
		Scanner scanner = new Scanner(System.in);
		String name;
		double price;
		int i = 1;
		while (true) {
			System.out.println("请输入第" + i + "种水果的种类:");
			name = scanner.next();
			System.out.println("请输入第" + i + "种水果的价格:");
			price = scanner.nextInt();
			Fruit sg = new Fruit(name, price);
			list.add(sg);
			setList(list);
			System.out.println("输入0继续,输入1结束进货");
			i++;
			int f = scanner.nextInt();
			if (f == 1) {
				break;
			}
		}
		FileOutput.FileOutput();
	}
	public static List<Fruit> getList() {
		return list;
	}
	public static void setList(List<Fruit> list) {
		Stock.list = list;
	}
}

查看水果列表

package com.vector.units;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;
import java.util.List;
import com.vector.dao.Fruit;
import com.vector.service.FileInput;
import com.vector.service.FileOutput;

public class Kind {
	static List<Fruit> list = new ArrayList<Fruit>();
	static Object ob;
	public static void Kind() throws ClassNotFoundException, FileNotFoundException, IOException {
		FileInput fileInput = new FileInput();
		list = (List<Fruit>) fileInput.FileInput().readObject();
		Kind.setList(list);
		System.out.println("总共有" + list.size() + "种水果,分别为:");
		for (Fruit s : list) {
			System.out.println(s);
		}
	}
	public static List<Fruit> getList() {
		return list;
	}
	public static void setList(List<Fruit> list) {
		Kind.list = list;
	}
	public static Object getOb() {
		return ob;
	}
	public static void setOb(Object ob) {
		Kind.ob = ob;
	}
}

购买水果

package com.vector.units;

import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

import com.vector.dao.Fruit;
import com.vector.service.Mapp;

public class Buy {
	static String name;
	static List<Integer> M;

	static Map<String, Double> fruit3;

	public static void Buy() throws FileNotFoundException {
		Map<String, Fruit> fruit = Mapp.Mapp();
		Map<String, Double> fruit2 = Mapp.Mapp1();
		Map<String, Double> fruit3 = Mapp.Mapp2();
		String name;
		int m;
		List<Integer> M = new ArrayList<>();
		Scanner scanner = new Scanner(System.in);
		while (true) {
			System.out.println("请输入你要购买的水果名称:");
			name = scanner.next();
			Buy.setName(name);
			if (fruit.get(name) == null) {
				System.out.println("输入错误,请重新选择输入!");
				break;
			}
			System.out.println(fruit.get(name));
			int f1 = 0;
			Set ss1 = fruit3.entrySet();
			Iterator it = ss1.iterator();
			int t = 0;
			int n = 0;
			while (it.hasNext()) {
				Object obj = it.next();
				Map.Entry entry = (Map.Entry) obj;

				if (entry.getKey().equals(name)) {
					t = 1;
					break;
				}
				n++;
			}
			int m1;
			int m2;
			if (t == 1) {
				System.out.println("请输入购买的斤数:");
				m1 = scanner.nextInt();
				m2 = m1 + M.get(n);
				M.set(n, m2);
			} else {
				fruit3.put(name, fruit2.get(name));
				// System.out.println(fruit3.get(name));
				System.out.println("请输入购买的斤数:");
				m = scanner.nextInt();
				M.add(m);
			}
			Buy.setFruit3(fruit3);
			System.out.println("输入0继续,输入1结束");
			int f = scanner.nextInt();
			if (f == 1) {
				break;
			}
		}
		Buy.setM(M);
	}

	public static String getName() {
		return name;
	}

	public static void setName(String name) {
		Buy.name = name;
	}

	public static Map<String, Double> getFruit3() {
		return fruit3;
	}

	public static List<Integer> getM() {
		return M;
	}

	public static void setM(List<Integer> m) {
		M = m;
	}

	public static void setFruit3(Map<String, Double> fruit3) {
		Buy.fruit3 = fruit3;
	}

}

购物车

package com.vector.units;

import java.io.FileNotFoundException;
import java.util.List;
import java.util.Map;
import com.vector.units.Buy;
import com.vector.service.Mapp;

public class Shoppings {
	static double Total;

	public static void Shoppings() throws FileNotFoundException {
		Map<String, Double> fruit = Buy.getFruit3();

		double n = 0;
		List<Integer> M = Buy.getM();
		int m = 0;
		for (String key : fruit.keySet()) {
			System.out.println("水果名称: " + key + ",水果的价格:" + fruit.get(key) + "/斤" + "水果的数量" + M.get(m) + "斤");
			n += M.get(m) * fruit.get(key);
			m++;
		}
		Shoppings.setTotal(n);
	}

	public static double getTotal() {
		return Total;
	}

	public static void setTotal(double total) {
		Total = total;
	}

}

结账

package com.vector.units;

public class Pay {

	public static void Pay() {
		double inTotal = Shoppings.getTotal();
		System.out.println("请付钱"+inTotal+"元");	
	}
}

下面的类都是一些用于实现功能的其他类
水果信息

package com.vector.dao;

import java.io.Serializable;

public class Fruit implements Serializable {
	String name;
	double price;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public double getPrice() {
		return price;
	}

	public void setPrice(double price) {
		this.price = price;
	}

	public Fruit(String name, double price) {
		super();
		this.name = name;
		this.price = price;
	}

	@Override
	public String toString() {
		return "水果名称:" + name + ",价格" + price + "/斤";
	}
}

写出文件


public class FileOutput {
	public static FileOutputStream FileOutput() throws FileNotFoundException {
		
		File file =new File ("D:\\eclip\\Fruit\\list1.txt");
		FileOutputStream fileOut = new FileOutputStream(file);
		try {
			ObjectOutputStream objectOut =new ObjectOutputStream(fileOut);
			objectOut.writeObject(Kind.getList());
			objectOut.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return fileOut;
	}
}

读入

package com.vector.service;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;

public class FileInput {
	public ObjectInputStream FileInput() throws FileNotFoundException, IOException {
	ObjectInputStream in=new ObjectInputStream(new FileInputStream(new File("D:\\eclip\\Fruit\\list1.txt")));
	return in;
}
}

Map工具类

package com.vector.service;

import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.vector.dao.Fruit;
import com.vector.units.Kind;
import com.vector.units.Stock;

public class Mapp {
	public static Map<String, Fruit> Mapp() throws FileNotFoundException {
		List<Fruit> list = Kind.getList();
		Map<String, Fruit> fruit = new HashMap<String, Fruit>();
		for (Fruit list1 : list) {
			fruit.put(list1.getName(), list1);
		}
		return fruit;
	}

	public static Map<String, Double> Mapp1() throws FileNotFoundException {
		List<Fruit> list = Kind.getList();
		Map<String, Double> fruit2 = new HashMap<String, Double>();
		for (Fruit list2 : list) {
			fruit2.put(list2.getName(), list2.getPrice());
		}
		return fruit2;
	}

	public static Map<String, Double> Mapp2() throws FileNotFoundException {
		Map<String, Double> fruit3 = new HashMap<String, Double>();
		return fruit3;
	}
}

总结

由于是用来练习的小项目,代码写的有些粗糙,还望大家见谅。
.
.
.
.

看都看完了,还不三连鼓励一下吗

.
.
.
.

在这里插入图片描述

别再死记硬背了!用‘水果摊’和‘回收站’的故事,5分钟搞懂Java泛型PECS 本文通过‘水果摊’和‘回收站’的生活故事,生动解释了Java泛型PECS原则(Producer Extends, Consumer Super)。文章详细展示了如何使用`<? extends T>`和`<? super T>`来确保类型安全,并提供了实际应用场景和常见陷阱的解决方案,帮助开发者轻松掌握这一复杂概念。 阅读详情

相关推荐

【华为OD机试真题 JS语言】383、水果摊小买卖 | 机试真题+思路参考+代码解析(未)

题目描述 >小王手里有点闲钱,想着做点卖水果的小买卖,给出两个数组m, n,用m[i]表示第1个水果的成本价, n啊表示第i个水果能卖出的价钱,假如现在有本钱k元,试问最后最多能赚多少钱?说明: >  1、每种水果只能买一次,只能卖一次 2、数组m、n大小不超过50 3、数组元素为正整数,不超过1000

KJ.JK 9764

水果摊小买卖

水果摊小买卖 **题目描述:**小王手里有点闲钱,想着做点卖水果的小买卖。给出两个数组 m、n,用 m[i]代表第 i 个水果的成本价,n[i]代表第 i 水果能卖出的价钱,假如现在有本钱 k,试问最后最多能赚多少钱? 说明: 1 每种水果只需买一次,只能卖一次 2 数组 m、n 大小不超过 50 3 数组元素为正整数,不超过 1000 输入描述: 1 数组 m、n 2 本钱 k 备注: 1 首行输入逗号分隔的数组 m 的元素值 2 第二行输入逗号分隔的数组 n 的元素值 3 第三行输入本钱 输出描述: 最

Mwwwwwwww的博客 1264

华为机试真题实战应用【赛题代码篇】-水果摊小买卖/购买水果最便宜的方案(附Java和C++代码实现)

小王手里有点闲钱,想着做点卖水果的小买卖,给出两个数组m、n,用m[i]表示第i个水果的成本价,n[i]表示第i个水果能卖出的价钱,假如现在有本钱k元,试问最后最多能赚多少钱?说明:1.每种水果只能买一次,只能卖一次;2.数组m,n大小不超过50;3.数组元素为正整数,不超过1000。

qq_36130719的博客 1063

牛客华为机试第8题python

题目描述 数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。 输入描述: 先输入键值对的个数 然后输入成对的index和value值,以空格隔开 输出描述: 输出合并后的键值对(多行) 示例1 输入 复制 4 0 1 0 2 1 2 3 4 输出 复制 0 3 1 2 3 4 在x_dict=dict() rows=0 while True: try: x=input() x=

东方佑 753

【华为OD机考真题】- 水果摊小买卖(B卷-100分)(Java)

🔔本文收录于「2025华为OD机试真题(Java版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!! 🚫提醒:拒绝一切代考/替考,违法必究!本人所写题库均搜集于互联网。    💗订阅福利:一次订阅,可永久免费阅读,提供在线答疑解惑,后续题库更新皆可阅读使用!

**My Coding Family** 1266

华为OD机试2025C卷 - 水果摊小买卖 (C++ & Python & JAVA & JS & GO)

华为OD机试2025C卷 水果摊小买卖,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 740

Java小项目另一个水果摊

文章目录前言一、包截图二、源代码1.JDBC连接Mysql数据管理员界面:增删查改用户界面 :查找水果建立断开连接2.GUI窗口界面开始选择界面用户购买水果界面管理员登录界面管理员界面3.水果属性4.main方法总结拒绝白嫖,给个三连鼓励一下吧! 前言 前一段时间利用Java基础知识集合和IO流做了个简单的小项目-水果摊,感觉不过瘾,最近又想着用GUI和Mysql数据库重做一下,名为另一个水果摊,下面就来分享一下代码吧 一、包截图 二、源代码 1.JDBC连接Mysql数据 管理员界面:增删.

Tom197的博客 3050

华为OD机试 - 水果摊小买卖(Java 2025 A卷 200分)

华为OD机试 2025A卷题库疯狂收录中,刷题。

学Java,找哪吒 1311

Java简单项目 水果摊

项目名 水果摊售货系统 项目描述 该系统类似于超市收银系统,由收银员操作,包括添加商品进购物车,结账及找零 控制台界面 具体功能 1. 查看是水果列表 2. 购买水果 ...

qq_63116880的博客 1874

华为2016java机试题+答案

华为2016java机试题+答案

JavaWeb水果商铺

JavaWeb水果商铺 实现了登录注册 添加购物车清除购物车 点击支付 文件整体编码格式Gbk 不排除个别文件utf-8 有数据库代码 用navicat先建一个fruit的utf-8数据库 然后运行该sql文件

【JAVA练习小项目】水果摊系统

项目描述:这个小项目类似于大一的语言大作业。一个简单的练习系统。 主要要求:使用集合知识,功能完善,具有异常处理功能。 主要功能:1.查看水果列表。 2.购买水果。 3.查看购物车。(输入水果名称或者水果编号) 4.结账。(清空购物车) 5.退出。 主要思路: 利用循环和switch打出框架。 利用集合进行水果列表和购物车的储存。

weixin_74032973的博客 454

java期末大作业,水果摊信息管理系统,mysql数据库,navicat实现数据可视化管理

java期末大作业,水果摊信息管理系统,使用了mysql数据库,和navicat实现数据可视化管理,211大学,本人的期末大作业,期末93分,排专业第二名。本资源压缩包里含:完整代码、SQL数据库文件、开发文档三个文件,完整nice!!!

大一水果摊项目

项目名 水果摊售货系统 项目描述 该系统类似于超市收银系统,由收银员操作,包括添加商品进购物车,结账以及找零 控制台界面 具体功能 查看水果列表 购买水果 可以是输入水果名,也可以是输入水果编号 查看购物车 结账 退出 要求 使用数组或集合完成数据存储 使用IO流实现数据的读入和写出 独立完成,不会可以请教一下其他人 父类:水果类 public class Fruit { private String name; private doub

qq_63273144的博客 858

Python编程练习:卖水果

题目描述 某水果店卖水果,老板想从一天的购买记录中知道有多少人买了苹果,请你帮他计算一下。 输入描述 第一行输入整数n.(1<=n<=10000)表示一天中有多少人来买水果 接下来的n行输入多个水果,表示每个人购买水果的种类 输出描述 输出有多少人买了苹果apple 示例 输入:4 apple orange grape apple blueberry 输出:2 num=input()#人数 count=0#计数买苹果的人数 num=int(num) for i in range(num): strfruit=input() if 'apple' in strfruit:

【Jlink & C#】通过C#实现Jlink RTT上位机的功能

某天看到安富莱家的自己开发的调试器可以实现输出中文调试信息到自己编写的Jlink RTT上位机上,觉得无比神奇,略好奇到底是如何做的,找了很久,发现其上位机的对应的实现好像也没有完全开源出来。后来经过很多搜索确认,知道了几个事实:那么有没有可能用C#来控制Jlink呢?答案是,有!!! 解决思路在于,C#调用JLinkARM.dll里面的函数 这里转载下我认为很有意义的发现结合以上的几个发现,加上我自己的测试,我把我对接JLinkARM.dll的C#接口分享出来,不保证都能用,我只是测试了几个常用的功能,R

一只爱做笔记的码农 9146

Java水果摊

Java初学者,利用简单集合知识写了一个小项目(当然四处借鉴了许多);非常基础,没有涉及io以及其他复杂知识 定义类不要钱,所以怼了一堆; 1.测试类;主要是主页面的循环 package shuiguotan; import java.util.Scanner; public class LastTest { public static void main(String[] args) { System.out.println("欢迎来到华强水果摊"); while(true) {

weixin_63298816的博客 912

Windows下Codex CLI binary报错排查与修复完整指南

在Windows开发环境中,命令行工具与图形界面应用的协同工作常常依赖于系统环境变量的正确配置。Codex CLI作为一款基于Node.js的智能编程命令行工具,其可执行文件(binary)的定位机制直接关系到桌面应用的正常启动。当用户执行npm更新或切换Node版本后,Codex CLI二进制文件路径可能发生漂移,从而触发“Unable to locate the Codex CLI binary”的报错。此类问题并非代码或账号异常,而是PATH路径、环境变量刷新及桌面应用缓存共同作用的结果。本文面向Wi

weixin_28718769的博客 305

华为OD机试真题——水果摊小买卖(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现

华为OD机试真题——水果摊小买卖(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现

专注分享技术、实用优质教程、资源 1051

西电2023秋季机器学习复习提纲

西电2023秋季机器学习复习提纲,希望对学弟学妹有帮助

weixin_62083045的博客 5646

STM32F103跑LVGL,用DMA加速刷屏,800*480大屏也能丝滑

本文详细介绍了如何在STM32F103芯片上通过DMA加速和内存优化,实现800*480大屏的LVGL流畅运行。通过FSMC+DMA硬件架构优化、双缓冲机制和LVGL参数调优,显著提升了界面刷新率和响应速度,适用于嵌入式GUI开发中的高性能需求场景。

weixin_30357231的博客 376
上一篇: 1497: 变态杀人狂
下一篇: 利用Python下载网页视频
汤米先生
博客等级 码龄6年 5345粉丝 283原创
评论 20
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汤米先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值