快递e栈
功能介绍
- 角色切换(快递员和普通用户)
快递员功能:存快递,删除快递,修改快递,查看所有快递
普通用户功能:取快递 - 存快递
- 删除快递
- 修改快递
- 查看所有快递
- 取快递
任务过程:
- 切换用户界面
- 快递信息的保存
- 各个子功能的实现
涉及知识点:
- Java基础语法
- Java基础数据类型
- 流程控制语句(if、switch、while、do while、for、break与continue)
- 数组
package com.sbs;
import java.util.Scanner;
public class task26 {
//定义长度为100的数组odd储存快递单号
static int [] numbers = new int[100];
//定义长度为100的数组co储存公司名称
static String [] companyNames = new String[100];
//定义长度为100的数组num储存取件码
static int [] codes = new int[100];
static String companyName;
static int number;
static int code;
static int index = -1;
public static void main(String[] args) {
saveData("韵达", 1234);
saveData("韵达", 1235);
saveData("韵达", 1236);
//程序结束回到主页面
while(true) {
//打印欢迎语
System.out.println("==欢迎使用sbs快递柜==");
//接收身份信息
System.out.println("请输入您的身份:"+"1.快递员 " +"2.用户");
Scanner sc = new Scanner(System.in);
int l =sc.nextInt();
//快递员操作分支
if( l==1) {
//定义布尔变量控制循环
boolean flag = true;
//switch循环结束重新回到选择操作页面
while(flag) {
//接收操作信息
System.out.println("请选择操作"+":"+"1.存快递 " +"2.删除快递 " +"3.修改快递 " +"4.查看所有快递"+"5.返回主页");
Scanner sc2 = new Scanner(System.in);
switch(sc2.nextInt()) {
//存快递
case 1 :
//接收输入的快递信息并储存
System.out.print("请输入单号");
Scanner sc3 = new Scanner(System.in);
number = sc3.nextInt();
System.out.print("请输入公司名称");
Scanner sc4 = new Scanner(System.in);
companyName = sc4.next();
saveData(companyName,number);
System.out.println("存入成功:取件码为"+ codes[index]);
break;
case 2 :
//接收要删除的单号
System.out.println("请输入要删除的快递单号");
Scanner sc5 = new Scanner(System.in);
int num1= sc5.nextInt();
//遍历柜内单号数组,相同则把公司名称数组该单号下标中内容置空
for(int i=0;i<100;i++) {
if( numbers[i]== num1){
companyNames[i] = null ;
System.out.println("删除成功");
}
}
break;
case 3:
//接收要修改的单号
System.out.println("请输入要修改的快递单号");
Scanner sc6 = new Scanner(System.in);
int num2 = sc6.nextInt();
//遍历单号数组,相同则提示输入修改信息并储存为该单号下标对应的数组内容
for(int i=0;i<100;i++) {
if( numbers[i]== num2){
System.out.println("请输入新的快递单号");
Scanner sc7 = new Scanner(System.in);
numbers[i] = sc7.nextInt();
System.out.println("请输入 新的快递公司");
Scanner sc8 = new Scanner(System.in);
companyNames[i] = sc8.next ();
System.out.println("修改成功");
}
}
break;
case 4:
for (int i = 0; i <100; i++) {
if( companyNames[i] != null) {
System.out.print( companyNames[i] + "\t" + numbers[i] + "\t" + codes[i]);
System.out.println();
}
}
break;
case 5 :
//退出循环
flag = false;
break;
}
}
}
else if(l==2 ) {
System.out.println("请输入取件码");
Scanner sc9 = new Scanner(System.in);
int num2 = sc.nextInt();
for(int i=0;i<100;i++) {
if( numbers[i]== num2){
System.out.println("取件成功");
}
}
}
}
}
public static boolean saveData(String companyName, int number) {
//用来存储哪个位置是空的,可以存新的物品的这个下标。
// 不能是0,0是一个合法的下标,如果找不到还返回0,那就不合理了
for (int i = 0; i < 100; i++) {
if (companyNames[i] == null) {
index = i;
break;
}
}
if (index != -1) {
//要知道哪个位置可以放 i ? i=1
companyNames[index] = companyName;
numbers[index] = number;
//随机一个三位数:100-999
//0-999 100-1099
//0-899 100-999
int code = (int) (Math.random() * 9000 + 1000);
codes[index] = code;
return true;
}
else {
return false;
}
}
}