jdbc实现图书馆借阅系统

前言

每位在学校学java的同学在期末会有java课程设计,而选题很可能就是图书管理系统,此篇文章可以帮助到你。能力有限,代码有bug可以下方的评论区指明

简介

图书馆管理系统分为用户登录和管理员登录,整个系统的控制是在控制台下进行操作的。

用户层

用户可以进行注册,登录,借书,查书,密码修改,还书等功能。

管理员层

管理员可以进行对管理书籍包括新书上架,修改库存信息等功能。

系统本身

系统本身可以根据用户是否逾期进行锁定禁止借书的功能等。

需要掌握的java知识

java基础语法,容器(list),jdbc,sql语句。

po层代码

/**
 *
 * 对数据库的操作进行单独处理,更多的逻辑更改在更高的逻辑层编写。降低耦合
 *
 */
public class LibararyDao {

  /**
   * 注册图书
   * @param user 注册图书信息
   * @return
   */
  public boolean addBook(Bookinfo bookinfo){

    try {
      Connection con =JDBCutil.creatConnection();
      String sql = "insert into bookinfo (bookname,zuozhe,shuliang,shengyushuliang,date)"
          + " values (?,?,?,?,?) ";
      PreparedStatement pre =con.prepareStatement(sql);
      pre.setString(1, bookinfo.getBookname());
      pre.setString(2, bookinfo.getZuozhe());
      pre.setInt(3, bookinfo.getShuliang());
      pre.setInt(4, bookinfo.getShuliang());
      pre.setDate(5, new java.sql.Date(bookinfo.getData().getTime()));
      pre.execute();

    } catch (SQLException e) {
      System.out.println("图书注册失败");
      e.printStackTrace();
      return false;
    }
    return true;
  }

  /**
   * 注册账号
   * @param user 注册信息
   * @return
   */
  public boolean addUser(User user){

    try {
      Connection con =JDBCutil.creatConnection();
      String sql = "insert into userinfo (username,password,books) values (?,?,0) ";
      PreparedStatement pre =con.prepareStatement(sql);
      pre.setString(1, user.getUsername());
      pre.setString(2, user.getPassword());
      pre.execute();

    } catch (SQLException e) {
      System.out.println("注册失败");
      e.printStackTrace();
      return false;
    }
    return true;
  }

  /**
   * 查询用户
   * @param user 信息
   * @return
   */
  public ResultSet queryUser(User user){

    try {
      Connection con =JDBCutil.creatConnection();
      String sql = "select * from userinfo where username = ? ";
      PreparedStatement pre;
      pre = con.prepareStatement(sql);
      pre.setString(1, user.getUsername());
      ResultSet r =pre.executeQuery();
      return r;
    } catch (SQLException e) {
      System.out.println("查询失败");
      e.printStackTrace();
      return null;
    }
  }

  /**
   * 更新持有书
   * @param user 信息
   * @return
   */
  public boolean updateUserbooks(User user){

    try {
      Connection con =JDBCutil.creatConnection();
      String sql = "update userinfo set books = ? where username = ? ";
      PreparedStatement pre;
      pre = con.prepareStatement(sql);
      pre.setInt(1, user.getBooks());
      pre.setString(2, user.getUsername());
      int r =pre.executeUpdate();
      if(r>0){
        return true;
      }else{
        return false;
      }
    } catch (SQLException e) {
      System.out.println("查询失败");
      e.printStackTrace();
      return false;
    }
  }

  /**
   * 借书表中插入
   * @param username 借书人
   * @param bookname 书名
   * @return
   */
  public boolean addborrowinfo(String username,String bookname){
    try {
      Connection con =JDBCutil.creatConnection();
      String sql = "insert into borrowinfo (username,bookname,borrowdate,returndate)"
          + " values (?,?,?,?) ";
      PreparedStatement pre;
      pre = con.prepareStatement(sql);
      pre.setString(1, username);
      pre.setString(2, bookname);
      pre.setDate(3, new java.sql.Date(new Date().getTime()));
      pre.setDate(4, new java.sql.Date(DateUtil.addMonth(new Date()).getTime()));
      pre.execute();

    } catch (SQLException e) {
      System.out.println("借书失败");
      e.printStackTrace();
      return false;
    }
    return true;
  }

  /**
   * 查书
   * @param bookname 书名
   * @return
   */
  public ResultSet queryBook(String bookname){
    try {
      Connection con =JDBCutil.creatConnection();
      String sql = "select * from bookinfo where bookname ='"+bookname+"'";
      PreparedStatement pre;
      pre = con.prepareStatement(sql);
      ResultSet r =pre.executeQuery();
      return r;
    }
    catch (SQLException e) {
      System.out.println("借书失败");
      e.printStackTrace();
      return null;
    }}
  /**
   * 查询所有的书籍
   * @return
   */
  public ResultSet queryAllBook(){
    try {
      Connection con =JDBCutil.creatConnection();
      String sql = "select * from bookinfo ";
      PreparedStatement pre;
      pre = con.prepareStatement(sql);
      ResultSet r =pre.executeQuery();
      return r;
    }
    catch (SQLException e) {
      System.out.println("借书失败");
      e.printStackTrace();
      return null;
    }
  }
  /**
   * 分页
   * @param page
   * @return
   */
    public ResultSet querySubBookInfo(int page){
      try {

        Connection con =JDBCutil.creatConnection();
        PreparedStatement pre;
        String sql = "select * from bookinfo limit ?,5 ";

        pre = con.prepareStatement(sql);
        pre.setInt(1, page);
        ResultSet r =pre.executeQuery();

        return r;
      }
      catch (SQLException e) {
        System.out.println("借书失败");
        e.printStackTrace();
        return null;
      }

  }
  /**
   * 数据页数 五条数据为一组
   * @return
   */
  public int queryPageInfo(){

    try {
      int zongshu = 0;
      Connection con =JDBCutil.creatConnection();
      String sql1 = "select count(id) as cou from bookinfo ";

      Statement sta =con.createStatement();
      ResultSet res =sta.executeQuery(sql1);
      if(res.next())
      {
        zongshu = res.getInt("cou");
        if(zongshu == 0)return 0;
      }
      int a =0;
      if(zongshu%5==0){
        a = zongshu/5;
      }else{
        a = zongshu/5+1;
      }

      return a;
    }
    catch (SQLException e) {
      System.out.println("借书失败");
      e.printStackTrace();
      return -1;
    }

  }

  /**
   * 更新剩余数量
   * @param bookname 书名
   * @param sysl 数量
   * @return
   */
  public boolean updateBookinfo(String bookname,int sysl){
    try {
      Connection con =JDBCutil.creatConnection();

      String sql = "update bookinfo set shengyushuliang = ? where bookname = ?";
      PreparedStatement pre;
      pre = con.prepareStatement(sql);
      pre.setInt(1,sysl);
      pre.setString(2, bookname);

      int r =pre.executeUpdate();

      if(r>0){
        return true;
      }else{
        return false;
      }
    } catch (SQLException e) {
      System.out.println("借书失败");
      e.printStackTrace();
      return false;
    }
    }

    /*public boolean queryBook(String...strings){
      try {
        Connection con =JDBCutil.creatConnection();
        String sql = "select bookname from bookinfo where 1=1 ";

        PreparedStatement pre;
        pre = con.prepareStatement(sql);
        ResultSet r =pre.executeQuery();
        if(r.next()){
          return true;
        }else{
          return false;
        }
      } catch (SQLException e) {
        System.out.println("借书失败");
        e.printStackTrace();
        return false;
      }*/
    /**
     * 查询用户的所有的借阅信息
     * @param username
     * @return
     */
  public ResultSet queryBorrowinfo(String username){

    try {
      Connection con =JDBCutil.creatConnection();
      String sql = "select * from borrowinfo where username = '"+username+"'";
      PreparedStatement pre = con.prepareStatement(sql);
      ResultSet r =pre.executeQuery();
      return r;
    } catch (SQLException e) {
      System.out.println("查询失败");
      e.printStackTrace();
      return null;
    }
  }
  /**
   * 查询借阅信息
   * @param username
   * @return
   */
  public ResultSet queryBorrowinfo(String username,String bookname){

    try {
      Connection con =JDBCutil.creatConnection();
      String sql = "select * from borrowinfo where username = ? and bookname = ?";
      PreparedStatement pre = con.prepareStatement(sql);
      pre.setString(1, username);
      pre.setString(2, bookname);
      ResultSet r =pre.executeQuery();
      return r;
    } catch (SQLException e) {
      System.out.println("查询失败");
      e.printStackTrace();
      return null;
    }

  }
  /**
   * 删除借书
   * @param username 人名
   * @param bookname 书名
   * @return
   */
  public boolean deleteBorrowInfo(String username,String bookname){

    try {
      Connection con =JDBCutil.creatConnection();
      String sql = "delete from borrowinfo where username = ? and bookname = ? ";
      PreparedStatement pre = con.prepareStatement(sql);
      pre.setString(1, username);
      pre.setString(2, bookname);
      pre.execute();
      return true;
    } catch (SQLException e) {
      System.out.println("查询失败");
      e.printStackTrace();
      return false;
    }
  }

}

