JAVA寫一個小型水果超市

初學java,還不太熟悉,技術有限,多多包涵,哈哈。

水果超市 包括以下功能:

1.添加水果
2.顯示水果
3.根據編號查詢水果
4.刪除水果
5.添加購物車
6.查看購物車
7.根據編號修改水果

0.退出

下面是我的包及類的構造:

代碼展示:

package com.gem.fruit.entity;

public class Fruit {
    private int fruitID;
    private String name;
    private double price;
    private int count;
    private String address;
    public int getFruitID() {
        return fruitID;
    }
    public void setFruitID(int fruitID) {
        this.fruitID = fruitID;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    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 getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public Fruit() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Fruit(int fruitID, String name, double price, int count, String address) {
        super();
        this.fruitID = fruitID;
        this.name = name;
        this.price = price;
        this.count = count;
        this.address = address;
    }
    @Override
    public String toString() {
        return "Fruit [fruitID=" + fruitID + ", name=" + name + ", price=" + price + ", count=" + count + ", address="
                + address + "]";
    }
    
}

package com.gem.fruit.entity;

public class User {
    private int userId;
    private String userName;
    private String userPassword;
    
    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserPassword() {
        return userPassword;
    }

    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword;
    }
    
    public User(int userId,String userName, String userPassword) {
        super();
        this.userId=userId;
        this.userName = userName;
        this.userPassword = userPassword;
    }
    
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((userName == null) ? 0 : userName.hashCode());
        result = prime * result + ((userPassword == null) ? 0 : userPassword.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;
        User other = (User) obj;
        if (userName == null) {
            if (other.userName != null)
                return false;
        } else if (!userName.equals(other.userName))
            return false;
        if (userPassword == null) {
            if (other.userPassword != null)
                return false;
        } else if (!userPassword.equals(other.userPassword))
            return false;
        return true;
    }

    public User() {
        super();
        User user=new User(10001,"admin","123456");
        // TODO Auto-generated constructor stub
    }

    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return "User [userId="+userId+",userName="+userName+",userPassword="+userPassword+"]";
    }
    
    
}

package com.gem.fruit.entity;

import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class Cart {
    private Map<Integer,Item> maps=new HashMap<>();
    public void addCart(Item item) {
        if(maps.size()>0) {
            Set<Integer> ids=maps.keySet();
            boolean b=false;
            for(Integer i:ids) {
                if(i.equals(item.getFruit().getFruitID())) {
                    Item it=maps.get(i);
                    it.setBuyCount(it.getBuyCount()+item.getBuyCount());
                    it.setAllPrice(it.getAllPrice()+item.getAllPrice());
                    maps.put(i, it);
                    b=true;
                    break;
                }
            }if(!b) {
                maps.put(item.getFruit().getFruitID(), item);
            }
        }else {
            maps.put(item.getFruit().getFruitID(), item);
        }
    }
    public void showCart() {
        if(maps.size()>0) {
            double allPrice=0;
            System.out.println("商品名稱\t"+"商品單價\t"+"購買數量\t"+"總價格\t");
            Collection<Item> items=maps.values();
            for(Item i:items) {
                System.out.println(i.getFruit().getName()+"\t"+i.getFruit().getPrice()+"\t"+i.getBuyCount()+"\t"+i.getAllPrice());
                allPrice+=i.getAllPrice();
            }
            System.out.println("\t\t總價格是:"+allPrice);
        }else {
            System.out.println("購物車沒有商品,趕緊去買買買買");
        }
        
    }
}

package com.gem.fruit.entity;

public class Item {
    private Fruit fruit;
    private int buyCount;
    private double allPrice;
    public Fruit getFruit() {
        return fruit;
    }
    public void setFruit(Fruit fruit) {
        this.fruit = fruit;
    }
    public int getBuyCount() {
        return buyCount;
    }
    public void setBuyCount(int buyCount) {
        this.buyCount = buyCount;
    }
    public double getAllPrice() {
        return allPrice;
    }
    public void setAllPrice(double allPrice) {
        this.allPrice = allPrice;
    }
    public Item() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Item(Fruit fruit, int buyCount, double allPrice) {
        super();
        this.fruit = fruit;
        this.buyCount = buyCount;
        this.allPrice = allPrice;
    }
    
}

