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


1、小組成員及分工

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

2、Git 倉庫地址

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

3、界面展示

①登錄界面

②菜單界面

③商城界面

④商品搜索界面

⑤購物車界面

⑥訂單界面

4、幾個亮點功能介紹

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

購物車界面與訂單節單界面總體采用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);

2、搜索商品功能

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

搜索商品界面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);
		}
	}
}

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三個模塊,利於代碼的維護。

MVC模式圖片

2、實現MVC的代碼如下

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM