Java架构设计之购物车
任务描述
1.创建购物车操作的业务逻辑层
2. 对用户操作的数据访问层做必要改动
3. 编写表示层的代码
实训原理
表示层
表示层又称表现层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)
查询服务queryUser( )
这个功能要完成,需要把UserDao的queryUser( )返回值改为ArrayList<User>,这个我们稍后处理
在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); } }