位置: IT常识 - 正文

Educoder/头歌JAVA——Java Web:基于JSP的网上商城(头歌java第一课)

发布时间:2024-01-08
Educoder/头歌JAVA——Java Web:基于JSP的网上商城

目录

一、商品列表

本关任务

具体要求

结果输出

实现代码

二、商品详情

本关任务

JDBC查询方法封装

商品相关信息介绍

具体要求

结果输出

实现代码

三、商品搜索

编程要求

测试说明

实现代码

四、购物车列表

本关任务

JDBC查询方法封装

购物车相关信息介绍

编程要求

测试说明

实现代码

五、购物车操作

本关任务

JDBC查询方法封装

购物车相关信息介绍

编程要求

实现代码

六、下单

本关任务

编程要求

实现代码

七、订单查询

本关任务

编程要求

测试说明

实现代码


一、商品列表本关任务

推荐整理分享Educoder/头歌JAVA——Java Web:基于JSP的网上商城(头歌java第一课),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:头歌educoder答案java第三章,头歌java中的异常答案,头歌educoder答案java第三章,头歌educoder实训怎么用,头歌educoder实训怎么用,头歌java第一课,头歌educoder网址,头歌educoder答案java,内容如对您有帮助,希望把文章链接给更多的朋友!

一个商场不能缺少商品,本关需要借助JDBC,从 t_goods表中获取销量前四的商品信息,并展示到页面。

JDBC信息;

MYSQL用户名MYSQL密码驱动URLroot123123com.mysql.jdbc.Driverjdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true

com.educoder.entity.Goods字段及方法;

字段描述类型get方法set方法goodsId商品IdStringgetGoodsId()setGoodsId(String goodsId)goodsName商品名StringgetGoodsName()setGoodsName(String goodsName)goodsImg展示于主页的图StringgetGoodsImg() setGoodsImg(String goodsImg)goodsPrice价格BigDecimalgetGoodsPrice()setGoodsPrice(BigDecimal goodsPrice)goodsNum库存数量IntegergetGoodsNum()setGoodsNum(Integer goodsNum)salesNum销售数量IntegergetSalesNum()setSalesNum(Integer salesNum)goodsSize商品规格StringgetGoodsSize()setGoodsSize(String goodsSize)goodsFrom商品产地StringgetGoodsFrom()setGoodsFrom(String goodsFrom)goodsTime保质期StringgetGoodsTime()setGoodsTime(String goodsTime)goodsSaveCondition存储条件StringgetGoodsSaveCondition()setGoodsSaveCondition(String goodsSaveCondition)goodsDescribe商品描述介绍StringgetGoodsDescribe()setGoodsDescribe(String goodsDescribe)goodsExplain对商品简短说明StringgetGoodsExplain()setGoodsExplain(String goodsExplain)goodsClass所属类别StringgetGoodsClass()setGoodsClass(String goodsClass)goodsDiscount折扣BigDecimalgetGoodsDiscount()setGoodsDiscount(BigDecimal goodsDiscount)discountStartTime优惠起始时间DategetDiscountStartTime()setDiscountStartTime(Date discountStartTime)discountEndTime优惠截止时间DategetDiscountEndTime()setDiscountEndTime(Date discountEndTime)

表和类对应表;

库名表名类名online_shopt_goodsGoods注意:类字段和对应的表字段名称一致,这里不再重复列出了。

页面初始效果图:

最终页面效果图:

具体要求补全 getGoodsList()方法,返回List<Goods>(商品列表)。结果输出[{"goodsClass":"甜品","goodsDescribe":"口感绵密,精致细腻\r\n这份雪白让你有如获至宝的幸福感","goodsExplain":"手工打发而成的进口鲜奶油","goodsFrom":"上海","goodsId":"list1","goodsImg":"list_1-1.jpg","goodsName":"雪域牛乳芝士","goodsNum":996,"goodsPrice":98.00,"goodsSaveCondition":"冷藏0~4摄氏度","goodsSize":"约450g","goodsTime":"3天","salesNum":44},{"goodsClass":"甜品","goodsDescribe":"酸甜清爽\r\n回味无穷","goodsExplain":"卡福洛芒果泥","goodsFrom":"上海","goodsId":"list3","goodsImg":"list_3-1.jpg","goodsName":"芒果熔岩星球蛋糕 Mango Planet","goodsNum":1994,"goodsPrice":118.00,"goodsSaveCondition":"冷藏0~4摄氏度","goodsSize":"约680g","goodsTime":"2天","salesNum":42},{"goodsClass":"甜品","goodsDescribe":"通过精致的工艺\r\n将巧克力的香醇甜蜜发挥到极致\r\n每一口都倍感甜蜜","goodsExplain":"进口的黑巧克力","goodsFrom":"上海","goodsId":"list2","goodsImg":"list_2-1.jpg","goodsName":"哈!蜜瓜蛋糕 Hey Melon","goodsNum":1496,"goodsPrice":99.00,"goodsSaveCondition":"冷藏0~4摄氏度","goodsSize":"约500g","goodsTime":"3天","salesNum":39},{"goodsClass":"甜品","goodsDescribe":"在金色芒果淋面的外衣下\r\n是芒果慕斯的柔情\r\n是芒果啫喱的牵挂\r\n还有丝丝香草戚风蛋糕的香气","goodsExplain":"手工打发而成的进口鲜奶油","goodsFrom":"上海","goodsId":"list5","goodsImg":"list_5-1.jpg","goodsName":"蟹蟹你偷吃 Yum Yum Cake","goodsNum":6999,"goodsPrice":88.00,"goodsSaveCondition":"冷藏0~4摄氏度","goodsSize":"约480g","goodsTime":"3天","salesNum":5}]实现代码package com.educoder.service.impl; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import com.educoder.entity.Goods; import com.educoder.service.GoodsService; import com.educoder.dao.impl.BaseDao; public class GoodsServiceImpl implements GoodsService { /** * 商品详情接口 */ public Goods getGoodsByGoodsId(String goodsId) { /********* Begin *********/ String sql = "select * from t_goods where goodsId = ?"; List<Object> parameters = new ArrayList<Object>(); parameters.add(goodsId); List<Goods> goodsList = null; try { goodsList = BaseDao.operQuery(sql, parameters, Goods.class); } catch (Exception e) { e.printStackTrace(); } return goodsList.size() == 0 ? null : goodsList.get(0); /********* End *********/ } /** * 商品搜索接口 */ public List<Goods> searchGoods(String condition) { /********* Begin *********/ String sql = "select * from t_goods where goodsName like ? or goodsClass like ? order by salesNum desc"; List<Goods> goodsList = null; condition = "%" + condition + "%"; List<Object> paramenter = new ArrayList<Object>(); paramenter.add(condition); paramenter.add(condition); try { goodsList = BaseDao.operQuery(sql, paramenter, Goods.class); } catch (Exception e) { e.printStackTrace(); } return goodsList; /********* End *********/ } /** * 商品列表接口 */ public List<Goods> getGoodsList() { /********* Begin *********/ String USERNAME = "root"; String PASSWORD = "123123"; String URL = "jdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true"; Connection conn = null; PreparedStatement pste = null; ResultSet executeQuery = null; List<Goods> list = new ArrayList<Goods>(); String sql = "select * from t_goods order by salesNum desc limit 4"; try { conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); pste = conn.prepareStatement(sql); executeQuery = pste.executeQuery(); while (executeQuery.next()) { Goods goods = new Goods(); goods.setGoodsId(executeQuery.getString("goodsId")); goods.setGoodsName(executeQuery.getString("goodsName")); goods.setGoodsImg(executeQuery.getString("goodsImg")); goods.setGoodsPrice(executeQuery.getBigDecimal("goodsPrice")); goods.setGoodsNum(executeQuery.getInt("goodsNum")); goods.setSalesNum(executeQuery.getInt("salesNum")); goods.setGoodsSize(executeQuery.getString("goodsSize")); goods.setGoodsFrom(executeQuery.getString("goodsFrom")); goods.setGoodsTime(executeQuery.getString("goodsTime")); goods.setGoodsSaveCondition(executeQuery.getString("goodsSaveCondition")); goods.setGoodsDescribe(executeQuery.getString("goodsDescribe")); goods.setGoodsExplain(executeQuery.getString("goodsExplain")); goods.setGoodsClass(executeQuery.getString("goodsClass")); goods.setGoodsDiscount(executeQuery.getBigDecimal("goodsDiscount")); goods.setDiscountStartTime(executeQuery.getDate("discountStartTime")); goods.setDiscountEndTime(executeQuery.getDate("discountEndTime")); list.add(goods); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (executeQuery != null) executeQuery.close(); if (pste != null) pste.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } return list; /********* End *********/ } }二、商品详情本关任务

