1、小組成員及分工
小組成員 | 負責工作 |
---|---|
蘭澤祥 | 負責總體界面、Git代碼庫 |
吳修恩 | 負責MVC模式、類名包名的規范化 |
2、Git 倉庫地址
倉庫地址:https://gitee.com/lanzexiang/shopping_cart.git
3、界面展示
①登錄界面
②菜單界面
③商城界面
④商品搜索界面
⑤購物車界面
⑥訂單界面
4、幾個亮點功能介紹
1、購物車界面與訂單界面
購物車界面與訂單節單界面總體采用BorderLayout()布局,在BorderLayout()的中部使用CardLayout布局方式,將空購物車(空訂單)的界面放置於第一層,將購物車(訂單)不為空的時候顯示的放在第二層。通過判斷購物車(訂單)是否為空,來決定該顯示哪一個界面。
動態展示:
代碼:(這里只給出購物車中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);
2、搜索商品功能
搜索商品實現的是模糊搜索,即當我們輸入搜索內容后,給出的是商城列表中,商品名包含有該內容的,都將會顯示給用戶。
動態展示:
代碼:(這里只給出搜索部分的代碼)
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);
}
}
}
5、系統中體現出的MVC模式
1、什么是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三個模塊,利於代碼的維護。
2、實現MVC的代碼如下
由上一題可知,mvc模式分為,模型(Model),視圖(View),以及控制器(Controller)。那就拿添加商品這一功能的實現來講解。
添加商品需要以下的操作:
(1)從購物車列表中獲取用戶所選的商品
(2)將該商品以及用戶輸入的所需商品傳入后台的購物車鏈表中
(3)更新窗體顯示的信息
視圖層:包含了商品列表界面與購物車界面。
控制器:首先從界面獲得選定行,就能獲得所選擇的商品信息,代碼如下:
模型層:將從視圖中獲取到的信息加入到購物車的鏈表中,代碼如下: