小弟不才,刚入java,初写一个简单的管理系统,还有很多需要优化的地方,也许还有一些bug,请各位大佬看了多多批评,鄙人谨听教诲。
完成一个超市仓库商品库存管理系统,系统包含商品类和管理员类,其中商品类和管理员类包含相关属性如下:
管理员(id,账号,密码,姓名,手机号)
商品(id,商品名,类别名,单价,库存量,状态-是否上架,管理员id)
要求功能入下:
-
- 系统存在默认管理员账号softeem,密码:admin123
- 管理员登录系统进入商品管理
- 商品信息录入
- 查询所有商品信息
- 根据类别名称显示该分类下所有商品
- 查询所有下架(状态:0)/上架(状态:1)商品
- 显示所有库存不足商品(库存量 == 0)
- 根据商品id修改商品价格
- 根据商品id修改商品库存量
package supermarket_01;
/**
* 管理员类
* @author Joe
* @date 2018年7月19日
*
*/
public class Admin {
private int id;//编号
private String username;//账号
private String password;//密码
private String name;//姓名
private String phone;//手机号
public Admin() {
// TODO Auto-generated constructor stub
}
public Admin(int id, String username, String password, String name, String phone) {
super();
this.id = id;
this.username = username;
this.password = password;
this.name = name;
this.phone = phone;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((password == null) ? 0 : password.hashCode());
result = prime * result + ((username == null) ? 0 : username.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;
Admin other = (Admin) obj;
if (password == null) {
if (other.password != null)
return false;
} else if (!password.equals(other.password))
return false;
if (username == null) {
if (other.username != null)
return false;
} else if (!username.equals(other.username))
return false;
return true;
}
@Override
public String toString() {
return "管理员 编号=" + id + ", 姓名=" + name + ", 手机号=" + phone ;
}
}
package supermarket_01;
import java.util.ArrayList;
/**
* 商品类
* @author Joe
* @date 2018年7月19日
*
*/
public class Goods {
private int id;
private String gname;//商品名
private String sort;//类别名
private int price;//单价
private int inventory;//库存
private int putaway;//状态是否上架(0为下架,1为上架)
private Admin Aid;//管理员id
public Goods() {
// TODO Auto-generated constructor stub
}
public Goods(int id, String gname, String sort, int price, int inventory, int putaway) {
super();
this.id = id;
this.gname = gname;
this.sort = sort;
this.price = price;
this.inventory = inventory;
this.putaway = putaway;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getGname() {
return gname;
}
public void setGname(String gname) {
this.gname = gname;
}
public String getSort() {
return sort;
}
public void setSort(String sort) {
this.sort = sort;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getInventory() {
return inventory;
}
public void setInventory(int inventory) {
this.inventory = inventory;
}
public int getPutaway() {
return putaway;
}
public void setPutaway(int putaway) {
this.putaway = putaway;
}
public Admin getAid() {
return Aid;
}
public void setAid(Admin aid) {
Aid = aid;
}
@Override
public String toString() {
return "Goods [编号=" + id + ", 商品名=" + gname + ", 类别名=" + sort + ", 单价=" + price + ", 库存="
+ inventory + ", 状态=" + putaway + "]";
}
}
package supermarket_01;
import java.util.ArrayList;
/**
* 基本功能
* @author Joe
* @date 2018年7月19日
*
*/
public interface BasicManager {
boolean add(Object obj);
Object login(Object obj);//管理员登录
ArrayList findAll();//查询所有
ArrayList findType(Object obj);//根据类别名称显示该分类下所有商品
ArrayList findOne(Object obj);//查询单个
ArrayList findCondition(Object obj);//商品状态
ArrayList findInventory(Object obj);//库存不足商品
boolean update(Object obj);//h) 根据商品id修改商品价格
}
package supermarket_01;
import java.util.ArrayList;
import java.util.Objects;
public class AdminManager implements BasicManager{
@Override
public boolean add(Object obj) {
// TODO Auto-generated method stub
return false;
}
/**
* 管理员登录
*/
@Override
public Object login(Object obj) {
Admin a = (Admin)obj;
//比较账号密码是否正确
if(Objects.equals(a.getUsername(), "softeem")&&Objects.equals(a.getPassword(), "admin123")){
return a;
}
return null;
}
@Override
public ArrayList findAll() {
// TODO Auto-generated method stub
return null;
}
@Override
public ArrayList findOne(Object obj) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean update(Object obj) {
// TODO Auto-generated method stub
return false;
}
@Override
public ArrayList findType(Object obj) {
// TODO Auto-generated method stub
return null;
}
@Override
public ArrayList findCondition(Object obj) {
// TODO Auto-generated method stub
return null;
}
@Override
public ArrayList findInventory(Object obj) {
// TODO Auto-generated method stub
return null;
}
}
package supermarket_01;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
/**
* 主函数
* @author Joe
* @date 2018年7月22日
*
*/
public class Main {
BasicManager bm = new AdminManager();
BasicManager bm1 = new GoodsManager();
public void menu1() {
p("===========超市仓库商品库存管理系统========");
p("===========管理员登录系统===============");
logins();
}
public void menu2() {
p("================【1】商品信息录入=====================================");
p("================【2】查询所有商品信息==================================");
p("================【3】根据类别名称显示该分类下所有商品=======================");
p("================【4】查询所有下架(状态:0)/上架(状态:1)商品===============");
p("================【5】显示所有库存不足商品(库存量 == 0)=====================");
p("================【6】根据商品id修改商品价格和库存量========================");
p("================【7】退出系统=========================================");
Scanner input = new Scanner(System.in);
int i = input.nextInt();
switch (i) {
case 1:
adds();
break;
case 2:
findAlls();
break;
case 3:
findTypes();
break;
case 4:
findConditions();
break;
case 5:
findInventorys();
break;
case 6:
updates();
break;
case 7:
p("谢谢使用!");
System.exit(0);
}
}
private void updates() {
p("请输入商品编号:要修改的价格、库存量(例如:1/100/100)");
Scanner input = new Scanner(System.in);
String[] i = input.next().split("/");
Goods go = new Goods(Integer.parseInt(i[0]), null, null, Integer.parseInt(i[1]), Integer.parseInt(i[2]), 0);
if(bm1.update(go)){
p("修改成功!");
}else{
p("修改失败!");
}
menu2();
}
private void findInventorys() {
p("库存不足商品:");
ArrayList<Goods> a = bm1.findInventory(0);
for (Goods g : a) {
p(g);
}
menu2();
}
private void findConditions() {
p("请输入商品状态(例如:上架1,下架0)");
Scanner input = new Scanner(System.in);
try {
int i = input.nextInt();
ArrayList<Goods> a = bm1.findCondition(i);
for (Goods g : a) {
p(g);
}
} catch (InputMismatchException e) {
p("请输入正确的指令!");
findConditions();
}
menu2();
}
private void findTypes() {
p("请输入商品类别");
Scanner input = new Scanner(System.in);
String s = input.nextLine();
ArrayList<Goods> a = bm1.findType(s);
for (Goods g : a) {
p(g);
}
menu2();
}
private void findAlls() {
ArrayList<Goods> a = bm1.findAll();
for (Goods g : a) {
p(g);
}
menu2();
}
private void adds() {
p("添加商品:(例如:id(int)/商品名(String)/类别名(String)/单价(int)/库存(int)/状态(0下架、1上架)(int))");
Scanner input = new Scanner(System.in);
String[] st = input.next().split("/");
Goods go = new Goods(Integer.parseInt(st[0]), st[1], st[2], Integer.parseInt(st[3]), Integer.parseInt(st[4]),
Integer.parseInt(st[5]));
if(bm1.add(go)){
p("添加成功!");
}else{
p("添加失败");
}
menu2();
}
private void logins() {
p("请输入账号和密码(例如:账号/密码)");
Scanner input = new Scanner(System.in);
String[] st = input.next().split("/");
Admin adm = new Admin(1, st[0], st[1], "乔翰林", "15171487803");
Object obj = bm.login(adm);
if (obj != null) {
p("欢迎你" + adm.toString());
} else {
p("账号或密码错误,请重新输入!");
logins();
}
menu2();
}
public void p(Object obj) {
System.out.println(obj);
}
public static void main(String[] args) {
Main m = new Main();
m.menu1();
}
}