有了商品还需要看商品的详细信息,本关需要借助JDBC,通过参数商品Id从数据库中获取商品详情,展示到页面。为了完成本关任务,需要了解:

JDBC 查询方法封装;商品相关信息介绍。JDBC查询方法封装

为了方便JDBC操作,平台对JDBC查询方法进行了封装,封装类com.educoder.dao.impl.BaseDao。

public static <T> List<T> operQuery(String sql, List<Object> p, Class<T> cls) throws Exception { Connection conn = null; PreparedStatement pste = null; ResultSet rs = null; List<T> list = new ArrayList<T>(); conn = getConn(); try { pste = conn.prepareStatement(sql); if (p != null) { for (int i = 0; i < p.size(); i++) { pste.setObject(i + 1, p.get(i)); } } rs = pste.executeQuery(); ResultSetMetaData rsmd = rs.getMetaData(); while (rs.next()) { T entity = cls.newInstance(); for (int j = 0; j < rsmd.getColumnCount(); j++) { String col_name = rsmd.getColumnName(j + 1); Object value = rs.getObject(col_name); Field field = cls.getDeclaredField(col_name); field.setAccessible(true); field.set(entity, value); } list.add(entity); } } catch (SQLException e) { e.printStackTrace(); } finally { releaseAll(rs, pste, conn); } return list; }

例如,第一关可以使用如下方法,获取商品列表:

String sql = "select * from t_goods order by salesNum desc limit 4"; List<Goods> goodsList = null; try { goodsList = BaseDao.operQuery(sql, null, Goods.class); } catch (Exception e) { e.printStackTrace(); }商品相关信息介绍MYSQL用户名MYSQL密码驱动URLroot123123com.mysql.jdbc.Driverjdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true

com.educoder.entity.Goods字段及方法;

字段描述类型get方法set方法goodsId商品IdStringgetGoodsId()setGoodsId(String goodsId)goodsName商品名StringgetGoodsName()setGoodsName(String goodsName)goodsImg展示于主页的图StringgetGoodsImg() setGoodsImg(String goodsImg)goodsPrice价格BigDecimalgetGoodsPrice()setGoodsPrice(BigDecimal goodsPrice)goodsNum库存数量IntegergetGoodsNum()setGoodsNum(Integer goodsNum)salesNum销售数量IntegergetSalesNum()setSalesNum(Integer salesNum)goodsSize商品规格StringgetGoodsSize()setGoodsSize(String goodsSize)goodsFrom商品产地StringgetGoodsFrom()setGoodsFrom(String goodsFrom)goodsTime保质期StringgetGoodsTime()setGoodsTime(String goodsTime)goodsSaveCondition存储条件StringgetGoodsSaveCondition()setGoodsSaveCondition(String goodsSaveCondition)goodsDescribe商品描述介绍StringgetGoodsDescribe()setGoodsDescribe(String goodsDescribe)goodsExplain对商品简短说明StringgetGoodsExplain()setGoodsExplain(String goodsExplain)goodsClass所属类别StringgetGoodsClass()setGoodsClass(String goodsClass)goodsDiscount折扣BigDecimalgetGoodsDiscount()setGoodsDiscount(BigDecimal goodsDiscount)discountStartTime优惠起始时间DategetDiscountStartTime()setDiscountStartTime(Date discountStartTime)discountEndTime优惠截止时间DategetDiscountEndTime()setDiscountEndTime(Date discountEndTime)

表和类对应表;

库名表名类名online_shopt_goodsGoods注意:类字段和对应的表字段名称一致,这里不再重复列出了。

页面初始效果图:

最终页面效果图:

