图书管理系统需求分析报告

时间:2024.4.21

图书管理系统需求分析

1、引言

1.1编写目的

编写本报告的目的是明确本系统的详细需求,提供给使用单位确认系统的功能和性能,并在此基础上进行修改和完善,同时作为设计人员进行软件设计的依据和使用单位的验收标准。

1.2项目背景

实现一个将各种图书管理和服务功能集合起来的管理信息系统就显得十分必要,既可以节省资源又可以有效存储、更新查询信息,提高工作和服务效率。

2、任务概述

2.1目标

本系统通过计算机技术实现图书信息和用户信息的管理,还包括如下目标:

减少人力成本和管理费用;

提高信息的准确性和信息的安全;

改进管理和服务;

良好的人机交互界面,操作简便;

2.2用户特点

本系统的最终用户是面向管理员(图书馆管理员和其他管理人员)和读者(教师和学生),他们都具有一定的计算机基础知识和操作计算机的能力,是经常性用户。

系统维护人员是计算机专业人员,熟悉操作系统和数据库,是间隔性用户。

2.3需求概述

在图书管理系统中,管理员为每个读者建立一个账户,账户内存储读者个人的详细信息,并依据读者类别的不同给每个读者发放借书卡(提供借书卡号、姓名、部门或班级等信息)。读者可以凭借书卡在图书馆进行图书的借、还、续借、查询等操作,不同类别的读者在借书限额、还书期限以及可续借的次数上要有所不同。

借阅图书时,由管理员录入借书卡号,系统首先验证该卡号的有效性,若无效,则提示无效的原因;若有效,则显示卡号、姓名、借书限额、已借数量、可再借数量等信息,本次实际借书的数量不能超出可再借数量的值。完成借书操作的同时要修改相应图书信息的状态、读者信息中的已借数量、在借阅信息中添加相应的记录。

归还图书时,由管理员录入借书卡号和待归还的图书编号,显示借书卡号、读者姓名、读书编号、读书名称、借书日期、应还日期等信息,并自动计算是否超期以及超期的罚款金额,若进行续借则取消超期和罚款等信息;若图书有损坏,由管理员根据实际情况从系统中选择相应的损坏等级,系统自动计算损坏赔偿金额。完成归还操作的同时,修改相应图书信息的状态、修改读者信息中的已借数量、在借书信息中对相应的借书记录做标记、在还书信息中添加相应的记录。

图书管理员不定期地对图书信息进行添加、修改和删除等操作,在图书尚未归还的情况下不能对图书信息进行删除。也可以对读者信息进行添加、修改、删除等操作,在读者还有未归还的图书的情况下不能进行删除读者信息。

系统管理员主要进行图书管理员权限的设置、读者类别信息的设置、图书类别的设置以及罚款和赔偿标准的设置、数据备份和数据恢复等处理。

2.4功能层次图

3、数据描述

3.1静态数据

图书:图书编码,书名,书号,图书类别,作者,出版社,出版时间,单价

管理员:用户名,密码,权限,姓名

读者:借书卡号,姓名,性别,读者类别,所属系部,部门或班级

3.2动态数据

输入数据:鼠标对按钮的点击,查询方式,查询关键字,新建图书项,新建读者项,图书项、读者项记录的修改,图书借还以及注销操作时的输入信息,受限操作所需的密码等。

输出数据:查询关键字所确定的数据库子集,统计结果,操作成功或失败的消息,图书借还以及注销操作时的结果信息。

3.3数据库描述

数据库采用SQL Server数据库。

3.4数据流图与数据字典

1、数据流图

(1) 顶层数据流图

(2)0层数据流图

(3)1层数据流图

·           1.读者信息管理

·           2.图书信息管理

·           3.图书借还管理

2、数据字典

(1)数据接口描述

·           名称:图书管理员

简要描述:完成登记注册、统计查询、借书、还书等操作;

有关数据流:读者信息,图书信息,统计条件信息,读者情况,图书情况,统计结果;

·           名称:系统管理员

简要描述:完成用户设置,读者类别设置,图书类别设置,罚金标准设置等操作;

有关数据流:用户信息,读者类别信息,图书类别信息,罚金标准信息;

(2)加工逻辑词条描述

·           加工名:录入新读者

加工编号:1.1

简要描述:将新的读者信息登记到读者信息表中

输入数据流:新读者数据,读者类别

输出数据流:有效读者信息

加工逻辑:

输入读者信息

选择读者类别

执行SQL语句,将完整的读者信息写入读者信息表

(3)主要数据流名词条描述

·           数据流名:新图书信息

数据流说明:用以标识新图书的书面信息

数据流来源:图书管理员

数据流去向:图书信息录入

数据流组成:图书编号+书名+书号+作者+出版社+出版时间+单价

·           数据流名:图书信息

数据流说明:用以标识图书在图书信息表中的信息

数据流来源:图书信息录入,图书信息表

数据流去向:图书信息表,借书管理,图书总量统计

数据流组成:图书编号+书名+书号+图书类别+作者+出版社+出版时间+单价+入库时间+操作员姓名+书架编号+图书状态

(4)数据存储词条描述

·           数据存储名:图书信息表

简单描述:存放已登记入库的图书的详细信息

输入数据:图书状态

输出数据:图书信息

数据组成:图书编号+书名+书号+图书类别+作者+出版社+出版时间+单价+入库时间+操作员姓名+书架编号+图书状态

存储方式:关键码(图书编号)

·           数据存储名:读者信息表

简单描述:存放读者的详细信息

输入数据:已借数量,操作员姓名

输出数据:读者信息

数据组成:借书卡号+姓名+性别+读者类别+所属系部+部门或班级+联系电话+登记日期+操作员姓名+已借数

存储方式:关键码(借书卡号)

(5)数据项词条描述

3.5数据关系E-R图

3.6数据采集

数据采集采用键盘输入

4、功能需求

4.1功能划分

该系统具有以下主要功能:

浏览功能;

查询功能;

添加功能;

修改功能;

删除功能;

4.2功能描述

1、浏览功能

·         列出当前数据库文件中图书信息、读者信息、借阅信息和还书信息等的所有记录。

·         可选定一项记录,显示所有域。

2、查询功能

·         书目匹配查询

·         读者匹配查询

·         书目和读者匹配查询

3、添加功能

·         添加书目和读者记录以及借书还书记录

·         添加系统设置相关信息

4、修改功能

·         修改书目和读者记录,提供相关确认机制。

·         修改系统设置相关信息,提供相关确认机制。

5、删除功能

·         删除书目和读者记录,提供相关确认机制。

·         删除系统设置相关信息,提供相关确认机制。

5、性能需求

5.1数据精确度

保证查询的查全率和查准率为100%,所有在相应域中包含查询关键字的记录都能查到,所有在相应域中不包含查询关键字的记录都不能查到。

5.2系统响应时间

系统对大部分操作的相应时间应在1—2秒内。

5.3适应性

满足运行环境在允许操作系统之间的安全转换和与其他应用软件的独立运行要求。

6、运行需求

6.1用户界面

系统采用对话框方式,多功能窗口运行。

6.2硬件接口

支持各种X86系列的PC机。

6.3软件接口

运行于Windows2000及更高版本的具有WIN32 API的操作系统之上。


第二篇:图书管理系统需求分析报告附有java代码


         需

         求

         分

         析

   报

         告

                                

                                 课程设计题目 :图书管理系统

                                 专业:计算机科学与技术

                                 班级:11060341X                                                                    

                                 姓名:蔚奇秀,曹海花,

                                       李小峰,祁乐

                       目录

一.概述

   1.编写目的

   2.项目背景

   3.定义

   4.参考资料

   5.开发环境

二.需求分析

   1.问题提出

   2.系统的业务功能分析

   3.需完成的功能

三.系统需求说明

   1.对功能的规定

   2.对性能的规定

   3.输入输出要求

四.新系统的逻辑模型

   1.图书馆组织机构分析

   2.系统功能结构图

   3.业务流程图

   4.数据流程图

   5.数据字典

一.概述

1、编写目的

   按照关系型数据库的基本原理,综合运用所学的知识,以小组为单位,设计开发一个小型的图书管理系统。通过对一个实际问题的分析、设计与实现,将原理与应用相结合,使学生学会如何把书本上学到的知识用于解决实际问题,培养学生的动手能力;另一方面,使学生能深入理解和灵活掌握教学内容

2、项目背景

数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了。造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。 。

  a.待开发的软件系统的名称是《图书管理系统》

  b.本软件适用于教育界,他是比较完善的系统管理软件,对图书馆的书籍、读者资料、借还书等可以进行方便的管理。

  C.开发员:蔚奇秀,曹海花,李小峰,祁乐

3、定义

数据流程图(DFD):为描述软件系统中的信息流提供了一个图形方法。箭头代表数据流,方框代表数据的源点或终点,圆框代表数据流的交换,双杠代表数据存储的地方。

数据字典是对数据流程图中的数据,变换等进行精确的定义。

4、参考资料

    1.萨师煊、王珊《数据库系统概论》 高等教育出版社2000.2

   2.俞盘祥、沈金发《数据库系统原理》清华大学出版社2000.6

   3.王珊、陈红《数据库系统原理教程》清华大学出版社1998.7

   4.施伯乐、丁宝康《数据库系统教程》高等教育出版社1999.12

5、开发环境

   WindowXP,/7  Microsoft Visual C++,   SQLSerevr2000.

一、          需求分析

1、问题的提出

图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。

2、系统的业务功能分析:

    1) 建立读者类,实现对读者编号、姓名、所在单位等信息的描述。

   2) 建立书籍类,实现对图书的编号、名称、作者、出版社、出版日期、价格、采购日 期、单价、数量、金额、版次、分类号、ISBN等信息的描述。

   3) 建立用于记录借书情况的类,实现输入读者编号和书籍编号后成功借书的描述。  系统的业务流程分析:

3、需完成的功能

1)      图书基本情况的录入、修改、删除等基本操作。

2)      办理借书卡模块。

3)      实现借书功能。

4)      实现还书功能。

5)      能方便的对图书进行查询。

6)      对超期的情况能自动给出提示信息。

7)     具有数据备份和数据恢复功能。

二、  系统需求说明

 1、对功能的规定

经过以上详细的用户调查,在现行业务流程和数据分析的基础上,基本可以确定系统设计必须达到的目标。

以下是图书管理系统必须具备的功能:

1.图书基本情况的录用:对于购进的新书,系统必须具备图书信息资料的录入功能。当图书资料发生变化,如图书丢失或有错误信息输入时,则应能够及时对数据进行修改和补充。

2.办理借书卡模块:系统的主要功能之一,供本校学生借阅图书。

3.实现借书功能:可以方便学生们借书。

    4.实现还书功能:归还图书,并进行登记。

5.能方便的对图书进行查阅:可以快速简单的对图书进行查找一些信息。

6.对超期的情况能自动给出提示信息:告诉那些同学说借书的时间已超期。

7.具有数据备份和数据恢复功能:可以在丢失后再找回。

2、对性能的规定

为了保证系统能够长期、安全、稳定、可靠、高效的运行,图书管理系统应该满足以下的性能需求:

(1)、系统处理的准确性和及时性

系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足学校对信息处理的需求。

(2)、系统的开放性和系统的可扩充性

图书管理系统在开发过程中,应该充分考虑以后的可扩充性。例如用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。

(3)、系统的易用性和易维护性

图书管理系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。

(4)、系统的标准性

系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。所有这些都要符合主流国际、国家和行业标准。

(5)、系统的先进性

目前计算系统的技术发展相当快,做为图书管理系统工程,在系统的生命周期尽量做到系统的先进,充分完成企业信息处理的要求而不至于落后。这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成。另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品。

(6)、系统的响应速度

图书管理系统系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信息。在进行统计分析时,根据所需数据量的不同而从秒级到分钟级,原则是保证操作人员不会因为速度问题而影响工作效率。

3、输入输出要求

    输入:键盘,鼠标,扫描仪等。 

    输出:显示器,打印机等。

三、  新系统的逻辑模型

1、图书馆组织机构分析

  通过对图书馆工作人员的调查,图书馆主要有4个部门。借阅管理部负责图书的借阅管理;图书管理部负责书籍类别标准的制定,类别信息的输入;书籍类别信息的查询,修改;书籍信息的输入;读者管理部负责主要针对各类读者信息进行管理;系统管理部负责用户管理和密码管理。组织机构图如下:

图书馆组织机构图

2、系统功能结构图

3、数据流程图

  通过对业务流程图的细化,可得到系统的分层数据流图。如下图:

顶层数据流图:

图书馆管理系统的顶层数据图

对顶层数据流图细化、分解可得到图书管理系统的第一层数据流图,如下图:

图书馆管理系统的第一层数据图

对第一层数据流图进一步细化、分解,可以得到第二层数据流图,如下图:

借阅信息管理数据流图

四.Java代码    

Book.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.sql.*;

import java.text.*;

import java.util.Date;

import java.math.*;

public class Book implements ActionListener

{private  JButton btn1,btn2,btn3,btn4;

 private JTextField jtfd1,jtfd2,jtfd3,jtfd5,jtfd6,

 jtfd7,jtfd8,jtfd9,jtfd10;

 private JComboBox jcbx;

 private  JTextArea jta;

 private  Connection con;

 private  PreparedStatement pstmt1,pstmt2;

 private  JFrame frame;

public Book()

{JFrame.setDefaultLookAndFeelDecorated(true);

 frame=new JFrame("图书入库");

 Container content=frame.getContentPane();

 Toolkit tool=frame.getToolkit();

 Dimension wndsize=tool.getScreenSize();

 JLabel lb1=new JLabel("书名:");

 JLabel lb2=new JLabel("条形码:");

 JLabel lb3=new JLabel("分类号:");

 JLabel lb4=new JLabel("分类名:");

 JLabel lb5=new JLabel("排架号:");

 JLabel lb6=new JLabel("出版社:");

 JLabel lb7=new JLabel("出版日期:");

 JLabel lb8=new JLabel("入库日期:");

 JLabel lb9=new JLabel("价格:");

 JLabel lb10=new JLabel("作者:");

 JLabel lb11=new JLabel("简介:");

  jtfd1=new JTextField();

  jtfd2=new JTextField();

  jtfd3=new JTextField();

  String[] kindname={"马克思列宁主义、毛泽东思想","综合性图书","哲学","社会科学总论",

    "政治、法律","军事","经济","文化、科学、教育、体育","语言文字","文学","天文学、地球科学",

    "生物科学","医药、卫生","农业科学","工业技术","艺术","历史、地理","数理化","自然科学总论",

    "环境科学","航空航天","交通"};

 jcbx=new JComboBox(kindname);

 

  jtfd5=new JTextField();

  jtfd6=new JTextField();

  jtfd7=new JTextField();

  jtfd8=new JTextField();

  jtfd9=new JTextField();

  jtfd10=new JTextField();

  jtfd8.addFocusListener(new FocusHandler());

 

 jta=new JTextArea();

 jta.setLineWrap(true);

 btn1=new JButton("添加");

 btn2=new JButton("删除");

 btn3=new JButton("撤消");

 btn4=new JButton("退出");

 btn1.addActionListener(this);

 btn2.addActionListener(this);

 btn3.addActionListener(this);

 btn4.addActionListener(this);

 JPanel pl1=new JPanel();

 JPanel pl2=new JPanel();

 JPanel pl3=new JPanel();

 JPanel pl4=new JPanel();

 pl1.setLayout(new GridLayout(5,4,6,6));

 pl1.add(lb1);

 pl1.add(jtfd1);

 pl1.add(lb2);

 pl1.add(jtfd2);

 pl1.add(lb10);

 pl1.add(jtfd10);

 pl1.add(lb3);

 pl1.add(jtfd3);

 pl1.add(lb4);

 pl1.add(jcbx);

 pl1.add(lb5);

 pl1.add(jtfd5);

 pl1.add(lb6);

 pl1.add(jtfd6);

 pl1.add(lb7);

 pl1.add(jtfd7);

 pl1.add(lb8);

 pl1.add(jtfd8);

 pl1.add(lb9);

 pl1.add(jtfd9);

 GridBagLayout gridbag=new GridBagLayout();

 GridBagConstraints constraints=new GridBagConstraints();

 pl2.setLayout(gridbag);

 constraints.weightx=constraints.weighty=10.0;

 constraints.fill=constraints.BOTH;

 gridbag.setConstraints(lb11,constraints);

 constraints.weightx=1;

 constraints.gridwidth=1;

 pl2.add(lb11,constraints);

 gridbag.setConstraints(jta,constraints);

 constraints.weightx=9;

 constraints.gridheight=3;

 constraints.gridwidth=3;

 constraints.insets=new Insets(10,15,10,20);

 pl2.add(jta,constraints);

 GridBagLayout gridbag1=new GridBagLayout();

 GridBagConstraints constraints1=new GridBagConstraints();

 constraints1.weightx=1.0;

 constraints1.fill=constraints1.BOTH;

 pl3.setLayout(gridbag1);

 //gridbag1.setConstraints(pl1,constraints1);

 constraints1.weighty=0.8;

 constraints1.gridwidth=constraints1.REMAINDER;

 pl3.add(pl1,constraints1);

 //gridbag1.setConstraints(pl2,constraints1);

 constraints1.weighty=0.2;

 constraints1.gridheight=constraints.REMAINDER;

 pl3.add(pl2,constraints1);

 pl4.setLayout(new GridLayout(1,4,6,0));

 pl4.add(btn1);

 pl4.add(btn2);

 pl4.add(btn3);

 pl4.add(btn4);

 content.setLayout(new BorderLayout());

 content.add(pl3,BorderLayout.CENTER);

 content.add(pl4,BorderLayout.SOUTH);

 frame.setBounds(100,100,550,400);

 frame.setResizable(false);

 frame.setVisible(true);

 try

 {

  

   String sqlStr1,sqlStr2;

   sqlStr1="insert into book (bookname,bannercode,kindnumber,kindname,"+

   "positionnumber,publishingcompany,publishtime,putintime,price,"+

   "state,introduction,author) values(?,?,?,?,?,?,?,?,?,'在架',?,?)";

   sqlStr2="delete from book where bannercode=?";

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

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

   pstmt1=con.prepareStatement(sqlStr1);

   pstmt2=con.prepareStatement(sqlStr2);

  

 }

 catch(ClassNotFoundException e)

 {

 }

 catch(SQLException sqle)

 {

 }

}

class FocusHandler implements FocusListener

{ java.util.Date today=new java.util.Date();

  DateFormat format=DateFormat.getDateInstance();

  String formatted=format.format(today);

 

  

   public void focusGained(FocusEvent e)

   {Object obj=(JTextField)e.getSource();

    if(obj==jtfd8)

    {jtfd8.setText(formatted);

    }

    

   }

   public void focusLost(FocusEvent e)

   {

   }

}

 public void actionPerformed(ActionEvent e)

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

 

  str1=jtfd1.getText().trim();

  str2=jtfd2.getText().trim();

  str3=jtfd3.getText().trim();

  str4=(String)jcbx.getSelectedItem();

  str5=jtfd5.getText().trim();

  str6=jtfd6.getText().trim();

  str7=jtfd7.getText().trim();

  str8=jtfd8.getText().trim();

  str9=jtfd9.getText().trim();

  str10=jtfd10.getText().trim();

  str11=jta.getText().trim();

 

  int result;

 try{

  Object obj=(JButton)e.getSource();

  if(obj==btn1)

  {

   if(str1.equals("")|str2.equals("")|str3.equals("")|str4.equals("")|str5.equals(""))

   {JOptionPane.showMessageDialog(frame,"can't be null");

    return;

   }

   if(str6.equals("")|str7.equals("")|str8.equals("")|str9.equals("")|str10.equals(""))

   {JOptionPane.showMessageDialog(frame,"can't be null");

    return;

   }

  

   java.sql.Date today1,today2;

   BigDecimal money=new BigDecimal(str9);

   today1=java.sql.Date.valueOf(str7);

   today2=java.sql.Date.valueOf(str8);

   pstmt1.setString(1,str1);

   pstmt1.setString(2,str2);

   pstmt1.setString(3,str10);

   pstmt1.setString(4,str4);

   pstmt1.setString(5,str5);

   pstmt1.setString(6,str6);

   pstmt1.setDate(7,today1);

   pstmt1.setDate(8,today2);

   pstmt1.setBigDecimal(9,money);

   pstmt1.setString(10,str11);

   pstmt1.setString(11,str10);

  

   result=pstmt1.executeUpdate();

    

    if(result>0)

    {JOptionPane.showMessageDialog(frame,"add successfully!");

    }

  jtfd1.setText("");

  jtfd2.setText("");

  jtfd3.setText("");

 

  jtfd5.setText("");

  jtfd6.setText("");

  jtfd7.setText("");

  jtfd8.setText("");

  jtfd9.setText("");

  jtfd10.setText("");

  jta.setText("");

  

   }

  else if(obj==btn2)

  {if(str2.equals(""))

   {JOptionPane.showMessageDialog(frame,"bannercode can't be null");

    return;

   }

  

    pstmt2.setString(1,str2);

    result=pstmt2.executeUpdate();

    if(result>0)

    {JOptionPane.showMessageDialog(frame,"Delete successfully!");

    }

 

  }

  else if(obj==btn3)

  {jtfd1.setText("");

  jtfd2.setText("");

  jtfd3.setText("");

 

  jtfd5.setText("");

  jtfd6.setText("");

  jtfd7.setText("");

  jtfd8.setText("");

  jtfd9.setText("");

  jtfd10.setText("");

  jta.setText("");

  

  }

  else if(obj==btn4)

  {pstmt1.close();

   pstmt2.close();

   con.close();

   frame.dispose();

  }

  }

  catch(SQLException sqle)

  {System.err.println(sqle);

  }

 }

public static void main(String[]args)

{new Book();

}

  

}

BookInfo.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.table.*;

import java.util.*;

import java.sql.*;

import javax.swing.table.AbstractTableModel;

public class BookInfo implements ActionListener

{ private JFrame frame;

  private Statement stmt;

  private Connection con;

  private JTable tableTest;

  private String[]columnNames={"书名","条形码","分类号","分类名","排架号","出版社",

  "出版日期","入库日期","状态","简介"};

  private Object[][]rowData=new Object[100][10];

  private JButton btn;

  private JRadioButton rbtn1,rbtn2;

  private JTextField jtfd;   

   public BookInfo()

   {

      frame=new JFrame("图书信息查询");

      Container content=frame.getContentPane();

     

       btn=new JButton("查询");

       jtfd=new JTextField();

       JPanel pl=new JPanel();

       rbtn1=new JRadioButton("书名");

       rbtn2=new JRadioButton("条形码");

       rbtn1.setSelected(true);

       btn.addActionListener(this);

     

       ButtonGroup group=new ButtonGroup();

       group.add(rbtn1);

       group.add(rbtn2);

       pl.setLayout(new GridLayout(1,4,10,0));

       pl.add(rbtn1);

       pl.add(rbtn2);

       pl.add(jtfd);

       pl.add(btn);

       tableTest=new JTable(rowData,columnNames);

      tableTest.setRowHeight(20);

      

        tableTest.setPreferredScrollableViewportSize(new Dimension(500, 30));

        JScrollPane scrollPane=new JScrollPane(tableTest);

       content.add(pl,BorderLayout.NORTH);

        content.add(scrollPane,BorderLayout.CENTER);

        frame.pack();

        frame.setVisible(true);

     try

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

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

    stmt=con.createStatement();

   }

   catch(ClassNotFoundException e)

   {System.err.println(e.getMessage());

   }

   catch(SQLException e)

   {System.err.println(e.getMessage());

   }

  

   }

  

   public void actionPerformed(ActionEvent e)

   {Object obj=e.getSource();

    ResultSet result;

     String sqlStr;

    int i=0;

    String str=jtfd.getText().trim();

  

    if(rbtn2.isSelected())

    {sqlStr="select bookname,bannercode,kindnumber,kindname,positionnumber,"+

    "publishingcompany,publishtime,putintime,state,introduction from book where "+

    "bannercode="+"'"+str+"'";

    }

     else

    {

    sqlStr="select bookname,bannercode,kindnumber,kindname,positionnumber,"+

    "publishingcompany,publishtime,putintime,state,introduction from book where "+

    "bookname like '"+str+"%'";

    }

    

    try

    {if(obj==btn)

     {if(str.equals(""))

       {JOptionPane.showMessageDialog(frame,"Text was null!");

        return;

       }

      result=stmt.executeQuery(sqlStr);

      for(int j=0;j<rowData.length;j++)

      { for(int k=0;k<10;k++)

       rowData[j][k]=null;

      }

     tableTest.repaint();

       while(result.next())

       {

       

        if(i<rowData.length)

        {

       

        rowData[i][0]=result.getString("bookname");

        rowData[i][1]=result.getString("bannercode");

        rowData[i][2]=result.getString("kindnumber");

        rowData[i][3]=result.getString("kindname");

        rowData[i][4]=result.getString("positionnumber");

        rowData[i][5]=result.getString("publishingcompany");

        rowData[i][6]=result.getDate("publishtime");

        rowData[i][7]=result.getDate("putintime");

        rowData[i][8]=result.getString("state");

        rowData[i][9]=result.getString("introduction");

        i++;

        }

        else{JOptionPane.showMessageDialog(frame,"please specify the bookname!");

        }

       }

    

     jtfd.setText("");

     }

     

    }

    catch(SQLException sqle)

    {System.err.println(sqle);

    }

  

   }

   public static void main(String[]args)

   {new BookInfo();

   }

   }

Borrow.java

import javax.swing.*;

import java.awt.*;

import java.sql.*;

import java.awt.event.*;

import java.util.*;

import java.text.*;

import java.math.*;

public class Borrow extends JFrame implements ActionListener

{private  JTextField jtfd1,jtfd2,jtfd3,jtfd4;

 private  JButton btn1,btn2,btn3;

 private  Connection con;

 private Statement stmt;

 private PreparedStatement pstmt;

 private  JFrame frame;

 private JLabel lb5;

   public Borrow()

   {frame=new JFrame("借书");

    Container content=frame.getContentPane();

    

    content.setLayout(new GridLayout(6,2,10,10));

    JLabel lb1=new JLabel("借书证号:");

    JLabel lb2=new JLabel("条形码:");

    JLabel lb3=new JLabel("借书日期:");

    JLabel lb4=new JLabel("应还日期:");

    lb5=new JLabel("罚款:");

  

    jtfd1=new JTextField();

    jtfd2=new JTextField();

    jtfd3=new JTextField();

    jtfd4=new JTextField();

    jtfd1.addFocusListener(new FocusHandler());

    jtfd2.addFocusListener(new FocusHandler());

    jtfd3.addFocusListener(new FocusHandler());

    jtfd4.addFocusListener(new FocusHandler());

    btn1=new JButton("确定");

    btn2=new JButton("退出");

    btn3=new JButton("交款");

    btn1.addActionListener(this);

    btn2.addActionListener(this);

    btn3.addActionListener(this);

    content.add(lb1);

    content.add(jtfd1);

    content.add(lb2);

    content.add(jtfd2);

    content.add(lb3);

    content.add(jtfd3);

    content.add(lb4);

    content.add(jtfd4);

    content.add(lb5);

    content.add(btn3);

    content.add(btn1);

    content.add(btn2);

    

    

    frame.setBounds(100,100,420,320);

  

    try{

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

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

      stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

      ResultSet.CONCUR_READ_ONLY);

      pstmt=con.prepareStatement("insert into borrow(user_cardnumber,bannercode,borrowdate,"+

    "receivedate,renew) values(?,?,?,?,'否')");

     

       }

       catch(ClassNotFoundException e)

       {System.err.println(e);

       }

       catch(SQLException e)

       {System.err.println(e);

       }

     frame.setVisible(true);

    

   }

   class FocusHandler implements FocusListener

   { String str1,sqlStr1,state;

      ResultSet result;

    

      java.util.Date today1=new java.util.Date();

      java.util.Date today2=new java.util.Date();

     

      DateFormat format=DateFormat.getDateInstance();

      String formatted1=format.format(today1);

    

    public void focusGained(FocusEvent e)

    {

    

     Object obj=(JTextField)e.getSource();

    

     if(obj==jtfd4)

     {today2.setMonth(today1.getMonth()+1);

      String formatted2=format.format(today2);

      jtfd4.setText(formatted2);

     }

     try{

     if(obj==jtfd2)

     { str1=jtfd1.getText().trim();

       if(str1.equals(""))

       {

          jtfd1.requestFocus();

          JOptionPane.showMessageDialog(frame,"Text was null!");

          return;

       }

    

      sqlStr1="select * from user where user_cardnumber="+"'"+str1+"'";

      

     result=stmt.executeQuery(sqlStr1);

      if(!result.next())

      {

      jtfd1.requestFocusInWindow();

       JOptionPane.showMessageDialog(frame,"请注册!");

      

       jtfd1.setText("");

       return;

      }

      else

      {

      if(result.getString("user_state").equals("挂失"))

      {jtfd1.requestFocus();

       JOptionPane.showMessageDialog(frame,"This card has been reportlost!");

       jtfd1.setText("");

       return;

      }

      sqlStr1="select * from borrow where user_cardnumber="+

      "'"+str1+"'";

       result=stmt.executeQuery(sqlStr1);

       int i=0;

       while(result.next())

       {i=i+1;

       }

       if(i==4)

       {   jtfd1.requestFocus();

          JOptionPane.showMessageDialog(frame,"you can't borrow more than four books!");

            jtfd1.setText("");

      

        return;

       }

      }

     }

    

      if(obj==jtfd3)

     {

     jtfd3.setText(formatted1);

     str1=jtfd2.getText().trim();

     if(str1.equals(""))

     { jtfd2.requestFocus();

     JOptionPane.showMessageDialog(frame,"Text was null!");

      return;

     }

     sqlStr1="select state from book where bannercode="+"'"+str1+"'";

     result=stmt.executeQuery(sqlStr1);

      if(!result.next())

      {jtfd2.requestFocus(true);

       JOptionPane.showMessageDialog(frame,"invalid bannercode!");

      

       jtfd2.setText("");

       return;

      }

      else

      {state=result.getString("state");

     

       if(state.equals("离架"))

        {jtfd2.requestFocus(true);

         JOptionPane.showMessageDialog(frame,"this book has been lent!");

         

          jtfd2.setText("");

         return;

        }

      }

     }

     }

     catch(SQLException sqle)

     {System.err.println(sqle);

     }

  

    }

    public void focusLost(FocusEvent e)

    { try{

    

     str1=jtfd1.getText().trim();

      sqlStr1="select sum_account from punishment where user_cardnumber="+

      "'"+str1+"'";

      result=stmt.executeQuery(sqlStr1);

      if(result.next())

      {

     

      BigDecimal money=result.getBigDecimal("sum_account",2);

      lb5.setText("罚款:"+money);

      }

      else

      {lb5.setText("罚款:0.00");

      }

     

      }

      catch(SQLException sqle)

      {System.err.println(sqle);

      }

    

   }

   }

   public void actionPerformed(ActionEvent e)

   {String sqlStr1,sqlStr2,str1,str2,str3,str4;

    int result;

    str1=jtfd1.getText().trim();

    str2=jtfd2.getText().trim();

    str3=jtfd3.getText().trim();

    str4=jtfd4.getText().trim();

    java.sql.Date today1,today2;

    

  

    Object obj=(JButton)e.getSource();

    try{

    

    if(obj==btn1)

    {

     if(str1.equals("")|str2.equals("")|str3.equals("")|str4.equals(""))

    {JOptionPane.showMessageDialog(frame,"The Text can't be null!");

     return;

    }

    sqlStr1="update book set state='离架' where bannercode="+"'"+str2+"'";

    today1=java.sql.Date.valueOf(str3);

    today2=java.sql.Date.valueOf(str4);

     pstmt.setString(1,str1);

     pstmt.setString(2,str2);

     pstmt.setDate(3,today1);

     pstmt.setDate(4,today2);

     result=pstmt.executeUpdate();

     if(result>0)

     {JOptionPane.showMessageDialog(frame,"borrow successfully!");

     

     }

     result=stmt.executeUpdate(sqlStr1);

     if(result>0)

     {JOptionPane.showMessageDialog(frame,"update successfully!");

     }

     jtfd1.setText("");

     jtfd2.setText("");

     jtfd3.setText("");

     jtfd4.setText("");

    }

    if(obj==btn3)

    {sqlStr1="delete from punishment where user_cardnumber="+

     "'"+str1+"'";

     result=stmt.executeUpdate(sqlStr1);

     if(result>0)

     {JOptionPane.showMessageDialog(frame,"pay successfully!");

      lb5.setText("罚款:0.00");

     }

    }

    if(obj==btn2)

    {stmt.close();

     con.close();

     frame.dispose();

    }

    }

    catch(SQLException sqle)

    {System.err.println(sqle);

    }

   }

   public static void main(String[]args)

   {new Borrow();

   }

}

BorrowQuery.java

import javax.swing.*;

import javax.swing.table.*;

import java.sql.*;

import java.awt.event.*;

import java.awt.*;

import java.util.*;

public class BorrowQuery implements ActionListener

{ private JFrame frame;

  private JButton btn1,btn2;

  private JTextField jtfd1,jtfd2;

  private JTable tableTest;

  private String[]columnNames={"借阅证号","图书条码","借书日期","应还日期"};

 

  private Object[][] rowData=new Object[4][4];

  private Statement stmt;

  private Connection con;

   public BorrowQuery()

   {

      JFrame.setDefaultLookAndFeelDecorated(true);

      frame=new JFrame("借阅查询");

      Container content=frame.getContentPane();

      content.setLayout(new BorderLayout());

     

      JLabel lb1=new JLabel("借阅证号:");

      JLabel lb2=new JLabel("姓名:");

      btn1=new JButton("查询");

      btn2=new JButton("退出");

      btn1.addActionListener(this);

      btn2.addActionListener(this);

      jtfd1=new JTextField();

      jtfd2=new JTextField();

      JPanel pl=new JPanel();

      pl.setLayout(new GridLayout(2,3,10,10));

      pl.add(lb1);

      pl.add(jtfd1);

      pl.add(btn1);

      pl.add(lb2);

      pl.add(jtfd2);

      pl.add(btn2);

     

      tableTest=new JTable(rowData,columnNames);

      tableTest.setRowHeight(30);

    

      tableTest.setPreferredScrollableViewportSize(new Dimension(500,60));

      JScrollPane scrollPane=new JScrollPane(tableTest);

     

      content.add(pl,BorderLayout.NORTH);

      content.add(scrollPane,BorderLayout.CENTER);

      frame.pack();

      frame.setVisible(true);

      try

      {

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

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

         stmt=con.createStatement();

      }

      catch(ClassNotFoundException e)

      {

      }

      catch(SQLException e)

      {System.err.println(e);

      }

     

     

   }

   public void actionPerformed(ActionEvent e)

   {String sqlStr,cardnumber,user_name,str1,str2,bannercode;

    ResultSet result;

    java.util.Date day1,day2;

    Object obj=(JButton)e.getSource();

    str1=jtfd1.getText().trim();

    str2=jtfd2.getText().trim();

    try

    {if(obj==btn1)

     {if(str1.equals("")|str2.equals(""))

      {JOptionPane.showMessageDialog(frame,"Text can't be null!");

       return;

      }

     

      sqlStr="select borrow.user_cardnumber,user_name,bannercode,borrowdate,receivedate"+

      " from borrow,user where borrow.user_cardnumber=user.user_cardnumber and"+

      " borrow.user_cardnumber="+"'"+str1+"'";

      result=stmt.executeQuery(sqlStr);

     

      for(int j=0;j<rowData.length;j++)

      { for(int k=0;k<4;k++)

       rowData[j][k]=null;

      }

     tableTest.repaint();

     int i=0;

      while(result.next())

      {

     

      cardnumber=result.getString("user_cardnumber");

      user_name=result.getString("user_name");

      if(str2.equals(user_name))

      {

         day1=result.getDate("borrowdate");

         day2=result.getDate("receivedate");

         bannercode=result.getString("bannercode");

        

         rowData[i][0]=cardnumber;

         rowData[i][1]=bannercode;

         rowData[i][2]=day1;

         rowData[i][3]=day2;

         i++;

      }

      }

     

      jtfd1.setText("");

      jtfd2.setText("");

     }

     if(obj==btn2)

     {stmt.close();

      con.close();

      frame.dispose();

     }

    }

    catch(SQLException sqle)

    {System.err.println(sqle);

    }

   }

   public static void main(String[]args)

   {new BorrowQuery();

   }

}

CallUpReturn.java

import javax.swing.*;

import javax.swing.table.*;

import java.awt.*;

import java.sql.*;

import java.util.*;

public class CallUpReturn

{private Vector columnField=new Vector();

 private Vector column=new Vector();

 private Vector rowData=new Vector();

 private Connection con;

 private Statement stmt;

 private ResultSet result,result2,result3;

 private String sqlStr,cardnumber,bannercode,user_name,user_office,

 bookname,publisher;

 private java.util.Date day1,day2,today;

 private String[]columnNames={"借阅证","姓名","单位","图书条码","书名","作者",

 "借出时间","到期时间"};

   public CallUpReturn()

   {JFrame frame=new JFrame("催还通告");

   Container content=frame.getContentPane();

  

   try

   {

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

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

       stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

       ResultSet.CONCUR_READ_ONLY);

       

      sqlStr="select borrow.user_cardnumber,borrow.bannercode,borrowdate,receivedate,"+

      "user_name,user_office,bookname,publishingcompany from borrow,book,user"+

      " where borrow.user_cardnumber=user.user_cardnumber and borrow.bannercode="+

      "book.bannercode";

  

      result=stmt.executeQuery(sqlStr);

      today=new java.util.Date();

      int i=0;

      while(result.next())

      { 

        columnField.clear();

       day1=result.getDate("borrowdate");

       day2=result.getDate("receivedate");

       

       if(day2.before(today))

       {

     

        cardnumber=result.getString("user_cardnumber");

        bannercode=result.getString("bannercode");

       

        user_name=result.getString("user_name");

        user_office=result.getString("user_office");

       

       

        bookname=result.getString("bookname");

        publisher=result.getString("publishingcompany");

       

        columnField.add(cardnumber);

        columnField.add(user_name);

        columnField.add(user_office);

        columnField.add(bannercode);

        columnField.add(bookname);

        columnField.add(publisher);

        columnField.add(day1);

        columnField.add(day2);

        rowData.add(columnField.clone());

       

       }

     

       System.out.println(i);

     

      }

     

      stmt.close();

      con.close();

     

   }

   catch(ClassNotFoundException e)

   {System.err.println(e);

   }

   catch(SQLException e)

   {System.err.println(e.getCause());

    System.err.println(e.getErrorCode());

    System.err.println(e.getNextException());

    System.err.println(e.getStackTrace());

   }

  

   for(int i=0;i<columnNames.length;i++)

   {

    column.add(columnNames[i]);

   }

  

   JTable tableTest=new JTable(rowData,column);

   tableTest.setRowHeight(30);

   JScrollPane scrollPane=new JScrollPane(tableTest);

   scrollPane.setPreferredSize(new Dimension(500,80));

   content.add(scrollPane,BorderLayout.CENTER);

   frame.pack();

   frame.setVisible(true);

  

   }

   public static void main(String[]args)

   {

      new CallUpReturn();

   }

  

}

CardManagement.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.border.*;

import java.sql.*;

import java.util.*;

import java.text.*;

public class CardManagement implements ActionListener

{ private  JTextField jtfd1,jtfd2,jtfd3,jtfd4;

  private  JButton btn1,btn2,btn3,btn4;

  private Statement stmt;

  private  PreparedStatement pstmt;

  private  Connection con;

  private  JFrame frame;

  

   public CardManagement()

   {JFrame.setDefaultLookAndFeelDecorated(true);

    frame=new JFrame("借阅证管理");

  

    Container content=frame.getContentPane();

    JLabel lb1=new JLabel("借阅证号:");

    JLabel lb2=new JLabel("按借阅证号:");

    JLabel lb3=new JLabel("按有效期:");

    JLabel lb4=new JLabel("借阅证号:");

    jtfd1=new JTextField();

    jtfd2=new JTextField();

    jtfd3=new JTextField();

    jtfd4=new JTextField();

    jtfd3.addFocusListener(new FocusHandler());

    btn1=new JButton("挂失");

    btn2=new JButton("注销");

    btn3=new JButton("注销");

    btn4=new JButton("取消挂失");

    btn3.addActionListener(this);

    btn1.addActionListener(this);

    btn2.addActionListener(this);

    btn4.addActionListener(this);

    JPanel pl1=new JPanel();

    JPanel pl2=new JPanel();

    JPanel pl3=new JPanel();

    pl1.setBorder(BorderFactory.createTitledBorder("挂失"));

    pl2.setBorder(BorderFactory.createTitledBorder("注销"));

    pl3.setBorder(BorderFactory.createTitledBorder("取消挂失"));

    GridBagLayout gbl=new GridBagLayout();

    GridBagConstraints gbc=new GridBagConstraints();

    gbc.fill=GridBagConstraints.BOTH;

    gbc.weightx=gbc.weighty=10.0;

    pl1.setLayout(gbl);

    

    gbc.gridwidth=1;

    gbc.weightx=1.0;

    gbl.setConstraints(lb1,gbc);

    

    pl1.add(lb1);

    

    

    gbc.weightx=8.0;

    gbc.gridheight=2;

    gbc.gridwidth=2;

    gbc.insets=new Insets(15,15,15,5);

    gbl.setConstraints(jtfd1,gbc);

    pl1.add(jtfd1);

    

    

    gbc.insets=new Insets(19,0,19,5);

    gbc.weightx=1.0;

    gbc.gridheight=2;

    gbc.gridwidth=3;

    gbc.gridwidth=gbc.REMAINDER;

    gbl.setConstraints(btn1,gbc);

    pl1.add(btn1);

    

    GridBagLayout gbl2=new GridBagLayout();

    GridBagConstraints gbc2=new GridBagConstraints();

    gbc2.fill=GridBagConstraints.BOTH;

    gbc2.weightx=gbc2.weighty=10;

    pl2.setLayout(gbl2);

    

    gbc2.gridwidth=1;

    gbc2.weightx=1;

    gbl2.setConstraints(lb2,gbc2);

    

    pl2.add(lb2);

  

    gbc2.gridwidth=2;

    gbc2.insets=new Insets(0,0,0,5);

    gbc2.weightx=8;

    gbc2.gridheight=2;

     gbl2.setConstraints(jtfd2,gbc2);

    pl2.add(jtfd2);

    

    gbc2.gridwidth=gbc2.REMAINDER;

    gbc2.insets=new Insets(5,0,5,5);

    gbc2.weightx=1;

    gbc2.gridwidth=2;

    gbc2.gridheight=2;

    gbl2.setConstraints(btn2,gbc2);

    pl2.add(btn2);

    

  

    gbc2.gridx=0;

    gbc2.insets=new Insets(5,0,0,0);

    gbc2.gridwidth=1;

    gbc2.weightx=1;

    gbl2.setConstraints(lb3,gbc2);

    pl2.add(lb3);

    

    gbc2.gridx=1;

    gbc2.gridwidth=2;

    gbc2.insets=new Insets(5,0,0,5);

    gbc2.weightx=8;

    gbl2.setConstraints(jtfd3,gbc2);

    pl2.add(jtfd3);

    gbc2.gridx=3;

    gbc2.gridwidth=gbc2.REMAINDER;

    gbc2.insets=new Insets(10,0,5,5);

    gbc2.weightx=1;

    gbl2.setConstraints(btn3,gbc2);

    pl2.add(btn3);

    

    GridBagLayout gbl4=new GridBagLayout();

   GridBagConstraints gbc4=new GridBagConstraints();

    gbc4.fill=GridBagConstraints.BOTH;

    gbc4.weightx=gbc4.weighty=10.0;

    pl3.setLayout(gbl4);

    

  

    gbc4.gridwidth=1;

    gbc4.gridheight=1;

    gbc4.weightx=1.0;

    

    gbl4.setConstraints(lb4,gbc4);

    

    pl3.add(lb4);

    

  

    gbc4.weightx=8;

    gbc4.gridheight=2;

    gbc4.gridwidth=2;

    gbc4.insets=new Insets(15,15,15,5);

    gbl4.setConstraints(jtfd4,gbc4);

    pl3.add(jtfd4);

    

    

    gbc4.insets=new Insets(19,0,19,5);

    gbc4.weightx=1.0;

    gbc4.gridheight=2;

  

    gbc4.gridwidth=gbc4.REMAINDER;

    gbl4.setConstraints(btn4,gbc4);

    pl3.add(btn4);

    

    

    GridBagLayout gbl3=new GridBagLayout();

    GridBagConstraints gbc3=new GridBagConstraints();

    gbc3.fill=GridBagConstraints.BOTH;

    gbc3.weightx=gbc3.weighty=10.0;

    content.setLayout(gbl3);

    

    gbc3.weighty=2.5;

    gbc3.insets=new Insets(10,10,0,10);

    gbl3.setConstraints(pl1,gbc3);

    

    content.add(pl1);

    

    gbc3.gridx=0;

    gbc3.weighty=5;

    gbc3.insets=new Insets(10,10,10,10);

    gbl3.setConstraints(pl2,gbc3);

    content.add(pl2);

    

    gbc3.gridx=0;

    gbc3.weighty=2.5;

    gbc3.insets=new Insets(0,10,10,10);

    gbl3.setConstraints(pl3,gbc3);

    content.add(pl3);

    frame.setBounds(100,100,450,400);

    frame.setResizable(true);

    

    try

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

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

     stmt=con.createStatement();

     pstmt=con.prepareStatement("select user_canceldate from user",

     ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

    

    

    }

    catch(ClassNotFoundException e)

    {System.err.println(e);

    }

    catch(SQLException e)

    {System.err.println(e);

    }

    frame.setVisible(true);

   }

