图书管理系统java课程设计报告

滨江学院

 Java程序设计实习

课程设计

题目   图书管理系统                       

学生姓名       张立檑         

           20112346035    

            滨江学院       

专业年级      11网络工程1    

指导教师       方忠进          

二O一三  6   20


目   录

第1章  引  言.................................................................................................................................. 1

第2章 系统功能介绍........................................................................................................................ 2

2.1系统功能总框图..................................................................................................................... 2

2.2 模块功能介绍........................................................................................................................ 2

2.2.1 管理员模块功能介绍.................................................................................................. 2

2.2.2 读者管理...................................................................................................................... 3

2.2.3书籍管理模块功能介绍............................................................................................... 3

2.2.4 书籍借阅与归还功能介绍.......................................................................................... 4

2.2.5 借阅超时功能介绍...................................................................................................... 4

第3章 数据库设计............................................................................................................................ 5

3.1 数据库需求分析.................................................................................................................... 5

3.2 数据库概念结构设计............................................................................................................ 5

3.3 数据库表的设计.................................................................................................................... 6

第4章 系统功能实现........................................................................................................................ 8

4.1 管理员模块功能实现............................................................................................................ 8

4.1.1 管理员登陆.................................................................................................................. 8

4.1.2 管理日志.................................................................................................................... 10

4.1.3 管理员添加功能实现................................................................................................ 11

4.1.4 管理员切换................................................................................................................ 13

4.2 读者管理模块功能实现...................................................................................................... 14

4.2.1 读者添加.................................................................................................................... 14

4.2.2 读者修改.................................................................................................................... 15

4.2.3 读者查询.................................................................................................................... 17

4.2.4 读者删除.................................................................................................................... 18

4.3 书籍管理模块功能实现...................................................................................................... 19

4.3.1 新书入库实现............................................................................................................ 19

4.3.2查询功能实现............................................................................................................. 21

4.4 书籍借阅与归还功能实现.................................................................................................. 23

4.4.1 借阅书籍功能实现.................................................................................................... 23

4.4.2 归还书籍功能实现.................................................................................................... 25

4.5 借阅超时功能实现.............................................................................................................. 28

参考文献............................................................................................................................................ 32


第1章  引    言

随着信息技术的发展,计算机已被广泛的应用于社会的各个领域,成为推动社会发展的技术动力。而在计算机应用中,软件的作用十分突出,软件已经发展成为信息技术的核心,主导着信息产品的开发和信息技术市场的进一步的开拓。软件产业已成为社会信息化进程中的一个战略性产业。在软件技术的应用中软件的开发技术尤其是应用型软件产品的开发技术成了重中之重。不断开发适应用户需求、市场需要的新型软件产品。尤其是在校园里,各种软件的应用无处不在,为我们的学习和生活提供了方便。学校的图书馆不仅给我们提供看书学习的地方,还给我们提供了一套功能齐全的图书馆系统,方便我们搜索书籍、借阅图书。

我们本次的Java课程设计的最终目标是实现一个图书馆管理系统,使其具有一般图书管理系统所具有的功能,可以实现管理员日志、管理员添加、管理员退出、读者添加、读者修改、读者查询、读者删除、新书入库、书籍查询、书籍借阅与归还等功能。因为Java是一门很优秀的编程语言,具有面向对象、与平台无关、安全、稳定和多线程等特点,所以用Java编程为我们本次程序的编写提供了方便。在设计中我们主要进行了数据库及类的设计,把整系统分成了15个类和5个表。通过应用awt、swing、sql、util等包,合理的添加了按钮、菜单、文本框、文本区、表格等组件类,还包含窗口、面板等容器类,经过设计者合理的布局,完成了窗体的设计,并通过建立JDBC-ODBC桥接器连接到Access数据库后,向数据库发送SQL语句实现程序与数据库中表间的消息通信,从而实现了相应的图书馆管理系统的功能。

本文主要分为绪论、系统功能介绍、数据库需求分析、系统功能实现、结论、致谢、参考文献7大块。在绪论中介绍了本次课设选题的缘由及思想。系统功能介绍中详细介绍了本图书管理系统的整体思想及其具体功能。在数据库需求分析中详细说明了数据库的需求分析、概念设计及表的设计。在系统功能实现中主要通过抓图来体现设计的结果。总之,我们的整体设计思想均在报告中体现。

