摘要
图书资料管理系统基于eclipse下可视化工具WindowsBuilder配合Mysql数据库进行开发,具有的基本功能有管理员登陆,图书类别管理(包括图书类别的添加和删除),图书信息的管理 (包括图书基本信息的录入,删除和修改)。进行此次课程设计可有效的对数据库的概念结构设计和数据库逻辑结构设计进行一定的掌握与理解,同时通过建立图书资料管理系统E-R图,关系图可以加深对数据库相关知识的学习。
关键字:图书资料管理系统;数据库设计;Java开发

目录
1 系统简介 1
1.1 开发背景及意义 1
1.2 系统分析 1
1.3 开发环境 1
2 需求分析 2
3数据库概念设计 3
4.数据库逻辑结构设计 7
4.1 数据库模型图设计 7
4.2系统功能模块图 8
4.3数据流程分析 9
5.数据库物理设计 12
5.1 索引设计 12
5.2 视图设计 12
6.编码及实现 13
6.1 文件夹组织结构 13
6.2公共模块的编写 14
6.2.1数据库连接 14
6.2.2字符串工具类 15
6.3窗体设计 16
6.3.1主窗体设计 16
6.3.2登陆界面 17
6.3.3图书信息添加界面 18
7测试分析报告 24
总结 26
参考文献 27
致谢 28

1 系统简介
1.1 开发背景及意义
图书资料管理系统在实际中应用广泛,例如所有大型图书馆或者高校的图书馆都必须配备一套完整的图书管理系统,甚至部分小学也需要一个图书管理系统。它主要对一个学校的图书馆或者其他类型的图书相关业务部门的所有图书信息进行管理。图书借阅管理系统是图书管理系统的一个子系统,它主要完成对书籍的借出与归还的管理。
1.2 系统分析
1 基本功能
高校图书借阅管理系统的基本功能包括借书管理,还书管理,书籍和用户信息管理,以及图书信息检索等及格方面
2 用户分类
对于一个管理系统,首先就需要管理人员对数据库进行管理,其次应该对老师和学生的使用权限进行管理,同时可以对用户资料进行维护。
3 书籍信息
应该保存书籍的书名、作者、出版社等信息,以供用户查询。
4 信息查询
读者应该可以登陆到系统内查看所借书籍的信息,可以对书籍的信息进行查询和检索。
1.3 开发环境
本系统所采用的开发环境为 基于Java环境下eclipse开发,插件为Windows builder运行环境为Windows 10平台,运行的软硬件要求如下:
1 硬件部分:内存512M(或更高),标准的鼠标、键盘及显示器。
2 软件部分:数据库系统为mysql,开发工具使用eclipse。数据库建模工具powerdesigner

2 需求分析
本次课设的图书资料管理系统,是按照实际的图书借阅流程来设计的,因此其功能也是跟实际的图书馆借阅功能一致。
所以,该小型图书管理系统的设计,要包含图书类别的添加,图书借出、归还功能和数据统计功能。主要应具备以下业务处理能力:图书借出,完成借书时的信息查询,借后的信息入库,借书次数统计等等;图书归还,完成还书时的信息查询和数据入库等。另外还需具有图书信息管理和读者信息管理所需的基本功能,包括添加、删除、修改和查询,以及相关信息导入Excel和打印功能等。此外,一些相关的数据统计功能也很必要,如借阅统计、读者超期罚款统计等,可以为管理员工作提供参考。
整个系统既要实现基本业务,还要提供高效性、易用性和稳定性的性能要求。
按规范设计法,可将数据库设计分为四个阶段:系统需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、物理设计阶段。而一个完整的数据库系统的开发过程还需增加数据库实施和数据库运行与维护两个阶段 。图书资料管理系统正是基于以上六点所完成的。

