zoukankan      html  css  js  c++  java
  • 图书管理

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

    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数据库用着还是比较的顺手,感觉很好用,下阶段我要继续加油哦!加油!加油!加油!重要的事情说三遍!

  • 相关阅读:
    用户态和内核态
    04 _ 如何利用事务消息实现分布式事务?
    03 _ 消息模型:主题和队列有什么区别
    01 _ 为什么需要消息队列?
    洛谷P2257 YY的GCD
    HDU2669 Romantic (扩展欧几里德)
    CQOI2015 选数
    A. Pride
    测试开发进阶——python-java——appium003——Desired Capabilities —— 自动化常用方法——面试整理
    HDU 5050
  • 原文地址:https://www.cnblogs.com/wxj-106/p/7576537.html
Copyright © 2011-2022 走看看