具体要求补全getGoodsByGoodsId()方法,完成查询商品详情的任务,最后返回Goods(商品)。结果输出{"goodsClass":"甜品","goodsDescribe":"口感绵密,精致细腻\r\n这份雪白让你有如获至宝的幸福感","goodsExplain":"手工打发而成的进口鲜奶油","goodsFrom":"上海","goodsId":"list1","goodsImg":"list_1-1.jpg","goodsName":"雪域牛乳芝士","goodsNum":996,"goodsPrice":98.00,"goodsSaveCondition":"冷藏0~4摄氏度","goodsSize":"约450g","goodsTime":"3天","salesNum":44}实现代码package com.educoder.service.impl; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import com.educoder.entity.Goods; import com.educoder.service.GoodsService; import com.educoder.dao.impl.BaseDao; public class GoodsServiceImpl implements GoodsService { /** * 商品详情接口 */ public Goods getGoodsByGoodsId(String goodsId) { /********* Begin *********/ String sql = "select * from t_goods where goodsId = ?"; List<Object> parameters = new ArrayList<Object>(); parameters.add(goodsId); List<Goods> goodsList = null; try { goodsList = BaseDao.operQuery(sql, parameters, Goods.class); } catch (Exception e) { e.printStackTrace(); } return goodsList.size() == 0 ? null : goodsList.get(0); /********* End *********/ } /** * 商品搜索接口 */ public List<Goods> searchGoods(String condition) { /********* Begin *********/ String sql = "select * from t_goods where goodsName like ? or goodsClass like ? order by salesNum desc"; List<Goods> goodsList = null; condition = "%" + condition + "%"; List<Object> paramenter = new ArrayList<Object>(); paramenter.add(condition); paramenter.add(condition); try { goodsList = BaseDao.operQuery(sql, paramenter, Goods.class); } catch (Exception e) { e.printStackTrace(); } return goodsList; /********* End *********/ } /** * 商品列表接口 */ public List<Goods> getGoodsList() { /********* Begin *********/ String USERNAME = "root"; String PASSWORD = "123123"; String URL = "jdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true"; Connection conn = null; PreparedStatement pste = null; ResultSet executeQuery = null; List<Goods> list = new ArrayList<Goods>(); String sql = "select * from t_goods order by salesNum desc limit 4"; try { conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); pste = conn.prepareStatement(sql); executeQuery = pste.executeQuery(); while (executeQuery.next()) { Goods goods = new Goods(); goods.setGoodsId(executeQuery.getString("goodsId")); goods.setGoodsName(executeQuery.getString("goodsName")); goods.setGoodsImg(executeQuery.getString("goodsImg")); goods.setGoodsPrice(executeQuery.getBigDecimal("goodsPrice")); goods.setGoodsNum(executeQuery.getInt("goodsNum")); goods.setSalesNum(executeQuery.getInt("salesNum")); goods.setGoodsSize(executeQuery.getString("goodsSize")); goods.setGoodsFrom(executeQuery.getString("goodsFrom")); goods.setGoodsTime(executeQuery.getString("goodsTime")); goods.setGoodsSaveCondition(executeQuery.getString("goodsSaveCondition")); goods.setGoodsDescribe(executeQuery.getString("goodsDescribe")); goods.setGoodsExplain(executeQuery.getString("goodsExplain")); goods.setGoodsClass(executeQuery.getString("goodsClass")); goods.setGoodsDiscount(executeQuery.getBigDecimal("goodsDiscount")); goods.setDiscountStartTime(executeQuery.getDate("discountStartTime")); goods.setDiscountEndTime(executeQuery.getDate("discountEndTime")); list.add(goods); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (executeQuery != null) executeQuery.close(); if (pste != null) pste.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } return list; /********* End *********/ } }三、商品搜索编程要求

请仔细阅读右侧代码,在Begin-End区域内进行代码补充,实现商品搜索的功能,具体需求如下:

补全searchGoods()方法,完成商品搜索的功能,最后返回List<Goods>(商品列表)。测试说明

平台会对你编写的代码进行测试:

测试输入:雪域牛

预期输出:

[{"goodsClass":"甜品","goodsDescribe":"口感绵密,精致细腻\r\n这份雪白让你有如获至宝的幸福感","goodsExplain":"手工打发而成的进口鲜奶油","goodsFrom":"上海","goodsId":"list1","goodsImg":"list_1-1.jpg","goodsName":"雪域牛乳芝士","goodsNum":996,"goodsPrice":98.00,"goodsSaveCondition":"冷藏0~4摄氏度","goodsSize":"约450g","goodsTime":"3天","salesNum":44}]实现代码package com.educoder.service.impl; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import com.educoder.entity.Goods; import com.educoder.service.GoodsService; import com.educoder.dao.impl.BaseDao; public class GoodsServiceImpl implements GoodsService { /** * 商品详情接口 */ public Goods getGoodsByGoodsId(String goodsId) { /********* Begin *********/ String sql = "select * from t_goods where goodsId = ?"; List<Object> parameters = new ArrayList<Object>(); parameters.add(goodsId); List<Goods> goodsList = null; try { goodsList = BaseDao.operQuery(sql, parameters, Goods.class); } catch (Exception e) { e.printStackTrace(); } return goodsList.size() == 0 ? null : goodsList.get(0); /********* End *********/ } /** * 商品搜索接口 */ public List<Goods> searchGoods(String condition) { /********* Begin *********/ String sql = "select * from t_goods where goodsName like ? or goodsClass like ? order by salesNum desc"; List<Goods> goodsList = null; condition = "%" + condition + "%"; List<Object> paramenter = new ArrayList<Object>(); paramenter.add(condition); paramenter.add(condition); try { goodsList = BaseDao.operQuery(sql, paramenter, Goods.class); } catch (Exception e) { e.printStackTrace(); } return goodsList; /********* End *********/ } /** * 商品列表接口 */ public List<Goods> getGoodsList() { /********* Begin *********/ String USERNAME = "root"; String PASSWORD = "123123"; String URL = "jdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true"; Connection conn = null; PreparedStatement pste = null; ResultSet executeQuery = null; List<Goods> list = new ArrayList<Goods>(); String sql = "select * from t_goods order by salesNum desc limit 4"; try { conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); pste = conn.prepareStatement(sql); executeQuery = pste.executeQuery(); while (executeQuery.next()) { Goods goods = new Goods(); goods.setGoodsId(executeQuery.getString("goodsId")); goods.setGoodsName(executeQuery.getString("goodsName")); goods.setGoodsImg(executeQuery.getString("goodsImg")); goods.setGoodsPrice(executeQuery.getBigDecimal("goodsPrice")); goods.setGoodsNum(executeQuery.getInt("goodsNum")); goods.setSalesNum(executeQuery.getInt("salesNum")); goods.setGoodsSize(executeQuery.getString("goodsSize")); goods.setGoodsFrom(executeQuery.getString("goodsFrom")); goods.setGoodsTime(executeQuery.getString("goodsTime")); goods.setGoodsSaveCondition(executeQuery.getString("goodsSaveCondition")); goods.setGoodsDescribe(executeQuery.getString("goodsDescribe")); goods.setGoodsExplain(executeQuery.getString("goodsExplain")); goods.setGoodsClass(executeQuery.getString("goodsClass")); goods.setGoodsDiscount(executeQuery.getBigDecimal("goodsDiscount")); goods.setDiscountStartTime(executeQuery.getDate("discountStartTime")); goods.setDiscountEndTime(executeQuery.getDate("discountEndTime")); list.add(goods); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (executeQuery != null) executeQuery.close(); if (pste != null) pste.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } return list; /********* End *********/ } }四、购物车列表本关任务