control层代码

/**
 * asdfasd 发斯蒂芬
 *
 */

package library.controller;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import library.dao.LibararyDao;
import library.po.Bookinfo;
import library.po.BorrowInfo;
import library.po.User;

public class BookController {
  private static LibararyDao bookdao;
  private BorrowInfo b;
  public BookController() {
    if(bookdao == null) bookdao = new LibararyDao();
  }

  public static void main(String[] args) {
  //System.out.println(new BookController().addUser(new User("123", "dvdf")));
      //System.out.println(new BookController().borrowBook("123", new User("123", "dvdf")));
  // new BookController().fenyeInfo(2);

  }

  /**
   * 用户登录
   * @param user 传过来的账号密码
   * @return 返回1为登陆成功 2为不存在 3异常
   */
  public int loginUser(User user){

    ResultSet rs =bookdao.queryUser(user);//验证用户是否存在
    try {
      if(rs!=null&&rs.next()){
        boolean b =rs.getString("password").equals(user.getPassword());
        if(b){
          return 1;
        }
      }
      return 2;
    } catch (SQLException e) {
      e.printStackTrace();
      return 3;
    }  

  }

  /**
   * 管理员登陆
   * @param user 传过来的账号密码
   * @return 返回1为登陆成功 2为不存在 3异常
   */
  public int loginGuanli(User user){

    ResultSet rs =bookdao.queryUser(user);//验证管理员是否存在
    try {
      if(rs!=null&&rs.next()){
        boolean b =rs.getString("password").equals(user.getPassword());
        int b1 = rs.getInt("isguanli");//管理员标志位1
        if(b&&b1==1){
          return 1;
        }
      }return 2;
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return 3;
    }  

  }
  /**
   * 查询书籍列表
   * @return 返回1为查询成功并已经输出 2为失败或其他
   */
  public int queryBookinfo(){

    try {
      ResultSet r =bookdao.queryAllBook();
      while(r!=null&&r.next()){
        System.out.println("书名"+r.getString("bookname")+"作者"+
            r.getString("zuozhe")+"总数"+r.getInt("shuliang")+"剩余数量"+r.getInt("shengyushuliang"));
      }
      if(r==null)return 2;
      return 1;
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return 2;
    }

  }
  /**
   * 查询书籍数量和剩余数量
   * @return 返回1为查询成功并已经输出 2为失败或其他
   */
  public ResultSet queryBookK(String bookname){

      ResultSet r =bookdao.queryBook(bookname);
      return r;

  }
  /**
   * 查询书籍
   * @return 返回1为查询成功并已经输出 2为失败或其他
   */
  public int queryBook(String bookname){
    try {
      ResultSet r =bookdao.queryBook(bookname);
      while(r!=null&&r.next()){
        System.out.println("书名"+r.getString("bookname")+"作者"+
            r.getString("zuozhe")+"总数"+r.getInt("shuliang")+"剩余数量"+r.getInt("shengyushuliang"));
      }
      if(r==null)return 2;
      return 1;
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return 2;
    }

  }

  /**
   * 加入新的图书信息
   * @param bookinfo 书籍的详细信息
   * @return 1成功 2失败
   */
  public int addBookinfo(Bookinfo bookinfo){
    boolean b = bookdao.addBook(bookinfo);
    if(b)return 1;
    return 2;
  }

  /**
   * 注册用户
   * @param user
   * @return
   */
  public int addUser(User user){
    ResultSet rs =bookdao.queryUser(user);
    try {

      if(rs!=null&&!rs.next()){
        boolean b =bookdao.addUser(user);
        if(b)return 1;
      }
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return 3;
    }
    return 2;
  }

  /**
   * 查询用户所有信息
   * @param user
   * @return
   */
  public int queryUser(User user){
    ResultSet r = bookdao.queryUser(user);
    try {
      if(r.next()){
        user.setBooks(r.getInt("books"));
        System.out.println(user);
        return 1;
      }
        return 2;

    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return 2;
    }

  }