package com.gem.fruit.dao;

import com.gem.fruit.entity.User;

public interface IUserDao {
    boolean Login(User user);
    void register(User user);
}

package com.gem.fruit.dao;

import com.gem.fruit.entity.User;

public class UserImpl implements IUserDao{
    static User users []=new User[10];
    static int index=0;
    public UserImpl() {
        User u=new User(101,"admin","123");
        users[index++]=u;
    }
    @Override
    public boolean  Login(User user) {
        if(user==null) {
            return false;
        }
        
        for(int i=0;i<users.length;i++) {
            if(user.equals(users[i])){
                return true;
            }
        }
        return false;
    }

    @Override
    public void register(User user) {
        if(index==users.length) {
            User newArry[]=new User[users.length];
            for(int i=0;i<users.length;i++) {
                newArry[i]=users[i];
            }
            users=newArry;
            users[index++]=user;
        }else {
            users[index++]=user;
        }
        
    }

}

package com.gem.fruit.dao;


import java.util.List;

import com.gem.fruit.entity.Fruit;

public interface IFruitDao {
    public void  add(Fruit fruit);
    public List<Fruit> queryAllFruit();
    public Fruit  queryFruitById(int id);
    public void removeFruit(int id);
    public void modifyFruitByNum(Fruit fruit);
    
}

package com.gem.fruit.dao;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.gem.fruit.entity.Fruit;

public class FruitDaoImpl implements IFruitDao{
    List<Fruit> fs=new ArrayList();
    int index=0;
    @Override
    public void add(Fruit fruit) {
        fs.add(fruit);
       }

    @Override
    public List<Fruit> queryAllFruit() {
        return fs;
    }

    @Override
    public Fruit queryFruitById(int id) {
        for(Fruit f:fs) {
            if(f.getFruitID()==id) {
                return f;
            }
        }
        return null;
        
    }

    @Override
    public void removeFruit(int id) {
        for(Fruit f:fs) {
            if(f.getFruitID()==id) {
                fs.remove(f);
                break;
            }
        }
    }
    public void modifyFruitByNum(Fruit fruit) {
        for(Fruit f:fs) {
            if(f.getFruitID()==fruit.getFruitID()) {
                fs.remove(f);
                break;
            }
        }
        fs.add(fruit);
    }
}

package com.gem.fruit.main;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import com.gem.fruit.dao.FruitDaoImpl;
import com.gem.fruit.dao.IFruitDao;
import com.gem.fruit.dao.IUserDao;
import com.gem.fruit.dao.UserImpl;
import com.gem.fruit.entity.Cart;
import com.gem.fruit.entity.Fruit;
import com.gem.fruit.entity.Item;
import com.gem.fruit.entity.User;

public class mainApp {
    static  IUserDao ud=new UserImpl();
    static  IFruitDao fd=new FruitDaoImpl();
    static Scanner sc=new Scanner(System.in);
    static mainApp ma=new mainApp();
     Cart cart=new Cart();
    int count;
    public static void main(String[] args) {
        System.out.println("請選擇操作:(登錄(L)註冊(R))");
        String op=sc.next();
        if("R".equals(op)) {
            ma.register();
            System.out.println("註冊成功,請登錄");
            ma.loginCl();
            ma.operator();
            
        }else if("L".equals(op)){
            ma.loginCl();
            ma.operator();
       }else {
                System.out.println("輸入錯誤系統退出");
                System.exit(0);
            }
        }
    