   public void actionPerformed(ActionEvent e)

   {String str,sqlStr;

    ResultSet result;

    int res;

    Object obj=(JButton)e.getSource();

    

    

    try{

    

     if(obj==btn3)

      {str=jtfd3.getText().trim();

      if(str.equals(""))

       {return;

       }

       java.util.Date today=java.sql.Date.valueOf(str);

    

         result=pstmt.executeQuery();

       while(result.next())

       {java.util.Date today1=result.getDate("user_canceldate");

      

        if(today.after(today1))

        { 

          result.deleteRow();

       

        }

       }

       jtfd3.setText("");

      }

      if(obj==btn1)

      {str=jtfd1.getText().trim();

       sqlStr="update user set user_state='挂失' where user_cardnumber="+

       "'"+str+"'";

       if(str.equals(""))

       {   JOptionPane.showMessageDialog(frame,"Text was null!");

          return;

       }

       res=stmt.executeUpdate(sqlStr);

       if(res>0)

       {JOptionPane.showMessageDialog(frame,"reportloss successfully!");

        jtfd1.setText("");

        return;

       }

      

      }

      if(obj==btn2)

      {str=jtfd2.getText().trim();

       sqlStr="delete * from user where user_cardnumber="+"'"+str+"'";

       if(str.equals(""))

       {JOptionPane.showMessageDialog(frame,"Text was null!");

        return;

       }

       res=stmt.executeUpdate(sqlStr);

       if(res>0)

       {JOptionPane.showMessageDialog(frame,"注销成功!");

       }

       jtfd2.setText("");

      }

      if(obj==btn4)

      {str=jtfd4.getText().trim();

       sqlStr="update user set user_state='正常' where user_cardnumber="+

       "'"+str+"'";

       if(str.equals(""))

       {JOptionPane.showMessageDialog(frame,"Text was null!");

        return;

       }

       res=stmt.executeUpdate(sqlStr);

       if(res>0)

       {JOptionPane.showMessageDialog(frame,"update a record!");

       }

       jtfd4.setText("");

      }

        }

        catch(SQLException sqle)

        {System.err.println(sqle.getMessage());

        }

   }

   class FocusHandler implements FocusListener

   {

      public void focusGained(FocusEvent e)

      {Object obj=(JTextField)e.getSource();

       if(obj==jtfd3)

       {java.util.Date today=new java.util.Date();

        DateFormat format=DateFormat.getDateInstance();

        String formatted=format.format(today);

        jtfd3.setText(formatted);

       }

       

      }

      public void focusLost(FocusEvent e)

      {

      }

   }

   public static void main(String[]args)

   {

      new CardManagement();

   }

}

Login.java

import javax.swing.*;

import javax.swing.event.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

public class Login extends JFrame

{  private  JLabel JLb1;

   private  JLabel JLb2;

   private  JButton Ok_btn;

   private  JButton Cancel_btn;

   private  JTextField Jtfld1;

   private  JPasswordField Jtfld2;

   private JFrame frame;

   private Connection con;

   private Statement stmt;

   public Login()

   {

      JFrame.setDefaultLookAndFeelDecorated(true);

      frame=new JFrame("登陆");

     

       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      

  

      Container content=frame.getContentPane();

      content.setLayout(new GridLayout(3,2,20,20));

      JLb1=new JLabel("用户名:");

     

      JLb2=new JLabel("密码:");

      Jtfld1=new JTextField();

      Jtfld2=new JPasswordField();

       Ok_btn=new JButton("确定");

      Cancel_btn=new JButton("取消");

     

      Ok_btn.addActionListener(new ActionHandler());

      Cancel_btn.addActionListener(new ActionHandler());

      content.add(JLb1);

      content.add(Jtfld1);

  

      content.add(JLb2);

      content.add(Jtfld2);

      content.add(Ok_btn);

      content.add(Cancel_btn);

  

     

      frame.pack();

      frame.setLocationRelativeTo(null);

      frame.setSize(300,200);

      frame.setVisible(true);

     

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

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

    stmt=con.createStatement();

   }

   catch(ClassNotFoundException e)

   {

   }

   catch(SQLException ex)

   {

   }

   }

   class ActionHandler implements ActionListener

   {

   public void actionPerformed(ActionEvent e)

   {String str1,str2,username,sqlStr;

      Object obj=e.getSource();

    str1=Jtfld1.getText().trim();

     str2=Jtfld2.getText().trim();

    try{

     

    if(obj.equals(Ok_btn))

    

     {if(str1.equals(""))

      {JOptionPane.showMessageDialog(frame,"username can't be null!");

       return;

      }

     sqlStr="select * from login where user_name="+"'"+str1+"'"+

     " and psw="+"'"+str2+"'";

    

     ResultSet result=stmt.executeQuery(sqlStr);

     if(result.next())

     {

     username=result.getString("user_name");

  

     if(username.equals("guest"))

     {

         MainFrame mainFrame=new MainFrame();

         mainFrame.menuItem1.setEnabled(false);

         mainFrame.menuItem14.setEnabled(false);

         mainFrame.menuItem3.setEnabled(false);

         mainFrame.menuItem4.setEnabled(false);

         mainFrame.menuItem5.setEnabled(false);

         mainFrame.menuItem6.setEnabled(false);

         mainFrame.menuItem7.setEnabled(false);

         mainFrame.menuItem15.setEnabled(false);

     }

     else

     { new MainFrame();

     }

    

      frame.dispose();

      stmt.close();

      con.close();

     }

     else

     {JOptionPane.showMessageDialog(frame,"username or password is error!");

     

     }

   }

   }

   catch(SQLException ex)

   {

      System.err.println(ex);

   }

   }

  

   }

  

   public static void main(String[]args)

   {

     

     

      javax.swing.SwingUtilities.invokeLater(new Runnable()

   {

      public void run()

      {new Login();

      }

   });

   }

   }

MainFrame.java

import javax.swing.*;

import java.awt.*;

import javax.swing.event.*;

import java.awt.event.*;

public class MainFrame implements ActionListener

{private  JMenuBar JMB;

 private  JMenu M1,M2,M3,M4,M5;

 private  JLabel Jlb;

 private  Toolkit tool;

 private  Dimension wndsize;

 private  JButton btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btn10,btn11;

 public   JMenuItem menuItem1,menuItem2,menuItem3,menuItem4,

 menuItem5,menuItem6,menuItem7,menuItem8,menuItem9,menuItem10,menuItem11,

 menuItem12,menuItem13,menuItem14,menuItem15,menuItem16,menuItem17;

   public MainFrame()

   {JFrame.setDefaultLookAndFeelDecorated(true);

    JFrame frame=new JFrame();

    frame.setTitle("主窗体");

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Container content=frame.getContentPane();

    content.setLayout(new BorderLayout());

    tool=frame.getToolkit();

    wndsize=tool.getScreenSize();

    JMB=new JMenuBar();

    M1=new JMenu("图书证管理");

    M2=new JMenu("图书流通管理");

    M3=new JMenu("统计查询");

    M4=new JMenu("帮助");

    M5=new JMenu("图书入库");

    menuItem1=new JMenuItem("读者注册");

    

    menuItem2=new JMenuItem("图书证暂停");

    menuItem3=new JMenuItem("挂失");

    menuItem4=new JMenuItem("取消挂失");

    menuItem5=new JMenuItem("注销管理");

    M1.add(menuItem1);

    M1.add(menuItem2);

    M1.add(menuItem3);

    M1.add(menuItem4);

    M1.add(menuItem5);

      

    

    menuItem6=new JMenuItem("读者借书");

    menuItem7=new JMenuItem("还书");

    menuItem8=new JMenuItem("图书预约");

    menuItem15=new JMenuItem("续借");

    M2.add(menuItem6);

    M2.add(menuItem7);

    M2.add(menuItem15);

    M2.add(menuItem8);

    

    

    menuItem9=new JMenuItem("图书查询");

    menuItem10=new JMenuItem("读者查询");

    menuItem11=new JMenuItem("借阅统计");

    menuItem12=new JMenuItem("借阅查询");

    menuItem13=new JMenuItem("罚款统计");

    menuItem14=new JMenuItem("图书入库");

    menuItem16=new JMenuItem("新书通报");

    menuItem17=new JMenuItem("图书催还");

    

    M3.add(menuItem9);

    M3.add(menuItem10);

    M3.add(menuItem11);

    M3.add(menuItem12);

    M3.add(menuItem13);

    M3.add(menuItem16);

    M3.add(menuItem17);

    

    M5.add(menuItem14);

    

    menuItem1.addActionListener(this);

    menuItem2.addActionListener(this);

    menuItem3.addActionListener(this);

    menuItem4.addActionListener(this);

    menuItem5.addActionListener(this);

    menuItem6.addActionListener(this);

    menuItem7.addActionListener(this);

    menuItem8.addActionListener(this);

    menuItem9.addActionListener(this);

    menuItem10.addActionListener(this);

    menuItem11.addActionListener(this);

    menuItem12.addActionListener(this);

    menuItem13.addActionListener(this);

    menuItem14.addActionListener(this);

    menuItem15.addActionListener(this);

    menuItem16.addActionListener(this);

    menuItem17.addActionListener(this);

    menuItem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,

    ActionEvent.ALT_MASK));

    menuItem3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,

    ActionEvent.ALT_MASK));

    menuItem4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,

    ActionEvent.ALT_MASK));

    menuItem5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,

    ActionEvent.ALT_MASK));

    menuItem6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,

    InputEvent.ALT_MASK));

    menuItem7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,

    InputEvent.ALT_MASK|InputEvent.CTRL_MASK));

    menuItem9.setAccelerator(KeyStroke.getKeyStroke("control shift B"));

    menuItem10.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.ALT_MASK));

    menuItem15.setAccelerator(KeyStroke.getKeyStroke('R'));

    menuItem14.setAccelerator(KeyStroke.getKeyStroke('B'));

    menuItem16.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,

    InputEvent.ALT_MASK));

    menuItem17.setAccelerator(KeyStroke.getKeyStroke("control alt C"));

    menuItem12.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_J,InputEvent.ALT_MASK));

    

    JMB.add(M5);

    JMB.add(M1);

    JMB.add(M2);

    JMB.add(M3);

    JMB.add(M4);

    

    

  

    frame.setJMenuBar(JMB);

    

    

    JToolBar JTB=new JToolBar();

    btn1=new JButton("A");

    btn1.setFont(new Font("楷体",Font.BOLD+Font.CENTER_BASELINE,16));

    btn2=new JButton(new ImageIcon("images/register.gif"));

    btn3=new JButton(new ImageIcon("images/new.gif"));

    btn4=new JButton("C");

    btn4.setFont(new Font("楷体",Font.BOLD+Font.CENTER_BASELINE,16));

    btn5=new JButton(new ImageIcon("images/paste.gif"));

    btn6=new JButton(new ImageIcon("images/right.gif"));

    btn7=new JButton(new ImageIcon("images/middle.gif"));

    btn8=new JButton(new ImageIcon("images/left.gif"));

    btn9=new JButton(new ImageIcon("images/sound.gif"));

    btn10=new JButton(new ImageIcon("images/underline.gif"));

    

    btn11=new JButton("L");

    btn11.setFont(new Font("楷体",Font.BOLD+Font.CENTER_BASELINE,16));

    btn1.setToolTipText("adfasdf");

    btn1.setBorder(BorderFactory.createRaisedBevelBorder());

    btn2.setBorder(BorderFactory.createRaisedBevelBorder());

    btn3.setBorder(BorderFactory.createRaisedBevelBorder());

    btn4.setBorder(BorderFactory.createRaisedBevelBorder());

    btn5.setBorder(BorderFactory.createRaisedBevelBorder());

    btn6.setBorder(BorderFactory.createRaisedBevelBorder());

    btn7.setBorder(BorderFactory.createRaisedBevelBorder());

    btn8.setBorder(BorderFactory.createRaisedBevelBorder());

    btn9.setBorder(BorderFactory.createRaisedBevelBorder());

    btn10.setBorder(BorderFactory.createRaisedBevelBorder());

    btn11.setBorder(BorderFactory.createRaisedBevelBorder());

    JTB.add(btn1);

    JTB.add(btn2);

    JTB.add(btn3);

    JTB.add(btn4);

    JTB.add(btn5);

    JTB.add(btn6);

    JTB.add(btn7);

    JTB.add(btn8);

    JTB.add(btn9);

    JTB.add(btn10);

    JTB.add(btn11);

  

    JTB.setBorder(BorderFactory.createLineBorder(Color.darkGray));

    

    Jlb=new JLabel(new ImageIcon("images/168.jpg"));

    Jlb.setBorder(BorderFactory.createLoweredBevelBorder());

    content.add(Jlb,BorderLayout.CENTER);

    frame.setSize(wndsize);

    content.add(JTB,BorderLayout.NORTH);

    frame.setLocationRelativeTo(null);

  

    frame.setVisible(true);

    

    

   }

   public void actionPerformed(ActionEvent e)

   {Object obj=e.getSource();

    if(obj==menuItem1)

    {new TransactCard();

    }

    else if(obj==menuItem14)

    {new Book();

    }

    else if(obj==menuItem3|obj==menuItem4|obj==menuItem5)

    {new CardManagement();

    }

    else if(obj==menuItem6)

    {new Borrow();

    }

    else if(obj==menuItem7)

    {new Return();

    }

    else if(obj==menuItem9)

    {new BookInfo();

    }

    else if(obj==menuItem10)

    {new UserQuery();

    }

    else if(obj==menuItem15)

    {new Renew();

    }

    else if(obj==menuItem16)

    {new NewBookReport();

    }

    else if(obj==menuItem17)

    {new CallUpReturn();

    }

    else if(obj==menuItem12)

    {new BorrowQuery();

    }

    

   }

   public static void main(String[]args)

   {

      new MainFrame();

   }

}

