java基本的商品管理系统

java基本商品管理系统

此商品管理系统与我之前写过的电商系统、员工管理系统类似,更新的功能有同时修改商品名与价格、多项删除指定id商品,并在多项删除后退出系统

系统需求

java基本的商品管理系统_第1张图片

java基本的商品管理系统_第2张图片

java基本的商品管理系统_第3张图片

需求分析

根据上述需求图,分析此商品管理系统

商品属性

  • 商品编号(pid)
  • 商品名(pname)
  • 单价(price)
  • 标记(flag)
  • 类别编号(category_id)

功能

  • 添加商品
  • 修改商品名、价格
  • 删除指定id的商品
  • 删除所有商品(多项删除)
  • 查询指定id的商品
  • 查询所有商品
  • 退出系统

编程分析

根据以上需求,创建三个类

  • Product类:定义商品属性与构造器
  • ProductManage类:声明Product的功能方法
  • ProductClient类:绘制功能菜单,实现控制台输入,实现不同功能

代码如下

Product类

package com.max.org;

/**
 * 
 * @author max
 *
 */
public class Product {

	private int pid;
	private String pname;
	private int price;
	private int flag;
	private String category_id;

	public Product() {
		// TODO Auto-generated constructor stub
	}

	public Product(int pid, String pname, int price, int flag, String category_id) {
		super();
		this.pid = pid;
		this.pname = pname;
		this.price = price;
		this.flag = flag;
		this.category_id = category_id;
	}

	public int getPid() {
		return pid;
	}

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

	public String getPname() {
		return pname;
	}

	public void setPname(String pname) {
		this.pname = pname;
	}

	public int getPrice() {
		return price;
	}

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

	public int getFlag() {
		return flag;
	}

	public void setFlag(int flag) {
		this.flag = flag;
	}

	public String getCategory_id() {
		return category_id;
	}

	public void setCategory_id(String category_id) {
		this.category_id = category_id;
	}

	@Override
	public String toString() {
		return "Product [pid=" + pid + ", pname=" + pname + ", price=" + price + ", flag=" + flag + ", category_id=" + category_id + "]";
	}

}

ProductManage类

package com.max.org;

import java.util.ArrayList;
/**
 * 
 * @author max
 *
 */
public class ProductManage {

	static ArrayList list = new ArrayList<>();

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

	/** 根据id修改指定商品的价格 */
	public boolean modifyPrice(int id, int price) {
		Product pro = findById(id);
		if (pro != null) {
			pro.setPrice(price);
			return true;
		}
		return false;
	}

	/** 根据id修改指定商品的商品名 */
	public boolean modifyPname(int id, String pname) {
		Product pro = findById(id);
		if (pro != null) {
			pro.setPname(pname);
			return true;
		}
		return false;
	}

	/** 根据商品id删除商品 */
	public boolean delete(int id) {
		Product pro = findById(id);
		if (pro != null) {
			return list.remove(pro);
		}
		return false;
	}

	/** 查询指定id的商品 */
	public Product findById(int pid) {
		Product pro = null;
		for (Product p : list) {
			if (p.getPid() == pid) {
				pro = p;
				break;
			}
		}
		return pro;
	}

	/** 查询所有商品 */
	public ArrayList findAll() {
		return list;
	}

}

ProductClient类

package com.max.org;

import java.util.ArrayList;
import java.util.Scanner;
/**
 * 
 * @author max
 *
 */
public class ProductClient {

	ProductManage pm = new ProductManage();
	private Scanner sc;
	private int index = 0;

	public void menu() {
		msg("=========================");
		msg("========商品管理系统=========");
		msg("====输入以下命令进行操作=======");
		msg("====【C】创建商品=============");
		msg("====【U】修改商品名与价格======");
		msg("====【D】删除指定id商品=======");
		msg("====【DA】删除所有商品========");
		msg("====【I】通过id查询===========");
		msg("====【FA】查询所有商品=========");
		msg("====【Q】退出系统=============");
		msg("=========================");
		msg("请输入操作指令:");
		start();
	}

