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 < littleSuperMarket.merchandises.length; i++) {
   //创建类型为merchandise的局部变量m,并为其赋值
   Merchandise m = new Merchandise();
   m.count = 200;
   m.id = "ID" + i;
   m.name = "商品" + i;
   m.purchasePrice = 200 * Math.random();
   m.soldPrice = (1 + Math.random()) * m.purchasePrice;

   //将每次局部变量的值赋给对应下标的merchandise实体,此时实体merchandise有了值
   littleSuperMarket.merchandises[i] = m;

  }
  System.out.println("超市开张了!! !");

  boolean open = true;
  Scanner scanner = new Scanner(System.in);

  while (open) {
   System.out.println("本店叫做:" + littleSuperMarket.superMarketName);
   System.out.println("本店地址:" + littleSuperMarket.address);
   System.out.println("共拥有停车位:" + littleSuperMarket.parkingCount);
   System.out.println("今天的营业额为:" + littleSuperMarket.incomingSum);
   System.out.println("共有商品:" + littleSuperMarket.merchandises.length + "种");

   //为顾客的属性赋值
   Customer customer = new Customer();
   customer.name = "编号:" + ((int) (Math.random() * 500));
   customer.isDrivingCar = Math.random() > 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 < totalCast) {

     System.out.println("对不起,您身上的钱不足以支付您的商品,欢迎下次选购");
     //钱不足以支付,对应商品的数量再把刚才购买但未成功支付的商品数量归还
     //就像你在超市里买东西,放进购物车了,货架上超市库存少了,其他顾客拿不到了,等你支付时钱不够,商品被放回,其他顾客可以拿到的数量增加,即商品库存增加
     littleSuperMarket.merchandises[InDex].count += numToBuy;
     //这一段当时写的时候我也比较乱
     //因为总价计算在外面了,此时总价已将超出了你的钱数循环从这里出去如果总价不置零,你的钱数一直小于总价,该顾客一直无法购买商品
     totalCast = 0;

    } else {
     //正确购买,售出数量对应增加,顾客口袋里的钱对应减少
     littleSuperMarket.merchandisesold[InDex] += numToBuy;
     customer.money -= totalCast;

     //开车来的话,顾客离开,车位释放
     if (customer.isDrivingCar) {
      littleSuperMarket.parkingCount++;
     }
    }
   }

   littleSuperMarket.incomingSum += totalCast;
   //每次循环结束,该人总钱数得出将该人的totalCast累加到littleSuperMarket.incomingSum中,得出总共收入
   //littleSuperMarket.incomingSum和totalIncoming数值相等,基本为同一意思
   //littleSuperMarket.incomingSum += totalCast;

   System.out.println("顾客" + customer.name + "号的顾客共消费" + totalCast + ",还剩余" + customer.money);
   System.out.println("今天还要继续营业吗?");
   open = scanner.nextBoolean();
  }

  System.out.println("超市关门了!");
  System.out.println("今天总的营业额为" + littleSuperMarket.incomingSum + "营业情况如下:");

  //定义总收入和总净利润
  double totalNetIncoming = 0;
  double totalIncoming = 0;

  for (int i = 0; i < littleSuperMarket.merchandisesold.length; i++) {
   //只统计售出数量大于0的商品
   if (littleSuperMarket.merchandisesold[i] > 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);
 }
}

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

(0)

