利用ArrayList實作電商系統子產品功能
功能介紹
完成一個電商系統的商品子產品功能
管理者類包含以下屬性:賬号、密碼(初始賬号為admin、初始密碼為admin)
商品類包含以下屬性:商品ID,商品名,類别名,單價,庫存量,産地,計量機關等資訊
要求實作商品管理功能以及管理者登入功能,具體如下:
- 管理者登入(賬号密碼固定admin/admin)
- 修改管理者密碼
- 商品添加
- 檢視商品清單
- 查詢指定id的商品
- 根據商品id删除商品
- 根據id修改指定商品的價格
- 根據id修改指定商品的庫存
- 根據商品類别查詢所有商品
- 查詢指定價格區間的商品資訊
分析
要實作這些功能,我建立了5個類:
- Manager類(管理者類):定義管理者屬性,存儲管理者資訊
- ManagerMode類(管理者管理類):聲明管理者功能:管理者登入、修改管理者密碼
- Product類(商品類):定義商品屬性,存儲商品資訊
- ProductMode類(商品管理類):聲明商品的功能方法:商品添加、查詢商品清單、查詢指定id的商品、根據商品id删除商 品、根據id修改指定商品的價格、根據id修改指定商品的庫存、根據商品類别查詢所有商品、查詢指定價格區間的商品資訊
- ManagerClient類(管理者用戶端類):程式的主入口,展示管理者輸入控制台界面,通過控制台輸入實作各子產品功能
在ProductMode類中主要用到了ArrayList來存放商品資訊,是因為動态數組可以快速的添加、删除數組元素
代碼如下
Manager類
public class Manager {
private String id;
private String password;
//初始化管理者賬号、密碼
public Manager() {
id = "admin";
password = "admin";
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
ManagerMode類
public class ManagerMode {
Manager m = new Manager();
/**管理者登入*/
public boolean sign(String id,String password) {
if(m.getId().equals(id) && m.getPassword().equals(password)) {
return true;
}
return false;
}
/**修改管理者密碼*/
public boolean modify(String password) {
if(m.getPassword()!= null) {
m.setPassword(password);
return true;
}
return false;
}
}
Product類
public class Product {
private int id;
private String name;
private String type;
private double price;
private int count;
private String place;
private String unit;
public Product() {
}
public Product(int id, String name, String type, double price, int count, String place, String unit) {
super();
this.id = id;
this.name = name;
this.type = type;
this.price = price;
this.count = count;
this.place = place;
this.unit = unit;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
@Override
public String toString() {
return id + "\t" + name + "\t" + type + "\t" + price + "\t" + count
+ "\t" + place + "\t" + unit ;
}
}
ProductMode類
import java.util.ArrayList;
public class ProductMode {
static ArrayList<Product> list = new ArrayList<>();
/**商品添加*/
public void add(Product p) {
list.add(p);
}
/**查詢所有商品*/
public ArrayList<Product> findAll(){
return list;
}
/**查詢指定id的商品*/
public Product findById(int id) {
Product pro = null;
for(Product p : list) {
if(p.getId() == id) {
pro = p;
break;
}
}
return pro;
}
/**根據商品id删除商品*/
public boolean delete(int id){
Product pro = findById(id);
if(pro != null){
return list.remove(pro);
}
return false;
}
/**根據id修改指定商品的價格*/
public boolean modifyPrice(int id,double price) {
Product pro = findById(id);
if(pro != null) {
pro.setPrice(price);
return true;
}
return false;
}
/**根據id修改指定商品的庫存*/
public boolean modifyCount(int id,int count) {
Product pro = findById(id);
if(pro != null) {
pro.setCount(count);
return true;
}
return false;
}
/**根據商品類别查詢所有商品*/
public ArrayList<Product> findByType(String type){
ArrayList<Product> pros = new ArrayList<>();
for(Product p:list) {
if(type.equals(p.getType())) {
pros.add(p);
}
}
return pros;
}
/**查詢指定價格區間的商品資訊*/
public ArrayList<Product> findByPrices(double price1,double price2){
ArrayList<Product> pros = new ArrayList<>();
for(Product p: list) {
if(p.getPrice()>=price1 && p.getPrice()<=price2) {
pros.add(p);
}
}
return pros;
}
}
ManagerClient類
import java.util.ArrayList;
import java.util.Scanner;
import com.softeem.hrms.Emp;
/**
*
* @author max
*
*/
public class ManageClient {
private ManagerMode mm = new ManagerMode();
private ProductMode pm = new ProductMode();
private Scanner sc;
/**管理者登入*/
public void signin() {
sc = new Scanner(System.in);
msg("歡迎使用max的電商系統");
msg("請輸入賬戶名:");
String id = sc.next();
msg("請輸入密碼:");
String password = sc.next();
if(mm.sign(id, password)) {
menu();
}else {
msg("賬戶不存在或密碼錯誤");
msg("請重新輸入密碼");
signin();
}
}
public void menu() {
msg("=========================");
msg("========max電商系統========");
msg("====【1】修改密碼===========");
msg("====【2】添加商品===========");
msg("====【3】商品清單===========");
msg("====【4】查詢商品===========");
msg("====【5】删除商品===========");
msg("====【6】修改商品價格========");
msg("====【7】修改商品庫存========");
msg("====【8】根據類别查詢商品=====");
msg("====【9】查詢價格區間的商品====");
msg("====【0】退出系統===========");
msg("=========================");
msg("請輸入操作指令:");
start();
}
public void start() {
sc = new Scanner(System.in);
int i = sc.nextInt();
switch(i){
case 1:
modifyPwd();
break;
case 2:
add();
break;
case 3:
list();
break;
case 4:
queryById();
break;
case 5:
delete();
break;
case 6:
updatePrice();
break;
case 7:
updateCount();
break;
case 8:
queryByType();
break;
case 9:
queryByPrice();
break;
case 0:
exit();
break;
default:
msg("請輸入正确的操作指令!!!");
break;
}
menu();
}
/**修改管理者密碼*/
public void modifyPwd() {
msg("請輸入新密碼:");
String password = sc.next();
if(mm.modify(password)) {
msg("修改成功");
}else {
msg("修改失敗");
}
}
/**添加商品*/
public void add() {
msg("請輸入商品資訊(按以下格式:商品id/商品名/類别/單價/庫存/産地/計量機關)");
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],
info[2],
Double.parseDouble(info[3]),
Integer.parseInt(info[4]),
info[5],
info[6] );
pm.add(p);
msg("添加成功");
}
}
/**商品清單*/
public void list() {
msg("商品id\t商品名\t類别\t單價\t庫存量\t産地\t計量機關");
for (Product p: pm.findAll()) {
msg(p);
}
}
/**根據id查詢商品的用戶端實作*/
public void queryById() {
sc = new Scanner(System.in);
msg("請輸入需要查詢的商品id:");
int id = sc.nextInt();
Product p = pm.findById(id);
if(p == null) {
msg("您輸入的商品id不存在");
queryById();
return;
}
msg("商品id\t商品名\t類别\t單價\t庫存量\t産地\t計量機關");
msg(p);
}
/**根據商品id删除商品的用戶端實作*/
public void delete() {
sc = new Scanner(System.in);
msg("請輸入商品的id:");
int id = sc.nextInt();
if(pm.delete(id)){
msg("删除成功!");
}else{
msg("删除失敗!");
}
}
/**根據商品id修改價格的用戶端實作*/
public void updatePrice() {
sc = new Scanner(System.in);
msg("請輸入修改商品的id:");
int id = sc.nextInt();
msg("請輸入修改商品的價格:");
double price = sc.nextDouble();
if(pm.modifyPrice(id, price)) {
msg("修改成功");
}else {
msg("修改失敗");
}
}
/**根據商品id修改庫存的用戶端實作*/
public void updateCount() {
sc = new Scanner(System.in);
msg("請輸入修改商品的id:");
int id = sc.nextInt();
msg("請輸入修改商品的庫存:");
int count = sc.nextInt();
if(pm.modifyCount(id, count)) {
msg("修改成功");
}else {
msg("修改失敗");
}
}
/**根據商品類别查詢所有商品的用戶端實作*/
public void queryByType() {
sc = new Scanner(System.in);
msg("請輸入需要查詢的類别名稱:");
String type = sc.next();
ArrayList<Product> list = pm.findByType(type);
msg("商品id\t商品名\t類别\t單價\t庫存量\t産地\t計量機關");
if(list.size()>0){
for (Product p : list) {
msg(p);
}
}
}
/**查詢指定價格區間的商品的用戶端實作*/
public void queryByPrice() {
sc = new Scanner(System.in);
msg("請輸入需要查詢的價格下界:");
double price1 = sc.nextDouble();
msg("請輸入需要查詢的價格上界:");
double price2 = sc.nextDouble();
ArrayList<Product> list = pm.findByPrices(price1,price2);
msg("商品id\t商品名\t類别\t單價\t庫存量\t産地\t計量機關");
if(list.size()>0){
for (Product p : list) {
msg(p);
}
}
}
/**系統退出*/
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 ManageClient().signin();
}
}
以上就是此簡易電商系統子產品功能源碼
接下來看運作結果
輸入正确的賬戶名與密碼才可登入系統
輸錯則重新輸入
接下來按照控制台菜單依步驟操作
1.修改密碼
2.添加商品
3.商品清單
4.查詢商品
5.删除商品
6.修改商品價格
7.修改商品庫存
8.根據類别查詢商品
9.查詢價格區間的商品
0.退出系統
以上就是此簡易系統的實作,希望可以幫到對java感興趣的朋友,也希望各位評論探讨更多java知識