NewBookReport.java

import javax.swing.*;

import javax.swing.table.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

public class NewBookReport implements ActionListener

{private JRadioButton rbtn1,rbtn2,rbtn3;

 private JComboBox jcbx;

 private JFrame frame;

 private String[]columnNames={"书名","作者","出版社","出版日期","价格"};

 private Object[][]rowData=new Object[1000][5];

 private JTable tableTest;

 private JButton btn;

 private Statement stmt;

 private Connection con;

   public NewBookReport()

   {JFrame.setDefaultLookAndFeelDecorated(true);

    frame=new JFrame("新书通报");

    Container content=frame.getContentPane();

    rbtn1=new JRadioButton("近一周");

    rbtn2=new JRadioButton("近一月");

    rbtn3=new JRadioButton("近三个月");

    rbtn1.setSelected(true);

    ButtonGroup bgp=new ButtonGroup();

    bgp.add(rbtn1);

    bgp.add(rbtn2);

    bgp.add(rbtn3);

    

    btn=new JButton("查询");

    btn.addActionListener(this);

    JLabel lb=new JLabel("新书分类:");

    String[] kindname={"马克思列宁主义、毛泽东思想","综合性图书","哲学","社会科学总论",

    "政治、法律","军事","经济","文化、科学、教育、体育","语言文字","文学","天文学、地球科学",

    "生物科学","医药、卫生","农业科学","工业技术","艺术","历史、地理","数理化","自然科学总论",

    "环境科学","航空航天","交通"};

    jcbx=new JComboBox(kindname);

    JPanel pl=new JPanel();

    pl.setLayout(new GridLayout(2,3,10,10));

    pl.add(rbtn1);

    pl.add(rbtn2);

    pl.add(rbtn3);

    pl.add(lb);

    pl.add(jcbx);

    pl.add(btn);

    content.add(pl,BorderLayout.NORTH);

    tableTest=new JTable(rowData,columnNames);

    tableTest.setRowHeight(30);

    tableTest.setRequestFocusEnabled(false);

    tableTest.setPreferredScrollableViewportSize(new Dimension(500,60));

    JScrollPane scrollPane=new JScrollPane(tableTest);

    content.add(scrollPane,BorderLayout.CENTER);

    frame.pack();

    frame.setVisible(true);

    try

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

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

     stmt=con.createStatement();

    }

    catch(ClassNotFoundException e)

    {System.err.println(e);

    }

    catch(SQLException e)

    {System.err.println(e);

    }

    

    

     

   }

   public void actionPerformed(ActionEvent e)

   {Object obj=(JButton)e.getSource();

    String kindname,sqlStr;

    ResultSet result;

    int i=0;

    java.util.Date today=new java.util.Date();

    java.util.Date day;

    

    try

    {

      if(obj==btn)

      { if(rbtn1.isSelected())

        {

         today.setDate(today.getDate()-7);

        }

        if(rbtn2.isSelected())

        {

        today.setDate(today.getDate()-30);

        }

        if(rbtn3.isSelected())

        {today.setDate(today.getDate()-90);

        }

        for(int j=0;j<rowData.length;j++)

        { for(int k=0;k<5;k++)

          {rowData[j][k]=null;

          }

        }

        kindname=(String)jcbx.getSelectedItem();

        sqlStr="select bookname,author,publishingcompany,publishtime,"+

        "price,putintime from book where kindname="+"'"+kindname+"'";

        result=stmt.executeQuery(sqlStr);

        while(result.next())

        {day=result.getDate("putintime");

         if(day.after(today))

         { if(i<rowData.length)

           {

         rowData[i][0]=result.getString("bookname");

         rowData[i][1]=result.getString("author");

         rowData[i][2]=result.getString("publishingcompany");

         rowData[i][3]=result.getDate("publishtime");

         rowData[i][4]=result.getBigDecimal("price",2);

          }

         i++;

         }

         JOptionPane.showMessageDialog(frame,""+i);

        }

       

        tableTest.repaint();

       

        

      }

    

    }

    catch(SQLException sqle)

    {

      System.err.println(sqle);

    }

     

   }

   public static void main(String[]args)

   {new NewBookReport();

   }

}

Renew.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

import java.util.Date;

import java.text.*;

import java.math.*;

public class Renew implements ActionListener

{ private JTextField jtfd1,jtfd2,jtfd3;

  private JLabel lb4;

  private JButton btn1,btn2,btn3;

  private Connection con;

  private Statement stmt;

  private PreparedStatement pstmt;

  private JFrame frame;

   public Renew()

   {JFrame.setDefaultLookAndFeelDecorated(true);

    frame=new JFrame("续借");

    Container content=frame.getContentPane();

    

    content.setLayout(new GridLayout(5,2,10,10));

    JLabel lb1=new JLabel("条形码:");

    JLabel lb2=new JLabel("续借日期:");

    JLabel lb3=new JLabel("应还日期:");

    lb4=new JLabel("罚款:");

    jtfd1=new JTextField();

    jtfd2=new JTextField();

    jtfd3=new JTextField();

    jtfd2.addFocusListener(new FocusHandler());

    jtfd3.addFocusListener(new FocusHandler());

    btn1=new JButton("交款");

    btn2=new JButton("续借");

    btn3=new JButton("退出");

    btn1.addActionListener(this);

    btn2.addActionListener(this);

    btn3.addActionListener(this);

    content.add(lb1);

    content.add(jtfd1);

    content.add(lb2);

    content.add(jtfd2);

    content.add(lb3);

    content.add(jtfd3);

    content.add(lb4);

    content.add(btn1);

    content.add(btn2);

    content.add(btn3);

    frame.setBounds(100,100,400,300);

    frame.setVisible(true);

    

    try{

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

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

      stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

      ResultSet.CONCUR_READ_ONLY);

      pstmt=con.prepareStatement("update borrow set receivedate=?,renew='是'"+

      " where bannercode=? ");

    }

    catch(ClassNotFoundException e)

    {

    }

    catch(SQLException e)

    {

    }

   }

  

   class FocusHandler implements FocusListener

   {   java.util.Date today1=new java.util.Date();

       DateFormat format=DateFormat.getDateInstance();

       String formatted=format.format(today1);

      

      public void focusGained(FocusEvent e)

      {Object obj=(JTextField)e.getSource();

       if(obj==jtfd2)

       {jtfd2.setText(formatted);

       }

       if(obj==jtfd3)

       {java.util.Date today2=new java.util.Date();

        today2.setMonth(today2.getMonth()+1);

        formatted=format.format(today2);

       

        jtfd3.setText(formatted);

       }

        

      }

  

      public void focusLost(FocusEvent e)

      {

        

      }

    

   }

   public void actionPerformed(ActionEvent e)

   {  String sqlStr,str,str2,str3,cardnumber;

      ResultSet result,result2;

      java.util.Date today=new java.util.Date();

      int day1,day2,res;

      float money=0;

       str=jtfd1.getText().trim();

      

       str3=jtfd3.getText().trim();

       sqlStr="select receivedate,user_cardnumber,renew from borrow where bannercode="+

       "'"+str+"'";

      Object obj=(JButton)e.getSource();

      try{

     

      if(obj==btn2)

      {if(str.equals("")|str3.equals(""))

        {JOptionPane.showMessageDialog(frame,"Text can't be null!");

         jtfd1.setText("");

         return;

        }

        result=stmt.executeQuery(sqlStr);

      if(result.next())

      {java.util.Date recdate=result.getDate("receivedate");

          cardnumber=result.getString("user_cardnumber");

          str2=result.getString("renew");

         if(str2.equals("是"))

         {JOptionPane.showMessageDialog(frame,"you can renew only once!");

           jtfd1.setText("");

          return;

         }

       if(recdate.before(today))

       {day1=today.getYear()*365+today.getMonth()*30+today.getDay();

        day2=recdate.getYear()*365+recdate.getMonth()*30+recdate.getDate();

        money=(float)((day1-day2)*0.1);

        sqlStr="select * from punishment where user_cardnumber="+

        "'"+cardnumber+"'";

        result2=stmt.executeQuery(sqlStr);

        if(!result2.next())

        {

         sqlStr="insert into punishment(user_cardnumber,sum_account)"+

        "values("+"'"+cardnumber+"'"+","+money+")";

         stmt.executeUpdate(sqlStr);

         JOptionPane.showMessageDialog(frame,"insert a record!");

        }

        else

        {sqlStr="update punishment set sum_account=sum_account+"+money+

        " where user_cardnumber="+"'"+cardnumber+"'";

         stmt.executeUpdate(sqlStr);

         JOptionPane.showMessageDialog(frame,"update a record!");

        }

    

       }

      java.sql.Date renewDate=java.sql.Date.valueOf(str3);

      pstmt.setDate(1,renewDate);

      pstmt.setString(2,str);

      res=pstmt.executeUpdate();

      if(res>0)

      {JOptionPane.showMessageDialog(frame,"renew successfully!");

      }

     

      sqlStr="select sum_account from punishment where user_cardnumber="+

      "'"+cardnumber+"'";

      result2=stmt.executeQuery(sqlStr);

     

      if(result2.next())

      {

     

      BigDecimal mon=result2.getBigDecimal("sum_account",2);

      lb4.setText("罚款:"+mon);

     

      }

      else

      {lb4.setText("罚款:0.00");

      }

       

        }

      jtfd1.setText("");   

      }

      if(obj==btn1)

      {

       if(str.equals(""))

        {JOptionPane.showMessageDialog(frame,"Text can't be null!");

        

         return;

        }

        result=stmt.executeQuery(sqlStr);

        if(result.next())

        {cardnumber=result.getString("user_cardnumber");

         sqlStr="delete from punishment where user_cardnumber="+

         "'"+cardnumber+"'";

         res=stmt.executeUpdate(sqlStr);

         if(res>0)

         {JOptionPane.showMessageDialog(frame,"pay successfully!");

          lb4.setText("罚款:0.00");

         }

        }

      }

      if(obj==btn3)

      {stmt.close();

       con.close();

       frame.dispose();

      }

     

      }

      catch(SQLException sqle)

      {

      }

   }

   public static void main(String[]args)

   {

    new Renew();

   }

}

Return.java

import javax.swing.*;

import java.awt.*;

import java.sql.*;

import java.awt.event.*;

import java.util.*;

public class Return implements ActionListener

{private  JButton btn1,btn2;

 private  JTextField jtfd;

 private  Connection con;

 private  Statement stmt;

 private  JFrame frame;

   public Return()

   {

  

   JFrame.setDefaultLookAndFeelDecorated(true);

   frame=new JFrame("还书");

   Container content=frame.getContentPane();

  

   JLabel lb=new JLabel("条形码:");

   btn1=new JButton("确定");

   btn2=new JButton("退出");

   jtfd=new JTextField();

   btn1.addActionListener(this);

   btn2.addActionListener(this);

   GridBagLayout gbl=new GridBagLayout();

   GridBagConstraints gbc=new GridBagConstraints();

   gbc.fill=GridBagConstraints.BOTH;

   gbc.weightx=gbc.weighty=10.0;

   content.setLayout(gbl);

   gbc.gridx=0;

   gbc.gridy=0;

   gbc.gridwidth=1;

   gbc.gridheight=1;

   gbc.weightx=4;

   gbc.insets=new Insets(10,10,0,0);

   gbl.setConstraints(lb,gbc);

   content.add(lb);

   gbc.gridx=1;

   gbc.gridy=0;

  

   gbc.weightx=6;

   gbc.insets=new Insets(10,10,0,10);

   gbl.setConstraints(jtfd,gbc);

   content.add(jtfd);

   gbc.gridx=0;

   gbc.gridy=1;

  

   gbc.weightx=5;

   gbc.insets=new Insets(30,20,20,20);

   gbl.setConstraints(btn1,gbc);

   content.add(btn1);

   gbc.gridx=1;

   gbc.gridy=1;

   gbc.weightx=5;

   gbc.insets=new Insets(30,35,20,35);

   gbl.setConstraints(btn2,gbc);

   content.add(btn2);

   frame.setBounds(100,100,420,160);

   frame.setResizable(true);

   frame.setVisible(true);

   try

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

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

    stmt=con.createStatement();

   }

   catch(ClassNotFoundException e)

   {System.err.println(e.getMessage());

   }

   catch(SQLException e)

   {System.err.println(e.getMessage());

   }

   }

   public void actionPerformed(ActionEvent e)

   {String str,sqlStr,cardnumber;

    int day1,day2,res;

    float money=0;

    ResultSet result,result2;

    Object obj=(JButton)e.getSource();

    try{

    

    if(obj==btn1)

    {str=jtfd.getText().trim();

     sqlStr="select receivedate,user_cardnumber from borrow where bannercode="+

     "'"+str+"'";

    

     if(str.equals(""))

     {JOptionPane.showMessageDialog(frame,"Text was null!");

      return;

     }

     result=stmt.executeQuery(sqlStr);

     if(result.next())

     {java.util.Date recdate=result.getDate("receivedate");

      cardnumber=result.getString("user_cardnumber");

      java.util.Date today=new java.util.Date();

    

       if(recdate.before(today))

       {day1=today.getYear()*365+today.getMonth()*30+today.getDay();

        day2=recdate.getYear()*365+recdate.getMonth()*30+recdate.getDate();

        money=(float)((day1-day2)*0.1);

        sqlStr="select * from punishment where user_cardnumber="+

        "'"+cardnumber+"'";

        result2=stmt.executeQuery(sqlStr);

        if(!result2.next())

        {

         sqlStr="insert into punishment(user_cardnumber,sum_account)"+

        "values("+"'"+cardnumber+"'"+","+money+")";

         stmt.executeUpdate(sqlStr);

         JOptionPane.showMessageDialog(frame,"insert a record!");

        }

        else

        {sqlStr="update punishment set sum_account=sum_account+"+money+

        " where user_cardnumber="+"'"+cardnumber+"'";

         stmt.executeUpdate(sqlStr);

         JOptionPane.showMessageDialog(frame,"update a record!");

        }

    

       }

         sqlStr="delete from borrow where bannercode="+"'"+str+"'";

       

         res=stmt.executeUpdate(sqlStr);

         if(res>0)

         {

          sqlStr="update book set state='在架' where bannercode="+

          "'"+str+"'";

          stmt.executeUpdate(sqlStr);

          JOptionPane.showMessageDialog(frame,"return successfully!");

         }

     }

     jtfd.setText("");

    }

    if(obj==btn2)

    {stmt.close();

     con.close();

     frame.dispose();

    }

    

    

    }

    catch(SQLException sqle)

    {System.err.println(sqle.getMessage());

    

    }

   }

   public static void main(String[]args)

   {new Return();

   }

}

TransactCard.java

import javax.swing.*;

import javax.swing.event.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

import java.util.*;

import java.text.*;

public class TransactCard implements ActionListener

{private  JButton btn1,btn2,btn3,btn4;

 private  JTextField tfd1,tfd3,tfd4,tfd5;

 private  JComboBox jcb1,jcb2,jcb3;

 private  PreparedStatement pstmt;

 private  Connection con;

 private  JFrame frame;

 private static Statement stmt;

   public TransactCard()

   {

      JFrame.setDefaultLookAndFeelDecorated(true);

    frame=new JFrame("图书证办理");

      Container content=frame.getContentPane();

     

      frame.addWindowListener(new WindowAdapter()

      {

         public void windowCloing(WindowEvent e)

         {try{

        

            pstmt.close();

             con.close();

             stmt.close();

             frame.dispose();

             }

             catch(SQLException sqle)

             {

             }

         }

        

      });

  

      content.setLayout(new BorderLayout());

      JPanel Jpl=new JPanel();

      JPanel Jpl2=new JPanel();

      Jpl.setLayout(new GridLayout(7,2,2,6));

      Jpl2.setLayout(new GridLayout(1,4,2,0));

      JLabel lb1=new JLabel("姓名:");

      JLabel lb2=new JLabel("性别:");

      JLabel lb3=new JLabel("身份:");

      JLabel lb4=new JLabel("单位:");

      JLabel lb5=new JLabel("证件号码:");

      JLabel lb6=new JLabel("注册日期:");

      JLabel lb7=new JLabel("有效日期:");

     

      btn1=new JButton("添加");

      btn2=new JButton("删除");

      btn3=new JButton("撤消");

      btn4=new JButton("退出");

      btn1.addActionListener(this);

      btn2.addActionListener(this);

      btn3.addActionListener(this);

      btn4.addActionListener(this);

     

      tfd1=new JTextField();

  

      tfd3=new JTextField();

      tfd4=new JTextField();

      tfd5=new JTextField();

      tfd4.addFocusListener(new FocusHandler());

      tfd5.addFocusListener(new FocusHandler());

     

      String[] str_sex={"男","女"};

      String[] str_office={"计算机系","电子系","商学系","机电系","外语系"};

      String[] str_status={"学生","教师"};

     

      jcb1=new JComboBox(str_sex);

      jcb2=new JComboBox(str_status);

      jcb3=new JComboBox(str_office);

      jcb2.setEditable(true);

     

      Jpl.add(lb1);

      Jpl.add(tfd1);

      Jpl.add(lb2);

      Jpl.add(jcb1);

      Jpl.add(lb3);

      Jpl.add(jcb2);

      Jpl.add(lb4);

      Jpl.add(jcb3);

      Jpl.add(lb5);

      Jpl.add(tfd3);

      Jpl.add(lb6);

      Jpl.add(tfd4);

      Jpl.add(lb7);

      Jpl.add(tfd5);

      Jpl.setBorder(BorderFactory.createTitledBorder("图书证注册"));

      Jpl2.add(btn1);

      Jpl2.add(btn2);

      Jpl2.add(btn3);

      Jpl2.add(btn4);

      Jpl2.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY));

     

      content.add(Jpl,BorderLayout.CENTER);

      content.add(Jpl2,BorderLayout.SOUTH);

      frame.pack();

      frame.setLocationRelativeTo(null);

      frame.setSize(450,400);

      frame.setVisible(true);

      try{

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

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

         String str;

         str="insert into user (user_name,user_sex,user_status,user_office,"+

         "user_cardnumber,user_registerdate,user_canceldate,user_state) values(?,?,?,?,?,?,?,'正常')";

         pstmt=con.prepareStatement(str,ResultSet.TYPE_SCROLL_INSENSITIVE,

         ResultSet.CONCUR_UPDATABLE);

         stmt=con.createStatement();

         }

         catch(SQLException e)

         {

        

         }

         catch(ClassNotFoundException cnfe)

         {

         }

     

   }

   class FocusHandler implements FocusListener

   { java.util.Date today=new java.util.Date();

     java.util.Date today2=new java.util.Date();

     String formatted2;

     DateFormat fmt=DateFormat.getDateInstance();

     String formatted=fmt.format(today);

    

    

    public void focusGained(FocusEvent e)

    {Object obj=(JTextField)e.getSource();

     if(obj==tfd4)

     {tfd4.setText(formatted);

     }

     if(obj==tfd5)

     {today2.setYear(today.getYear()+4);

      formatted2=fmt.format(today2);

      tfd5.setText(formatted2);

     }

    }

    public void focusLost(FocusEvent e)

    {

    }

   }

   public void actionPerformed(ActionEvent e)

   {String str1,str2,str3,str4,str5,str6,str7;

   java.sql.Date today1,today2;

    

    str1=tfd1.getText().trim();

    str2=jcb1.getSelectedItem().toString();

    str3=jcb2.getSelectedItem().toString();

    str4=jcb3.getSelectedItem().toString();

    str5=tfd3.getText().trim();

    str6=tfd4.getText().trim();

    str7=tfd5.getText().trim();

    

    String sqlStr="delete from user where user_cardnumber="+"'"+str5+"'";

    Object obj=(JButton)e.getSource();

    try{

    

     if(obj==btn1)

      {

      today1=java.sql.Date.valueOf(str6);

       today2=java.sql.Date.valueOf(str7);

     pstmt.setString(1,str1);

     pstmt.setString(2,str2);

     pstmt.setString(3,str3);

     pstmt.setString(4,str4);

     pstmt.setString(5,str5);

     pstmt.setDate(6,today1);

     pstmt.setDate(7,today2);

     pstmt.executeUpdate();

       

      }

    else if(obj==btn2)

    {

     stmt.executeUpdate(sqlStr);

    }

    else if(obj==btn3)

    {tfd1.setText("");

    

     tfd3.setText("");

     tfd4.setText("");

     tfd5.setText("");

    }

    else if(obj==btn4)

    {pstmt.close();

     stmt.close();

     con.close();

    

     frame.dispose();

    

    }

    }

     catch(SQLException sqle)

         {System.err.println(sqle.getMessage());

         }

   }

   public static void main(String[]args)

   {

      new TransactCard();

   }

}

