图书管理

这是一个简单的图书管理系统,对部分功能的进行了实现,主要就是练习对数据库的增删改查和逻辑的运用!

1、使用的Oracle数据库,先建数据库,并插入几条简单的数据

2、在MyEclipse中建立Web Project,命名为bookManager,建包结构如下

3、首先写dao包中的IBaseDao,然后用OracleBaseDao实现方法连接数据库(getConnection)和关闭连接(closeCon),代码如下 

[java] view plain copy
 
  1. package cn.dao.utils.impl;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.DriverManager;  
  5. import java.sql.PreparedStatement;  
  6. import java.sql.ResultSet;  
  7.   
  8. import cn.dao.utils.interfaces.IBaseDao;  
  9.   
  10. /** 
  11.  * 使用Oracle数据库 
  12.  *  
  13.  * @author CCQ 
  14.  *  
  15.  */  
  16. public class oracleBaseDao implements IBaseDao {  
  17.   
  18.     static String DRIVER_CLASS = "oracle.jdbc.driver.OracleDriver";  
  19.     static String URL = "jdbc:oracle:thin:@localhost:1521:orcl";  
  20.     static String USER = "hope";  
  21.     static String PWD = "123456";  
  22.   
  23.     @Override  
  24.     public Connection getConn() throws Exception {  
  25.         // TODO Auto-generated method stub  
  26.         Connection conn = null;  
  27.         try {  
  28.             Class.forName(DRIVER_CLASS);  
  29.             conn = DriverManager.getConnection(URL, USER, PWD);  
  30.         } catch (Exception e) {  
  31.             throw new Exception(e.getMessage());  
  32.         }  
  33.         return conn;  
  34.     }  
  35.   
  36.     @Override  
  37.     public void closeConn(ResultSet rs, PreparedStatement ps, Connection conn)  
  38.             throws Exception {  
  39.         // TODO Auto-generated method stub  
  40.         try {  
  41.             if (rs != null) {  
  42.                 rs.close();  
  43.             }  
  44.             if (ps != null) {  
  45.                 ps.close();  
  46.             }  
  47.             if (conn != null) {  
  48.                 conn.close();  
  49.             }  
  50.         } catch (Exception e) {  
  51.             throw new Exception(e.getMessage());  
  52.         }  
  53.     }  
  54. }  



4、书写dao包中的UserDaoImpl,实现用户登录,再写bookDaoImpl,实现对图书的操作,代码如下

[java] view plain copy
 
  1. package cn.dao.impl;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.PreparedStatement;  
  5. import java.sql.ResultSet;  
  6.   
  7. import cn.dao.interfaces.IUserDao;  
  8. import cn.dao.utils.impl.oracleBaseDao;  
  9. import cn.dao.utils.interfaces.IBaseDao;  
  10. import cn.po.User;  
  11. /** 
  12.  * 用户操作实现类 
  13.  * @author CCQ 
  14.  * 
  15.  */  
  16. public class UserDaoImpl implements IUserDao {  
  17.     IBaseDao baseDao = new oracleBaseDao();  
  18.   
  19.     @Override  
  20.     public User login(User user) throws Exception {  
  21.         // TODO Auto-generated method stub  
  22.         User users = null;  
  23.         try {  
  24.             Connection conn = baseDao.getConn();  
  25.             String sql = "select * from users where username = ? and userpwd = ?";  
  26.             PreparedStatement ps = conn.prepareStatement(sql);  
  27.             ps.setObject(1, user.getUserName());  
  28.             ps.setObject(2, user.getUserPwd());  
  29.             ResultSet rs = ps.executeQuery();  
  30.             if(rs.next()){  
  31.                 users = new User();  
  32.                 users.setUserId(rs.getInt("userId"));  
  33.                 users.setUserName(rs.getString("userName"));  
  34.                 users.setUserPwd(rs.getString("userPwd"));  
  35.             }  
  36.             baseDao.closeConn(rs, ps, conn);  
  37.         } catch (Exception e) {  
  38.             throw new Exception(e);  
  39.         }  
  40.         return users;  
  41.     }  
  42.   
  43. }  
