项目名

水果摊售货系统

项目描述

该系统类似于超市收银系统,由收银员操作,包括添加商品进购物车,结账及找零

控制台界面

具体功能

1. 查看是水果列表

2. 购买水果(可以是输入水果名,也可以是输入水果编号)

3. 查看购物车

4. 结账

5. 退出

要求

使用数组或集合完成数据存储

使用IO流实现输入的读入和写出

主方法:

我用的是对象流读入和写出,先判断文件是否存在,文件如果存在则将文件的内容暂存到容器arrayList中,并打印文件内容。

如果文件不存在,则在FruitShop//src//Fruit.dat路径下创建一个文件,并把已经写好的对象写出到文件中。

sum用于记录购物车的总金额,BuyShopingList用于暂存购物车内容。

在while(true)循环中 先打印主菜单,接着接收键盘输入的下一行字符串,这里用字符而不是用int是为了防止抛InputMismatchException异常,当然try catch也可以达到同样的效果

接着switch接收f 实现其他的功能

public class Main {public static void main(String[] args) {File file = new File("FruitShop//src//Fruit.dat");//声明一个用于暂时存储水果列表的集合ArrayList<Fruit> arrayList;//用于记录购物车的总金额double sum = 0;if (file.exists()) {//文件存在则读取文件,将文件内的水果列表存储到集合中System.out.println("序号\t\t水果名称\t\t单价(元/斤)   \t \t数量(斤)");arrayList = Files.ListFileReader();} else {//文件不存在则创建文件,将文件初始化,并存储到arrayList中arrayList = TemporarilyCollection.FruitList();}//BuyShoppingList用于存储购物车ArrayList BuyShoppingList = new ArrayList();while (true) {//打印主菜单TemporarilyCollection.PriceList();Scanner scan = new Scanner(System.in);//用于接收用户输入的数字String f = scan.nextLine();switch (f) {case "1"://打印存储在文件中的水果列表TemporarilyCollection.List();break;case "2": {//购买水果,将购买的水果存入BuyShoppingList中sum = BuyFruit.BuyFruits(arrayList, BuyShoppingList, scan);
//                    BuyFruit.ShoppingCar(BuyShoppingList);break;}case "3": {//结账BuyFruit.Checkout(arrayList,BuyShoppingList,sum);System.out.println("结账成功");break;}case "4": {TemporarilyCollection.Exit();break;}default:System.out.println("请输入正确的序号");break;}}}
}
package Java;import java.util.*;/*** @author 小绿龙* @date 2022/3/25 10:25*/
public class BuyFruit {public static double ShoppingCar(ArrayList BuyShoppingSet) {//打印购物车Iterator<Fruit> iterator = BuyShoppingSet.iterator();double sum = 0;System.out.println("序号\t\t水果名称\t\t单价(元/斤)   \t \t数量(斤)   \t \t价格");while (iterator.hasNext()) {Fruit fruit = iterator.next();System.out.printf("%s  \t \t\t%.1f\n",fruit.toString(),(fruit.getFruitNumber() * fruit.getPrice()));sum += fruit.getFruitNumber() * fruit.getPrice();}System.out.printf("\t\t\t\t\t\t\t\t\t\t\t\t\t总计:%.1f\n", sum);return sum;}public static double BuyFruits(ArrayList arrayList, ArrayList BuyShoppingList, Scanner scan) {//买水果double sum = 0;while (true) {System.out.println("请输入购买的水果序号或者名称:");String str = scan.next();Iterator<Fruit> iterator = arrayList.iterator();//用于判断用户输入的str是否为集合中的序号或者名称boolean b = true;//boolean b1 = false;while (iterator.hasNext()) {int i = 0;Fruit fruit = iterator.next();if (str.equals(fruit.getId()) || str.equals(fruit.getName())) {b = false;b1 = true;double num = 0;while (true) {System.out.println("请输入购买的斤数:");scan = new Scanner(System.in);try {num = scan.nextDouble();if (num < fruit.getFruitNumber() && num > 0){break;}else {System.out.println("超出库存范围");}} catch (InputMismatchException ime) {System.out.println("请输入正确的数字");}}TemporarilyCollection.BuyList(BuyShoppingList, fruit, num);BuyShoppingList.sort(Comparator.naturalOrder());sum = BuyFruit.ShoppingCar(BuyShoppingList);break;}}while (b1) {if (b) {System.out.println("请输入正确的序号或者名称!");break;} else {System.out.println("是否继续购买?(Y / N)");String s = scan.next();//输入Yif (s.toUpperCase().equals("Y")) {b1 = false;} else if (s.toUpperCase().equals("N")) {b = true;} else {System.out.println("请输入(Y / N)!");}}if (b) {break;}}if (b) {break;}}return sum;}public static void Checkout(ArrayList<Fruit> arrayList,ArrayList<Fruit> BuyShoppingList,double sum){int i = 0;double buyNum = 0;while(true){BuyFruit.ShoppingCar(BuyShoppingList);System.out.println("本次消费" + sum + "元人民币,请输入结账的金额");while (true){Scanner scanner = new Scanner(System.in);try {buyNum = scanner.nextDouble();break;} catch (Exception e) {System.out.println("请输入正确的数字");}}if (buyNum >= sum){System.out.println("应找零:" + (buyNum - sum));break;}else {System.out.println("输入的金额不足以结账,请重新输入");}}Iterator<Fruit> iterator = arrayList.iterator();while (iterator.hasNext()) {Fruit fruit =  iterator.next();if(i < BuyShoppingList.size()){if (fruit.getId().equals(BuyShoppingList.get(i).getId()) && fruit != null){fruit.setFruitNumber(fruit.getFruitNumber() - BuyShoppingList.get(i++).getFruitNumber());}}}Files.ListFileWriter(arrayList);Iterator<Fruit> iterator1 = BuyShoppingList.iterator();while (iterator1.hasNext()) {BuyShoppingList.remove(0);}}
}
package Java;import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;/*** @author 小绿龙* @date 2022/3/22 15:59*/
public class Files {public static void ListFileWriter(ArrayList arrayList) {ObjectOutputStream oos = null;try {oos = new ObjectOutputStream(new FileOutputStream("Fruit.dat"));Iterator<Fruit> iterator = arrayList.iterator();while (iterator.hasNext()) {Fruit fruit = iterator.next();oos.writeObject(fruit);}//迭代器写出Fruit.dat文件内容} catch (IOException e) {e.printStackTrace();} finally {if (oos != null) {try {oos.close();} catch (IOException e) {e.printStackTrace();}}}}public static ArrayList<Fruit> ListFileReader(){//读入文件ObjectInputStream ois = null;ArrayList<Fruit> arrayList = new ArrayList();try {ois = new ObjectInputStream(new FileInputStream("Fruit.dat"));while (true){Fruit fruit = null;try {fruit = (Fruit) ois.readObject();} catch (EOFException e) {} catch (ClassNotFoundException e) {e.printStackTrace();}if(fruit != null){arrayList.add(fruit);//用于暂时存储文件中的内容System.out.println(fruit);}else{break;}}} catch (IOException e) {e.printStackTrace();} finally {if (ois != null) {try {ois.close();} catch (IOException e) {e.printStackTrace();}}}return arrayList;}
}
package Java;import java.io.Serializable;/*** @author 小绿龙* @date 2022/3/21 19:13*/
public class Fruit implements Comparable, Serializable,Cloneable{private String id;private String name;private double price;private double fruitNumber;static final long serialVersionUID = 43541564153L;public Fruit(String id, String name, double price,double fruitNumber) {this.id = id;this.name = name;this.price = price;this.fruitNumber = fruitNumber;}public String getId() {return id;}public void setId(String id) {this.id = id;}public void setFruitNumber(double fruitNumber) {this.fruitNumber = fruitNumber;}public double getPrice() {return price;}public double getFruitNumber() {return fruitNumber;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String toString() {return id +"\t\t" + name + "  \t    " + price + "\t\t     \t" + fruitNumber;}@Overridepublic int compareTo(Object o) {if (o instanceof Fruit){Fruit fruit = (Fruit) o;return this.id.compareTo(fruit.id);}else {throw new RuntimeException("输入类型不匹配");}}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Fruit fruit1 = (Fruit) o;if (Double.compare(fruit1.price, price) != 0) return false;if (Double.compare(fruit1.fruitNumber, fruitNumber) != 0) return false;if (id != null ? !id.equals(fruit1.id) : fruit1.id != null) return false;return name != null ? name.equals(fruit1.name) : fruit1.name == null;}@Overridepublic int hashCode() {int result;long temp;result = id != null ? id.hashCode() : 0;result = 31 * result + (name != null ? name.hashCode() : 0);temp = Double.doubleToLongBits(price);result = 31 * result + (int) (temp ^ (temp >>> 32));temp = Double.doubleToLongBits(fruitNumber);result = 31 * result + (int) (temp ^ (temp >>> 32));return result;}public Fruit() {}
}
package Java;import java.util.*;/*** @author 小绿龙* @date 2022/3/22 19:13*/
public class TemporarilyCollection {public static void Fruitadd(ArrayList arrayList){//水果列表赋值arrayList.add(new Fruit("1","苹果",12.5,1235.3));arrayList.add(new Fruit("2","梨",10.8,1324.6));arrayList.add(new Fruit("3","水蜜桃",22.8,1465.1));arrayList.add(new Fruit("4","车厘子",39.9,4563.1));arrayList.add(new Fruit("5","香蕉",18.8,5451.4));arrayList.add(new Fruit("6","猕猴桃",38.8,45343.1));arrayList.add(new Fruit("7","火龙果",13.3,8345.5));arrayList.add(new Fruit("8","红心柚",16.8,458.2));arrayList.add(new Fruit("9","葡萄",35.99,6145.5));arrayList.add(new Fruit("10","百香果",14.9,4345.2));arrayList.add(new Fruit("11","榴莲",89.9,1352.3));arrayList.add(new Fruit("12","人参果",9999.0,9999.9));arrayList.add(null);}public static void BuyList(ArrayList<Fruit> BuyShoppingList,Fruit fruit,double num){//传入一个集合 给集合中添加水果与水果的斤数 最后将集合返回boolean b = true;int i = 0;Iterator iterator = BuyShoppingList.iterator();//迭代购物车while (iterator.hasNext()) {Fruit f = (Fruit) iterator.next();//寻找购物车中是否有和当前购买的水果相同序号的水果if(f.getId().equals(fruit.getId())){//如果购物车中有相同的水果的话num += BuyShoppingList.get(i).getFruitNumber();//修改购物车中水果的斤数BuyShoppingList.get(i).setFruitNumber(num);b = false;break;}i++;}if(b){BuyShoppingList.add(new Fruit(fruit.getId(),fruit.getName(),fruit.getPrice(),num));}}public static ArrayList FruitList(){//打印水果列表//给集合赋初值 并返回这个集合ArrayList arrayList = new ArrayList();TemporarilyCollection.Fruitadd(arrayList);Files.ListFileWriter(arrayList);return arrayList;}public static void PriceList(){//主菜单System.out.println("**********精 品 水 果************");System.out.println("1.查看水果列表");System.out.println("2.购买水果(输入序号或者水果名称)");System.out.println("3.查看购物车");System.out.println("4.结账");System.out.println("5.退出");System.out.println("请输入序号:");}public static void List(){//查看水果列表System.out.println("序号\t\t水果名称\t\t单价(元/斤)   \t \t数量(斤)");Files.ListFileReader();}public static void Exit(){System.exit(0);}//退出
}

Continue.......

Java简单项目 水果摊相关推荐