3数据库概念设计
数据库设计是指对于一个给定的应用环境,构造(设计)出某种数据库管理系统所支持的优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据处理要求。
数据库已经成为现代信息系统的基础和核心部分,而数据库设计的好坏直接影响到整个系统的效率和质量。
创建一个完整的、尽可能规范化的和完全集成的概念、逻辑和物理数据库模型。具体要达到以下要求:
减少有害的数据冗余,提高程序共享性;
保证数据的独立性,可修改,可扩充;
访问数据库的时间要短;
数据库的存储空间要小;
要保证数据的安全性和保密性;
易于维护。
数据库概念设计是在系统开发的总体任务的基础上完成。图书资料管理系统需要完成功能主要有:
(1)各种信息的输入,包括图书类别的添加,图书基本信息、借阅信息、员工信息等;
(2)借阅信息的处理;图书类别的修改,图书信息的增加与重置
(3)各种信息的修改、删除;
(4)按照某种条件,查询统计符合条件的各类信息;
(5)对查询、统计的结果打印输出。
数据库概念结构的ER模型可采用自顶向下、自底向上、逐步扩张和混合策略四种方法。其中最常用的方法是自底向上 。自底向上方法是先定义各局部应用的概念结构ER模型,然后将它们集成,得到全局概念结构ER模型 。
E-R图是建立数据模型的基础,根据E-R模型向关系模式的转换规则,可以将E-R图中所有的实体和联系都用关系来表示,从而可以得到数据库的逻辑模型。
数据库设计是指对于一个给定的应用环境,构造(设计)出某种数据库管理系统所支持的优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据处理要求。
数据库已经成为现代信息系统的基础和核心部分,而数据库设计的好坏直接影响到整个系统的效率和质量。

  1. 员工信息ER图主要包括的基本信息有:编号,员工编号,员工姓名,学历,职称,性别,联系电话,专业,读者类别,所在部门,职务等信息。如图2.1所示。

  2. 图书信息ER图主要包括的信息有:图书编号,作者,版次,出版时间,分类,出版社,单价等信息。

  3. 借阅信息ER图主要包括的信息有:办证日期,员工编号 ,员工姓名,借阅日期 ,归还日期,是否归还等信息。

  4. 图书分类ER图主要包括的信息有:图书编号,可借天数和类别名称等信息。

  5. 图书订购信息ER图主要包括的信息有:订购日期,订购数量,图书编号,折扣,是否入库,操作员等信息。

  6. 库存信息ER图主要包括的信息有:编号和库存数量。

  7. 管理员信息ER图主要包括的信息有:身份证号,联系电话,员工编号,性别,年龄,工作日期,密码等信息。

    4.数据库逻辑结构设计
    4.1 数据库模型图设计
    概念结构设计阶段得到的ER模型是用户模型,它独立于任何一种数据模型,独立于任何一个具体的DBMS,是一个与计算机软、硬件的具体性能无关的全局概念模式。为了建立用户所要求的数据库,需要把上述概念模型转换为某个具体的DBMS所支持的数据模型,即逻辑结构设计。
    数据库逻辑设计的任务是将概念结构转换成特定DBMS所支持的数据模型的过程。关系数据库逻辑设计的结果是一组关系模式的定义 。
    E-R图是建立数据模型的基础,根据E-R模型向关系模式的转换规则,可以将E-R图中所有的实体和联系都用关系来表示,从而可以得到数据库的逻辑模型。
    图书资料管理系统主要是对读者基本信息的查询、修改,包括读者编号、读者姓名、读者种类、读者性别、工作单位、家庭住址、电话号码、电子邮件地址、办证日期、备注等等。
    在本次课程设计中关于图书资料管理数据库共建立了七个实体关系:

  8. 员工信息表:工姓名、性别、所在部门、职务、职称、学历、专业、联系电话、办证日期、书证编号、读者类别,等

  9. 图书信息表:包的数据项有:图书编号、名称、作者、版次、单价、出版社、分类、出版时间等;

  10. 借阅信息表:的数据项有:借阅日期、借阅人、还回日期等。

  11. 图书分类表:包括的数据项有:编号,可借天数,编号名称。

  12. 图书订购信息表:包括的数据项有:订购日期,订购数量,图书编号,折扣,操作员以及是否入库。

  13. 库存信息表:包括的数据项有编号和库存数量。

  14. 管理员信息表:包括的数据项有身份证号,联系电话,员工编号,性别,密码,工作日期,年龄等。
    本次本人通过PowerDesigner设计软件进行建模操作,所设计的数据库模型如图3.1所示
    图3.1图书资料管理系统关系图
    4.2系统功能模块图
    对上述各功能进行集中、分块业务流程分析
    新添加的图书由管理员进行入库操作,添加图书信息到图书信息表中。管理员依次输入图书条形码,书名,作者,出版社,出版时间,页数,类别,存放位置,图书总数和图书价格,系统自动根据图书类别、出版时间给出该书在数据库中的唯一编号,并同时记录入馆时间。所有这些信息将会被添加到图书基本信息表中。
    添加读者(新加入的读者也由管理员进行添加操作,添加新读者信息到读者信息表中)
    图书管理(可以对数据库中所有的图书(包括在馆和不在馆的)进行管理)
    读者管理(可以对数据库中所有的读者进行管理,可以对读者的信息进行修改、删除)
    信息查询业务(包括图书基本信息查询,读者基本信息查询,在这个查询界面,系统提供多种查询条件供用户选择)
    图书借出业务(读者根据需要查询图书信息,找到要借图书后,系统根据读者编号和图书编号调出相关信息,判断读者能否借此书)
    图书归还业务(系统根据图书实际归还日期以及应还日期判断是否超期)
    统计业务(包括图书借阅排名统计和罚款金额统计)
    系统管理(这部分包括修改管理员登录密码、图书类别设置、存放位置设置和读者类别设置等)
    打印操作(本系统提供所有图书信息打印,所有读者信息打印等,另外也提供自定义打印,即可对查询出来的结果进行打印)
    业务流程描述主要功能如图3.2所示:
    图3.2小型图书资料管理系统功能图
    4.3数据流程分析
    数据流程图(Data Flow Diagram, DFD)是以管理业务流程图为依据,通过抽象以舍去具体的组织结构、工作场所和物流等,单从数据信息流动的角度,来描述系统内部及系统与环境之间的数据信息的传递、处理和存储过程的一种工具。
    根据系统的业务流程,对其中的数据流向、处理及数据存储进行分析后,可以得到本系统的数据流程图如图3.3所示:
    图3.3图书资料管理系统数据流程图
    数据字典
    数据字典是用来规范化描述数据具体内容的工具,也是对数据汇总分析的一个总结,包括数据流字典、数据存储字典和数据处理字典。数据流程图配以数据字典,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述
    数据库逻辑结构设计
    该图书馆管理信息系统中各个数据表的设计如下所示:表4.1员工信息表
    表4.1员工信息表
    表4.2图书信息表
    表4.3管理员信息表

