“Java架构设计之购物车”的版本间的差异
(→查询服务queryUser( )) |
(→显示层) |
||
(未显示同一用户的1个中间版本) | |||
第5行: | 第5行: | ||
3. 编写表示层的代码 | 3. 编写表示层的代码 | ||
− | |||
第20行: | 第19行: | ||
===数据访问层=== | ===数据访问层=== | ||
数据访问层DAL是数据库的主要操控系统,实现数据的增加、删除、修改、查询等操作,并将操作结果反馈到业务逻辑层BLL。在实际运行的过程中,数据访问层没有逻辑判断能力,为了实现代码编写的严谨性,提高代码阅读程度,一般软件开发人员会在该层中编写DataAccessCommon,保证数据访问层DAL数据处理功能。 | 数据访问层DAL是数据库的主要操控系统,实现数据的增加、删除、修改、查询等操作,并将操作结果反馈到业务逻辑层BLL。在实际运行的过程中,数据访问层没有逻辑判断能力,为了实现代码编写的严谨性,提高代码阅读程度,一般软件开发人员会在该层中编写DataAccessCommon,保证数据访问层DAL数据处理功能。 | ||
+ | |||
+ | ==任务准备== | ||
+ | ===加载指定数据库的驱动程序=== | ||
+ | (此步如果所在项目已做,可忽略) | ||
+ | |||
+ | Java 连接 MySQL 需要驱动包,最新版下载地址为:http://dev.mysql.com/downloads/connector/j/,解压后得到jar库文件,然后在对应的项目中导入该库文件。 | ||
+ | |||
+ | 你可以从群邮件里下载MySQL驱动 jar 包:mysql-connector-java-5.1.39-bin.jar ,对应于mysql5.7版本。 | ||
+ | |||
+ | ===导入数据库驱动程序=== | ||
+ | (此步如果所在项目已做,可忽略) | ||
+ | |||
+ | 具体参见 [[Eclipse导入数据库驱动程序]] | ||
+ | |||
+ | |||
+ | ===创建测试数据=== | ||
+ | |||
+ | 接下来我们在 MySQL 中创建 cloud 数据库,并创建 goods 数据表,表结构如下: | ||
+ | |||
+ | <nowiki> | ||
+ | |||
+ | |||
+ | <nowiki>mysql> create database cloud; | ||
+ | |||
+ | Query OK, 1 row affected (0.00 sec) | ||
+ | |||
+ | mysql> use cloud; | ||
+ | |||
+ | Database changed | ||
+ | |||
+ | 数据表 carts: | ||
+ | |||
+ | CREATE TABLE IF NOT EXISTS `carts` ( | ||
+ | `id` INT unsigned AUTO_INCREMENT, | ||
+ | `uid` INT(10) NOT NULL, | ||
+ | `gid` INT(10) NOT NULL, | ||
+ | `num` INT(11) NOT NULL, | ||
+ | PRIMARY KEY (`id`) | ||
+ | )ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||
+ | |||
+ | 插入几条购物车数据(插的时候,uid,gid 分别对应着 user表和 goods表里的 id号,必须得是真实存在的。 | ||
+ | |||
+ | MariaDB [cloud]> INSERT INTO `carts`(`uid`,`gid`,`num`) VALUES('1',`3`,3); | ||
+ | ERROR 1054 (42S22): Unknown column '3' in 'field list' | ||
+ | |||
+ | MariaDB [cloud]> INSERT INTO `carts`(`uid`,`gid`,`num`) VALUES('1','3','3'); | ||
+ | Query OK, 1 row affected (0.00 sec) | ||
+ | |||
+ | MariaDB [cloud]> INSERT INTO `carts`(`uid`,`gid`,`num`) VALUES('1','4','2'); | ||
+ | Query OK, 1 row affected (0.00 sec) | ||
+ | |||
+ | MariaDB [cloud]> SELECT * FROM `carts` inner join `goods` on `carts`.`gid` = `goods`.`id`; | ||
+ | +----+-----+-----+-----+----+-----------------+-------+-----+ | ||
+ | | id | uid | gid | num | id | name | price | num | | ||
+ | +----+-----+-----+-----+----+-----------------+-------+-----+ | ||
+ | | 1 | 1 | 3 | 3 | 3 | 兰州牛肉面 | 12 | 20 | | ||
+ | | 2 | 1 | 4 | 2 | 4 | 黄焖鸡米饭 | 12 | 30 | | ||
+ | +----+-----+-----+-----+----+-----------------+-------+-----+ | ||
+ | |||
+ | MariaDB [cloud]> SELECT `carts`.`id`,`goods`.`name`,`goods`.`price`,`carts`.num FROM `carts` inner join `goods` on `carts`.`gid` = `goods`.`id`; | ||
+ | +----+-----------------+-------+-----+ | ||
+ | | id | name | price | num | | ||
+ | +----+-----------------+-------+-----+ | ||
+ | | 1 | 兰州牛肉面 | 12 | 3 | | ||
+ | | 2 | 黄焖鸡米饭 | 12 | 2 | | ||
+ | +----+-----------------+-------+-----+ | ||
+ | 2 rows in set (0.00 sec) | ||
+ | </nowiki> | ||
+ | |||
+ | </nowiki> | ||
+ | ===建立数据连接类MyCon=== | ||
+ | (此步如果所在项目已做,可忽略) | ||
+ | |||
+ | <nowiki> | ||
+ | package dao; | ||
+ | |||
+ | import java.sql.*; | ||
+ | |||
+ | public class MyCon { | ||
+ | |||
+ | public static Connection conn = null; | ||
+ | |||
+ | /** | ||
+ | * 连接数据库 | ||
+ | * @param 值为空 | ||
+ | * @return Connection 建立的数据库连接 | ||
+ | */ | ||
+ | public static boolean getConn() { | ||
+ | |||
+ | // JDBC 驱动名及数据库 URL | ||
+ | final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; | ||
+ | final String DB_URL = "jdbc:mysql://10.0.0.30:3306/cloud?characterEncoding=utf8"; | ||
+ | final String USER = "root"; | ||
+ | final String PASS = "000000"; | ||
+ | |||
+ | try { | ||
+ | Class.forName(JDBC_DRIVER); //classLoader,加载对应驱动 | ||
+ | conn = (Connection) DriverManager.getConnection(DB_URL, USER, PASS); | ||
+ | System.out.println("MySQL连接成功!"); | ||
+ | } catch (ClassNotFoundException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | return false; | ||
+ | } catch (SQLException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | return false; | ||
+ | } | ||
+ | return true; | ||
+ | } | ||
+ | public static boolean disConn() { | ||
+ | try { | ||
+ | conn.close(); | ||
+ | System.out.println("MySQL关闭成功!"); | ||
+ | } catch (SQLException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | return false; | ||
+ | } | ||
+ | return true; | ||
+ | } | ||
+ | public static void main(String[] args) { | ||
+ | // TODO Auto-generated method stub | ||
+ | getConn(); | ||
+ | disConn(); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | 运行一下,看看能否连接数据库 ? | ||
==数据访问层== | ==数据访问层== | ||
===CartDao接口=== | ===CartDao接口=== | ||
− | |||
− | |||
− | |||
<nowiki> | <nowiki> | ||
第33行: | 第157行: | ||
import entity.*; | import entity.*; | ||
public interface CartDao { | public interface CartDao { | ||
+ | public int getNum(Integer uid);//获取商品数量 | ||
− | public boolean addGoods(Integer | + | public boolean addGoods(Integer uid,Integer gid,Integer num);//添加商品 |
− | + | public boolean delGoods(Integer cid) ;//删除商品 | |
− | public ArrayList<Goods> queryGoods();//查询购物车内已放商品 | + | public ArrayList<Goods> queryGoods(Integer uid);//查询购物车内已放商品 |
− | public | + | public Integer [] hasGoods(Integer uid,Integer gid);//查询购物车内是否已有某件商品,返回该商品的订单号和数量 |
− | + | ||
− | public boolean modifyGoods(Integer | + | public boolean modifyGoods(Integer cid,Integer num);//修改购物车内该种商品的数量 |
} | } | ||
+ | |||
</nowiki> | </nowiki> | ||
===创建CartDaoSQL实现类=== | ===创建CartDaoSQL实现类=== | ||
− | + | <nowiki> | |
+ | package dao; | ||
+ | |||
+ | import java.sql.*; | ||
+ | import java.util.*; | ||
+ | |||
+ | import entity.*; | ||
+ | |||
+ | public class CartDaoSQL implements CartDao{ | ||
+ | Connection conn ; | ||
+ | |||
+ | public CartDaoSQL(){ | ||
+ | conn = MyCon.conn;//建立数据连接 | ||
+ | } | ||
+ | public static void main(String[] args) { | ||
+ | // TODO Auto-generated method stub | ||
+ | MyCon.getConn();//建立数据库连接 | ||
+ | CartDao s = new CartDaoSQL(); | ||
+ | UserDao uds =new UserDaoSQL(); | ||
+ | GoodsDao g = new GoodsDaoSQL(); | ||
+ | MyCon.disConn();//建立数据库连接 | ||
+ | |||
+ | } | ||
+ | } | ||
+ | |||
+ | </nowiki> | ||
+ | ===购物车商品数getNum()=== | ||
+ | <nowiki> | ||
+ | public int getNum(Integer uid) { | ||
+ | |||
+ | int rowCount = 0; | ||
+ | try { | ||
+ | ResultSet rs = null; //建立一个空的结果集 | ||
+ | //1.创建PreparedStatement 对象,让它与一条SQL模板绑定; | ||
+ | String sql = "SELECT sum(`carts`.num) record FROM `carts` " | ||
+ | + "inner join `goods` on `carts`.`gid` = `goods`.`id` where uid= ?"; | ||
+ | PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql); | ||
+ | pstmt.setInt(1,uid); | ||
+ | //2.执行查询 | ||
+ | rs = pstmt.executeQuery();//执行查询 | ||
+ | if(rs.next()){ | ||
+ | rowCount=rs.getInt("record"); | ||
+ | } | ||
+ | pstmt.close(); | ||
+ | |||
+ | }catch (SQLException e) {//捕捉、处理异常 | ||
+ | System.out.println(e.getMessage()); | ||
+ | } | ||
+ | return rowCount; | ||
+ | }</nowiki> | ||
+ | |||
+ | ===(购物车)添加商品addGoods=== | ||
+ | |||
+ | <nowiki> | ||
+ | public boolean addGoods(Integer uid,Integer gid,Integer num){ | ||
+ | Connection conn = this.conn; | ||
+ | int i = 0; | ||
+ | String sql = "insert into carts (uid,gid,num) values(?,?,?)"; | ||
+ | PreparedStatement pstmt; | ||
+ | boolean success=false; | ||
+ | try {//1.创建PreparedStatement 对象,让它与一条SQL模板绑定; | ||
+ | pstmt = (PreparedStatement) conn.prepareStatement(sql); | ||
+ | pstmt.setInt(1, uid); | ||
+ | pstmt.setInt(2, gid); //pstmt.setInt(2, user.getAge()); pstmt.setDate | ||
+ | pstmt.setInt(3, num); | ||
+ | |||
+ | i = pstmt.executeUpdate();//2.执行查询 | ||
+ | if(i!=0){ //3.查看查询状态 | ||
+ | //System.out.println("商品"+gid+"插入成功!"); | ||
+ | success=true; | ||
+ | }else { | ||
+ | //System.out.println("商品"+gid+"插入失败!"); | ||
+ | success=false; | ||
+ | } | ||
+ | pstmt.close(); | ||
+ | |||
+ | } catch (SQLException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | success=false; | ||
+ | } | ||
+ | return success; | ||
+ | }</nowiki> | ||
+ | |||
+ | ===(购物车)删除商品=== | ||
+ | <nowiki> | ||
+ | public boolean delGoods(Integer cid) {//cid为购物车某条订单的id号 | ||
+ | Connection conn = this.conn; | ||
+ | |||
+ | boolean success=false; | ||
+ | try { | ||
+ | |||
+ | String sql = "DELETE FROM carts WHERE id = ? "; | ||
+ | PreparedStatement pstmt = conn.prepareStatement(sql); | ||
+ | pstmt.setInt(1, cid); | ||
+ | |||
+ | int i = pstmt.executeUpdate(); | ||
+ | if(i!=0){ | ||
+ | //System.out.println("订单"+cid+"删除成功!"); | ||
+ | success=true; | ||
+ | }else { | ||
+ | //System.out.println("订单"+cid+"删除失败!"); | ||
+ | success=false; | ||
+ | } | ||
+ | pstmt.close(); | ||
+ | |||
+ | }catch (SQLException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | success=false; | ||
+ | } | ||
+ | return success; | ||
+ | }</nowiki> | ||
+ | |||
+ | ===(购物车)查询某一商品是否存在=== | ||
+ | <nowiki> | ||
+ | public Integer [] hasGoods(Integer uid,Integer gid) {//查询某一商品 | ||
+ | Integer[] info = new Integer[2];//新建数组,用来盛放商品的订单号和数量 | ||
+ | info[0]=0;info[1]=0; | ||
+ | try { | ||
+ | ResultSet rs = null; //建立一个空的结果集 | ||
+ | |||
+ | //1.创建PreparedStatement 对象,让它与一条SQL模板绑定; | ||
+ | String sql = "select id,num from carts where uid=? and gid=? "; | ||
+ | PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql); | ||
+ | pstmt.setInt(1, uid); | ||
+ | pstmt.setInt(2, gid); | ||
+ | //3.执行查询 | ||
+ | rs = pstmt.executeQuery();//执行查询 | ||
+ | |||
+ | if(rs.next()){ | ||
+ | info[0] = rs.getInt("id"); | ||
+ | info[1] =rs.getInt("num"); | ||
+ | } | ||
+ | pstmt.close(); | ||
+ | |||
+ | }catch (SQLException e) {//捕捉、处理异常 | ||
+ | System.out.println(e.getMessage()); | ||
+ | } | ||
+ | return info; | ||
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | ===(购物车)查询所有商品=== | ||
+ | <nowiki> | ||
+ | public ArrayList<Goods> queryGoods(Integer uid){//查询所有商品 | ||
+ | |||
+ | ArrayList<Goods> garray = new ArrayList<>(); | ||
+ | try { //1.编写预编译语句 | ||
+ | String sql = "SELECT `carts`.`id`,`goods`.`name`,`goods`.`price`,`carts`.num FROM `carts` " | ||
+ | + "inner join `goods` on `carts`.`gid` = `goods`.`id`where uid= ?"; | ||
+ | PreparedStatement pstmt = (PreparedStatement)conn.prepareStatement(sql); | ||
+ | pstmt.setInt(1, uid); | ||
+ | //2.执行查询 | ||
+ | ResultSet rs = pstmt.executeQuery();//执行查询 | ||
+ | int col = rs.getMetaData().getColumnCount();//获取字段数 | ||
+ | |||
+ | |||
+ | //4. 打印数据表结果 | ||
+ | |||
+ | while (rs.next()) { | ||
+ | String id = Integer.toString(rs.getInt(1)); | ||
+ | String gname = rs.getString(2); | ||
+ | float price= rs.getFloat(3); | ||
+ | int num = rs.getInt(4); | ||
+ | Goods g = new Goods(id,gname,price,num); | ||
+ | garray.add(g); | ||
+ | //System.out.print(rs.getString(i) + "\t"); | ||
+ | } | ||
+ | |||
+ | } catch (SQLException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | } | ||
+ | |||
+ | return garray; | ||
+ | }</nowiki> | ||
+ | |||
+ | ===(购物车)修改商品数量=== | ||
+ | <nowiki> | ||
+ | public boolean modifyGoods(Integer cid,Integer num) { | ||
+ | //修改商品 | ||
+ | int i = 0; | ||
+ | if(num ==0 ) {//如果修改数量为0,直接删除 | ||
+ | return delGoods(cid); | ||
+ | } | ||
+ | |||
+ | String sql = "UPDATE carts SET num=?" | ||
+ | + " WHERE id=?"; | ||
+ | PreparedStatement pstmt; | ||
+ | boolean success = false; | ||
+ | try { | ||
+ | pstmt = (PreparedStatement) conn.prepareStatement(sql); | ||
+ | pstmt.setInt(1, num); | ||
+ | pstmt.setInt(2,cid); | ||
+ | i = pstmt.executeUpdate(); | ||
+ | if(i!=0){ | ||
+ | //System.out.println("订单"+cid+"修改成功!"); | ||
+ | success=true; | ||
+ | }else { | ||
+ | //System.out.println("订单"+cid+"修改失败!"); | ||
+ | success = false; | ||
+ | } | ||
+ | pstmt.close(); | ||
+ | |||
+ | } catch (SQLException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | success = false; | ||
+ | } | ||
+ | return success; | ||
+ | }</nowiki> | ||
+ | |||
+ | ===测试代码=== | ||
+ | <nowiki> | ||
+ | public static void main(String[] args) { | ||
+ | // TODO Auto-generated method stub | ||
+ | MyCon.getConn();//建立数据库连接 | ||
+ | CartDao s = new CartDaoSQL(); | ||
+ | UserDao uds =new UserDaoSQL(); | ||
+ | GoodsDao g = new GoodsDaoSQL(); | ||
+ | |||
+ | /*选择一个用户id ,购物车是和用户身份相关联的 */ | ||
+ | System.out.println(uds.queryUser()); | ||
+ | System.out.println("请输入用户id号:"); | ||
+ | Scanner sc = new Scanner(System.in); | ||
+ | int uid = Integer.valueOf(sc.next());//输入用户id号 | ||
+ | |||
+ | /* 向购物车中添加商品 */ | ||
+ | System.out.println("商城现有商品:"); | ||
+ | System.out.println(g.findAll()); | ||
+ | int gid,num; | ||
+ | System.out.println("您想购买什么商品?(输入商品id号)"); | ||
+ | gid = Integer.valueOf(sc.next());//输入商品id号 | ||
+ | System.out.println("购买该商品的数量为:"); | ||
+ | num = Integer.valueOf(sc.next());//输入商品购买数量 | ||
+ | System.out.println("添加商品操作:"+ s.addGoods(uid, gid, num)); | ||
+ | |||
+ | /* 查询购物车所有商品 */ | ||
+ | //获取购物车商品总数 | ||
+ | System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); | ||
+ | //查询购物车所有商品 | ||
+ | System.out.println("该用户购物车如下所示:"); | ||
+ | System.out.println(s.queryGoods(uid)); | ||
+ | |||
+ | /*查看购物车内某商品是否存在 */ | ||
+ | System.out.println("商城现有商品:"); | ||
+ | System.out.println(g.findAll()); | ||
+ | System.out.println("您想查看什么商品在购物车内的情况?(输入商品id号)"); | ||
+ | gid = Integer.valueOf(sc.next());//输入商品id号 | ||
+ | Integer [] info = s.hasGoods(uid, gid); | ||
+ | System.out.println("该商品在购物车内的订单号为:"+info[0]+",数量为:"+info[1]); | ||
+ | |||
+ | /*修改购物车内商品数量 */ | ||
+ | System.out.println("您想修改什么商品?(输入订单id号)"); | ||
+ | int cid = Integer.valueOf(sc.next());//输入商品id号 | ||
+ | System.out.println("修改后,该商品的数量为:"); | ||
+ | num = Integer.valueOf(sc.next()); | ||
+ | System.out.println("商品修改操作:"+s.modifyGoods(cid, num)); | ||
+ | //获取购物车商品总数 | ||
+ | System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); | ||
+ | //查询购物车所有商品 | ||
+ | System.out.println("该用户购物车如下所示:"); | ||
+ | System.out.println(s.queryGoods(uid)); | ||
+ | |||
+ | /*删除购物车内商品 */ | ||
+ | //删除商品 | ||
+ | System.out.println("您想取消什么订单的购买?(输入订单id号)"); | ||
+ | cid = Integer.valueOf(sc.next());//输入订单id号 | ||
+ | System.out.println("商品删除操作:"+s.delGoods(cid)); | ||
+ | //获取购物车商品总数 | ||
+ | System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); | ||
+ | //查询购物车所有商品 | ||
+ | System.out.println("该用户购物车如下所示:"); | ||
+ | System.out.println(s.queryGoods(uid)); | ||
+ | |||
+ | |||
+ | sc.close(); | ||
+ | MyCon.disConn();//建立数据库连接 | ||
+ | |||
+ | }</nowiki> | ||
− | + | ===全部代码=== | |
+ | <nowiki> | ||
+ | package dao; | ||
+ | import java.sql.*; | ||
+ | import java.util.*; | ||
+ | import entity.*; | ||
+ | public class CartDaoSQL implements CartDao{ | ||
+ | Connection conn ; | ||
+ | |||
+ | public CartDaoSQL(){ | ||
+ | conn = MyCon.conn;//建立数据连接 | ||
+ | } | ||
+ | |||
+ | public int getNum(Integer uid) { | ||
+ | |||
+ | int rowCount = 0; | ||
+ | try { | ||
+ | ResultSet rs = null; //建立一个空的结果集 | ||
+ | //1.创建PreparedStatement 对象,让它与一条SQL模板绑定; | ||
+ | String sql = "SELECT sum(`carts`.num) record FROM `carts` " | ||
+ | + "inner join `goods` on `carts`.`gid` = `goods`.`id` where uid= ?"; | ||
+ | PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql); | ||
+ | pstmt.setInt(1,uid); | ||
+ | //2.执行查询 | ||
+ | rs = pstmt.executeQuery();//执行查询 | ||
+ | if(rs.next()){ | ||
+ | rowCount=rs.getInt("record"); | ||
+ | } | ||
+ | pstmt.close(); | ||
+ | |||
+ | }catch (SQLException e) {//捕捉、处理异常 | ||
+ | System.out.println(e.getMessage()); | ||
+ | } | ||
+ | return rowCount; | ||
+ | } | ||
+ | |||
+ | public boolean addGoods(Integer uid,Integer gid,Integer num){ | ||
+ | Connection conn = this.conn; | ||
+ | int i = 0; | ||
+ | String sql = "insert into carts (uid,gid,num) values(?,?,?)"; | ||
+ | PreparedStatement pstmt; | ||
+ | boolean success=false; | ||
+ | try {//1.创建PreparedStatement 对象,让它与一条SQL模板绑定; | ||
+ | pstmt = (PreparedStatement) conn.prepareStatement(sql); | ||
+ | pstmt.setInt(1, uid); | ||
+ | pstmt.setInt(2, gid); //pstmt.setInt(2, user.getAge()); pstmt.setDate | ||
+ | pstmt.setInt(3, num); | ||
+ | |||
+ | i = pstmt.executeUpdate();//2.执行查询 | ||
+ | if(i!=0){ //3.查看查询状态 | ||
+ | //System.out.println("商品"+gid+"插入成功!"); | ||
+ | success=true; | ||
+ | }else { | ||
+ | //System.out.println("商品"+gid+"插入失败!"); | ||
+ | success=false; | ||
+ | } | ||
+ | pstmt.close(); | ||
+ | |||
+ | } catch (SQLException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | success=false; | ||
+ | } | ||
+ | return success; | ||
+ | } | ||
+ | |||
+ | public boolean delGoods(Integer cid) {//cid为购物车某条订单的id号 | ||
+ | Connection conn = this.conn; | ||
+ | |||
+ | boolean success=false; | ||
+ | try { | ||
+ | |||
+ | String sql = "DELETE FROM carts WHERE id = ? "; | ||
+ | PreparedStatement pstmt = conn.prepareStatement(sql); | ||
+ | pstmt.setInt(1, cid); | ||
+ | |||
+ | int i = pstmt.executeUpdate(); | ||
+ | if(i!=0){ | ||
+ | //System.out.println("订单"+cid+"删除成功!"); | ||
+ | success=true; | ||
+ | }else { | ||
+ | //System.out.println("订单"+cid+"删除失败!"); | ||
+ | success=false; | ||
+ | } | ||
+ | pstmt.close(); | ||
+ | |||
+ | }catch (SQLException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | success=false; | ||
+ | } | ||
+ | return success; | ||
+ | } | ||
+ | public Integer [] hasGoods(Integer uid,Integer gid) {//查询某一商品 | ||
+ | Integer[] info = new Integer[2];//新建数组,用来盛放商品的订单号和数量 | ||
+ | info[0]=0;info[1]=0; | ||
+ | try { | ||
+ | ResultSet rs = null; //建立一个空的结果集 | ||
+ | |||
+ | //1.创建PreparedStatement 对象,让它与一条SQL模板绑定; | ||
+ | String sql = "select id,num from carts where uid=? and gid=? "; | ||
+ | PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql); | ||
+ | pstmt.setInt(1, uid); | ||
+ | pstmt.setInt(2, gid); | ||
+ | //3.执行查询 | ||
+ | rs = pstmt.executeQuery();//执行查询 | ||
+ | |||
+ | if(rs.next()){ | ||
+ | info[0] = rs.getInt("id"); | ||
+ | info[1] =rs.getInt("num"); | ||
+ | } | ||
+ | pstmt.close(); | ||
+ | |||
+ | }catch (SQLException e) {//捕捉、处理异常 | ||
+ | System.out.println(e.getMessage()); | ||
+ | } | ||
+ | return info; | ||
+ | } | ||
+ | |||
+ | |||
+ | public ArrayList<Goods> queryGoods(Integer uid){//查询所有商品 | ||
+ | |||
+ | ArrayList<Goods> garray = new ArrayList<>(); | ||
+ | try { //1.编写预编译语句 | ||
+ | String sql = "SELECT `carts`.`id`,`goods`.`name`,`goods`.`price`,`carts`.num FROM `carts` " | ||
+ | + "inner join `goods` on `carts`.`gid` = `goods`.`id`where uid= ?"; | ||
+ | PreparedStatement pstmt = (PreparedStatement)conn.prepareStatement(sql); | ||
+ | pstmt.setInt(1, uid); | ||
+ | //2.执行查询 | ||
+ | ResultSet rs = pstmt.executeQuery();//执行查询 | ||
+ | int col = rs.getMetaData().getColumnCount();//获取字段数 | ||
+ | |||
+ | |||
+ | //4. 打印数据表结果 | ||
+ | |||
+ | while (rs.next()) { | ||
+ | String id = Integer.toString(rs.getInt(1)); | ||
+ | String gname = rs.getString(2); | ||
+ | float price= rs.getFloat(3); | ||
+ | int num = rs.getInt(4); | ||
+ | Goods g = new Goods(id,gname,price,num); | ||
+ | garray.add(g); | ||
+ | //System.out.print(rs.getString(i) + "\t"); | ||
+ | } | ||
+ | |||
+ | } catch (SQLException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | } | ||
+ | |||
+ | return garray; | ||
+ | } | ||
+ | public boolean modifyGoods(Integer cid,Integer num) { | ||
+ | //修改商品 | ||
+ | int i = 0; | ||
+ | if(num ==0 ) {//如果修改数量为0,直接删除 | ||
+ | return delGoods(cid); | ||
+ | } | ||
+ | |||
+ | String sql = "UPDATE carts SET num=?" | ||
+ | + " WHERE id=?"; | ||
+ | PreparedStatement pstmt; | ||
+ | boolean success = false; | ||
+ | try { | ||
+ | pstmt = (PreparedStatement) conn.prepareStatement(sql); | ||
+ | pstmt.setInt(1, num); | ||
+ | pstmt.setInt(2,cid); | ||
+ | i = pstmt.executeUpdate(); | ||
+ | if(i!=0){ | ||
+ | //System.out.println("订单"+cid+"修改成功!"); | ||
+ | success=true; | ||
+ | }else { | ||
+ | //System.out.println("订单"+cid+"修改失败!"); | ||
+ | success = false; | ||
+ | } | ||
+ | pstmt.close(); | ||
+ | |||
+ | } catch (SQLException e) { | ||
+ | System.out.println(e.getMessage()); | ||
+ | success = false; | ||
+ | } | ||
+ | return success; | ||
+ | } | ||
+ | |||
+ | |||
+ | public static void main(String[] args) { | ||
+ | // TODO Auto-generated method stub | ||
+ | MyCon.getConn();//建立数据库连接 | ||
+ | CartDao s = new CartDaoSQL(); | ||
+ | UserDao uds =new UserDaoSQL(); | ||
+ | GoodsDao g = new GoodsDaoSQL(); | ||
+ | |||
+ | /*选择一个用户id ,购物车是和用户身份相关联的 */ | ||
+ | System.out.println(uds.queryUser()); | ||
+ | System.out.println("请输入用户id号:"); | ||
+ | Scanner sc = new Scanner(System.in); | ||
+ | int uid = Integer.valueOf(sc.next());//输入用户id号 | ||
+ | |||
+ | /* 向购物车中添加商品 */ | ||
+ | System.out.println("商城现有商品:"); | ||
+ | System.out.println(g.findAll()); | ||
+ | int gid,num; | ||
+ | System.out.println("您想购买什么商品?(输入商品id号)"); | ||
+ | gid = Integer.valueOf(sc.next());//输入商品id号 | ||
+ | System.out.println("购买该商品的数量为:"); | ||
+ | num = Integer.valueOf(sc.next());//输入商品购买数量 | ||
+ | System.out.println("添加商品操作:"+ s.addGoods(uid, gid, num)); | ||
+ | |||
+ | /* 查询购物车所有商品 */ | ||
+ | //获取购物车商品总数 | ||
+ | System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); | ||
+ | //查询购物车所有商品 | ||
+ | System.out.println("该用户购物车如下所示:"); | ||
+ | System.out.println(s.queryGoods(uid)); | ||
+ | |||
+ | /*查看购物车内某商品是否存在 */ | ||
+ | System.out.println("商城现有商品:"); | ||
+ | System.out.println(g.findAll()); | ||
+ | System.out.println("您想查看什么商品在购物车内的情况?(输入商品id号)"); | ||
+ | gid = Integer.valueOf(sc.next());//输入商品id号 | ||
+ | Integer [] info = s.hasGoods(uid, gid); | ||
+ | System.out.println("该商品在购物车内的订单号为:"+info[0]+",数量为:"+info[1]); | ||
+ | |||
+ | /*修改购物车内商品数量 */ | ||
+ | System.out.println("您想修改什么商品?(输入订单id号)"); | ||
+ | int cid = Integer.valueOf(sc.next());//输入商品id号 | ||
+ | System.out.println("修改后,该商品的数量为:"); | ||
+ | num = Integer.valueOf(sc.next()); | ||
+ | System.out.println("商品修改操作:"+s.modifyGoods(cid, num)); | ||
+ | //获取购物车商品总数 | ||
+ | System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); | ||
+ | //查询购物车所有商品 | ||
+ | System.out.println("该用户购物车如下所示:"); | ||
+ | System.out.println(s.queryGoods(uid)); | ||
+ | |||
+ | /*删除购物车内商品 */ | ||
+ | //删除商品 | ||
+ | System.out.println("您想取消什么订单的购买?(输入订单id号)"); | ||
+ | cid = Integer.valueOf(sc.next());//输入订单id号 | ||
+ | System.out.println("商品删除操作:"+s.delGoods(cid)); | ||
+ | //获取购物车商品总数 | ||
+ | System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); | ||
+ | //查询购物车所有商品 | ||
+ | System.out.println("该用户购物车如下所示:"); | ||
+ | System.out.println(s.queryGoods(uid)); | ||
+ | |||
+ | |||
+ | sc.close(); | ||
+ | MyCon.disConn();//建立数据库连接 | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | } | ||
+ | </nowiki> | ||
==业务逻辑层== | ==业务逻辑层== | ||
第59行: | 第713行: | ||
<nowiki> | <nowiki> | ||
+ | package service; | ||
+ | |||
+ | import java.util.ArrayList; | ||
+ | import java.util.Scanner; | ||
+ | |||
+ | import dao.*; | ||
+ | import entity.*; | ||
+ | //import exception.GoodsException; | ||
+ | /** | ||
+ | * 这个类处理与购物车有关的业务逻辑 | ||
+ | */ | ||
+ | public class CartsService { | ||
+ | |||
+ | |||
+ | private CartDao cart ;//购物车 | ||
+ | private GoodsDao dbset;//商品库 | ||
+ | |||
+ | public CartsService() { | ||
+ | cart = new CartDaoSQL(); | ||
+ | dbset = new GoodsDaoSQL(); | ||
+ | } | ||
+ | public static void main(String[] args) { | ||
+ | // TODO Auto-generated method stub | ||
+ | |||
+ | MyCon.getConn();//建立数据库连接 | ||
+ | CartsService s = new CartsService(); | ||
+ | UserDao uds =new UserDaoSQL(); | ||
+ | GoodsDao g = new GoodsDaoSQL(); | ||
+ | |||
+ | MyCon.disConn();//关闭数据库连接 | ||
+ | } | ||
+ | } | ||
</nowiki> | </nowiki> | ||
− | === | + | ===向购物车中添加商品addToCart()=== |
− | public | + | <nowiki> |
+ | /** | ||
+ | * 添加购物车,向购物车中添加商品 | ||
+ | * @param g 向仓库中添加的商品 | ||
+ | * @return 值为空 | ||
+ | */ | ||
+ | public String addToCart(Integer uid,Integer gid,Integer n){ | ||
+ | |||
+ | String message =""; | ||
+ | if(n<=0){ | ||
+ | message = "商品数量必须大于0!"; | ||
+ | } | ||
+ | Integer[] info = dbset.hasGoods(gid);//查询有无该商品,返回info[0]表示布尔值,info[1]表示商品数目 | ||
+ | if(info[0] == 0) {//如果该商品不存在 | ||
+ | message = "该商品已下架,请浏览其他商品!"; | ||
+ | }else if (info[1] ==0) {//如果该商品数量为0 | ||
+ | message = "该商品暂缺货,请浏览其他商品!"; | ||
+ | }else if(info[1] < n) { | ||
+ | message = "该商品仅剩"+info[1] + "个,超过您的购买量,请调整购买量或选购其他商品"; | ||
+ | }else {//如果以上情况都排除,可以将商品添加到购物车中了 | ||
+ | boolean have=false,success=false; | ||
+ | Integer[] c= cart.hasGoods(uid, gid);//c[0] 返回订单号,c[1] 返回订单内商品数目 | ||
+ | if(c[0]==0) {//购物车中原先没有此商品,直接添加即可 | ||
+ | success= cart.addGoods(uid, gid, n); | ||
+ | }else { | ||
+ | success = cart.modifyGoods(c[0], c[1]+n); | ||
+ | } | ||
+ | if(success ==true) { | ||
+ | message ="该商品添加购物车成功!"; | ||
+ | }else { | ||
+ | message ="该商品添加购物车失败!"; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | return message; | ||
+ | }</nowiki> | ||
− | === | + | ===从购物车删除商品delFromCart()=== |
− | public | + | <nowiki> |
+ | /** | ||
+ | * 向购物车中删除商品 | ||
+ | * @param g 向仓库中删除的商品 | ||
+ | * @return 值为空 | ||
+ | */ | ||
+ | public String delFromCart(Integer cid) { | ||
+ | |||
+ | System.out.println("现在开始从购物车中删除商品 "); | ||
+ | String message=""; | ||
+ | |||
+ | |||
+ | if(cart.delGoods(cid)==true) { | ||
+ | message =("订单"+ cid+" 取消成功!"); | ||
+ | }else { | ||
+ | message =("订单"+ cid+" 取消失败!"); | ||
+ | } | ||
+ | |||
+ | return message; | ||
+ | |||
+ | }</nowiki> | ||
− | === | + | ===查看购物车所有商品queryGoods( )=== |
<nowiki> | <nowiki> | ||
− | + | /** | |
− | * | + | * 查询购物车中的商品 |
* * @param 值为空 | * * @param 值为空 | ||
* @return 值为空 | * @return 值为空 | ||
*/ | */ | ||
− | public | + | public ArrayList<Goods> queryGoods(Integer uid ){ |
− | ArrayList<Goods> goods = | + | ArrayList<Goods> goods = cart.queryGoods(uid); |
− | System.out.println(" | + | |
+ | //测试代码 | ||
+ | /* | ||
+ | System.out.println("购物车中现有商品数:"); | ||
for(Goods g :goods) { | for(Goods g :goods) { | ||
System.out.println(g); | System.out.println(g); | ||
} | } | ||
− | + | */ | |
+ | return goods; | ||
}</nowiki> | }</nowiki> | ||
+ | |||
+ | ===获取购物车商品数getNum()=== | ||
+ | <nowiki> | ||
+ | public int getNum(Integer uid) {//获取商品数量 | ||
+ | |||
+ | return cart.getNum(uid); | ||
+ | }</nowiki> | ||
+ | |||
+ | |||
===修改商品服务modifyCart=== | ===修改商品服务modifyCart=== | ||
− | public | + | <nowiki> |
− | == | + | /** |
+ | * 向购物车中修改商品的数量 | ||
+ | * @param g 仓库中待修改的商品 | ||
+ | * @param p 商品修改后的价格 | ||
+ | * @return 值为空 | ||
+ | */ | ||
+ | public String modifyCart(Integer cid,Integer num) { | ||
+ | System.out.println("现在开始修改商品 "+ cid+ " 的价格"); | ||
+ | String message=""; | ||
+ | |||
+ | boolean success =cart.modifyGoods(cid, num); | ||
+ | if(success ==true) { | ||
+ | message =("订单"+ cid+" 修改成功!"); | ||
+ | }else { | ||
+ | message =("订单"+ cid+" 修改失败!"); | ||
+ | } | ||
+ | |||
+ | return message; | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | }</nowiki> | ||
+ | |||
− | |||
===在main方法中写测试代码=== | ===在main方法中写测试代码=== | ||
− | + | <nowiki> | |
+ | public static void main(String[] args) { | ||
+ | // TODO Auto-generated method stub | ||
+ | |||
+ | MyCon.getConn();//建立数据库连接 | ||
+ | CartsService s = new CartsService(); | ||
+ | UserDao uds =new UserDaoSQL(); | ||
+ | GoodsDao g = new GoodsDaoSQL(); | ||
+ | |||
+ | /*选择一个用户id ,购物车是和用户身份相关联的 */ | ||
+ | System.out.println(uds.queryUser()); | ||
+ | System.out.println("请输入用户id号:"); | ||
+ | Scanner sc = new Scanner(System.in); | ||
+ | int uid = Integer.valueOf(sc.next());//输入用户id号 | ||
+ | |||
+ | /* 向购物车中添加商品 */ | ||
+ | System.out.println("商城现有商品:"); | ||
+ | System.out.println(g.findAll()); | ||
+ | int gid,num; | ||
+ | System.out.println("您想购买什么商品?(输入商品id号)"); | ||
+ | gid = Integer.valueOf(sc.next());//输入商品id号 | ||
+ | System.out.println("购买该商品的数量为:"); | ||
+ | num = Integer.valueOf(sc.next());//输入商品购买数量 | ||
+ | System.out.println("添加商品操作:"+ s.addToCart(uid, gid, num)); | ||
+ | |||
+ | /* 查询购物车所有商品 */ | ||
+ | //获取购物车商品总数 | ||
+ | System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); | ||
+ | //查询购物车所有商品 | ||
+ | System.out.println("该用户购物车如下所示:"); | ||
+ | System.out.println(s.queryGoods(uid)); | ||
+ | |||
+ | |||
+ | /*修改购物车内商品数量 */ | ||
+ | System.out.println("您想修改什么商品?(输入订单id号)"); | ||
+ | int cid = Integer.valueOf(sc.next());//输入商品id号 | ||
+ | System.out.println("修改后,该商品的数量为:"); | ||
+ | num = Integer.valueOf(sc.next()); | ||
+ | System.out.println("商品修改操作:"+s.modifyCart(cid, num)); | ||
+ | //获取购物车商品总数 | ||
+ | System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); | ||
+ | //查询购物车所有商品 | ||
+ | System.out.println("该用户购物车如下所示:"); | ||
+ | System.out.println(s.queryGoods(uid)); | ||
+ | |||
+ | /*删除购物车内商品 */ | ||
+ | //删除商品 | ||
+ | System.out.println("您想取消什么订单的购买?(输入订单id号)"); | ||
+ | cid = Integer.valueOf(sc.next());//输入订单id号 | ||
+ | System.out.println("商品删除操作:"+s.delFromCart(cid)); | ||
+ | //获取购物车商品总数 | ||
+ | System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); | ||
+ | //查询购物车所有商品 | ||
+ | System.out.println("该用户购物车如下所示:"); | ||
+ | System.out.println(s.queryGoods(uid)); | ||
+ | |||
+ | |||
+ | sc.close(); | ||
+ | MyCon.disConn();//关闭数据库连接 | ||
+ | } | ||
+ | }</nowiki> | ||
+ | |||
+ | |||
===完整代码=== | ===完整代码=== | ||
+ | <nowiki> | ||
+ | package service; | ||
+ | import java.util.ArrayList; | ||
+ | import java.util.Scanner; | ||
+ | |||
+ | import dao.*; | ||
+ | import entity.*; | ||
+ | //import exception.GoodsException; | ||
+ | /** | ||
+ | * 这个类处理与购物车有关的业务逻辑 | ||
+ | */ | ||
+ | public class CartsService { | ||
+ | |||
+ | |||
+ | private CartDao cart ;//购物车 | ||
+ | private GoodsDao dbset;//商品库 | ||
+ | |||
+ | public CartsService() { | ||
+ | cart = new CartDaoSQL(); | ||
+ | dbset = new GoodsDaoSQL(); | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * 添加购物车,向购物车中添加商品 | ||
+ | * @param g 向仓库中添加的商品 | ||
+ | * @return 值为空 | ||
+ | */ | ||
+ | public String addToCart(Integer uid,Integer gid,Integer n){ | ||
+ | |||
+ | String message =""; | ||
+ | if(n<=0){ | ||
+ | message = "商品数量必须大于0!"; | ||
+ | } | ||
+ | Integer[] info = dbset.hasGoods(gid);//查询有无该商品,返回info[0]表示布尔值,info[1]表示商品数目 | ||
+ | if(info[0] == 0) {//如果该商品不存在 | ||
+ | message = "该商品已下架,请浏览其他商品!"; | ||
+ | }else if (info[1] ==0) {//如果该商品数量为0 | ||
+ | message = "该商品暂缺货,请浏览其他商品!"; | ||
+ | }else if(info[1] < n) { | ||
+ | message = "该商品仅剩"+info[1] + "个,超过您的购买量,请调整购买量或选购其他商品"; | ||
+ | }else {//如果以上情况都排除,可以将商品添加到购物车中了 | ||
+ | boolean have=false,success=false; | ||
+ | Integer[] c= cart.hasGoods(uid, gid);//c[0] 返回订单号,c[1] 返回订单内商品数目 | ||
+ | if(c[0]==0) {//购物车中原先没有此商品,直接添加即可 | ||
+ | success= cart.addGoods(uid, gid, n); | ||
+ | }else { | ||
+ | success = cart.modifyGoods(c[0], c[1]+n); | ||
+ | } | ||
+ | if(success ==true) { | ||
+ | message ="该商品添加购物车成功!"; | ||
+ | }else { | ||
+ | message ="该商品添加购物车失败!"; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | return message; | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * 向购物车中删除商品 | ||
+ | * @param g 向仓库中删除的商品 | ||
+ | * @return 值为空 | ||
+ | */ | ||
+ | public String delFromCart(Integer cid) { | ||
+ | |||
+ | System.out.println("现在开始从购物车中删除商品 "); | ||
+ | String message=""; | ||
+ | |||
+ | |||
+ | if(cart.delGoods(cid)==true) { | ||
+ | message =("订单"+ cid+" 取消成功!"); | ||
+ | }else { | ||
+ | message =("订单"+ cid+" 取消失败!"); | ||
+ | } | ||
+ | |||
+ | return message; | ||
+ | |||
+ | } | ||
+ | /** | ||
+ | * 查询购物车中的商品 | ||
+ | * * @param 值为空 | ||
+ | * @return 值为空 | ||
+ | */ | ||
+ | |||
+ | public ArrayList<Goods> queryGoods(Integer uid ){ | ||
+ | |||
+ | ArrayList<Goods> goods = cart.queryGoods(uid); | ||
+ | |||
+ | //测试代码 | ||
+ | /* | ||
+ | System.out.println("购物车中现有商品数:"); | ||
+ | for(Goods g :goods) { | ||
+ | System.out.println(g); | ||
+ | } | ||
+ | */ | ||
+ | return goods; | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | public int getNum(Integer uid) {//获取商品数量 | ||
+ | |||
+ | return cart.getNum(uid); | ||
+ | } | ||
+ | /** | ||
+ | * 向购物车中修改商品的数量 | ||
+ | * @param g 仓库中待修改的商品 | ||
+ | * @param p 商品修改后的价格 | ||
+ | * @return 值为空 | ||
+ | */ | ||
+ | public String modifyCart(Integer cid,Integer num) { | ||
+ | System.out.println("现在开始修改商品 "+ cid+ " 的价格"); | ||
+ | String message=""; | ||
+ | |||
+ | boolean success =cart.modifyGoods(cid, num); | ||
+ | if(success ==true) { | ||
+ | message =("订单"+ cid+" 修改成功!"); | ||
+ | }else { | ||
+ | message =("订单"+ cid+" 修改失败!"); | ||
+ | } | ||
+ | |||
+ | return message; | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | } | ||
+ | public static void main(String[] args) { | ||
+ | // TODO Auto-generated method stub | ||
+ | |||
+ | MyCon.getConn();//建立数据库连接 | ||
+ | CartsService s = new CartsService(); | ||
+ | UserDao uds =new UserDaoSQL(); | ||
+ | GoodsDao g = new GoodsDaoSQL(); | ||
+ | |||
+ | /*选择一个用户id ,购物车是和用户身份相关联的 */ | ||
+ | System.out.println(uds.queryUser()); | ||
+ | System.out.println("请输入用户id号:"); | ||
+ | Scanner sc = new Scanner(System.in); | ||
+ | int uid = Integer.valueOf(sc.next());//输入用户id号 | ||
+ | |||
+ | /* 向购物车中添加商品 */ | ||
+ | System.out.println("商城现有商品:"); | ||
+ | System.out.println(g.findAll()); | ||
+ | int gid,num; | ||
+ | System.out.println("您想购买什么商品?(输入商品id号)"); | ||
+ | gid = Integer.valueOf(sc.next());//输入商品id号 | ||
+ | System.out.println("购买该商品的数量为:"); | ||
+ | num = Integer.valueOf(sc.next());//输入商品购买数量 | ||
+ | System.out.println("添加商品操作:"+ s.addToCart(uid, gid, num)); | ||
+ | |||
+ | /* 查询购物车所有商品 */ | ||
+ | //获取购物车商品总数 | ||
+ | System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); | ||
+ | //查询购物车所有商品 | ||
+ | System.out.println("该用户购物车如下所示:"); | ||
+ | System.out.println(s.queryGoods(uid)); | ||
+ | |||
+ | |||
+ | /*修改购物车内商品数量 */ | ||
+ | System.out.println("您想修改什么商品?(输入订单id号)"); | ||
+ | int cid = Integer.valueOf(sc.next());//输入商品id号 | ||
+ | System.out.println("修改后,该商品的数量为:"); | ||
+ | num = Integer.valueOf(sc.next()); | ||
+ | System.out.println("商品修改操作:"+s.modifyCart(cid, num)); | ||
+ | //获取购物车商品总数 | ||
+ | System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); | ||
+ | //查询购物车所有商品 | ||
+ | System.out.println("该用户购物车如下所示:"); | ||
+ | System.out.println(s.queryGoods(uid)); | ||
+ | |||
+ | /*删除购物车内商品 */ | ||
+ | //删除商品 | ||
+ | System.out.println("您想取消什么订单的购买?(输入订单id号)"); | ||
+ | cid = Integer.valueOf(sc.next());//输入订单id号 | ||
+ | System.out.println("商品删除操作:"+s.delFromCart(cid)); | ||
+ | //获取购物车商品总数 | ||
+ | System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); | ||
+ | //查询购物车所有商品 | ||
+ | System.out.println("该用户购物车如下所示:"); | ||
+ | System.out.println(s.queryGoods(uid)); | ||
+ | |||
+ | |||
+ | sc.close(); | ||
+ | MyCon.disConn();//关闭数据库连接 | ||
+ | } | ||
+ | }</nowiki> | ||
==显示层== | ==显示层== | ||
显示层 调用业务逻辑层的代码,完成查询 | 显示层 调用业务逻辑层的代码,完成查询 | ||
第109行: | 第1,134行: | ||
===客户端=== | ===客户端=== | ||
+ | ====建立空的Main类==== | ||
+ | main包中建立Main类: | ||
+ | |||
+ | <nowiki> | ||
+ | package main; | ||
+ | import java.util.ArrayList; | ||
+ | import java.util.Scanner; | ||
+ | |||
+ | import dao.MyCon; | ||
+ | import service.*; | ||
+ | |||
+ | public class Main { | ||
+ | public static void main(String[] args) { | ||
+ | MyCon.getConn();//建立数据库连接 | ||
+ | |||
+ | MyCon.disConn();//关闭数据库连接 | ||
+ | } | ||
+ | |||
+ | |||
+ | }</nowiki> | ||
+ | |||
+ | ====用户登录函数start()==== | ||
+ | <nowiki> | ||
+ | public static int start(Scanner sc){ | ||
+ | |||
+ | System.out.println("****************************"); | ||
+ | System.out.println("*****欢迎登录商院面馆平台客户端****"); | ||
+ | System.out.println("****************************"); | ||
+ | System.out.println("账号:"); | ||
+ | String uname = sc.nextLine(); | ||
+ | System.out.println("密码:"); | ||
+ | String pwd = sc.nextLine(); | ||
+ | //System.out.println("用户名为:"+uname+",密码为:"+pwd); | ||
+ | UserService us =new UserService(); | ||
+ | String info[]= us.login(uname,pwd); | ||
+ | System.out.println(info[1]);//打印登录信息 | ||
+ | int uid = Integer.valueOf(info[0]); | ||
+ | return uid; | ||
+ | |||
+ | }</nowiki> | ||
+ | |||
+ | |||
====菜单输出功能showMenu()==== | ====菜单输出功能showMenu()==== | ||
<nowiki> | <nowiki> | ||
第122行: | 第1,189行: | ||
+ "*******************************"); | + "*******************************"); | ||
− | + | System.out.println("请选择(1-6):"); | |
− | }</nowiki> | + | } |
+ | </nowiki> | ||
====用户选择功能getChoice()==== | ====用户选择功能getChoice()==== | ||
<nowiki> | <nowiki> | ||
− | public static void getChoice(Scanner sc) { | + | public static void getChoice(Scanner sc,Integer uid) { |
//获取用户对于菜单的选择 | //获取用户对于菜单的选择 | ||
String value = sc.next(); | String value = sc.next(); | ||
int choise = Integer.valueOf(value); | int choise = Integer.valueOf(value); | ||
+ | int gid =0;int num =0;int cid=0; | ||
GoodsService gs = new GoodsService(); | GoodsService gs = new GoodsService(); | ||
+ | CartsService cs = new CartsService(); | ||
switch(choise) { | switch(choise) { | ||
case 1: //处理查询所有商品的业务 | case 1: //处理查询所有商品的业务 | ||
System.out.println("您选择了:查询所有商品的业务"); | System.out.println("您选择了:查询所有商品的业务"); | ||
− | gs.queryGoods();//查询所有商品 | + | printArray(gs.queryGoods());//查询所有商品 |
break; | break; | ||
case 2: //处理按商品编号查询 | case 2: //处理按商品编号查询 | ||
第142行: | 第1,212行: | ||
System.out.println("请输入关键词:"); | System.out.println("请输入关键词:"); | ||
String gname = sc.next(); | String gname = sc.next(); | ||
− | gs.queryGoods(gname); | + | printArray(gs.queryGoods(gname)); |
break; | break; | ||
case 3: //购买商品,将商品加入到用户的购物车中 | case 3: //购买商品,将商品加入到用户的购物车中 | ||
System.out.println("您选择了:列出购买商品的业务"); | System.out.println("您选择了:列出购买商品的业务"); | ||
− | + | printArray(gs.queryGoods()); | |
+ | System.out.println("请问您想购买什么餐品?输入餐品id"); | ||
+ | gid = Integer.valueOf(sc.next()); | ||
+ | System.out.println("购买后,该商品的数量为:"); | ||
+ | num = Integer.valueOf(sc.next()); | ||
+ | System.out.println(cs.addToCart(uid, gid, num)); | ||
break; | break; | ||
case 4: //删除商品,从购物车中删除商品信息 | case 4: //删除商品,从购物车中删除商品信息 | ||
System.out.println("您选择了:处理删除商品的业务"); | System.out.println("您选择了:处理删除商品的业务"); | ||
− | + | System.out.println("请问您想删除什么订单?输入订单id"); | |
+ | printArray(cs.queryGoods(uid)); | ||
+ | cid = Integer.valueOf(sc.next()); | ||
+ | System.out.println(cs.delFromCart(cid)); | ||
break; | break; | ||
case 5: //显示某个用户购物车中所有的商品 | case 5: //显示某个用户购物车中所有的商品 | ||
− | System.out.println(" | + | System.out.println("您选择了:显示查询购买情况"); |
− | + | printArray(cs.queryGoods(uid)); | |
break; | break; | ||
case 6: //退出当前应用程序 | case 6: //退出当前应用程序 | ||
第166行: | 第1,244行: | ||
}</nowiki> | }</nowiki> | ||
+ | |||
+ | ====打印数组方法printArray==== | ||
+ | <nowiki> | ||
+ | public static <E>void printArray(ArrayList<E> inputArray) { | ||
+ | for ( E element : inputArray ){ | ||
+ | System.out.println(element); | ||
+ | } | ||
+ | System.out.println(); | ||
+ | }</nowiki> | ||
+ | |||
+ | |||
====在main中编写测试代码==== | ====在main中编写测试代码==== | ||
<nowiki> | <nowiki> | ||
− | public static void main(String[] args) { | + | public static void main(String[] args) { |
− | // | + | MyCon.getConn();//建立数据库连接 |
Scanner sc = new Scanner(System.in); | Scanner sc = new Scanner(System.in); | ||
− | + | int uid = start(sc); | |
− | while(true) { | + | if( uid!= 0) { |
− | + | while(true) { | |
− | + | showMenu() ; | |
+ | getChoice(sc,uid ); | ||
+ | } | ||
} | } | ||
− | + | MyCon.disConn(); | |
− | }</nowiki> | + | } |
+ | </nowiki> | ||
====完整代码==== | ====完整代码==== | ||
+ | <nowiki> | ||
+ | package main; | ||
+ | import java.util.ArrayList; | ||
+ | import java.util.Scanner; | ||
+ | import dao.MyCon; | ||
+ | import service.CartsService; | ||
+ | import service.GoodsService; | ||
+ | import service.UserService; | ||
+ | |||
+ | public class Main { | ||
+ | |||
+ | public static int start(Scanner sc){ | ||
+ | |||
+ | System.out.println("****************************"); | ||
+ | System.out.println("*****欢迎登录商院面馆平台客户端****"); | ||
+ | System.out.println("****************************"); | ||
+ | System.out.println("账号:"); | ||
+ | String uname = sc.nextLine(); | ||
+ | System.out.println("密码:"); | ||
+ | String pwd = sc.nextLine(); | ||
+ | //System.out.println("用户名为:"+uname+",密码为:"+pwd); | ||
+ | UserService us =new UserService(); | ||
+ | String info[]= us.login(uname,pwd); | ||
+ | System.out.println(info[1]);//打印登录信息 | ||
+ | int uid = Integer.valueOf(info[0]); | ||
+ | return uid; | ||
+ | |||
+ | } | ||
+ | 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):"); | ||
+ | } | ||
+ | public static void getChoice(Scanner sc,Integer uid) { | ||
+ | |||
+ | //获取用户对于菜单的选择 | ||
+ | String value = sc.next(); | ||
+ | int choise = Integer.valueOf(value); | ||
+ | int gid =0;int num =0;int cid=0; | ||
+ | GoodsService gs = new GoodsService(); | ||
+ | CartsService cs = new CartsService(); | ||
+ | switch(choise) { | ||
+ | case 1: //处理查询所有商品的业务 | ||
+ | System.out.println("您选择了:查询所有商品的业务"); | ||
+ | printArray(gs.queryGoods());//查询所有商品 | ||
+ | break; | ||
+ | case 2: //处理按商品编号查询 | ||
+ | System.out.println("您选择了: 按商品名称查询的业务"); | ||
+ | System.out.println("请输入关键词:"); | ||
+ | String gname = sc.next(); | ||
+ | printArray(gs.queryGoods(gname)); | ||
+ | break; | ||
+ | case 3: //购买商品,将商品加入到用户的购物车中 | ||
+ | System.out.println("您选择了:列出购买商品的业务"); | ||
+ | printArray(gs.queryGoods()); | ||
+ | System.out.println("请问您想购买什么餐品?输入餐品id"); | ||
+ | gid = Integer.valueOf(sc.next()); | ||
+ | System.out.println("购买后,该商品的数量为:"); | ||
+ | num = Integer.valueOf(sc.next()); | ||
+ | System.out.println(cs.addToCart(uid, gid, num)); | ||
+ | break; | ||
+ | case 4: //删除商品,从购物车中删除商品信息 | ||
+ | System.out.println("您选择了:处理删除商品的业务"); | ||
+ | System.out.println("请问您想删除什么订单?输入订单id"); | ||
+ | printArray(cs.queryGoods(uid)); | ||
+ | cid = Integer.valueOf(sc.next()); | ||
+ | System.out.println(cs.delFromCart(cid)); | ||
+ | break; | ||
+ | case 5: //显示某个用户购物车中所有的商品 | ||
+ | System.out.println("您选择了:显示查询购买情况"); | ||
+ | printArray(cs.queryGoods(uid)); | ||
+ | break; | ||
+ | case 6: //退出当前应用程序 | ||
+ | System.out.println("您选择了:退出当前应用程序"); | ||
+ | sc.close(); | ||
+ | System.exit(0); | ||
+ | break; | ||
+ | default: | ||
+ | System.out.println("您的选择不正确"); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | public static <E>void printArray(ArrayList<E> inputArray) { | ||
+ | for ( E element : inputArray ){ | ||
+ | System.out.println(element); | ||
+ | } | ||
+ | System.out.println(); | ||
+ | } | ||
+ | public static void main(String[] args) { | ||
+ | MyCon.getConn();//建立数据库连接 | ||
+ | Scanner sc = new Scanner(System.in); | ||
+ | int uid = start(sc); | ||
+ | if( uid!= 0) { | ||
+ | while(true) { | ||
+ | showMenu() ; | ||
+ | getChoice(sc,uid ); | ||
+ | } | ||
+ | } | ||
+ | MyCon.disConn(); | ||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | </nowiki> | ||
===管理端=== | ===管理端=== | ||
+ | 管理端没有购物车功能,只有客户端有。 |
2020年6月9日 (二) 10:57的最新版本
任务描述
1.创建购物车操作的业务逻辑层
2. 对用户操作的数据访问层做必要改动
3. 编写表示层的代码
实训原理
表示层
表示层又称表现层UI,位于三层构架的最上层,与用户直接接触,主要是B/S信息系统中的Web浏览页面。作为Web浏览页面,表示层的主要功能是实现系统数据的传入与输出,在此过程中不需要借助逻辑判断操作就可以将数据传送到BLL系统中进行数据处理,处理后会将处理结果反馈到表示层中。换句话说,表示层就是实现用户界面功能,将用户的需求传达和反馈,并用BLL或者是Models进行调试,保证用户体验。
业务逻辑层
业务逻辑层BLL的功能是对具体问题进行逻辑判断与执行操作,接收到表现层UI的用户指令后,会连接数据访问层DAL,访问层在三层构架中位于表示层与数据层中间位置,同时也是表示层与数据层的桥梁,实现三层之间的数据连接和指令传达,可以对接收数据进行逻辑处理,实现数据的修改、获取、删除等功能,并将处理结果反馈到表示层UI中,实现软件功能。
数据访问层
数据访问层DAL是数据库的主要操控系统,实现数据的增加、删除、修改、查询等操作,并将操作结果反馈到业务逻辑层BLL。在实际运行的过程中,数据访问层没有逻辑判断能力,为了实现代码编写的严谨性,提高代码阅读程度,一般软件开发人员会在该层中编写DataAccessCommon,保证数据访问层DAL数据处理功能。
任务准备
加载指定数据库的驱动程序
(此步如果所在项目已做,可忽略)
Java 连接 MySQL 需要驱动包,最新版下载地址为:http://dev.mysql.com/downloads/connector/j/,解压后得到jar库文件,然后在对应的项目中导入该库文件。
你可以从群邮件里下载MySQL驱动 jar 包:mysql-connector-java-5.1.39-bin.jar ,对应于mysql5.7版本。
导入数据库驱动程序
(此步如果所在项目已做,可忽略)
具体参见 Eclipse导入数据库驱动程序
创建测试数据
接下来我们在 MySQL 中创建 cloud 数据库,并创建 goods 数据表,表结构如下:
<nowiki>mysql> create database cloud; Query OK, 1 row affected (0.00 sec) mysql> use cloud; Database changed 数据表 carts: CREATE TABLE IF NOT EXISTS `carts` ( `id` INT unsigned AUTO_INCREMENT, `uid` INT(10) NOT NULL, `gid` INT(10) NOT NULL, `num` INT(11) NOT NULL, PRIMARY KEY (`id`) )ENGINE=InnoDB DEFAULT CHARSET=utf8; 插入几条购物车数据(插的时候,uid,gid 分别对应着 user表和 goods表里的 id号,必须得是真实存在的。 MariaDB [cloud]> INSERT INTO `carts`(`uid`,`gid`,`num`) VALUES('1',`3`,3); ERROR 1054 (42S22): Unknown column '3' in 'field list' MariaDB [cloud]> INSERT INTO `carts`(`uid`,`gid`,`num`) VALUES('1','3','3'); Query OK, 1 row affected (0.00 sec) MariaDB [cloud]> INSERT INTO `carts`(`uid`,`gid`,`num`) VALUES('1','4','2'); Query OK, 1 row affected (0.00 sec) MariaDB [cloud]> SELECT * FROM `carts` inner join `goods` on `carts`.`gid` = `goods`.`id`; +----+-----+-----+-----+----+-----------------+-------+-----+ | id | uid | gid | num | id | name | price | num | +----+-----+-----+-----+----+-----------------+-------+-----+ | 1 | 1 | 3 | 3 | 3 | 兰州牛肉面 | 12 | 20 | | 2 | 1 | 4 | 2 | 4 | 黄焖鸡米饭 | 12 | 30 | +----+-----+-----+-----+----+-----------------+-------+-----+ MariaDB [cloud]> SELECT `carts`.`id`,`goods`.`name`,`goods`.`price`,`carts`.num FROM `carts` inner join `goods` on `carts`.`gid` = `goods`.`id`; +----+-----------------+-------+-----+ | id | name | price | num | +----+-----------------+-------+-----+ | 1 | 兰州牛肉面 | 12 | 3 | | 2 | 黄焖鸡米饭 | 12 | 2 | +----+-----------------+-------+-----+ 2 rows in set (0.00 sec)
</nowiki>
建立数据连接类MyCon
(此步如果所在项目已做,可忽略)
package dao; import java.sql.*; public class MyCon { public static Connection conn = null; /** * 连接数据库 * @param 值为空 * @return Connection 建立的数据库连接 */ public static boolean getConn() { // JDBC 驱动名及数据库 URL final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; final String DB_URL = "jdbc:mysql://10.0.0.30:3306/cloud?characterEncoding=utf8"; final String USER = "root"; final String PASS = "000000"; try { Class.forName(JDBC_DRIVER); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(DB_URL, USER, PASS); System.out.println("MySQL连接成功!"); } catch (ClassNotFoundException e) { System.out.println(e.getMessage()); return false; } catch (SQLException e) { System.out.println(e.getMessage()); return false; } return true; } public static boolean disConn() { try { conn.close(); System.out.println("MySQL关闭成功!"); } catch (SQLException e) { System.out.println(e.getMessage()); return false; } return true; } public static void main(String[] args) { // TODO Auto-generated method stub getConn(); disConn(); } }
运行一下,看看能否连接数据库 ?
数据访问层
CartDao接口
package dao; import java.util.ArrayList; import entity.*; public interface CartDao { public int getNum(Integer uid);//获取商品数量 public boolean addGoods(Integer uid,Integer gid,Integer num);//添加商品 public boolean delGoods(Integer cid) ;//删除商品 public ArrayList<Goods> queryGoods(Integer uid);//查询购物车内已放商品 public Integer [] hasGoods(Integer uid,Integer gid);//查询购物车内是否已有某件商品,返回该商品的订单号和数量 public boolean modifyGoods(Integer cid,Integer num);//修改购物车内该种商品的数量 }
创建CartDaoSQL实现类
package dao; import java.sql.*; import java.util.*; import entity.*; public class CartDaoSQL implements CartDao{ Connection conn ; public CartDaoSQL(){ conn = MyCon.conn;//建立数据连接 } public static void main(String[] args) { // TODO Auto-generated method stub MyCon.getConn();//建立数据库连接 CartDao s = new CartDaoSQL(); UserDao uds =new UserDaoSQL(); GoodsDao g = new GoodsDaoSQL(); MyCon.disConn();//建立数据库连接 } }
购物车商品数getNum()
public int getNum(Integer uid) { int rowCount = 0; try { ResultSet rs = null; //建立一个空的结果集 //1.创建PreparedStatement 对象,让它与一条SQL模板绑定; String sql = "SELECT sum(`carts`.num) record FROM `carts` " + "inner join `goods` on `carts`.`gid` = `goods`.`id` where uid= ?"; PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setInt(1,uid); //2.执行查询 rs = pstmt.executeQuery();//执行查询 if(rs.next()){ rowCount=rs.getInt("record"); } pstmt.close(); }catch (SQLException e) {//捕捉、处理异常 System.out.println(e.getMessage()); } return rowCount; }
(购物车)添加商品addGoods
public boolean addGoods(Integer uid,Integer gid,Integer num){ Connection conn = this.conn; int i = 0; String sql = "insert into carts (uid,gid,num) values(?,?,?)"; PreparedStatement pstmt; boolean success=false; try {//1.创建PreparedStatement 对象,让它与一条SQL模板绑定; pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setInt(1, uid); pstmt.setInt(2, gid); //pstmt.setInt(2, user.getAge()); pstmt.setDate pstmt.setInt(3, num); i = pstmt.executeUpdate();//2.执行查询 if(i!=0){ //3.查看查询状态 //System.out.println("商品"+gid+"插入成功!"); success=true; }else { //System.out.println("商品"+gid+"插入失败!"); success=false; } pstmt.close(); } catch (SQLException e) { System.out.println(e.getMessage()); success=false; } return success; }
(购物车)删除商品
public boolean delGoods(Integer cid) {//cid为购物车某条订单的id号 Connection conn = this.conn; boolean success=false; try { String sql = "DELETE FROM carts WHERE id = ? "; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, cid); int i = pstmt.executeUpdate(); if(i!=0){ //System.out.println("订单"+cid+"删除成功!"); success=true; }else { //System.out.println("订单"+cid+"删除失败!"); success=false; } pstmt.close(); }catch (SQLException e) { System.out.println(e.getMessage()); success=false; } return success; }
(购物车)查询某一商品是否存在
public Integer [] hasGoods(Integer uid,Integer gid) {//查询某一商品 Integer[] info = new Integer[2];//新建数组,用来盛放商品的订单号和数量 info[0]=0;info[1]=0; try { ResultSet rs = null; //建立一个空的结果集 //1.创建PreparedStatement 对象,让它与一条SQL模板绑定; String sql = "select id,num from carts where uid=? and gid=? "; PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setInt(1, uid); pstmt.setInt(2, gid); //3.执行查询 rs = pstmt.executeQuery();//执行查询 if(rs.next()){ info[0] = rs.getInt("id"); info[1] =rs.getInt("num"); } pstmt.close(); }catch (SQLException e) {//捕捉、处理异常 System.out.println(e.getMessage()); } return info; }
(购物车)查询所有商品
public ArrayList<Goods> queryGoods(Integer uid){//查询所有商品 ArrayList<Goods> garray = new ArrayList<>(); try { //1.编写预编译语句 String sql = "SELECT `carts`.`id`,`goods`.`name`,`goods`.`price`,`carts`.num FROM `carts` " + "inner join `goods` on `carts`.`gid` = `goods`.`id`where uid= ?"; PreparedStatement pstmt = (PreparedStatement)conn.prepareStatement(sql); pstmt.setInt(1, uid); //2.执行查询 ResultSet rs = pstmt.executeQuery();//执行查询 int col = rs.getMetaData().getColumnCount();//获取字段数 //4. 打印数据表结果 while (rs.next()) { String id = Integer.toString(rs.getInt(1)); String gname = rs.getString(2); float price= rs.getFloat(3); int num = rs.getInt(4); Goods g = new Goods(id,gname,price,num); garray.add(g); //System.out.print(rs.getString(i) + "\t"); } } catch (SQLException e) { System.out.println(e.getMessage()); } return garray; }
(购物车)修改商品数量
public boolean modifyGoods(Integer cid,Integer num) { //修改商品 int i = 0; if(num ==0 ) {//如果修改数量为0,直接删除 return delGoods(cid); } String sql = "UPDATE carts SET num=?" + " WHERE id=?"; PreparedStatement pstmt; boolean success = false; try { pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setInt(1, num); pstmt.setInt(2,cid); i = pstmt.executeUpdate(); if(i!=0){ //System.out.println("订单"+cid+"修改成功!"); success=true; }else { //System.out.println("订单"+cid+"修改失败!"); success = false; } pstmt.close(); } catch (SQLException e) { System.out.println(e.getMessage()); success = false; } return success; }
测试代码
public static void main(String[] args) { // TODO Auto-generated method stub MyCon.getConn();//建立数据库连接 CartDao s = new CartDaoSQL(); UserDao uds =new UserDaoSQL(); GoodsDao g = new GoodsDaoSQL(); /*选择一个用户id ,购物车是和用户身份相关联的 */ System.out.println(uds.queryUser()); System.out.println("请输入用户id号:"); Scanner sc = new Scanner(System.in); int uid = Integer.valueOf(sc.next());//输入用户id号 /* 向购物车中添加商品 */ System.out.println("商城现有商品:"); System.out.println(g.findAll()); int gid,num; System.out.println("您想购买什么商品?(输入商品id号)"); gid = Integer.valueOf(sc.next());//输入商品id号 System.out.println("购买该商品的数量为:"); num = Integer.valueOf(sc.next());//输入商品购买数量 System.out.println("添加商品操作:"+ s.addGoods(uid, gid, num)); /* 查询购物车所有商品 */ //获取购物车商品总数 System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); //查询购物车所有商品 System.out.println("该用户购物车如下所示:"); System.out.println(s.queryGoods(uid)); /*查看购物车内某商品是否存在 */ System.out.println("商城现有商品:"); System.out.println(g.findAll()); System.out.println("您想查看什么商品在购物车内的情况?(输入商品id号)"); gid = Integer.valueOf(sc.next());//输入商品id号 Integer [] info = s.hasGoods(uid, gid); System.out.println("该商品在购物车内的订单号为:"+info[0]+",数量为:"+info[1]); /*修改购物车内商品数量 */ System.out.println("您想修改什么商品?(输入订单id号)"); int cid = Integer.valueOf(sc.next());//输入商品id号 System.out.println("修改后,该商品的数量为:"); num = Integer.valueOf(sc.next()); System.out.println("商品修改操作:"+s.modifyGoods(cid, num)); //获取购物车商品总数 System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); //查询购物车所有商品 System.out.println("该用户购物车如下所示:"); System.out.println(s.queryGoods(uid)); /*删除购物车内商品 */ //删除商品 System.out.println("您想取消什么订单的购买?(输入订单id号)"); cid = Integer.valueOf(sc.next());//输入订单id号 System.out.println("商品删除操作:"+s.delGoods(cid)); //获取购物车商品总数 System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); //查询购物车所有商品 System.out.println("该用户购物车如下所示:"); System.out.println(s.queryGoods(uid)); sc.close(); MyCon.disConn();//建立数据库连接 }
全部代码
package dao; import java.sql.*; import java.util.*; import entity.*; public class CartDaoSQL implements CartDao{ Connection conn ; public CartDaoSQL(){ conn = MyCon.conn;//建立数据连接 } public int getNum(Integer uid) { int rowCount = 0; try { ResultSet rs = null; //建立一个空的结果集 //1.创建PreparedStatement 对象,让它与一条SQL模板绑定; String sql = "SELECT sum(`carts`.num) record FROM `carts` " + "inner join `goods` on `carts`.`gid` = `goods`.`id` where uid= ?"; PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setInt(1,uid); //2.执行查询 rs = pstmt.executeQuery();//执行查询 if(rs.next()){ rowCount=rs.getInt("record"); } pstmt.close(); }catch (SQLException e) {//捕捉、处理异常 System.out.println(e.getMessage()); } return rowCount; } public boolean addGoods(Integer uid,Integer gid,Integer num){ Connection conn = this.conn; int i = 0; String sql = "insert into carts (uid,gid,num) values(?,?,?)"; PreparedStatement pstmt; boolean success=false; try {//1.创建PreparedStatement 对象,让它与一条SQL模板绑定; pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setInt(1, uid); pstmt.setInt(2, gid); //pstmt.setInt(2, user.getAge()); pstmt.setDate pstmt.setInt(3, num); i = pstmt.executeUpdate();//2.执行查询 if(i!=0){ //3.查看查询状态 //System.out.println("商品"+gid+"插入成功!"); success=true; }else { //System.out.println("商品"+gid+"插入失败!"); success=false; } pstmt.close(); } catch (SQLException e) { System.out.println(e.getMessage()); success=false; } return success; } public boolean delGoods(Integer cid) {//cid为购物车某条订单的id号 Connection conn = this.conn; boolean success=false; try { String sql = "DELETE FROM carts WHERE id = ? "; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, cid); int i = pstmt.executeUpdate(); if(i!=0){ //System.out.println("订单"+cid+"删除成功!"); success=true; }else { //System.out.println("订单"+cid+"删除失败!"); success=false; } pstmt.close(); }catch (SQLException e) { System.out.println(e.getMessage()); success=false; } return success; } public Integer [] hasGoods(Integer uid,Integer gid) {//查询某一商品 Integer[] info = new Integer[2];//新建数组,用来盛放商品的订单号和数量 info[0]=0;info[1]=0; try { ResultSet rs = null; //建立一个空的结果集 //1.创建PreparedStatement 对象,让它与一条SQL模板绑定; String sql = "select id,num from carts where uid=? and gid=? "; PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setInt(1, uid); pstmt.setInt(2, gid); //3.执行查询 rs = pstmt.executeQuery();//执行查询 if(rs.next()){ info[0] = rs.getInt("id"); info[1] =rs.getInt("num"); } pstmt.close(); }catch (SQLException e) {//捕捉、处理异常 System.out.println(e.getMessage()); } return info; } public ArrayList<Goods> queryGoods(Integer uid){//查询所有商品 ArrayList<Goods> garray = new ArrayList<>(); try { //1.编写预编译语句 String sql = "SELECT `carts`.`id`,`goods`.`name`,`goods`.`price`,`carts`.num FROM `carts` " + "inner join `goods` on `carts`.`gid` = `goods`.`id`where uid= ?"; PreparedStatement pstmt = (PreparedStatement)conn.prepareStatement(sql); pstmt.setInt(1, uid); //2.执行查询 ResultSet rs = pstmt.executeQuery();//执行查询 int col = rs.getMetaData().getColumnCount();//获取字段数 //4. 打印数据表结果 while (rs.next()) { String id = Integer.toString(rs.getInt(1)); String gname = rs.getString(2); float price= rs.getFloat(3); int num = rs.getInt(4); Goods g = new Goods(id,gname,price,num); garray.add(g); //System.out.print(rs.getString(i) + "\t"); } } catch (SQLException e) { System.out.println(e.getMessage()); } return garray; } public boolean modifyGoods(Integer cid,Integer num) { //修改商品 int i = 0; if(num ==0 ) {//如果修改数量为0,直接删除 return delGoods(cid); } String sql = "UPDATE carts SET num=?" + " WHERE id=?"; PreparedStatement pstmt; boolean success = false; try { pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setInt(1, num); pstmt.setInt(2,cid); i = pstmt.executeUpdate(); if(i!=0){ //System.out.println("订单"+cid+"修改成功!"); success=true; }else { //System.out.println("订单"+cid+"修改失败!"); success = false; } pstmt.close(); } catch (SQLException e) { System.out.println(e.getMessage()); success = false; } return success; } public static void main(String[] args) { // TODO Auto-generated method stub MyCon.getConn();//建立数据库连接 CartDao s = new CartDaoSQL(); UserDao uds =new UserDaoSQL(); GoodsDao g = new GoodsDaoSQL(); /*选择一个用户id ,购物车是和用户身份相关联的 */ System.out.println(uds.queryUser()); System.out.println("请输入用户id号:"); Scanner sc = new Scanner(System.in); int uid = Integer.valueOf(sc.next());//输入用户id号 /* 向购物车中添加商品 */ System.out.println("商城现有商品:"); System.out.println(g.findAll()); int gid,num; System.out.println("您想购买什么商品?(输入商品id号)"); gid = Integer.valueOf(sc.next());//输入商品id号 System.out.println("购买该商品的数量为:"); num = Integer.valueOf(sc.next());//输入商品购买数量 System.out.println("添加商品操作:"+ s.addGoods(uid, gid, num)); /* 查询购物车所有商品 */ //获取购物车商品总数 System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); //查询购物车所有商品 System.out.println("该用户购物车如下所示:"); System.out.println(s.queryGoods(uid)); /*查看购物车内某商品是否存在 */ System.out.println("商城现有商品:"); System.out.println(g.findAll()); System.out.println("您想查看什么商品在购物车内的情况?(输入商品id号)"); gid = Integer.valueOf(sc.next());//输入商品id号 Integer [] info = s.hasGoods(uid, gid); System.out.println("该商品在购物车内的订单号为:"+info[0]+",数量为:"+info[1]); /*修改购物车内商品数量 */ System.out.println("您想修改什么商品?(输入订单id号)"); int cid = Integer.valueOf(sc.next());//输入商品id号 System.out.println("修改后,该商品的数量为:"); num = Integer.valueOf(sc.next()); System.out.println("商品修改操作:"+s.modifyGoods(cid, num)); //获取购物车商品总数 System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); //查询购物车所有商品 System.out.println("该用户购物车如下所示:"); System.out.println(s.queryGoods(uid)); /*删除购物车内商品 */ //删除商品 System.out.println("您想取消什么订单的购买?(输入订单id号)"); cid = Integer.valueOf(sc.next());//输入订单id号 System.out.println("商品删除操作:"+s.delGoods(cid)); //获取购物车商品总数 System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); //查询购物车所有商品 System.out.println("该用户购物车如下所示:"); System.out.println(s.queryGoods(uid)); sc.close(); MyCon.disConn();//建立数据库连接 } }
业务逻辑层
创建服务类CartService
package service; import java.util.ArrayList; import java.util.Scanner; import dao.*; import entity.*; //import exception.GoodsException; /** * 这个类处理与购物车有关的业务逻辑 */ public class CartsService { private CartDao cart ;//购物车 private GoodsDao dbset;//商品库 public CartsService() { cart = new CartDaoSQL(); dbset = new GoodsDaoSQL(); } public static void main(String[] args) { // TODO Auto-generated method stub MyCon.getConn();//建立数据库连接 CartsService s = new CartsService(); UserDao uds =new UserDaoSQL(); GoodsDao g = new GoodsDaoSQL(); MyCon.disConn();//关闭数据库连接 } }
向购物车中添加商品addToCart()
/** * 添加购物车,向购物车中添加商品 * @param g 向仓库中添加的商品 * @return 值为空 */ public String addToCart(Integer uid,Integer gid,Integer n){ String message =""; if(n<=0){ message = "商品数量必须大于0!"; } Integer[] info = dbset.hasGoods(gid);//查询有无该商品,返回info[0]表示布尔值,info[1]表示商品数目 if(info[0] == 0) {//如果该商品不存在 message = "该商品已下架,请浏览其他商品!"; }else if (info[1] ==0) {//如果该商品数量为0 message = "该商品暂缺货,请浏览其他商品!"; }else if(info[1] < n) { message = "该商品仅剩"+info[1] + "个,超过您的购买量,请调整购买量或选购其他商品"; }else {//如果以上情况都排除,可以将商品添加到购物车中了 boolean have=false,success=false; Integer[] c= cart.hasGoods(uid, gid);//c[0] 返回订单号,c[1] 返回订单内商品数目 if(c[0]==0) {//购物车中原先没有此商品,直接添加即可 success= cart.addGoods(uid, gid, n); }else { success = cart.modifyGoods(c[0], c[1]+n); } if(success ==true) { message ="该商品添加购物车成功!"; }else { message ="该商品添加购物车失败!"; } } return message; }
从购物车删除商品delFromCart()
/** * 向购物车中删除商品 * @param g 向仓库中删除的商品 * @return 值为空 */ public String delFromCart(Integer cid) { System.out.println("现在开始从购物车中删除商品 "); String message=""; if(cart.delGoods(cid)==true) { message =("订单"+ cid+" 取消成功!"); }else { message =("订单"+ cid+" 取消失败!"); } return message; }
查看购物车所有商品queryGoods( )
/** * 查询购物车中的商品 * * @param 值为空 * @return 值为空 */ public ArrayList<Goods> queryGoods(Integer uid ){ ArrayList<Goods> goods = cart.queryGoods(uid); //测试代码 /* System.out.println("购物车中现有商品数:"); for(Goods g :goods) { System.out.println(g); } */ return goods; }
获取购物车商品数getNum()
public int getNum(Integer uid) {//获取商品数量 return cart.getNum(uid); }
修改商品服务modifyCart
/** * 向购物车中修改商品的数量 * @param g 仓库中待修改的商品 * @param p 商品修改后的价格 * @return 值为空 */ public String modifyCart(Integer cid,Integer num) { System.out.println("现在开始修改商品 "+ cid+ " 的价格"); String message=""; boolean success =cart.modifyGoods(cid, num); if(success ==true) { message =("订单"+ cid+" 修改成功!"); }else { message =("订单"+ cid+" 修改失败!"); } return message; }
在main方法中写测试代码
public static void main(String[] args) { // TODO Auto-generated method stub MyCon.getConn();//建立数据库连接 CartsService s = new CartsService(); UserDao uds =new UserDaoSQL(); GoodsDao g = new GoodsDaoSQL(); /*选择一个用户id ,购物车是和用户身份相关联的 */ System.out.println(uds.queryUser()); System.out.println("请输入用户id号:"); Scanner sc = new Scanner(System.in); int uid = Integer.valueOf(sc.next());//输入用户id号 /* 向购物车中添加商品 */ System.out.println("商城现有商品:"); System.out.println(g.findAll()); int gid,num; System.out.println("您想购买什么商品?(输入商品id号)"); gid = Integer.valueOf(sc.next());//输入商品id号 System.out.println("购买该商品的数量为:"); num = Integer.valueOf(sc.next());//输入商品购买数量 System.out.println("添加商品操作:"+ s.addToCart(uid, gid, num)); /* 查询购物车所有商品 */ //获取购物车商品总数 System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); //查询购物车所有商品 System.out.println("该用户购物车如下所示:"); System.out.println(s.queryGoods(uid)); /*修改购物车内商品数量 */ System.out.println("您想修改什么商品?(输入订单id号)"); int cid = Integer.valueOf(sc.next());//输入商品id号 System.out.println("修改后,该商品的数量为:"); num = Integer.valueOf(sc.next()); System.out.println("商品修改操作:"+s.modifyCart(cid, num)); //获取购物车商品总数 System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); //查询购物车所有商品 System.out.println("该用户购物车如下所示:"); System.out.println(s.queryGoods(uid)); /*删除购物车内商品 */ //删除商品 System.out.println("您想取消什么订单的购买?(输入订单id号)"); cid = Integer.valueOf(sc.next());//输入订单id号 System.out.println("商品删除操作:"+s.delFromCart(cid)); //获取购物车商品总数 System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); //查询购物车所有商品 System.out.println("该用户购物车如下所示:"); System.out.println(s.queryGoods(uid)); sc.close(); MyCon.disConn();//关闭数据库连接 } }
完整代码
package service; import java.util.ArrayList; import java.util.Scanner; import dao.*; import entity.*; //import exception.GoodsException; /** * 这个类处理与购物车有关的业务逻辑 */ public class CartsService { private CartDao cart ;//购物车 private GoodsDao dbset;//商品库 public CartsService() { cart = new CartDaoSQL(); dbset = new GoodsDaoSQL(); } /** * 添加购物车,向购物车中添加商品 * @param g 向仓库中添加的商品 * @return 值为空 */ public String addToCart(Integer uid,Integer gid,Integer n){ String message =""; if(n<=0){ message = "商品数量必须大于0!"; } Integer[] info = dbset.hasGoods(gid);//查询有无该商品,返回info[0]表示布尔值,info[1]表示商品数目 if(info[0] == 0) {//如果该商品不存在 message = "该商品已下架,请浏览其他商品!"; }else if (info[1] ==0) {//如果该商品数量为0 message = "该商品暂缺货,请浏览其他商品!"; }else if(info[1] < n) { message = "该商品仅剩"+info[1] + "个,超过您的购买量,请调整购买量或选购其他商品"; }else {//如果以上情况都排除,可以将商品添加到购物车中了 boolean have=false,success=false; Integer[] c= cart.hasGoods(uid, gid);//c[0] 返回订单号,c[1] 返回订单内商品数目 if(c[0]==0) {//购物车中原先没有此商品,直接添加即可 success= cart.addGoods(uid, gid, n); }else { success = cart.modifyGoods(c[0], c[1]+n); } if(success ==true) { message ="该商品添加购物车成功!"; }else { message ="该商品添加购物车失败!"; } } return message; } /** * 向购物车中删除商品 * @param g 向仓库中删除的商品 * @return 值为空 */ public String delFromCart(Integer cid) { System.out.println("现在开始从购物车中删除商品 "); String message=""; if(cart.delGoods(cid)==true) { message =("订单"+ cid+" 取消成功!"); }else { message =("订单"+ cid+" 取消失败!"); } return message; } /** * 查询购物车中的商品 * * @param 值为空 * @return 值为空 */ public ArrayList<Goods> queryGoods(Integer uid ){ ArrayList<Goods> goods = cart.queryGoods(uid); //测试代码 /* System.out.println("购物车中现有商品数:"); for(Goods g :goods) { System.out.println(g); } */ return goods; } public int getNum(Integer uid) {//获取商品数量 return cart.getNum(uid); } /** * 向购物车中修改商品的数量 * @param g 仓库中待修改的商品 * @param p 商品修改后的价格 * @return 值为空 */ public String modifyCart(Integer cid,Integer num) { System.out.println("现在开始修改商品 "+ cid+ " 的价格"); String message=""; boolean success =cart.modifyGoods(cid, num); if(success ==true) { message =("订单"+ cid+" 修改成功!"); }else { message =("订单"+ cid+" 修改失败!"); } return message; } public static void main(String[] args) { // TODO Auto-generated method stub MyCon.getConn();//建立数据库连接 CartsService s = new CartsService(); UserDao uds =new UserDaoSQL(); GoodsDao g = new GoodsDaoSQL(); /*选择一个用户id ,购物车是和用户身份相关联的 */ System.out.println(uds.queryUser()); System.out.println("请输入用户id号:"); Scanner sc = new Scanner(System.in); int uid = Integer.valueOf(sc.next());//输入用户id号 /* 向购物车中添加商品 */ System.out.println("商城现有商品:"); System.out.println(g.findAll()); int gid,num; System.out.println("您想购买什么商品?(输入商品id号)"); gid = Integer.valueOf(sc.next());//输入商品id号 System.out.println("购买该商品的数量为:"); num = Integer.valueOf(sc.next());//输入商品购买数量 System.out.println("添加商品操作:"+ s.addToCart(uid, gid, num)); /* 查询购物车所有商品 */ //获取购物车商品总数 System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); //查询购物车所有商品 System.out.println("该用户购物车如下所示:"); System.out.println(s.queryGoods(uid)); /*修改购物车内商品数量 */ System.out.println("您想修改什么商品?(输入订单id号)"); int cid = Integer.valueOf(sc.next());//输入商品id号 System.out.println("修改后,该商品的数量为:"); num = Integer.valueOf(sc.next()); System.out.println("商品修改操作:"+s.modifyCart(cid, num)); //获取购物车商品总数 System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); //查询购物车所有商品 System.out.println("该用户购物车如下所示:"); System.out.println(s.queryGoods(uid)); /*删除购物车内商品 */ //删除商品 System.out.println("您想取消什么订单的购买?(输入订单id号)"); cid = Integer.valueOf(sc.next());//输入订单id号 System.out.println("商品删除操作:"+s.delFromCart(cid)); //获取购物车商品总数 System.out.println("该用户购物车共有:" + s.getNum(uid)+" 件商品"); //查询购物车所有商品 System.out.println("该用户购物车如下所示:"); System.out.println(s.queryGoods(uid)); sc.close(); MyCon.disConn();//关闭数据库连接 } }
显示层
显示层 调用业务逻辑层的代码,完成查询
客户端
建立空的Main类
main包中建立Main类:
package main; import java.util.ArrayList; import java.util.Scanner; import dao.MyCon; import service.*; public class Main { public static void main(String[] args) { MyCon.getConn();//建立数据库连接 MyCon.disConn();//关闭数据库连接 } }
用户登录函数start()
public static int start(Scanner sc){ System.out.println("****************************"); System.out.println("*****欢迎登录商院面馆平台客户端****"); System.out.println("****************************"); System.out.println("账号:"); String uname = sc.nextLine(); System.out.println("密码:"); String pwd = sc.nextLine(); //System.out.println("用户名为:"+uname+",密码为:"+pwd); UserService us =new UserService(); String info[]= us.login(uname,pwd); System.out.println(info[1]);//打印登录信息 int uid = Integer.valueOf(info[0]); return uid; }
菜单输出功能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,Integer uid) { //获取用户对于菜单的选择 String value = sc.next(); int choise = Integer.valueOf(value); int gid =0;int num =0;int cid=0; GoodsService gs = new GoodsService(); CartsService cs = new CartsService(); switch(choise) { case 1: //处理查询所有商品的业务 System.out.println("您选择了:查询所有商品的业务"); printArray(gs.queryGoods());//查询所有商品 break; case 2: //处理按商品编号查询 System.out.println("您选择了: 按商品名称查询的业务"); System.out.println("请输入关键词:"); String gname = sc.next(); printArray(gs.queryGoods(gname)); break; case 3: //购买商品,将商品加入到用户的购物车中 System.out.println("您选择了:列出购买商品的业务"); printArray(gs.queryGoods()); System.out.println("请问您想购买什么餐品?输入餐品id"); gid = Integer.valueOf(sc.next()); System.out.println("购买后,该商品的数量为:"); num = Integer.valueOf(sc.next()); System.out.println(cs.addToCart(uid, gid, num)); break; case 4: //删除商品,从购物车中删除商品信息 System.out.println("您选择了:处理删除商品的业务"); System.out.println("请问您想删除什么订单?输入订单id"); printArray(cs.queryGoods(uid)); cid = Integer.valueOf(sc.next()); System.out.println(cs.delFromCart(cid)); break; case 5: //显示某个用户购物车中所有的商品 System.out.println("您选择了:显示查询购买情况"); printArray(cs.queryGoods(uid)); break; case 6: //退出当前应用程序 System.out.println("您选择了:退出当前应用程序"); sc.close(); System.exit(0); break; default: System.out.println("您的选择不正确"); } }
打印数组方法printArray
public static <E>void printArray(ArrayList<E> inputArray) { for ( E element : inputArray ){ System.out.println(element); } System.out.println(); }
在main中编写测试代码
public static void main(String[] args) { MyCon.getConn();//建立数据库连接 Scanner sc = new Scanner(System.in); int uid = start(sc); if( uid!= 0) { while(true) { showMenu() ; getChoice(sc,uid ); } } MyCon.disConn(); }
完整代码
package main; import java.util.ArrayList; import java.util.Scanner; import dao.MyCon; import service.CartsService; import service.GoodsService; import service.UserService; public class Main { public static int start(Scanner sc){ System.out.println("****************************"); System.out.println("*****欢迎登录商院面馆平台客户端****"); System.out.println("****************************"); System.out.println("账号:"); String uname = sc.nextLine(); System.out.println("密码:"); String pwd = sc.nextLine(); //System.out.println("用户名为:"+uname+",密码为:"+pwd); UserService us =new UserService(); String info[]= us.login(uname,pwd); System.out.println(info[1]);//打印登录信息 int uid = Integer.valueOf(info[0]); return uid; } 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):"); } public static void getChoice(Scanner sc,Integer uid) { //获取用户对于菜单的选择 String value = sc.next(); int choise = Integer.valueOf(value); int gid =0;int num =0;int cid=0; GoodsService gs = new GoodsService(); CartsService cs = new CartsService(); switch(choise) { case 1: //处理查询所有商品的业务 System.out.println("您选择了:查询所有商品的业务"); printArray(gs.queryGoods());//查询所有商品 break; case 2: //处理按商品编号查询 System.out.println("您选择了: 按商品名称查询的业务"); System.out.println("请输入关键词:"); String gname = sc.next(); printArray(gs.queryGoods(gname)); break; case 3: //购买商品,将商品加入到用户的购物车中 System.out.println("您选择了:列出购买商品的业务"); printArray(gs.queryGoods()); System.out.println("请问您想购买什么餐品?输入餐品id"); gid = Integer.valueOf(sc.next()); System.out.println("购买后,该商品的数量为:"); num = Integer.valueOf(sc.next()); System.out.println(cs.addToCart(uid, gid, num)); break; case 4: //删除商品,从购物车中删除商品信息 System.out.println("您选择了:处理删除商品的业务"); System.out.println("请问您想删除什么订单?输入订单id"); printArray(cs.queryGoods(uid)); cid = Integer.valueOf(sc.next()); System.out.println(cs.delFromCart(cid)); break; case 5: //显示某个用户购物车中所有的商品 System.out.println("您选择了:显示查询购买情况"); printArray(cs.queryGoods(uid)); break; case 6: //退出当前应用程序 System.out.println("您选择了:退出当前应用程序"); sc.close(); System.exit(0); break; default: System.out.println("您的选择不正确"); } } public static <E>void printArray(ArrayList<E> inputArray) { for ( E element : inputArray ){ System.out.println(element); } System.out.println(); } public static void main(String[] args) { MyCon.getConn();//建立数据库连接 Scanner sc = new Scanner(System.in); int uid = start(sc); if( uid!= 0) { while(true) { showMenu() ; getChoice(sc,uid ); } } MyCon.disConn(); } }
管理端
管理端没有购物车功能,只有客户端有。