关键词: 图书馆管理系统,Java程序设计语言,Access数据库


第2章 系统功能介绍

2.1系统功能总框图 

图书馆管理系统功能总框图,如图2-1所示。


图2-1 系统功能框架图

2.2 模块功能介绍

2.2.1 管理员模块功能介绍

1. 管理员登陆

此模块主要是利用MenuBar添加菜单条,利用Menu和MenuItem添加菜单和菜单的各个参数,通过事件ActionEvent 可以实现进入各个模块如管理日志、管理员添加、管理员切

换、读者添加、读者修改、读者查询、读者删除、新书入库、书籍查询、借阅书籍、归还书

籍、借阅超时及退出的功能。

2. 管理日志

此模块可以清楚的显示出书籍借阅与归还的信息,包括书号、书名、图书证号、借/还、操作日期、已付款额。读者可以通过此模块实现的功能清楚的了解图书被借阅和归还的详细信息,从而给读者带来了很多方便。

3. 管理员添加功能介绍

此模块功能是增加新管理员的登陆帐户。在图书馆管理系统中必须有每一个管理者的帐户让其可以正常进行新图书证的办理、借阅书籍和归还书籍等系统管理。所以在管理员功能模块中增加了管理员添加这个功能。

4. 管理员切换

此模块的主要功能是进行管理员之间的切换,即单击管理员菜单下的管理员切换,就会退出当前管理员界面,从而出现管理员切换窗口,而另一管理员就可以在管理员切换窗口中的用户名和密码两栏中通过输入自己的用户名和密码直接进入该系统。

2.2.2 读者管理

1. 读者添加

此模块主要的实现功能是添加新的读者信息,即当有新的读者要看查看本图书馆中的书藉,可以通过此功能实现,当数据库中存在其新信息,即成为本图书馆的新一位读者。其中信息分别包括图书证号、学生姓名、性别、系别、班级,同时可有三项功能在此处实现,即添加、重置以及返回。

2.读者修改

此模块主要的实现功能对有信息更新的读者进行即时修改,以随时更新读者在数据库中的信息。本模块通过图书证号确定读者,可对读者信息的新图书证号、学短姓名、性别、系别、班级。此处可分别实现对该功能的修改、重置、返回。

3. 读者查询

此模块主要可对所要了解的读者信息。即把读者的信息从数据库调出来,显示在该窗口中的文字区域。查询方式分别有按图书证查询、按姓名查询、按班级查询、按年级查询,并可通过办理入相应的关键字,更加缩小查询范围。此处可实现查询和返回功能。

4. 读者删除

此模块可以删除一些不再使用本系统的读者资料,从而达到对数据库中的清理,即清除一些不必要资料,此处有四种删除途径,分别为按图书证号删除、按姓名删除、按班级删除、安年级删除,并可通过所输入的关键字尽快找到所要删除的资料。此处可分别实现对该功能的修改、重置、返回。

2.2.3书籍管理模块功能介绍

1. 新书入库功能介绍

此模块主要的实现功能是将新来的图书输入到图书馆管理系统的书库当中,其中主要按如下信息往书库中输入,这部分的操作主要是便于书库合理的管理,有利于读者能够对新书有

一个更详细的了解。其中包括如下信息:新书书号、新书名称、新书出版日期、新书出版社、入库数量、编写作者、新书单价。

2. 书籍查询功能介绍

在图书馆管理系统中书籍查询是最基本的功能,读者可以根据自己的需求来查询想要借阅的书籍。本系统是用Java应用程序和Access数据库一起开发的其中利用Java来编程实现功能的代码和布置运行界面。界面是由检索项、检索词和显示文本区三个部分组成的用户根据自己的需要在检索项中选择自己所要按什么字段进行查询,其中书籍查询功能的检索项中可以按书号查询、按书名查询、按作者名查询、按出版社查询、按入库时间查询等基础查询。选择检索项后用户只要在检索词中添写自己所要查询的内容并确定键确认后用户要查询的内容就可以在显示文本区中显示出来。用户可以根据显示的信息得知自己所要借阅书籍的情况。

2.2.4 书籍借阅与归还功能介绍

1. 借阅书籍功能介绍

此模块主要实现读者可凭有效的图书证号,借阅图书馆内未借出的图书。

