“Java架构设计之商品口”的版本间的差异
(→显示层) |
|||
(未显示同一用户的13个中间版本) | |||
第21行: | 第21行: | ||
数据访问层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>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) | ||
+ | |||
+ | </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> | ||
+ | |||
+ | 运行一下,看看能否连接数据库 ? | ||
==数据访问层== | ==数据访问层== | ||
===GoodsDao接口=== | ===GoodsDao接口=== | ||
− | |||
− | |||
<nowiki> | <nowiki> | ||
第36行: | 第141行: | ||
public interface GoodsDao { | public interface GoodsDao { | ||
public int getNum(); | public int getNum(); | ||
+ | |||
public boolean add(Goods g);//增加商品 | public boolean add(Goods g);//增加商品 | ||
− | public boolean delete( | + | public boolean delete(int id);//删除商品 |
public ArrayList<Goods> findAll();//查询所有商品 | public ArrayList<Goods> findAll();//查询所有商品 | ||
− | public ArrayList<Goods> find(String name);// | + | public ArrayList<Goods> find(String name);//模糊查询,查询某关键词的商品是否存在 |
+ | |||
+ | public boolean modify(int id,float p);//修改商品 | ||
− | public | + | public Integer [] hasGoods(String name);//精确查询,查询某种商品是否存在,返回id号和数量 |
− | public | + | public Integer[] hasGoods(int id);//查询某种商品是否存在,返回布尔值和数量 |
− | }</nowiki> | + | |
+ | |||
+ | } | ||
+ | </nowiki> | ||
===创建GoodsDaoSQL实现类=== | ===创建GoodsDaoSQL实现类=== | ||
− | |||
− | |||
<nowiki> | <nowiki> | ||
第58行: | 第167行: | ||
import java.sql.*; | import java.sql.*; | ||
− | import java.util. | + | import java.util.*; |
− | |||
import entity.*; | import entity.*; | ||
public class GoodsDaoSQL implements GoodsDao{ | public class GoodsDaoSQL implements GoodsDao{ | ||
− | + | ||
+ | Connection conn; | ||
− | |||
− | |||
public GoodsDaoSQL(){ | 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(); | |
− | + | } | |
− | + | } | |
− | + | </nowiki> | |
− | try { | + | ===返回商品总数getNum()=== |
− | + | <nowiki> | |
− | + | /* | |
− | + | * 功能:返回商品库的总数目 | |
+ | */ | ||
+ | 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; | ||
+ | }</nowiki> | ||
+ | |||
+ | |||
+ | ===增加操作add( )=== | ||
+ | |||
+ | <nowiki> | ||
+ | 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; | ||
+ | |||
+ | }</nowiki> | ||
+ | |||
+ | ===按id号查询有无特定商品hasGoods(int id)=== | ||
+ | |||
+ | <nowiki> | ||
+ | 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; | ||
+ | }</nowiki> | ||
+ | |||
+ | ===按商品全名查找有无特定商品hasGoods(String name)=== | ||
+ | <nowiki> | ||
+ | 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; | ||
+ | }</nowiki> | ||
+ | ===删除操作delete()=== | ||
+ | |||
+ | <nowiki> | ||
+ | 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()); | System.out.println(e.getMessage()); | ||
− | + | } | |
+ | return false; | ||
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | ===查询所有操作findAll()=== | ||
+ | <nowiki> | ||
+ | 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) { | } catch (SQLException e) { | ||
System.out.println(e.getMessage()); | System.out.println(e.getMessage()); | ||
− | |||
} | } | ||
− | return | + | return garray; |
− | + | }</nowiki> | |
− | } | + | |
+ | ===搜索操作find()=== | ||
+ | |||
+ | <nowiki> | ||
+ | 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; | ||
+ | } | ||
</nowiki> | </nowiki> | ||
+ | |||
+ | ===修改价格操作modify()=== | ||
+ | |||
+ | <nowiki> | ||
+ | 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; | ||
+ | |||
+ | }</nowiki> | ||
+ | |||
+ | ===在main方法编写测试代码=== | ||
+ | |||
+ | <nowiki> | ||
+ | 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();//建立数据库连接 | ||
+ | |||
+ | } | ||
+ | </nowiki> | ||
==业务逻辑层== | ==业务逻辑层== | ||
第109行: | 第495行: | ||
<nowiki> | <nowiki> | ||
− | + | 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();//关闭数据库连接 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</nowiki> | </nowiki> | ||
− | === | + | ===添加商品服务addGoods()=== |
<nowiki> | <nowiki> | ||
− | + | /** | |
* 商品上架,向数据仓库中添加商品 | * 商品上架,向数据仓库中添加商品 | ||
* @param g 向仓库中添加的商品 | * @param g 向仓库中添加的商品 | ||
* @return 值为空 | * @return 值为空 | ||
*/ | */ | ||
− | + | public String addGoods(Goods g){ | |
+ | String message = ""; | ||
String name = g.getName(); | String name = g.getName(); | ||
− | + | ||
− | if( | + | Integer [] info = dbset.hasGoods(name);//查询有无该商品,返回商品id号和数量 |
+ | if(info[0] == 0){ //如果没有该商品,才能执行上架操作 | ||
if(dbset.add(g)==true) { | if(dbset.add(g)==true) { | ||
− | + | message = " 商品 "+g.getName() +" 成功上架"; | |
}else { | }else { | ||
− | + | message = " 商品 "+g.getName() +" 上架失败"; | |
} | } | ||
}else { | }else { | ||
− | + | message = " 商品 "+g.getName() +"已存在"; | |
} | } | ||
+ | return message; | ||
} | } | ||
− | |||
</nowiki> | </nowiki> | ||
− | === | + | ===删除商品服务delGoods()=== |
− | <nowiki>/** | + | <nowiki> |
+ | /** | ||
* 向数据仓库中删除商品 | * 向数据仓库中删除商品 | ||
* @param g 向仓库中删除的商品 | * @param g 向仓库中删除的商品 | ||
* @return 值为空 | * @return 值为空 | ||
*/ | */ | ||
− | public | + | public String delGoods(int id) { |
//try{ | //try{ | ||
+ | String message = ""; | ||
System.out.println("现在开始向库中删除商品 "); | System.out.println("现在开始向库中删除商品 "); | ||
− | + | Integer[] info = dbset.hasGoods(id);//查询有无该商品,返回布尔值和数量 | |
− | if( | + | if(info[0] ==1){//确定有该商品再执行删除操作 |
− | if(dbset.delete | + | if(dbset.delete(id)==true) { |
− | + | message =("商品"+ id+" 下架成功!"); | |
}else { | }else { | ||
− | + | message =("商品"+ id+" 下架失败!"); | |
} | } | ||
− | }else{ | + | }else{//如果该商品不在库中 |
//throw new GoodsException("要删除的商品"+id+" 不存在哦!"); | //throw new GoodsException("要删除的商品"+id+" 不存在哦!"); | ||
− | + | message =("要删除的商品"+id +" 不存在"); | |
} | } | ||
System.out.println(); | System.out.println(); | ||
第184行: | 第560行: | ||
//System.out.println(e.toString()); | //System.out.println(e.toString()); | ||
//} | //} | ||
+ | return message; | ||
}</nowiki> | }</nowiki> | ||
− | === | + | ===查看所有商品服务queryGoods( )=== |
<nowiki> | <nowiki> | ||
− | + | /** | |
* 查询仓库中的商品 | * 查询仓库中的商品 | ||
* * @param 值为空 | * * @param 值为空 | ||
第194行: | 第571行: | ||
*/ | */ | ||
− | public | + | public ArrayList<Goods> queryGoods( ){ |
ArrayList<Goods> goods = dbset.findAll(); | ArrayList<Goods> goods = dbset.findAll(); | ||
+ | /* | ||
System.out.println("本店现有商品数:"); | System.out.println("本店现有商品数:"); | ||
for(Goods g :goods) { | for(Goods g :goods) { | ||
第202行: | 第580行: | ||
} | } | ||
System.out.println();; | System.out.println();; | ||
− | + | */ | |
+ | |||
+ | return goods; | ||
}</nowiki> | }</nowiki> | ||
− | === | + | ===搜索商品服务queryGoods(String name)=== |
<nowiki>/** | <nowiki>/** | ||
第214行: | 第594行: | ||
*/ | */ | ||
− | public | + | public ArrayList<Goods> queryGoods(String name) { |
ArrayList<Goods> goods = dbset.find(name); | ArrayList<Goods> goods = dbset.find(name); | ||
+ | |||
+ | /* | ||
System.out.println("查询到名称为"+name+"商品有:"); | System.out.println("查询到名称为"+name+"商品有:"); | ||
for(Goods g :goods) { | for(Goods g :goods) { | ||
System.out.println(g); | System.out.println(g); | ||
+ | |||
} | } | ||
System.out.println();; | System.out.println();; | ||
− | }</nowiki> | + | */ |
+ | return goods; | ||
+ | } | ||
+ | </nowiki> | ||
− | === | + | ===修改商品服务modifyGoods()=== |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<nowiki> | <nowiki> | ||
第251行: | 第621行: | ||
* @return 值为空 | * @return 值为空 | ||
*/ | */ | ||
− | public | + | public String modifyGoods(int id,float p) { |
− | + | String message = ""; | |
+ | |||
//try{ | //try{ | ||
− | + | Integer[] info = dbset.hasGoods(id);//查询有无该商品,返回布尔值和数量 | |
− | if( | + | if(info[0] ==0){//确定有该商品再执行修改操作 |
//throw new GoodsException("要修改的商品"+g.getName()+" 不存在哦!"); | //throw new GoodsException("要修改的商品"+g.getName()+" 不存在哦!"); | ||
− | + | message =("要修改的商品"+id+" 不存在"); | |
}else {//查到这个商品了,可以做进一步操作 | }else {//查到这个商品了,可以做进一步操作 | ||
− | dbset.modify | + | dbset.modify(id, p); |
− | + | message =(id+" 的价格更改为 " + p+ " 元"); | |
− | + | ||
} | } | ||
//}catch( GoodsException e){ | //}catch( GoodsException e){ | ||
//System.out.println(e.toString()); | //System.out.println(e.toString()); | ||
//} | //} | ||
− | + | return message; | |
} | } | ||
第276行: | 第647行: | ||
public static void main(String[] args) { | public static void main(String[] args) { | ||
// TODO Auto-generated method stub | // TODO Auto-generated method stub | ||
+ | MyCon.getConn();//建立数据库连接 | ||
+ | Scanner sc = new Scanner(System.in); | ||
GoodsService s = new GoodsService(); | GoodsService s = new GoodsService(); | ||
− | + | ||
− | // | + | /* 商品上架 */ |
− | |||
− | |||
Goods g1= new Goods("1","山西刀削面",105.0f,30); | Goods g1= new Goods("1","山西刀削面",105.0f,30); | ||
Goods g2= new Noodles("2","兰州牛肉面",15.0f,20); | Goods g2= new Noodles("2","兰州牛肉面",15.0f,20); | ||
Goods g3= new Rice("3","黄焖鸡米饭",12.0f,30,false); | Goods g3= new Rice("3","黄焖鸡米饭",12.0f,30,false); | ||
− | |||
System.out.println("执行添加餐品操作..."); | System.out.println("执行添加餐品操作..."); | ||
− | s.addGoods(g1); | + | System.out.println(s.addGoods(g1)); |
− | s.addGoods(g2); | + | System.out.println(s.addGoods(g2)); |
− | s.addGoods(g3); | + | System.out.println(s.addGoods(g3)); |
//System.out.println("共找到商品?件:"+s.getNum()); | //System.out.println("共找到商品?件:"+s.getNum()); | ||
System.out.println("以下为商品详情信息:"); | System.out.println("以下为商品详情信息:"); | ||
− | s.queryGoods(); | + | 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("执行删除餐品操作..."); | ||
− | + | System.out.println("请问您想删除什么餐品?输入餐品id"); | |
− | + | id = Integer.valueOf(sc.next()); | |
− | s. | + | System.out.println(s.delGoods(id)); |
− | + | sc.close(); | |
− | + | MyCon.disConn();//关闭数据库连接 | |
− | |||
− | |||
− | |||
− | |||
}</nowiki> | }</nowiki> | ||
===完整代码=== | ===完整代码=== | ||
+ | |||
<nowiki> | <nowiki> | ||
+ | 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();//关闭数据库连接 | ||
+ | } | ||
+ | } | ||
</nowiki> | </nowiki> | ||
− | |||
==显示层== | ==显示层== | ||
显示层 调用业务逻辑层的代码,完成查询 | 显示层 调用业务逻辑层的代码,完成查询 | ||
− | + | ===客户端=== | |
+ | main包 中 Main类: | ||
− | === | + | ====用户登录功能start()==== |
− | + | <nowiki> | |
− | + | public static int start(Scanner sc){ | |
− | <nowiki> | + | |
+ | 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()==== | ||
+ | <nowiki> | ||
+ | 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):"); | ||
+ | }</nowiki> | ||
+ | |||
+ | ====用户选择功能getChoice()==== | ||
+ | <nowiki> | ||
+ | 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("您的选择不正确"); | ||
+ | } | ||
+ | |||
+ | }</nowiki> | ||
+ | ====打印输出函数printArray()==== | ||
+ | <nowiki>public static <E>void printArray(ArrayList<E> inputArray) { | ||
+ | for ( E element : inputArray ){ | ||
+ | System.out.println(element); | ||
+ | } | ||
+ | System.out.println(); | ||
+ | }</nowiki> | ||
+ | ====在main中编写测试代码==== | ||
+ | <nowiki> | ||
+ | MyCon.getConn();//建立数据库连接 | ||
+ | Scanner sc = new Scanner(System.in); | ||
+ | int uid = start(sc); | ||
+ | if( uid!= 0) { | ||
+ | while(true) { | ||
+ | showMenu() ; | ||
+ | getChoice(sc,uid ); | ||
+ | } | ||
+ | } | ||
+ | MyCon.disConn();</nowiki> | ||
+ | ====完整代码==== | ||
+ | <nowiki> | ||
+ | package main; | ||
+ | import java.util.ArrayList; | ||
import java.util.Scanner; | import java.util.Scanner; | ||
− | |||
− | public class | + | import dao.MyCon; |
− | public static | + | import service.CartsService; |
+ | import service.GoodsService; | ||
+ | import service.UserService; | ||
+ | |||
+ | public class Main { | ||
+ | |||
+ | public static int start(Scanner sc){ | ||
System.out.println("****************************"); | System.out.println("****************************"); | ||
第339行: | 第1,014行: | ||
//System.out.println("用户名为:"+uname+",密码为:"+pwd); | //System.out.println("用户名为:"+uname+",密码为:"+pwd); | ||
UserService us =new UserService(); | 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("您的选择不正确"); | ||
+ | } | ||
+ | |||
+ | }</nowiki> | ||
+ | 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> | }</nowiki> | ||
− | + | ===管理端=== | |
+ | main包 中 Main类: | ||
− | [[ | + | ====用户登录功能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()==== |
− | + | ||
+ | <nowiki> 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):"); | ||
+ | }</nowiki> | ||
+ | |||
+ | ====用户选择功能getChoice()==== | ||
+ | <nowiki> | ||
+ | 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("您的选择不正确"); | ||
+ | } | ||
+ | |||
+ | }</nowiki> | ||
+ | |||
+ | |||
+ | ====打印输出函数printArray()==== | ||
+ | <nowiki>public static <E>void printArray(ArrayList<E> inputArray) { | ||
+ | for ( E element : inputArray ){ | ||
+ | System.out.println(element); | ||
+ | } | ||
+ | System.out.println(); | ||
+ | }</nowiki> | ||
+ | |||
+ | ====商品输入函数inputGoods()==== | ||
+ | <nowiki>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; | ||
+ | |||
+ | }</nowiki> | ||
+ | |||
+ | ====更改价格函数==== | ||
+ | |||
+ | <nowiki>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; | ||
+ | |||
+ | }</nowiki> | ||
+ | |||
+ | ====测试函数==== | ||
+ | |||
+ | <nowiki>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> | ||
+ | ====全部代码==== | ||
+ | <nowiki>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; | ||
− | 1. | + | 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(); | ||
+ | } | ||
+ | |||
+ | |||
+ | }</nowiki> |
2020年6月12日 (五) 08:13的最新版本
任务描述
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(); } }