一,数据初始化
1.创建项目ArticleManage,创建类Article(商品类)
(1).添加4个属性:商品名称(name),商品库存数量(amount),商品价格(price),商品售出数量(number)
package eud.xcdq;
* 商品类
*/
public class Article {
public String name; //商品名称
public int amount; //商品库存数量
public double price; //商品价格
public int number; //商品售出数量
/**
*商品信息展示
*/
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; //商品价格
amount = kucun; //商品库存数量
number = yishuo; //商品售出数量
}
2.创建ArticleSet,并定义1个长度为50的数组保存商品。
package eud.xcdq;
public class ArticleSet {
Article[] articles = new Article[50];
}
3.创建类ArticleManage,创建ArticleSet对象artcleSet,实现初始化数据的方法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();
//仓库初始化,放入一些商品
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;
二,实现菜单切换
1,在ArticleManage类中,编写菜单和菜单切换的startMenu方法
//启动菜单
public void startMenu(){
boolean flag = true; //是否继续操作
do {
System.out.println("**************************");
System.out.println("1 查看商品信息");
System.out.println("2 新增商品信息");
System.out.println("3 删除商品信息");
System.out.println("4 卖出商品");
System.out.println("5 商品销售排行榜");
System.out.println("6 退出");
System.out.println("**************************");
System.out.println("请输入功能编号");
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("卖出商品");
break;
case 5:
System.out.println("排行榜");
break;
case 6:
System.out.println("谢谢,已退出");
System.out.println("系统已关闭");
flag = false;
break;
default:
System.out.println("你输入的功能编号有误,请重新选择");
break;
}
}while (flag);
2.创建测试类,在其中编写程序入口,实列化ArticleManage类并实现initial方法和startMenu方法。
public class Demo {
public static void main(String[] args) {
ArticleManage articleManage = new ArticleManage();
articleManage.initial();
articleManage.startMenu();
}
}
三,实现查看商品信息
1.在ArticleManage类中编写查看商品信息的chakan方法,并在startMenu方法中输入1时调用search方法
private void chakan() { //查看商品信息
System.out.println("编号\t名字\t单价\t库存\t已售");
for (int i = 0; i < articleSet.articles.length; i++) {
if (articleSet.articles[i]!= null){
articleSet.articles[i].print(i+1);
}
}
}
2.在StartMenu方法中,输入1时调用chakan方法
switch (funNo){
case 1:
System.out.println("查看商品信息");
chakan();
break;
四,实现增加商品信息
1.在ArticleManage类中编写添加商品信息的add方法,并在startMenu方法中输入2时调用search方法。
private void add() { //新增商品信息
Scanner scanner = new Scanner(System.in);
System.out.println("请输入商品的名称:");
String name = scanner.next();
System.out.println("请输入单价:");
double price = scanner.nextDouble();
System.out.println("请输入库存:");
int count = scanner.nextInt();
System.out.println("请输入已卖数量:");
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; // 把新建的对象放在数组中的第一个空位置
break; //后续的空位置直接跳过
}
}
}
2.在stratMenu方法中输入2时调用add方法
case 2:
System.out.println("2 新增商品信息");
add();
break;
五,实现删除商品信息
1.在ArticleManage类中编写删除商品信息的delete方法
private void delete() { //删除商品信息
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要删除的商品编号:");
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 ){
//后面的元素向前移动
articleSet.articles[j] = articleSet.articles[j+1];
j++;
}
articleSet.articles[j] = null;
flag = true;
break; //后续的空数组元素没有必要执行
}else {
flag = false;
}
}
if (flag){
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
}
2.在stratMenu方法中输入3时调用delete方法
case 3:
System.out.println("3 删除商品信息");
delete();
break;
六,实现商品销售的业务处理
1.zaiArticleManage类中编写卖出商品的saleOut方法
private void saleOut() { //卖出商品
System.out.println("请输入要售卖的商品名称:");
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("请输入你要售卖的数量:");
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("售卖成功");
break;
}
}
}
2.在stratMenu方法中输入4时调用saleOut方法
case 4:
System.out.println("卖出商品");
saleOut();
break;
七,实现商品销售排行榜
1,在ArticleManage类中编写商品销售的排行榜的leadeBand方法
private void leadeBand() { //销量排行榜
/*
for () 所有元素全部参与排序
for () 当前元素只和后面的元素比较
if (当前元素<后续的元素)
往后排
*/
//排序
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){ //数组中不为null才能参与排序
if (articleSet.articles[j].number < articleSet.articles[j+1].number){
Article newTemp = articleSet.articles[j]; //新定义一个临时变量,实现两个数据的交换位置
articleSet.articles[j] = articleSet.articles[j+1];
articleSet.articles[j+1] = newTemp;
}
}
}
}
//打印结果
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时调用leaBand方法
case 5:
System.out.println("排行榜");
leadeBand();
break;