2020-09-16电商小项目

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

作为一个刚开始学习Java的小白,总要开始做人生中第一个小项目的,我亦如此


提示:以下是本篇文章正文内容,下面案例可供参考

一、项目介绍

1.项目开发主要过程:

  1. 需求分析. 确定项目要做什么, 分析有哪些角色, 分析每个角色有哪些功能,这是功能性需求; 还有性能要求; 在最终要给客户提交一个需求分析报告, 一般情况下还会提交一个项目原型
  2. 设计, 确定如何做, 简单点说就是项目需要有哪些模块, 每个模块在完成功能时,需要定义哪些类, 每个类需要有哪些方法, 模块与模块之间如何进行数据的交换, 最终也会形成一个设计文档
  3. 实现, 根据设计文档使用Java语言描述出来
  4. 测试
  5. 实施与维护

2. 需求分析:

1.1.1 程序主界面运行程序,显示以下界面

在这里插入图片描述

(1) 浏览商品用户选择1 表示浏览商品, 把所有的商品给显示出来 在这里插入图片描述在这里插入图片描述在这里插入图片描述

(2) 注册用户选择2, 表示注册 在这里插入图片描述

(3) 用户登录用户选择3, 表示登录 在这里插入图片描述

(4)用户选择4, 退出程序
1.1.2 产品管理操作界面登录成功后,显示操作界面 在这里插入图片描述
用户选择(1)显示所有商品信息
(2) 添加商品 在这里插入图片描述
(3) 删除商品 在这里插入图片描述
在这里插入图片描述
(4) 修改商品 在这里插入图片描述

(5) 查找商品 在这里插入图片描述

二、代码如下

创建视图类

代码如下(示例):

import java.util.List;
import java.util.Scanner;

//定义视图类
class  ViewManager{
    //定义用户管理对象
    private UserManager userManager = new UserManager();
    //定义产品管理对象
    private ProductManager productManager = new ProductManager();
    private Scanner sc = new Scanner(System.in);

    //1)定义方法显示主界面
    public void showMainView(){
        while (true) {
            System.out.println("---------------主界面------------------------");
            System.out.println("1 注册    2 登录    3 浏览产品  4 退出");
            System.out.println("请输入你的选择");
            int choice = sc.nextInt();
            if ( choice == 1){
                showRegisterView();     //显示注册界面
            }else if (choice == 2){
                showLoginView();        //显示登录界面
            }else if( choice == 3){
                showAllProductsView();  //显示所有产品界面
            }else {
                System.exit(0);         //退出JVM, 代表0表示正常退出
            }
        }
    }

    //2)定义方法显示注册界面
    public void showRegisterView(){
        System.out.println("===============用户注册==============");
        System.out.println("请输入用户名");
        String name = sc.next();
        //判断用户名是否存在,
        while ( userManager.containsName(name) ){
            System.out.println("该用户名已存在,请重新输入");
            name = sc.next();
        }
        System.out.println("请输入密码");
        String pwd = sc.next();
        //注册
        if ( userManager.addUser(name, pwd) ){
            System.out.println("注册 成功");
        }else {
            System.out.println("注册失败");
        }
    }

    //3)定义方法显示登录界面
    public void showLoginView(){
        String flag = "y";      //重新登录标志
        System.out.println("================登录=================");
        while ("y".equalsIgnoreCase(flag)) {
            System.out.println("请输入用户名");
            String name = sc.next();
            System.out.println("请输入密码");
            String pwd = sc.next();
            //判断是否合法
            if( userManager.validUser(name, pwd)){
                System.out.println("登录成功");
                break;
            }else {
                System.out.println("用户名或密码不正确,是否重新登录(Y/N)?");
                flag = sc.next();
                if ("n".equalsIgnoreCase(flag)){
                    return;
                }
            }
        }
        showProductManagerView();   //登录成功转到产品管理界面
    }