  /**
   * 借书 先检查书是否存在,再检查书籍是否有库存,然后检查是否已结借此书
   * 最后以上检查没有错误,就可以借书。 用户持有数量增加,借书信息详解录入,库存更新
   *
   * 注意事项
   * 1 resultset 默认指向数据前一个位置 必须 用 next
   * 2 需要加入事务 防止出现错误造成数据表更新不一致
   * @param bookname 书名
   * @return
   */
  public String borrowBook(String bookname,User user){
    try {
      if(!bookdao.queryBook(bookname).next()){
        return "借书失败-书籍不存在";}

      ResultSet querybookrs = bookdao.queryBook(bookname);
      while(querybookrs.next()){
        int t = querybookrs.getInt("shengyushuliang");
        if(t<1){return "库存不足";}

        ResultSet rs =bookdao.queryBorrowinfo(user.getUsername());

        if(rs!=null&&!rs.next()){

          //加入借阅详细信息
          boolean b1 =bookdao.addborrowinfo(user.getUsername(), bookname);

          //更新借书数量
          ResultSet rs1 = bookdao.queryUser(user);
          rs1.next();
          user.setBooks(rs1.getInt("books")+1);
          bookdao.updateUserbooks(user);

          //更新库存
          boolean b2 =bookdao.updateBookinfo(bookname, t-1);
          //System.out.println(b1+" "+b2);

          return b1?(b2?"借书成功":"借书失败"):("借书失败");

        }
       }

      return null;

    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return "借书失败-其他错误";
    }

  }
  /**还书
   * 更新用户持有数,归还书的库存,删除借书信息表中信息
   * @param user 更新数据数
   * @param bookinfo 更新库存后的数
   * @return
   */
  public int returnBook(User user,String bookname){

    boolean b1 = bookdao.deleteBorrowInfo(user.getUsername(),bookname);
    boolean b2 = false;
    boolean b3 = false;
    try {
      //更新库存
      ResultSet r = bookdao.queryBook(bookname);
      if(r.next()){
        int i = r.getInt("shengyushuliang");
        b2 = bookdao.updateBookinfo(bookname,i+1);
      }

      //更新持有书数
      r = bookdao.queryUser(user);
      if(r.next()){
        int i = r.getInt("books");
        user.setBooks(i-1);
        b3 =bookdao.updateUserbooks(user);
      }

      if(!b1||!b2||!b3){
        return 2;
      }
      return 1;
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return 2;
    }

  }

  /**
   * 查询用户的借书情况
   * @param user 用户
   * @return 返回借阅信息
   */
  public List<BorrowInfo> queryborrowinfo(User user){

    ResultSet r =  bookdao.queryBorrowinfo(user.getUsername());
    List<BorrowInfo> l = new ArrayList<BorrowInfo>();
    try {
      while(r!=null&&r.next()){

        b = new BorrowInfo();
        b.setUsername(r.getString("username"));
        b.setBookname(r.getString("bookname"));
        b.setBorrowdate(r.getDate("borrowdate"));
        b.setReturndate(r.getDate("returndate"));
        l.add(b);

      }
      return l;
    } catch (SQLException e) {

      e.printStackTrace();
      return null;
    }
  }
  /**
   * 指定页码
   * @param age
   */
  public void fenyeInfo(int age){
    int i =bookdao.queryPageInfo();
    System.out.println("总页数:"+i);
    try {
      if(i>0){
        ResultSet r = bookdao.querySubBookInfo((age-1)*5);
        while(r!=null&&r.next()){
          System.out.println("书名"+r.getString("bookname")+"作者"+
          r.getString("zuozhe")+"总数"+r.getInt("shuliang")+"剩余数量"+r.getInt("shengyushuliang"));
          }
      }  

    } catch (SQLException e) {
      e.printStackTrace();
    }

  }
  /**
   * 指定上下页
   * @param age
   */
  public void fenyeInfo(String age){

  }