UserQuery.java

import javax.swing.*;

import java.sql.*;

import java.awt.event.*;

import java.awt.*;

import java.util.*;

public class UserQuery implements ActionListener

{private JFrame frame;

 private JButton btn1,btn2;

 private Statement stmt;

 private Connection con;

 private JTextField jtfd1,jtfd2,jtfd3,jtfd4,jtfd5,jtfd6,jtfd7,jtfd8;

   public UserQuery()

   { JFrame.setDefaultLookAndFeelDecorated(true);

      frame=new JFrame("用户查询");

      Container content=frame.getContentPane();

      JLabel lb=new JLabel("请输入借阅证和姓名进行查询");

      lb.setFont(new Font("仿宋",Font.PLAIN,16));

      lb.setForeground(Color.blue);

      JLabel lb1=new JLabel("借阅证号:*");

      JLabel lb2=new JLabel("姓名:*");

      JLabel lb3=new JLabel("性别:");

      JLabel lb4=new JLabel("身份:");

      JLabel lb5=new JLabel("单位:");

      JLabel lb6=new JLabel("注册日期:");

      JLabel lb7=new JLabel("有效期:");

      JLabel lb8=new JLabel("证件状态:");

      jtfd1=new JTextField();

      jtfd2=new JTextField();

      jtfd3=new JTextField();

      jtfd4=new JTextField();

      jtfd5=new JTextField();

      jtfd6=new JTextField();

      jtfd7=new JTextField();

      jtfd8=new JTextField();

      btn1=new JButton("查询");

      btn2=new JButton("退出");

      btn1.addActionListener(this);

      btn2.addActionListener(this);

      JPanel pl=new JPanel();

      JPanel pl2=new JPanel();

      JPanel pl3=new JPanel();

      pl.setLayout(new BorderLayout());

      pl.add(lb,BorderLayout.CENTER);

      pl2.setLayout(new GridLayout(8,8,5,5));

      pl2.add(lb1);

      pl2.add(jtfd1);

      pl2.add(lb2);

      pl2.add(jtfd2);

      pl2.add(lb3);

      pl2.add(jtfd3);

      pl2.add(lb4);

      pl2.add(jtfd4);

      pl2.add(lb5);

      pl2.add(jtfd5);

      pl2.add(lb6);

      pl2.add(jtfd6);

      pl2.add(lb7);

      pl2.add(jtfd7);

      pl2.add(lb8);

      pl2.add(jtfd8);

      pl3.setLayout(new FlowLayout());

      pl3.add(btn1);

      pl3.add(btn2);

      content.add(pl,BorderLayout.NORTH);

      content.add(pl2,BorderLayout.CENTER);

      content.add(pl3,BorderLayout.SOUTH);

      frame.setBounds(100,100,450,400);

      frame.setVisible(true);

      try

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

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

       stmt=con.createStatement();

       

      }

      catch(ClassNotFoundException e)

      {System.err.println(e);

      }

      catch(SQLException e)

      {System.err.println(e.getMessage());

      }

  

     

     

   }

  

   public void actionPerformed(ActionEvent e)

   {  String str1,str2,str3,str4,str5,str6,str7,str8,sqlStr,str;

      ResultSet result;

      str1=jtfd1.getText().trim();

      str2=jtfd2.getText().trim();

      Object obj=(JButton)e.getSource();

      try

      {

         if(obj==btn1)

         {

            if(str1.equals("")|str2.equals(""))

            {JOptionPane.showMessageDialog(frame,"姓名和借阅证号不能为空!");

             return;

            }

            sqlStr="select * from user where user_cardnumber="+

            "'"+str1+"'";

            result=stmt.executeQuery(sqlStr);

            if(result.next())

            {str=result.getString("user_name");

             if(str.equals(str2))

             {str3=result.getString("user_sex");

              str4=result.getString("user_status");

              str5=result.getString("user_office");

              str6=result.getDate("user_registerdate").toString();

              str7=result.getDate("user_canceldate").toString();

              str8=result.getString("user_state");

              jtfd3.setText(str3);

              jtfd4.setText(str4);

              jtfd5.setText(str5);

              jtfd6.setText(str6);

              jtfd7.setText(str7);

              jtfd8.setText(str8);

             }

             else

             {JOptionPane.showMessageDialog(frame,"借阅证与姓名不符!");

              jtfd1.setText("");

              jtfd2.setText("");

             }

            }

            else

            {JOptionPane.showMessageDialog(frame,"无效的借阅证号!");

             jtfd1.setText("");

            }

           

         }

         if(obj==btn2)

         {stmt.close();

          con.close();

          frame.dispose();

         }

      }

      catch(SQLException sqle)

      {System.err.println(sqle);

     

      }

   }

   public static void main(String[]args)

   {new UserQuery();

   }

   }

Library.java

/**

 * AWT Sample application

 *

 * @author

 * @version 1.00 04/12/31

 */

public class Library {

   

    public static void main(String[] args) {

        // Create application frame.

        LibraryFrame frame = new LibraryFrame();

       

        // Show frame

        frame.setVisible(true);

    }

}

LibraryFrame.java

import java.awt.*;

import java.awt.event.*;

/**

 * Sample application using Frame.

 *

 * @author

 * @version 1.00 04/12/31

 */

public class LibraryFrame extends Frame {

   

    /**

     * The constructor.

     */ 

     public LibraryFrame() {

               

        MenuBar menuBar = new MenuBar();

        Menu menuFile = new Menu();

        MenuItem menuFileExit = new MenuItem();

       

        menuFile.setLabel("File");

        menuFileExit.setLabel("Exit");

       

        // Add action listener.for the menu button

        menuFileExit.addActionListener

        (

            new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    LibraryFrame.this.windowClosed();

                }

            }

        );

        menuFile.add(menuFileExit);

        menuBar.add(menuFile);

       

        setTitle("Library");

        setMenuBar(menuBar);

        setSize(new Dimension(400, 400));

       

        // Add window listener.

        this.addWindowListener

        (

            new WindowAdapter() {

                public void windowClosing(WindowEvent e) {

                    LibraryFrame.this.windowClosed();

                }

            }

        ); 

    }

   

   

    /**

     * Shutdown procedure when run as an application.

     */

    protected void windowClosed() {

      

       // TODO: Check if it is save to close the application

      

        // Exit application.

        System.exit(0);

    }

}

   

          

      

  

                                 

更多相关推荐:
图书管理系统需求分析报告

图书管理系统需求分析报告目录图书管理系统需求分析报告21引言211编写目的212项目背景213相关定义22需求概述321目标322用户类和特征323运行环境33需求分析331数据需求332事物需求433系统的业...

图书管理系统需求分析报告

图书管理系统需求规格说明书盛旭张驰1引言随着计算机技术的不断应用和提高计算机已经深入到社会生活的各个角落计算机软件也在各方面得到广泛的应用但是很多图书馆仍采用手工管理图书的方法不仅效率低易出错手续繁琐而且耗费大...

图书管理系统需求分析报告(经典范例)

实验报告课程名称软件工程导论课题名称图书管理系统需求分析报告专业计算机科学与技术班级计算机0903学号**姓名指导教师20##年4月24日图书管理系统需求分析1、引言1.1编写目的编写本报告的目的是明确本系统的…

图书管理系统需求分析报告

图书管理系统需求分析1引言11编写目的编写本报告的目的是明确本系统的详细需求提供给使用单位确认系统的功能和性能并在此基础上进行修改和完善同时作为设计人员进行软件设计的依据和使用单位的验收标准12项目背景实现一个...

图书管理系统需求分析报告

设计名称课程名称姓名班级授课教师信息工程学院课程设计图书管理系统需求分析报告软件需求2薄文正12软件工程1班邱老师目录第一章引言211编写目的212项目背景213产品范围214术语说明215参考文献3第二章项目...

图书管理系统需求分析报告

图书管理系统需求分析1、引言1.1编写目的编写本报告的目的是明确本系统的详细需求,提供给使用单位确认系统的功能和性能,并在此基础上进行修改和完善,同时作为设计人员进行软件设计的依据和使用单位的验收标准。1.2项…

图书管理系统需求分析报告

图书管理系统需求分析报告目录图书管理系统需求分析报告21引言211编写目的212项目背景213相关定义22需求概述321目标322用户类和特征323运行环境33需求分析331数据需求332事物需求433系统的业...

图书管理系统需求分析报告

图书管理系统需求分析报告摘要图书管理系统主要是用来管理图书信息和读者信息而设计的图书管理系统的管理包括用户管理图书管理读者管理借阅管理图书管理系统的查询包括图书查询读者查询借阅查询该系统可以查询图书的基本信息读...

图书馆管理系统需求分析报告

软件工程图书管理系统需求分析设计组名SOS组长总设计师解说员设计成员专业计算机应用报告日期20xx年10月25日星期一1简介11目的1能够存储一定数量的图书信息并方便有效的进行相应的书籍数据操作和管理这主要包括...

图书管理系统需求分析报告

信息系统开发与管理课程实习报告书课题名称图书管理系统需求分析学生姓名学号系年级专业指导教师20xx年12月22日1图书管理系统开发相关技术介绍11JSP介绍JSP技术使用Java编程语言编写类XML的tags和...

图书管理系统需求分析报告软件工程

软件工程作业图书管理系统1引言11编写目的本需求的编写是为了研究利用大型数据库做基础的图书管理系统软件的开发途径和应用方法同时它也是进行项目策划概要设计和详细设计的基础是维护人员进行内部维护信息更新验收和测试的...

5 基于UML的图书管理系统的分析与设计

基于UML的图书管理系统的需求分析与设计摘要本文对面向对象的概念UML产生的背景及其基本内容进行了阐述在对图书馆图书管理系统进行功能描述和需求分析的基础上结合软件工程和面向对象需求分析设计了基于UML的用例图包...

图书管理系统需求分析报告(24篇)