任务描述:

​ 疫情期间为了减少人员接触,很多小区在快递的配送流程中,加入了快递柜。快递柜中内置了一套快递管理系统,包含的功能:

  1. 快递录入(快递员)

    • 柜子位置(系统产生)
    • 快递单号
    • 快递公司
    • 取件码(系统产生)
  2. 快递取出(普通用户)
    • 输入取件码:显示快递信息 和 在哪个柜子中。
  3. 快递管理
    • 删除快递
    • 修改快递
    • 查看所有快递

主要类:

实现快递员的一系列操作(PackageIn类)
private static int[][] nums = new int[10][10];//快递位置
private static String number;//快递单号
private static String company;//快递公司
private static String code;//取件码
private boolean flag = true;
private static Object[][] ob = new Object[101][4];//二维对象数组用来存储快递的所有信息
private static int count = 0;//快递个数
private static int i = 0;
private static int j = 0;
实现普通用户的操作(PackageOut类)
public class PackageOut extends PackageIn{public PackageOut() {// TODO Auto-generated constructor stubsuper();}
}
用户操作开始菜单(View类)
public class View {public static int menu() {Scanner input = new Scanner(System.in);System.out.println("请先输入您的身份序号:\n"+ "1,快递员\n"+ "2,普通用户\n"+ "0,退出");String courier = input.nextLine();int menu = -1;try {menu = Integer.parseInt(courier);} catch (Exception e) {// TODO: handle exception}if (menu<0 || menu>2) {System.out.println("输入错误,请重新输入~");return menu();}return menu;}public static void exit() {System.out.println("感谢您使用本系统,再见~~~");}
}
用户选择处理(Choose类)
public class Choose {public static void choice() {int menu = View.menu();PackageOut p1 = new PackageOut();if (menu == 1) {//执行快递员操作选项p1.courier();}else if (menu == 2) {//执行普通用户操作选项p1.incode();}else {//程序退出View.exit();}}
}
整个程序的入口
public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("欢迎您使用本系统~~~");Choose.choice();}

主要功能的实现:

系统随机产生位置和取件码
public static void setst() {Random random = new Random();boolean fg = true;while (fg) {i = random.nextInt(10);j = random.nextInt(10);if (nums[i][j]==0) {nums[i][j] = 1;fg = false;}}//将随机产生的整型转化为字符串String a = String.valueOf(random.nextInt(10));String b = String.valueOf(random.nextInt(10));String c = String.valueOf(random.nextInt(10));String d = String.valueOf(random.nextInt(10));String e = String.valueOf(random.nextInt(10));String f = String.valueOf(random.nextInt(10));code = a+b+c+d+e+f;ob[count][0] = nums[i][j];ob[count][1] = code;ob[count][2] = number;ob[count][3] = company;System.out.println("该快递的位置是第"+(i+1)+"排,第"+(j+1)+"列"+",取件码为:"+code+",快递单号为:"+number+",快递公司是:"+company);count++;}
获取快递员录入的快递单号
public String numb() {Scanner input = new Scanner(System.in);String number = null;try {System.out.println("快递单号(11位):");number = input.nextLine();} catch (Exception e) {// TODO: handle exception}if (number.length()!=11) {System.out.println("快递单号错误,请重新输入!");return numb();}for (int i = 0; i < count; i++) {if (number .equals(ob[i][2])) {System.out.println("快递单号重复,请确认后重新输入!");return numb();}}return number;}
获取快递员录入的快递公司
public String comp() {Scanner input = new Scanner(System.in);try {System.out.println("快递公司:");company = input.nextLine();} catch (Exception e) {// TODO: handle exceptionSystem.out.println("输入错误,请重新输入!");return comp();}return company;}
快递员操作主界面
public void courier () {Scanner input = new Scanner(System.in);System.out.println("请选择您要进行的操作:\n"+ "1,存放一个快递\n"+ "2,查询所有快递\n"+ "3,修改快递信息\n"+ "0,退出");int menu = 0;try {menu = input.nextInt();   } catch (Exception e) {// TODO: handle exception}if (menu == 3) {//修改modify();}else if (menu == 2 ) {   //查询queryall();}else if (menu == 1) {//录入insert();}else if (menu == 0) {System.out.println("程序退出!\n");Choose.choice();}else {System.out.println("输入错误,请重新输入~~~");courier();}}
快递员存放快递
public void insert() {System.out.println("请输入快递单号和快递公司:");//获取快递单号和快递公司PackageIn.number = numb();PackageIn.company = comp();//系统产生位置和取件码setst();//是否继续存放couriercontinue();}
选择是否继续存放
public void couriercontinue() {//判断是否继续存放Scanner input = new Scanner(System.in);System.out.println("是否继续存放?输入1继续,输入2返回上一级菜单,输入0将退出~~~");int inner = -1;try {inner = input.nextInt();} catch (Exception e) {// TODO: handle exception}if (inner == 1) {//继续存放insert();}else if (inner == 2) {//返回选择的菜单courier();}else if (inner == 0) {//程序正常退出System.out.println("程序退出!"+ "\n");Choose.choice();}else {System.out.println("输入错误,请重新输入~~~");couriercontinue();}}
快递员进行修改操作
public void modify() {Scanner input = new Scanner(System.in);if (count == 0) {System.out.println("柜中没有快递,无法修改!将返回上一级菜单~~~");courier();}else {System.out.println("请输入需要修改的序号\n"+ "1,快递单号\n"+ "2,快递公司\n"+ "0,返回上一级");int menu = 0;try {menu = input.nextInt();} catch (Exception e) {// TODO: handle exception}if (menu == 1) {//修改订单号newNumb();modifycontinue();}else if (menu == 2) {//修改快递公司newComp();modifycontinue();}else if (menu == 0) {//返回courier();}else {System.out.println("输入错误,请重新输入");modify();}}}
修改订单号
public void newNumb() {Scanner input = new Scanner(System.in);flag = true;nN:while (flag) {System.out.println("请输入修改前的订单号:");String number1 = input.nextLine();for (int i = 0; i < count; i++) {if (number1.equals(ob[i][2])) {System.out.println("请输入新的订单号:");ob[i][2] = input.nextLine();break nN;}}System.out.println("订单号不存在!请重新输入~~~");}}
修改公司
public void newComp() {Scanner input = new Scanner(System.in);flag = true;nC:while (flag) {System.out.println("请输入修改前的快递公司:");String number1 = input.nextLine();for (int i = 0; i < count; i++) {if (number1.equals(ob[i][3])) {System.out.println("请输入新的快递公司:");ob[i][3] = input.nextLine();break nC;}}System.out.println("快递公司不存在!请重新输入~~~");}}
选择是否继续修改
public void modifycontinue() {Scanner input = new Scanner(System.in);System.out.println("是否继续修改?输入1继续,输入2返回上一级菜单,输入0将退出~~~");int inner = -1;try {inner = input.nextInt();} catch (Exception e) {// TODO: handle exception}if (inner == 1) {//继续修改modify();}else if (inner == 2) {//返回选择的菜单courier();}else if (inner == 0) {//程序正常退出System.out.println("程序退出!"+ "\n");Choose.choice();}else {System.out.println("输入错误,请重新输入~~~");modifycontinue();}}
快递员查询所有快递
public void queryall() {if (count == 0) {System.out.println("柜中没有快递!将返回上一级菜单\n");}else {System.out.println("柜中一共有"+count+"个快递,快递信息分别是:");for (int i = 0; i < count; i++) {System.out.println("快递单号为:"+getOb()[i][2]+",其快递公司是:"+getOb()[i][3]);}System.out.println();}courier();}
普通用户取快递
public void incode() {Scanner input = new Scanner(System.in);if (getCount() == 0) {System.out.println("没有快递待取,程序将退出!");Choose.Choice();}else {System.out.println("请输入取件码:");String code2;try {code2 = input.nextLine();out(code2);} catch (Exception e) {// TODO: handle exceptionSystem.out.println("输入有误!请重新输入~~~"+ "\n");incode();}Choose.choice();}
}
//取出快递
public void out(String code) {String code1;//将对象数组中的对象转化为字符串code1 = (String) getOb()[0][1];hh:for (int i = 0; i < getCount(); i++) {code1 = (String) getOb()[i][1]; if (code.equals(code1)) {System.out.println("您的快递在第"+(getI()+1)+"排,第"+(getJ()+1)+"列,快递单号为:"+getOb()[i][2]+",快递公司是"+getOb()[i][3]+"的快递~~~");//快递取出后,顺序前推,若是最后则直接置空delete(i);System.out.println("程序正常退出!\n"+ "\n");break hh;}}
}
以上就是整个小区快递系统的主要框架,如有任何疑问或者建议,可与鄙人私聊。

谢谢浏览!!!

(示例一)功能简单的小区快递管理系统(二维数组存储数据)相关推荐

  1. php 二维数组中去重,PHP实现二维数组去重功能示例

    PHP实现二维数组去重功能示例 发布于 2017-08-07 21:05:17 | 68 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Prep ...

  2. 为某个酒店编写程序:酒店管理系统,模拟订房、退房、打印所有房间状态等功能。 1、该系统的用户是:酒店前台。 2、酒店使用一个二维数组来模拟。“Room[][] roo

    代码 房间类 package com.bjpowernode.javase.day23homework; //每一个房间Room应该有:房间编号.房间类型.房间是否空闲 public class Ro ...

  3. 【java进阶06:数组】使用一维数组模拟栈数据结构 使用二维数组模拟酒店,酒店管理系统 Arrays工具类 冒泡排序算法、选择排序算法、二分法

    目录 数组 二维数组 总结 作业 Arrays工具类 数组 数组总结 及 静态初始化一维数组 /* Array:1.java语言中的数组是一种引用数据类型,不属于基本数据类型,数组的父类是Object ...

  4. php 数组与数组之间去重,PHP开发中一维数组与二维数组去重功能实现教程

    本篇文章讲述了PHP实现一维数组与二维数组去重功能示例.希望对在php学习和开发的同学有所帮助! 数组中重复项的去除 一维数组的重复项: 使用array_unique函数即可,使用实例如下: ? $a ...

  5. C#泛型列表List实现二维数组的功能(令附C#泛型列表List基本用法总结)

    在决定使用 List<T> 还是使用 ArrayList 类(两者具有类似的功能)时,记住 List<T> 类在大多数情况下执行得更好并且是类型安全的. 如果对 List< ...

  6. 二维数组递归算法c语言,C语言课程设计--二维数组的按行求和及递归函数的编写简单家庭财务管理程序的设计.doc...

    成 绩 评 定 表 学生姓名李艳坤班级学号专 业通信工程课程设计题目C语言课程设计评 语 组长签字: 成绩 日期 20 年 月 日 课程设计任务书 学 院信息科学与工程通信工程学生姓名班级学号课程设计 ...

  7. python课程设计矩阵对角线之和_Python二维数组实现求出3*3矩阵对角线元素的和示例...

    Python二维数组实现求出3*3矩阵对角线元素的和示例 题目:求一个3*3矩阵对角线元素之和. 程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出. def two_dime ...

  8. 使用二维数组,实现五子棋功能

    使用二维数组,实现五子棋功能 注意:我们使用的是纯面向过程的思想!!! 我们先来看一下棋盘长什么样 知道了模样,我们还需要知道程序需要哪些功能,根据这些功能写出相应的方法.那既然用到方法,我们需要确定 ...

  9. 首先声明两者所要实现的功能是一致的(将多维数组降位一维)。这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平)。两者的区别在于返回拷贝(copy)还是返回视图(view)

    首先声明两者所要实现的功能是一致的(将多维数组降位一维).这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平).两者的区别在于返回拷贝(copy)还是返回视图(view), ...

最新文章

  1. 随便说说---java初级学习路线
  2. Greenplum 优化CASE - 对齐JOIN字段类型,使用数组代替字符串,降低字符串处理开销,列存降低扫描开销...
  3. Tornado 高并发源码分析之六---异步编程的几种实现方式
  4. 红帽和Mirantis宣告结束OpenStack合作
  5. KubeEdge 初测
  6. Linux中b设备是什么,linux-将新设备添加到b??trfs卷中,但是可用...
  7. SPOJ VLATTICE Visible Lattice Points(莫比乌斯反演)题解
  8. spider RPC过滤器
  9. 《王亡於江上》之周昭王姬瑕
  10. HTML 音乐播放器界面
  11. FPGA仿锆石代码风格组合电路时序电路严格分开之(一)8通道16位AD采集
  12. html加载富文本_HTML基础
  13. 微信小程序 车轮之 滑动删除
  14. luajit开发文档wiki中文版(四) LuaJIT 内部结构
  15. 基于点线特征的激光雷达+单目视觉里程计
  16. android 触摸屏监控,如何实现在安卓手机上对PLC进行监控-工业支持中心-西门子中国...
  17. Oracle分区表及分区索引的创建
  18. 【思考】开学第一课--大学的终结,终生学习
  19. 《Java150道面试题全集》
  20. linux 查看有哪些ip正在连接

热门文章

  1. 使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站
  2. linux虚拟网口不同vlan,管理交换机虚拟局域网VLAN的4种划分
  3. ReportMachine不能打开打印机属性设置的解决方法
  4. NT、WDM、WDF驱动概念
  5. 最简单安全有效的防盗技术和防脱机外挂技术。研发部门可以借鉴使用。
  6. python--计数算法
  7. 函数式编程实例WordCount(林子雨老师慕课代码) 由于文件引入的问题之前报过Exception in thread “main“ java.lang.NullPointerExcept(已解决)
  8. Win7简易模拟Win10的开始页面
  9. 解决IIS管理器的网站可访问但ftp无法访问的问题
  10. 身份证验证信息15位或18位