  /**
   * 更新图书信息
   * 更新作者,库存,剩余数量,不更新日期,书名(不就是添加了新的书籍了吗)
   * 可更新任务可以多选
   *
   * 书名进行判断是否存在
   * 库存和剩余数量进行逻辑上的验证
   */
  public void updateBookinfo(String bookname){
    Scanner scan = new Scanner(System.in);

    System.out.println("更新作者输入:1,跳过11");
    int i =scan.nextInt();
    List<List<String>> list = new ArrayList<List<String>>();
    List<String> list1 = null;
    if(i==1){
      String newbookname = scan.next();
      list1 = new ArrayList<String>();
      list1.add("zuozhe");
      list1.add("'"+newbookname+"'");
      list.add(list1);
    }
    //如果更新了库存,剩余数量也会跟着更新 需要判断库存逻辑的正确性
    System.out.println("更新数量输入2,跳过22");
    int ii = scan.nextInt();
    if(ii==2){
      System.out.println("请更新库存数量");
      int newsum = scan.nextInt();
      //判断数量逻辑的正确性
      ResultSet r = queryBookK(bookname);
      int oldsum=0;int sykc=0;//旧库存和剩余数量
      try {
        while(r.next()){
          oldsum = r.getInt("shuliang");
          sykc = r.getInt("shengyushuliang");
        }
        if(newsum>oldsum){
          sykc+=newsum-oldsum;//记录更新后的剩余数量
          //System.out.println("根据已有库存,库存总量为---"+newsum);
        }
        else if(newsum<oldsum&&newsum>=sykc){//如何新的库存少于就库存。判断新库存与剩余数量的关系
          sykc-=newsum;
        }else{
          System.out.println("输入错误");
          return ;
        }

      } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }

      list1 = new ArrayList<String>();
      list1.add("shuliang");
      list1.add(String.valueOf(newsum));
      list.add(list1);
      list1 = new ArrayList<String>();
      list1.add("shengyushuliang");
      list1.add(String.valueOf(sykc));
      list.add(list1);
    }
    bookdao.updateBookinfo(list, bookname);
  }

}

view层

package library.view;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Scanner;

import library.controller.BookController;
import library.po.Bookinfo;
import library.po.BorrowInfo;
import library.po.User;

/**
 * 视图类,也是界面的显示层。程序运行的入口
 * 想说的话:
 * 如果使用web作为v层,只需要把bookrun方法拆开就可以了。对应会话跟踪,把 private static User user 存入session对象就可以了
 * 框架的话用springmvc 。对于dao加入orm框架(hibernate ,mybatis)。整合起来也就是常见的ssm体系或ssh体系
 * 数据库的选择更是随你心情。mysql SQLserver 等等。
 * 项目bug仔细看的话很多。本意想给入门的同学一个思路方向。对于一些变量的命名请不要学我(偷懒),养成一个良好的
 * 习惯。祝你在编程的道路上越走越远!!
 */
public class View {
  //controller 业务控制类
  private static BookController bookc = new BookController();
  //登陆后的用户跟踪类似session
  private static User user;
  //控制主界面的循环
  private static boolean flag = true;
  //接受控制台输入
  private static Scanner scan = new Scanner(System.in);

  public static void main(String[] args) {
   bookRun();
  }

  //主界面  应该考虑其他输入的限定 (当输入字符时,系统停止运行)
  public static void bookRun(){
      try{
        do{
          System.out.println("欢迎来到图书借阅系统\n登陆输入: 1\n注册输入: 2\n管理员管理:3");
          int i1 = scan.nextInt();

          switch (i1) {
          case 1://登陆逻辑
            System.out.println("输入账号");
            String username = scan.next();
            System.out.println("密码");
            String password = scan.next();

            int i =bookc.loginUser(new User(username, password));

            if(i==1){

              System.out.println("登陆成功");
              user = new User(username, password);
              loginSuccess(user);

            }else if(i!=1){
              System.out.println("登陆失败,检查密码或者账号");
              }
            break;

          case 2:
            //注册逻辑 可以添加验证密码 进行密码的确定  java api有把明文进行处理的方法,请自行搜索
            //还可以加入正则表达式进行账号的限定(对于特殊字符输入的处理等)
            System.out.println("输入申请账号");
            String username1 = scan.next();
            System.out.println("密码");
            String password1 = scan.next();
            //此处可以再次确认密码的逻辑
            System.out.println(addUser(new User(username1, password1)));
            System.out.println("返回上一层");

            break;

          case 3://管理员逻辑
            System.out.println("输入管理员账号");
            String username2 = scan.next();
            System.out.println("密码");
            String password2 = scan.next();
            user = new User(username2, password2);
            int i2 =bookc.loginGuanli(user);
            if(i2==1){
              loginGuanliSuccess();
            }else{
              System.out.println("登陆失败,检查密码或者账号");
            }

            break;

          default :
            System.out.println("输入序号不正确");
            break;
          }

        }while(flag);

      }catch(InputMismatchException e){
        System.out.println("输入异常,请重启系统");
      }

  }