	public void start() {
		sc = new Scanner(System.in);
		String i = sc.next().toUpperCase();
		switch (i) {
		case "C":
			add();
			break;
		case "U":
			updatePrice();
			break;
		case "D":
			delete();
			break;
		case "DA":
			deleteAll();
			break;
		case "I":
			findById();
			break;
		case "FA":
			findAll();
			break;
		case "Q":
			exit();
			break;
		default:
			msg("请输入正确的操作指令!!!");
			break;
		}
		menu();
	}

	/** 添加商品 */
	public void add() {
		msg("请输入商品信息(按以下格式:商品编号/商品名/单价/标记/类别编号)");
		sc = new Scanner(System.in);
		String s = sc.nextLine();
		String[] info = s.split("/");
		if (pm.findById(Integer.parseInt(info[0])) != null) {
			msg("该编号的商品已存在,请重新输入");
			add();
			return;
		} else {
			Product p = new Product(Integer.parseInt(info[0]), info[1], Integer.parseInt(info[2]),
					Integer.parseInt(info[3]), info[4]);
			pm.add(p);
			msg("添加成功");
		}
	}

	/** 查询所有 */
	public void findAll() {
		msg("商品编号\t商品名\t单价\t标记\t类别编号");
		for (Product p : pm.findAll()) {
			msg(p);
		}
	}

	/** 根据id查询商品的客户端实现 */
	public void findById() {
		sc = new Scanner(System.in);
		msg("请输入需要查询的商品编号:");
		int id = sc.nextInt();
		Product p = pm.findById(id);
		if (p == null) {
			msg("您输入的商品编号不存在");
			findById();
			return;
		}
		msg(p);
	}

	/** 根据商品id删除商品的客户端实现 */
	public void delete() {
		sc = new Scanner(System.in);
		msg("请输入删除商品的编号:");
		int id = sc.nextInt();
		if (pm.delete(id)) {
			msg("删除成功!");
		} else {
			msg("删除失败!");
		}
	}

	/** 删除所有商品 */
	public void deleteAll() {
		sc = new Scanner(System.in);
		msg("请输入删除商品编号:");
		int id = sc.nextInt();
		Product p = pm.findById(id);
		if (id == -1) {
			msg("您确定要删除被标记的"+index+"个商品吗?请输入y:");
			if(sc.next().toLowerCase().equals("y")) {
				msg("删除成功");
				System.exit(1);
			}
		}
		if (pm.delete(id)) {
			msg("已标记要删除的商品"+p);
		} else {
			msg("删除失败!");
		}
		index++;
		// 递归
		deleteAll();
	}

	/** 根据商品id修改价格的客户端实现 */
	public void updatePrice() {
		sc = new Scanner(System.in);
		msg("请输入编辑商品的编号:");
		int id = sc.nextInt();
		Product pro = pm.findById(id);
		if (pro == null) {
			msg("修改商品已不存在");
			menu();
		} else {
			msg(pro);
		}
		msg("请输入修改的商品名:");
		String pname = sc.next();
		msg("请输入编辑商品的价格:");
		int price = sc.nextInt();
		if (pm.modifyPrice(id, price) && pm.modifyPname(id, pname)) {
			msg("修改成功");
		} else {
			msg("修改失败");
		}
	}

	/** 系统退出 */
	public void exit() {
		sc = new Scanner(System.in);
		msg("是否确定退出?(Y/N)");
		String op = sc.next();
		if (op.equalsIgnoreCase("y")) {
			msg("谢谢使用,再见!");
			System.exit(1);
		}
	}

	public void msg(Object obj) {
		System.out.println(obj);
	}

	public static void main(String[] args) {

		new ProductClient().menu();

	}

}

功能菜单进行了简单美化,但连接数据库还有待进一步实现

你可能感兴趣的:(Java基础)