[java] view plain copy
 
  1. package cn.dao.impl;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.PreparedStatement;  
  5. import java.sql.ResultSet;  
  6. import java.util.ArrayList;  
  7. import java.util.List;  
  8.   
  9. import cn.dao.interfaces.IBookDao;  
  10. import cn.dao.utils.impl.oracleBaseDao;  
  11. import cn.dao.utils.interfaces.IBaseDao;  
  12. import cn.po.Book;  
  13.   
  14. /** 
  15.  * 对图书操作的实现类 
  16.  *  
  17.  * @author CCQ 
  18.  *  
  19.  */  
  20. public class BookDaoImpl implements IBookDao {  
  21.     IBaseDao baseDao = new oracleBaseDao();  
  22.     private Connection conn = null;  
  23.     private PreparedStatement ps = null;  
  24.     private ResultSet rs = null;  
  25.     int r = 0;  
  26.   
  27.     @Override  
  28.     public List<Book> findBooks() throws Exception {  
  29.         // TODO Auto-generated method stub  
  30.         List<Book> books = new ArrayList<Book>();  
  31.         try {  
  32.             conn = baseDao.getConn();  
  33.             String sql = "select * from books order by bookid";  
  34.             ps = conn.prepareStatement(sql);  
  35.             rs = ps.executeQuery();  
  36.             while (rs.next()) {  
  37.                 Book book = new Book();  
  38.                 book.setBookId(rs.getInt("bookId"));  
  39.                 book.setBookName(rs.getString("bookName"));  
  40.                 book.setBookAutor(rs.getString("bookAutor"));  
  41.                 book.setBookType(rs.getString("bookType"));  
  42.                 book.setBookPrice(rs.getDouble("bookPrice"));  
  43.                 books.add(book);  
  44.             }  
  45.             baseDao.closeConn(rs, ps, conn);  
  46.         } catch (Exception e) {  
  47.             throw new Exception(e);  
  48.         }  
  49.         return books;  
  50.     }  
  51.   
  52.     @Override  
  53.     public int addBook(Book book) throws Exception {  
  54.         // TODO Auto-generated method stub  
  55.         try {  
  56.             conn = baseDao.getConn();  
  57.             String sql = "insert into books values(?,?,?,?,?)";  
  58.             ps = conn.prepareStatement(sql);  
  59.             ps.setObject(1, book.getBookId());  
  60.             ps.setObject(2, book.getBookName());  
  61.             ps.setObject(3, book.getBookAutor());  
  62.             ps.setObject(4, book.getBookType());  
  63.             ps.setObject(5, book.getBookPrice());  
  64.             r = ps.executeUpdate();  
  65.             baseDao.closeConn(rs, ps, conn);  
  66.         } catch (Exception e) {  
  67.             throw new Exception(e);  
  68.         }  
  69.         return r;  
  70.     }  
  71.   
  72.     @Override  
  73.     public Book findBookByBookName(String bookName) throws Exception {  
  74.         // TODO Auto-generated method stub  
  75.         Book book = null;  
  76.         try {  
  77.             conn = baseDao.getConn();  
  78.             String sql = "select * from books where bookname = ?";  
  79.             ps = conn.prepareStatement(sql);  
  80.             ps.setObject(1, bookName);  
  81.             rs = ps.executeQuery();  
  82.             if (rs.next()) {  
  83.                 book = new Book();  
  84.                 book.setBookId(rs.getInt("bookId"));  
  85.                 book.setBookName(rs.getString("bookName"));  
  86.                 book.setBookAutor(rs.getString("bookAutor"));  
  87.                 book.setBookType(rs.getString("bookType"));  
  88.                 book.setBookPrice(rs.getDouble("bookPrice"));  
  89.             }  
  90.             baseDao.closeConn(rs, ps, conn);  
  91.         } catch (Exception e) {  
  92.             throw new Exception(e);  
  93.         }  
  94.         return book;  
  95.     }  
  96.   
  97.     @Override  
  98.     public int deleteBook(String bookName) throws Exception {  
  99.         // TODO Auto-generated method stub  
  100.         try {  
  101.             conn = baseDao.getConn();  
  102.             String sql = "delete books where bookname = ?";  
  103.             ps = conn.prepareStatement(sql);  
  104.             ps.setObject(1, bookName);  
  105.             r = ps.executeUpdate();  
  106.             baseDao.closeConn(rs, ps, conn);  
  107.         } catch (Exception e) {  
  108.             throw new Exception(e);  
  109.         }  
  110.         return r;  
  111.     }  
  112.   
  113.     @Override  
  114.     public int modifyBook(Book book) throws Exception {  
  115.         // TODO Auto-generated method stub  
  116.         try {  
  117.             conn = baseDao.getConn();  
  118.             String sql = "update books set bookname = ?,bookautor = ?,booktype = ?,bookprice = ? where bookid = ?";  
  119.             ps = conn.prepareStatement(sql);  
  120.             ps.setObject(1, book.getBookName());  
  121.             ps.setObject(2, book.getBookAutor());  
  122.             ps.setObject(3, book.getBookType());  
  123.             ps.setObject(4, book.getBookPrice());  
  124.             ps.setObject(5, book.getBookId());  
  125.             r = ps.executeUpdate();  
  126.             baseDao.closeConn(rs, ps, conn);  
  127.         } catch (Exception e) {  
  128.             throw new Exception(e);  
  129.         }  
  130.         return r;  
  131.     }  
  132. }  