  //此处可以添加新的功能而不影响已有功能 (可以改为switch语句)
  private static void loginGuanliSuccess() {
    while(true){
      System.out.println("添加图书:1\n更改图书信息:2\n返回:3");
      int i = scan.nextInt();
      if(i==1){
        addBook();
      }else if(i==2){
        updateBookinfo();
      }else if(i==3){
        return;
      }
    }

  }

//更新图书
/**
 * 更新图书 只有管理员权限可以操作
 */
  private static void updateBookinfo() {

    //应该判断书名是否存在 contro层设计
    System.out.println("请输入书名");
    String bookname = scan.next();
    int a = bookc.queryBook(bookname);
    if(a!=1){
      System.out.println("不存在,已返回上一层");
      return;
    }

/*   System.out.println("更新作者输入1,跳过11");
    int i =scan.nextInt();
    List<List<String>> list = new ArrayList<List<String>>();
    List<String> list1 = null;
    if(i==1){
      String newbookname = scan.next();
      list1 = new ArrayList<String>();
      list1.add("zuozhe");
      list1.add("'"+newbookname+"'");
      list.add(list1);
    }
    //如果更新了库存,剩余数量也会跟着更新 需要判断库存逻辑的正确性
    System.out.println("更新数量输入2,跳过22");
    int ii = scan.nextInt();
    if(ii==2){
      //判断数量逻辑的正确性
      ResultSet r =bookc.queryBookK(bookname);
      try {
        int i1=0;int i2=0;
        while(r.next()){
          i1 = r.getInt("shuliang");
          i2 = r.getInt("shengyushuliang");
        }
        if(ii>i1){
          i2+=ii-i1;
        }
        if(ii<i1&&ii>=i2){

        }
        System.out.println("更新后的数量错误");
        return;

      } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }

      String newkucun= scan.next();
      list1 = new ArrayList<String>();
      list1.add("shuliang");
      list1.add(newkucun);
      list.add(list1);
    }*/

    bookc.updateBookinfo(bookname);
  }

//添加图书 需要保证名字唯一性
  private static void addBook() {
    System.out.println("图名");
    String bookname = scan.next();
    System.out.println("作者");
    String zuozhe = scan.next();
    System.out.println("数量");
    int  shuliang = scan.nextInt();
    Bookinfo bookinfo = new Bookinfo(bookname, zuozhe, shuliang, shuliang,new Date());
    int i =bookc.addBookinfo(bookinfo);
    if(i==1){
      System.out.println("添加成功");

    }else{
      System.out.println("错误");
    }

  }

  //注册界面的实现
  private static String addUser(User user){
    switch (bookc.addUser(user)) {
    case 1:
      return "注册成功";

    case 2:
      return "用户已注册";

    case 3:
      return "其他错误,重试";
    }

    return "其他错误,重试";

  }
  //登陆功能实现
  private static void loginSuccess(User user ){
    while (true){
      System.out.println("查看借阅信息请输入:1,借书:2,还书:3,账号信息:4,退出:5"
          + "查询图书:6修改密码:7\n");
      int i = scan.nextInt();
      switch (i) {
      case 1:
        borrowInfo(user);
        break;
      case 2:
        borrowBook(user);
        break;
      case 3:
        returnBook(user);
        break;
      case 4:
        queryUser(user);
        break;
      case 5:
        return ;
      case 6:
        System.out.println("请输入书名");

        queryBook(scan.next());
        break;
      case 7: break;
      default:
        System.out.println("输入错误");
        break;
      }
    }

  }
  //查询借阅信息
  private static void borrowInfo(User user ){
    List<BorrowInfo> l=bookc.queryborrowinfo(user);
    if(l==null||l.isEmpty()){
      System.out.println("没有借阅信息");
      return;
    }
    for (BorrowInfo borrowInfo : l) {
      System.out.println(borrowInfo);
    }

  }
  //借书
  private static void borrowBook(User user){
    System.out.println("请输入借阅的书籍名称");
    String bookname =scan.next();
    String flog = bookc.borrowBook(bookname, user);
    System.out.println(flog);
    System.out.println("是否继续借书:y|n");
    String flog1 = scan.next();
    if(flog1.equalsIgnoreCase("y")){
      borrowBook(user);
    }
  }
  //还书
  private static void returnBook(User user1 ){
    List<BorrowInfo> l=bookc.queryborrowinfo(user1);
    if(l==null||l.isEmpty()){
      System.out.println("没有借阅信息");
      return;
    }
    for (BorrowInfo borrowInfo : l) {
      System.out.println(borrowInfo);
    }
    System.out.println("请输入要还书籍的名字");
    String bookname = scan.next();
    int flog =bookc.returnBook(user1, bookname);
    if(flog==1){
      System.out.println("还书成功");
    }else{
      System.out.println("失败");
    }
    System.out.println("是否继续还书:y|n");
    String flog1 = scan.next();
    if(flog1.equalsIgnoreCase("y")){
      returnBook(user1);
    }  

  }
  //用户信息
  private static void queryUser(User user){
    int i =bookc.queryUser(user);
    if( i!=1){
      System.out.println("失败");
    }
  }