输入图书证号后,可显示了该图书证持有者的全部信息(包括借书证号、姓名、性别、所在班级、所属系部、当前可借阅图书个数),供读者确认信息。通过输入有效的图书编号,查询该图书的全部信息(包括书号、书名、作者、出版社、是否借出、价格)。借阅成功后,将该图书证号、书号、借阅日期、应还日期信息插入到数据库的表中进行记录。

2. 归还书籍功能介绍

此模块主要实现读者凭所要归还图书的图书证号归还图书。

输入所要归还的图书编号后,可显示了该图书证持有者的全部信息(包括借书证号、姓名、性别、所在班级、所属系部、当前可借阅图书个数),供读者确认信息。还书成功后,从数据库中删除该书的借出记录,并修改数据库中的相应信息。

2.2.5 借阅超时功能介绍

此模块主要实现显示过期图书的信息(包括图书证号、书号、借阅日期、应还日期)提醒读者还书。


第3章 数据库设计

在此图书馆管理系统中,使用到了一个重要的连接,即与数据库Accesss相连。数据库中存有图书馆中所信息,包括读者信息、管理员资料、借阅与退还记录。所有与管理有关的数据皆在其中,是保证系统能够正常实现各种功能的一架桥。

3.1 数据库需求分析

⒈ Admi表,即管理员表,记录了用户名和密码。

⒉ Admirz表,即管理日志表,记录了书号、书名、图书证号、借/还、操作日期、已付款额。

⒊ book表,即图书表,记录了书号、书名、作者、出版社、入库时间、是否借出、价格。

⒋ borrowbook表,即借阅表,记录了图书证号、书号、借阅日期、应还日期。

⒌ person表,即读者表,记录了图书证号、姓名、性别、系别、班级。

3.2 数据库概念结构设计

图书馆管理系统E-R图,如图3-1。

图3-1 图书馆管理系统E-R图

3.3 数据库表的设计

⒈Admi表

表中记录了可以使管理员进入该系统的用户名及密码,如表3-1所示。

表3-1 管理员信息表

⒉Admirz表

表中记录借还书日志,用于存下所有对图书操作的记录,以便以后可以翻阅和查找,如表3-2所示。

表3-2 管理日志表

⒊book表

表中记录了库内所有图书的所有资料,如表3-3。

表3-3 图书表

⒋person表

表中记录库中所有读者的相关信息,如表3-4所示。

表3-4 读者表

⒌borrowbook表

表内记录了此时图书的借阅情况,如表3-5所示。

表3-5 借阅表


第4章 系统功能实现

4.1 管理员模块功能实现

4.1.1 管理员登陆

此模块是整个系统最主要的部分,管理员可以通过此模块实现进入其余各个模块如管理日志、管理员添加、管理员切换、读者添加、读者修改、读者查询、读者删除、新书入库、书籍查询、借阅书籍、归还书籍、借阅超时及退出的功能。

主要程序代码如下:

              public void actionPerformed(ActionEvent e)

          {

              if(e.getSource()==itemAdmiqh)

              {

                     this.dispose();

                     In winin=new In("系统登陆");

              }

              if(e.getSource()==itemtc)

              {

                     System.exit(0);

              }

              if(e.getSource()==itemAdmixj)

              {

                     CreatAdmi creatAdmi=new CreatAdmi("管理员添加");

              }

              if(e.getSource()==itemAdmirz)

              {

                     WinTable wintable=new WinTable("管理日志");

              }

              if(e.getSource()==itemBookrk)

              {

                     AddInfy addInfy=new AddInfy();

              }

              if(e.getSource()==itemPersonlr)

              {

                     Winpersonadd winperson=new Winpersonadd("读者添加");

              }

              if(e.getSource()==itemPersoncx)

              {

                     Winpersonsearch winperson=new Winpersonsearch("读者信息查询");

              }

              if(e.getSource()==itemPersonxg)

              {

                     Winpersonmodify winperson=new Winpersonmodify("读者信息修改");

              }

              if(e.getSource()==itemPersonsc)

              {

                     Winpersondelete winperson=new Winpersondelete("读者删除");

              }

              if(e.getSource()==itemBookcx)

              {

                     Windowjj ok=new Windowjj();

              }

              if(e.getSource()==itemchaoshi)

              {

                     day win=new day();

              }

              if(e.getSource()==itemBorrowjs)

              {

                     Borrowbook win=new Borrowbook();

              }

              if(e.getSource()==itemBorrowhs)

              {

                     Returnbook win=new Returnbook();

              }

         }