  1. java小项目水果摊

    介绍 刚学完java 集合和IO流,想做了一个简单的小项目来练手,于是我就运用一些基础知识做了这个水果摊.水果摊的主要功能有: 进货 查看水果列表 购买水果 查看购物车 结账 退出 都是一些简单的功能 ...

  2. Java简单项目:公司人员管理系统

    简单开个坑 初步完成Model设计和部分Controller设计,手有点冷,脑子有点蒙,明天再补剩下的 1.1.父类Employee package project3.domain;public cl ...

  3. Java小项目另一个水果摊

    文章目录 前言 一.包和表截图 二.源代码 1.JDBC连接Mysql数据 管理员界面:增删查改 用户界面 :查找水果 建立断开连接 2.GUI窗口界面 开始选择界面 用户购买水果界面 管理员登录界面 ...

  4. 一个简单的Java计时器项目,附源码

    学Java开发的小伙伴都会想着做一些项目来检验自己的学习成果,今天小千就来分享一个简单的Java计时器项目,源码也放在文中,大家可以参考一下. Java计时器项目 开发环境:win8+eclipse+ ...

  5. Java简单的记账本项目

    Java简单的 记账本:超级简单的新手入门项目 源码: public class test项目一 { public static void main(String[] args) { // TODO ...

  6. java简单的增删改查项目 ATM机

    java简单的增删改查项目 login: package atm;import java.util.ArrayList; import java.util.List; import java.util ...

  7. Java面向对象之简单项目制作(DVD管理系统)

    Java面向对象之简单项目制作(DVD管理系统) 任务:完成DVD的管理 主要功能: 1.新增DVD 2.查看DVD 3.删除DVD 4.借出DVD 5.归还DVD DVD类 String name; ...

  8. 1)Java web项目配置(最简单的javaweb项目)

    Java web示例一 1.创建一个简单的Maven 项目 2.在webapp/WEB-INF下创建两个文件夹classes和lib,classes用来存放编译后输出的classes文件,lib用于存 ...

  9. Idea创建简单Java Web项目并部署Servlet

    1.打开Idea,创建JAVA Web项目 在WEB-INF目录下创建classes和lib文件夹 配置编译输出路径为刚才新建的classes文件夹 配置依赖jar包加载路径 添加tomcat ser ...

最新文章

  1. [Nancy On .Net Core Docker] 轻量级的web框架
  2. 机器学习基石(6)--Theory of Generalization
  3. 【Java集合系列四】HashSet和LinkedHashSet解析
  4. 命令行下django-admin.py参数不起作用的问题解决
  5. poi向word插入图片_如何使用word裁剪图片图形?如何使用word修整图片?
  6. [µC/GUI 学习]µC/GUI移植
  7. WINCE的BIB文件解析
  8. Multi Task Learning在工业界如何更胜一筹
  9. 查看ftp创建的用户
  10. java基础---对象锁和类锁的区别
  11. java字符串处理截取和替换字符
  12. freemarker空格问题
  13. LabVIEW强制重新安装无法运行或损坏的NI软件
  14. linux 端口关闭防火墙设置,LINUX关闭防火墙、开放特定端口等常用操作
  15. 快递扫码入库PC系统
  16. Android笔记:多开/分身检测
  17. Python 输入一个整数,将他转换为数字金字塔和 * 金字塔
  18. 曾国藩:利可共而不可独,谋可寡而不可众
  19. 晨之替——谷川 俊太郎
  20. 【密码学篇】商用密码产品的密钥体系结构小结

热门文章

  1. 4G/5G聚合路由器是什么意思?
  2. SQL中的聚合函数介绍
  3. “电脑下乡”必须坚持创新之路
  4. 淘宝/天猫API:seller_info-获得淘宝店铺详情
  5. 用pygame实现一个简单的垃圾分类小游戏(已获校级二等奖)
  6. 设计一个类代表二维空间的一个圆。_绝了!这是什么神仙花园设计! | 2020世界花园大会...
  7. 【原创】Jlink在ADS下的配置说明及常见问题解决办法
  8. Linux系统性能监测工具——CPU
  9. 小米红米1S 电信/联通版 专用TWRP2.8.1.1中文版 (全屏触摸/支持MTP挂载内外置存储)...
  10. 仿【得物】微信小程序实战全教程