网上看中的商品,暂时不买,还需要保存起来,这个需要通过购物车来实现。本关需要从session里获取属性名为user的User对象,并借助JDBC,通过表t_cart、t_goods获取用户购物车的商品内容,并展示到页面。

为了完成本关任务,需要了解:

JDBC查询方法封装;

购物车相关信息介绍。

JDBC查询方法封装

为了方便JDBC操作,平台对JDBC查询方法进行了封装,封装类com.educoder.dao.impl.BaseDao。

public static <T> List<T> operQuery(String sql, List<Object> p, Class<T> cls) throws Exception { Connection conn = null; PreparedStatement pste = null; ResultSet rs = null; List<T> list = new ArrayList<T>(); conn = getConn(); try { pste = conn.prepareStatement(sql); if (p != null) { for (int i = 0; i < p.size(); i++) { pste.setObject(i + 1, p.get(i)); } } rs = pste.executeQuery(); ResultSetMetaData rsmd = rs.getMetaData(); while (rs.next()) { T entity = cls.newInstance(); for (int j = 0; j < rsmd.getColumnCount(); j++) { String col_name = rsmd.getColumnName(j + 1); Object value = rs.getObject(col_name); Field field = cls.getDeclaredField(col_name); field.setAccessible(true); field.set(entity, value); } list.add(entity); } } catch (SQLException e) { e.printStackTrace(); } finally { releaseAll(rs, pste, conn); } return list; }

例如,第一关可以使用如下方法,获取商品列表:

String sql = "select * from t_goods order by salesNum desc limit 4";List<Goods> goodsList = null;try {goodsList = BaseDao.operQuery(sql, null, Goods.class);} catch (Exception e) {e.printStackTrace();}购物车相关信息介绍MYSQL用户名MYSQL密码驱动URLroot123123com.mysql.jdbc.Driverjdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true

com.educoder.entity.Goods字段及方法;

字段描述类型get方法set方法goodsId商品IdStringgetGoodsId()setGoodsId(String goodsId)goodsName商品名StringgetGoodsName()setGoodsName(String goodsName)goodsImg展示于主页的图StringgetGoodsImg() setGoodsImg(String goodsImg)goodsPrice价格BigDecimalgetGoodsPrice()setGoodsPrice(BigDecimal goodsPrice)goodsNum库存数量IntegergetGoodsNum()setGoodsNum(Integer goodsNum)salesNum销售数量IntegergetSalesNum()setSalesNum(Integer salesNum)goodsSize商品规格StringgetGoodsSize()setGoodsSize(String goodsSize)goodsFrom商品产地StringgetGoodsFrom()setGoodsFrom(String goodsFrom)goodsTime保质期StringgetGoodsTime()setGoodsTime(String goodsTime)goodsSaveCondition存储条件StringgetGoodsSaveCondition()setGoodsSaveCondition(String goodsSaveCondition)goodsDescribe商品描述介绍StringgetGoodsDescribe()setGoodsDescribe(String goodsDescribe)goodsExplain对商品简短说明StringgetGoodsExplain()setGoodsExplain(String goodsExplain)goodsClass所属类别StringgetGoodsClass()setGoodsClass(String goodsClass)goodsDiscount折扣BigDecimalgetGoodsDiscount()setGoodsDiscount(BigDecimal goodsDiscount)discountStartTime优惠起始时间DategetDiscountStartTime()setDiscountStartTime(Date discountStartTime)discountEndTime优惠截止时间DategetDiscountEndTime()setDiscountEndTime(Date discountEndTime)

注意:Cart类冗余信息是通过和t_goods表关联查询出来的,不是存在下面的t_cart表里。

表和类对应表;

库名表名类名online_shopt_cartCart

注意:类字段和对应的表字段名称一致,这里不再重复列出了。

页面初始效果图:

最终页面效果图:

编程要求

根据提示,在右侧编辑器补充getGoodsByUserId方法代码,并返回Cart列表。

注意:后续关卡都是需要从request获取用户信息,从而获得userId。在本关卡获取成功后,后续关卡默认已经获取到userId,并当成接口参数传入,不再需要重复获取。

测试说明

平台会对你编写的代码进行测试:

预期输出:

[{"addTime":1543505629000,"buyNum":1,"cartId":101,"goodsClass":"甜品","goodsDescribe":"酸甜清爽\r\n回味无穷","goodsExplain":"卡福洛芒果泥","goodsFrom":"上海","goodsId":"list3","goodsImg":"list_3-1.jpg","goodsName":"芒果熔岩星球蛋糕 Mango Planet","goodsNum":1994,"goodsPrice":118.00,"goodsSaveCondition":"冷藏0~4摄氏度","goodsSize":"约680g","goodsTime":"2天","salesNum":42,"userId":"123456"},{"addTime":1543505631000,"buyNum":1,"cartId":102,"discountEndTime":1499184679000,"discountStartTime":1498923465000,"goodsClass":"甜品","goodsDescribe":"芝士与香草戚风被雪域奶油的浪漫笼罩\r\n每一口都充满快乐的滋味","goodsDiscount":0.75,"goodsExplain":"选用进口白巧克力","goodsFrom":"上海","goodsId":"list6","goodsImg":"list_6-1.jpg","goodsName":"美刀刀蛋糕 Ms. Golden","goodsNum":3000,"goodsPrice":99.00,"goodsSaveCondition":"冷藏0~4摄氏度","goodsSize":"约700g","goodsTime":"3天","salesNum":5,"userId":"123456"}]实现代码package com.educoder.service.impl; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import com.educoder.dao.impl.BaseDao; import com.educoder.entity.Cart; import com.educoder.entity.User; import com.educoder.service.CartService; public class CartServiceImpl implements CartService { // 查询购物车列表 public List<Cart> getGoodsByUserId(HttpServletRequest request) { /********* Begin *********/ User user = (User)request.getSession().getAttribute("user"); String userId = user.getUserId(); String sql = "select * from t_cart as a, t_goods as b where a.goodsId = b.goodsId and a.userId = ?"; List<Cart> cartList = null; List<Object> parameters = new ArrayList<Object>(); parameters.add(userId); try { cartList = BaseDao.operQuery(sql, parameters, Cart.class); } catch (Exception e) { e.printStackTrace(); } return cartList; /********* End *********/ } // 购物车操作接口 @Override public void doCartHandle(String userId, String goodsId, String buyNum, String oper) { /********* Begin *********/ String deletesql = "delete from t_cart where userId=? and goodsId=?"; String querysql = "select * from t_cart where userId = ? and goodsId = ?"; String updatesql = "update t_cart set buyNum=? where userId=? and goodsId=?"; String addsql = "insert into t_cart(userId, goodsId, buyNum, addTime) values(?, ?, ?, ?)"; List<Object> parameters = new ArrayList<Object>(); //删除 if(buyNum == null) { parameters.add(userId); parameters.add(goodsId); BaseDao.operUpdate(deletesql, parameters); } else{ //进行修改和添加 List<Cart> goodsList = null; parameters.add(userId); parameters.add(goodsId); try { goodsList = BaseDao.operQuery(querysql, parameters, Cart.class); parameters.clear(); } catch (Exception e) { e.printStackTrace(); } //进行添加 if(goodsList.isEmpty()) { parameters.add(userId); parameters.add(goodsId); parameters.add(buyNum); parameters.add(new Date()); BaseDao.operUpdate(addsql, parameters); } else { //进行修改 if(oper != null) { buyNum += goodsList.get(0).getBuyNum(); parameters.add(buyNum); parameters.add(userId); parameters.add(goodsId); BaseDao.operUpdate(updatesql, parameters); } } } /********* End *********/ } }五、购物车操作本关任务

为了能进行购物车的修改、添加、删除操作,本关需要借助JDBC,对数据库表t_cart、t_goods表进行操作。

为了完成本关任务,需要了解:

JDBC更新方法封装;

购物车相关信息介绍。

JDBC查询方法封装

为了方便JDBC操作,平台进行的JDBC更新方法进行了封装,封装类com.educoder.dao.impl.BaseDao。

public static boolean operUpdate(String sql, List<Object> p) { Connection conn = null; PreparedStatement pste = null; int res = 0; conn = getConn(); try { pste = conn.prepareStatement(sql); if (p != null) { for (int i = 0; i < p.size(); i++) { pste.setObject(i + 1, p.get(i)); } } res = pste.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { releaseAll(null, pste, conn); } return res > 0;// }购物车相关信息介绍MYSQL用户名MYSQL密码驱动URLroot123123com.mysql.jdbc.Driverjdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true

com.educoder.entity.Goods字段及方法;

字段描述类型get方法set方法goodsId商品IdStringgetGoodsId()setGoodsId(String goodsId)goodsName商品名StringgetGoodsName()setGoodsName(String goodsName)goodsImg展示于主页的图StringgetGoodsImg() setGoodsImg(String goodsImg)goodsPrice价格BigDecimalgetGoodsPrice()setGoodsPrice(BigDecimal goodsPrice)goodsNum库存数量IntegergetGoodsNum()setGoodsNum(Integer goodsNum)salesNum销售数量IntegergetSalesNum()setSalesNum(Integer salesNum)goodsSize商品规格StringgetGoodsSize()setGoodsSize(String goodsSize)goodsFrom商品产地StringgetGoodsFrom()setGoodsFrom(String goodsFrom)goodsTime保质期StringgetGoodsTime()setGoodsTime(String goodsTime)goodsSaveCondition存储条件StringgetGoodsSaveCondition()setGoodsSaveCondition(String goodsSaveCondition)goodsDescribe商品描述介绍StringgetGoodsDescribe()setGoodsDescribe(String goodsDescribe)goodsExplain对商品简短说明StringgetGoodsExplain()setGoodsExplain(String goodsExplain)goodsClass所属类别StringgetGoodsClass()setGoodsClass(String goodsClass)goodsDiscount折扣BigDecimalgetGoodsDiscount()setGoodsDiscount(BigDecimal goodsDiscount)discountStartTime优惠起始时间DategetDiscountStartTime()setDiscountStartTime(Date discountStartTime)discountEndTime优惠截止时间DategetDiscountEndTime()setDiscountEndTime(Date discountEndTime)

注意:Cart类冗余信息是需要通过和t_goods表关联查询出来的,不会存在下面的t_cart表里。

Educoder/头歌JAVA——Java Web:基于JSP的网上商城(头歌java第一课)

表和类对应表;

库名表名类名online_shopt_cartCart

注意:类字段和对应的表字段名称一致,这里不再重复列出了。

编程要求

根据提示,在右侧编辑器补充doCartHandle方法代码。

接口请求参数说明:

userId 用户Id;

goodsId 商品Id;

buyNum 添加或修改数量,当为null,表示删除;

oper 如果存在,添加buyNum;如果不存在,修改为buyNum。

测试输入:123456 list2 1 2

预期输出:插入成功 userId:123456 goodsId:list2 buyNum:1 oper:2

实现代码package com.educoder.service.impl; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import com.educoder.dao.impl.BaseDao; import com.educoder.entity.Cart; import com.educoder.entity.User; import com.educoder.service.CartService; public class CartServiceImpl implements CartService { // 查询购物车列表 public List<Cart> getGoodsByUserId(HttpServletRequest request) { /********* Begin *********/ User user = (User)request.getSession().getAttribute("user"); String userId = user.getUserId(); String sql = "select * from t_cart as a, t_goods as b where a.goodsId = b.goodsId and a.userId = ?"; List<Cart> cartList = null; List<Object> parameters = new ArrayList<Object>(); parameters.add(userId); try { cartList = BaseDao.operQuery(sql, parameters, Cart.class); } catch (Exception e) { e.printStackTrace(); } return cartList; /********* End *********/ } // 购物车操作接口 @Override public void doCartHandle(String userId, String goodsId, String buyNum, String oper) { /********* Begin *********/ String deletesql = "delete from t_cart where userId=? and goodsId=?"; String querysql = "select * from t_cart where userId = ? and goodsId = ?"; String updatesql = "update t_cart set buyNum=? where userId=? and goodsId=?"; String addsql = "insert into t_cart(userId, goodsId, buyNum, addTime) values(?, ?, ?, ?)"; List<Object> parameters = new ArrayList<Object>(); //删除 if(buyNum == null) { parameters.add(userId); parameters.add(goodsId); BaseDao.operUpdate(deletesql, parameters); } else{ //进行修改和添加 List<Cart> goodsList = null; parameters.add(userId); parameters.add(goodsId); try { goodsList = BaseDao.operQuery(querysql, parameters, Cart.class); parameters.clear(); } catch (Exception e) { e.printStackTrace(); } //进行添加 if(goodsList.isEmpty()) { parameters.add(userId); parameters.add(goodsId); parameters.add(buyNum); parameters.add(new Date()); BaseDao.operUpdate(addsql, parameters); } else { //进行修改 if(oper != null) { buyNum += goodsList.get(0).getBuyNum(); parameters.add(buyNum); parameters.add(userId); parameters.add(goodsId); BaseDao.operUpdate(updatesql, parameters); } } } /********* End *********/ } }六、下单本关任务

上一关已经完成了购物车操作功能开发,现在我们就可以编写下单接口进行购买商品了,本关需要借助JDBC,在t_order、t_order_child表中存储用户订单信息。

下单相关信息介绍;

MYSQL用户名MYSQL密码驱动URLroot123123com.mysql.jdbc.Driverjdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true

com.educoder.entity.Order字段及方法;

字段描述类型get方法set方法orderId订单编号StringgetOrderId()setOrderId(String orderId)userId用户IdStringgetUserId()setUserId(String userId)orderTime订单时间DategetOrderTime()setOrderTime(Date orderTime)addressId订单地址StringgetAddressId()setAddressId()(String addressId)

com.educoder.entity.Order冗余信息字段及方法;

字段描述类型get方法set方法goodsId商品IdStringgetGoodsId()setGoodsId(String goodsId)goodsName商品名称StringgetGoodsName()setGoodsName(String goodsName)goodsImg商品图片StringgetGoodsImg()setGoodsImg(String goodsImg)goodsPrice下单价格BigDecimalgetGoodsPrice()setGoodsPrice(BigDecimal goodsPrice)

注意:Order类冗余信息是需要通过关联查询出来的,不会存在下面的t_order表里。

com.educoder.entity.OrderChildTable字段及方法;

字段描述类型get方法set方法id订单商品主键IntegergetId()setId(Integer id)orderId订单IdStringgetOrderId()setOrderId(String orderId)goodsId商品IdStringgetGoodsId()setGoodsId(String goodsId)buyNum购买数量IntegergetBuyNum()setBuyNum()(Integer buyNum)

表和类对应表;

库名表名类名online_shopt_orderOrderonline_shopt_order_childOrderChildTable

注意:类字段和对应的表字段名称一致,这里不再重复列出了。

编程要求

在右侧编辑器补充submitOrder方法代码,并返回Order类。

接口请求参数说明:

userId 用户Id;

addressId 地址Id;

goodsBuyNum 数组,购物车选中的商品数量;

chooseGoodId 数组,购物车选中的商品Id。

逻辑说明:

下单时orderId需要唯一,可以使用UUID;

表分为t_order订单表和t_order_child订单子表,因为下单商品有可能多个;

在下单时,需要调用上一关的购物车操作接口,进行购物车数据清空。

测试输入:123456 d01e153c-fc1f-4326-9956-cbf9582a9df7 1,1 list3,list6

预期输出:

清空购物车成功订单存储信息: userId:123456 addressId:d01e153c-fc1f-4326-9956-cbf9582a9df7订单商品存储信息:[{"buyNum":1,"goodsId":"list3","id":53},{"buyNum":1,"goodsId":"list6","id":54}]实现代码package com.educoder.service.impl;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.UUID;import com.educoder.dao.impl.BaseDao;import com.educoder.entity.Order;import com.educoder.service.OrderService;public class OrderServiceImpl implements OrderService { private CartServiceImpl catService = new CartServiceImpl(); // 下单 public Order submitOrder(String userId, String addressId, String[] goodsBuyNum, String[] chooseGoodId) { /********* Begin *********/ Order order = new Order(); String ordersql = "insert into t_order(orderId, userId, orderTime, addressId) values(?, ?, ?, ?)"; String child_order_sql = "insert into t_order_child (orderId, goodsId, buyNum) values( ?, ?, ?) "; String orderId = UUID.randomUUID().toString(); List<Object> parameters = new ArrayList<Object>(); parameters.add(orderId); parameters.add(userId); parameters.add(new Date()); parameters.add(addressId); BaseDao.operUpdate(ordersql, parameters); for(int n = 0 ; n < chooseGoodId.length; n++) { parameters.clear(); parameters.add(orderId); parameters.add(chooseGoodId[n]); parameters.add(goodsBuyNum[n]); BaseDao.operUpdate(child_order_sql, parameters); //下单后,需要清空购物车 catService.doCartHandle(userId, chooseGoodId[n], null, null); } //返回带有订单id的订单 order.setOrderId(orderId); return order; /********* End *********/ } // 订单查询 public List<Order> getOrderByUserId(String userId) { /********* Begin *********/ String sql = "select A.orderId, A.userId, B.userName, A.orderTime, C.address, E.goodsId, E.goodsName, D.buyNum, E.goodsPrice from " + "t_order as A, t_user as B, t_address as C, t_order_child as D, t_goods as E " + "where A.userId=? and A.orderId=D.orderId and A.userId=B.userId and A.addressId=C.addressId and D.goodsId=E.goodsId " + "order by orderTime desc"; List<Object> parameters = new ArrayList<Object>(); parameters.add(userId); List<Order> orderList = null; try { orderList = BaseDao.operQuery(sql, parameters, Order.class); } catch (Exception e) { e.printStackTrace(); } return orderList; /********* End *********/ }}七、订单查询本关任务

上一关已经完成下单接口,本关需要完成查询订单列表,本关需要借助JDBC从t_order、t_user、t_address、t_order_child表中查询订单信息。

订单查询相关信息介绍;

MYSQL用户名MYSQL密码驱动URLroot123123com.mysql.jdbc.Driverjdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true

com.educoder.entity.Order字段及方法;

字段描述类型get方法set方法orderId订单编号StringgetOrderId()setOrderId(String orderId)userId用户IdStringgetUserId()setUserId(String userId)orderTime订单时间DategetOrderTime()setOrderTime(Date orderTime)addressId订单地址StringgetAddressId()setAddressId()(String addressId)

com.educoder.entity.Order冗余信息字段及方法;

字段描述类型get方法set方法goodsId商品IdStringgetGoodsId()setGoodsId(String goodsId)goodsName商品名称StringgetGoodsName()setGoodsName(String goodsName)goodsImg商品图片StringgetGoodsImg()setGoodsImg(String goodsImg)goodsPrice下单价格BigDecimalgetGoodsPricesetGoodsPrice(BigDecimal goodsPrice)

注意:Order类冗余信息是需要通过关联查询出来的,不会存在下面的t_order表里。

com.educoder.entity.OrderChildTable字段及方法;

字段描述类型get方法set方法id订单商品主键IntegergetId()setId(Integer id)orderId订单IdStringgetOrderId()setOrderId(String orderId)goodsId商品IdStringgetGoodsId()setGoodsId(String goodsId)buyNum购买数量IntegergetBuyNum()setBuyNum()(Integer buyNum)

com.educoder.entity.Address字段及方法;

字段描述类型get方法set方法addressId地址IdStringgetAddressId()setAddressId(String addressId)userId用户IdStringgetUserId()setUserId(String userId)userName收货姓名StringgetUserName()setUserName(String userName)userTel收货电话StringgetUserTel()setUserTel()(String addressId)address收货地址StringgetAddress()setAddress()(String addressId)

表和类对应表;

库名表名类名online_shopt_orderOrderonline_shopt_order_childOrderChildTableonline_shopt_addressAddress

注意:类字段和对应的表字段名称一致,这里不再重复列出了。

页面初始效果图:

最终页面效果图:

编程要求

在右侧编辑器补充getOrderByUserId方法代码,并返回Goods列表。

接口请求参数说明:

userId 用户Id。测试说明

测试输入:123456

预期输出:

[{"address":"测试地址","buyNum":1,"goodsId":"list1","goodsName":"雪域牛乳芝士","goodsPrice":98.00,"orderId":"ab25ca41-2230-4af1-81f7-6cfe8872d6b0","orderTime":1543220250000,"userId":"123456","userName":"test"},{“address":"测试地址","buyNum":1,"goodsId":"list2","goodsName":"哈!蜜瓜蛋糕 Hey Melon","goodsPrice":99.00,"orderId":"ab25ca41-2230-4af1-81f7-6cfe8872d6b0","orderTime":1543220250000,"userId":"123456","userName":"test"}]实现代码package com.educoder.service.impl;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.UUID;import com.educoder.dao.impl.BaseDao;import com.educoder.entity.Order;import com.educoder.service.OrderService;public class OrderServiceImpl implements OrderService { private CartServiceImpl catService = new CartServiceImpl(); // 下单 public Order submitOrder(String userId, String addressId, String[] goodsBuyNum, String[] chooseGoodId) { /********* Begin *********/ Order order = new Order(); String ordersql = "insert into t_order(orderId, userId, orderTime, addressId) values(?, ?, ?, ?)"; String child_order_sql = "insert into t_order_child (orderId, goodsId, buyNum) values( ?, ?, ?) "; String orderId = UUID.randomUUID().toString(); List<Object> parameters = new ArrayList<Object>(); parameters.add(orderId); parameters.add(userId); parameters.add(new Date()); parameters.add(addressId); BaseDao.operUpdate(ordersql, parameters); for(int n = 0 ; n < chooseGoodId.length; n++) { parameters.clear(); parameters.add(orderId); parameters.add(chooseGoodId[n]); parameters.add(goodsBuyNum[n]); BaseDao.operUpdate(child_order_sql, parameters); //下单后,需要清空购物车 catService.doCartHandle(userId, chooseGoodId[n], null, null); } //返回带有订单id的订单 order.setOrderId(orderId); return order; /********* End *********/ } // 订单查询 public List<Order> getOrderByUserId(String userId) { /********* Begin *********/ String sql = "select A.orderId, A.userId, B.userName, A.orderTime, C.address, E.goodsId, E.goodsName, D.buyNum, E.goodsPrice from " + "t_order as A, t_user as B, t_address as C, t_order_child as D, t_goods as E " + "where A.userId=? and A.orderId=D.orderId and A.userId=B.userId and A.addressId=C.addressId and D.goodsId=E.goodsId " + "order by orderTime desc"; List<Object> parameters = new ArrayList<Object>(); parameters.add(userId); List<Order> orderList = null; try { orderList = BaseDao.operQuery(sql, parameters, Order.class); } catch (Exception e) { e.printStackTrace(); } return orderList; /********* End *********/ }}
本文链接地址:https://www.jiuchutong.com/zhishi/289656.html 转载请保留说明!

上一篇:属于大堡礁的一部分的心形礁,澳大利亚昆士兰 (© Peter Adams/Offset by Shutterstock)(大堡礁的现状)

下一篇:莱达尔湖, 英格兰坎布里亚郡湖区 (© Tranquillian1/iStock/Getty Images Plus)

  • iphone12过热的解决办法(苹果12过热会自动关机吗)

    iphone12过热的解决办法(苹果12过热会自动关机吗)

  • 快手显示微信已经绑定(快手显示微信已绑定其他账号怎么办?)

    快手显示微信已经绑定(快手显示微信已绑定其他账号怎么办?)

  • 小度不能语音控制了怎么办(小度不能语音控制风扇)

    小度不能语音控制了怎么办(小度不能语音控制风扇)

  • 手机能24小时录音吗(手机24小时录音软件)

    手机能24小时录音吗(手机24小时录音软件)

  • qq爱情树最高等级(qq爱情树能长多大)

    qq爱情树最高等级(qq爱情树能长多大)

  • WPS文本框高度宽度怎么设置(wps文本框高度宽度在哪)

    WPS文本框高度宽度怎么设置(wps文本框高度宽度在哪)

  • 手机卡槽完全弹不出来(手机卡槽完全弹出来)

    手机卡槽完全弹不出来(手机卡槽完全弹出来)

  • vivo丢了手机如何确定手机位置(vivo手机丢了该怎么办)

    vivo丢了手机如何确定手机位置(vivo手机丢了该怎么办)

  • qq红包最大多少金额(qq红包最大多少钱)

    qq红包最大多少金额(qq红包最大多少钱)

  • 目前大多数以太网使用的传输介质是(目前大多数以太网使用的传输介质是什么和贡献)

    目前大多数以太网使用的传输介质是(目前大多数以太网使用的传输介质是什么和贡献)

  • 电脑投屏后画面显示不全(电脑投屏后画面比例不对)

    电脑投屏后画面显示不全(电脑投屏后画面比例不对)

  • qq设置聊天背景对方能看到吗(qq设置聊天背景怎么弄)

    qq设置聊天背景对方能看到吗(qq设置聊天背景怎么弄)

  • 关闭了拼小圈朋友可不可以看到(关闭拼小圈朋友还能看到我的购买记录)

    关闭了拼小圈朋友可不可以看到(关闭拼小圈朋友还能看到我的购买记录)

  • 怎样把别人快手的视转发成自己的(怎样把别人快手作品的id号去掉)

    怎样把别人快手的视转发成自己的(怎样把别人快手作品的id号去掉)

  • 微信扫码在别人电脑上登录了怎么办(微信扫码别人能看到自己的信息吗)

    微信扫码在别人电脑上登录了怎么办(微信扫码别人能看到自己的信息吗)

  • 表格出现乱码怎么解决(表格里面出现乱码)

    表格出现乱码怎么解决(表格里面出现乱码)

  • mwn82ch a是不是国行(mwn82ch/a是什么型号)

    mwn82ch a是不是国行(mwn82ch/a是什么型号)

  • 小米ai音箱能连接几个手机(小米ai音箱能连接蓝牙吗)

    小米ai音箱能连接几个手机(小米ai音箱能连接蓝牙吗)

  • 华为mate30呼吸灯怎么设置(华为mate30呼吸灯怎么设置方法)

    华为mate30呼吸灯怎么设置(华为mate30呼吸灯怎么设置方法)

  • 2345rtprotect是什么程序(2345webprotectframe.sys)

    2345rtprotect是什么程序(2345webprotectframe.sys)

  • 怎么修改网页标题(怎么修改网页标签)

    怎么修改网页标题(怎么修改网页标签)

  • 618返场是什么(2021 618返场)

    618返场是什么(2021 618返场)

  • 苹果xs双卡双待吗(苹果xsmax怎么设置双卡双待)

    苹果xs双卡双待吗(苹果xsmax怎么设置双卡双待)

  • oppor15otg在哪里打开(oppor15手机插u盘在哪里打开)

    oppor15otg在哪里打开(oppor15手机插u盘在哪里打开)

  • Shell脚本攻略:echo $命令的作用(shell脚本攻略第三版pdf)

    Shell脚本攻略:echo $命令的作用(shell脚本攻略第三版pdf)

  • 加油站购进成品油怎么做账
  • 辅导期一般纳税人管理办法
  • 个调税新政策
  • 企业稳岗返还申请报告模板
  • 企业之间借款利息进项税可以抵扣吗
  • 金蝶迷你版怎么打印凭证
  • 财务报表申报错误怎么办
  • 消防管理费用收取标准
  • 转正后个税增加
  • 金税盘备份文件名
  • 劳务派遣小规模纳税人税率是多少
  • 银行理财怎么做才能赚钱
  • 发票开错导致不能按时入账该怎么处理呢?
  • 子公司注销欠母公司借款怎么办
  • 境外代扣代缴的税最后归谁所有
  • 小规模税局代增值税专用发票怎么交税
  • 购进免税农产品再销售免税吗
  • 增值税可以提前申报不?
  • 铝模租赁是怎么计算费用的,报价明细为你揭晓
  • 总公司资金转入私人账户
  • 代理费是指
  • 老板请客吃饭拿餐饮发票公司报销怎么账务处理?
  • 应付福利费科目
  • 税收是财政政策传导机制中重要的媒介之一
  • 计提跌价准备会影响利润吗
  • 华为手机网络拒绝接入怎么解决
  • 一般纳税人和小规模纳税人的区别
  • php tars
  • 定额发票收入怎么样确定
  • 收到银行存款利息会计分录
  • 招标单位收取标书费多少钱
  • 马尼亚岛的降水特点
  • uniapp控制硬件设备
  • php 查找数组元素
  • 扣缴单位无有效的税费种认定信息
  • 跨地区经营建筑企业预缴增值税
  • 毫米波雷达的硬件构成
  • 人工智能agi
  • 电商后台管理系统简介
  • 帝国cms上传视频半天没反应
  • 金蝶k3现金流量表编制如何生成数据
  • 出租房屋房产税计算
  • 工伤补贴如何做帐
  • 给股东分配股利
  • 个人写收据要写身份证号吗
  • 盈利能力还有什么能力
  • 零税率应税服务出口退税
  • 库存商品盘盈怎么做账
  • 公司与公司之间人与人之间最大的区别
  • 现金日记账怎么记账
  • 电子税务局自然人扣缴客户端
  • 增值税其他收益包括哪些
  • 工业用地使用年限30年与50年有什么区别
  • 债务重组的方式主要包括哪些
  • centosrpm安装
  • win8 设置
  • 电脑怎么改xp系统
  • vmware8.0.4
  • linux里top
  • win7下安装XP
  • ahqtb.exe是啥进程 ahqtb进程信息查询
  • windows 11安全模式
  • Ubuntu安装VMware tools
  • win10系统怎么设置不锁屏和休眠
  • ic_launcher.xml
  • 2015.3.25--2.cocos精灵移动 动画控制(一)
  • shell脚本实现输出字母个数大于5的单词
  • linux安装ko驱动
  • tensorflow.nn
  • android webview获取文本
  • CSS expression控制图片自动缩放效果代码[兼容 IE,Firefox]
  • oracle批处理语句
  • 性能优化报告
  • python数据类型有什么用
  • python ping检测
  • 税务通知书一般什么内容
  • 营改增对医药企业影响
  • 税务局有事业单位编制吗
  • 2020年残保金申报截止到什么时间
  • 合肥地税局上班时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号