5.数据库物理设计
5.1 索引设计
表5.1读者表(reader)
字段名 sno sname passwd which num
索引表达式 sno
索引类型 主索引
表5.2书籍表(book)
字段名 bno bname bwriter bpress binfo bstate
索引表达式 bno
索引类型 主索引
5.2 视图设计
该视图建立在书籍表和借阅表的基础上,用来查询用户的借书信息,设计如下:
表5.2视图设计
字段名 bno bname bwriter bpress starttime endtime
说明 书籍号 书籍名称 作者 出版社 借书时间 还书时间

6.编码及实现
6.1 文件夹组织结构
在编写代码之前,可以先将系统中可能用到的文件夹或者包建立起来,这样方便我们后期的开发与管理,也可以规范系统的整体框架,我在做图书馆管理系统时设计了如图6.1所示的文件夹结构,在开发时,将相对应的放到各自根目录下即可。
图6.1图书资料管理系统文件夹结构
6.2公共模块的编写
在一般的开发中,经常会遇到一些公共模块的编写,如数据库连接及相关操作的类,这样的好处就在于方便管理和后期功能的扩展。
6.2.1数据库连接
数据库连接及操作类通常包括,数据库连接的方法(GetConnection),数据库关闭的方法(Close),执行查询语句的方法(List),执行添加语句的方法(Add),执行修改语句的方法(update),以及删除语句的方法(Delete),下面开始对各个模块及Dao类进行编码
在工具类DButil中创建数据库连接的操作在此类中新定义数据库连接驱动包名称,数据库连接路径,数据库用户名,密码等静态变量,然后在构造函数中实现连接数据库的操作。在数据库连接时需要添加trycatch关键字来捕捉数据库连接时异常。同时为了进行优化,我加入了判断数据库连接是否为空的情况,为空则进行连接,同时建立了数据库关闭操作,当对数据库的连接操作完成后进行关闭。
package java1.book.util;
import java.sql.Connection;//导入数据库连接时所使用的类
import java.sql.DriverManager;
/*

  • 数据库工具类
    /
    public class DButil {
    private String dbURl=“jdbc:mysql://localhost:3306/db_book?serverTimezone=UTC”;
    private String dbUserName=“root”;//用户名
    private String dbUserPassword=“123456”;//密码
    private String jdbcName=“com.mysql.cj.jdbc.Driver”;//驱动名称
    /
    *

    • 获取数据库连接
      /
      public Connection GetCon()throws Exception{
      Class.forName(jdbcName);
      Connection con=DriverManager.getConnection(dbURl, dbUserName, dbUserPassword);
      return con;
      }
      /
      *
    • 关闭数据库连接
      /
      public void closeCon(Connection con)throws Exception{
      if(con!=null)
      {
      con.close();
      }
      }
      public static void main(String[] args) {
      DButil Dbutil=new DButil();
      try {
      Dbutil.GetCon();
      System.out.println(“数据库连接成功”);
      } catch (Exception e) {
      e.printStackTrace();
      System.out.println(“数据库连接失败”);
      }
      }
      }
      6.2.2字符串工具类
      字符串连接工具在后期的进行查询等操作时可以进行有效的提高效率,和进行字符串拼接时将会用到。
      package java1.book.util;
      /
      *
  • 字符串工具类
    /
    public class Stringutil {
    /
    *

    • 判断是否为空
      /
      public static boolean isEmpty(String str) {
      if(str==null || “”.equals(str.trim())) {
      return true;
      }else {
      return false;
      }
      }
      /
      *
    • 判断是否不是空
      /
      public static boolean isNoteEmpty(String str ) {
      if(str!=null && !"".equals(str.trim())) {
      return true;
      }else {
      return false;
      }
      }
      6.3窗体设计
      6.3.1主窗体设计
      管理员通过“系统登陆”模块的验证后,可以登陆到图书资料管理系统的主界面,系统主窗体包括基本数据维护(图书类别管理,图书信息管理,和安全退出模块),“关于我们”只是简单的进行了一个展示。调用了一个JTextPane容器 进行文本框书写,在后面不在过多介绍。下面对这一模块的具体实现进行描述。
      图6.2图书资料管理系统主界面
      //设置JFrame最大化
      this.setExtendedState(JFrame.MAXIMIZED_BOTH);
      其添加事件的方法,点开Design然后在相关的需要添加事件的地方进行右击鼠标,找到Add event handler 下的action,再进一层点开actionPerformed。点击之后即可进行实际的事件添加,编写相应的代码。
      图6.3添加功能方法图
      代码如下:
      public void actionPerformed(ActionEvent e) {
      booktypeInter jbooktypeInter=new booktypeInter();
      jbooktypeInter.setVisible(true);
      table.add(jbooktypeInter);
      6.3.2登陆界面
      对于整个系统来说,无论是管理员还是普通读者,都必须登陆后才可以进行各种各样的操作。因此登陆界面的设计是本系统的关键。用户登陆必须输入用户名和密码,系统检测数据库中是否有该用户的信息以及密码是否正确,若符合要求则登陆成功,否者登陆失败。
      登陆界面的设计如下:登陆界面通过添加相应的属性即可完成,不过区别在于这个时候要和数据库连接,检查数据库中是否有相应的管理员所以建立工具类Userdao。代码如下所示:
      package java1.book.dao;
      import java.sql.Connection;
      import java.sql.PreparedStatement;
      import java.sql.ResultSet;
      import java1.book.model.User;
      /
      *
  • 用户Dao类

  • @author 徐建国
    /
    public class Userdao {
    public User login(Connection con,User user)throws Exception{
    User resultUser=null;
    String sql="select from t_user where username=?and password=?";
    PreparedStatement pstmt=con.prepareStatement(sql);//结果集遍历
    pstmt.setString(1, user.getUserName());
    pstmt.setString(2, user.getPassword());
    ResultSet rs=pstmt.executeQuery();
    if(rs.next())
    {
    resultUser=new User();
    resultUser.setId(rs.getInt(“id”));//获取id
    resultUser.setUserName(rs.getString(“username”));//获取用户名
    resultUser.setPassword(rs.getString(“password”));//获取密码
    }
    return resultUser;
    }}
    运行后界面如图所示:
    图6.4图书资料管理系统登陆界面图
    6.3.3图书信息添加界面
    图书信息是本系统的基础。书籍管理包括书籍数据的添加和修改等功能,同时可以根据书籍的id号进行查询等功能。主要是对数据库中书籍表(t_book)的操作。本模块中的操作有“查询”“添加”“修改”“保存”“删除”。涉及对数据库的操作有查询、增加、删除、修改等。
    1.若数据库中存在此书籍的信息,则将结果显示出来。
    2.保存:当管理员新增或修改书籍信息后,需要将数据信息保存到数据库中,更新数据库的数据。操作完成后,可到数据库中查看信息是否保存成功。
    3.删除:当书籍不存在时,管理员需要将数据库中书籍的信息删除,以防止数据的冗余。
    对于修改操作的实现,本系统采用如下方法:当用户单击“修改”按钮后,系统将删除数据库中当前的书籍信息,等待用户填入新的信息后,必须单击保存按钮将新的信息保存到数据库中。对于添加操作同样要在填入新的信息后单击保存才可以。图书类别的添加主要包括图书类别名称和图书描述信息的添加。
    (1)添加方法就是在添加按钮添加事件,进行调用。
    图6.5图书类别的添加
    /

    • 图书类别添加事件处理
      /
      private void bookTypeAddActionPerformed(ActionEvent evt) {
      String bookTypeName=this.bookTypeNametxt.getText();
      String bookTypeDesc=this.bookTypeDesctxt.getText();
      if(Stringutil.isEmpty(bookTypeName)) {
      JOptionPane.showMessageDialog(null, “图书类别不能为空”);
      return;
      }
      Booktype booktype=new Booktype(bookTypeName,bookTypeDesc);
      Connection con=null;
      try {
      con=dbutil.GetCon();
      int n=booktypedao.add(con, booktype);
      if(n==1) {
      JOptionPane.showMessageDialog(null, “图书类别添加成功”);
      resetValue();
      }else {
      JOptionPane.showMessageDialog(null, “图书类别添加失败”);
      }
      }catch(Exception e) {
      e.printStackTrace();
      JOptionPane.showMessageDialog(null, “图书类别添加失败”);
      }finally {
      try {
      dbutil.closeCon(con);
      } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      }
      }
      }
      添加成功之后还会进行表格的刷新。
      图6.5图书类别添加
      在此还设置了重置按钮可以防止数据的误操作之后进行数据的恢复。
      /
      *
    • 重置表单
      /
      private void resetValue() {
      this.bookTypeNametxt.setText("");
      this.bookTypeDesctxt.setText("");
      }
      (2)图书类别的修改主要是通过和数据库进行连接之后进行更新操作。
      /
      *
    • 图书类别修改记录 事件处理
    • @param evt
      */

    private void bookTypeUpdateActionEvent(ActionEvent evt) {
    String id=idTxt.getText();
    String bookTypeName=bookTypeNameTxt.getText();
    String bookTypeDesc=bookTypeDescTxt.getText();
    if(Stringutil.isEmpty(id)) {
    JOptionPane.showMessageDialog(null, “请选择要修改的记录”);
    return;
    }
    if(Stringutil.isEmpty(bookTypeName)) {
    JOptionPane.showMessageDialog(null, “图书类别不能为空”);
    return;
    }
    Booktype bookType=new Booktype(bookTypeName,bookTypeDesc );
    Connection con =null;
    try {
    con=dbutil.GetCon();
    int modifyNum=booktypedao.update( con, bookType);
    if(modifyNum==1) {
    JOptionPane.showMessageDialog(null, “修改成功”);
    this.resetValue();

             this.fillTable(new Booktype());} else {JOptionPane.showMessageDialog(null, "修改失败");} }catch (Exception e) { e.printStackTrace();JOptionPane.showMessageDialog(null, "修改失败");}finally {try {dbutil.closeCon(con);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}} }
    