相关推荐

  • java实现水果超市管理系统

    本文为大家分享了java实现水果超市管理系统的具体代码,供大家参考,具体内容如下 首先建立水果类的界面 public class Fruit { //定义ID private String id; //定义名称 private String name; //定义价格 private int price; //定义单位 private String unit; //定义数量 private int number; public Fruit(String id, String name, int p

  • java实现简单超市管理系统

    本文实例为大家分享了java实现超市管理系统的具体代码,供大家参考,具体内容如下 一.使用技术 javaSE 二.实现功能 超市管理系统 具体要求如下: 使用选择结构,循环结构,数组的知识实现一个超市管理系统 三.运行效果图 1.货物清单 2.增加货物 3.删除货物 4.修改货物 5.退出 首先我们分析图片里的内容,需要创建一个货物类. public class Goods { private String number; private double price; private String

  • Java编写网上超市购物结算功能程序

    使用Java语言编写一个模拟网上超市购物结算功能的程序,要求程序运行后有一个图形用户界面,可供用户输入购买的各种商品相关信息,最后给出用户的购物清单及总价格. 需求分析: 1.管理员添加商品以及其价格 2.用户购买商品打印订单信息以及结算订单 代码: /* * 创建者:张俊强 * 时间:2016/5/15 * */ package SaleSys; import java.awt.*; import java.awt.event.*; import java.util.Vector; impor

  • java实现超市商品库存管理平台

    本文实例为大家分享了java商品库存管理平台的具体代码,供大家参考,具体内容如下 1.完成超市商品初始化.创建商品,将商品添加到集合 2.显示来到超市能做的操作,也就是显示主菜单 3.根据接收到的功能选项,执行对应的功能 3.1.库存商品查询 3.2.添加新商品     3.3.删除商品 3.4.修改商品 3.5.退出系统,结束main方法的运行 4.循环,回到  2. 显示主菜单 以添加水果为例:对商品信息进行封装,编写FruitItem.java文件 public class FruitIt

  • java实现超市管理系统

    本文实例为大家分享了java实现超市管理系统的具体代码,供大家参考,具体内容如下 实现功能 使用选择结构,循环结构,数组的知识实现一个超市管理系统 运行结果:货物清单: 添加商品功能: 删除商品功能: 修改商品: 商品货物实体类 import java.util.Arrays; public class Goods { private int id; private double price; private String name; public Goods(int id, double pr

  • java实现超市库存管理系统

    本文实例为大家分享了java库存管理系统的具体代码,供大家参考,具体内容如下 模拟真实的库存管理逻辑,完成超市管理系统的日常功能实现. 经过分析,首先需要一个功能菜单,然后输入所选的功能后,调用序号对应的功能方法,实现想要的操作. 具体的步骤如下: 1.完成超市商品初始化.创建商品,将商品添加到集合 2.显示来到超市能做的操作,也就是显示主菜单 3.根据接收到的功能选项,执行对应的功能 3.1.库存货物查询 3.2.添加新货物 3.3.删除货物 3.4.修改货物 3.5.退出系统,结束main方

  • 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 super

  • Java实现简单计算器小程序

    本文实例为大家分享了Java实现简单计算器小程序的具体代码,供大家参考,具体内容如下 这学期没事学了一点点Java,想写个程序练手,因为只学了一点点,所以暂时只能先写个实现简单功能的计算器练练. 由于期末来了,没太多时间,所以暂时就实现最简单的功能. 个人不喜欢用大量文字记叙程序,而且该程序也相对简单,所以直接画了张程序框架图,再配合代码的注释,就明白程序的原理了. 图 计算器程序框架 代码如下: package tst.jframe; import java.awt.EventQueue; i

  • 使用Java实现简单的区块链程序的方法

    在本文中,我们将学习区块链技术的基本概念.我们还将用Java实现一个基本的应用程序,重点介绍这些概念. 此外,我们还将讨论该技术的一些先进概念和实际应用. 什么是区块链? 那么,让我们先来了解一下区块链到底是什么- 好吧,它的起源可以追溯到Satoshi Nakamoto在2008年发表的关于比特币的白皮书. 区块链是一个分散的信息分类帐.它由通过使用密码学连接的数据块组成.它属于通过公共网络连接的节点网络.当我们稍后尝试构建一个基本教程时,我们将更好地理解这一点. 我们必须了解一些重要的属性,

  • java实现简单五子棋小游戏(2)

    本文实例为大家分享了java实现简单五子棋小游戏游戏的具体代码,供大家参考,具体内容如下 讲解 在第一步实现的基础上,添加游戏结束条件.五子棋游戏中的相同棋子如果同时有五个连接成一条线就说明游戏结束. 代码实现如下: if(count!=0){                 //判断每一行                 for(int j=0;j<11;j++){                     for(int i=0;i<7;i++){                      

  • java实现简单五子棋小游戏(1)

    本文实例为大家分享了java实现简单五子棋小游戏的具体代码,供大家参考,具体内容如下 讲解 五子棋,实际上就是用一个数组来实现的.没有其他很复杂的结构.首先我们制作五子棋,先要有一个棋盘. public void setGraphics(Graphics g){         this.g=g;         for(int i=0;i<11;i++){             g.drawLine(100+Size*i, 100, 100+Size*i, 500);           

  • Java实现简单日历小程序 Java图形界面小日历开发

    今天给大家介绍一下如何用Java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个CalendarBean类,用于基本的日期计算: package other1; import java.util.Calendar; public class CalendarBean { String day[]; int year=2005,month=0; public void setYear(int year) { this.year=year; } public int getYear

  • java实现简单扫雷小游戏

    本文实例为大家分享了java实现扫雷游戏的具体代码,供大家参考,具体内容如下 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.GridLayout; import java.awt.Insets; import java.awt.Label; import java.awt.event.ActionEvent; import java.awt.event

  • java实现简单猜拳小游戏

    本文实例为大家分享了java实现猜拳小游戏的具体代码,供大家参考,具体内容如下 User.java import java.util.Scanner; public class User { String name; int score; public int showFist(){ System.out.println ("请出拳:1.剪刀\t2.石头\t3.布"); Scanner input=new Scanner ( System.in ); int choice=input.

  • java实现简单石头剪刀布小游戏

    简介 石头剪刀布游戏,进入游戏后,玩家需要输入玩家姓名.系统界面之后弹出欢迎界面,玩家可以选择出拳或者退出游戏.玩家选择出拳后同电脑出拳比较,输出猜拳结果.最后退出游戏后显示排行榜,输出总局数,胜率. 分析 通过while循环死循环模拟不断进行游戏,当用户输入0时break跳出while循环. 通过Random产生随机数模拟AI出拳 定义了一个choose方法,将用户输入和AI随机生成的数,转换成剪刀.石头和布. 判断输赢逻辑: 1:石头 2:剪刀 3:布 变量userChoose中存储的是用户

  • java网络通信技术之简单聊天小程序

    本文实例为大家分享了java实现简单聊天小程序的具体代码,供大家参考,具体内容如下 再学习完java的通信技术后,做了一个简单的窗体聊天程序.程序非常简单,主要目的是当练习巩固自己所学的东西,在这里写出来记录以下.下面直接上代码. 首先是服务端代码: package ChatTwoPackage; import java.io.*; import java.net.*; public class ChatTwoServer { public ChatTwoServer(int port,Stri

随机推荐