5、书写services包,中的接口类,和实现类,也就是调用相应的dao包的中方法(简单)。

6、书写一个BookManagerSys类来通过控制台输入验证功能是否正确,代码如下:

[java] view plain copy
 
  1. package cn.test;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5. import java.util.Scanner;  
  6.   
  7. import cn.po.Book;  
  8. import cn.po.User;  
  9. import cn.services.impl.BookServiceImpl;  
  10. import cn.services.impl.UserServiceImpl;  
  11. import cn.services.interfaces.IBookService;  
  12. import cn.services.interfaces.IUserService;  
  13.   
  14. /** 
  15.  * 图书管理系统界面 
  16.  *  
  17.  * @author CCQ 
  18.  *  
  19.  */  
  20. public class BookManagerSys {  
  21.   
  22.     IUserService userService = new UserServiceImpl();  
  23.     IBookService bookService = new BookServiceImpl();  
  24.     Scanner input = new Scanner(System.in);  
  25.   
  26.     public void menu() throws Exception {  
  27.         User user = new User();  
  28.         System.out.println(" 图书管理系统登录界面");  
  29.         System.out.print("用户名:");  
  30.         user.setUserName(input.next());  
  31.         System.out.print("密    码:");  
  32.         user.setUserPwd(input.next());  
  33.         user = userService.login(user);  
  34.         if (user != null) {  
  35.             bmenu();  
  36.         } else {  
  37.             System.out.println("用户名或密码错误,请重新输入!");  
  38.             menu();  
  39.         }  
  40.     }  
  41.   
  42.     public void bmenu() throws Exception {  
  43.         System.out.println(" 图书管理系统主界面");  
  44.         System.out.println("1.添加图书");  
  45.         System.out.println("2.查看所有图书信息");  
  46.         System.out.println("3.删除图书");  
  47.         System.out.println("4.修改图书信息");  
  48.         System.out.println("5.退出系统");  
  49.         System.out.print("请选择(1-5):");  
  50.         int op = input.nextInt();  
  51.         switch (op) {  
  52.         case 1:  
  53.             addBook();  
  54.             break;  
  55.         case 2:  
  56.             findBooks();  
  57.             break;  
  58.         case 3:  
  59.             deleteBook();  
  60.             break;  
  61.         case 4:  
  62.             modifyBook();  
  63.             break;  
  64.         case 5:  
  65.             System.out.println("谢谢使用图书管理系统!");  
  66.             System.exit(0);  
  67.         default:  
  68.             System.out.println("输入错误,请输入1-5数字");  
  69.         }  
  70.   
  71.     }  
  72.   
  73.     public void addBook() throws Exception {  
  74.         Book book = new Book();  
  75.         System.out.println(" 图书信息添加界面");  
  76.         System.out.print("图书编号:");  
  77.         book.setBookId(input.nextInt());  
  78.         System.out.print("图书名称:");  
  79.         book.setBookName(input.next());  
  80.         if (bookService.findBookByBookName(book.getBookName()) == null) {  
  81.             System.out.print("图书作者:");  
  82.             book.setBookAutor(input.next());  
  83.             System.out.print("图书类别:");  
  84.             book.setBookType(input.next());  
  85.             System.out.print("图书价格:");  
  86.             book.setBookPrice(input.nextDouble());  
  87.             int r = bookService.addBook(book);  
  88.             if (r != 0) {  
  89.                 System.out.println(book.getBookName() + "添加成功!");  
  90.                 bmenu();  
  91.             }  
  92.         } else {  
  93.             System.out.println(book.getBookName() + "已经存在,不可重复添加!");  
  94.             addBook();  
  95.         }  
  96.   
  97.     }  
  98.   
  99.     public void findBooks() throws Exception {  
  100.         System.out.println(" 查看所有图书信息界面");  
  101.         System.out.println("图书编号 图书名称 作者 类别 图书价格");  
  102.         List<Book> books = new ArrayList<Book>();  
  103.         books = bookService.findBooks();  
  104.         for (Book book : books) {  
  105.             System.out.println(book.getBookId() + " " + book.getBookName()  
  106.                     + " " + book.getBookAutor() + " " + book.getBookType()  
  107.                     + " " + book.getBookPrice());  
  108.         }  
  109.         bmenu();  
  110.     }  
  111.   
  112.     public void deleteBook() throws Exception {  
  113.         System.out.println(" 删除图书信息界面");  
  114.         System.out.print("请输入删除图书名称:");  
  115.         String bookName = input.next();  
  116.         if (bookService.findBookByBookName(bookName) != null) {  
  117.             int r = bookService.deleteBook(bookName);  
  118.             if(r != 0){  
  119.                 System.out.println("删除"+bookName+"成功!");  
  120.                 bmenu();  
  121.             }  
  122.         } else {  
  123.             System.out.println("您输入的"+bookName+"不存在!");  
  124.             bmenu();  
  125.         }  
  126.     }  
  127.   
  128.     public void modifyBook() throws Exception {  
  129.         Book book = new Book();  
  130.         System.out.println(" 修改图书信息界面");  
  131.         System.out.print("请输入修改的图书名称:");  
  132.         book.setBookName(input.next());  
  133.         if (bookService.findBookByBookName(book.getBookName()) != null) {  
  134.             book.setBookId(bookService.findBookByBookName(book.getBookName()).getBookId());  
  135.             System.out.print("请输入修改的图书作者:");  
  136.             book.setBookAutor(input.next());  
  137.             System.out.print("请输入修改的图书类别:");  
  138.             book.setBookType(input.next());  
  139.             System.out.print("请输入修改的图书价格:");  
  140.             book.setBookPrice(input.nextDouble());  
  141.             int r = bookService.modifyBook(book);  
  142.             if(r != 0){  
  143.                 System.out.println("修改"+book.getBookName()+"成功!");  
  144.                 bmenu();  
  145.             }else{  
  146.                 System.out.println("修改失败!");  
  147.             }  
  148.               
  149.         } else {  
  150.             System.out.println("您输入的"+book.getBookName()+"不存在!");  
  151.             bmenu();  
  152.         }  
  153.     }  
  154.   
  155. }  


7、结果展示:




8、总结:

经过这一个星期的学习,具体把Java中的面对对象的思想进行了深刻的掌握,然后学习Oracle中的简单建表和一些简单地SQL的增删改查!感觉掌握的还是不错的,Oracle数据库用着还是比较的顺手,感觉很好用,下阶段我要继续加油哦!加油!加油!加油!重要的事情说三遍!

原文地址:https://www.cnblogs.com/wxj-106/p/7576537.html