Java架构设计之商品口
任务描述
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 数据表,表结构如下:
mysql> create database cloud; Query OK, 1 row affected (0.00 sec) mysql> use cloud; Database changed 数据表 goods: CREATE TABLE IF NOT EXISTS `goods` ( `id` INT unsigned AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL, `price` FLOAT NOT NULL, `num` INT(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `gname` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; desc goods; +-------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(100) | NO | UNI | NULL | | | price | float | NO | | NULL | | | num | int(11) | NO | | NULL | | +-------+------------------+------+-----+---------+----------------+ 4 rows in set (0.02 sec)
建立数据连接类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(); } }
运行一下,看看能否连接数据库 ?
数据访问层
GoodsDao接口
package dao; import java.util.ArrayList; import entity.Goods; public interface GoodsDao { public int getNum(); public boolean add(Goods g);//增加商品 public boolean delete(int id);//删除商品 public ArrayList<Goods> findAll();//查询所有商品 public ArrayList<Goods> find(String name);//模糊查询,查询某关键词的商品是否存在 public boolean modify(int id,float p);//修改商品 public Integer [] hasGoods(String name);//精确查询,查询某种商品是否存在,返回id号和数量 public Integer[] hasGoods(int id);//查询某种商品是否存在,返回布尔值和数量 }
创建GoodsDaoSQL实现类
package dao; import java.sql.*; import java.util.*; import entity.*; public class GoodsDaoSQL implements GoodsDao{ Connection conn; public GoodsDaoSQL(){ conn = MyCon.conn;//建立数据连接 } public static void main(String[] args) { // TODO Auto-generated method stub // TODO Auto-generated method stub MyCon.getConn();//建立数据库连接 GoodsDao s = new GoodsDaoSQL(); } }
返回商品总数getNum()
/* * 功能:返回商品库的总数目 */ public int getNum() { int rowCount = 0; try { ResultSet rs = null; //建立一个空的结果集 //1.创建PreparedStatement 对象,让它与一条SQL模板绑定; String sql = "select count(*) record from goods"; PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql); //2.执行查询 rs = pstmt.executeQuery();//执行查询 if(rs.next()){ rowCount=rs.getInt("record"); } pstmt.close(); }catch (SQLException e) {//捕捉、处理异常 System.out.println(e.getMessage()); } return rowCount; }
增加操作add( )
public boolean add(Goods g) {//增加商品 try { Connection conn = this.conn; int i = 0; String sql = "insert into goods (name,price,num) values(?,?,?)"; PreparedStatement pstmt; pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setString(1, g.getName()); pstmt.setFloat(2, g.getPrice()); //pstmt.setInt(2, user.getAge()); pstmt.setDate pstmt.setInt(3, g.getNum()); i = pstmt.executeUpdate(); pstmt.close(); if(i!=0){ return true; //System.out.println(g.getName()+"插入成功!"); } } catch (SQLException e) { System.out.println(e.getMessage()); } return false; }
按id号查询有无特定商品hasGoods(int id)
public Integer[] hasGoods(int id){//按id查询某一商品 Integer [] info = new Integer[2]; info[0] =0;info[1]=0;//info[0]表示是否存在,info[1] 表示该商品的数目 try { ResultSet rs = null; //建立一个空的结果集 //1.创建PreparedStatement 对象,让它与一条SQL模板绑定; String sql = "select num from goods where id = ?"; PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setInt(1, id); //2.执行查询 rs = pstmt.executeQuery();//执行查询 if(rs.next()) { info[0] = 1; info[1] = rs.getInt("num"); } pstmt.close(); }catch (SQLException e) {//捕捉、处理异常 System.out.println(e.getMessage()); } return info; }
按商品全名查找有无特定商品hasGoods(String name)
public Integer[] hasGoods(String name) {//查询某一商品 Integer [] info = new Integer[2]; info[0]=0;info[1]=0; try { ResultSet rs = null; //建立一个空的结果集 //1.创建PreparedStatement 对象,让它与一条SQL模板绑定; String sql = "select id,num from goods where name = ?"; PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql); //使用2. setXXX()系列方法为sql命令设置值 pstmt.setString(1, name);// //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; }
删除操作delete()
public boolean delete(int id) {//删除商品 Connection conn = this.conn; int i = 0; String sql = "DELETE FROM goods WHERE id = ?"; try { PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, id); i = pstmt.executeUpdate(); pstmt.close(); if(i!=0){ return true; //System.out.println("商品"+id+"删除成功!"); }else { return false; //System.out.println("商品"+id+"删除失败!"); } }catch (SQLException e) { System.out.println(e.getMessage()); } return false; }
查询所有操作findAll()
public ArrayList<Goods> findAll() {//查询所有商品 ArrayList<Goods> garray = new ArrayList<>(); try { String sql = "select * from goods"; PreparedStatement pstmt = (PreparedStatement)conn.prepareStatement(sql); //3.执行查询 ResultSet rs = pstmt.executeQuery();//执行查询 int col = rs.getMetaData().getColumnCount();//获取字段数 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; }
搜索操作find()
public ArrayList<Goods> find(String name) {//查询某种商品是否存在 ArrayList<Goods> garray = new ArrayList<>(); try { ResultSet rs = null; //建立一个空的结果集 //1.创建PreparedStatement 对象,让它与一条SQL模板绑定; String sql = "select * from goods where name LIKE ?"; PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql); //使用2. setXXX()系列方法为sql命令设置值 pstmt.setString(1, "%"+name+"%");// //3.执行查询 rs = pstmt.executeQuery();//执行查询 int col = rs.getMetaData().getColumnCount();//获取字段数 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"); } pstmt.close(); }catch (SQLException e) {//捕捉、处理异常 System.out.println(e.getMessage()); } return garray; }
修改价格操作modify()
public boolean modify(int id,float p) { //修改商品 try { String sql = "UPDATE goods SET price=?" + " WHERE id=?"; PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setFloat(1, p); pstmt.setInt(2,id); int i = pstmt.executeUpdate(); pstmt.close(); if(i!=0){ //如果影响行数非零,说明修改成功 return true; } } catch (SQLException e) { System.out.println(e.getMessage()); } return false; }
在main方法编写测试代码
public static void main(String[] args) { // TODO Auto-generated method stub // TODO Auto-generated method stub MyCon.getConn();//建立数据库连接 GoodsDao s = new GoodsDaoSQL(); Scanner sc = new Scanner(System.in); /*向商品库中添加商品 */ Goods g1= new Goods("1","山西刀削面",105.0f,30); Goods g2= new Noodles("2","兰州牛肉面",15.0f,20); Goods g3= new Rice("3","黄焖鸡米饭",12.0f,30,false); //添加元素 System.out.println("执行添加餐品操作..."); System.out.println("添加餐品结果:"+s.add(g1)); System.out.println("添加餐品结果:"+s.add(g2)); System.out.println("添加餐品结果:"+s.add(g3)); System.out.println("共找到商品?种:"+s.getNum()); System.out.println("以下为商品详情信息:"); System.out.println(s.findAll()); /*修改商品库中商品的价格 */ System.out.println("请问您想修改什么餐品?输入餐品全名"); String name = sc.next(); System.out.println("餐品修改后的价格为?"); float price= Float.valueOf(sc.next()); Integer[] info =s.hasGoods(name); System.out.println("该商品的id为:"+ info[0]+",数量为:"+info[1]); System.out.println("修改餐品结果:"+s.modify(info[0], price)); System.out.println(s.findAll()); /* 删除商品库中商品 */ System.out.println("执行删除餐品操作..."); System.out.println("请问您想删除什么餐品?输入餐品id"); int id = Integer.valueOf(sc.next()); Integer[] info2 = s.hasGoods(id); if( info2[0] == 1 ){ //如果被删除产品在库中存在 System.out.println("id号为"+id+"餐品现在在库中存在,商品数量为:"+info[1]); System.out.println("删除餐品结果:"+s.delete(id)); }else {System.out.println("id号为"+id+"餐品现在在库中不存在");} /* 查询所有商品 */ System.out.println(s.findAll()); /* 根据商品名称查找商品 */ System.out.println("请问您想查询什么餐品?输入餐品关键词:"); name = sc.next(); System.out.println("共找到以下商品:"); System.out.println(s.find(name)); sc.close(); MyCon.disConn();//建立数据库连接 }
业务逻辑层
创建服务类GoodsService
public static void main(String[] args) { // TODO Auto-generated method stub MyCon.getConn();//建立数据库连接 Scanner sc = new Scanner(System.in); GoodsService s = new GoodsService(); sc.close(); MyCon.disConn();//关闭数据库连接
添加商品服务addGoods()
/** * 商品上架,向数据仓库中添加商品 * @param g 向仓库中添加的商品 * @return 值为空 */ public String addGoods(Goods g){ String message = ""; String name = g.getName(); Integer [] info = dbset.hasGoods(name);//查询有无该商品,返回商品id号和数量 if(info[0] == 0){ //如果没有该商品,才能执行上架操作 if(dbset.add(g)==true) { message = " 商品 "+g.getName() +" 成功上架"; }else { message = " 商品 "+g.getName() +" 上架失败"; } }else { message = " 商品 "+g.getName() +"已存在"; } return message; }
删除商品服务delGoods()
/** * 向数据仓库中删除商品 * @param g 向仓库中删除的商品 * @return 值为空 */ public String delGoods(int id) { //try{ String message = ""; System.out.println("现在开始向库中删除商品 "); Integer[] info = dbset.hasGoods(id);//查询有无该商品,返回布尔值和数量 if(info[0] ==1){//确定有该商品再执行删除操作 if(dbset.delete(id)==true) { message =("商品"+ id+" 下架成功!"); }else { message =("商品"+ id+" 下架失败!"); } }else{//如果该商品不在库中 //throw new GoodsException("要删除的商品"+id+" 不存在哦!"); message =("要删除的商品"+id +" 不存在"); } System.out.println(); //}catch(GoodsException e){ //System.out.println(e.toString()); //} return message; }
查看所有商品服务queryGoods( )
/** * 查询仓库中的商品 * * @param 值为空 * @return 值为空 */ public ArrayList<Goods> queryGoods( ){ ArrayList<Goods> goods = dbset.findAll(); /* System.out.println("本店现有商品数:"); for(Goods g :goods) { System.out.println(g); } System.out.println();; */ return goods; }
搜索商品服务queryGoods(String name)
/** * 查询仓库中的商品 * * @param 值为空 * @return 值为空 */ public ArrayList<Goods> queryGoods(String name) { ArrayList<Goods> goods = dbset.find(name); /* System.out.println("查询到名称为"+name+"商品有:"); for(Goods g :goods) { System.out.println(g); } System.out.println();; */ return goods; }
修改商品服务modifyGoods()
/** * 向数据仓库中修改商品的数量 * @param g 仓库中待修改的商品 * @param p 商品修改后的价格 * @return 值为空 */ public String modifyGoods(int id,float p) { String message = ""; //try{ Integer[] info = dbset.hasGoods(id);//查询有无该商品,返回布尔值和数量 if(info[0] ==0){//确定有该商品再执行修改操作 //throw new GoodsException("要修改的商品"+g.getName()+" 不存在哦!"); message =("要修改的商品"+id+" 不存在"); }else {//查到这个商品了,可以做进一步操作 dbset.modify(id, p); message =(id+" 的价格更改为 " + p+ " 元"); } //}catch( GoodsException e){ //System.out.println(e.toString()); //} return message; }
在main方法中写测试代码
public static void main(String[] args) { // TODO Auto-generated method stub MyCon.getConn();//建立数据库连接 Scanner sc = new Scanner(System.in); GoodsService s = new GoodsService(); /* 商品上架 */ Goods g1= new Goods("1","山西刀削面",105.0f,30); Goods g2= new Noodles("2","兰州牛肉面",15.0f,20); Goods g3= new Rice("3","黄焖鸡米饭",12.0f,30,false); System.out.println("执行添加餐品操作..."); System.out.println(s.addGoods(g1)); System.out.println(s.addGoods(g2)); System.out.println(s.addGoods(g3)); //System.out.println("共找到商品?件:"+s.getNum()); System.out.println("以下为商品详情信息:"); System.out.println(s.queryGoods()); /*修改商品价格 */ System.out.println("执行修改价格操作..."); System.out.println("请问您想修改什么餐品?输入餐品id"); int id = Integer.valueOf(sc.next()); System.out.println("餐品修改后的价格为?"); float price= Float.valueOf(sc.next()); System.out.println("该商品的id为:"+ id+",修改后的价格为:"+price); System.out.println(s.modifyGoods(id,price)); /*根据商品名称查找商品*/ System.out.println("执行关键词查询商品操作..."); System.out.println("请问您想查询什么餐品?输入餐品关键词:"); String name = sc.next(); System.out.println("查询到名称为"+name+"商品有:"); System.out.println(s.queryGoods(name)); /* 查询所有商品 */ System.out.println("执行查询所有商品操作..."); System.out.println(s.queryGoods()); /*商品下架 */ System.out.println("执行删除餐品操作..."); System.out.println("请问您想删除什么餐品?输入餐品id"); id = Integer.valueOf(sc.next()); System.out.println(s.delGoods(id)); sc.close(); MyCon.disConn();//关闭数据库连接 }
完整代码
package service; import java.util.ArrayList; import java.util.Scanner; import dao.*; import entity.*; //import exception.GoodsException; /** * 这个类处理与商品有关的业务逻辑 */ public class GoodsService { private GoodsDao dbset ; public GoodsService() { dbset = new GoodsDaoSQL(); } /** * 商品上架,向数据仓库中添加商品 * @param g 向仓库中添加的商品 * @return 值为空 */ public String addGoods(Goods g){ String message = ""; String name = g.getName(); Integer [] info = dbset.hasGoods(name);//查询有无该商品,返回商品id号和数量 if(info[0] == 0){ //如果没有该商品,才能执行上架操作 if(dbset.add(g)==true) { message = " 商品 "+g.getName() +" 成功上架"; }else { message = " 商品 "+g.getName() +" 上架失败"; } }else { message = " 商品 "+g.getName() +"已存在"; } return message; } /** * 向数据仓库中删除商品 * @param g 向仓库中删除的商品 * @return 值为空 */ public String delGoods(int id) { //try{ String message = ""; System.out.println("现在开始向库中删除商品 "); Integer[] info = dbset.hasGoods(id);//查询有无该商品,返回布尔值和数量 if(info[0] ==1){//确定有该商品再执行删除操作 if(dbset.delete(id)==true) { message =("商品"+ id+" 下架成功!"); }else { message =("商品"+ id+" 下架失败!"); } }else{//如果该商品不在库中 //throw new GoodsException("要删除的商品"+id+" 不存在哦!"); message =("要删除的商品"+id +" 不存在"); } System.out.println(); //}catch(GoodsException e){ //System.out.println(e.toString()); //} return message; } /** * 查询仓库中的商品 * * @param 值为空 * @return 值为空 */ public ArrayList<Goods> queryGoods( ){ ArrayList<Goods> goods = dbset.findAll(); /* System.out.println("本店现有商品数:"); for(Goods g :goods) { System.out.println(g); } System.out.println();; */ return goods; } /** * 查询仓库中的商品 * * @param 值为空 * @return 值为空 */ public ArrayList<Goods> queryGoods(String name) { ArrayList<Goods> goods = dbset.find(name); /* System.out.println("查询到名称为"+name+"商品有:"); for(Goods g :goods) { System.out.println(g); } System.out.println();; */ return goods; } /** * 向数据仓库中修改商品的数量 * @param g 仓库中待修改的商品 * @param p 商品修改后的价格 * @return 值为空 */ public String modifyGoods(int id,float p) { String message = ""; //try{ Integer[] info = dbset.hasGoods(id);//查询有无该商品,返回布尔值和数量 if(info[0] ==0){//确定有该商品再执行修改操作 //throw new GoodsException("要修改的商品"+g.getName()+" 不存在哦!"); message =("要修改的商品"+id+" 不存在"); }else {//查到这个商品了,可以做进一步操作 dbset.modify(id, p); message =(id+" 的价格更改为 " + p+ " 元"); } //}catch( GoodsException e){ //System.out.println(e.toString()); //} return message; } public static void main(String[] args) { // TODO Auto-generated method stub MyCon.getConn();//建立数据库连接 Scanner sc = new Scanner(System.in); GoodsService s = new GoodsService(); /* 商品上架 */ Goods g1= new Goods("1","山西刀削面",105.0f,30); Goods g2= new Noodles("2","兰州牛肉面",15.0f,20); Goods g3= new Rice("3","黄焖鸡米饭",12.0f,30,false); System.out.println("执行添加餐品操作..."); System.out.println(s.addGoods(g1)); System.out.println(s.addGoods(g2)); System.out.println(s.addGoods(g3)); //System.out.println("共找到商品?件:"+s.getNum()); System.out.println("以下为商品详情信息:"); System.out.println(s.queryGoods()); /*修改商品价格 */ System.out.println("执行修改价格操作..."); System.out.println("请问您想修改什么餐品?输入餐品id"); int id = Integer.valueOf(sc.next()); System.out.println("餐品修改后的价格为?"); float price= Float.valueOf(sc.next()); System.out.println("该商品的id为:"+ id+",修改后的价格为:"+price); System.out.println(s.modifyGoods(id,price)); /*根据商品名称查找商品*/ System.out.println("执行关键词查询商品操作..."); System.out.println("请问您想查询什么餐品?输入餐品关键词:"); String name = sc.next(); System.out.println("查询到名称为"+name+"商品有:"); System.out.println(s.queryGoods(name)); /* 查询所有商品 */ System.out.println("执行查询所有商品操作..."); System.out.println(s.queryGoods()); /*商品下架 */ System.out.println("执行删除餐品操作..."); System.out.println("请问您想删除什么餐品?输入餐品id"); id = Integer.valueOf(sc.next()); System.out.println(s.delGoods(id)); sc.close(); MyCon.disConn();//关闭数据库连接 } }
显示层
显示层 调用业务逻辑层的代码,完成查询
客户端
main包 中 Main类:
用户登录功能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("您选择了:列出购买商品的业务"); //此功能暂不开放 break; case 4: //删除商品,从购物车中删除商品信息 System.out.println("您选择了:处理删除商品的业务"); //此功能暂不开放 break; case 5: //显示某个用户购物车中所有的商品 System.out.println("您选择了:显示查询购买情况"); //此功能暂不开放 break; case 6: //退出当前应用程序 System.out.println("您选择了:退出当前应用程序"); sc.close(); System.exit(0); break; default: System.out.println("您的选择不正确"); } }
打印输出函数printArray()
public static <E>void printArray(ArrayList<E> inputArray) { for ( E element : inputArray ){ System.out.println(element); } System.out.println(); }
在main中编写测试代码
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("您选择了:列出购买商品的业务"); //此功能暂不开放 break; case 4: //删除商品,从购物车中删除商品信息 System.out.println("您选择了:处理删除商品的业务"); //此功能暂不开放 break; case 5: //显示某个用户购物车中所有的商品 System.out.println("您选择了:显示查询购买情况"); //此功能暂不开放 break; case 6: //退出当前应用程序 System.out.println("您选择了:退出当前应用程序"); sc.close(); System.exit(0); break; default: System.out.println("您的选择不正确"); } }
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>
管理端
main包 中 Main类:
用户登录功能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("您选择了:处理商品上架的业务"); Goods g = inputGoods(sc); System.out.println(gs.addGoods(g)); break; case 2: //处理商品下架的业务 System.out.println("您选择了: 处理商品下架的业务"); printArray(gs.queryGoods()); System.out.println("请问您想下架什么商品?输入商品id"); gid = Integer.valueOf(sc.next()); System.out.println(gs.delGoods(gid)); break; case 3://处理查询所有商品的业务 System.out.println("您选择了:查询所有商品的业务"); printArray(gs.queryGoods());//查询所有商品 break; case 4: //处理按商品名称查询 System.out.println("您选择了: 按商品名称查询的业务"); System.out.println("请输入关键词:"); String gname = sc.next(); printArray(gs.queryGoods(gname)); break; case 5: //更改商品信息的业务 System.out.println("您选择了:更改商品信息的业务"); String [] m = alterPrice();//输入更改的商品和价格 int id=Integer.valueOf(m[0]); float price = Float.valueOf(m[1]); System.out.println(gs.modifyGoods(id,price)); 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(); }
商品输入函数inputGoods()
public static Goods inputGoods(Scanner sc){ Goods g= new Goods(); System.out.print("请输入商品名称:"); String name =sc.next(); g.setName(name); System.out.print("请输入商品数量:"); String number =sc.next(); int n= Integer.parseInt(number); g.setNum(n); System.out.println("请输入商品价格:"); String price =sc.next(); Float p = Float.parseFloat(price); g.setPrice(p); return g; }
更改价格函数
public static String[] alterPrice(){ String [] m = new String[2]; System.out.println("请输入商品ID:"); m[0]= sc.next(); System.out.println("请输入商品价格:"); m[1] =sc.next(); return m; }
测试函数
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 entity.Goods; import service.CartsService; import service.GoodsService; import service.UserService; public class Main { static Scanner sc = new Scanner(System.in); 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("您选择了:处理商品上架的业务"); Goods g = inputGoods(sc); System.out.println(gs.addGoods(g)); break; case 2: //处理商品下架的业务 System.out.println("您选择了: 处理商品下架的业务"); printArray(gs.queryGoods()); System.out.println("请问您想下架什么商品?输入商品id"); gid = Integer.valueOf(sc.next()); System.out.println(gs.delGoods(gid)); break; case 3://处理查询所有商品的业务 System.out.println("您选择了:查询所有商品的业务"); printArray(gs.queryGoods());//查询所有商品 break; case 4: //处理按商品名称查询 System.out.println("您选择了: 按商品名称查询的业务"); System.out.println("请输入关键词:"); String gname = sc.next(); printArray(gs.queryGoods(gname)); break; case 5: //更改商品信息的业务 System.out.println("您选择了:更改商品信息的业务"); String [] m = alterPrice();//输入更改的商品和价格 int id=Integer.valueOf(m[0]); float price = Float.valueOf(m[1]); System.out.println(gs.modifyGoods(id,price)); 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 Goods inputGoods(Scanner sc){ Goods g= new Goods(); System.out.print("请输入商品名称:"); String name =sc.next(); g.setName(name); System.out.print("请输入商品数量:"); String number =sc.next(); int n= Integer.parseInt(number); g.setNum(n); System.out.println("请输入商品价格:"); String price =sc.next(); Float p = Float.parseFloat(price); g.setPrice(p); return g; } public static String[] alterPrice(){ String [] m = new String[2]; System.out.println("请输入商品ID:"); m[0]= sc.next(); System.out.println("请输入商品价格:"); m[1] =sc.next(); return m; } 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(); } }