小組成員 | 負責工做 |
---|---|
蘭澤祥 | 負責整體界面、Git代碼庫 |
吳修恩 | 負責MVC模式、類名包名的規範化 |
倉庫地址:https://gitee.com/lanzexiang/shopping_cart.gitjava
購物車界面與訂單節單界面整體採用BorderLayout()佈局,在BorderLayout()的中部使用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);
搜索商品實現的是模糊搜索,即當咱們輸入搜索內容後,給出的是商城列表中,商品名包含有該內容的,都將會顯示給用戶。
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模式的結構分爲三部分,模型(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模式分爲,模型(Model),視圖(View),以及控制器(Controller)。那就拿添加商品這一功能的實現來說解。 添加商品須要如下的操做: (1)從購物車列表中獲取用戶所選的商品 (2)將該商品以及用戶輸入的所需商品傳入後臺的購物車鏈表中 (3)更新窗體顯示的信息
視圖層:包含了商品列表界面與購物車界面。
控制器:首先從界面得到選定行,就能得到所選擇的商品信息,代碼以下:
git
模型層:將從視圖中獲取到的信息加入到購物車的鏈表中,代碼以下:
算法