package day2;
import java.util.Random;
import java.util.Scanner;
//方法不要过于臃肿,这样后期维护不太好.
public class kuaidi {
public static Scanner input=new Scanner(System.in);
public static String[] numberArr=new String[100];//快递单号数组
public static String[] companyArr=new String[100];//公司名称数组
public static int[] codeArr=new int[100];//可以写成int[]取件码数组
public static int index=0; //快递柜中有多少个快递
public static Random random=new Random();
public static void main(String[] args) {
//展示菜单
while(true) {
int id=startMenu();
if(id==0)
return ;
}
}
/**
* 开始菜单
*/
public static int startMenu() {
System.out.println("======欢迎使用嘉哥快递公司");
System.out.print("请输入您的身份: 1-快递员 2-用户 0-退出");
int id=0;
do {
id=input.nextInt();
if(id==1) { //快递员---展示快递员的菜单
delivermanMenu();
break;
} else if(id==2) { //普通用户
userMenu();
break;
}else if(id==0) {
System.out.println("谢谢使用");
return 0;
}else {
System.out.println("选择有误!请重新输入");
}
}while(true);
return id;
}
/**
* 普通用户菜单
*/
public static void userMenu() {
System.out.print("请输入去取件码");
int code=input.nextInt();
int codeIndex=isExist(code);
if(codeIndex==-1) {
System.out.println("未找到快递");
}else {
del(codeIndex);
System.out.println("取件成功");
}
}
/**
* 快递员菜单
*
*/
public static void delivermanMenu() {
System.out.print("请选择操作如下:1.存快递 2.删除快递 3.修改快递 4/查看所有快递");
int id=input.nextInt();
if(id==1) {
saveExpress();
}else if(id==2) {
delExpress();
}else if(id==3) {
System.out.print("请输入要修改的快递单号");
String number=input.next();
int updateIndex=findByNumber(number);
if(updateIndex==-1) {
System.out.println("未找到快递");
}else {
System.out.print("请输入新的快递单号");
number=input.next();
System.out.print("请输入新的公司名称:");
String company=input.next();
numberArr[updateIndex]=number;
companyArr[updateIndex]=company;
System.out.println("修改成功");
}
}else if(id==4) {
printAll();
}
}
/**
* 查看所有快递信息
*/
public static void printAll() {
System.out.println("-------所有快递信息--------");
System.out.print("快递单号\t公司名称\t取件码");
for (int i=0;i<index;i++) {
System.out.print(numberArr[i]+"\t"+companyArr[i]+"\t"+codeArr[i]);
}
}
/**
* 根据快递单号查找快递,找到的下标如果为-1表示没找到
* @param number
* @return
*/
public static int findByNumber(String number) {
for(int i=0;i<index;i++) {
if(numberArr[i].equals(number)) {
return i;
}
}
return -1;
}
/**
* 删除快递
*/
public static void delExpress() {
System.out.print("请输入要删除的快递单号");
String number=input.next();
int delIndex=findByNumber(number);
if(delIndex==-1) {
System.out.println("为找到快递");
}else {
//删除
if(delIndex==99) {
index--;
}else {
//后面一个去覆盖前面的值
/**下面这段代码可以改写成,方法的形式
* for(int i=delIndex;i<index;i++) {
numberArr[i]=numberArr[i+1];
companyArr[i]=companyArr[i+1];
codeArr[i]=codeArr[i+1];
}
}
index--;
*/
del(delIndex);
System.out.println("删除成功!");
}
}
}
/**
* 删除的方法
* @param delIndex
*/
public static void del(int delIndex) {
if(delIndex!=numberArr.length-1) {
for(int i=delIndex;i<index;i++) {
numberArr[i]=numberArr[i+1];
companyArr[i]=companyArr[i+1];
codeArr[i]=codeArr[i+1];
}
}
index--;
}
/**
* 存快递
*/
//保证取件码不重复
public static void saveExpress() {
System.out.print("请输入快递单号");
String number=input.next();
System.out.print("请输入公司名称");
String company=input.next();
//自动生成取件码 100-900
//或者: int code=random.nextInt(900)+100;
//String code=random.nextInt(900)+100+"";
numberArr[index]=number;
companyArr[index]=company;
// if(isExist(code))
int code=0;
//while(isExist(code)){
//code=random.nextInt(900)+100;
do {
code=random.nextInt(900)+100;
}while(isExist(code)!=-1);
//保证取件码不重复
codeArr[index]=code;
index++;
System.out.println("快递已经存入,取件码是:"+code);
}
//判断取件码是否重复
public static int isExist(int code) {
for(int i=0;i<index;i++) {//遍历循环取件码数组
if(codeArr[i]==code){
return i; //判断是否重复
}
} //不要写成static boolean 而应该写成static int
return -1;
}
}