JAVA面向對象編程之購物車界面的設計與功能的實現

一、小組成員及分工

小組成員 負責工做
蘭澤祥 負責整體界面、Git代碼庫
吳修恩 負責MVC模式、類名包名的規範化

二、Git 倉庫地址

倉庫地址https://gitee.com/lanzexiang/shopping_cart.gitjava

三、界面展現

①登陸界面

②菜單界面

③商城界面

④商品搜索界面

⑤購物車界面

⑥訂單界面

四、幾個亮點功能介紹

一、購物車界面與訂單界面

購物車界面與訂單節單界面整體採用BorderLayout()佈局,在BorderLayout()的中部使用CardLayout佈局方式,將空購物車(空訂單)的界面放置於第一層,將購物車(訂單)不爲空的時候顯示的放在第二層。經過判斷購物車(訂單)是否爲空,來決定該顯示哪個界面。
動態展現:

購物車訂單界面GIF展現

代碼:(這裏只給出購物車中CardLayout佈局的代碼)
CardLayout card = new CardLayout(); //新建CardLayout佈局
    JPanel centerPanel=new JPanel(card);
        
    //卡片一  空購物車
    JPanel panel0 = new JPanel(new FlowLayout(FlowLayout.CENTER));
    ImageIcon icon = new ImageIcon("image/emptycar.png");
    JLabel label = new JLabel(icon);
    panel0.add(label);
    
    //卡片二  有東西的購物車
    JPanel panel2 = new JPanel(new FlowLayout(2));
    DefaultTableModel model = new DefaultTableModel() { // 表格數據不可改
        public boolean isCellEditable(int row, int column) {
            if( column == 3 ){
                return true;//返回true則代表單元格可編輯
            }
            else return false;
        }
    };
    ColumnNames.add("商品編號");ColumnNames.add("商品名");ColumnNames.add("單價(元)");ColumnNames.add("數量");ColumnNames.add("總價");
    model.setDataVector(date,ColumnNames);
    shoppingCartTable = new JTable(model);// 建立一個表格,指定 全部行數據 和 表頭
    SettingWindow.setTable(shoppingCartTable); // 設置表格

    JScrollPane shoppingCarScrollPane = new JScrollPane(shoppingCartTable);
    shoppingCarScrollPane.setBorder(null);

    //共計
    JPanel p0 = new JPanel(new GridLayout(2, 0));
    JLabel jl00 = new JLabel(" ");
    jl0 = new JLabel("共計 " + shoppingCartTable.getRowCount() + " 元");
    jl0.setFont(new Font("微軟雅黑", Font.PLAIN, 19)); // 設置字體、樣式、大小
    
    JButton jb0 = new JButton("刪除商品");
    jb0.setFont(new java.awt.Font("黑體", 1, 20));
    JButton jb1 = new JButton("結算");
    jb1.setFont(new java.awt.Font("黑體", 1, 20));
        
    p0.add(jl00);
    p0.add(jl0);
    p0.add(jb0);
    p0.add(jb1);
        
    panel2.add(shoppingCarScrollPane);
    panel2.add(p0);
        
    panel2.setBorder(new EmptyBorder(10, 10, 10, 10));
        
    centerPanel.add(panel0,"emptyShoppingCart");
    centerPanel.add(panel2,"ShoppingCart");
    if( shoppingCartTable.getRowCount() == 0 ) {
        setShoppingCartCenterPanel(0);
    }else {
        setShoppingCartCenterPanel(1);
    }
    ShoppingCarGui.add(centerPanel, BorderLayout.CENTER);

二、搜索商品功能

搜索商品實現的是模糊搜索,即當咱們輸入搜索內容後,給出的是商城列表中,商品名包含有該內容的,都將會顯示給用戶。
動態展現:

搜索商品界面GIF展現

代碼:(這裏只給出搜索部分的代碼)
public void searchProduct(Vector<Vector<Object>> vDate, String pro) {//搜索商品
    for(Product a: prolist) {
        if(a.getName().indexOf(pro)!=-1) {
            Vector<Object> row=new Vector<Object>();
            row.add(a.getId());
            row.add(a.getName());
            row.add(a.getPrice());
            vDate.add(row);
        }
    }
}

五、系統中體現出的MVC模式

一、什麼是MVC模式?使用MVC模式有什麼好處?

MVC模式的結構分爲三部分,模型(Model),視圖(View),以及控制器(Controller)
·模型(Model):適合作一些業務邏輯處理,好比數據庫存取操做,網絡操做,複雜的算法,耗時的任務等都在model層處理。
·視圖(View):其中View層其實就是程序的UI界面,用於向用戶展現數據以及接收用戶的輸入,XML佈局能夠視爲V層,顯示Model層的數據結果。
·控制器(Controller):控制器用於更新UI界面和數據實例.在Android中,Activity處理用戶交互問題,所以能夠認爲Activity是控制器,Activity讀取V視圖層的數據(eg.讀取當前EditText控件的數據),控制用戶輸入(eg.EditText控件數據的輸入),並向Model發送數據請求(eg.發起網絡請求等)。

好處:
    (1)耦合性低。所謂耦合性就是模塊代碼之間的關聯程度。利用MVC結構使得View(視圖)層和Model(模型)層能夠很好的分離,這樣就達到了解耦的目的,因此耦合性低,減小模塊代碼之間的相互影響。
    (2)可擴展性好。因爲耦合性低,添加需求,擴展代碼就能夠減小修改以前的代碼,下降bug的出現率。
    (3)模塊職責劃分明確。主要劃分層M,V,C三個模塊,利於代碼的維護。

MVC模式圖片

二、實現MVC的代碼以下

由上一題可知,mvc模式分爲,模型(Model),視圖(View),以及控制器(Controller)。那就拿添加商品這一功能的實現來說解。
添加商品須要如下的操做:
    (1)從購物車列表中獲取用戶所選的商品   
    (2)將該商品以及用戶輸入的所需商品傳入後臺的購物車鏈表中
    (3)更新窗體顯示的信息

視圖層:包含了商品列表界面與購物車界面。
控制器:首先從界面得到選定行,就能得到所選擇的商品信息,代碼以下:
git

模型層:將從視圖中獲取到的信息加入到購物車的鏈表中,代碼以下:
算法

相關文章
相關標籤/搜索