5.集合+mvc快递增删改查

这是一个基于Java的快递管理系统,包括快递实体类、视图类和数据操作类。系统提供了快递员和用户的操作界面,支持快递的增删改查功能,如添加快递、删除快递、修改快递信息和查看所有快递等操作。系统使用ArrayList存储快递信息,并通过随机数生成器分配快递位置和取件码,确保唯一性。
摘要由CSDN通过智能技术生成

5.集合+mvc快递增删改查

bean包中快递实体类

package bean;

public class Express {
    private String number;
    private String company;
    private int code;
    private int target;//位置的序号

    public Express(String number, String company) {
        this.number = number;
        this.company = company;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = company;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public int getTarget() {
        return target;
    }

    public void setTarget(int target) {
        this.target = target;
    }

    @Override
    public String toString() {
        return
             "快递单号:" + number +"\t公司名称:" + company +"\t取件码:" + code +
             "\t快递位置:" + target / 10 + "排" + target % 10 + "列";
    }
}

view包中视图类views

package view;

import bean.Express;

import java.util.ArrayList;
import java.util.Scanner;

public class Views {
    private Scanner sc = new Scanner(System.in);

    public void welcome() { print("欢迎使用快递驿站!"); }

    private void print(String msg) {  System.out.println(msg); }

    private String inputStr(String msg) {
        System.out.println(msg);
        return sc.nextLine();
    }

    public void printMainMenu() {  print("请选择用户:1.快递员,2.用户 3.退出程序!"); }

    /**
     * 输入选项
     * @param max
     * @return
     */
    public int inputChoose(int max) {
        String str = inputStr("请输入一个大于0而且小于" + max + "的数字:");
        int num = -1;
        try {
            num = Integer.parseInt(str);
        } catch (NumberFormatException e) {

        }
        if (num < 0 || num > max) {    
            num = inputChoose(max);
        }
        return num;
    }

    public void bye() {  print("Bye bye!"); }

    public void printAdminMenu() {
         print("1.增加快递,2.删除快递,3.修改快递,4.查看所有,5.返回主菜单!");
    }

    public void back() { print("返回主菜单!");}

    public void printUserMenu() { print("1.取件,2.返回主菜单!");  }

    public String inputCompany() {return inputStr("请输入公司名称");  }

    public String inputNumber() { return inputStr("请输入快递单号:"); }

    public void printAddResult(Express add) {
        print(add == null ? "快递柜已满或单号重复,无法添加!" : "添加成功,位置:" +         
        showTarget(add) + ",取件码:" + add.getCode());
    }

    /**
     * 用字符串的形式显示快递的位置
     *
     * @param add
     * @return
     */
    private String showTarget(Express add) {
        return add.getTarget() / 10 + "排" + add.getTarget() % 10 + "列";
    }

    /**
     * 取件码
     *
     * @return
     */
    public int inputCode() { return inputChoose(1000000);  }

    public void printPickResult(boolean pick) { print(pick ? "取件成功!" : "取件失败!");}

    public void printRemoveResult(boolean remove) {
         print(remove ? "删除成功!" : "删除失败!");
    }

    public String inputOldNumber() { return inputNumber(); }

    public String inputNewNumber() { return inputStr("请输入新的快递单号:"); }

    public String inputNewCompany() {return inputStr("请输入新的公司名称:"); }

    public void printModifyResult(Express modify) {
        print(modify==null?"单号不存在,请检查" : "修改成功,新的快递信息为:" + modify);
    }

    public void showAll(ArrayList<Express> list) {
        if (list.size() == 0) {
            print("快递柜为空!无任何快递信息!");
        } else {
            for (Express express : list) {
                System.out.println(express);
            }
        }
    }
}

dao包中操作数据的类ExpressDao

package dao;

import bean.Express;

import java.util.ArrayList;

public class ExpressDao {

    private static final int MAX_SIZE = 100;
    private ArrayList<Express> list = new ArrayList<>();

    //方法:alt+回车,
    public Express addExpress(String number, String company) {
        if (list.size() > MAX_SIZE) return null;//满了就不放了
        //单号的查重,一个是取件码的查重
        Express exist = findExpressByNumber(number);
        if (exist == null) {
            //未存在相同的单号:可以添加
            Express newExpress = new Express(number, company);
            //位置
            int target = initTarget();
            newExpress.setTarget(target);
            //取件码:
            int code = initCode();
            newExpress.setCode(code);
            list.add(newExpress);
            return newExpress;
        }
        return null;
    }

    private int initCode() {
        int code = 0;
        do {
            code = (int) (Math.random() * 900000 + 100000);
        } while (findExpressByCode(code) != null);
        return code;
    }

    /**
     * 通过单号找快递
     *
     * @param code
     * @return
     */
    private Express findExpressByCode(int code) {
        for (Express express : list) {
            if (express.getCode() == code) {
                return express;
            }
        }
        return null;
    }