(3)图书类别的查询与修改
图书类比的查询与修改主要涉及到的就是表单操作以及对数据的查询,修改和及时更新数据,书籍信息查询或者说是书籍检索是任何人都可以进行的操作,它不要求用户的登陆。其功能已在书籍管理模块中涉及,不同之处在于此时只用于显示,用户不可对其修改。查询时的关键字可有“书籍作者”“出版社”“书籍名称”“书籍号”“书籍简介”。
图6.6图书类别的查询与修改
/**
* 图书类别修改记录 事件处理
/
private void bookTypeUpdateActionEvent(ActionEvent evt) {
String id=idTxt.getText();
String bookTypeName=bookTypeNameTxt.getText();
String bookTypeDesc=bookTypeDescTxt.getText();
if(Stringutil.isEmpty(id)) {
JOptionPane.showMessageDialog(null, “请选择要修改的记录”);
return;}
if(Stringutil.isEmpty(bookTypeName)) {
JOptionPane.showMessageDialog(null, “图书类别不能为空”);
return;}
Booktype bookType=new Booktype(bookTypeName,bookTypeDesc );
Connection con =null;
try {
con=dbutil.GetCon();
int modifyNum=booktypedao.update( con, bookType);
if(modifyNum==1) {
JOptionPane.showMessageDialog(null, “修改成功”);
this.resetValue();
this.fillTable(new Booktype());
} else {
JOptionPane.showMessageDialog(null, “修改失败”);}
}catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, “修改失败”);
}finally {
try {
dbutil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}} }
(4)表格行点击事件主要是对上面的表格数据进行遍历按照相应的显示规则,在下面进行同步显示,此操作和后期的图书信息的添加与维护一致,后面不在描述
/
*
* 表格行点击事件处理
/
private void bookTypeTableMousePressed(MouseEvent evt) {
int row=bookTypeTable.getSelectedRow();
idTxt.setText((String)bookTypeTable.getValueAt(row, 0));
bookTypeNameTxt.setText((String)bookTypeTable.getValueAt(row, 1));
bookTypeDescTxt.setText((String)bookTypeTable.getValueAt(row, 2)); }
/
*
* 图书类别搜索事件
*/
private void bookTypeSearchActionPerformed(ActionEvent evt) {
String s_bookTypeName=this.s_bookTypeNameTxt.getText();
Booktype booktype=new Booktype();
booktype.setBooktypename(s_bookTypeName);
this.fillTable(booktype); }
(5)图书信息添加
对于本系统来说,图书信息添加和重置是最重要的功能,涉及到数据库中的两张表,考虑到查询效率和方便程度,决定建立视图查询,要求输入,图书名称,图书作者,作者性别,图书价格,图书类别,图书价格等信息 ,因为代码和之前添加 事件代码区别不大 ,这里不在赘述而采用代码的复用。
图6.7图书信息添加与重置
(6)图书资料管理是重中之重,如何有效的对数据管理,才是关键,所以采用嵌套语句和字符串拼接等方式,与数据库进行有效的连接并且同步数据 。在此用到了表格行点击事件。
图6.8图书资料管理

