完成一个超市仓库商品库存管理系统,系统包含商品类和管理员类,其中商品类和管理员类包含相关属性如下:
管理员(id,账号,密码,姓名,手机号)
商品(id,商品名,类别名,单价,库存量,状态-是否上架,管理员id)
要求功能入下:
系统存在默认管理员账号softeem,密码:admin123 管理员登录系统进入商品管理商品信息录入查询所有商品信息根据类别名称显示该分类下所有商品查询所有下架(状态:0)/上架(状态:1)商品显示所有库存不足商品(库存量 == 0)根据商品id修改商品价格根据商品id修改商品库存量
使用模板方法模式
package com.softeem.supermarket;
public class Comm {
private int cid;//商品id
private String cname; //商品名称
private String sort; //类别
private double price; //价格
private int kucun; //库存
private int state; //状态-是否上架
private Manager man; //管理员ID
public Comm() {
// TODO Auto-generated constructor stub
}
public Comm(int cid, String cname, String sort, double price, int kucun, int state, Manager man) {
super();
this.cid = cid;
ame = cname;
this.sort = sort;
this.price = price;
this.kucun = kucun;
this.state = state;
this.man = man;
}
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
ame = cname;
}
public String getSort() {
return sort;
}
public void setSort(String sort) {
this.sort = sort;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getKucun() {
return kucun;
}
public void setKucun(int kucun) {
this.kucun = kucun;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public Manager getMan() {
return man;
}
public void setMan(Manager man) {
this.man = man;
}
@Override
public String toString() {
return "ID:" + cid + ", 名字:" + cname + ", 类型:" + sort + ", 价格:" + price + ",库存:" + kucun
+ ", 上架/下架情况:" + state + ", 管理员编号:" + man.getSno();
}
}
package com.softeem.supermarket;
import java.util.ArrayList;
import java.util.Objects;
import java.util.Scanner;
public class CommSpuermarket implements SupermarketAble {
ArrayList<Comm> listcom = new ArrayList<>();
/**
* 登陆
*/
@Override
public Object add(Object obj) {
return obj;
}
/**
* 录入
*/
@Override
public boolean luru(Object obj) {
Comm c = (Comm) obj;
return listcom.add(c);
}
/**
* 查询所有
*/
@Override
public ArrayList show(Object obj) {
ArrayList list = new ArrayList();
String str =obj.toString();
for (Comm comm : listcom) {
list.add(comm);
}
return list;
}
/**
* 查询一种
*/
@Override
public ArrayList oneShowList(Object obj) {
ArrayList list = new ArrayList();
String s = obj.toString();
for (Comm comm : listcom) {
if (Objects.equals(comm.getSort(), s)) {
list.add(comm);
}
}
return list;
}
/**
* 查询已下架的
*/
@Override
public ArrayList showNull(Object obj) {
ArrayList list = new ArrayList<>();
ArrayList list2 = new ArrayList<>();
for (Comm comm : listcom) {
if (comm.getKucun()==1) {
list.add(comm);
}
if(comm.getKucun()==0){
list2.add(comm);
}
}
if(((Integer)obj==1)){
if(list.size()==0){
System.out.println("暂无上架产品");
System.err.println(list.size());
}else{
return list;
}
}
if(list2.size()==0){
System.out.println("暂无下架产品");
System.out.println(list.size());
}
return list2;
}
/**
* 查看库存
*/
public ArrayList showKuCun() {
ArrayList list = new ArrayList<>();
for (Comm comm : listcom) {
if (comm.getKucun()==0){
list.add(comm);
}
if(list.size()==0){
System.out.println("暂无");
}
}
return list;
}
/**
* 根据商品id修改商品价格
*/
@Override
public boolean delPrice(Object obj,int i) {
Comm c = (Comm)obj;
boolean flag=true;
for (Comm comm : listcom) {
if(Objects.equals(comm.getCid(), c.getCid())){
System.out.println("请输入要修改的价格");
Scanner sc = new Scanner(System.in);
int i1 =sc.nextInt();
comm.setPrice(i1);
System.out.println("修改成功");
flag=false;
}
}
if(flag){
System.out.println("没有找到该ID");
}
return false;
}
/**
* 根据商品id修改商品库存量
*/
@Override
public boolean delKuCun(Object obj,int i) {
Comm c = (Comm) obj;
boolean flag=true;
for (Comm comm : listcom) {
if(Objects.equals(comm.getCid(), c.getCid())){
System.out.println("请输入要修改的价格");
Scanner sc = new Scanner(System.in);
int i1 =sc.nextInt();
comm.setKucun(i1);
System.out.println("修改成功");
flag=false;
}
}
if(flag){
System.out.println("没有找到该ID");
}
return false;
}
}
package com.softeem.supermarket;
public class Manager {
private int mid; //管理员ID
private String sno; //管理员账号
private String password;//管理员密码
private String mname; //管理员姓名
private String phonenum;//管理员电话号码
public Manager() {
// TODO Auto-generated constructor stub
}
public Manager(int mid, String sno, String password, String mname, String phonenum) {
super();
this.mid = mid;
this.sno = sno;
this.password = password;
this.mname = mname;
this.phonenum = phonenum;
}
public int getMid() {
return mid;
}
public void setMid(int mid) {
this.mid = mid;
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getMname() {
return mname;
}
public void setMname(String mname) {
this.mname = mname;
}
public String getPhonenum() {
return phonenum;
}
public void setPhonenum(String phonenum) {
this.phonenum = phonenum;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((password == null) ? 0 : password.hashCode());
result = prime * result + ((sno == null) ? 0 : sno.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Manager other = (Manager) obj;
if (password == null) {
if (other.password != null)
return false;
} else if (!password.equals(other.password))
return false;
if (sno == null) {
if (other.sno != null)
return false;
} else if (!sno.equals(other.sno))
return false;
return true;
}
}
package com.softeem.supermarket;
import java.util.ArrayList;
import java.util.Objects;
public class ManagerSupermarket implements SupermarketAble {
@Override
public Object add(Object obj) {
// TODO Auto-generated method stub
Manager m = (Manager) obj;
if(m.getSno().equals("softeem") && m.getPassword().equals("admin123")){
return m;
}
return null;
}
@Override
public boolean luru(Object obj) {
// TODO Auto-generated method stub
return false;
}
@Override
public ArrayList show(Object obj) {
return null;
// TODO Auto-generated method stub
}
@Override
public ArrayList oneShowList(Object obj) {
// TODO Auto-generated method stub
return null;
}
@Override
public ArrayList showNull(Object obj) {
// TODO Auto-generated method stub
return null;
}
public ArrayList showKuCun() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean delPrice(Object obj,int i) {
return false;
// TODO Auto-generated method stub
}
@Override
public boolean delKuCun(Object obj,int i) {
return false;
// TODO Auto-generated method stub
}
}
package com.softeem.supermarket;
import java.util.ArrayList;
public interface SupermarketAble {
//登陆
public Object add(Object obj);
//商品信息录入
public boolean luru(Object obj);
//查询所有商品信息
public ArrayList show(Object obj);
//根据类别名称显示该分类下所有商品
public ArrayList oneShowList(Object obj);
//查询所有下架
public ArrayList showNull(Object obj);
//显示所有库存不足商品(库存量 == 0)
public ArrayList showKuCun();
//根据商品id修改商品价格
public boolean delPrice(Object obj,int i);
//根据商品id修改商品库存量
public boolean delKuCun(Object obj,int i);
}
package com.softeem.supermarket;
import java.util.Objects;
import java.util.Scanner;
public class SupermarketSystem {
SupermarketAble sac = new CommSpuermarket();
SupermarketAble sam = new ManagerSupermarket();
Manager man;
Comm com;
public void menu1(){
System.out.println("=======仓库商品库存管理系统=======");
System.out.println("==========1.管理员登陆===========");
System.out.println("==========0.退出================");
Scanner sc1 = new Scanner(System.in);
int i = sc1.nextInt();
switch(i){
case 1:
lonin();
break;
case 0:
System.out.println("再见");
System.exit(0);
break;
}
}
/**
* 信息录入
*/
private void lonin() {
System.out.println("请输入账号/密码");
Scanner sc2 = new Scanner(System.in);
String [] str = sc2.nextLine().split("/");
Manager m = new Manager((Integer)0,str[0],str[1],null,null);
Object obj = sam.add(m);
if(obj!=null){
System.out.println("登陆成功");
man=(Manager)obj;
menu2();
}else{
System.out.println("登陆失败,密码或者用户名错误");
menu1();
}
}
private void menu2() {
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.根据商品id修改商品价格===========");
System.out.println("====================7.根据商品id修改商品库存===========");
System.out.println("====================0.退出==========================");
System.out.println("===================================================");
Scanner sc3 = new Scanner(System.in);
int i = sc3.nextInt();
switch(i){
case 1:
luru();
break;
case 2:
show();
break;
case 3:
snoShow();
break;
case 4:
showPutaway();
break;
case 5:
showNoKucun();
break;
case 6:
UpdatePrice();
break;
case 7:
UpdataKuCun();
break;
case 0:
menu1();
break;
default :
System.out.println("输入错误,请重新输入");
menu2();
break;
}
}
private void UpdataKuCun() {
System.out.println("请输入要修改商品的ID");
Scanner sc8 = new Scanner(System.in);
int i =sc8.nextInt();
sac.delKuCun(com,i);
menu2();
}
private void UpdatePrice() {
System.out.println("请输入要修改商品的ID");
Scanner sc7 = new Scanner(System.in);
int i = sc7.nextInt();
sac.delPrice(com, i);
menu2();
}
private void showNoKucun() {
for(Object obj:sac.showKuCun()){
System.out.println(obj);
}
menu2();
}
private void showPutaway() {
System.out.println("请输入要查询上架(1)/下架(0)");
Scanner sc6 = new Scanner(System.in);
int i = sc6.nextInt();
for (Object obj : sac.showNull(i)) {
System.out.println(obj);
}
menu2();
}
private void snoShow() {
System.out.println("请输入类别名");
Scanner sc5 = new Scanner(System.in);
String str = sc5.nextLine();
for (Object obj : sac.oneShowList(str)) {
System.out.println(obj);
}
menu2();
}
private void show() {
for (Object obj : sac.show(man.getMid())) {
System.out.println(obj);
}
menu2();
}
private void luru() {
System.out.println("请输入商品信息");
System.out.println("id/商品名/类别名/单价/库存量/状态(0/1)/管理员id");
Scanner sc4 = new Scanner(System.in);
String []str = sc4.nextLine().split("/");
Comm c = new Comm(Integer.parseInt(str[0]),str[1],str[2],Double.parseDouble(str[3]),Integer.parseInt(str[4]),Integer.parseInt(str[5]),man);
if(sac.luru(c)){
com=c;
System.out.println("添加成功");
}
menu2();
}
}
package com.softeem.supermarket;
public class Test {
public static void main(String[] args) {
SupermarketSystem s = new SupermarketSystem();
s.menu1();
}
}
还有一些bug等日后有时间再修改