JAVA面向对象编程之购物车界面的设计与功能的实现
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)更新窗体显示的信息
视图层:包含了商品列表界面与购物车界面。
控制器:首先从界面获得选定行,就能获得所选择的商品信息,代码如下:

模型层:将从视图中获取到的信息加入到购物车的链表中,代码如下:

JAVA面向对象编程之购物车界面的设计与功能的实现的更多相关文章
- Java面向对象编程之异常处理机制
一:Java的异常处理机制的优点: 1:把各种不同情况的异常情况分类,使用JAVA类来表示异常情况,这种类被称为异常类.把各种异常情况表示成异常类,可以充分的发挥类的可扩展性和可重用性. 2:异常流程 ...
- Java开源生鲜电商平台-购物车模块的设计与架构(源码可下载)
ava开源生鲜电商平台-购物车模块的设计与架构(源码可下载) 说明:任何一个电商无论是B2C还是B2B都有一个购物车模块,其中最重要的原因就是客户需要的东西放在一起,形成一个购物清单,确认是否有问题, ...
- PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
这篇文章主要介绍了PHP面向对象编程之深入理解方法重载与方法覆盖(多态)的相关资料,需要的朋友可以参考下: 什么是多态? 多态(Polymorphism)按字面的意思就是"多种状态" ...
- 使用XML文件和Java代码控制UI界面
Android推荐使用XML文件设置UI界面,然后用Java代码控制逻辑部分,这体现了MVC思想. MVC全名是Model View Controller,是模型(model)-视图(view)-控制 ...
- Java课设-购物车系统
1.团队课程设计博客链接 /[博客链接]http://www.cnblogs.com/yayaya/p/7062197.html 2.个人负责模板或任务说明 1.建立Action类 2.购物车的属性 ...
- java web 程序---购物车项目内容:
1.项目介绍 典型电子商务系统(在线购物平台).模拟了当当系统部分功能.2.功能需求 1)用户管理模块(3天)user 实现登录.注册功能 2)产品浏览模块(2天)ma ...
- 深入理解JavaScript系列(17):面向对象编程之概论
介绍 在本篇文章,我们考虑在ECMAScript中的面向对象编程的各个方面(虽然以前在许多文章中已经讨论过这个话题).我们将更多地从理论方面看这些问题. 特别是,我们会考虑对象的创建算法,对象(包括基 ...
- Android学习笔记(9):使用XML文件和Java代码控制UI界面
Android推荐使用XML文件设置UI界面.然后用Java代码控制逻辑部分,这体现了MVC思想. MVC全名是Model View Controller.是模型(model)-视图(view)-控制 ...
- Atitit.java c#这类编程语言的设计失败点attilax总结
Atitit.java c#这类编程语言的设计失败点attilax总结 1. Npe1 2. Api粒度过小而又没有提供最常用模式1 3. checked exception(jeig n jyejy ...
随机推荐
- php在foreach中使用引用赋值&可能遇到的问题(转)
楼主在写项目的时候,由于初涉PHP的赋值引用操作,觉得这个功能非常强大,用时一时爽,没有深入了解过其中的原理,导致了一些当时觉得不可思议的BUG,废话不都说,我举个例子详细的描述一下这个问题. 代码: ...
- Java匿名内部类的继承者、终结者————lambda表达式
一.什么是lambda表达式? lambda表达式就是一个代码块,可以传入变量和放入相应的代码. 二.基本格式 (参数 ) - >{ 代码 ...
- np.tile语法
>>> v = np.array([1, 0, 1])>>> vv = np.tile(v,(4,1))>>> print vv[[1 0 1] ...
- linux 执行脚本
crontab -e 直接编辑定时脚本 保存后,在/var/spool/cron/下自动生成一个以用户名命名的脚本文件.
- 快速排序 C语言实现
转载于> http://blog.chinaunix.net/uid-26404477-id-3329885.html 总的关键字比较次数:O(nlgn) 尽管快速排序的最坏时间为O(n2),但 ...
- Blender 作的鸭脖
鸭脖...https://www.youtube.com/watch?v=JS8V4_Ncn0w 新建一段骨骼,编辑,[E]挤出生成3段, 或者[W]细分回到物体模式,选中骨骼,属性编辑器\物体数据\ ...
- Windows server 2008 R2 安装指引
1.虚拟机实验安装win server 2008 R2 企业版, 安装环境: 虚拟机版本:VM 14 本地系统:win 7 64 位 专业版 打开VM14,新建虚拟机,选择自定义高级(此处也可以选择典 ...
- 《DSP using MATLAB》Problem 5.34
第1小题 代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...
- 自定义ThreadPoolExecutor带Queue缓冲队列的线程池 + JMeter模拟并发下单请求
.原文:https://blog.csdn.net/u011677147/article/details/80271174 拓展: https://github.com/jwpttcg66/GameT ...
- mysql给数据库授权与收回权限--------dcl
用户授权语法 grant 权限1,权限2... on 数据库名.* to 用户名 @IP地址或% 打开新创建的名为“test”的数据库后 用 show databases; 的命令 看内部的数据结果 ...