java實現(xiàn)簡單的小超市程序
更新時間:2021年02月23日 17:26:47 作者:力偉成
這篇文章主要為大家詳細介紹了java實現(xiàn)簡單的小超市程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了java實現(xiàn)小超市程序的具體代碼,供大家參考,具體內容如下
一.人物包
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) { //通過小超市類創(chuàng)建超市實體 LittleSuperMarket littleSuperMarket = new LittleSuperMarket(); //為超市屬性賦值 littleSuperMarket.address = "世紀大道999號"; littleSuperMarket.superMarketName = "我家超市"; littleSuperMarket.parkingCount = 200; //為超市商品屬性new一個大小為200的數組,類型為Merchandise littleSuperMarket.merchandises = new Merchandise[200]; //創(chuàng)造下標相同的數組記錄相同下標商品的賣出個數 littleSuperMarket.merchandisesold = new int[littleSuperMarket.merchandises.length]; //賦值 for (int i = 0; i < littleSuperMarket.merchandises.length; i++) { //創(chuàng)建類型為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("今天的營業(yè)額為:" + 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,車位減一,否則重新進入循環(huán)(車位小于零,顧客無法停車) 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); } //在購買流程外部創(chuàng)建變量統(tǒng)計總共花費和購買數量 double totalCast = 0; int numToBuy; //購買循環(huán) 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("不買看看也好,歡迎繼續(xù)選購"); continue; } if (numToBuy > littleSuperMarket.merchandises[InDex].count) { System.out.println("本店沒有那么多商品,歡迎繼續(xù)挑選"); continue; } /*其實這里的邏輯不太好,但是懶得改了,等再學習一段時間再好好完善這個小程序。這里把花費放在購買循環(huán)外面才是比較好的邏輯,然后在這里用if循環(huán)判斷購買的一系列合法性即可。 或者把售賣個數的屬性也在這里改變賦值會容易懂,我這里放到后面了,懶得改了。等下次優(yōu)化功能時再整體優(yōu)化邏輯 */ //輸入合法,求總共花費,并對商品庫存進行相應的扣除 totalCast += littleSuperMarket.merchandises[InDex].soldPrice * numToBuy; littleSuperMarket.merchandises[InDex].count -= numToBuy; //仍然屬于合法性檢測,檢測顧客的錢是否夠支付他所購買商品的總價 if (customer.money < totalCast) { System.out.println("對不起,您身上的錢不足以支付您的商品,歡迎下次選購"); //錢不足以支付,對應商品的數量再把剛才購買但未成功支付的商品數量歸還 //就像你在超市里買東西,放進購物車了,貨架上超市庫存少了,其他顧客拿不到了,等你支付時錢不夠,商品被放回,其他顧客可以拿到的數量增加,即商品庫存增加 littleSuperMarket.merchandises[InDex].count += numToBuy; //這一段當時寫的時候我也比較亂 //因為總價計算在外面了,此時總價已將超出了你的錢數循環(huán)從這里出去如果總價不置零,你的錢數一直小于總價,該顧客一直無法購買商品 totalCast = 0; } else { //正確購買,售出數量對應增加,顧客口袋里的錢對應減少 littleSuperMarket.merchandisesold[InDex] += numToBuy; customer.money -= totalCast; //開車來的話,顧客離開,車位釋放 if (customer.isDrivingCar) { littleSuperMarket.parkingCount++; } } } littleSuperMarket.incomingSum += totalCast; //每次循環(huán)結束,該人總錢數得出將該人的totalCast累加到littleSuperMarket.incomingSum中,得出總共收入 //littleSuperMarket.incomingSum和totalIncoming數值相等,基本為同一意思 //littleSuperMarket.incomingSum += totalCast; System.out.println("顧客" + customer.name + "號的顧客共消費" + totalCast + ",還剩余" + customer.money); System.out.println("今天還要繼續(xù)營業(yè)嗎?"); open = scanner.nextBoolean(); } System.out.println("超市關門了!"); System.out.println("今天總的營業(yè)額為" + littleSuperMarket.incomingSum + "營業(yè)情況如下:"); //定義總收入和總凈利潤 double totalNetIncoming = 0; double totalIncoming = 0; for (int i = 0; i < littleSuperMarket.merchandisesold.length; i++) { //只統(tǒng)計售出數量大于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); } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
SpringBoot自定義Redis實現(xiàn)緩存序列化詳解
Spring提供了一個RedisTemplate來進行對Redis的操作,但是RedisTemplate默認配置的是使用Java本機序列化。如果要對對象操作,就不是那么的方便。所以本文為大家介紹了另一種SpringBoot結合Redis實現(xiàn)序列化的方法,需要的可以參考一下2022-07-07ScheduledExecutorService任務定時代碼示例
這篇文章主要介紹了ScheduledExecutorService任務定時代碼示例,具有一定借鑒價值,需要的朋友可以參考下2018-01-01