    //boolean,是否;查找位置同时知道存不存在,返回下标,默认-1可以知道不存在; 返回对象,可以拿到所有信息,null代表不存在
    private int initTarget() {
        int target = 0;
        do {
            target = (int) (Math.random() * MAX_SIZE);
        } while (findExpressByTarget(target));
        return target;
    }

    /**
     * 按位置找快递
     *
     * @param target
     * @return
     */
    private boolean findExpressByTarget(int target) {
        for (Express express : list) {
            if (express.getTarget() == target) {
                return true;
            }
        }
        return false;
    }

    private Express findExpressByNumber(String number) {
        for (Express express : list) {
            if (express.getNumber().equals(number)) {
                return express;
            }
        }
        return null;
    }

    public boolean pickExpress(int code) {
        Express express = findExpressByCode(code);
        return list.remove(express);

    }

    public boolean removeExpress(String number) {
        Express express = findExpressByNumber(number);
        return list.remove(express);

    }

    public Express modify(String oldNumber, String newNumber, String newCompany) {
        Express old = findExpressByNumber(oldNumber);
        if (old == null) return null;
        Express newExpress = new Express(newNumber, newCompany);
        //想改 重新init,不想改你就old的信息拿过来
        newExpress.setCode(old.getCode());
        newExpress.setTarget(old.getTarget());
        int index = list.indexOf(old);//集合中对象的索引
        list.set(index, newExpress);//将指定位置的对象替换为新对象
        return newExpress;
    }

    public ArrayList<Express> query() {
        return list;
    }
}

Main方法负责流程控制

import bean.Express;
import dao.ExpressDao;
import view.Views;

import java.util.ArrayList;

//只负责流程操作
public class Main {
    //视图对象
    //数据操作类的对象
    static Views v = new Views();
    static ExpressDao dao = new ExpressDao();

    public static void main(String[] args) {
        v.welcome();
        boolean flag = true;
        while (flag) {
            v.printMainMenu();
            int key = v.inputChoose(3);
            switch (key) {
                case 1:
                    adminLoop();
                    break;
                case 2:
                    userLoop();
                    break;
                case 3:
                    flag = false;
                    v.bye();
                    break;
            }
        }
    }


    private static void adminLoop() {
        boolean flag = true;
        while (flag) {
            v.printAdminMenu();
            int key = v.inputChoose(5);
            switch (key) {
                case 1:
                    add();
                    break;
                case 2:
                    remove();
                    break;
                case 3:
                    modify();
                    break;
                case 4:
                    query();
                    break;
                case 5:
                    flag = false;
                    v.back();
                    break;
            }
        }
    }

    private static void query() {
        ArrayList<Express> list=dao.query();
        v.showAll(list);
    }

    private static void modify() {
        String oldNumber = v.inputOldNumber();
        String newNumber = v.inputNewNumber();
        String newCompany = v.inputNewCompany();
        Express modify = dao.modify(oldNumber, newNumber, newCompany);
        v.printModifyResult(modify);
    }

    private static void remove() {
        String number = v.inputNumber();
        boolean remove = dao.removeExpress(number);
        v.printRemoveResult(remove);
    }

    private static void add() {
        String number = v.inputNumber();
        String company = v.inputCompany();
        Express add = dao.addExpress(number, company);
        v.printAddResult(add);
    }

    private static void pick() {
        int code = v.inputCode();
        boolean pick = dao.pickExpress(code);
        v.printPickResult(pick);
    }


