java基本商品管理系统
此商品管理系统与我之前写过的电商系统、员工管理系统类似,更新的功能有同时修改商品名与价格、多项删除指定id商品,并在多项删除后退出系统
系统需求
需求分析
根据上述需求图,分析此商品管理系统
商品属性
- 商品编号(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<Product> 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<Product> 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();
}
}
功能菜单进行了简单美化,但连接数据库还有待进一步实现