java 用集合完成随机点名器和库存管理案例
一 随机点名器
1.案例需求
随机点名器,即在全班同学中随机的找出一名同学,打印这名同学的个人信息。
我们来完成随机点名器,它具备以下3个内容:
存储所有同学姓名
总览全班同学姓名
随机点名其中一人,打印到控制台
2.案例分析
全班同学中随机的找出一名同学,打印这名同学的个人信息。
我们对本案例进行分析,得出如下分析结果:
1.存储全班同学信息(姓名、年龄)
2.打印全班同学每一个人的信息(姓名、年龄)
3.在班级总人数范围内,随机产生一个随机数,查找该随机数所对应的同学信息(姓名、年龄)
随机点名器明确地分为了三个功能。如果将多个独立功能的代码写到一起,则代码相对冗长,我们可以
针对不同的功能可以将其封装到一个方法中,将完整独立的功能分离出来。
而在存储同学姓名时,如果对每一个同学都定义一个变量进行姓名存储,则会出现过多孤立的变量,很
难一次性将全部数据持有。此时,我们采用ArrayList集合来解决多个学生信息的存储问题。
3.代码:
import java.util.*; class Demo02 { public static void main(String[] args) { //储存全体学生的信息 ArrayList<String> stuname = new ArrayList<String>(); stuname.add("姓名:张三,年龄:99"); stuname.add("姓名:李四,年龄:100"); stuname.add("姓名:王五,年龄:77"); stuname.add("姓名:赵六,年龄:50"); stuname.add("姓名:孙七,年龄:60"); //总览全体同学信息 for (int i = 0;i<stuname.size() ;i++ ){ System.out.print(stuname.get(i)+" "); } System.out.println(); //随机点名 Random ra = new Random(); int r = ra.nextInt(stuname.size()); System.out.println(stuname.get(r)); } }
二 库存管理案例
1.案例需求
打印库存清单功能
库存商品数量修改功能
退出程序功能
2.代码:
import java.io.*; import java.util.Scanner; import java.util.ArrayList; class HomeWork0630 { public static void main(String[] args)throws IOException { menu(); } public static void show(){ System.out.println("------库存管理------"); System.out.println("1.查看库存清单"); System.out.println("2.修改商品库存数量"); System.out.println("3.退出"); System.out.println("请输入要执行的操作序号:"); } public static void menu()throws IOException{ Scanner sc = new Scanner(System.in); ArrayList<String> brand =new ArrayList<String>(); ArrayList<Double> sizee =new ArrayList<Double>(); ArrayList<Double> price =new ArrayList<Double>(); ArrayList<Integer> num =new ArrayList<Integer>(); brand.add("MacBookAir"); brand.add("ThinkpadT450"); brand.add("ASUS-FL5800"); sizee.add(13.3); sizee.add(14.0); sizee.add(15.6); price.add(6988.88); price.add(5999.99); price.add(4999.5); num.add(5); num.add(10); num.add(18); while(true){ show(); int s = sc.nextInt(); switch(s){ case 1: look(brand,sizee,price,num); break; case 2: change(brand,num); break; case 3: return; default: System.out.println("输入有误请重新输入!"); } } } public static void look(ArrayList<String> brand,ArrayList<Double> sizee,ArrayList<Double> price, ArrayList<Integer> num)throws IOException{ System.out.println("----------商城库存清单----------"); System.out.println("品牌型号\t尺寸\t价格\t库存数"); for (int i=0;i<brand.size() ;i++ ){ System.out.println(brand.get(i)+"\t"+sizee.get(i)+"\t"+price.get(i)+"\t"+num.get(i)); } System.out.println("--------------------------------"); int sum = 0; for (int i = 0;i<brand.size() ;i++ ){ sum+=num.get(i); } System.out.println("总库存数:"+sum); double sum2 = 0; for (int i = 0;i<brand.size() ;i++ ){ sum2+=num.get(i)*price.get(i); } System.out.println("库存商品总金额:"+sum2); System.out.println("输入回车键返回主菜单"); if(new InputStreamReader(System.in).read() == 13){ return; } } public static void change(ArrayList<String> brand,ArrayList<Integer> num){ Scanner sca = new Scanner(System.in); while(true){ System.out.println("-------------库存表-------------"); System.out.println("序号\t品牌型号\t库存数"); for (int i=0;i<brand.size() ;i++ ){ System.out.println(i+1+"\t"+brand.get(i)+"\t"+num.get(i)); } System.out.println("--------------------------------"); System.out.println("请根据上表输入需要改库存商品的序号,按0返回主界面:"); int s = sca.nextInt(); int num1=0; if ((s-1)<brand.size()&&s>0){ System.out.println("请输入修改后的内存数:"); num1=sca.nextInt(); num.set(s-1,num1); System.out.println("修改成功!结果为:"); System.out.println("-------------库存表-------------"); System.out.println("序号\t品牌型号\t库存数"); for (int i=0;i<brand.size() ;i++ ){ System.out.println(i+1+"\t"+brand.get(i)+"\t"+num.get(i)); } System.out.println("--------------------------------"); while(true){ System.out.println("是否继续修改:按1继续,按0返回主菜单"); int b = sca.nextInt(); if (b==1){ break; }else if(b==0){ return; }else{ System.out.println("您的输入有误请重新输入!"); } } }else if(s==0){ return; }else{ System.out.println("您的输入有误请重新输入!"); } } } }