  private static void queryBook(String bookname){
    int i = bookc.queryBook(bookname);
    if(i!=1)System.out.println("书籍不存在");
  }

  private static void GuanliFace(){
    while(true){
      System.out.println("查询书籍列表请输入 :1;添加图书:2;使用分页查看书籍列表");
      int i =scan.nextInt();
      switch (i) {
      case 1:
        int i1= bookc.queryBookinfo();
        if(i1==2)System.out.println("错误");
        break;
      case 2:
        System.out.println("书名");
        String booknname1 = scan.next();
        System.out.println("作者");
        String zuozhe1 = scan.next();
        System.out.println("数量");
        int shuliang1 = scan.nextInt();
        Date date = new Date();
        int i3 = bookc.addBookinfo(new Bookinfo(booknname1, zuozhe1, shuliang1, shuliang1, date));
        if(i3==2)System.out.println("错误");
        break;
      case 3:
      default:
        System.out.println("错");
        break;
      }
    }

  }

  private static void fenyeInfo(){

  }

}

数据库

/用户表
CREATE TABLE `userinfo` (
 `id` int(10) NOT NULL AUTO_INCREMENT,
 `username` varchar(20) COLLATE utf8_bin DEFAULT NULL,
 `password` varchar(20) COLLATE utf8_bin DEFAULT NULL,
 `books` int(10) DEFAULT NULL,
 `isguanli` int(10) NOT NULL DEFAULT '0',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

/借书信息
CREATE TABLE `borrowinfo` (
 `id` int(10) NOT NULL AUTO_INCREMENT,
 `username` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
 `bookname` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
 `borrowdate` date DEFAULT NULL,
 `returndate` date DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

/书籍信息 字段用的拼音:-D
CREATE TABLE `bookinfo` (
 `id` int(10) NOT NULL AUTO_INCREMENT,
 `bookname` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
 `zuozhe` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
 `shuliang` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
 `shengyushuliang` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
 `date` date DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 图书管理系统java版

    本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出版日期.书号.价格字段.设计一个GUI界面进行书目管理.在该界面上有四个选项卡,分别是查询.插入.删除.修改.点击查询选项卡,出现的界面上有书名.作者.出版社.书号四个文本框,一个按钮和一个只读文本区.文本框内容可以为空,输入相应的查询信息后(例如根据书名查询可以仅输入书名),点击界面上的"查询"按钮,可以在界面

  • 一个简陋的java图书管理系统

    本文代码为原创一个简陋的管理系统,只做功能的测试.并没有去完善所有应有的功能,只做了输入输出查找,仅供参考! 菜单部分: import java.util.Scanner; public class Menu { int Min = 1; int Max = 3; public void getMenu(){ System.out.println("1.显示/2.输入/3.查找"); } public void getFindMenu(){ System.out.println(&qu

  • 图书管理系统java代码实现

    本文实例为大家分享了java实现图书管理系统的具体代码,供大家参考,具体内容如下 /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:    <图书管理系统--java>                          * 作    者:       刘江波                       * 完成日期:    2012     年  3    

  • jdbc实现图书馆借阅系统

    前言 每位在学校学java的同学在期末会有java课程设计,而选题很可能就是图书管理系统,此篇文章可以帮助到你.能力有限,代码有bug可以下方的评论区指明 简介 图书馆管理系统分为用户登录和管理员登录,整个系统的控制是在控制台下进行操作的. 用户层 用户可以进行注册,登录,借书,查书,密码修改,还书等功能. 管理员层 管理员可以进行对管理书籍包括新书上架,修改库存信息等功能. 系统本身 系统本身可以根据用户是否逾期进行锁定禁止借书的功能等. 需要掌握的java知识 java基础语法,容器(lis

  • Java实现图书馆借阅系统

    本文实例为大家分享了Java实现图书馆借阅系统的具体代码,供大家参考,具体内容如下 Main.java package com.src1.booksystem; import com.src1.booksystem.booklist.BookList; import com.src1.booksystem.users.AdminUser; import com.src1.booksystem.users.NormalUser; import com.src1.booksystem.users.U

  • python实现图书馆借阅系统

    今天我们的任务可是带有浓烈的人文气息——编写一个图书管理系统的程序.先请我们的主人公登场,给我们讲讲他的需求吧. 朋也是大学班上的文娱委员,他留意到周围同学经常表达出希望“课余生活能多看书”的意愿,但苦于不知道要选什么书看. 思前想后,朋也决定启动一个流浪图书计划:鼓励同学们将自己中意的闲置图书贡献出来,形成一个小型的精品图书库,以供同学们免费借阅.流转. 为此他需要一个图书管理系统,来帮助他管理书籍的借阅情况.他希望这个简易的程序可以做到: 代码如下: class Book:     def

  • Java实现简易图书借阅系统

    在简单学习Java的基础知识点后,动手做了一个十分简陋的图书馆借阅系统,作为对所学知识的综合应用,有不足的地方希望大家多多评论,会积极进行改正. 1.先附上总的效果 一开始的登录界面 登录界面 注册界面 登录进去后的个人主页 (本来想在上方插入一张图片,但是刚学swing部分,搞不懂图片的插入方式,搞了很久还是没懂,就暂时放下了) 借书页面 输入关键词后搜索的结果 还书界面,点击自动显示未还书籍 查询未还书籍的具体信息 2.贴上源代码 1).这里简单说一下与数据库的操作,注册用户时在表perso

  • Python连接Mysql实现图书借阅系统

    相信大家在学习python编程时绝对离不开数据库的连接,那么我们就用python来连接数据库实现一个简单的图书借阅系统.其实也很简单,就是在我们的程序中加入sql语句即可 数据库的表结构 我们在这里需要三张表,一张用户表,一张图书表和一张借阅表.注意我们的数据库命名为bbs(book borrow system) 1.用户表 2.图书表 bookname:书名author:作者booknum:图书编号bookpress:出版社bookamoun:图书数量 3.借阅表 id:借阅号borrowna

  • C语言数据结构之图书借阅系统

    本文实例为大家分享了C语言实现图书借阅系统的具体代码,供大家参考,具体内容如下 /*****************************   @title: 数据结构实验   @name: <实验2-1> 线性表(顺序表)的应用--我的图书馆   @object:       [实验目的]           应用线性表解决问题.           有若干图书,借出的书需要登记下来.            用两个线性表分别保存现有图书和借书信息,           并实现增加新书,借书

  • java实现简单的图书借阅系统

    本文实例为大家分享了java实现简单图书借阅系统的具体代码,供大家参考,具体内容如下 直接看代码: package ttt; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet

  • C语言图书借阅系统源码

    本文实例为大家分享了C语言图书借阅系统的具体代码,供大家参考,具体内容如下 #include "stdafx.h" #include"stdio.h" #include"conio.h" #include"string.h" #include"stdlib.h" int N; char mima[20]="mm"; /**********定义图书结构体类型book*******/ str

  • python实现图书借阅系统

    本文实例为大家分享了python实现图书借阅系统的具体代码,供大家参考,具体内容如下 部分代码: from flask import Flask,render_template from flask import request from DB import createdb from flask import session app = Flask(__name__) app.config['SECRET_KEY'] = '123456' # 首页-->登录页面 @app.route('/')

  • 基于Java SSM框架开发图书借阅系统源代码

    一.技术框架与开发环境 开发环境: IDE:IDEA 2020 数据库:MySQL 8.0 JDK 1.8 Maven 3.6.1 Tomcat 9 lombok 1.18.1 技术框架: 核心框架:Spring 5.1.9 持久层框架:Mybatis 3.5.2 视图层框架:SpringMVC 5.1.9 前端框架:Bootstrap 4 jquery-3.6.0 二.项目源码 有用就点赞博客 Github 国内:Giee 项目结构 三.功能介绍 1.登录 2.注册 AJAX异步刷新显示判断账

随机推荐