7测试分析报告
在测试分析的基础上,进行测试后需要对测试的结果以及测试的数据等加以记录和分析总结,它是测试过程的一个重要的环节,同时,它也是对软件性能的一个总的分析和对认识不足的说明。为以后的软件开发程序提供了丰富的经验。
系统的设计工作完成后,必须经过严格的测试才可以进行实际的应用。作为一个数据库软件,应该结合数据库本身和软件进行联合测试,即可以在软件中进行一些操作,同时在数据库中查看相关数据。下面对系统的各模块进行测试。
1 登陆模块等测试
登陆模块的测试包括登陆成功,不成功以及退出等3种情况,还需要查看登陆成功即退出后的菜单是否正常等。程序运行后,选择“系统”|“登陆”命令,弹出登陆对话框,在上面输入用户名和密码后,单击“确定”按钮。如下所示:如果输入错误的用户名或密码,则显示登陆失败。登陆后选择“系统”|“退出”命令,可看到状态栏的改变,即完成退出命令。其他的图书类别的添加修改等都是相同操作。
图7.1登陆模块及相关测试
2 书籍信息模块测试
使用管理员权限登陆后,可以对书籍信息进行管理。选择“基本资料维护”|“图书资料维护”命令,弹出书籍资料维护对话框。如果单击“添加”按钮,输入新的信息后,单击“保存”按钮保存到数据库中。如下图所示:
图7.2书记信息模块测试
上面对系统的各个模块进行了简单的测试,图示资料系统基本模块的功能是正确的。
3.性能测试及未完成的模块
在本次图书资料管理系统中测试时出现过好多BUG,
1.Java.lang.NullPointerException
首先要理解的是此错误并不会在 程序中报错,只会在运行的时候报错。
是由于某个参数(集合,数组等数据)可能出现一个null值而导致后面的程序不能运行时候报的错误,这时候我们只需要加一个判断是否为null,再去在不为空的情况下进行后续代码,这样就能解决问题。
那么在这个时候就要去查看你的程序,因为我在编写代码的时候偷懒
当报错bookkatype时直接按照引导。加了Integer booktypeId = null;
所以报错的时候我就想到了在这儿去解决。幸运的是把这儿的变量初始化赋值以后解决了错误,程序也很好的运行起来了!
现在归纳一下:报错原因
1.字符串变量未初始化;如Sting s;这时在后面的处理过程中就可能会报错。
2.接口类型的对象没有用具体的类初始化,List lt; 会报错
List lt = new ArrayList(); 则不会报错了。
剩下在调试中也出现了好多bug。但是只要掌握了问题的解决办法就不会太难。我也总结出来了解决bug的办法。
1. 细心查看异常信息,确定异常种类和相关Java代码行号;
2. 拷贝异常信息到百度,查看相关帖子,寻找解决思路;
3. 前两步无法搞定,再问同学或老师;
4. 前三步无法搞定,去学习 底层只是,由于目前课设时间短可以注释了,后期解决。
很多同学碰到异常一下就慌了,立刻开始请教别人搬救兵,殊不知这样做有两大坏处。第一、太不尊重别人,把别人当苦力。第二、失去提高自我的机会,自己解决一个异常,就意味着有能力解决一类异常。解决一类异常能大大提高自身能力。