4.1.2 管理日志

此模块通过定义类WinTable继承顶层容器JFrame,再添加普通容器 JScrollPane、Jpanel,然后通过BorderLayout布局创建界面,最后主要通过数组利用while循环在连接好的数据库中查找表Admirz中的内容,从而实现了可以清楚的显示出书籍借阅与归还信息的功能。

主要程序代码如下:

WinTable(String s)

      {

             super(s);

             try {       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                           }

                    catch(ClassNotFoundException e)

                           {     System.out.println(""+e);

                           }

                    try {       con=DriverManager.getConnection("jdbc:odbc:sun","123","123");

                                  sql=con.createStatement();

                                  rs=sql.executeQuery("SELECT * FROM Admirz");

                                  while(rs.next())

                                  {

                                         k++;

                                  }

                           }

                    catch(SQLException e)

                           {     System.out.println(""+e);

                           }

                    try {       con=DriverManager.getConnection("jdbc:odbc:sun","123","123");

                                  sql=con.createStatement();

                                  rs=sql.executeQuery("SELECT * FROM Admirz");

                           a=new Object[k][6];

                           while(rs.next())

                           {

                                  for(int j=0;j<6;j++)

                                  {

                                         if(j<5)

                                         a[i][j]=rs.getString(j+1);

                                         else

                                         {

                                                a[i][j]=rs.getDouble(j+1);

                                                i++;

                                         }

                                  }

                           }

                    con.close();

                           }

             catch(SQLException e)

                    {     System.out.println(""+e);

                    }

                           table=new JTable(a,name);

             Container con=getContentPane();

             getContentPane().add(new JScrollPane(table),BorderLayout.CENTER);

             setBounds(120,125,700,500);

             setVisible(true);

             validate();

             addWindowListener(new DisposeListener());

      }

}

4.1.3 管理员添加功能实现

功能介绍:该程序主要实现管理员的添加,以便于让实行对图书管理员的管理。按照标

签提示输入信息,然后点击确定按钮。首先判断管理员名文本框中输入的文本信息是否符合大于3个字符并小于10个字符的规则,如果不符合规则,则提示错误,如果符合规则,再到Admi表中进行查询,如果相同则用提示框提示错误。若无相同则可注册。但还需要保证前后两次的密码相同,才能成功注册,

主要程序代码如下:

    public void actionPerformed(ActionEvent c)

       {

              String b=textUser.getText();

              String d=textPassword1.getText();

              String g=textPassword2.getText();

              if(c.getSource()==buttonqk)

              {     textUser.setText(null);

                     textPassword1.setText(null);

                     textPassword2.setText(null);

              }

              if(c.getSource()==buttonEnter||c.getSource()==textPassword2)

              {

                    

                     if(b.length()<3||b.length()>10)

                     {

                            JOptionPane.showMessageDialog(null,"用户名应在3~10个字符之间");

                            textUser.setText(null);                           

                     }

                     else

                     {

                     try {       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                            }

                     catch(ClassNotFoundException e)

                            {     System.out.println(""+e);

                            }

                     try {       con=DriverManager.getConnection("jdbc:odbc:sun","123","123");

                                   sql=con.createStatement();

                            rs=sql.executeQuery("SELECT * FROM Admi WHERE 用户名="+"'"+b+"'");

                                   if(rs.next())

                                   {

                                          String user=rs.getString(1);

                                          if(b.equals(user))

                                          {

                                             JOptionPane.showMessageDialog(null,"此管理员已被注册","警告",JOptionPane.WARNING_MESSAGE);

                                          }

                                   }

                                   else

                                   {

                                          if(d.equals(g))

                                          {

sql.executeUpdate("INSERTINTOAdmi VALUES"+"("+"'"+b+"'"+","+"'"+d+"'"+")");

                                                 this.dispose();

                                                 JOptionPane.showMessageDialog(null,"管理员注册成功");

                                           }

                                    else JOptionPane.showMessageDialog(null,"两次输入密码不一致","警告",JOptionPane.ERROR_MESSAGE);

                                   }

                        con.close();

                            }

                catch(SQLException e)

                     {     System.out.println(""+e);

                     }

              }}

       }

4.1.4 管理员切换

