当前位置:网站首页>快递e栈——数组篇小型项目
快递e栈——数组篇小型项目
2022-06-27 19:20:00 【continueLR】
目录
今天的任务,是完成快递 E 栈(控制台简易版)系统。 经过了变量,流程控制,数组三部分的学习,让我们通过一个小项目来巩 固这些技能点吧!可不要小看我们之前学习的这些内容,现在我们足以通过这 些知识点完成一版简易的,基于控制台版本的快递 E 栈,在完成的过程中,大 家既要掌握知识的应用,也要学习里面的业务逻辑,为我们之后更大的快递 E 栈系统实现做准备。
功能介绍:
1. 角色切换(快递员和普通用户

快递员功能:存快递,删除快递,修改快递,查看所有快递
普通用户功能:取快递
2. 存快递

3. 删除快递

4. 修改快递

5. 查看所有快递

6. 取快递

思路:
1:数组可以表示快递柜,利用遍历来查找快递,创建对象,相当于一个快递柜的存取。
2:switch循环适合一个一个展现的项目,在此项目中比for更适合作主循环
3:数组下标的特性,从0下标开始,无论有多少个下标都不可能=-1,利用-1来判断对象是否创建
踩坑原因:
不知道contentEquals()方法和Math.random()方法
代码实现
package com.java.bean;
import java.util.Scanner;
public class ExpressArray {
public static void main(String[] args) {//主方法
Scanner scan = new Scanner(System.in);//控制台接收数据
String[] OrderId = new String[10];//快递单号
String[] comName = new String[10];//快递名称
int[] codeGet = new int[10];//取件码
System.out.println("欢迎使用新职课快递柜======");
System.out.println("请输入你的身份信息: 1.快递员 2.用户");
int num = scan.nextInt();//接收整数型num1
switch (num) {
case 1://快递员
System.out.println("请选择: 1.存快递 2.删除快递 3.修改快递信息 4.查看所有快递信息");
int num2 = scan.nextInt();//接收整数型num2
switch (num2) {
case 1: //存快递
int index1 = -1;//给定index1一个-1的值,用于判断快递柜是否已满,循环遍历
for (int i = 0; i < OrderId.length; i++) {//遍历数组,String类型数组初始值为null
if (OrderId[i] == null) {//查看有没有null,如果存了对象就不是null了
index1 = i;//如果有null,就把他赋值给index
break;//结束语句
}
}
if (index1 == -1) {//如果index还是-1说明i没有给index赋值,证明所有数组都不是null
System.out.println("快递柜已满,无法继续存入");
} else {//既然能走到else,说明有数组为null,那么久可以给这个数组下标重新赋值
System.out.println("请输入快递单号:");
String number1 = scan.next();//输入number1
OrderId[index1] = number1;//将数组OrderId[index1]下标赋值number1
System.out.println("请输入快递公司:");
String company = scan.next();//输入company
comName[index1] = company;//将comName[index1]下标赋值company
int code = (int) (Math.random() * 100000) + 100000;//int类型的取件码code赋值一个1000以内的数
codeGet[index1] = code;//上面code是个随机六位数,把codeGet[index1]下标赋值给他
System.out.println("快递已经存入,取件码是" + code);//输出取件码
break;//结束语句
}
break;
case 2: {//删除快递
System.out.println("请输入您要删除的快递单号");
String number2 = scan.next();//接收一个string类型的数据,number2
int index2 = -1;//同样先给定index2下标一个-1的值,查找跟number2相同的对象
for (int i = 0; i < OrderId.length; i++) {//遍历数组后,如果有跟number相同的对象把他赋值给index下标
if ((number2).equals(OrderId[i])) {//如果i下标的快递单号有跟number2相同的,则找到目标
index2 = i;//找到目标将i赋值给index
break;//结束if语句
}
}
if (index2 == -1) {//如果index还是-1说明i没有给index2赋值,证明所有下标的数组数据都不是number2
System.out.println("该快递单号不存在");
} else {//程序走到这里,说明index不是-1,number2已经找到。
OrderId[index2] = null;//但index下标下的三个数组都是初始值,说明快递已经被删除
comName[index2] = null;
codeGet[index2] = 0;
System.out.println("已删除改快递单号");
}
break;
}
case 3: {//修改快递
System.out.println("请输入您要修改的快递单号");
String number3 = scan.next();//接收一个string类型的数据,number2
int index3 = -1;//同样先给定index3下标一个-1的值,查找跟number3相同的对象
for (int i = 0; i < OrderId.length; i++) {
if ((number3).contentEquals(OrderId[i])) {
index3 = i;
break;
}
if (index3 == -1) {//如果index3还是-1说明i没有给index3赋值,证明所有下标的数组数据都不是number3
System.out.println("该快递单号不存在");
} else {//程序走到这里,说明index3不是-1,number3已经找到
System.out.println("请输入新的快递单号");
String number4 = scan.next();//接收一个string类型的数据,number4
OrderId[index3] = number4;//将数组OrderId[index3]下标赋值number4
System.out.println("请输入新的快递公司");
String newCompany = scan.next();//接收一个string类型的数据,newCompan
comName[index3] = scan.next();//将comName[index3]下标赋值company
int newCodeGet = (int) (Math.random() * 100000) + 100000;//随机数创建
codeGet[index3] = newCodeGet;//将六位随机数赋值给新的取件码newCodeGet
}
break;
}
}
case 4: {//查看所有快递
int index4 = -1; //判断快递柜是否全空
for (int i = 0; i < OrderId.length; i++) {//遍历数组
if (OrderId[i] != null) {//只要有一个下标
index4 = 0;//给index赋值0
break;//结束语句
}
}
if (index4 == -1) {//如果index4还是-1说明i没有给index4赋值,证明所有下标的数组数据都是null
System.out.println("快递柜为空,暂无快递");
} else {//程序走到这里,说明index4不是-1,index4已经赋值0
System.out.println("所有快递信息如下:");
System.out.println("快递单号\t公司名称\t取件码");
for (int i = 0; i < OrderId.length; i++) {//遍历数组输出新的取件码信息
System.out.println(OrderId[i] + "\t" + comName[i] + "\t" + codeGet[i]);
}
}
}
break;//结束循环
}
case 2://用户
System.out.println("请输入取件码");
int codeUser = scan.nextInt();//接收一个int类型的数据,codeUser
int index = -1;//匹配取件码
for (int i = 0; i < OrderId.length; i++) {
if (codeGet[i] != 0 && codeGet[i] == codeUser) {
index = i;
break;
}
}
if (index == -1) {//如果index还是-1说明i没有给index4赋值,即没有匹配到
System.out.println("未找到该快递");
} else {//程序走到这里,说明已经匹配上
OrderId[index] = null;//取件码为null,说明被取走
System.out.println("你已取件成功");
}
break;
}
}
}
边栏推荐
- Prospects for enterprise digitalization (38/100)
- 华为伙伴暨开发者大会2022开源时刻全纪录
- mime. Type file content
- Cerebral cortex: predicting children's mathematical skills from task state and resting state brain function connections
- BTC和ETH重新夺回失地!引领市场复苏?加密将步入“冰河时代”!
- 今晚战码先锋润和赛道第2期直播丨如何参与OpenHarmony代码贡献
- 数据平台调度升级改造 | 从Azkaban 平滑过度到Apache DolphinScheduler 的操作实践
- 基于微信小程序的警局报案便民服务平台#毕业设计
- Here are 12 commonly used function formulas for you. All used ones are good
- 灵活的IP网络测试工具——— X-Launch
猜你喜欢

Show the comprehensive strength of strong products, and make the first show of 2022 Lincoln aviator in Southwest China

释放开源数据库创新力量 | 【甘肃】openGauss Meetup圆满结束

划重点!国产电脑上安装字体小技巧

VMware vSphere esxi 7.0 installation tutorial

今晚战码先锋润和赛道第2期直播丨如何参与OpenHarmony代码贡献

KDD 2022 | 图“预训练、提示、微调”范式下的图神经网络泛化框架

基于微信小程序的警局报案便民服务平台#毕业设计

“好声音“连唱10年,星空华文如何唱响港交所?

SQL必需掌握的100个重要知识点:使用函数处理数据

覆盖接入2w+交通监测设备,EMQ 为深圳市打造交通全要素数字化新引擎
随机推荐
SQL Server for循环用法
AI 绘画极简教程
互联网 35~40 岁的一线研发人员,对于此岗位的核心竞争力是什么?
A set of system to reduce 10 times the traffic pressure in crowded areas
划重点!国产电脑上安装字体小技巧
Prospects for enterprise digitalization (38/100)
Codeforces Round #721 (Div. 2)
Codeforces Round #719 (Div. 3)
基于微信小程序的警局报案便民服务平台#毕业设计
Save method of JPA stepping pit series
Full record of 2022 open source moment at Huawei partners and Developers Conference
分享|智慧环保-生态文明信息化解决方案(附PDF)
Love math experiment | phase 9 - intelligent health diagnosis using machine learning method
Codeforces Round #717 (Div. 2)
BTC和ETH重新夺回失地!引领市场复苏?加密将步入“冰河时代”!
Very comprehensive dolphin scheduler installation and use documents
Shuttle hides the return button of the AppBar
Data platform scheduling upgrade and transformation | operation practice from Azkaban smooth transition to Apache dolphin scheduler
1029 Median
oss上传调用的是哪个方法