Java架构设计之购物车

来自CloudWiki
Cloud17讨论 | 贡献2020年5月28日 (四) 07:01的版本 查询服务queryUser( )
跳转至: 导航搜索

任务描述

1.创建购物车操作的业务逻辑层

2. 对用户操作的数据访问层做必要改动

3. 编写表示层的代码


实训原理

Java2020-12-3.png

表示层

表示层又称表现层UI,位于三层构架的最上层,与用户直接接触,主要是B/S信息系统中的Web浏览页面。作为Web浏览页面,表示层的主要功能是实现系统数据的传入与输出,在此过程中不需要借助逻辑判断操作就可以将数据传送到BLL系统中进行数据处理,处理后会将处理结果反馈到表示层中。换句话说,表示层就是实现用户界面功能,将用户的需求传达和反馈,并用BLL或者是Models进行调试,保证用户体验。

业务逻辑层

业务逻辑层BLL的功能是对具体问题进行逻辑判断与执行操作,接收到表现层UI的用户指令后,会连接数据访问层DAL,访问层在三层构架中位于表示层与数据层中间位置,同时也是表示层与数据层的桥梁,实现三层之间的数据连接和指令传达,可以对接收数据进行逻辑处理,实现数据的修改、获取、删除等功能,并将处理结果反馈到表示层UI中,实现软件功能。

数据访问层

数据访问层DAL是数据库的主要操控系统,实现数据的增加、删除、修改、查询等操作,并将操作结果反馈到业务逻辑层BLL。在实际运行的过程中,数据访问层没有逻辑判断能力,为了实现代码编写的严谨性,提高代码阅读程度,一般软件开发人员会在该层中编写DataAccessCommon,保证数据访问层DAL数据处理功能。

数据访问层

CartDao接口

本接口改动不大,主要是find和findALL返回值变成了ArrayList<User>类型。

变动的原因是 现在软件分层了,数据库查询到的数据不宜直接在dao层打印了,通过arraylist传出去

package dao;
import java.util.ArrayList;

import entity.*;
public interface CartDao {
	
	 public boolean addGoods(Integer id,Goods g);//添加商品
	 
	  public boolean delGoods(Integer id);//删除商品
	  
	  public ArrayList<Goods> queryGoods();//查询购物车内已放商品
	  
	  public int hasGoods(Integer id);//查询购物车内是否已有某件商品
	 
	  public boolean modifyGoods(Integer id,Integer num);//修改购物车内该种商品的数量
	
}

创建CartDaoSQL实现类

本类改动不大,主要是queryUser( )返回值变成了ArrayList<User>类型。

变动的原因是 现在软件分层了,数据库查询到的数据不宜直接在dao层打印了,通过arraylist传出去


业务逻辑层

创建服务类CartService



添加商品服务addToCart()

public boolean addToCart(Goods g,Integer n)


删除商品服务delFromCart()

public boolean delFromCart(Goods g)


查看所有商品服务queryGoods( )

	/**
	 * 查询仓库中的商品
	 * * @param 值为空
	   * @return 值为空
	 */
	
	public void  queryGoods( ){
		
		ArrayList<Goods> goods = dbset.findAll();
		System.out.println("本店现有商品数:");
		for(Goods g :goods) {
			System.out.println(g);
		}
		System.out.println();;
			
		
	}

修改商品服务modifyCart

public boolean modifyCart(Goods g,int n){

搜索商品服务queryCart(String name)

查询服务queryCart( )

在main方法中写测试代码

完整代码

显示层

显示层 调用业务逻辑层的代码,完成查询


客户端

菜单输出功能showMenu()

	public static void showMenu() {
		// 编写主菜单输出语句
		System.out.println("**********面馆管理系统**********\r\n" 
							+ "1.查询所有商品\r\n" 
							+ "2.根据商品名称查找商品\r\n" 
							+ "3.购买商品\r\n" 
							+ "4.取消购买\r\n" 
							+ "5.查询购物车\r\n" 
							+ "6.退出系统\r\n" 
							+ "*******************************");
		
	        System.out.println("请选择(1-6):");
	}

用户选择功能getChoice()

public static void getChoice(Scanner sc) {
		
		 //获取用户对于菜单的选择
		   String value = sc.next();
		   int choise = Integer.valueOf(value);
		   GoodsService gs = new GoodsService();
		   switch(choise) {
				case 1:	//处理查询所有商品的业务
					System.out.println("您选择了:查询所有商品的业务");
					gs.queryGoods();//查询所有商品
					break;
				case 2:	//处理按商品编号查询
					System.out.println("您选择了: 按商品名称查询的业务");
					System.out.println("请输入关键词:");
					String gname = sc.next();
					gs.queryGoods(gname);
					break;
				case 3:	//购买商品,将商品加入到用户的购物车中
					System.out.println("您选择了:列出购买商品的业务");
					//在这里添加代码
					break;
				case 4:	//删除商品,从购物车中删除商品信息
					System.out.println("您选择了:处理删除商品的业务");
					//在这里添加代码
					break;
				case 5:	//显示某个用户购物车中所有的商品
					System.out.println("您选择了:显示所有商品的业务");
					//在这里添加代码
					break;
				case 6:	//退出当前应用程序
					System.out.println("您选择了:退出当前应用程序");
					sc.close();
					System.exit(0);
					break;
				default:
					System.out.println("您的选择不正确");
			}
		   
	}

在main中编写测试代码

public static void main(String[] args) {
		// * 获取用户的输入数据
		Scanner sc = new Scanner(System.in);
		//start(sc);
		while(true) {
			showMenu() ;
			getChoice(sc);			  
		}
	   
	}

完整代码

管理端