随机点名器案例(分模块) + 库存管理案例(分模块)
第2章 随机点名器案例
2.1 案例介绍
随机点名器,即在全班同学中随机的打印出一名同学名字。
要做的随机点名器,它具备以下3个内容:
存储所有同学姓名
总览全班同学姓名
随机点名其中一人,打印到控制台
2.2 案例需求分析
在全班同学中随机的打印出一名同学名字。
我们对本案例进行分析,得出如下分析结果:
1.存储全班同学名字
2.打印全班同学每一个人的名字
3.在班级总人数范围内,随机产生一个随机数,查找该随机数所对应的同学名字
该案例须有以下3个内容:
存储所有同学姓名
总览全班同学姓名
随机点名其中一人,打印到控`制台
随机点名器明确地分为了三个功能。如果将多个独立功能的代码写到一起,则代码相对冗长,我们可以针对不同的功能可以将其封装到一个方法中,将完整独立的功能分离出来。
而在存储同学姓名时,如果对每一个同学都定义一个变量进行姓名存储,则会出现过多孤立的变量,很难一次性将全部数据持有。此时,我们可以使用数组解决多个数据的存储问题。
/*
随机点名器
1.存储所有学生姓名,添加功能
2.预览所有学生姓名,遍历数组,浏览功能
3.随机数作为索引,到数组中找到元素,随机点名功能
将功能独立出来,作成方法,调用方法即可
定义三个功能,用到同一个姓名数据
姓名存储到数组中,三个方法,使用同一个数组中的数据,方法传递参数
*/
//Scanner类使用步骤:
//S1:导包
import java.util.Scanner;
//Random使用方式
//R1:import导包:
import java.util.Random;
public class CallName_1{
public static void main(String[] args){
//定义数组,存储学生姓名
String[] names = new String[3];
//功能菜单选择:
while(true){
//不断获取控制台输入的数字,使用指定的功能
int choose = chooseFunction();
switch(choose){
case 1:
//1.添加学生姓名
System.out.println("=========正处于添加学生姓名进行中=============");
addStudentNames(names);
System.out.println("============添加学生姓名结束==================");
break;
case 2:
//2.遍历学生姓名
System.out.println("========正处于遍历学生姓名进行中==============");
printStudentNames(names);
System.out.println("============遍历学生姓名结束==================");
break;
case 3:
//3.随机点名功能
System.out.println("=========正处于随机点名功能进行中================");
String ranName = RandomStudentName(names);
System.out.println(ranName);
System.out.println("============随机点名功能结束...==================");
break;
case 4:
//结束程序
System.out.println("============已退出系统===========================");
return;
default:
System.out.println("没有这个功能,还在完善中...");
break;
}
}
}
public static int chooseFunction(){
System.out.println("--------------------学生随机点名系统----------------------");
System.out.println("1.添加学生姓名");
System.out.println("2.遍历学生姓名");
System.out.println("3.随机点名功能");
System.out.println("4.退出系统");
System.out.println("请输入要执行的操作序号:");
//接受键盘输入
Scanner sc = new Scanner(System.in);
int chooseNumber = sc.nextInt();
return chooseNumber;
}
/*
定义方法:实现数组中控制台输入,并添加字符串元素
返回值? 没有
参数? 数组(容器)
*/
public static void addStudentNames(String[] names){
//S2:创建Scanner对象实例
Scanner sc = new Scanner(System.in);
for(int i = 0;i < names.length;i++){
System.out.println("接受第" + i + "同学姓名");
names[i] = sc.next();//S3:用来接收控制台录入的字符串
}
}
/*
定义方法:遍历数组中的每个元素
返回值?没有
参数? 数组(容器)
*/
public static void printStudentNames(String[] names){
for(int i = 1;i <= names.length;i++){
System.out.println("第 " + i + "个学生姓名:" + names[i-1]);
}
}
/*
定义方法:数组的索引,用随机类产生,返回出随机抽取的数组元素
返回值? 数组中的元素
参数?数组
*/
public static String RandomStudentName(String[] names){
//R2:创建Random对象实例
Random ran = new Random();
//R3:使用方法
int Randomindex = ran.nextInt(names.length);
return names[Randomindex];
}
}
第3章 库存管理案例
3.1 案例介绍
现在,我们将原有的库存管理案例,进行业务逻辑的封装。
将对下列功能进行方法封装:
打印库存清单功能
库存商品数量修改功能
退出程序功能
3.2 案例需求分析
管理员能够进行的操作有3项(查看、修改、退出),我们可以采用(switch)菜单的方式来完成。
-------------库存管理------------
1.查看库存清单
2.修改商品库存数量
3.退出
请输入要执行的操作序号:
每一项功能操作,我们采用方法进行封装,这样,可使程序的可读性增强。
选择“1.查看库存清单”功能,则控制台打印库存清单
选择“2.修改商品库存数量”功能,则对每种商品库存数进行更新
选择“3.退出”功能,则退出库存管理,程序结束
/*
实现商品的库存管理:
功能:
1.展示用户选择功能的清单
2.根据选择的功能,进行不同的操作
A.查看库存清单
B.修改商品库存数量
C.退出系统
分析:
1.展示用户清单:输出语句,键盘输入类Scanner,选择功能序号
2.根据选择,进行不同的操作 使用switch case语句
A.遍历存储的数组中元素
B.修改所有库存数量
C.退出系统return
*/
//Scanner类使用步骤:
//S1:导包
import java.util.Scanner;
public class Shopp_1{
public static void main(String[] args){
//使用数组,保存商品的信息
//品名,尺寸,价格,库存数,定义五个数组
String[] brand = {"MacBookAir","ThinkpadT450"};
double[] size = {13.3,15.6};
double[] price = {9998.97,6789.56};
int[] count = {0,0};
//功能菜单选择:
while(true){
int choose = chooseFunction();
switch(choose){
case 1:
//1.调用查看库存清单的方法
printStore(brand,size,price,count);
break;
case 2:
//2.调用修改商品库存数量
update(brand,count);
break;
case 3:
//结束系统
return;
default:
System.out.println("功能还在完善中...");
break;
}
}
}
/*
方法定义:实现用户选择功能,将选中的数字返回回来
返回值? int
参数? 没有
*/
public static int chooseFunction(){
System.out.println("--------------------库存管理----------------------");
System.out.println("1.查看库存清单");
System.out.println("2.修改商品库存管理");
System.out.println("3.退出系统");
System.out.println("请输入要执行的操作序号:");
//S2:创建Scanner对象实例
Scanner ran = new Scanner(System.in);
return ran.nextInt();//S3:用来接收控制台录入的数字
}
/*
方法定义:查看库存清单,遍历存储的数组中元素
返回值?没有
参数? 所有数据的数组(容器)
*/
public static void printStore(String[] brand,double[] size,double[] price,int[] count){
//1.实现表头固定数据,打印输出语句
System.out.println("--------------------商城库存清单--------------------");
System.out.println("品牌型号 尺寸 价格 库存数");
//2.表尾部,一部分固定数据,一部分需要科学计算
int totalCount = 0;
double totalPrice = 0;
//3.遍历存储的数组中元素
for(int i = 0;i < brand.length;i++){
System.out.println(brand[i] + " " + size[i] + " " + price[i] + " " + count[i]);
totalCount += count[i];
totalPrice += count[i] * price[i];
}
//4.打印尾部数据
System.out.println("总库存数:" + totalCount + " 台");
System.out.println("库存商品总金额:" + totalPrice + " 元");
System.out.println("----------------------------------------------------");
}
/*
定义方法:修改商品库存数量
返回值?没有
参数?brand 和count数组
*/
public static void update(String[] brand,int[] count){
//遍历数组,遍历到一个,修改一个
//1.接受键盘输入
Scanner sc = new Scanner(System.in);
for(int i = 0;i < brand.length;i++){
System.out.println("请输入" + brand[i] + "的库存数");
//键盘输入,录入库存,存储到库存的数组中
int newCount = sc.nextInt();
count[i] = newCount;
}
}
}