此模块功能是退出当前管理员界面,进入管理员切换窗口,另一用户可以通过输入自己的用户名和密码直接进入该系统。但此用户名和密码都必须与已经连接好的数据库中表Admi中的用户名和密码相吻合。

主要程序代码如下:

public void windowClosing(WindowEvent e)

      {

             e.getWindow().dispose();

      }

4.2 读者管理模块功能实现

4.2.1 读者添加

功能介绍:添加新的读者,使其能够进入图书系统阅览图书,

主要程序代码如下:

 public void actionPerformed(ActionEvent e)

      {

            

             if(e.getSource()==button1)        // 添加

             {

                   

                    String ch=text1.getText();

                    if(ch.length()!=5){

                           JOptionPane.showMessageDialog(null,"请输入5位图书证号!");

                           text1.setText(null);                         

                    }

                    else{

                           ……//连接数据库

                                  String number,name,sex,dept,classes,record,insertStr;

                                  number=text1.getText();

                                  name=text2.getText();

                                  if(box1.getState()==true)

                                 

{

                                         sex=box1.getLabel();

                                  }

                                  else

                                  {

                                         sex=box2.getLabel();

                                  }

                                  dept=text3.getText();

                                  classes=text4.getText();

                                 

                                  rs=sql.executeQuery("SELECT * FROM person WHERE 图书证号="+"'"+number+"'");

if(rs.next()){

JOptionPane.showMessageDialog(null,"此图书证号已存在","警告",JOptionPane.WARNING_MESSAGE);

text1.setText(null);

                         }                  

     record="("+"'"+number+"'"+","+"'"+name+"'"+","+"'"+sex+"'"+","+"'"+dept+"'"+","+"'"+classes+"'"+")";

                                  insertStr="INSERT INTO person VALUES"+record;

                                  sql.executeUpdate(insertStr);

                          JOptionPane.showMessageDialog(null,"添加成功!");

                                  con.close();

}

4.2.2 读者修改

功能介绍:对读者需要修改的资料进行重定义,

主要程序代码如下:

public void actionPerformed(ActionEvent e)

     

  {

             if(e.getSource()==button1)    //修改

             {

                    String ch=text1.getText();

                    if(ch.length()!=5){

                           JOptionPane.showMessageDialog(null,"请输入5位图书证号!");

                           text1.setText(null);                         

                    }else{

                           try

                           {

                                ……//连接数据库

                                  String number,name,sex,dept,classes,newnum,record,updateStr;

                                  newnum=text5.getText();

                                  number=text1.getText();

                                  name=text2.getText();

                                  if(box1.getState()==true)

                                  {

                                         sex=box1.getLabel();

                                  }

                                  else

                                  {

                                         sex=box2.getLabel();

                                  }

                                  dept=text3.getText();

                                  classes=text4.getText();

                                  sql=con.createStatement();

                                  rs=sql.executeQuery("SELECT * FROM person where 图书证号="+"'"+newnum+"'");

                                 

                                  if(rs.next()){

                                         rs1=sql.executeQuery("SELECT * FROM person where 图书证号="+"'"+number+"'");

                                         if(rs1.next()){

                                                JOptionPane.showMessageDialog(null,"此图书证号已存在","警告",JOptionPane.WARNING_MESSAGE);

                                                text1.setText(null);

                                         }else

                                         {

updateStr="UPDATE person SET 图书证号="+"'"+number+"'"+","+"姓名="+"'"+name+"'"+","+"性别="+"'"+sex+"'"+","+"系别="+"'"+dept+"'"+","+"班级="+"'"+classes+"'"+"WHERE 图书证号="+"'"+newnum+"'";

                                                sql.executeUpdate(updateStr);

                                                JOptionPane.showMessageDialog(null,"修改成功!");

                                         }

                                  }

                                  else

                                  {

                                         JOptionPane.showMessageDialog(null,"查无此人!");

                                  }

           ……//连接数据库

                                  con.close();

                           }

4.2.3 读者查询

功能介绍:可以对数据库中已有的读者信息进行查询。

主要程序代码如下:

public void actionPerformed(ActionEvent e)

          {           

              if(e.getSource()==button1 || e.getSource()==text){                    // 查询

                     area.setText(null);

                     if((str=="按图书证号查询" || str==null) && text.getText()!=null)

                     {

                            boolean flag=true,f=true;

                            String num=text.getText();

                            ……//连接数据库

                                  

rs=sql.executeQuery("SELECT * FROM person where 图书证号="+"'"+num+"'");

                                while(rs.next())

                                   {

                                          f=false;

                                          String number=rs.getString("图书证号");

                                          String name=rs.getString("姓名");

                                          String sex=rs.getString("性别");

                                          String dept=rs.getString("系别");

                                          String classes=rs.getString("班级");

                                          if(flag){

                                                 area.append("图书证号为"+num+"的学生信息如下:");

                                                 flag=false;

                                          }

                                          area.append("\n姓名:"+name+"   性别:"+sex+"   系别:"+dept+"   班级:"+classes+"\n");

                                   }

                                   if(f){area.append("查无此人!");}

                            }

                            catch(SQLException c)

                            {

                                   System.out.println(c);

                            }

                     }

4.2.4 读者删除

功能介绍:删除数据库中已有信息。

主要程序代码如下:

if(e.getSource()==button1){           // 删除

area.setText(null);

if((str=="按图书证号删除" || str==null) && text.getText()!=null) {

String num=text.getText();

try

{

                                  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}

catch(ClassNotFoundException c)

{

System.out.println(""+c);

}

……//连接数据库

rs=sql.executeQuery("SELECT * FROM person where 图书证号="+"'"+num+"'");

if(rs.next()){

area.append("该信息已删除!");

}

String delStr="DELETE FROM person WHERE 图书证号="+"'"+num+"'"; 

sql.executeQuery(delStr);

con.close();

}

catch(SQLException c)

{

System.out.println(c);

}

}

4.3 书籍管理模块功能实现

4.3.1 新书入库实现

功能介绍:此界面主要完成的功能是往数据库book表中添加新书的记录,在book表中可查看最新的记录。在新书信息输入的过程中,会出现一些异常处理,如某个字段的信息没有填写;新书信息输入字段的过程中,输入的字段类型与给定的字段类型与输入不匹配(如:货币、日期);输入的信息长度超过给定的字段长度等。如果填写的内容正确则可以成功将新书添加入库。

主要程序代码如下:

    public void actionPerformed(ActionEvent c)

  {       if (c.getSource()==button2)

      {     this.dispose();}

      if (c.getSource()==button1)

      {    

……//连接数据库

rs=stm.executeQuery("select 书号 from book where 书号='" +textField1.getText() + "'");

if (rs.next())

{

JOptionPane.showMessageDialog(null, "此书号已存在!", "警告",JOptionPane.WARNING_MESSAGE);

                                  return;

                           }

                           float m;

                           String str1,str2,str3,str4,str6,str7,str8,str9,str10;

                           str1=textField1.getText();

                           ……

                           str10="未借出";

                           m=Float.parseFloat(str9);        

                     str="("+"'"+str1+"','"+str3+"','"+str8+"','"+str6+"','"+str7+"','"+str10+"',"+m+")";

String insert="INSERT INTO book(书号,书名,作者,出版社,入库时间,是否借出,价格) VALUES"+str;

                           stm.executeUpdate(insert);

                           textField1.setText("");

                           ……

                           JOptionPane.showMessageDialog(null, "增加信息成功!");

                           con.close();

                    }

catch (Exception e){JOptionPane.showMessageDialog(null, "请认真检查各项!

然后重试.", "异常警告",

           JOptionPane.WARNING_MESSAGE);

}          

       }

4.3.2查询功能实现

功能介绍:本系统包含两项一是检索项令一个是检索词,在检索项中用户可以根据自己

的需求来选择所要查询的项目并在检索词中添写自己所要查询的内容。本系统副带四个按钮:确定、取消、查看全库。

在该系统中为了用户使用方便还设有查看全库一项,用户可以通过这一功能来查看全库的图书,所查询的内容将在下方的文本区中显示。


使用检索词必须得满足一定的查询条件才可以执行,用户必须得在检索项中选择查询方式并添好检索词才可查询否则系统会显示未找到您要查找的内容并给以提示。

主要程序代码如下:

public void itemStateChanged(ItemEvent e)

       { 

                area.setText(null)  ;

                String name=choice1.getSelectedItem();        

                area.append( "                 请您在检索项中输入您要查找的内容  : ");

       }         

      public void actionPerformed(ActionEvent e)

      {

              if (e.getSource()==button2)              //取消键

                 {    text1.setText(null);}

          else if (e.getSource()==button3)        //返回键

                  {   this.dispose(); }

else if (e.getSource()==button4)       // 查看全库                        

             {    Connection con;

                   Statement  sql;

                 ResultSet rs;

                      try                                          //建立数据源

                          { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}

                       catch(ClassNotFoundException c)

                             {System.out.println(""+c);}

                try

                          {

                                con=DriverManager.getConnection("jdbc:odbc:sun","","");

                                sql=con.createStatement();                                             

                      rs=sql.executeQuery("select * from book ");                                      

                                  while   (rs.next())                            

                                {

                                       String bookname=rs.getString("书名");

                                       String auther=rs.getString("作者");

                                       String chubanshe=rs.getString("出版社");

                                       String bookno=rs.getString("书号");

                                    String data=rs.getString("入库时间");

                                       String yesorno=rs.getString("是否借出");                                                                      area.append("\n书号:"+bookno);                                     

                                area.append("   书名:"+bookname);                                                                            area.append("   作者:"+auther);                                         

                                          area.append("   出版社:"+chubanshe);                 


                                                   

                       area.append("   \n入库时间:"+data);                                                   area.append("   是否借出:"+yesorno);                                                            }

                                 con.close();                                   

                        }                        

                        catch(SQLException c)

                              { System.out.println(""+c);}

              }  

4.4 书籍借阅与归还功能实现

4.4.1 借阅书籍功能实现

输入图书证号“0001”后点击查看按钮,可显示该读者信息,若输入图书证号错误,点击查看按钮则会弹出借书证错误对话框,如图4-13所示。输入图书编号“0000003”按回车键,可显示该图书信息,若输入图书编号错误,按回车键则会弹出图书编号错误对话框,如图4-14所示。点击借阅按钮则会弹出图书借阅成功对话框。

主要程序代码如下:

 public void actionPerformed(ActionEvent e)

      {

             if(e.getSource()==tj)

             {

                    if(!tscard.getText().equals(null)&&!tsid.getText().equals(null))

                    {

                           String str1,str2;

                           str1=tsid.getText();

                           str2=tscard.getText();              

                           try

                           {

                                  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                           }

                           catch(ClassNotFoundException c)

                           {

                                  System.out.println(""+c);

                           }

                           ……//连接数据库

                                  rs=sql.executeQuery("SELECT * FROM person where 图书证号="+"'"+str2+"'");

                                  String ls1=null,ls2=null,ls3=null;

                                  int is1=0;

                                  if(rs.next())

                                  {

                                         ls2=str2;

                                  }

                                  con.close();

                                  ……//连接数据库

                                  rs=sql.executeQuery("SELECT * FROM book where 书号="+"'"+str1+"'");

                                  if(rs.next())

                                  {

                                         if(rs.getString("是否借出").equals("未借出"))   

                                         ls1=str1;

                                         ls3=rs.getString("书名");

                                  }

                                  con.close();

                                  ……//连接数据库

                                 

rs=sql.executeQuery("SELECT count(书号) FROM borrowbook where 图书

证号="+"'"+str1+"'");

                                  rs.next();

                                  is1=rs.getInt(1);

                                  con.close();

                                  ……//连接数据库

                                  if(ls1==str1&&ls2==str2&&is1<5)

                           {  Date da=new Date();

                                  int y=da.getYear()+1900;

                                  int m=da.getMonth()+1;

                                  int d=da.getDate();

                    String jyrq=String.valueOf(y)+"-"+String.valueOf(m)+"-"+String.valueOf(d);

                                         ……//计算借阅时间

                                     String yhrq=String.valueOf(y)+"-"+String.valueOf(m)+"-"+String.valueOf(d);

     String insertstr="INSERT INTO borrowbook VALUES ('"+ls2+"','"+ls1+"','"+jyrq+"','"+yhrq+"')";

         String updatestr="UPDATE book SET 是否借出='借出' WHERE 书号="+"'"+str1+"'";

  String insertstr2="INSERT INTO Admirz VALUES('"+ls1+"','"+ls3+"','"+ls2+"','借书','"+jyrq+"',0)";

                                         sql.executeUpdate(insertstr);

                                         sql.executeUpdate(insertstr2);

                                         sql.executeUpdate(updatestr);

JOptionPane.showMessageDialog(this,"借阅成功请在"+yhrq+"之前退还,否则将支付滞纳金","图书借阅成功 ",JOptionPane.WARNING_MESSAGE);

tsid.setText(null);

                                         tscard.setText(null);

                                  }

             

4.4.2 归还书籍功能实现

输入图书编号“0000003”点击回车键,则该界面右侧会显示借书者的信息,若图书编号错误则会弹出图书编号错告对话框,如图4-16所示。点击还书按钮会弹出归还成功对话框。归还书籍功能的具体实现。

主要程序代码如下:

public void actionPerformed(ActionEvent e)

{

if(e.getSource()==tj)

        {

                    String num=tsid.getText();

                    int jc;

                    try

                    {

                           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                    }

                    catch(ClassNotFoundException c)

                    {

                           System.out.println(""+c);

                    }

                    try

                    {     String tsz=null;

                           ……//连接数据库

                           rs=sql.executeQuery("SELECT * FROM person where 图书证号=(SELECT 图书证号 FROM borrowbook where 书号="+"'"+num+"')");

                           if(rs.next())

                          

          {

                                  tsz=rs.getString("图书证号");

                           }

                           con.close();

                           ……//连接数据库

                           rs=sql.executeQuery("SELECT * FROM vbbook where 书号="+"'"+num+"'");

                    Date da=new Date();

                           int y=da.getYear()+1900;

                           int m=da.getMonth()+1;

                           int d=da.getDate();

                           String czrq=String.valueOf(y)+"-"+String.valueOf(m)+"-"+String.valueOf(d);

                           float money;

                           String sm=null;

                           int day=0;

                           if(rs.next())

                           {

                                  sm=rs.getString("书名");

                                  String yhrq=rs.getString("应还日期");

                                  y=(y-Integer.parseInt(yhrq.substring(0,4)));

                                  int mm=Integer.parseInt(yhrq.substring(5,7));

                                  day=y;                              

                                  d=Integer.parseInt(yhrq.substring(8,10))-d;

                                  if(y!=0)

                                  mm=mm+12;

                                  while(m>mm)

                                  {

…//计算还书时间

                                  }

                                  day=day+d;

                                  if(day>0)

                                  {

                    JOptionPane.showMessageDialog(this,"您比应还日期晚了"+String.valueOf(day)+"天归还,请交付相应滞纳金","延期还书",JOptionPane.WARNING_MESSAGE);

                                         money=day/10;

                                         tsid.setText(null);      

                                  }

}

4.5 借阅超时功能实现

数据库borrowbook(借书表)表中的“应还日期”字段中的时间与当前时间相比较,若比当前时间早则说明该书借阅超时,那么该条记录将在此被显示出来。

主要程序代码如下:

    ……//连接数据库

                  Date nowtime=new Date();//当前日期

                  SimpleDateFormat matter1=new SimpleDateFormat("yyyy-MM-dd");

                  String stime=matter1.format(nowtime);

                  String dyear=stime.substring(0,4);

                  year2=Integer.parseInt(dyear);//年

                  String dmoon=stime.substring(5,7);

                  moon2=Integer.parseInt(dmoon);//月

                  String dday=stime.substring(8,10);

                  day2=Integer.parseInt(dday);//日

                  rs=sql.executeQuery("SELECT * FROM borrowbook");

                  while(rs.next()){x=x+1;}

                  rs.beforeFirst();

                  a=new Object[x][4];

                  while(rs.next())

                    {

                           ……//计算还书超过的天数

             table=new JTable(a,name);

             sPanel.add(new JScrollPane(table),BorderLayout.CENTER);

             sPanel.setEnabled(false);

             setBounds(0,0,700,400);

          setVisible(true);

             validate();

             addWindowListener(new WindowAdapter()

                                        

{

public void windowClosing(WindowEvent e)

                                                {dispose();

                                                }

                                         }

  }


参考文献

[1] 耿祥义.JAVA2 实用教程.北京:清华大学出版社,2006

[2] 朱仲杰.JAVA2 全方位学习.北京:机械工业出版社,2006

[3] 张思民.JAVA程序设计实践教程.北京:清华大学出版社,2006

[4] 汤一平.Java 语言程序设计.北京:科学出版社,2006

[5] 刘艺.Java 程序设计大学教程. 北京:机械工业出版社,2006

[6] 耿祥义.Java课程设计.北京:清华大学出版社,2003

[7] Sharon Zakhour. Java教程. 北京:人民邮电出版社,2007

相关推荐