    private static void userLoop() {
        boolean flag = true;
        while (flag) {
            v.printUserMenu();
            int key = v.inputChoose(2);
            switch (key) {
                case 1:
                    pick();
                    break;
                case 2:
                    flag = false;
                    v.back();
                    break;
            }
        }
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ASP.NET MVC是一种基于ASP.NET的Web应用程序框架,它使用模型-视图-控制器(MVC)模式来构建Web应用程序。EF(Entity Framework)是一种ORM(对象关系映射)框架,它可以将数据库中的数据映射到.NET对象中。增删改是指对数据库中的数据进行增加、删除、修改和询操作。在ASP.NET MVC中,可以使用EF来进行数据库操作,实现增删改功能。 ### 回答2: ASP.NET MVC 和 EF 是一对强力的开发工具,可以面向对象地开发 Web 应用程序。他们使用的是基于现代软件工程原则的模型-视图控制器模式,也就是MVC。这种模式不仅分离了应用程序的三个核心方面,即用户界面、数据业务逻辑和用户数据,而且还允许多个团队在不干涉彼此的情况下同时开发应用程序。 对于ASP.NET MVC来说,它是一种Web应用程序开发框架,适用于开发具有复杂功能和交互需要的动态Web应用程序。在ASP.NET MVC中,模型-视图-控制器(MVC)模式被广泛使用,以将Web应用程序拆分为三个核心部分:控制器,模型和视图。控制器作为请求接收者,负责处理请求并将响应发送回客户端;视图则负责呈现应用程序的用户界面;而模型则负责管理和检索应用程序的状态和数据。 对于EF来说,它是一种ORM对象关系映射工具,可自动将.NET对象映射为关系数据库中的表、视图和存储过程。使用EF,我们可以通过一个简单的API访问数据库,而不需要复杂的SQL语句。EF支持各种数据库,包括Microsoft SQL Server,Oracle,MySQL和SQLite等。 对于ASP.NET MVC和EF的增删改,我们可以通过以下步骤来实现: 1. 建立数据库连接 在使用EF进行增删改之前,我们需要建立数据库连接。在ASP.NET MVC中,我们可以在Web.config文件中配置连接字符串,指定数据库的位置和访问凭据。 2. 创建模型 我们需要创建一个类来定义模型。该类应该包含与数据库表中的列对应的属性。这些属性名称和数据类型应该与数据库中的列对应,以便我们可以将数据从一个位置传递到另一个位置。 3. 创建数据库上下文 我们需要创建一个EF数据库上下文,该上下文负责管理数据库连接和数据操作。我们可以在该上下文中创建插入、更新、删除和询方法。 4. 插入数据 我们可以通过在数据库上下文中创建一个新对象并将其添加到数据库上下文中来插入数据。保存更改后,这些更改将通过EF发送到数据库。 5. 更新数据 要更新数据,我们可以在数据库上下文中询现有对象,并更改其属性。一旦更改完成,我们可以保存更改并将更改提交到数据库。 6. 删除数据 要删除数据,我们可以在数据库上下文中询现有对象,并调用删除操作。一旦删除完成,我们可以保存更改并将更改提交到数据库。 7. 询数据 要询数据,我们可以使用数据库上下文来执行LINQ询。LINQ询可用于检索数据,并通过视图将数据呈现给用户。 综上所述,我们可以看出ASP.NET MVC和EF是一对非常强大的应用程序开发工具,可以帮助我们构建复杂的Web应用程序,并为我们提供了一种简单而直观的方法来管理数据库操作。在项目中应用它们,可以极大地提高我们的开发效率,提高生产力。 ### 回答3: ASP.NET MVC是一种基于模型-视图-控制器(Model-View-Controller, MVC)架构设计的Web应用程序框架。该框架使用MVC设计模式,将应用程序分为几个不同的组件,这些组件分别处理不同方面的应用程序逻辑。 Entity Framework(EF)是一种对象关系映射(Object-Relational Mapping, ORM)框架,用于将数据库中的表格数据映射到.NET对象中。它允许开发人员通过使用.NET语言(如C#和VB.NET)来编写应用程序,而不必直接处理SQL代码。 在ASP.NET MVC应用程序中使用EF可以简化数据访问层的开发过程,并为应用程序提供数据持久化解决方案。下面将介绍如何在ASP.NET MVC中完成增删改方法: 增加数据: 应用程序需要将表格的数据添加到数据库,可以通过以下几个步骤来完成添加数据的方法: 1、在模型中定义一个实体,该实体将表示您要添加到表中的数据。 2、在控制器中创建一个方法,该方法接受一个参数,该参数是从HTTP POST请求中发送到服务器的实体。 3、在方法中创建一个新的实体,将数据从请求参数分配给该实体的属性。 4、将新实体添加到EF上下文并保存更改。 删除数据: 应用程序需要从一个表中删除数据,可以通过以下几个步骤来完成删除数据的方法: 1、在控制器中创建一个方法,该方法接受一个参数,该参数是表格中的数据的唯一标识符。 2、在方法中使用EF找需要删除的实体,并从 EF上下文中删除实体。 3、将更改保存到数据库。 更新数据: 应用程序需要更新表格中的数据,可以通过以下几个步骤来完成更新数据的方法: 1、在模型中定义一个实体,该实体将表示您要更新表格中的数据。 2、在控制器中创建一个方法,该方法接受一个参数,该参数是从HTTP POST请求中发送到服务器的实体。 3、在方法中使用EF找需要更新的实体。 4、将传入的实体的属性复制到EF中找到的实体中。 5、将更改保存到数据库。 询数据: 应用程序需要从一个表中检索数据,可以通过以下几个步骤来完成询数据的方法: 1、在控制器中创建一个方法,该方法将返回从数据库检索到的实体。 2、在方法中使用EF执行一个询,以从表中检索数据。 3、返回从DB检索到的实体。 综上所述,使用ASP.NET MVC和EF可以轻松地完成最常用的数据库操作,增加、删除、修改和询数据。此外,这些操作的执行效率也很高,可以为开发者节省大量的时间和精力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值