精华内容
下载资源
问答
  • windows下命令框执行任务卡解决办法 1.现象:命令框执行任务时,不知什么情况下就卡住了,需要敲回车才能继续执行并输出。 2.解决办法:设置命令框不使用快速编辑模式,但是设置后就不能做选中字符操作。 **...

    windows下命令框执行任务卡住的解决办法

    1.现象:命令框执行任务时,不知什么情况下就卡住了,需要敲回车才能继续执行并输出。
    2.解决办法:设置命令框的不使用快速编辑模式,但是设置后就不能做选中字符操作。
    在这里插入图片描述
    在这里插入图片描述
    **注意:**如果需要选中内容复制就必须要打开快速编辑模式

    还可以设置默认值,命令框右键菜单里选择默认只就可以设置默认不选择该选项。
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 一个仿安卓5.0任务管理器最近打开任务卡片效果自定义布局。项目地址:https://github.com/ZieIony/MaterialRecents 效果图:如何使用:创建实例  android:padding="16dp"  android:id="@ id/recents"  ...
  • 目录 一,快递管理训练任务 描述 说明 dao层 ...还记得之前快递管理吗?...【任务卡_02-面向对象_第6节 异常处理】基本内容相同,只是在此基础之上,使用HashMap进行改进,涉及到修改地方如下: dao层

    目录

    一,快递管理训练任务

    描述

    说明

    dao层

    view层

    bean层

    Main函数

    代码

    Main

    bean.Express

    dao.ExpressDao

    view.View


    一,快递管理训练任务

    描述

    还记得之前的快递管理吗?学习了集合以后,使用集合来进行快递信息的 存储吧。

    说明

    此任务卡与@&再见萤火虫&【任务卡_02-面向对象_第6节 异常处理】基本内容相同,只是在此基础之上,使用HashMap进行改进,涉及到修改的地方如下:

    dao层

    1)属性:

    2)add方法

    3)findByNumber方法

    4)findByCode

    同上

    5)delete

    6)findAll

    view层

    1)printAll

    bean层

    1)添加属性

    Main函数

    部分数据类型可能对不上,根据提示修改就行。

     

    代码

    项目结构如下:

    :

    Main

    package main;
    
    import bean.Express;
    import dao.ExpressDao;
    import view.View;
    
    import java.util.Collection;
    
    public class Main {
        // 初始化视图对象
        private static View v = new View(); // 这样可以跨方法使用
        // 初始化dao对象
        private static ExpressDao dao = new ExpressDao();
        // 1,弹出身份选择菜单
        public static void main(String[] args) {
    
            m:while (true){
                int menu = v.menu();
                switch (menu){
                    case 0:
                        break m;
                    case 1:
                        gClient();
                        break;
                    case 2:
                        uClient();
                        break;
                }
            }
    
        }
    
        private static void uClient() {
            // 1,获得取件码
            int code = v.uMenu();
            // 2,根据取件码取出快递
            Express e = dao.findByCode(code);
            if(e == null){
                v.printNull();
            }else {
                v.success();
                v.printExpress(e);
                dao.delete(e);
            }
        }
    
        private static void gClient() {
            while (true){
                int menu = v.gMenu();
                switch (menu){
                    case 0:
                        return;
                    case 1:{
                        // 1,提示输入快递信息
                        Express e = v.insert();
                        // 2,此快递是否已经存储过
                        Express e2 = dao.findByNumber(e.getNumber());
                        // 3,存储快递
                        if(e2 == null){                 // 未存储过
                            dao.add(e);
                            v.printCode(e);
                        }else {                         // 单号重复
                            v.expressExist();
                        }
                        break;
                    }
                    case 2: {// 快递修改
                        // 1,提示输入快递信息
                        String number = v.findByNumber();
                        // 2,查找数据
                        Express e1 = dao.findByNumber(number);
                        // 3,打印快递信息
                        if(e1 == null){
                            v.printNull();
                        }else {
                            v.printExpress(e1);
                            // 4,提示修改
                            v.update(e1);               // 这里已经将快递的信息修改过了
                            dao.update(e1, e1);         // 这里只是为了强调 删除-修改的过程
                            v.printExpress(e1);
                        }
    
                        break;
                    }
                    case 3: {// 删除
                        // 1,输入快递单号
                        String number = v.findByNumber();
                        // 2,查找快递对象
                        Express e = dao.findByNumber(number);
                        if(e == null){
                            v.printNull();
                        }else {
                            v.printExpress(e);
                            int type = v.delete();
                            if(type == 1){
                                dao.delete(e);
                            }else {
                                v.success();
                            }
                        }
                        break;
                    }
                    case 4:{    // 查看所有
                        Collection<Express> data = dao.findAll();   // 从dao层获取数据
                        v.printAll(data);               // 在视图层显示
                        break;
                    }
                }
            }
        }
    }
    

    bean.Express

    package bean;
    
    import java.util.Objects;
    
    /**
     *
     */
    public class Express {
        private String number;  // 快递单号
        private String company; // 公司
        private int code;       // 取件码
        public int posX, posY;  // 快递所在快递柜中的位置
    
        // 构造方法
        public Express(String number, String company, int code) {
            this.number = number;
            this.company = company;
            this.code = code;
        }
    
        public Express() {
        }
    
        // getter/setter
    
        public String getNumber() {
            return number;
        }
    
        public String getCompany() {
            return company;
        }
    
        public int getCode() {
            return code;
        }
    
        public void setNumber(String number) {
            this.number = number;
        }
    
        public void setCompany(String company) {
            this.company = company;
        }
    
        public void setCode(int code) {
            this.code = code;
        }
    
        // 重写toString 方法
    
        @Override
        public String toString() {
            return "Express{" +
                    "number='" + number + '\'' +
                    ", company='" + company + '\'' +
                    ", code=" + code +
                    '}';
        }
    
        // 重写equals方法
    
        /**
         * 只要快递单号相同就认为快递相同
         * @param o
         * @return
         */
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Express express = (Express) o;
            return Objects.equals(number, express.number);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(code);
        }
    }
    

    dao.ExpressDao

    package dao;
    
    import bean.Express;
    
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Random;
    
    public class ExpressDao {
        boolean[][] cabinet = new boolean[10][];            // 二维数组表示快递柜
        HashMap<Integer, Express> data = new HashMap<>();   // HashMap代替二维数组表示快递柜
        Collection<Express> expresses = data.values();      // 存放所有的Express对象
        {
            for(int i = 0; i < 10; i++){
                cabinet[i] = new boolean[10];
            }
        }
        private Random random = new Random();               // 用于生成随机数
        private int size;   // 当前存储的快递数目(便于判断是否还有空位 否则在随机生成取件码时可能陷入死循环)
    
        /**
         * 用于存储快递
         * @param e
         * @return
         */
        public boolean add(Express e){
            if(this.size >= 100){
                return false;
            }
            // 1,随机生成两个0-9的下标
            int x = -1, y = -1;
            while (true){
                x = random.nextInt(10);
                y = random.nextInt(10);
                if(cabinet[x][y] == false){
                    break;                                  // 此位置未被占用
                }
            }
            // 2,判断取件码是否重复(最简单的 一个个对比)
            int code = randomCode();                        // 获得没有重复的取件码
            e.setCode(code);
            e.posX = x;                                     // 快递柜存放快递的位置
            e.posY = y;
            size++;                                         // 快递数目加一
            cabinet[x][y] = true;                           // 此位置已被占用
            data.put(code, e);                              // 添加键值对
            return true;
    
        }
        private int randomCode(){
            while (true) {
                int code = random.nextInt(900000) + 100000; // 范围(000000-899999)+1000000
                Express e = findByCode(code);
                if(e == null) { // 说明取件码未重复
                    return code;
                }
            }
    
        }
    
        /**
         * 快递员根据快递单号查询HashMap中存放的快递
         * @param number
         * @return
         */
        public Express findByNumber(String number){
            // 遍历HashMap中的Express对象 找到其快递单号相对应的那个对象并返回
            for(Express e : expresses) {
                if(e.getNumber().equals(number)) {
                    return e;
                }
            }
            return null;
        }
    
        /**
         * 根据取件码查询快递
         * @param code 取件码
         * @return 查询到结果 查询失败返回null
         */
        public Express findByCode(int code){
            for(Express e : expresses) {
                if(e.getCode() == code) {
                    return e;
                }
            }
            return null;
        }
    
        /**
         * 多余的操作 为了MVC更圆润
         * @param oldExpress
         * @param newExpress
         */
        public void update(Express oldExpress, Express newExpress){
            delete(oldExpress);
            add(newExpress);
        }
        public void delete(Express e){
            data.remove(e.getCode());
            cabinet[e.posX][e.posY] = false;
            size--;
        }
        public Collection<Express> findAll(){
            return expresses;
        }
    }
    

    view.View

    package view;
    
    import bean.Express;
    
    import java.util.Collection;
    import java.util.Scanner;
    
    /**
     * 视图层
     * 只负责展示视图 不包含其他任何逻辑
     */
    public class View {
        public Scanner input = new Scanner(System.in);
    
        /**
         * 获得用户的角色选择输入,并进入相应的功能
         * @return 返回功能码 1:管理原 2:普通用户 0:退出
         */
        public int menu(){
            System.out.println("根据提示输入功能序号:");
            System.out.println("1,管理员");
            System.out.println("2,普通用户");
            System.out.println("0,退出");
            String s = input.nextLine();
            int funcNum = -1;
            try{
                funcNum = Integer.parseInt(s);
            }catch (NumberFormatException e){   // 格式异常 递归继续获取功能码
                return menu();
            }
            if(funcNum < 0 || funcNum > 2){     // 功能码不合法
                return menu();
            }
            return funcNum;
        }
    
        /*
        -----------------------------------------------------------------
         */
    
        /**
         * 获得管理员输入的功能码
         * @return 管理员输入的合法功能码 1:录入 2:修改 3:删除 4:查看所有 0:退出
         */
        public int gMenu(){
            System.out.println("根据提示输入功能序号:");
            System.out.println("1,快递录入");
            System.out.println("2,快递修改");
            System.out.println("3,快递删除");
            System.out.println("4,查看所有快递");
            System.out.println("0,退出");
            String s = input.nextLine();
            int funcNum = -1;
            try{
                funcNum = Integer.parseInt(s);
            }catch (NumberFormatException e){   // 格式异常 递归继续获取功能码
                return gMenu();
            }
            if(funcNum < 0 || funcNum > 4){     // 功能码不合法
                return gMenu();
            }
            return funcNum;
        }
    
        /**
         * 1快递员录入信息
         * @return 返回包含了快递单号和快递公司的快递对象
         */
        public Express insert(){
            System.out.println("请根据提示输入快递信息:");
            System.out.print("请输入快递单号:");
            String number = input.nextLine();
            System.out.print("请输入快递公司:");
            String company = input.nextLine();
            Express e = new Express();
            e.setNumber(number);
            e.setCompany(company);
            return e;
        }
    
        /**
         * 2修改快递信息
         * @param e
         */
        public void update(Express e){
            System.out.print("请输入新的快递单号:");
            String number = input.nextLine();
            System.out.print("请输入新的快递公司");
            String company = input.nextLine();
            e.setNumber(number);
            e.setCompany(company);
        }
    
        /**
         * 3询问是否删除
         * @return 给出快递管理员的选择 1:删除 2:取消
         */
        public int delete(){
            System.out.println("确认是否删除:");
            System.out.println("1,确认删除");
            System.out.println("2,取消删除");
            System.out.println("0,退出");
            String s = input.nextLine();
            int num = -1;
            try {
                num = Integer.parseInt(s);
            }catch (NumberFormatException e){
                return delete();
            }
            if(num < 0 || num > 2){
                return delete();
            }
            return num;
        }
    
        /**
         * 4遍历显示所有快递信息
         * @param es
         */
        public void printAll(Collection<Express> es){
            int count = 0;
            for(Express e : es) {
                count++;
                System.out.print("第" + (e.posX + 1) + "排," + (e.posY + 1) + "列, ");
                printExpress(e);
            }
            if(count == 0){
                System.out.println("暂无快递信息");
            }
        }
    
        /**
         * 提示用户输入快递单号
         * @return
         */
        public String findByNumber(){
            System.out.println("请根据提示输入快递信息:");
            System.out.print("请输入需要操作的快递单号:");
            String number = input.nextLine();
            return number;
        }
    
        /**
         * 显示快递信息
         * @param e
         */
        public void printExpress(Express e){
            if(e == null){
                System.out.println("快递信息不存在");
                return;
            }
            System.out.println("快递信息如下:");
            System.out.println("快递公司:" + e.getCompany() + ",快递单号:" + e.getNumber() + ",取件码:" + e.getCode());
        }
    
    
        /*
        -----------------------------------------------------------------
         */
    
        /**
         * 获得用户输入的取件码(这里简化,只要取件码相同,就算取件成功)
         * @return 用户输入的合法功能码(6位)
         */
        public int uMenu(){
            System.out.println("根据提示进行取件:");
            System.out.print("请输入取件码:");
            String s = input.nextLine();
            int funcNum = -1;
            try{
                funcNum = Integer.parseInt(s);
            }catch (NumberFormatException e){   // 格式异常 递归继续获取功能码
                return uMenu();
            }
            if(funcNum < 100000 || funcNum > 999999){     // 功能码不合法
                System.out.println("输入有误,请重试!");
                return uMenu();
            }
            return funcNum;
        }
    
        public void expressExist(){
            System.out.println("此快递单号已存在,请勿重复存储");
        }
        public void printCode(Express e) {
            System.out.println("新快递的取件码为:" + e.getCode());
        }
    
        public void success(){
            System.out.println("操作成功!");
        }
        public void printNull(){
            System.out.println("快递不存在,请检查输入");
        }
    
    }
    

    章节汇总在这里(づ ̄3 ̄)づ╭❤~@&再见萤火虫&【03-Java核心类库】


    对学习Java感兴趣的同学欢迎加入QQ学习交流群:1126298731

    有问题欢迎提问,大家一起在学习Java的路上打怪升级!(o゜▽゜)o☆[BINGO!]

    展开全文
  • 任务轨迹是一个任务从创建开始到当前状态历史轨迹。 删除卡片: 删除卡片有两种方式: 1)直接点击卡片上删除按钮进行删除。 2)点击卡片,进入卡片页面,选择删除卡片按钮删除。 官网:leangoo....

    复制卡片:

    点击卡片右侧复制卡片按钮可以将卡片复制到目标看板的列表中,复制时卡片所有内容都会被复制。Leangoo复制卡片

    查看任务轨迹:

    任务轨迹是一个任务从创建开始到当前状态的历史轨迹。Leangoo任务轨迹

    删除卡片:

    删除卡片有两种方式:

    1)直接点击卡片上的删除按钮进行删除。

    删除卡片

     

    2)点击卡片,进入卡片页面,选择删除卡片按钮删除。

    删除Leangoo卡片

     

    官网:leangoo.com

     

    转载于:https://www.cnblogs.com/shineshine/p/5664361.html

    展开全文
  • 一,快递管理训练任务 1,题目描述 还记得之前快递管理吗?我们将数据存储在集合中,在程序被关闭后, 存储数据就...【任务卡_03-Java核心类库_第3节 集合】基础上,添加文件IO操作完成。这里使用方...

    目录

    一,快递管理训练任务

    1,题目描述

    2,说明

    2.1 概述

    2.2 具体描述

    2.3 Main

    2.4 ExpressDao

    3,参考代码 

    3.1 Main

    3.2 bean.Express

    3.3 dao.ExpressDao

    3.4 view.View

    二,图书管理训练任务(选作)

    1,题目描述

    2,代码


    一,快递管理训练任务

    1,题目描述

    还记得之前的快递管理吗?我们将数据存储在集合中,在程序被关闭后, 存储的数据就丢失了。下面我们来学习 IO,学习了 IO 以后,就可以使用 IO 技 术将快递数据存储到文件中了。文件存储快递信息后,可以在每次启动应用时 读取文件中的内容,从而实现程序数据的一直存在。 接下来加油学习吧!

    2,说明

    2.1 概述

    此次任务是在@&再见萤火虫&【任务卡_03-Java核心类库_第3节 集合】基础上,添加文件的IO操作完成的。这里使用的方法为序列化、反序列化

    然而在完成上一次任务时,由于不清楚dao的具体用途(dao负责对数据的操作,而不是存储数据),所以把数据的存储放在了dao对象属性中,在对main方法中的dao对象进行序列化操作时,总是报错;

    后来经老师点拨后,采用将数据存储在main函数中的变量中,并对HashMap<Integer, Express> data对象进行序列化和反序列化操作的方法(该对象包含了所有需要的数据:当前快递数目、所有快递对象,进而可以根据对象的属性推出哪个柜子为空);

    2.2 具体描述

    主要修改的地方为:Main,ExpressDao;

    2.3 Main

    1)main方法

    2)uClient方法

    通过参数传递的方式,修改数据

    3)gClient方法

    2.4 ExpressDao

    删除原先在ExpressDao类中的所有存放数据的属性

    1)add方法

    2)randomCode方法

    3)findByNumber、findByCode、update、delete方法,添加相应的参数即可,这里不再重复

     

    3,参考代码 

    3.1 Main

    package main;
    
    import bean.Express;
    import dao.ExpressDao;
    import view.View;
    
    import java.io.*;
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Random;
    
    public class Main {
        // 初始化视图对象
        private static View v = new View(); // 这样可以跨方法使用
    
        // 初始化dao对象
        private static ExpressDao dao = new ExpressDao();
    
        // 1,弹出身份选择菜单
        public static void main(String[] args) throws IOException, ClassNotFoundException {
            /**
             * 初始化数据结构
             */
            boolean[][] cabinet = new boolean[10][];    // 二维数组表示快递柜位置是否被占用
            HashMap<Integer, Express> data;             // HashMap存放 <取件码,快递对象>
            Collection<Express> expresses;              // 存放所有的Express对象 便于遍历
            for(int i = 0; i < 10; i++){
                cabinet[i] = new boolean[10];
            }
            int size = 0;   // 当前存储的快递数目(便于判断是否还有空位 否则在随机生成取件码时可能陷入死循环)
    
            /**
             * 反序列化获得快递柜中存放的对象HashMap<Integer, Express> data
             */
            try (FileInputStream fis = new FileInputStream("SerializedData.txt")) {
                ObjectInputStream ois = new ObjectInputStream(fis);
                data = (HashMap<Integer, Express>) ois.readObject();
                ois.close();                            // 关闭输入流
            } catch (IOException | ClassNotFoundException e) {
                data = new HashMap<>();                 // 打开文件异常时 将data初始为空 在main函数结束时进行序列化
            }
            /**
             * 初始化必要数据结构
             */
            expresses = data.values();                  // 遍历map中的key字段 只能采用此方法先获取集合形式的key字段
            for(Express e : expresses) {
                cabinet[e.posX][e.posY] = true;        // 表示此位置已被占用
            }
            /**
             * 主要功能展示
             */
            m:while (true){
                int menu = v.menu();
                switch (menu){
                    case 0:
                        break m;
                    case 1:
                        gClient(data.size(), cabinet, data);
                        break;
                    case 2:
                        uClient(data.size(), cabinet, data);
                        break;
                }
            }
    
            /**
             * 序列化存储对象HashMap<Integer, Express> data
             */
            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("SerializedData.txt"));
            oos.writeObject(data);
            oos.close();
    
    
        }
    
        private static void uClient(int size, boolean[][] cabinet, HashMap<Integer, Express> data) {
            Collection<Express> expresses = data.values();// 获得所有快递对象 便于遍历查找
            // 1,获得取件码
            int code = v.uMenu();
            // 2,根据取件码取出快递
            Express e = dao.findByCode(code, expresses);
            if(e == null){
                v.printNull();
            }else {
                v.success();
                v.printExpress(e);
                dao.delete(e, cabinet, data);
            }
        }
    
        private static void gClient(int size, boolean[][] cabinet, HashMap<Integer, Express> data) {
            while (true){
                int menu = v.gMenu();
                switch (menu){
                    case 0:
                        return;
                    case 1:{                            // 快递录入
                        // 1,提示输入快递信息
                        Express e = v.insert();
                        // 2,此快递是否已经存储过
                        Express e2 = dao.findByNumber(e.getNumber(), data.values());
                        // 3,存储快递
                        if(e2 == null){                 // 未存储过
                            dao.add(e, cabinet, data);
                            v.printCode(e);
                        }else {                         // 单号重复
                            v.expressExist();
                        }
                        break;
                    }
                    case 2: {                           // 快递修改
                        // 1,提示输入快递信息
                        String number = v.findByNumber();
                        // 2,查找数据
                        Express e1 = dao.findByNumber(number, data.values());
                        // 3,打印快递信息
                        if(e1 == null){
                            v.printNull();
                        }else {
                            v.printExpress(e1);
                            // 4,提示修改
                            v.update(e1);               // 这里已经将快递的信息修改过了
                            dao.update(e1, e1, cabinet, data);// 这里只是为了强调 删除-修改的过程
                            v.printExpress(e1);
                        }
    
                        break;
                    }
                    case 3: {                           // 删除
                        // 1,输入快递单号
                        String number = v.findByNumber();
                        // 2,查找快递对象
                        Express e = dao.findByNumber(number, data.values());
                        if(e == null){
                            v.printNull();
                        }else {
                            v.printExpress(e);
                            int type = v.delete();
                            if(type == 1){
                                dao.delete(e, cabinet, data);
                            }else {
                                v.success();
                            }
                        }
                        break;
                    }
                    case 4:{                            // 查看所有
                        v.printAll(data.values());      // 在视图层显示
                        break;
                    }
                }
            }
        }
    }
    

    3.2 bean.Express

    package bean;
    
    import java.io.Serializable;
    import java.util.Objects;
    
    /**
     *
     */
    public class Express implements Serializable {
        private String number;  // 快递单号
        private String company; // 公司
        private int code;       // 取件码
        public int posX, posY;  // 快递所在快递柜中的位置
    
        // 构造方法
        public Express(String number, String company, int code) {
            this.number = number;
            this.company = company;
            this.code = code;
        }
    
        public Express() {
        }
    
        // getter/setter
    
        public String getNumber() {
            return number;
        }
    
        public String getCompany() {
            return company;
        }
    
        public int getCode() {
            return code;
        }
    
        public void setNumber(String number) {
            this.number = number;
        }
    
        public void setCompany(String company) {
            this.company = company;
        }
    
        public void setCode(int code) {
            this.code = code;
        }
    
        // 重写toString 方法
    
        @Override
        public String toString() {
            return "Express{" +
                    "number='" + number + '\'' +
                    ", company='" + company + '\'' +
                    ", code=" + code +
                    '}';
        }
    
        // 重写equals方法
    
        /**
         * 只要快递单号相同就认为快递相同
         * @param o
         * @return
         */
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Express express = (Express) o;
            return Objects.equals(number, express.number);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(code);
        }
    }
    

    3.3 dao.ExpressDao

    package dao;
    
    import bean.Express;
    
    import java.io.Serializable;
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Random;
    
    // 实现可序列化标记接口 使得dao对象支持序列化与反序列化
    public class ExpressDao {
        private Random random = new Random();               // 用于生成随机数
    
        /**
         *
         * @param e 新加入的快递对象
         * @param cabinet 标记快递柜位置是否已被占用
         * @param data 所有的快递对象
         * @return
         */
        public boolean add(Express e, boolean[][] cabinet, HashMap<Integer, Express> data){
            int size = data.size();
            if(size >= 100){
                return false;
            }
            // 1,随机生成两个0-9的下标
            int x = -1, y = -1;
            while (true){
                x = random.nextInt(10);
                y = random.nextInt(10);
                if(cabinet[x][y] == false){
                    break;                                  // 此位置未被占用
                }
            }
            // 2,判断取件码是否重复(最简单的 一个个对比)
            int code = randomCode(data.values());           // 获得没有重复的取件码
            e.setCode(code);
            e.posX = x;                                     // 快递柜存放快递的位置
            e.posY = y;
            size++;                                         // 快递数目加一
            cabinet[x][y] = true;                           // 此位置已被占用
            data.put(code, e);                              // 添加键值对
            return true;
        }
    
        /**
         * 遍历所有对象 生成独一无二的取件码
         * @param expresses 所有的快递对象
         * @return
         */
        private int randomCode(Collection<Express> expresses){
            while (true) {
                int code = random.nextInt(900000) + 100000; // 范围(000000-899999)+1000000
                Express e = findByCode(code, expresses);
                if(e == null) { // 说明取件码未重复
                    return code;
                }
            }
        }
    
        /**
         * 快递员根据快递单号查询HashMap中存放的快递
         * @param number
         * @return
         */
        public Express findByNumber(String number, Collection<Express> expresses){
            // 遍历HashMap中的Express对象 找到其快递单号相对应的那个对象并返回
            for(Express e : expresses) {
                if(e.getNumber().equals(number)) {
                    return e;
                }
            }
            return null;
        }
    
        /**
         * 根据取件码查询快递
         * @param code 取件码
         * @return 查询到结果 查询失败返回null
         */
        public Express findByCode(int code, Collection<Express> expresses){
            for(Express e : expresses) {
                if(e.getCode() == code) {
                    return e;
                }
            }
            return null;
        }
    
        /**
         * 多余的操作 为了MVC更圆润
         * @param oldExpress
         * @param newExpress
         */
        public void update(Express oldExpress, Express newExpress, boolean[][] cabinet, HashMap<Integer, Express> data){
            delete(oldExpress, cabinet, data);
            add(newExpress, cabinet, data);
        }
        public void delete(Express e, boolean[][] cabinet, HashMap<Integer, Express> data){
            data.remove(e.getCode());
            cabinet[e.posX][e.posY] = false;
        }
    }
    

    3.4 view.View

    package view;
    
    import bean.Express;
    
    import java.util.Collection;
    import java.util.Scanner;
    
    /**
     * 视图层
     * 只负责展示视图 不包含其他任何逻辑
     */
    public class View {
        public Scanner input = new Scanner(System.in);
    
        /**
         * 获得用户的角色选择输入,并进入相应的功能
         * @return 返回功能码 1:管理原 2:普通用户 0:退出
         */
        public int menu(){
            System.out.println("根据提示输入功能序号:");
            System.out.println("1,管理员");
            System.out.println("2,普通用户");
            System.out.println("0,退出");
            String s = input.nextLine();
            int funcNum = -1;
            try{
                funcNum = Integer.parseInt(s);
            }catch (NumberFormatException e){   // 格式异常 递归继续获取功能码
                return menu();
            }
            if(funcNum < 0 || funcNum > 2){     // 功能码不合法
                return menu();
            }
            return funcNum;
        }
    
        /*
        -----------------------------------------------------------------
         */
    
        /**
         * 获得管理员输入的功能码
         * @return 管理员输入的合法功能码 1:录入 2:修改 3:删除 4:查看所有 0:退出
         */
        public int gMenu(){
            System.out.println("根据提示输入功能序号:");
            System.out.println("1,快递录入");
            System.out.println("2,快递修改");
            System.out.println("3,快递删除");
            System.out.println("4,查看所有快递");
            System.out.println("0,退出");
            String s = input.nextLine();
            int funcNum = -1;
            try{
                funcNum = Integer.parseInt(s);
            }catch (NumberFormatException e){   // 格式异常 递归继续获取功能码
                return gMenu();
            }
            if(funcNum < 0 || funcNum > 4){     // 功能码不合法
                return gMenu();
            }
            return funcNum;
        }
    
        /**
         * 1快递员录入信息
         * @return 返回包含了快递单号和快递公司的快递对象
         */
        public Express insert(){
            System.out.println("请根据提示输入快递信息:");
            System.out.print("请输入快递单号:");
            String number = input.nextLine();
            System.out.print("请输入快递公司:");
            String company = input.nextLine();
            Express e = new Express();
            e.setNumber(number);
            e.setCompany(company);
            return e;
        }
    
        /**
         * 2修改快递信息
         * @param e
         */
        public void update(Express e){
            System.out.print("请输入新的快递单号:");
            String number = input.nextLine();
            System.out.print("请输入新的快递公司");
            String company = input.nextLine();
            e.setNumber(number);
            e.setCompany(company);
        }
    
        /**
         * 3询问是否删除
         * @return 给出快递管理员的选择 1:删除 2:取消
         */
        public int delete(){
            System.out.println("确认是否删除:");
            System.out.println("1,确认删除");
            System.out.println("2,取消删除");
            System.out.println("0,退出");
            String s = input.nextLine();
            int num = -1;
            try {
                num = Integer.parseInt(s);
            }catch (NumberFormatException e){
                return delete();
            }
            if(num < 0 || num > 2){
                return delete();
            }
            return num;
        }
    
        /**
         * 4遍历显示所有快递信息
         * @param es
         */
        public void printAll(Collection<Express> es){
            int count = 0;
            for(Express e : es) {
                count++;
                System.out.print("第" + (e.posX + 1) + "排," + (e.posY + 1) + "列, ");
                printExpress(e);
            }
            if(count == 0){
                System.out.println("暂无快递信息");
            }
        }
    
        /**
         * 提示用户输入快递单号
         * @return
         */
        public String findByNumber(){
            System.out.println("请根据提示输入快递信息:");
            System.out.print("请输入需要操作的快递单号:");
            String number = input.nextLine();
            return number;
        }
    
        /**
         * 显示快递信息
         * @param e
         */
        public void printExpress(Express e){
            if(e == null){
                System.out.println("快递信息不存在");
                return;
            }
            System.out.println("快递信息如下:");
            System.out.println("快递公司:" + e.getCompany() + ",快递单号:" + e.getNumber() + ",取件码:" + e.getCode());
        }
    
    
        /*
        -----------------------------------------------------------------
         */
    
        /**
         * 获得用户输入的取件码(这里简化,只要取件码相同,就算取件成功)
         * @return 用户输入的合法功能码(6位)
         */
        public int uMenu(){
            System.out.println("根据提示进行取件:");
            System.out.print("请输入取件码:");
            String s = input.nextLine();
            int funcNum = -1;
            try{
                funcNum = Integer.parseInt(s);
            }catch (NumberFormatException e){   // 格式异常 递归继续获取功能码
                return uMenu();
            }
            if(funcNum < 100000 || funcNum > 999999){     // 功能码不合法
                System.out.println("输入有误,请重试!");
                return uMenu();
            }
            return funcNum;
        }
    
        public void expressExist(){
            System.out.println("此快递单号已存在,请勿重复存储");
        }
        public void printCode(Express e) {
            System.out.println("新快递的取件码为:" + e.getCode());
        }
    
        public void success(){
            System.out.println("操作成功!");
        }
        public void printNull(){
            System.out.println("快递不存在,请检查输入");
        }
    
    }
    

    二,图书管理训练任务(选作)

    1,题目描述

    还记得之前的图书管理吗?我们将数据存储在集合中,在程序被关闭后, 存储的数据就丢失了。下面我们来学习 IO,学习了 IO 以后,就可以使用 IO 技 术将图书数据存储到文件中了。文件存储图书信息后,可以在每次启动应用时 读取文件中的内容,从而实现程序数据的一直存在。 接下来加油学习吧! 

    1.管理员登陆 

    2.图书管理 

    • 2.1 图书新增 
    • 2.2 图书修改 
    • 2.3 图书删除 
    • 2.4 根据图书名称模糊查找图书 
    • 2.5 查看所有图书 (三种排序)
    •     价格从高到低排序 
    •     价格从低到高排序 
    •     新旧排序(出版日期排序)

    2,代码

    时间原因,有空再补。 


    章节汇总在这里(づ ̄3 ̄)づ╭❤~@&再见萤火虫&【03-Java核心类库】


    对学习Java感兴趣的同学欢迎加入QQ学习交流群:1126298731

    有问题欢迎提问,大家一起在学习Java的路上打怪升级!(o゜▽゜)o☆[BINGO!]

    展开全文
  • Android中使用列表视图完成休闲时分应用的任务要求 范美...单击图(a)笑话连篇中的任何一个笑话标题后会弹出图(b)的对话框对话框的标题中显示笑话标题和信息图标对话框的主体部分显示笑话的内容下方有一个OK按钮 单击图
  • 我们输入的是一张答题卡的拍摄图片,而我们要处理的是这张答题卡的内容,需要用到透视变换将答题卡的内容单独拿出来; 提取答题卡中填涂区域的轮廓,并进行二值化处理,利用掩模与二值化后的答题卡进行对比
  • 任务4 存储摄像头截图内容 项目4 数据存储实现 辽宁轻工职业学院 本任务使用项目2任务4中设计界面结果实现使用高清摄像头拍照后通过WebView控件显示到移动终端如果用户认为特殊情境数据需要以图片形式保存在...
  • 本服务由柚子亲子小程序开发者向今日头条用户提供,并对本服务信息内容、数据资料及其运营行为等真实性、合法性及有效性承担全部责任。 "柚子亲子"由开发者"柚子亲子"原创首发于今日头条小程序商店
  • 第1步:打开“文件夹按钮”窗口。点下键盘上“Win+E”组合键(“Win”为微软...打开“文件夹按钮”窗口后,切换到“常规”按钮,勾选“导航窗格”栏下“显示所有文件夹”和“自动扩展到当前文件夹”,最后点击...
  • 任务管理平台
  • 新增内容 新增“神秘礼物”系列任务,完成后可以使用整容功能 新增雷明顿系列支线任务 新增梅林系列支线任务 新增越南语大部分文本翻译 新增露西系列支线任务 新增姜戈系列支线任务 新增部分NPC关系影响 调整了...
  • 本节内容:linux定时任务、cron服务、crontab命令一,为当前用户创建cron服务1,键入 crontab -e 编辑crontab服务文件例如 文件内容如下:代码示例:*/2 * * * * /bin/sh /home/admin/jiaoben/buy/deleteFile.sh保存...
  • DHARMA项目B任务组,东部卢卡亚人口统计学语料库。 有关更多信息,请参阅。 储存库静态页面 您可以在上查询此存储库上工作当前状态。 帮助和指南 中提供了Git指南。 DHARMA编码指南可在,但我们建议您使用...
  • 中煤平朔矿区运行着200多台各种型号自卸卡车,这些卡车在复杂道路条件下承担着全矿运输任务,卡车各部件运行状况随时发生着变化。如何适时了解这些部件是否运行正常,进行油样化验是维修部门进行预防性维修一...
  • 这里给出几个设计智能应用的PC机程序,它使得应用开发能完成得既快又易,而不必了解智能操作系统的内部结构。参见图1~图3。  图1 智能应用的PC机软件工具的屏幕显示[Rankl,...在各个中的BF的内容便
  • 团队计划列表: ...任务 ...深度了解NABCD,剖析本项软件痛点,以及如何...基本确定设计方向,确定设计软件界面以及界面内容,确定使用何种语言进行编程,基本确定软件页面及相关功能。 2.5h 11....
  • 任务分解

    千次阅读 2016-11-07 14:40:39
    任务分解 对于一个程序媛来说,如何提高自己开发效率,这一直都是我追寻方法。直到最近才get到一个可以有所帮助技能。...在我们写代码之前应该根据卡片内容,从开发角度把一个大卡分解成各个小
  • OpenStack虚机网卡创建过程 OpenStack最基本和常用操作就是启动虚机。虚机启动过程中涉及很...虚机创建和管理是Nova的任务,虚机网络创建和管理是Neutron的任务,而虚机网卡,作为连接虚机和虚机网络...
  • OpenStack虚机网卡创建过程

    千次阅读 2017-12-06 21:57:48
    虚机创建和管理是Nova的任务,虚机网络创建和管理是Neutron的任务,而虚机网卡,作为连接虚机和虚机网络桥梁,其创建和管理则同时涉及了Nova和Neutron。这次介绍一下,OpenStack中虚机网卡创建过程。
  • 如果觉得好,那么就关注我吧,好内容精准推送,不容错过。欢迎赞赏支持,谢谢。有时有人问我:你ProE上“文件”工具栏怎么有其他工具按钮,而我怎么没有?Creo快速启动工具栏也类似。我在《高级案例教程:...
  • 然后就在左下角显示“正在从包‘Microsoft.VisualStudio.IDE.ToolboxControlsInstaller.ToolboxInstallerPackage’{2C298B35-07DA-45F1-96A3-BE55D91C8D7A}加载工具箱内容时候住...并且在WIndows任务...
  • 我们直接在GitHub上读取和存储列,关系以及其他所有内容。 唯一例外是发布顺序(到目前为止,GitHub不支持)。 与紧密集成。 您问题会自动全面解决。 董事会始终与开发中最新信息保持同步。
  • 认知灵活性(CF)难题是一项旨在衡量人们有效地在不同心理规则集之间进行切换能力的任务。 该任务基于CF,跟踪制作任务和Wisconsin卡片分类任务的现有度量,并且已经过验证。 此处提供应用程序使研究人员可以...
  • 作为敏捷开发流程之一,敏捷团队在日常工作中最常用到工具就是看板,看板作为一种通知类卡片,旨在传达团队中各成员的任务状态、具体任务内容等,其目的是促进团队成员的任务上下衔接,拉动开发过程中产品价值从...
  • LEANGOO卡片

    2019-05-31 05:38:00
    Leangoo的卡片可以是需求、目标、任务、...我们可以根据需要使用卡片来表达我们需要管理的内容,然后使用看板进行组织。 添加成员 点击卡片,选择成员按钮,直接选择添加成员即可 设置...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,203
精华内容 481
关键字:

任务卡的内容