一、系统需求描述
该系统主要包括读者用户登录系统、管理员用户登入系统、图书管理系统、图书借阅、图书和用户信息查询子系统四个部分,各部分主要功能如下:
读者用户登录子系统:用于数据库的连接,主界面的设计和读者身份用户的登录管理。
管理员用户登入系统:用于管理员用户的管理,如图书添加、图书信息修改。
图书管理系统:用于图书信息的管理,如新书入库、图书信息修改、图书信息删除。
图书借阅系统:用于用户借阅和归还图书。
图书和用户信息查询:图书和用户信息的查询。
实现管理员对用户的增删改查,对图书信息增删查改、图书借阅信息的修改,实现用户对图书的查找、借阅、续借、归还以及修改密码。
二、读者用户登录系统:
package hehe;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
@SuppressWarnings("serial")
public class 菜单1 extends Frame implements ActionListener{
//TextArea ta; //文本区
MenuBar mb; //MenuBar 类封装绑定到框架的菜单栏的
Menu mnLog,mnJy,mnFy,mnLy; //从菜单栏部署的下拉式菜单组件
MenuItem mizhuce,milog,miExit,miyhzh,miyhxx; //菜单中的所有项必须属于类 MenuItem 或其子类之一
MenuItem mifyshow,mifydelete,mifyinsert,mifymodify,milyshow,miyshow,mijyshow,mijyinsert,mijymodify;
public 菜单1(){
super("图书管理系统"); //调用父类构造方法
// ta = new TextArea("",20,20); //新建文本区,第一个参数是默认文本,第二个参数是行数,第三个是列数
/*
* BorderLayout边框布局
* 添加文本区到Frame,BorderLayout.CENTER是居中位置
* */
// add(ta,BorderLayout.CENTER);
mb = new MenuBar(); //创建菜单栏对象
/*
* 创建菜单,指定菜单名
* */
mnLog= new Menu("退出");
mnFy= new Menu("读者信息管理");
mnJy= new Menu("借阅管理");
/* jLabel=new JLabel("欢迎进入设备管理系统");
jLabel.setHorizontalAlignment(JLabel.CENTER);
jLabel.setForeground(Color.red);*/
/*
* 创建子菜单,并指定名称
* */
miExit=new MenuItem("退出");
miExit.addActionListener(this); //为退出菜单添加监听
/*
* 添加上面创建的子菜单到文件菜单下
* */
mnLog.add(miExit);//将一个分隔线或连字符添加到菜单的当前位置
/*
* 添加miBinary、miFont两个子菜单到mnFormat(格式)下
* */
mifyshow=new MenuItem("查看");
mifyshow.addActionListener(this);
mnFy.add(mifyshow);
milyshow.addActionListener(this);
miyshow=new MenuItem("查看");
mnLy.add(miyshow);
miyshow.addActionListener(this);
mijyinsert=new MenuItem("借书");
mijyinsert.addActionListener(this);
mnJy.add(mijyinsert);
/*
* 将文件、编辑、格式、帮助添加到菜单栏
* */
mb.add(mnLog);
mb.add(mnJy);
mb.add(mnFy);
mb.add(mnLy);
setMenuBar(mb); //添加菜单栏到Frame
/*
* 关闭窗口时,关闭运行成语
* */
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String args[]){
菜单1 tm=new 菜单1();
tm.setSize(700,500); //设置窗体的宽、高
tm.setLocation(300,100); //将组件移到新位置Component类方法
tm.setVisible(true); //设置显示窗体,true为显示,false为隐藏
}
/**
* 监听事件,实现ActionListener接口的actionPerformed方法
*/
public void actionPerformed(ActionEvent e){
if(e.getSource()==miExit){
System.exit(0); //停止运行程序
}
if(e.getSource()==mifyshow){
读者信息查询 wo= new 读者信息查询("查看");
this.setVisible(true);
}
if(e.getSource()==mijyinsert){
读者借阅信息插入 wo= new 读者借阅信息插入("借书");
this.setVisible(true);
}
if(e.getSource()==miyshow){
留言查看 wo= new 留言查看("查看");
this.setVisible(true);
}
}}
三、管理员用户登录:
package hehe;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
@SuppressWarnings("serial")
public class 菜单1 extends Frame implements ActionListener{
//TextArea ta; //文本区
MenuBar mb; //MenuBar 类封装绑定到框架的菜单栏的
Menu mnLog,mnJy,mnFy,mnLy; //从菜单栏部署的下拉式菜单组件
MenuItem mizhuce,milog,miExit,miyhzh,miyhxx; //菜单中的所有项必须属于类 MenuItem 或其子类之一
MenuItem mifyshow,mifydelete,mifyinsert,mifymodify,milyshow,miyshow,mijyshow,mijyinsert,mijymodify;
public 菜单1(){
super("图书管理系统"); //调用父类构造方法
// ta = new TextArea("",20,20); //新建文本区,第一个参数是默认文本,第二个参数是行数,第三个是列数
/*
* BorderLayout边框布局
* 添加文本区到Frame,BorderLayout.CENTER是居中位置
* */
// add(ta,BorderLayout.CENTER);
mb = new MenuBar(); //创建菜单栏对象
/*
* 创建菜单,指定菜单名
* */
mnLog= new Menu("退出");
mnFy= new Menu("读者信息管理");
mnJy= new Menu("借阅管理");
/* jLabel=new JLabel("欢迎进入设备管理系统");
jLabel.setHorizontalAlignment(JLabel.CENTER);
jLabel.setForeground(Color.red);*/
/*
* 创建子菜单,并指定名称
* */
miExit=new MenuItem("退出");
miExit.addActionListener(this); //为退出菜单添加监听
/*
* 添加上面创建的子菜单到文件菜单下
* */
mnLog.add(miExit);//将一个分隔线或连字符添加到菜单的当前位置
/*
* 添加miBinary、miFont两个子菜单到mnFormat(格式)下
* */
mifyshow=new MenuItem("查看");
mifyshow.addActionListener(this);
mnFy.add(mifyshow);
milyshow.addActionListener(this);
miyshow=new MenuItem("查看");
mnLy.add(miyshow);
miyshow.addActionListener(this);
mijyinsert=new MenuItem("借书");
mijyinsert.addActionListener(this);
mnJy.add(mijyinsert);
/*
* 将文件、编辑、格式、帮助添加到菜单栏
* */
mb.add(mnLog);
mb.add(mnJy);
mb.add(mnFy);
mb.add(mnLy);
setMenuBar(mb); //添加菜单栏到Frame
/*
* 关闭窗口时,关闭运行成语
* */
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String args[]){
菜单1 tm=new 菜单1();
tm.setSize(700,500); //设置窗体的宽、高
tm.setLocation(300,100); //将组件移到新位置Component类方法
tm.setVisible(true); //设置显示窗体,true为显示,false为隐藏
}
/**
* 监听事件,实现ActionListener接口的actionPerformed方法
*/
public void actionPerformed(ActionEvent e){
if(e.getSource()==miExit){
System.exit(0); //停止运行程序
}
if(e.getSource()==mifyshow){
读者信息查询 wo= new 读者信息查询("查看");
this.setVisible(true);
}
if(e.getSource()==mijyinsert){
读者借阅信息插入 wo= new 读者借阅信息插入("借书");
this.setVisible(true);
}
if(e.getSource()==miyshow){
留言查看 wo= new 留言查看("查看");
this.setVisible(true);
}
}}
四 、登入界面系统:
package hehe;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class 登陆界面 implements ActionListener{
public JFrame jf= new JFrame("图书管理系统系统");
public Container con = jf.getContentPane();
public Toolkit toolkit = Toolkit.getDefaultToolkit(); //获取工具包
public Dimension sc = toolkit.getScreenSize(); //getScreenSize(),最后的这个方法返回一个Dimension类型的对象.是返回当先分辨率的.
Object a,b;
public JRadioButton rb1 = new JRadioButton("读者");
public JRadioButton rb2 = new JRadioButton("管理员");
public ButtonGroup group = new ButtonGroup ();
public JLabel yong_hu = new JLabel("用户名");
public JLabel mi_ma = new JLabel("密码");
public JTextField textName = new JTextField();
public JPasswordField textPs = new JPasswordField();
public JButton deng_ru = new JButton("登陆");
public JButton qu_xiao = new JButton("取消");
public Font font1 = new Font("宋体",1,14);
public Font font2 = new Font("宋体",0,12);
public 登陆界面() {
//con.setLayout(null);
//jf.setSize(sc.width/1,sc.height/2); //大小
/*jf.setLocation(sc.width/5,sc.height/1010); */ /* public void setLocation(int x,
int y)将组件移到新位置。通过此组件父级坐标空间中的 x 和 y 参数来指定新位置的左上角。 参数:
x - 父级坐标空间中新位置左上角的 x 坐标y - 父级坐标空间中新位置左上角的 y 坐标*/
con.setLayout(null);
group.add(rb1);
group.add(rb2);
deng_ru.addActionListener(this);
qu_xiao.addActionListener(this);
rb1.addActionListener(this);
rb2.addActionListener(this);
jf.setSize(/*sc.width/3*/500,sc.height/2);
jf.setLocation(sc.width/3,sc.height/4);
jf.setResizable(false);
yong_hu.setLocation(80,30); //位置
yong_hu.setSize(100, 100); //大小
yong_hu.setFont(font1); //设置字体
yong_hu.setForeground(Color.BLUE );//设置颜色
rb1.setLocation(80,180); //位置
rb1.setSize(65,20); //大小
rb2.setLocation(250,180); //位置
rb2.setSize(80,20); //大小
mi_ma.setLocation(80,90);
mi_ma.setSize(100,100);
mi_ma.setForeground(Color.BLUE ) ;
mi_ma.setFont(font1);
textName.setSize(140, 20);
textName.setLocation(170, 70) ;
textPs.setSize(140, 20);
textPs.setLocation(170, 130) ;
//textPs.setEchoChar('*'); //返回※
deng_ru.setSize(90,25);
deng_ru.setLocation(80,220 ) ;
deng_ru.setFont(font2);
qu_xiao.setSize(90,25) ;
qu_xiao.setLocation(250, 220) ;
qu_xiao.setFont(font2) ;
con.add(rb1) ;
con.add(rb2) ;
con.add(yong_hu) ;
con.add(mi_ma) ;
con.add(textName);
con.add(textPs);
con.add(deng_ru);
con.add(qu_xiao);
con.setBackground(Color.WHITE);
jf.setResizable(false);
jf.setVisible(true) ;
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e)
{
Object dx;
Connection con;
Statement sql;
ResultSet rs;
if(group.getSelection()==rb2.getModel()){
if(e.getSource()==deng_ru)
{
a=textName.getText();
char[]c=textPs.getPassword();
b= new String(c);
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException ee){System.out.println(""+e);}
try{con=DriverManager.getConnection("jdbc:odbc:hehe","","");
sql=con.createStatement();
dx=new Object[1];
rs=sql.executeQuery("select * from 管理员信息表 where 用户名='"+a+"'");
boolean min=rs.next();
if(!min){
// System.out.print("用户名错误");
// JOptionPane.showMessageDialog(this,"用户名或密码错误");
JOptionPane.showMessageDialog(null,"用户名或密码错误");
}
if(min){
dx=rs.getString(2);
}
// ((String) dx).trim();
// ((String) b).trim();
if(!dx.equals(b)){
JOptionPane.showMessageDialog(null,"用户名或密码错误");
}
if(dx.equals(b)){
JOptionPane.showMessageDialog(null,"登入成功");
菜单 n=new 菜单();
n.setSize(500, 300);
n.setVisible(true);
}
}
catch(SQLException ee){
System.out.println(ee);
}
if(e.getSource()==qu_xiao){
System.exit(0);
}
} }
if(group.getSelection()==rb1.getModel()){
if(e.getSource()==deng_ru)
{
a=textName.getText();
char[]c=textPs.getPassword();
b= new String(c);
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException ee){System.out.println(""+e);}
try{con=DriverManager.getConnection("jdbc:odbc:hehe","","");
sql=con.createStatement();
dx=new Object[1];
rs=sql.executeQuery("select * from 读者信息表 where 用户名='"+a+"'");
boolean min=rs.next();
if(!min){
JOptionPane.showMessageDialog(null,"用户名或密码错误");
}
if(min){
dx=rs.getString(2);
}
// ((String) dx).trim();
// ((String) b).trim();
if(!dx.equals(b)){
JOptionPane.showMessageDialog(null,"用户名或密码错误");
}
if(dx.equals(b)){
JOptionPane.showMessageDialog(null,"登入成功");
菜单1 n=new 菜单1();
n.setSize(500, 300);
n.setVisible(true); //设置显示窗体
}
}
catch(SQLException ee){
System.out.println(ee);
}
}
}
}
public static void main(String[] args) {
new 登陆界面();
}
}
五、管理员图书管理:
查询:
package hehe;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class 管理员图书信息查询 extends JDialog implements ActionListener{//负责显示记录的类
JTable table;//表格
Object a[][];
Object name[]={" 图书编号","书名","出版书号","编著者","出版社","出版日期","单价","库存数量" };
JButton S;
Connection con;
Statement sql;
ResultSet rs;
管理员图书信息查询(String title){
setTitle(title);
S=new JButton("显示记录");
S.addActionListener(this);
add(S,BorderLayout.NORTH);
setBounds(200,60,800,250);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
Connection con;
Statement sql;
ResultSet rs;
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException ee){System.out.println(""+e);}
try{con=DriverManager.getConnection("jdbc:odbc:hehe","","");
sql=con.createStatement();
rs=sql.executeQuery("select * from 图书信息表");
rs.last();
int lastNumber=rs.getRow();
a=new Object[lastNumber][8];
int k=0;
rs.beforeFirst();
while(rs.next()){
a[k][0]=rs.getString(1);
a[k][1]=rs.getString(2);
a[k][2]=rs.getString(3);
a[k][3]=rs.getString(4);
a[k][4]=rs.getString(5);
a[k][5]=rs.getString(6);
a[k][6]=rs.getString(7);
a[k][7]=rs.getString(8);
k++;
}
con.close();
// System.out.print("连接失败");
}
catch(SQLException ee){
// System.out.print("连接失败");
System.out.println(ee);
}
table=new JTable(a,name);
getContentPane().removeAll();
add(S,BorderLayout.NORTH);
// System.out.print("连接失败");
add(new JScrollPane(table),BorderLayout.CENTER);//滚动条
validate();
}
public static void main(String args[])
{
管理员图书信息查询 wo=new 管理员图书信息查询("查询");
}
}
添加:
package hehe;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class 管理员图书信息插入 extends JDialog implements ActionListener{
JLabel hintLabel;//标签
Object ono[]={" 图书编号","书名","出版书号","编著者","出版社","出版日期","单价","库存数量"};
Object a[][]=new Object[1][8];
JTable table;
JButton enterInsert;
Connection con;
Statement sql;
ResultSet rs;
String num;
管理员图书信息插入(String s){
setTitle(s);
hintLabel=new JLabel("输入新纪录");
table=new JTable(a,ono);
enterInsert=new JButton("插入新纪录");
setLayout(null);
Box baseBox=Box.createHorizontalBox();//横向
baseBox.add(hintLabel);
baseBox.add(new JScrollPane(table));
baseBox.add(enterInsert);
add(baseBox);
baseBox.setBounds(10,40,600,38);
enterInsert.addActionListener(this);
setBounds(320,160,700,200);
setVisible(true);
}
public 管理员图书信息插入() {
// TODO 自动生成的构造函数存根
}
public void actionPerformed(ActionEvent e){
Connection con;
Statement sql;
ResultSet rs;
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException ee){System.out.println(""+e);}
try{con=DriverManager.getConnection("jdbc:odbc:hehe","","");
sql=con.createStatement();
int k=sql.executeUpdate("INSERT INTO 图书信息表 VALUES('"+a[0][0]+"','"+a[0][1]+"','"+a[0][2]+"','"+a[0][3]+"','"+a[0][4]+"','"+a[0][5]+"','"+a[0][6]+"','"+a[0][7]+"','"+a[0][8]+"' )");
//boolean a=sta.execute(str);
if(k==1)
JOptionPane.showMessageDialog(this,"插入成功");
}
catch(Exception e1) {
e1.printStackTrace();
//System.out.print("连接失败");
}
}
public static void main(String args[])
{
管理员图书信息插入 b=new 管理员图书信息插入("插入");
}
}
修改:
ackage hehe;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.border.*;
public class 管理员图书信息更新 extends JDialog implements ActionListener{ //负责更新记录的类
JLabel hintLabel;
JTextField inputNumber;
Object name[]={"图书编号","书名","出版书号","编著者","出版社","出版日期","单价","库存数量"};
Object a[][]=new Object[1][8];
JTable table;
JButton enterModify;
Connection con;
Statement sql;
ResultSet rs;
String num;
管理员图书信息更新(String s){
setTitle(s);
hintLabel=new JLabel("图书编号(回车确认):");
inputNumber=new JTextField(20);
table=new JTable(a,name);
enterModify=new JButton("更新记录");
setLayout(null);
Box baseBox=Box.createHorizontalBox();
baseBox.add(hintLabel);
baseBox.add(inputNumber);
baseBox.add(new JScrollPane(table));
baseBox.add(enterModify);
add(baseBox);
baseBox.setBounds(60,70,800,50);
inputNumber.addActionListener(this);
enterModify.addActionListener(this);
setBounds(20,100,900,200);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==inputNumber)
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException ee){System.out.println(""+e);}
try{con=DriverManager.getConnection("jdbc:odbc:hehe","","");
sql=con.createStatement();
rs=sql.executeQuery("SELECT * FROM 图书信息表 WHERE 图书编号='"+num+"'");
boolean boo=rs.next();
if(boo==false){
JOptionPane.showMessageDialog
(this,"图书编号不存在","提示",JOptionPane.WARNING_MESSAGE);
}
else{
a[0][0]=rs.getString(1);
a[0][1]=rs.getString(2) ;
a[0][2]=rs.getString(3) ;
a[0][3]=rs.getString(4) ;
a[0][4]=rs.getString(5) ;
a[0][5]=rs.getString(6) ;
a[0][6]=rs.getString(7) ;
a[0][7]=rs.getString(8) ;
table.repaint();
}
con.close();
}
catch(SQLException ee){
System.out.println(ee); }
if(e.getSource()==enterModify){
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException ee){System.out.println(""+e);}
try{con=DriverManager.getConnection("jdbc:odbc:hehe","","");
sql=con.createStatement();
sql.executeUpdate
("UPDATE 图书信息表 SET 图书编号='"+a[0][0]+"',书名='"+a[0][1]+"',出版书号= '"+a[0][2]+"',编著者='"+a[0][3]+"',出版社='"+ a[0][4]+"',出版日期='"+a[0][5]+"',单价='"+a[0][6]+"',库存数量='"+a[0][7]+"''WHERE 设备编号='"+num+"'");
JOptionPane.showMessageDialog
(this,"更新成功","成功",JOptionPane.PLAIN_MESSAGE);
con.close(); }
catch(SQLException ee){ JOptionPane.showMessageDialog
(this,"更新失败"+ee,"失败",JOptionPane.ERROR_MESSAGE); }
} }
public static void main(String args[])
{
管理员图书信息更新 b=new 管理员图书信息更新("更新");
}
}
六、管理员借阅管理系统:
查询:
package hehe;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class 管理员借阅信息查询 extends JDialog implements ActionListener{//负责显示记录的类
JTable table;//表格
Object a[][];
Object name[]={" 读者号","姓名","借阅图书编号","借阅日期","归还日期"};
JButton S;
Connection con;
Statement sql;
ResultSet rs;
管理员借阅信息查询(String title){
setTitle(title);
S=new JButton("显示记录");
S.addActionListener(this);
add(S,BorderLayout.NORTH);
setBounds(200,60,800,250);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
Connection con;
Statement sql;
ResultSet rs;
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException ee){System.out.println(""+e);}
try{con=DriverManager.getConnection("jdbc:odbc:hehe","","");
sql=con.createStatement();
rs=sql.executeQuery("select * from 读者借阅信息表");
rs.last();
int lastNumber=rs.getRow();
a=new Object[lastNumber][5];
int k=0;
rs.beforeFirst();
while(rs.next()){
a[k][0]=rs.getString(1);
a[k][1]=rs.getString(2);
a[k][2]=rs.getString(3);
a[k][3]=rs.getString(4);
a[k][4]=rs.getString(5);
k++;
}
con.close();
// System.out.print("连接失败");
}
catch(SQLException ee){
// System.out.print("连接失败");
System.out.println(ee);
}
table=new JTable(a,name);
getContentPane().removeAll();
add(S,BorderLayout.NORTH);
// System.out.print("连接失败");
add(new JScrollPane(table),BorderLayout.CENTER);//滚动条
validate();
}
public static void main(String args[])
{
管理员借阅信息查询 wo=new 管理员借阅信息查询("查询");
}
}
添加:
package hehe;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class 管理员借阅信息插入 extends JDialog implements ActionListener{
JLabel hintLabel;//标签
Object ono[]={" 读者号","姓名","借阅图书编号","借阅日期","归还日期"};
Object a[][]=new Object[1][5];
JTable table;
JButton enterInsert;
Connection con;
Statement sql;
ResultSet rs;
String num;
管理员借阅信息插入(String s){
setTitle(s);
hintLabel=new JLabel("输入新纪录");
table=new JTable(a,ono);
enterInsert=new JButton("插入新纪录");
setLayout(null);
Box baseBox=Box.createHorizontalBox();//横向
baseBox.add(hintLabel);
baseBox.add(new JScrollPane(table));
baseBox.add(enterInsert);
add(baseBox);
baseBox.setBounds(10,40,600,38);
enterInsert.addActionListener(this);
setBounds(320,160,700,200);
setVisible(true);
}
public 管理员借阅信息插入() {
// TODO 自动生成的构造函数存根
}
public void actionPerformed(ActionEvent e){
Connection con;
Statement sql;
ResultSet rs;
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException ee){System.out.println(""+e);}
try{con=DriverManager.getConnection("jdbc:odbc:hehe","","");
sql=con.createStatement();
int k=sql.executeUpdate("INSERT INTO 读者借阅信息表 VALUES('"+a[0][0]+"','"+a[0][1]+"','"+a[0][2]+"','"+a[0][3]+"','"+a[0][4]+"','"+a[0][5]+"' )");
//boolean a=sta.execute(str);
if(k==1)
JOptionPane.showMessageDialog(this,"插入成功");
}
catch(Exception e1) {
e1.printStackTrace();
//System.out.print("连接失败");
}
}
public static void main(String args[])
{
管理员借阅信息插入 b=new 管理员借阅信息插入("插入");
}
}图书借阅管理子系统:
修改:
package hehe;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.border.*;
public class 管理员借阅信息更新 extends JDialog implements ActionListener{ //负责更新记录的类
JLabel hintLabel;
JTextField inputNumber;
Object name[]={" 读者号","姓名","借阅图书编号","借阅日期","归还日期"};
Object a[][]=new Object[1][5];
JTable table;
JButton enterModify;
Connection con;
Statement sql;
ResultSet rs;
String num;
管理员借阅信息更新(String s){
setTitle(s);
hintLabel=new JLabel("读者号(回车确认):");
inputNumber=new JTextField(20);
table=new JTable(a,name);
enterModify=new JButton("更新记录");
setLayout(null);
Box baseBox=Box.createHorizontalBox();
baseBox.add(hintLabel);
baseBox.add(inputNumber);
baseBox.add(new JScrollPane(table));
baseBox.add(enterModify);
add(baseBox);
baseBox.setBounds(60,70,800,50);
inputNumber.addActionListener(this);
enterModify.addActionListener(this);
setBounds(20,100,900,200);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==inputNumber)
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException ee){System.out.println(""+e);}
try{con=DriverManager.getConnection("jdbc:odbc:hehe","","");
sql=con.createStatement();
rs=sql.executeQuery("SELECT * FROM 读者借阅信息表 WHERE 读者号='"+num+"'");
boolean boo=rs.next();
if(boo==false){
JOptionPane.showMessageDialog
(this,"读者号不存在","提示",JOptionPane.WARNING_MESSAGE);
}
else{
a[0][0]=rs.getString(1);
a[0][1]=rs.getString(2) ;
a[0][2]=rs.getString(3) ;
a[0][3]=rs.getString(4) ;
a[0][4]=rs.getString(5) ;
table.repaint();
}
con.close();
}
catch(SQLException ee){
System.out.println(ee); }
if(e.getSource()==enterModify){
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException ee){System.out.println(""+e);}
try{con=DriverManager.getConnection("jdbc:odbc:hehe","","");
sql=con.createStatement();
sql.executeUpdate
("UPDATE 读者借阅信息表 SET 读者编号='"+a[0][0]+"',姓名='"+a[0][1]+"',借阅图书编号= '"+a[0][2]+"',借阅日期='"+a[0][3]+"',归还日期='"+ a[0][4]+"',出版日期='"+a[0][5]+"'");
JOptionPane.showMessageDialog
(this,"更新成功","成功",JOptionPane.PLAIN_MESSAGE);
con.close(); }
catch(SQLException ee){ JOptionPane.showMessageDialog
(this,"更新失败"+ee,"失败",JOptionPane.ERROR_MESSAGE); }
} }
public static void main(String args[])
{
管理员借阅信息更新 b=new 管理员借阅信息更新("更新");
}
}
借阅:
package hehe;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class 读者借阅信息插入 extends JDialog implements ActionListener{
JLabel hintLabel;//标签
Object ono[]={" 读者号","姓名","借阅图书编号","借阅日期","归还日期"};
Object a[][]=new Object[1][5];
JTable table;
JButton enterInsert;
Connection con;
Statement sql;
ResultSet rs;
String num;
读者借阅信息插入(String s){
setTitle(s);
hintLabel=new JLabel("输入新纪录");
table=new JTable(a,ono);
enterInsert=new JButton("插入新纪录");
setLayout(null);
Box baseBox=Box.createHorizontalBox();//横向
baseBox.add(hintLabel);
baseBox.add(new JScrollPane(table));
baseBox.add(enterInsert);
add(baseBox);
baseBox.setBounds(10,40,600,38);
enterInsert.addActionListener(this);
setBounds(320,160,700,200);
setVisible(true);
}
public 读者借阅信息插入() {
// TODO 自动生成的构造函数存根
}
public void actionPerformed(ActionEvent e){
Connection con;
Statement sql;
ResultSet rs;
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException ee){System.out.println(""+e);}
try{con=DriverManager.getConnection("jdbc:odbc:hehe","","");
sql=con.createStatement();
int k=sql.executeUpdate("INSERT INTO 读者借阅信息表 VALUES('"+a[0][0]+"','"+a[0][1]+"','"+a[0][2]+"','"+a[0][3]+"','"+a[0][4]+"','"+a[0][5]+"' )");
//boolean a=sta.execute(str);
if(k==1)
JOptionPane.showMessageDialog(this,"插入成功");
}
catch(Exception e1) {
e1.printStackTrace();
//System.out.print("连接失败");
}
}
public static void main(String args[])
{
读者借阅信息插入 b=new 读者借阅信息插入("插入");
}
}
七、读者信息查询:
ackage hehe;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
@SuppressWarnings("serial")
public class 读者信息查询 extends JDialog implements ActionListener{//负责显示记录的类
JTable table;//表格
Object a[][];
Object name[]={" 用户名","密码" };
JButton S;
Connection con;
Statement sql;
ResultSet rs;
读者信息查询(String title){
setTitle(title);
S=new JButton("显示");
S.addActionListener(this);
add(S,BorderLayout.NORTH);
setBounds(200,60,800,250);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
Connection con;
Statement sql;
ResultSet rs;
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException ee){System.out.println(""+e);}
try{con=DriverManager.getConnection("jdbc:odbc:hehe","","");
sql=con.createStatement();
rs=sql.executeQuery("select * from 读者信息表");
rs.last();
int lastNumber=rs.getRow();
a=new Object[lastNumber][2];
int k=0;
rs.beforeFirst();
while(rs.next()){
a[k][0]=rs.getString(1);
a[k][1]=rs.getString(2);
k++;
}
con.close();
// System.out.print("连接失败");
}
catch(SQLException ee){
// System.out.print("连接失败");
System.out.println(ee);
}
table=new JTable(a,name);
getContentPane().removeAll();
add(S,BorderLayout.NORTH);
// System.out.print("连接失败");
add(new JScrollPane(table),BorderLayout.CENTER);//滚动条
validate();
}
public static void main(String args[])
{
读者信息查询 wo=new 读者信息查询("查询");
}
}
八、软件测试:
九、测试用例调试: