0
点赞
收藏
分享

微信扫一扫

快递 E 栈(控制台简易版)系统(数组)

双井暮色 2022-02-19 阅读 67
java

写再前面:
1,本文为Java学习第五部分第一阶段所有项目回顾(快递e站部分-对应Java体系第一部分第一阶段-04-数组任务)
2,整体项目系列博客(包括整体快递e站系列)
3,完整的Java体系链接(比你想的更多的Java内容)

需求介绍:

任务一:角色切换(快递员和普通用户)

在这里插入图片描述
   快递员功能:存快递,删除快递,修改快递,查看所有快递
   普通用户功能:取快递

任务二:存快递

在这里插入图片描述

任务三:删除快递

在这里插入图片描述

任务四:修改快递

在这里插入图片描述

任务五:查看所有快递

在这里插入图片描述

任务六:取快递

在这里插入图片描述

涉及到的知识点:

Java基础语法(变量,数据类型,标识符,数据类型转换,方法,运算符),流程控制(API,Scanner类,执行结构),数组

代码运行截图:

任务一:

在这里插入图片描述

任务二:

在这里插入图片描述

任务三:

在这里插入图片描述

任务四:

在这里插入图片描述

任务五:

在这里插入图片描述

任务六:

在这里插入图片描述

思路分析:

   这个比较简单,写再一个类里就可以了。
想一想,如果要完成这个功能,那么第一步就是要定义变量对不对。开始要输入数字,那就需要Scanner方法。要输入取件码,就要给取件码定义一个变量,取件码不能只有一个(要一个快递一个取件码)那么取件码就是数组类型的了。取件码也不能凭空从石头里崩出来,肯定需要我们自己定义,那么我们就需要定义随机数,生成取件码了。快递公司,快递公司,还需要什么,公司名称,这个只有一个公司负责快递就太搞笑了。所以这个也是数组类型的。快递单号就不解释了,取过快递的都懂。最后再定义一个数组下标,方便存快递和计数快递个数。
所以第一步很明确了:
在这里插入图片描述

对应的流程图

在这里插入图片描述

代码:

import java.util.Random;
import java.util.Scanner;

import javax.imageio.stream.ImageInputStream;

public class Task00_ZongHeLianXi {
	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];// 取件码
	public static int index = 0;// 数组下标,快递柜中有多少个快递
	
	public static Random random = new Random();// 定义随机数
	/**
	 * 快递 E 栈训练任务(控制台简易版)
	 * 总需求:
		 * 1. 角色切换(快递员和普通用户)
		 * 2. 存快递
		 * 3. 删除快递
		 * 4. 修改快递
		 * 5. 查看所有快递
		 * 6. 取快递
	 * @param args
	 */
	public static void main(String[] args) {
		demo00_startMenu();
	}
	
	/**
	 * 角色切换功能,总方法
	 */
	public static void demo00_startMenu() {
		TuiChu:do {
			System.out.println("--------欢迎使用新职课快递柜----------");
			System.out.println("请输入您的身份:1-快递员 2-用户 0-退出");
			int id = input.nextInt();
			
			switch (id) { // 感觉这里用switch更好
			case 1:
				// 快递员--展示快递员的菜单
				demo01_deliverymanMenu();
				break;
			case 2:
				// 普通用户
				demo01_userMenu();
				break;
			case 0:
				System.out.println("谢谢使用,程序退出");
				break TuiChu;
			default:
				System.out.println("请按照指示输入");
				break;
			}
			
			
		}while(true);	
	}
	
	/**
	 * 用户菜单
	 */
	public static void demo01_userMenu() {
		System.out.println("请输入取件码");
		int code = input.nextInt();
		int codeIndex = demo02_isExist(code);
		if (codeIndex == -1) {
			System.out.println("未找到快递");
		} else {
			del(codeIndex);
			System.out.println("取件成功");
		}
	}
	
	/**
	 * 快递员菜单
	 */
	public static void demo01_deliverymanMenu() {
		System.out.println("请选择操作:1-存快递 2-删除快递 3-修改快递信息 4-查看所有快递");
		int id = input.nextInt();
		switch (id) { 
		case 1:
			demo02_saveExpress();
			break;
		case 2:
			demo02_delExpress();
			break;
		case 3:
			demo02_updateExpress();
			break;
		case 4:
			printAll();
			break;
		default:
			System.out.println("请按照指示输入");
			break;
		}
	}
	
	/**
	 * 存快递
	 */
	public static void demo02_saveExpress() {
		System.out.println("请输入快递单号");
		String number = input.next();
		System.out.println("请输入公司名称");
		String company = input.next();
		
		// 自动生成取件码 100-900
		int code = random.nextInt(900)+100;
		// 保证取件码不重复
		do {
			code = random.nextInt(900)+100;
		}while(demo02_isExist(code)!=-1);
		
		numberArr[index] = number;
		companyArr[index] = company;
		codeArr[index] = code;
		index++;
		System.out.println("快递已存入,取件码是:"+code);
	}
	
	/**
	 * 删除快递
	 */
	public static void demo02_delExpress() {
		System.out.println("请输入要删除的快递单号");
		String number = input.next();
		int delIndex = findByNumber(number);
		if (delIndex == -1) {
			System.out.println("未找到快递!");
		} else {
			del(delIndex);
			System.out.println("删除成功");
			
		}
	}
	
	/**
	 * 修改快递
	 */
	public static void demo02_updateExpress() {
		System.out.println("请输入要修改的快递单号");
		String number = input.next();
		int updateIndex = findByNumber(number);
		
		if (updateIndex == -1) {
			System.out.println("未找到快递");
		} else {
			System.out.println("请输入新的快递单号");
			number = input.next();
			System.out.println("请输入新的公司名称");
			String company = input.next();
			numberArr[updateIndex]=number;
			companyArr[updateIndex]=company;
			System.out.println("修改成功");
		}	
	}
	
	/**
	 * 查看所有快递
	 */
	public static void printAll() {
		System.out.println("-----所有快递信息-------");
		System.out.println("快递单号\t公司名称\\t取件码");
		for (int i = 0; i < index; i++) {
			System.out.println(numberArr[i]+"\t"+companyArr[i]+"\t"+codeArr[i]);
		}
	}
	
	/**
	 * 删除方法
	 * @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--;
	}
	
	
	/**
	 * 根据快递单号查找
	 * @param number 找到的下标,-1代表未找到
	 * @return
	 */
	public static int findByNumber(String number) {
		for (int i = 0; i < index; i++) {
			if (numberArr[i].equals(number)) {
				return i;
			}
		}
		return -1;
	}

	
	/**
	 * 判断取件码是否重复
	 * @param code
	 * @return
	 */
	public static int demo02_isExist(int code) {
		for (int i = 0; i < index; i++) {// 循环遍历取件码
			if (codeArr[i]== code) {// 判断是否重复
				return i;
			}
		}
		return -1;
	}
}
举报

相关推荐

0 条评论