总结
这次课程设计的设计时间比较紧迫,所以我们组成小组共同完成此次课程设计。在这次课程设计中我们遇到了很多问题,我们通过网上查询以及咨询同学对各种问题有了简单的了解,基本上完成了此次课程设计的任务。数据库作为现代数据管理最先进的手段,掌握数据库系统设计的基本方法和步骤是对现代软件开发人员的基本要求。本次通过一个小型图书资料管理系统的设计,了解了数据库系统开发的基本知识。本次课程设计让我们学到了许多知识,受益匪浅。了解了如何利用JDBC技术对数据库进行操作,如连接数据库以及如何利用程序将数据库中的信息以界面的形式显示出来,同时掌握了界面设计的一些方法和技巧,对Java语言的使用更加深入。对书本上学到的SQL语句的使用也更加熟悉。真正做到了把书本上学到的知识应用到实践中来。对我们的动手能力和团队合作能力都有所加强。在编写程序方面,学会了规范化的编程方法,例如按功能将一组代码放在一起,并添加注释,方便自己和他人阅读。
不过本次课程设计中也出现了许多问题,例如数据库没有连接上,操作无法进行,对各个界面的设计还不够完善,系统的功能还不够强大等等,在老师的帮助和小组成员的不懈努力下,大部分问题得到了解决。本次课程设计只是一个小型系统的研究,并没有考虑运行效率等方面的诸多问题,我们还可以对这些方面进行研究和实现,或者在此基础上增加新的功能,使系统的可用性更为强大。

