java實(shí)現(xiàn)簡(jiǎn)單的小超市程序
本文實(shí)例為大家分享了java實(shí)現(xiàn)小超市程序的具體代碼,供大家參考,具體內(nèi)容如下
一.人物包1.顧客類(lèi)
package person;public class Customer { public String name; public double money; public boolean isDrivingCar;}二.超市包
1.小超市類(lèi)
package supermarket;public class LittleSuperMarket { public String superMarketName; public String address; public int parkingCount; public double incomingSum; public Merchandise[] merchandises; public int[] merchandisesold;}
2.商品類(lèi)
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) { //通過(guò)小超市類(lèi)創(chuàng)建超市實(shí)體 LittleSuperMarket littleSuperMarket = new LittleSuperMarket(); //為超市屬性賦值 littleSuperMarket.address = '世紀(jì)大道999號(hào)'; littleSuperMarket.superMarketName = '我家超市'; littleSuperMarket.parkingCount = 200; //為超市商品屬性new一個(gè)大小為200的數(shù)組,類(lèi)型為Merchandise littleSuperMarket.merchandises = new Merchandise[200]; //創(chuàng)造下標(biāo)相同的數(shù)組記錄相同下標(biāo)商品的賣(mài)出個(gè)數(shù) littleSuperMarket.merchandisesold = new int[littleSuperMarket.merchandises.length]; //賦值 for (int i = 0; i < littleSuperMarket.merchandises.length; i++) { //創(chuàng)建類(lèi)型為merchandise的局部變量m,并為其賦值 Merchandise m = new Merchandise(); m.count = 200; m. + i; m.name = '商品' + i; m.purchasePrice = 200 * Math.random(); m.soldPrice = (1 + Math.random()) * m.purchasePrice; //將每次局部變量的值賦給對(duì)應(yīng)下標(biāo)的merchandise實(shí)體,此時(shí)實(shí)體merchandise有了值 littleSuperMarket.merchandises[i] = m; } System.out.println('超市開(kāi)張了!! !'); boolean open = true; Scanner scanner = new Scanner(System.in); while (open) { System.out.println('本店叫做:' + littleSuperMarket.superMarketName); System.out.println('本店地址:' + littleSuperMarket.address); System.out.println('共擁有停車(chē)位:' + littleSuperMarket.parkingCount); System.out.println('今天的營(yíng)業(yè)額為:' + littleSuperMarket.incomingSum); System.out.println('共有商品:' + littleSuperMarket.merchandises.length + '種'); //為顧客的屬性賦值 Customer customer = new Customer(); customer.name = '編號(hào):' + ((int) (Math.random() * 500)); customer.isDrivingCar = Math.random() > 0.4; customer.money = (1 + Math.random()) * 10000; //先判斷顧客是否開(kāi)車(chē) if (customer.isDrivingCar) { System.out.println('歡迎顧客' + customer.name + '號(hào)的顧客駕車(chē)而來(lái)!'); //顧客開(kāi)車(chē)的條件下車(chē)位數(shù)>0,車(chē)位減一,否則重新進(jìn)入循環(huán)(車(chē)位小于零,顧客無(wú)法停車(chē)) if (littleSuperMarket.parkingCount > 0) { littleSuperMarket.parkingCount--; System.out.println('歡迎顧客' + customer.name + '號(hào)的顧客光臨' + littleSuperMarket.superMarketName + ',車(chē)位剩余' + littleSuperMarket.parkingCount + ',錢(qián)包剩余' + customer.money); } else { System.out.println('對(duì)不起,停車(chē)位已滿(mǎn),歡迎下次光臨'); continue; } //沒(méi)開(kāi)車(chē),直接進(jìn)入 } else { System.out.println('歡迎顧客' + customer.name + '號(hào)的顧客光臨' + littleSuperMarket.superMarketName + '錢(qián)包剩余' + customer.money); } //在購(gòu)買(mǎi)流程外部創(chuàng)建變量統(tǒng)計(jì)總共花費(fèi)和購(gòu)買(mǎi)數(shù)量 double totalCast = 0; int numToBuy; //購(gòu)買(mǎi)循環(huán) while (true) { System.out.println('本店提供' + littleSuperMarket.merchandises.length + '種商品,歡迎選購(gòu)。請(qǐng)輸入商品編號(hào):'); int InDex = scanner.nextInt(); //對(duì)商品索引的合法性進(jìn)行檢測(cè) if (InDex <= 0) { break; } if (InDex > littleSuperMarket.merchandises.length - 1) { System.out.println('對(duì)不起,本店沒(méi)有那么多商品。請(qǐng)輸入0到' + (littleSuperMarket.merchandises.length - 1) + '之間的數(shù)字'); continue; } System.out.println('您選購(gòu)的商品的名字是:' + littleSuperMarket.merchandises[InDex].name + 't售價(jià)為:' + littleSuperMarket.merchandises[InDex].soldPrice); System.out.println('請(qǐng)問(wèn)你要買(mǎi)幾個(gè)?'); numToBuy = scanner.nextInt(); //對(duì)購(gòu)買(mǎi)數(shù)量的合法性進(jìn)行檢測(cè) if (numToBuy <= 0) { System.out.println('不買(mǎi)看看也好,歡迎繼續(xù)選購(gòu)'); continue; } if (numToBuy > littleSuperMarket.merchandises[InDex].count) { System.out.println('本店沒(méi)有那么多商品,歡迎繼續(xù)挑選'); continue; } /*其實(shí)這里的邏輯不太好,但是懶得改了,等再學(xué)習(xí)一段時(shí)間再好好完善這個(gè)小程序。這里把花費(fèi)放在購(gòu)買(mǎi)循環(huán)外面才是比較好的邏輯,然后在這里用if循環(huán)判斷購(gòu)買(mǎi)的一系列合法性即可。 或者把售賣(mài)個(gè)數(shù)的屬性也在這里改變賦值會(huì)容易懂,我這里放到后面了,懶得改了。等下次優(yōu)化功能時(shí)再整體優(yōu)化邏輯 */ //輸入合法,求總共花費(fèi),并對(duì)商品庫(kù)存進(jìn)行相應(yīng)的扣除 totalCast += littleSuperMarket.merchandises[InDex].soldPrice * numToBuy; littleSuperMarket.merchandises[InDex].count -= numToBuy; //仍然屬于合法性檢測(cè),檢測(cè)顧客的錢(qián)是否夠支付他所購(gòu)買(mǎi)商品的總價(jià) if (customer.money < totalCast) { System.out.println('對(duì)不起,您身上的錢(qián)不足以支付您的商品,歡迎下次選購(gòu)'); //錢(qián)不足以支付,對(duì)應(yīng)商品的數(shù)量再把剛才購(gòu)買(mǎi)但未成功支付的商品數(shù)量歸還 //就像你在超市里買(mǎi)東西,放進(jìn)購(gòu)物車(chē)了,貨架上超市庫(kù)存少了,其他顧客拿不到了,等你支付時(shí)錢(qián)不夠,商品被放回,其他顧客可以拿到的數(shù)量增加,即商品庫(kù)存增加 littleSuperMarket.merchandises[InDex].count += numToBuy; //這一段當(dāng)時(shí)寫(xiě)的時(shí)候我也比較亂 //因?yàn)榭們r(jià)計(jì)算在外面了,此時(shí)總價(jià)已將超出了你的錢(qián)數(shù)循環(huán)從這里出去如果總價(jià)不置零,你的錢(qián)數(shù)一直小于總價(jià),該顧客一直無(wú)法購(gòu)買(mǎi)商品 totalCast = 0; } else { //正確購(gòu)買(mǎi),售出數(shù)量對(duì)應(yīng)增加,顧客口袋里的錢(qián)對(duì)應(yīng)減少 littleSuperMarket.merchandisesold[InDex] += numToBuy; customer.money -= totalCast; //開(kāi)車(chē)來(lái)的話(huà),顧客離開(kāi),車(chē)位釋放 if (customer.isDrivingCar) { littleSuperMarket.parkingCount++; } } } littleSuperMarket.incomingSum += totalCast; //每次循環(huán)結(jié)束,該人總錢(qián)數(shù)得出將該人的totalCast累加到littleSuperMarket.incomingSum中,得出總共收入 //littleSuperMarket.incomingSum和totalIncoming數(shù)值相等,基本為同一意思 //littleSuperMarket.incomingSum += totalCast; System.out.println('顧客' + customer.name + '號(hào)的顧客共消費(fèi)' + totalCast + ',還剩余' + customer.money); System.out.println('今天還要繼續(xù)營(yíng)業(yè)嗎?'); open = scanner.nextBoolean(); } System.out.println('超市關(guān)門(mén)了!'); System.out.println('今天總的營(yíng)業(yè)額為' + littleSuperMarket.incomingSum + '營(yíng)業(yè)情況如下:'); //定義總收入和總凈利潤(rùn) double totalNetIncoming = 0; double totalIncoming = 0; for (int i = 0; i < littleSuperMarket.merchandisesold.length; i++) { //只統(tǒng)計(jì)售出數(shù)量大于0的商品 if (littleSuperMarket.merchandisesold[i] > 0) { //計(jì)算總利潤(rùn)和總凈利潤(rùn),通過(guò)累加求得 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] + '個(gè)。銷(xiāo)售額為' + incoming + ',凈利潤(rùn)為' + netIncoming); } } System.out.println('今日總銷(xiāo)售額為:' + totalIncoming + ';今日總凈利潤(rùn)為:' + totalNetIncoming); }}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. IntelliJ IDEA導(dǎo)入jar包的方法2. SSM框架JSP使用Layui實(shí)現(xiàn)layer彈出層效果3. 刪除docker里建立容器的操作方法4. IntelliJ IDEA導(dǎo)出項(xiàng)目的方法5. Java List集合方法及遍歷過(guò)程代碼解析6. uni-app結(jié)合.NET 7實(shí)現(xiàn)微信小程序訂閱消息推送7. ASP.NET堆和棧三之引用類(lèi)型對(duì)象拷貝和內(nèi)存分配8. Python基礎(chǔ)類(lèi)繼承重寫(xiě)實(shí)現(xiàn)原理解析9. Java靜態(tài)代碼塊加載驅(qū)動(dòng)代碼實(shí)例10. Java之JSP教程九大內(nèi)置對(duì)象詳解(下篇)