    public void operator() {
        Scanner sc=new Scanner(System.in);
        while(true) {
            showMenu();
            System.out.println("請輸入您要進行的操作");
            String op=sc.next();
            switch (op) {
            case "1":
                ma.addFruit(sc);
                ma.showFruit();
                break;
            case "2":
                ma.showFruit();
                break;    
            case "3":
                System.out.println("請輸入水果編號");
                String num=sc.next();
                ma.showFruitByNum(num);
                break;
            case "4":
                System.out.println("請輸入水果編號:");
                String num2=sc.next();
                ma.removeFruit(num2);
                ma.showFruit();
                break;
            case "5":
                ma.showFruit();
                System.out.println("請輸入所要購買的水果的編號:");
                num=sc.next();
                System.out.println("請輸入購買數量:");
                int count=sc.nextInt();
                ma.addCart(Integer.parseInt(num), count);
                break;
            case "6":
                cart.showCart();
                break;
            case "7":
                ma.showFruit();
                ma.modifyFruit();
                ma.showFruit();
                break;
            case "0":
                System.out.println("退出系統,歡迎下次再來,拜拜");
                System.exit(0);
                break;
            default:
                System.out.println("輸入錯誤,退出系統");
                System.exit(0);
                break;
            }
        }
        
    }
    public void register() {
        System.out.println("請輸入id");
        int id=sc.nextInt();
        System.out.println("請輸入名字");
        String name=sc.next();
        System.out.println("請輸入密碼");
        String password=sc.next();
        User user=new User(id,name,password);
        ud.register(user);
    }
    public boolean login() {
        System.out.println("請輸入名字");
        String  name=sc.next();
        System.out.println("請輸入密碼");
        String password=sc.next();
        User user=new User(0,name,password);
        return ud.Login(user);
    }
    public void addFruit(Scanner sc) {
        System.out.println("請輸入水果編號");
        int fruitId=sc.nextInt();
        System.out.println("請輸入水果名字");
        String fruitName=sc.next();
        System.out.println("請輸入水果價格");
        double fruitPrice=sc.nextDouble();
        System.out.println("請輸入水果庫存");
        int fruitCount=sc.nextInt();
        System.out.println("請輸入水果產地");
        String fruitAddress=sc.next();
        Fruit fruit=new Fruit(fruitId,fruitName,fruitPrice,fruitCount,fruitAddress);
        fd.add(fruit);
    }
    public void showFruitByNum(String num) {
        Fruit  f = fd.queryFruitById(Integer.parseInt(num));
        
        if(f != null) {
            System.out.println("編號\t"+"名稱\t"+"價格\t"+"庫存\t"+"產地\t");
            System.out.println(f.getFruitID()+"\t"+f.getName()+"\t"+f.getPrice()+"\t"+f.getCount()+"\t"+f.getAddress());
        } else {
            
            System.out.println("此水果不存在。。。。。。");
        }
    }
    
    public void showFruit() {
        List<Fruit> f=fd.queryAllFruit();
        if(f.isEmpty()) {
            System.out.println("超市裏沒有水果信息");
        }else {
            System.out.println("水果編號\t"+"水果名字\t"+"水果價格\t"+"水果庫存\t"+"水果產地\t");
            for(Fruit fruit:f) {
                System.out.println(fruit.getFruitID()+"\t"+fruit.getName()+"\t"+fruit.getPrice()+"\t"+fruit.getCount()+"\t"+fruit.getAddress());
            }
        }
    }
    public void removeFruit(String num) {
        fd.removeFruit(Integer.parseInt(num));
    }
    public void showMenu() {
        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.查看購物車");
        System.out.println("7.根據編號修改水果");
        System.out.println("0.退出");
        System.out.println("=================================");
        
    }
    public void addCart(int num,int count) {
        Fruit f=fd.queryFruitById(num);
        Item item=new Item();
        item.setFruit(f);
        item.setBuyCount(count);
        item.setAllPrice(f.getPrice()*count);
        cart.addCart(item);
    }     
    public void modifyFruit() {
        System.out.println("請輸入需要修改的水果的編號:");
        String num3=sc.next();
        Fruit f=fd.queryFruitById(Integer.parseInt(num3));
        if(f==null) {
            System.out.println("沒有此水果。。。");
        }else {
            System.out.println("請輸入要修改的信息");
            System.out.println("請輸入水果名稱:");
            String name=sc.next();
            System.out.println("請輸入水果庫存:");
            int count2=sc.nextInt();
            System.out.println("請輸入水果價格:");
            double price=sc.nextDouble();
            System.out.println("請輸入水果產地:");
            String address=sc.next();
            f.setAddress(address);
            f.setCount(count2);
            f.setName(name);
            f.setPrice(price);
            fd.modifyFruitByNum(f);
        }
    }
    public void loginCl() {
        boolean f=ma.login();
        while(!f) {
            System.out.println("請重新登錄");
            if(count==1) {
                System.out.println("三次機會已用完,退出系統");
                count=0;
                System.exit(0);
            }
            f=ma.login();
            count++;
        }
    }
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章