    private void showProductManagerView() {
        while (true) {
            System.out.println("==================产品管理=====================");
            System.out.println("1 浏览产品 ");
            System.out.println("2 添加产品 ");
            System.out.println("3 删除产品 ");
            System.out.println("4 修改产品 ");
            System.out.println("5 查找产品 ");
            System.out.println("6 退出");
            System.out.println("请输入你的操作");
            int choice = sc.nextInt();
            switch (choice){
                case 1:
                    showAllProductsView();
                    break;
                case 2:
                    showAddProductView();
                    break;
                case 3:
                    showdeleteProductView();
                    break;
                case 4:
                    showModifyProdutView();
                    break;
                case 5:
                    showSearchProductView();
                    break;
                    default:
                        return;
            }
        }
    }

    private void showSearchProductView() {
        System.out.println("*************查找产品******************");
        System.out.println("请输入产品名称包含的字符");
        String name = sc.next();
        //返回包含指定名称的产品
        List<Product> list = productManager.getProductsContainsName(name);
        showProducts(list);
    }

    private void showModifyProdutView() {
        System.out.println("*************修改产品******************");
        System.out.println("请输入要删除的产品编号");
        String pid = sc.next();
        //根据产品编号获得产品
        Product p = productManager.getProductById(pid);
        if ( p == null ){
            System.out.println("没有该编号的产品,无需修改");
        }else {
            System.out.println("该产品为:" + p);
            System.out.println("请输入新的产品名称");
            p.setName( sc.next());
            System.out.println("请输入新的产品价格");
            p.setPrice( sc.nextDouble());
            System.out.println("请输入新的产品销量");
            p.setSales( sc.nextInt());
        }
    }

    private void showdeleteProductView() {
        System.out.println("*************删除产品******************");
        System.out.println("请输入要删除的产品编号");
        String pid = sc.next();
        //根据产品编号获得产品
        Product p = productManager.getProductById(pid);
        if ( p == null ){
            System.out.println("没有该编号的产品,无需删除");
        }else {
            System.out.println("你要删除的产品:" + p + ",确定要删除吗?(y/n)");
            String flag = sc.next();
            if("y".equalsIgnoreCase(flag)){
                productManager.deleteProdut( p );
            }
        }
    }

    private void showAddProductView() {
        System.out.println("*************添加产品******************");
        Product p = new Product();
        System.out.println("请输入产品编号");
        p.setPid( sc.next() );
        System.out.println("请输入产品名称");
        p.setName( sc.next());
        System.out.println("请输入产品价格");
        p.setPrice( sc.nextDouble());
        System.out.println("请输入产品销量");
        p.setSales( sc.nextInt());
        //添加产品
        productManager.add(p);
    }

    //4)定义方法显示所有产品界面
    public void showAllProductsView(){
        //获得所有的产品
        List<Product> productList = productManager.getAllProducts();
        showProducts(productList);

        while (true) {
            System.out.println("请选择排序方式:1 名称升序  2 价格升序  3销量降序 4 退出");
            int  choice =sc.nextInt();
            if( choice == 1){
                productManager.sortByName();
                //重新显示
                showProducts(productList);
            }else if ( choice == 2){
                productManager.sortByPrice();
                //重新显示
                showProducts(productList);
            }else if (choice == 3){
                productManager.sortBySalesDesc();
                //重新显示
                showProducts(productList);
            }else {
                break;
            }
        }


    }

    private void showProducts(List<Product> productList) {
        System.out.println("-------------------商品信息----------------------");
        System.out.println("编号      名称      价格      销量");
        for (Product product : productList) {
            System.out.println( product.getPid() + "\t" + product.getName() + "\t" + product.getPrice() + "\t" + product.getSales());
        }
    }
}

**

创建用户管理类

**

import java.util.HashMap;
import java.util.Map;

//1)定义一个用户管理类,用于处理业务逻辑
class UserManager{
    //使用Map保存《用户名,密码》
    private Map<String, String> map = new HashMap<>();

    //在构造方法中添加几条测试数据
    public UserManager(){
        map.put("lisi", "123");
        map.put("wangwu", "456");
    }

    //提供方法判断是否包含指定的用户名
    public boolean containsName(String name){
        return map.containsKey(name);   //判断map的键是否包含它
    }

    //添加用户名和密码
    public boolean addUser(String name, String pwd){
        return  map.put(name, pwd) == null;
    }

