石家庄铁道大学图书管理系统
1、项目需求:
图书馆管理系统,能进图书管理系统软件图书管理系统软件行图书馆管理系统能实测国民经济和企业的各种运行情况;利用过去的数据预测未来;从企业全局出发辅助企业进行管理决策;利用信息控制企业的行为;帮助企业实现其规划目标。
2.系统要求与功能设计
2.1 页面要求
(1)能够在Tomcat服务器中正确部署,并通过浏览器查看;
(2)网站页面整体风格统一;
(3)首页(登录页)要求实现不同用户登录后,进入的功能页不相同。
(4)读者功能页:有浏览图书信息、查询图书信息、借阅图书,浏览催还书目、归还图书五个功能模块。
(5)管理员功能页:有添加读者信息、添加新书信息、打印催还书目信息三个模块。
2.2功能要求:
(1)浏览图书信息:读者登录后以列表形式可以查看所有图书基本信息,包括唯一编号、书名、作者名、出版社名称信息、可借阅数量;
(2)查询图书信息:可以按照书名或作者名进行模糊检索,以列表形式查看符合条件的图书信息。
(3)借阅图书功能:读者选择查询图书相应信息,跳转到书目的详细信息界面,当可借阅数量大于零,点击借阅按钮,提示用户借阅成功,并显示归还日期(三个月),否则提示用户该书可借阅数量为0,无法借阅。
(4)浏览催还书目:读者查看个人超期的图书列表信息。
(5)归还图书功能:读者可以查看个人借阅的所有书目列表信息,选择其中一项,则跳转到书目的详细信息界面,点击归还按钮,提示用户还书成功,如果该书超期,以一天0.1元计算罚金,提示用户需要缴纳罚金。
(6)添加读者基本信息:管理员可以添加读者基本信息,读者基本信息包括学号(八位数字组成,例如20180052)、读者姓名、读者性别、所在学院组成;
(7)添加新书基本信息:管理员可以添加新书基本信息,新书基本信息包括唯一编号、书名、作者名、出版社名称,可借阅数量;
(8)打印催还书目功能:显示所有用户的超期图书信息;
(9)登陆功能:管理员、读者登陆后可以看到不同的功能页面,读者登陆后只能看到自己的相关信息,不同读者登陆后无法查看其他人的信息。(要求至少创建五个读者用户演示选课过程)
3数据库设计:
要求实现图书基本信息表、借阅基本信息表、催还基本信息表、读者基本信息表。
4、WEB发布:
要求可以实现在浏览器直接访问系统。
评分等级分类:
A级:起评分90分,要求完全按照要求实现全部功能;
B级:起评分80分,最高分不超过89分,可以完成借阅的基本流程,实现浏览图书、查询、借阅、归还等核心功能,剩余功能有两个以下(包括两个)未实现;
C级:起评分70分,最高分不超过79分,可以实现图书、读者基本信息添加,无法实现借阅功能;
D级:起评分60分,最高分不超过69分,可以完成图书、借阅、催还、读者两个以上(包括两个)基本信息添加;
E级:无法达到上述级别要求。
图书
package Bean; import java.sql.*; public class book { private String name; private String number; private String wrname; private String cbs; private String sl; private int sy; static String driver = "com.mysql.cj.jdbc.Driver"; static String url = "jdbc:mysql://localhost:3306/book?&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; // 数据库的用户名与密码,需要根据自己的设置 static String user = "root"; static String password = "hhw20000317"; static Connection con; public book(String name, String number, String wrname, String cbs, String sl, int sy) { this.name = name; this.number = number; this.wrname = wrname; this.cbs = cbs; this.sl = sl; this.sy = sy; } public static void luru(String number, String name, String wrname, String cbs,String sl,int sy) { // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL // String driver = "com.mysql.jdbc.Driver"; // String url = "jdbc:mysql://localhost:3306/RUNOOB"; // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL try { //注册JDBC驱动程 序 Class.forName(driver); //建立连接 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) { System.out.println("数据库连接成功"); } Statement stmt = con.createStatement(); // 必须要写入id值,否则插入错误,建立数据库时,不是设置id值自动,为何还必须写入??? String sql = "insert into book values (?,?,?,?,?,?)"; PreparedStatement pst = con.prepareStatement(sql);//用来执行SQL语句查询,对sql语句进行预编译处理 pst.setString(1, number); pst.setString(2, name); pst.setString(3, wrname); pst.setString(4, cbs); pst.setString(5, sl); pst.setInt(6, sy);; pst.executeUpdate(); stmt.executeUpdate(sql); con.close(); System.out.println("insert success!"); } catch (ClassNotFoundException e) { System.out.println("数据库驱动没有安装"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } } public static int yz(String number) { int flag = 0; String number1; String part1; try { //注册JDBC驱动程 序 Class.forName(driver); //建立连接 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) { System.out.println("数据库连接成功"); } Statement stmt = con.createStatement(); // String sql = "INSERT INTO tab1 (title,author,submission_date) VALUES ('li','xiao','2020-07028')"; String sql = "select number from book"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { number1 = rs.getString("number"); if (number.equals(number1)) { return 1; } } con.close(); } catch (ClassNotFoundException e) { System.out.println("数据库驱动没有安装"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } return flag; } public String getName() { return name; } public String getNumber() { return number; } public String getWrname() { return wrname; } public String getCbs() { return cbs; } public String getSl() { return sl; } public int getSy() { return sy; } public static int cx(book[] book){ int i=0; Connection con; try { //注册JDBC驱动程 序 Class.forName(driver); //建立连接 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) { System.out.println("数据库连接成功"); } Statement stmt = con.createStatement(); // String sql = "INSERT INTO tab1 (title,author,submission_date) VALUES ('li','xiao','2020-07028')"; String sql = "select name,number,wrname,cbs,sl,sy from book"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()){ String name=rs.getString("name"); String number=rs.getNString("number"); String wrname=rs.getString("wrname"); String cbs=rs.getNString("cbs"); String sl=rs.getNString("sl"); int sy=rs.getInt("sy"); book[i]=new book(name,number,wrname, cbs, sl, sy); i++; } con.close(); } catch (ClassNotFoundException e) { System.out.println("数据库驱动没有安装"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } return i; } public static int cx(book[] book,String a){ int i=0; Connection con; try { //注册JDBC驱动程 序 Class.forName(driver); //建立连接 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) { System.out.println("数据库连接成功"); } Statement stmt = con.createStatement(); // String sql = "INSERT INTO tab1 (title,author,submission_date) VALUES ('li','xiao','2020-07028')"; String sql = "select name,number,wrname,cbs,sl,sy from book where name like '%"+a+"%'"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()){ String name=rs.getString("name"); String number=rs.getNString("number"); String wrname=rs.getString("wrname"); String cbs=rs.getNString("cbs"); String sl=rs.getNString("sl"); int sy=rs.getInt("sy"); book[i]=new book(name,number,wrname, cbs, sl, sy); i++; } con.close(); } catch (ClassNotFoundException e) { System.out.println("数据库驱动没有安装"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } return i; } public static int cx(String a,book[] book){ int i=0; Connection con; try { //注册JDBC驱动程 序 Class.forName(driver); //建立连接 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) { System.out.println("数据库连接成功"); } Statement stmt = con.createStatement(); // String sql = "INSERT INTO tab1 (title,author,submission_date) VALUES ('li','xiao','2020-07028')"; String sql = "select name,number,wrname,cbs,sl,sy from book where wrname like '%"+a+"%'"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()){ String name=rs.getString("name"); String number=rs.getNString("number"); String wrname=rs.getString("wrname"); String cbs=rs.getNString("cbs"); String sl=rs.getNString("sl"); int sy=rs.getInt("sy"); book[i]=new book(name,number,wrname, cbs, sl, sy); i++; } con.close(); } catch (ClassNotFoundException e) { System.out.println("数据库驱动没有安装"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } return i; } public static void changesy(String number){ Connection con; try { //注册JDBC驱动程 序 Class.forName(driver); //建立连接 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) { System.out.println("数据库连接成功"); } Statement stmt = con.createStatement(); // 必须要写入id值,否则插入错误,建立数据库时,不是设置id值自动,为何还必须写入??? String sql = "update book set sy=sy+1 where number ="+number+";"; stmt.executeUpdate(sql); con.close(); System.out.println("change success!"); } catch (ClassNotFoundException e) { System.out.println("数据库驱动没有安装"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } } public static void changesy1(String number){ Connection con; try { //注册JDBC驱动程 序 Class.forName(driver); //建立连接 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) { System.out.println("数据库连接成功"); } Statement stmt = con.createStatement(); // 必须要写入id值,否则插入错误,建立数据库时,不是设置id值自动,为何还必须写入??? String sql = "update book set sy=sy-1 where number ="+number+";"; stmt.executeUpdate(sql); con.close(); System.out.println("change success!"); } catch (ClassNotFoundException e) { System.out.println("数据库驱动没有安装"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } } }
用户
package Bean; import java.sql.*; public class reader { private String number; private String renumber; static String driver = "com.mysql.cj.jdbc.Driver"; static String url = "jdbc:mysql://localhost:3306/reader?&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; // 数据库的用户名与密码,需要根据自己的设置 static String user = "root"; static String password = "hhw20000317"; static Connection con; public reader(String number, String renumber) { this.number = number; this.renumber = renumber; } public static void luru(String number, String name, String sex, String xueyuan) { // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL // String driver = "com.mysql.jdbc.Driver"; // String url = "jdbc:mysql://localhost:3306/RUNOOB"; // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL try { //注册JDBC驱动程 序 Class.forName(driver); //建立连接 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) { System.out.println("数据库连接成功"); } Statement stmt = con.createStatement(); // 必须要写入id值,否则插入错误,建立数据库时,不是设置id值自动,为何还必须写入??? String sql = "insert into reader values (?,?,?,?)"; PreparedStatement pst = con.prepareStatement(sql);//用来执行SQL语句查询,对sql语句进行预编译处理 pst.setString(1, number); pst.setString(2, name); pst.setString(3, sex); pst.setString(4, xueyuan); pst.executeUpdate(); stmt.executeUpdate(sql); con.close(); System.out.println("insert success!"); } catch (ClassNotFoundException e) { System.out.println("数据库驱动没有安装"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } } public static void luru(String number, String renumber, int year,int month,int day) { // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL // String driver = "com.mysql.jdbc.Driver"; // String url = "jdbc:mysql://localhost:3306/RUNOOB"; // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL try { //注册JDBC驱动程 序 Class.forName(driver); //建立连接 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) { System.out.println("数据库连接成功"); } Statement stmt = con.createStatement(); // 必须要写入id值,否则插入错误,建立数据库时,不是设置id值自动,为何还必须写入??? String sql = "insert into jyxx values (?,?,?,?,?)"; PreparedStatement pst = con.prepareStatement(sql);//用来执行SQL语句查询,对sql语句进行预编译处理 pst.setString(1, number); pst.setString(2, renumber); pst.setInt(3, year); pst.setInt(4, month); pst.setInt(5, day); pst.executeUpdate(); stmt.executeUpdate(sql); con.close(); System.out.println("insert success!"); } catch (ClassNotFoundException e) { System.out.println("数据库驱动没有安装"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } } public String getNumber() { return number; } public String getRenumber() { return renumber; } public static int yz(reader[] readers,int year,int month,int day) //密码验证 { int i = 0; String number1; String renumber1; int year1; int month1; int day1; try { //注册JDBC驱动程 序 Class.forName(driver); //建立连接 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) { System.out.println("数据库连接成功"); } Statement stmt = con.createStatement(); // String sql = "INSERT INTO tab1 (title,author,submission_date) VALUES ('li','xiao','2020-07028')"; String sql = "select number,renumber,year,month,day from jyxx"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { number1= rs.getString("number"); renumber1 = rs.getString("renumber"); year1=rs.getInt("year"); month1=rs.getInt("month"); day1=rs.getInt("day"); if (year>year1) { readers[i]=new reader(number1,renumber1); i++; } if (year==year1&&month<month1) { readers[i]=new reader(number1,renumber1); i++; } if (year==year1&&month>=month1&&day<day1) { readers[i]=new reader(number1,renumber1); i++; } } con.close(); } catch (ClassNotFoundException e) { System.out.println("数据库驱动没有安装"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } return i; } public static int yz(reader[] readers,String no) //密码验证 { int i = 0; String number1; String renumber1; int year1; int month1; int day1; try { //注册JDBC驱动程 序 Class.forName(driver); //建立连接 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) { System.out.println("数据库连接成功"); } Statement stmt = con.createStatement(); // String sql = "INSERT INTO tab1 (title,author,submission_date) VALUES ('li','xiao','2020-07028')"; String sql = "select number,renumber,year,month,day from jyxx"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { number1= rs.getString("number"); renumber1 = rs.getString("renumber"); year1=rs.getInt("year"); month1=rs.getInt("month"); day1=rs.getInt("day"); if(no.equals(renumber1)) { readers[i]=new reader(number1,renumber1); i++; } } con.close(); } catch (ClassNotFoundException e) { System.out.println("数据库驱动没有安装"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } return i; } public static void delete(String number, String renumber) { // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL // String driver = "com.mysql.jdbc.Driver"; // String url = "jdbc:mysql://localhost:3306/RUNOOB"; // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL try { //注册JDBC驱动程 序 Class.forName(driver); //建立连接 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) { System.out.println("数据库连接成功"); } Statement stmt = con.createStatement(); // 必须要写入id值,否则插入错误,建立数据库时,不是设置id值自动,为何还必须写入??? String sql="DELETE FROM jyxx WHERE number="+number+" and renumber="+renumber+";"; stmt.executeUpdate(sql); con.close(); System.out.println("insert success!"); } catch (ClassNotFoundException e) { System.out.println("数据库驱动没有安装"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } } }
账号信息
package Bean; import java.sql.*; public class test { static String driver = "com.mysql.cj.jdbc.Driver"; static String url = "jdbc:mysql://localhost:3306/partmessage?&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; // 数据库的用户名与密码,需要根据自己的设置 static String user = "root"; static String password = "hhw20000317"; static Connection con; public static void luru(String name,String pass1,String number,String part) { // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL // String driver = "com.mysql.jdbc.Driver"; // String url = "jdbc:mysql://localhost:3306/RUNOOB"; // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL try { //注册JDBC驱动程 序 Class.forName(driver); //建立连接 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) { System.out.println("数据库连接成功"); } Statement stmt = con.createStatement(); // 必须要写入id值,否则插入错误,建立数据库时,不是设置id值自动,为何还必须写入??? String sql = "insert into part2 values (?,?,?,?)"; PreparedStatement pst = con.prepareStatement(sql);//用来执行SQL语句查询,对sql语句进行预编译处理 pst.setString(1, number); pst.setString(2, pass1); pst.setString(3, part); pst.setString(4, name); pst.executeUpdate(); stmt.executeUpdate(sql); con.close(); System.out.println("insert success!"); } catch (ClassNotFoundException e) { System.out.println("数据库驱动没有安装"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } } public static int yz(String number,String pass,String part,String[] name) //密码验证 { int flag = 0; String number1; String pass1; String part1; try { //注册JDBC驱动程 序 Class.forName(driver); //建立连接 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) { System.out.println("数据库连接成功"); } Statement stmt = con.createStatement(); // String sql = "INSERT INTO tab1 (title,author,submission_date) VALUES ('li','xiao','2020-07028')"; String sql = "select number,password,part,name from part2"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { number1 = rs.getString("number"); part1 = rs.getString("part"); pass1=rs.getNString("password"); name[0]=rs.getNString("name"); if (number.equals(number1)&&part.equals(part1)&&pass.equals(pass1)) { return 1; } } con.close(); } catch (ClassNotFoundException e) { System.out.println("数据库驱动没有安装"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } return flag; } public static void change(String name,String pass1,String number){ Connection con; try { //注册JDBC驱动程 序 Class.forName(driver); //建立连接 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) { System.out.println("数据库连接成功"); } Statement stmt = con.createStatement(); // 必须要写入id值,否则插入错误,建立数据库时,不是设置id值自动,为何还必须写入??? String sql = "update part set name='"+name+"',password='"+pass1+"' where number ="+number+";"; stmt.executeUpdate(sql); con.close(); System.out.println("change success!"); } catch (ClassNotFoundException e) { System.out.println("数据库驱动没有安装"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } } public static int yz(String number,String part) { int flag = 0; String number1; String part1; try { //注册JDBC驱动程 序 Class.forName(driver); //建立连接 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) { System.out.println("数据库连接成功"); } Statement stmt = con.createStatement(); // String sql = "INSERT INTO tab1 (title,author,submission_date) VALUES ('li','xiao','2020-07028')"; String sql = "select number,part from part2"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { number1 = rs.getString("number"); part1 = rs.getString("part"); if (number.equals(number1)&&part.equals(part1)) { return 1; } } con.close(); } catch (ClassNotFoundException e) { System.out.println("数据库驱动没有安装"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库连接失败"); } return flag; } }