参考文献
[1] 王珊.数据库系统概论(第四版)[M].高等教育出版社.2014.12
[2] 刘金岭.数据库原理及应用实验与课程设计指导[M].清华大学出版社出版.2010.6
[3] 钱雪忠.数据库原理及技术课程设计(全新正版)[M].清华大学出版社出版.2009.2
[4] 周屹.数据库原理及开发应用-实验与课程设计指导[M]. 清华大学出版社出版.2008.12
[5] 李春葆.Visual Basic数据库系统设计与开发[M].清华大学出版社出版.2003.8
[6] 唐红亮.SQL Server数据库设计与系统开发教程[M].清华大学出版社出版.2007.10
[7] 丁忠俊.数据库系统原理及应用[M].清华大学出版社出版.2012.4
[8] 李晓峰.数据库系统原理及应用[M].水利水电出版社.2011.2
[9] 万常选.数据库系统原理与设计(第2版) [M].清华大学出版社出版.2012.9
[10] 冯健华.数据库系统设计与原理(第2版)[M].清华大学出版社出版.2012.8

致谢
本次《数据库系统》的课程设计学习中,老师严谨的治学态度、丰富渊博的知识、精益求精的工作态度以及侮人不倦的师者风范是我终生学习的楷模,谢谢老师在大的方向上进行指导,感谢老师在课程设计过程中对我的关系图ER图的指导,让我茅塞顿开,虽然有浏览器的帮助 ,但是在某些方面老师给的指导更多。教会了我专业知识,教会了我如何学习,教会了我如何做人。正是由于他们,我才能在各方面取得显著的进步,在此向他们表示我由衷的谢意。 
另外,感谢校方给予我这样一次机会,能够独立地完成一个课程设计,并在这个过程当中,给予我们各种方便,使我们在这学期快要结束的时候,能够将学到的知识应用到实践中,增强了我们实践操作和动手应用能力,提高了独立思考的能力。 
在这次课程设计的撰写中,我得到了许多人的帮助。首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次设计的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计上的难题。 
最后再一次感谢所有在设计中帮助过我的良师益友和同学。 图书资料管理系统

