Java基础数组与方法——一个简单的商品管理系统(已改正)

*@description:
 *通过java基础的相关知识,
 *设计并完成一个简单的商品录入系统,可以实现:菜单显示、商品信息展示、商品信息录入、商品信息查询、退出的功能

效果如图:

代码及详情如下:

public class 商品录入系统8_26_1 {
	//成员变量
    //自己设置一共能输入多少个,记得三个数组元素应该是一样多的
	static String[] name= new String[] {"未输入","未输入","未输入","未输入","未输入"};//商品名称
	static int[] price= new int[] {0,0,0,0,0};//商品价格
	static int[] number= new int[]{0,0,0,0,0};//商品数量
	static int count=0;
	//count用来记录入了多少次;在第一次没录完第二次接着录的情况下也可以做数组下标,不然数组又会从第一个元素开始录
	
public static void main(String[] args) {
	outer:while(true) {//设置死循环用来每一次进行完操作后自动显示菜单
		int c=menu();//从菜单返回一个值来进行选择操作
		switch(c) {
		case 1:show();break;//显示商品信息
		case 2:add();break;//添加商品信息并显示结果
		case 3:reach();break;//搜索商品并显示商品信息
		case 4:f4();break;//统计商品信息并显示
		case 5://退出程序
			System.out.println("成功退出!");
			break outer; //用return也能这样
		//outer 标签,break outer可以退出当前全部循环
		default:System.out.println("选择错误!");
		}
	}
}
//菜单显示
public static void menu() {
	System.out.println("===========");
	System.out.println("1.显示商品信息");
	System.out.println("2.录入商品信息");
	System.out.println("3.搜索商品信息");
	System.out.println("4.统计商品信息");
	System.out.println("5.退出程序");
	if(count==0) {//count=0代表第一次或者还没有录入信息时,显示这个tips,录入过一次信息后就不再显示这条tips
	System.out.println("Tips:请先完成录入操作再选择后续操作...");
	}
	System.out.println("===========");
	System.out.print("请选择:");//提醒用户选择操作
    return new Scanner(System.in).nextInt();//输入选择的数,并返回到主函数
}
//展示商品信息
public static void show() {
	if(count==0) {//count=0代表第一次或者还没有录入信息时
		System.out.println("当前还没有商品,请先完成录入操作在选择该操作哦!^0^\n");
	}else {//代表已经录入过信息了
		System.out.println("名称\t\t价格\t\t库存");
		for (int i = 0; i < name.length; i++) {//循环遍历数组,显示所有商品信息
			System.out.print(name[i]+"\t\t");
			System.out.print(price[i]+"元"+"\t\t");
			System.out.print(number[i]+"个"+"\t\t");
			System.out.println();//与下个菜单界面隔两行
		}
	}
}
//录入商品信息
public static void add() {
	outer:for (int i= 0; i < name.length; i++) {
		//遍历数组赋值
			System.out.print("请输入要添加的第"+(count+1)+"件商品的名称:");
			name[count]=new Scanner(System.in).nextLine();//string类一般用next.Line();赋值
			System.out.print("请输入要添加的第"+(count+1)+"件商品的价格:");
			price[count]=new Scanner(System.in).nextInt();
			System.out.print("请输入要添加的第"+(count+1)+"件商品的数量:");
			number[count]=new Scanner(System.in).nextInt();
			System.out.println("录入成功!");
			count++;
			if(count!=name.length) {//表示还没有录入到最多个商品信息
				System.out.println("是否继续录入?(t退出,j继续):");
				String input=new Scanner(System.in).nextLine();
			if(input.equals("t")) {
				show();//显示刚刚录入的结果
				break outer;//退出这个循环,返回到菜单界面
			}else if(!(input.equals("j"))){
				//String不能直接比较,必须用equals比较,这里代表输入结果不是t也不是j的情况
				System.out.println("选择错误!");
				break;
					}
			}
		    else { //这代表count=5,已经录入到了最多个的时候
			    System.out.println("已全部录入!");
			    show();//展示录入结果
			    break outer;//退出这个循环,跳到菜单界面
		    }
	    }
 }
//搜索商品信息
public static void reach(){
	if(count==0) {//count=0代表第一次或者还没有录入信息时
		System.out.println("当前还没有商品,请先完成录入操作在选择该操作哦!^0^\n");
		return;//直接返回调用此方法界面,也就是菜单界面
	}
	System.out.println("请输入要查询的商品名称:");
	String input=new Scanner(System.in).nextLine();
	for (int i = 0; i < name.length; i++) {//需要在所有商品中查找,所以要遍历整个数组
		if(input.equals(name[i])) {//找到与输入值相等的元素
			System.out.println("名称:"+name[i]+",价格:"+price[i]+"元"+",库存:"+number[i]+"个");
			break;
		}else if(i==name.length-1){//没有找到与之相等的元素
			System.out.println("找不到该商品!");
		}
	}
}
//统计商品信息
public static void f4() {
	if(count==0) {//count=0代表第一次或者还没有录入信息时
		System.out.println("当前还没有商品,请先完成录入操作在选择该操作哦!^0^\n");
		return;//直接返回调用此方法界面,也就是菜单界面
	}
	System.out.println("名称\t单价\t库存\t总价");
	for (int i = 0; i < name.length; i++) {//显示所有商品信息
		System.out.println(name[i]+"\t"+price[i]+"元/个"+"\t"+number[i]+"个"+"\t"+(price[i]*number[i]));
	}
}
}

此程序有一不足:除了在一次性录入全部商品信息的时候,当录入完成退出的时候会有一次如下失灵的情况,待以后来改:

代码已经改正,改正地点:

在录入信息add方法中,录入完成后退出录入的原代码如下图,多引用一次menu方法,实际上跳出这个循环后这个方法就引用完了,就会回到main()里调用这个方法的地方,而在main里调用完这个方法也直接跳出switch语句,然后是while死循环重新开始,就会重新开始显示菜单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多低调

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值