快递柜
前言
这是针对基础部分的综合练习,需要了解的知识有变量、数据类型、数组。
取快递是现在大部分人都会做的事情,那么小白该怎么写出一个简单的取快递的程序呢?那么请按照以下功能条件来写出一个简单的快递柜小项目吧。
一、项目介绍
1.功能介绍
- 身份选择(快递员和普通用户)
2.存快递
3.删除快递
4.修改快递信息
5.查看快递信息
6.取快递
注意:因为快递柜是一个系统,那么完成每一步操作后,都会返回到欢迎界面。
2.注意点
随机数:Math.random()
1.生成从0到n的随机整数 即返回值[0,n]
int number=(int)(Math.random()*(n+1);
2.生成从a到b的随机整数 即返回值[a,b]
int num=a+(int)(Math.random()*(b-a+1));
二、相关代码
/*
需求:身份:1 快递员 2 用户
1.快递员=》功能:1.存快递 2.删除快递 3.修改快递 4.查看快递
2.用户=》功能:1.取快递
*/
import java.util.Scanner;
public class kd {
public static void main(String[] args) {
//欢迎界面和提示:输入角色
//定义数组,存放快递信息
//创建数组,存放取件码
int[] code=new int[50];
//存放快递单号
String id[] = new String[50];
//存放快递公司名称
String[] company = new String[50];
//进入快递E栈
while (true){
System.out.println("====欢迎来到快递E栈====");
System.out.println("请输入你的身份:1-快递员 2-用户");
Scanner input = new Scanner((System.in));
int role = input.nextInt();
if (role==1){
System.out.println("请选择操作:1-存快递 2-删除快递 3-修改快递信息 4-查看所有快递");
int num=input.nextInt();
if (num==1){
//存快递操作
System.out.println("请输入快递单号");
String sid=input.next();
System.out.println("请输入公司名称");
String scompany=input.next();
//Math.random():产生一个随机数[0.0,1.0)
//(数据类型)(Math.random()*(最大值-最小值)+最小值)
int scode=(int)(Math.random()*(1000-100)+100); //生成100~1000之间的随机数
//首先判断是否快递柜存满
int index=-1;//数组下标暂为-1,若快递柜没满,那么赋值给index,即需要存的快递为index(因为数组下标从0开始);
for (int i=0;i<id.length;i++){
if (id[i]==null){
index=i;
break;
}
}
//
if(index==-1){
System.out.println("快递柜已满");
}else {
//即上述for查询中,快递柜index已改变,快递柜未满,那么就添加数据
id[index]=sid; //快递单号
company[index] = scompany; //快递公司
code[index]=scode; //取件码
//添加成功之后,显示成功
System.out.println("快递添加成功,"+"取件码:"+scode);
}
}else if (num==2){
//删除快递
System.out.println("请输入要删除的快递单号");
String sid2 = input.next();
//进行数据匹配
int index=-1;
for (int i=0;i<id.length;i++){
//判断单号是否为空,且输入和数组中的数据是否相等
if (id[i].equals(sid2) && id[i]!=null){
//符合数据
index=i;
break;
}
}
//进行判断操作=》是否删除
if (index==-1){
System.out.println("没有该快递信息");
}//存在该快递信息
else {
//符合数据库,进行删除和移动位置操作
//移位(因为需要删除该index 上的数据,且不用index占据的位置,所以id.length-1)
//用后面的覆盖前面的内容
for (int i=index;i<id.length-1;i++){
id[i]=id[i+1];
code[i]=code[i+1];
company[i]=company[i+1];
}
//把最后的位置设置为空,因为都向前移动一位(id.length-1是因为现存数组长度比原数组长度少1,所以需要-1)
id[id.length-1]=null;
company[company.length-1]=null;
code[code.length-1]=0;
System.out.println("删除成功");
}
}else if (num==3){
//修改快递信息
System.out.println("请输入要修改的快递单号");
String sid3=input.next();
//循环遍历单号
int index=-1;//用该变量来匹配是否有对应的快递单号
for (int i=0;i<id.length;i++){
//存在该单号
if (id[i].equals(sid3) && id[i]!=null){
index=i;
break;
}
}
//操作
if (index==-1){
System.out.println("没有该快递信息");
}
else {
//存在该快递,那么就开始修改
System.out.println("请输入新的快递单号");
String sid4=input.next();
id[index]=sid4; //赋值
System.out.println("请输入新的公司名称");
String scompany2=input.next();
company[index]=scompany2;
//取件码不变,输出显示
System.out.println("修改成功!");
}
}else if (num==4){
//查看快递
//1.判断是否数组内容为空
int index=-1; //用该变量来查看数组是否为空
System.out.println("所有快递信息如下:");
for (int i=0;i<id.length;i++){
if (id[i]!=null && company[i]!=null && code[i]!=0){
//该数组不为空
System.out.println("快递单号:"+id[i]+",快递公司:"+company[i]+",取件码:"+code[i]);
index=i; //赋值,并继续
}else if (index==-1){
System.out.println("快递柜没有快递");
}
}
}else {
System.out.println("请输入正确的编号");
}
}
else if(role==2){
System.out.println("请输入取件码");
int scode2=input.nextInt();
//循环遍历
int index=-1;
for (int i=0;i<id.length;i++){
if (code[i]==scode2 && code[i]!=0){
index=i;
break;
}
}
//操作
if (index==-1){
System.out.println("没有该快递信息");
}
else {
//存在该快递,取件
id[index]=null;
code[index]=0;
company[index]=null;
System.out.println("取件成功");
}
}else {
System.out.println("请输入正确的选项");
}
}
}
}