    //查看用户是否合法
    public boolean validUser(String name, String pwd){
        if ( pwd == null ) {
            return false;
        }
        return  pwd.equals(map.get(name));
        //  密码。equals(  map中name用户保存的密码 )
    }
}

/**


定义产品类

**
*/

import java.util.Objects;

public class Product {
  private String pid;
  private String name;
  private int sales;          //销量
  private double price;       //价格

  public Product() {
  }

  public Product(String pid, String name, int sales, double price) {
      this.pid = pid;
      this.name = name;
      this.sales = sales;
      this.price = price;
  }

  @Override
  public boolean equals(Object o) {
      if (this == o) return true;
      if (o == null || getClass() != o.getClass()) return false;
      Product product = (Product) o;
      return Objects.equals(pid, product.pid) &&
              Objects.equals(name, product.name);
  }

  @Override
  public int hashCode() {
      return Objects.hash(pid, name);
  }

  @Override
  public String toString() {
      return "Product{" +
              "pid='" + pid + '\'' +
              ", name='" + name + '\'' +
              ", sales=" + sales +
              ", price=" + price +
              '}';
  }

  public String getPid() {
      return pid;
  }

  public void setPid(String pid) {
      this.pid = pid;
  }

  public String getName() {
      return name;
  }

  public void setName(String name) {
      this.name = name;
  }

  public int getSales() {
      return sales;
  }

  public void setSales(int sales) {
      this.sales = sales;
  }

  public double getPrice() {
      return price;
  }

  public void setPrice(double price) {
      this.price = price;
  }
}

/*

定义产品管理类

*/

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class ProductManager {
   //产品可以保存在List集合中
   private List<Product> list = new ArrayList<>();

   //在构造方法中向list集合添加一些测试数据
   public ProductManager(){
       list.add(new Product("1001", "华为P40", 80000, 5800));
       list.add(new Product("1002", "Mate40", 9000, 7800));
       list.add(new Product("1003", "pingguo", 180000, 2.5));
       list.add(new Product("1004", "xiaomi", 580000, 8.9));
       list.add(new Product("1005", "dami", 20000, 3.8));
   }

   //定义方法返回所有的商品
   public List<Product> getAllProducts(){
       return list;
   }

   //根据姓名升序
   public void sortByName() {
       list.sort(new Comparator<Product>() {
           @Override
           public int compare(Product o1, Product o2) {
               return o1.getName().compareTo(o2.getName());
           }
       });
   }

   public void sortByPrice() {
       list.sort(new Comparator<Product>() {
           @Override
           public int compare(Product o1, Product o2) {
               return Double.compare(o1.getPrice(), o2.getPrice());
           }
       });
   }

   public void sortBySalesDesc() {
       list.sort(new Comparator<Product>() {
           @Override
           public int compare(Product o1, Product o2) {
               return o2.getSales() - o1.getSales();            }
       });
   }

   //添加产品
   public void add(Product p) {
       list.add(p);
   }

   //定义方法根据产品编号获得产品
   public Product getProductById(String pid) {
       //遍历集合中的产品 ,如果有某个产品的编号与参数编号一致 就返回该产品
       for (Product product : list) {
           if (product.getPid().equals(pid)){
               return product;
           }
       }
       return null;
   }

   //定义方法删除产品
   public void deleteProdut(Product p) {
     /*  for (Iterator<Product> iterator = list.iterator(); iterator.hasNext(); ) {
           Product next = iterator.next();
           if ( next.equals(p)){
               iterator.remove();
           }
       }*/
     list.remove(p);
   }

   //定义方法,返回包含指定名称的产品
   public List<Product> getProductsContainsName(String name) {
       List<Product> result = new ArrayList<>();
       //遍历lsit集合的每个 产品 ,如果产品名称包含name就添加到result集合中
       for (Product product : list) {
           if ( product.getName().contains( name )){
               result.add(product);
           }
       }
       return result;
   }
 
}

//
**

创建测试类

**

public class Test {
   public static void main(String[] args) {
       ViewManager viewManager = new ViewManager();
       viewManager.showMainView();
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值