图书资料管理课程设计(附源码和连接)相关推荐

  1. 基于SSM框架图书管理系统开发与设计(附源码资料)-毕业设计

    文章目录 1. 适用人群 2. 你将收获 3.项目简介 4.技术实现 5.系统功能 5.1.管理员身份登录 5.1.1.登录 5.1.2.管理员登录首页 5.1.3.借阅管理 5.1.4.图书管理 5 ...

  2. Java实践课程设计附源码和sql脚本(物流管理系统)

    声明:本课程设计比较简陋,系统功能模块也相较简单,仅供参考学习哦. 需要源码的可联系本博主QQ:194242960: 需要其他课程设计项目可以关注VX公众号:"学长源码" 课程选题 ...

  3. C语言 自动排课系统课程设计(附源码,实验报告)

    学校教务的管理作为高校教育信息化工作中的一项重要工作,如何构建一个具有开放性.实用性和灵活性的平台,是一个值得探讨的课题.其中,作为学校教务重点环节之一的排课系统也尤为重要.以前,在统筹安排各班级上课 ...

  4. 原生前端实现响应式个人简历网站设计(附源码)

    目录 网站站点 所用技术 实现功能 视频展示 源码 网站站点 胜烨的个人网站 所用技术 HTML css JavaScript 实现功能 响应式界面设计 捕捉用户操作 明暗模式 服务器部署 视频展示 ...

  5. 医院疫情管理系统-数据库课程设计(源码+数据库+报告全套)

    自己结合网上相关的知识做的数据库课程设计-医院管理系统(疫情),时间非常非常短暂做的比较粗糙,该版本为学院课设答辩之前,答辩时老师给了一些完善意见,但是没有时间去修改.... eclipse + SQ ...

  6. java计算机毕业设计高校学生资助管理信息系统(附源码、数据库)

    java计算机毕业设计高校学生资助管理信息系统(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ecli ...

  7. 返修售后服务管理网站设计与源码

    作者:王先荣     去年帮朋友做了返修与售后服务管理相关的网站,现在将返修与售后服务的设计及源码开放出来.本文没有技术含量,高手请无视,还请海涵.如果您初 学.net,可以下载源码看看我是怎么写的. ...

  8. 学生管理系统(课程设计附带源码)

    1. 问题要求及任务描述 1.1. 题目要求 学生管理系统 对学生信息管理系统,要求完成以下基本任务: 改写程序为良好程序风格(文档注释,函数注释,语句注释). 将功能补充完全(基于文件处理,完成刷新 ...

  9. 手把手教你使用FineUI开发一个b/s结构的取送货管理信息系统(附源码+视频教程(第9节))...

    一 本系列随笔概览及产生的背景 近阶段接到一些b/s类型的软件项目,但是团队成员之前大部分没有这方面的开发经验,于是自己选择了一套目前网上比较容易上手的开发框架(FineUI),计划录制一套视频讲座, ...

最新文章

  1. java restfulapi 返回文件base64_Java反序列化:一次构造后Ysoserial Payload
  2. Matlab参考函数
  3. Vue—上手实践—快速入门
  4. JS 动态创建元素、删除元素、替换元素、修改元素
  5. 2021-04-13 Linux I/O模型
  6. 为什么企业宁愿花 15K 重新招人,也不愿意花 10K 留住老测试员?
  7. python能做什么-python能干嘛
  8. 利用定时器中断方式控制led灯的闪烁速度_实验四 LED点阵
  9. Linux中把程序添加到系统服务中
  10. JS根据身份证号码获取性别
  11. 【虚拟机】VMWare虚拟机中大小写切换失效的解决方法
  12. Dexpot 虚拟桌面软件(推荐)
  13. html读取指定excel,怎样用html读取excel数据
  14. linux自动wifi断开重连,49.Linux-wpa_cli使用之WIFI开启,扫描热点,连接热点,断开热点,WIFI关闭(49)...
  15. Allegro如何使用快捷键快速切换走线线宽操作指导
  16. Conda太慢 试试这个加速工具
  17. RV1109_RV1126 EVB板使用总结
  18. python 多线程下载_Python3 多线程下载代码
  19. 计算机上的查找替换功能快速格式化,Word2013文档中使用查找和替换功能来快速更改文本格式的方法...
  20. Spring Boot 大型线上商城项目实战教程

热门文章

  1. layui关闭表格编辑_告别复制粘贴,表格再多也能快速合并!
  2. 合成孔径成像算法与实现_浅析太赫兹成像技术在消防领域中的应用前景
  3. 小甲鱼python课后题答案_小甲鱼python视频教程下载|小甲鱼零基础学python视频教程附习题答案_ - 极光下载站...
  4. linux指令popd,Linux切换目录pushd、popd、dirs命令
  5. prometheus的搭建与使用
  6. java什么是最终类型_golang和java,谁才是最终答案?
  7. pagerank公式的理解
  8. 服务器保存excel文件慢,从使用IE的服务器缓慢地保存Excel文件
  9. java 乐观锁 实例_JAVA乐观锁实现-CAS(示例代码)
  10. php的exportexcel,PHPExcel export网络或本地图片到excel