热门标签 | HotTags
当前位置:  开发笔记 > 小程序 > 正文

java实现简单的小超市程序

这篇文章主要为大家详细介绍了java实现简单的小超市程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java实现小超市程序的具体代码,供大家参考,具体内容如下

一.人物包

1.顾客类

package person;

public class Customer {
 public String name;
 public double money;
 public boolean isDrivingCar;
}

二.超市包

1.小超市类

package supermarket;

public class LittleSuperMarket {
 public String superMarketName;
 public String address;
 public int parkingCount;
 public double incomingSum;
 public Merchandise[] merchandises;
 public int[] merchandisesold;
}

2.商品类

package supermarket;

public class Merchandise {
 public String name;
 public String id;
 public int count;
 public double soldPrice;
 public double purchasePrice;
}

三.主程序

import person.Customer;
import supermarket.LittleSuperMarket;
import supermarket.Merchandise;

import java.util.Scanner;

public class Run {
 public static void main(String[] args) {

  //通过小超市类创建超市实体
  LittleSuperMarket littleSuperMarket = new LittleSuperMarket();

  //为超市属性赋值
  littleSuperMarket.address = "世纪大道999号";
  littleSuperMarket.superMarketName = "我家超市";
  littleSuperMarket.parkingCount = 200;

  //为超市商品属性new一个大小为200的数组,类型为Merchandise
  littleSuperMarket.merchandises = new Merchandise[200];
  //创造下标相同的数组记录相同下标商品的卖出个数
  littleSuperMarket.merchandisesold = new int[littleSuperMarket.merchandises.length];


  //赋值
  for (int i = 0; i  0.4;
   customer.mOney= (1 + Math.random()) * 10000;


   //先判断顾客是否开车
   if (customer.isDrivingCar) {
    System.out.println("欢迎顾客" + customer.name + "号的顾客驾车而来!");
    //顾客开车的条件下车位数>0,车位减一,否则重新进入循环(车位小于零,顾客无法停车)
    if (littleSuperMarket.parkingCount > 0) {
     littleSuperMarket.parkingCount--;
     System.out.println("欢迎顾客" + customer.name + "号的顾客光临" + littleSuperMarket.superMarketName + ",车位剩余" + littleSuperMarket.parkingCount + ",钱包剩余" + customer.money);
    } else {
     System.out.println("对不起,停车位已满,欢迎下次光临");
     continue;
    }
    //没开车,直接进入
   } else {
    System.out.println("欢迎顾客" + customer.name + "号的顾客光临" + littleSuperMarket.superMarketName + "钱包剩余" + customer.money);
   }


   //在购买流程外部创建变量统计总共花费和购买数量
   double totalCast = 0;
   int numToBuy;


   //购买循环
   while (true) {


    System.out.println("本店提供" + littleSuperMarket.merchandises.length + "种商品,欢迎选购。请输入商品编号:");


    int InDex = scanner.nextInt();
    //对商品索引的合法性进行检测
    if (InDex <= 0) {
     break;
    }
    if (InDex > littleSuperMarket.merchandises.length - 1) {
     System.out.println("对不起,本店没有那么多商品。请输入0到" + (littleSuperMarket.merchandises.length - 1) + "之间的数字");
     continue;
    }


    System.out.println("您选购的商品的名字是:" + littleSuperMarket.merchandises[InDex].name + "\t售价为:" + littleSuperMarket.merchandises[InDex].soldPrice);
    System.out.println("请问你要买几个?");

    numToBuy = scanner.nextInt();
    //对购买数量的合法性进行检测
    if (numToBuy <= 0) {
     System.out.println("不买看看也好,欢迎继续选购");
     continue;
    }
    if (numToBuy > littleSuperMarket.merchandises[InDex].count) {
     System.out.println("本店没有那么多商品,欢迎继续挑选");
     continue;
    }
    /*其实这里的逻辑不太好,但是懒得改了,等再学习一段时间再好好完善这个小程序。这里把花费放在购买循环外面才是比较好的逻辑,然后在这里用if循环判断购买的一系列合法性即可。
     或者把售卖个数的属性也在这里改变赋值会容易懂,我这里放到后面了,懒得改了。等下次优化功能时再整体优化逻辑
     */

    //输入合法,求总共花费,并对商品库存进行相应的扣除
    totalCast += littleSuperMarket.merchandises[InDex].soldPrice * numToBuy;
    littleSuperMarket.merchandises[InDex].count -= numToBuy;


    //仍然属于合法性检测,检测顾客的钱是否够支付他所购买商品的总价
    if (customer.money  0) {
    //计算总利润和总净利润,通过累加求得
    double incoming = littleSuperMarket.merchandises[i].soldPrice * littleSuperMarket.merchandisesold[i];
    double netIncoming = (littleSuperMarket.merchandises[i].soldPrice - littleSuperMarket.merchandises[i].purchasePrice) * littleSuperMarket.merchandisesold[i];
    totalIncoming += incoming;
    totalNetIncoming += netIncoming;
    System.out.println(littleSuperMarket.merchandises[i].name + "售出了" + littleSuperMarket.merchandisesold[i] + "个。销售额为" + incoming + ",净利润为" + netIncoming);

   }
  }
  System.out.println("今日总销售额为:" + totalIncoming + ";今日总净利润为:" + totalNetIncoming);
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 本文探讨了在开发测绘小程序时,如何利用面向对象编程思想实现附合水准路线平差。该方法通过测站和实测高差数据,计算高差改正数及未知点高程。文中介绍了点类和线类的设计,并详细描述了具体的计算步骤与逻辑。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • 微信小程序:授权登录与手机号绑定
    本文详细介绍了微信小程序中用户授权登录及绑定手机号的流程,结合官方指引和实际开发经验,提供了一套完整的实现方案,帮助开发者更好地理解和应用。 ... [详细]
  • 在使用Netty 4.1.48版本运行自带的HTTP服务器示例时,观察到大量本地IP环回连接。本文将探讨这些环回连接的原因,并解释其与TCP连接的关系。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • 程序员如何优雅应对35岁职业转型?这里有深度解析
    本文探讨了程序员在职业生涯中如何通过不断学习和技能提升,优雅地应对35岁左右的职业转型挑战。我们将深入分析当前热门技术趋势,并提供实用的学习路径。 ... [详细]
  • 在项目中使用 Redis 时,了解其不同架构模式(如单节点、主从复制、哨兵模式和集群)对于确保系统的高可用性和扩展性至关重要。本文将详细探讨这些模式的特点和应用场景。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 本文深入探讨了小程序中父组件与子组件之间的数据传递方式,特别是通过事件触发和属性绑定实现的值传递机制。文中详细介绍了如何从子组件向父组件传递数据,并进一步由父组件传递给其他子组件。 ... [详细]
  • 本文详细介绍了Java的安装、配置、运行流程以及有效的学习方法,旨在帮助初学者快速上手Java编程。 ... [详细]
  • 深入理解小程序中的Picker组件
    Picker组件是一种从屏幕底部弹出的滚动选择器,支持多种选择模式,包括普通选择器、多列选择器、时间选择器、日期选择器和省市区选择器。本文将详细介绍Picker的各种属性及其应用场景。 ... [详细]
  • 微信小程序中实现位置获取的全面指南
    本文详细介绍了如何在微信小程序中实现地理位置的获取,包括通过微信官方API和腾讯地图API两种方式。文中不仅涵盖了必要的准备工作,如申请开发者密钥、下载并配置SDK等,还提供了处理用户授权及位置信息获取的具体代码示例。 ... [详细]
  • 本文介绍了如何利用Python编程语言从指定目录中提取文件名,并根据文件扩展名进行筛选,将符合条件的文件名保存至文本文件中。文章适合Python初学者,旨在通过实际案例加深对文件操作和字符串处理的理解。 ... [详细]
  • 本文探讨了在C语言编程中,如何有效避免多文件项目中的重定义问题,通过合理使用预处理器指令和extern关键字,确保代码的健壮性和可维护性。 ... [详细]
  • 区块链的兴起:恰逢其时,犹如1996年的互联网
    本文探讨了区块链技术的发展阶段,将其与1996年互联网的兴起进行对比,分析了当前区块链技术的现状及其未来潜力。 ... [详细]
author-avatar
手机用户2502856237
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有