一,數(shù)據(jù)初始化
1.創(chuàng)建項(xiàng)目ArticleManage筷厘,創(chuàng)建類Article(商品類)
(1).添加4個(gè)屬性:商品名稱(name)幻捏,商品庫(kù)存數(shù)量(amount),商品價(jià)格(price)殿遂,商品售出數(shù)量(number)
package eud.xcdq;
* 商品類
*/
public class Article {
public String name; //商品名稱
public int amount; //商品庫(kù)存數(shù)量
public double price; //商品價(jià)格
public int number; //商品售出數(shù)量
/**
*商品信息展示
*/
public void print (int index){
System.out.println(index + "\t" + name + "\t" + price + "\t" + amount + "\t" +number);
}
}
(2).添加SetArticle屬性诈铛,與商品信息綁定
public void setArticle(String mingzi , double danjia , int kucun , int yishuo){
name = mingzi;//商品名稱
price = danjia; //商品價(jià)格
amount = kucun; //商品庫(kù)存數(shù)量
number = yishuo; //商品售出數(shù)量
}
2.創(chuàng)建ArticleSet,并定義1個(gè)長(zhǎng)度為50的數(shù)組保存商品墨礁。
package eud.xcdq;
public class ArticleSet {
Article[] articles = new Article[50];
}
3.創(chuàng)建類ArticleManage幢竹,創(chuàng)建ArticleSet對(duì)象artcleSet,實(shí)現(xiàn)初始化數(shù)據(jù)的方法initial(),引用SetArticle的方法添加商品信息恩静。
package edu.xcdq.shop;
import java.util.Scanner;
/**
* @author hongxiaozheng
* @date 2021/4/6 16:38
*/
public class ArticleManage {
ArticleSet articleSet = new ArticleSet();
//倉(cāng)庫(kù)初始化焕毫,放入一些商品
public void initial(){
Article xiaomi11 = new Article();
xiaomi11.setArticle("小米11",22221.29,50,0);
Article xiaomi11Pro = new Article();
xiaomi11Pro.setArticle("小米11Pro",2999,20,0);
Article xiaomiUltra = new Article();
xiaomiUltra.setArticle("小米至尊版",3999,20,0);
articleSet.articles[0] = xiaomi11;
articleSet.articles[1] = xiaomi11Pro;
articleSet.articles[2] = xiaomiUltra;
二蹲坷,實(shí)現(xiàn)菜單切換
1,在ArticleManage類中邑飒,編寫(xiě)菜單和菜單切換的startMenu方法
//啟動(dòng)菜單
public void startMenu(){
boolean flag = true; //是否繼續(xù)操作
do {
System.out.println("**************************");
System.out.println("1 查看商品信息");
System.out.println("2 新增商品信息");
System.out.println("3 刪除商品信息");
System.out.println("4 賣(mài)出商品");
System.out.println("5 商品銷售排行榜");
System.out.println("6 退出");
System.out.println("**************************");
System.out.println("請(qǐng)輸入功能編號(hào)");
Scanner scanner = new Scanner(System.in);
int funNo = scanner.nextInt();
switch (funNo){
case 1:
System.out.println("查看商品信息");
break;
case 2:
System.out.println("2 新增商品信息");
break;
case 3:
System.out.println("3 刪除商品信息");
break;
case 4:
System.out.println("賣(mài)出商品");
break;
case 5:
System.out.println("排行榜");
break;
case 6:
System.out.println("謝謝循签,已退出");
System.out.println("系統(tǒng)已關(guān)閉");
flag = false;
break;
default:
System.out.println("你輸入的功能編號(hào)有誤,請(qǐng)重新選擇");
break;
}
}while (flag);
2.創(chuàng)建測(cè)試類疙咸,在其中編寫(xiě)程序入口县匠,實(shí)列化ArticleManage類并實(shí)現(xiàn)initial方法和startMenu方法。
public class Demo {
public static void main(String[] args) {
ArticleManage articleManage = new ArticleManage();
articleManage.initial();
articleManage.startMenu();
}
}
三罕扎,實(shí)現(xiàn)查看商品信息
1.在ArticleManage類中編寫(xiě)查看商品信息的chakan方法聚唐,并在startMenu方法中輸入1時(shí)調(diào)用search方法
private void chakan() { //查看商品信息
System.out.println("編號(hào)\t名字\t單價(jià)\t庫(kù)存\t已售");
for (int i = 0; i < articleSet.articles.length; i++) {
if (articleSet.articles[i]!= null){
articleSet.articles[i].print(i+1);
}
}
}
2.在StartMenu方法中,輸入1時(shí)調(diào)用chakan方法
switch (funNo){
case 1:
System.out.println("查看商品信息");
chakan();
break;
四腔召,實(shí)現(xiàn)增加商品信息
1.在ArticleManage類中編寫(xiě)添加商品信息的add方法杆查,并在startMenu方法中輸入2時(shí)調(diào)用search方法。
private void add() { //新增商品信息
Scanner scanner = new Scanner(System.in);
System.out.println("請(qǐng)輸入商品的名稱:");
String name = scanner.next();
System.out.println("請(qǐng)輸入單價(jià):");
double price = scanner.nextDouble();
System.out.println("請(qǐng)輸入庫(kù)存:");
int count = scanner.nextInt();
System.out.println("請(qǐng)輸入已賣(mài)數(shù)量:");
int number = scanner.nextInt();
Article newArticle = new Article();
newArticle.setArticle(name,price,count,number);
for (int i = 0; i < articleSet.articles.length; i++) {
if (articleSet.articles[i] == null){
articleSet.articles[i] = newArticle; // 把新建的對(duì)象放在數(shù)組中的第一個(gè)空位置
break; //后續(xù)的空位置直接跳過(guò)
}
}
}
2.在stratMenu方法中輸入2時(shí)調(diào)用add方法
case 2:
System.out.println("2 新增商品信息");
add();
break;
五臀蛛,實(shí)現(xiàn)刪除商品信息
1.在ArticleManage類中編寫(xiě)刪除商品信息的delete方法
private void delete() { //刪除商品信息
Scanner scanner = new Scanner(System.in);
System.out.println("請(qǐng)輸入要?jiǎng)h除的商品編號(hào):");
int bianhao = scanner.nextInt();
boolean flag = true;
for (int i = 0; i < articleSet.articles.length; i++) {
if (articleSet.articles[i]!= null && (i+1) == bianhao){
int j = i;
while (articleSet.articles[j+1]!=null ){
//后面的元素向前移動(dòng)
articleSet.articles[j] = articleSet.articles[j+1];
j++;
}
articleSet.articles[j] = null;
flag = true;
break; //后續(xù)的空數(shù)組元素沒(méi)有必要執(zhí)行
}else {
flag = false;
}
}
if (flag){
System.out.println("刪除成功");
}else {
System.out.println("刪除失敗");
}
}
2.在stratMenu方法中輸入3時(shí)調(diào)用delete方法
case 3:
System.out.println("3 刪除商品信息");
delete();
break;
六亲桦,實(shí)現(xiàn)商品銷售的業(yè)務(wù)處理
1.zaiArticleManage類中編寫(xiě)賣(mài)出商品的saleOut方法
private void saleOut() { //賣(mài)出商品
System.out.println("請(qǐng)輸入要售賣(mài)的商品名稱:");
Scanner scanner = new Scanner(System.in);
String name = scanner.next();
for (int i = 0; i < articleSet.articles.length; i++) {
if ((articleSet.articles[i].name).equals(name)){
System.out.println("請(qǐng)輸入你要售賣(mài)的數(shù)量:");
int shoumai = scanner.nextInt();
if (shoumai < articleSet.articles[i].amount){
articleSet.articles[i].amount = articleSet.articles[i].amount - shoumai;
articleSet.articles[i].number = articleSet.articles[i].number + shoumai;
}
System.out.println("售賣(mài)成功");
break;
}
}
}
2.在stratMenu方法中輸入4時(shí)調(diào)用saleOut方法
case 4:
System.out.println("賣(mài)出商品");
saleOut();
break;
七,實(shí)現(xiàn)商品銷售排行榜
1浊仆,在ArticleManage類中編寫(xiě)商品銷售的排行榜的leadeBand方法
private void leadeBand() { //銷量排行榜
/*
for () 所有元素全部參與排序
for () 當(dāng)前元素只和后面的元素比較
if (當(dāng)前元素<后續(xù)的元素)
往后排
*/
//排序
for (int i = 0; i < articleSet.articles.length - 1; i++) {
for (int j = 0; j < articleSet.articles.length - i - 1; j++) {
if (articleSet.articles[j] != null && articleSet.articles[j+1] != null){ //數(shù)組中不為null才能參與排序
if (articleSet.articles[j].number < articleSet.articles[j+1].number){
Article newTemp = articleSet.articles[j]; //新定義一個(gè)臨時(shí)變量客峭,實(shí)現(xiàn)兩個(gè)數(shù)據(jù)的交換位置
articleSet.articles[j] = articleSet.articles[j+1];
articleSet.articles[j+1] = newTemp;
}
}
}
}
//打印結(jié)果
for (int i = 0; i < articleSet.articles.length; i++) {
if (articleSet.articles[i] != null){
System.out.println((i+1)+"\t" + articleSet.articles[i].name + "\t" + articleSet.articles[i].number );
}
}
}
2.在stratMenu方法中輸入5時(shí)調(diào)用leaBand方法
case 5:
System.out.println("排行榜");
leadeBand();
break;