1、本程序以java为设计语言,能够实现一个简单的图书管理系统,可以实现简单的增加图书,查询图书,删除图书的功能,其中用到数据库的连接,窗体的布局管理。 本程序有以下几个功能函数组成 所有模块都在名为bookmanager的包中 1:主函数mainframe.java 2:增加模块 adddialog.java 3:查询模块 searchdialog。java 4:查询结果模块 searchresult.java 5:书本类book.java 6:数据库连接类 dbcon.java 1. 主界面 2. 添加模块 3. 查询模块 4. 输出模块 源程序如下 1。mainf
2、rame。java package bookmanager; import javax.swing.*; import javax.swing。table。DefaultTableModel; import java。awt.*; import java.awt.event.*; import java.sql.Connection; import java.sql。PreparedStatement; import java。sql.ResultSet; import java。sql.SQLException; import java.util.LinkedList;
3、 public class mainframe extends JFrame implements ActionListener{ private JToolBar tb; String []btntitle={"增加”,"查询”,”删除",”退出”}; String []tabeltitle={"图书编号",”书名",”定价","出版社"}; JButton btn[]=new JButton[4]; JTable table; DefaultTableModel model; public mainframe(){ super("图书管理系统"); //初始化各个按
4、钮 tb=new JToolBar(”工具栏"); for(int i=0;i〈btntitle.length;i++){ btn[i]=new JButton(btntitle[i]); btn[i].addActionListener(this); tb.add(btn[i]); } //创建表模型 model=new DefaultTableModel(tabeltitle,10); table=new JTable(model); //设定单元格的高度 table.setRowHeight(25); add(tb,BorderLay
5、out。NORTH ); add(new JScrollPane(table),BorderLayout.CENTER ); setSize(900,600); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); setLocation(100,30); init(); } public void actionPerformed(ActionEvent e){ mainframe m=new mainframe(); Object o=e。getSource(); { if(o==btn[0]){
6、adddialog ad=new adddialog(m,25,25); init(); } if(o==btn[1]){ searchdialog sd=new searchdialog(m,25,25); sd.dialog.setVisible(true); init(); } if(o==btn[2]){ int result=JOptionPane。showConfirmDialog(null,”确实要删除该条图书信息吗?","确认”,JOptionPane。YES_NO_OPTION ,JOptionPane。QUESTI
7、ON_MESSAGE ); if(result==0){ Connection con=dbcon.getconnectin(); Object ob=model。getValueAt(table.getSelectedRow(),0); dbcon.delete(con,ob); init(); } else { return ; } } if(o==btn[3]){ System。exit(0); } } } public void init(){ Connection c
8、on=dbcon。getconnectin(); LinkedList list=null; try { PreparedStatement stmt=con。prepareStatement(”select * from book"); ResultSet rs=stmt.executeQuery(); list=new LinkedList(); while(rs。next()){ String id=rs.getString(1); String name=rs。getString(2); String price=rs。getS
9、tring(3); String publish=rs.getString(4); book b=new book(id,name,Float.valueOf(price),publish); list.add(b); } model。setRowCount(0); for(int i=0;i〈list.size();i++){ book b=(book)list.get(i); Object []str={b。getid(),b.getname(),b.getprice(),b。getpublish()}; model。add
10、Row(str); } } catch (SQLException e) { // TODO Auto-generated catch block e。printStackTrace(); } } public static void main(String args[]){ new mainframe().show(); } } ********************************************************* ******************************************************
11、*** 2.Adddialog.java添加模块 package bookmanager; import java.awt。*; import java。awt。event.*; import java.util。LinkedList; import javax.swing。*; public class adddialog implements ActionListener { JLabel label[]=new JLabel[4]; JTextField txt[]=new JTextField[4]; String [] ltitle={”图书编号","图书名称",
12、单 价",”出 版 社”}; String []btitle={"上一个","下一个",”确 定","取 消”}; JButton btn[]=new JButton[4]; JDialog dialog; JPanel p; LinkedList list; public adddialog(JFrame f,int x,int y){ dialog=new JDialog(f,”增加”,true); dialog。setLocation(x,y); p=new JPanel(); list=new LinkedList(); // p。setBo
13、rder(BorderFactory。createTitledBorder("请选择操作”)); // p.setBorder(BorderFactory。createLineBorder(Color。red )); // p.setBorder(BorderFactory。createBevelBorder(0, Color.red , Color.green )); p.setBorder(BorderFactory。createBevelBorder(0, Color.red , Color。green , Color.blue , Color。yellow ));
14、for(int i=0;i〈ltitle.length ;i++){ label[i]=new JLabel(ltitle[i]); label[i].setFont(new Font("宋体",Font.PLAIN ,18)); txt[i]=new JTextField(); btn[i]=new JButton(btitle[i]); btn[i].addActionListener(this); btn[i]。setFont(new Font("幼圆",Font。PLAIN ,15)); dialog.add(label[i]); dia
15、log。add(txt[i]); dialog。add(btn[i]); } dialog.setLayout(null); p。setBounds(10,150,310,160); p。setBackground(Color.green ); label[0].setBounds(10,10,90,25);txt[0].setBounds(110,10,200,25); label[1].setBounds(10,45,90,25);txt[1].setBounds(110,45,200,25); label[2].setBounds(10,80,9
16、0,25);txt[2].setBounds(110,80,200,25); label[3].setBounds(10,115,90,25);txt[3]。setBounds(110,115,200,25); dialog。add(p); btn[0]。setBounds(60,180,80,25);btn[1].setBounds(175,180,80,25); btn[2]。setBounds(60,250,80,25);btn[3]。setBounds(175,250,80,25); dialog。setSize(400,400); dialog.show();
17、 dialog.setDefaultCloseOperation(JFrame。DO_NOTHING_ON_CLOSE ); } public void actionPerformed(ActionEvent e){ int size=list。size(); // init(); // list.add(b); // if(e.getSource()==btn[0]){ // // book b1=(book)list。get(size); // size--; // txt[0].setText(b1.getid()); // txt[1].setTe
18、xt(b1。getname()); // txt[2]。setText(Float。toString(b1.getprice())); // txt[3].setText(b1.getpublish()); // } // if(e.getSource()==btn[1]){ // // book b2=(book)list.get(size); // size++; // txt[0]。setText(b2。getid()); // txt[1]。setText(b2。getname()); // txt[2].setText(Float.toStrin
19、g(b2.getprice())); // txt[3].setText(b2。getpublish()); // } if(e.getSource()==btn[2]){ String id=txt[0].getText(); String name=txt[1]。getText(); float price=getprice(txt[2].getText()); String publish=txt[3]。getText(); Object str[]={id,name,price,publish}; dbcon。insert(dbcon。ge
20、tconnectin(), str); } } private float getprice(String str){ float price=0; try{ price=Float.valueOf(str); } catch(Exception ex){ JOptionPane。showMessageDialog(null,”价格必须是数字,请重新输入!","错误”,JOptionPane。WARNING_MESSAGE ); } return price; } //设定上一个,下一个按钮的可用性 //private void in
21、it(){ //if(list.size()==0) //{ // btn[0].setEnabled(false); // btn[1]。setEnabled(false); // } //else{ // btn[0]。setEnabled(true); // btn[1].setEnabled(true); //} //} } 3。searchdialog。java 查找模块 package bookmanager; import javax。swing.*; import java.awt。*; import java.awt。event.*; imp
22、ort java.sql.Connection; import java.sql.PreparedStatement; import java。sql。ResultSet; import java。sql。SQLException; import java.util.LinkedList; public class searchdialog implements ActionListener ,ItemListener{ JRadioButton []radio=new JRadioButton[3]; ButtonGroup group; String []rtitle={
23、"图书编号”,”图书名称","出 版 社"};
String []btitle={” 确定(Yes)","取消(Esc)”};
JTextField txtfield[]=new JTextField[3];
JButton btn[]=new JButton[2];
JDialog dialog;
searchresult st;
public searchdialog(JFrame f,int x,int y){
//初始化单选按钮
group=new ButtonGroup();
st=new searchresult();
for(int i=0;i 24、io.length;i++){
radio[i]=new JRadioButton(rtitle[i]);
radio[i]。addActionListener(this);
radio[i].setFont(new Font("宋体”,Font。PLAIN ,15));
radio[i]。addItemListener(this);
group。add(radio[i]);
txtfield[i]=new JTextField();
txtfield[i]。setEditable(false);
}
for(int i=0;i〈2;i++) 25、{
btn[i]=new JButton(btitle[i]);
btn[i].addActionListener(this);
btn[i].setFont(new Font("宋体",Font。PLAIN ,15));
}
dialog =new JDialog(f,"查询”,true);
//初始化
radio[0].setSelected(true);
txtfield[0].setEditable(true );
dialog。setLocation(x,y);
dialog.setLayout(null);
//设定各个组件的边 26、界
radio[0]。setBounds(10,10,90,25);txtfield[0]。setBounds(110,10,250,25);
radio[1].setBounds(10,45,90,25);txtfield[1].setBounds(110,45,250,25);
radio[2]。setBounds(10,80,90,25);txtfield[2]。setBounds(110,80,250,25);
for(int i=0;i 27、d[i]);
}
btn[0].setBounds(20,135,120,25);btn[1]。setBounds(200,135,120,25);
dialog.add(btn[0]);dialog。add(btn[1]);
dialog.setSize(400,250);
dialog。setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE );
}
public void actionPerformed(ActionEvent e){
if(e。getSource()==btn[0]){
st。init(); 28、
Connection con=dbcon.getconnectin();
PreparedStatement stmt=null;
ResultSet rs=null;
LinkedList list=new LinkedList();
try {
if(radio[0].isSelected()){
stmt=con.prepareStatement(”select * from book where bid like '%”+txtfield[0]。getText()。trim()+"%'”);
}
if(radio[1]。 29、isSelected()){
stmt=con.prepareStatement("select * from book where bname like ’%"+txtfield[1].getText()。trim()+”%’");
}
if(radio[2].isSelected()){
stmt=con。prepareStatement("select * from book where bpublish like ’%”+txtfield[2].getText().trim()+"%'");
}
rs=stmt。 30、executeQuery();
while(rs。next()){
String id=rs.getString(1);
String name=rs.getString(2);
String price=rs.getString(3);
String publish=rs。getString(4);
book b=new book(id,name,Float。valueOf(price),publish);
list。 31、add(b);
}
for(int i=0;i 32、找到"+list。size()+”条记录!”,"信息”,JOptionPane.INFORMATION_MESSAGE );
st。show();
} catch (SQLException e1) {
// TODO Auto—generated catch block
e1.printStackTrace();
}
}
}
public void itemStateChanged(ItemEvent e){
for(int i=0;i 33、){
txtfield[i]。setEditable(true);
}
else txtfield[i]。setEditable(false);
}
}
}
4.searchresult。java查找结果
package bookmanager;
import javax.swing。*;
import javax.swing。table.DefaultTableModel;
import java。awt.*;
import java。awt。event。*;
public class searchresult extends JFrame impl 34、ements ActionListener{
JTable table;
DefaultTableModel model;
String []rtitle={”图书编号","图书名称”,"单价","出 版 社"};
JDialog dialog;
public searchresult(){
super("查询结果”);
model=new DefaultTableModel(rtitle,0);
table=new JTable(model);
add(new JScrollPane(table),BorderLayout。CENTER );
table. 35、setRowHeight(25);
table。setFont(new Font(”楷体",Font。PLAIN ,18));
setSize(600,400);
}
public void init(){
model。setRowCount(0);
}
public void actionPerformed(ActionEvent e){
//以后扩展用,暂不实现任何功能
}
}
**************************
5。dbcon。java数据库连接类
package bookmanager;
import java。io.*;
imp 36、ort java。net.URL;
import java.sql。*;
import javax。swing。JOptionPane;
public class dbcon {
public final static Connection getconnectin(){
Connection con=null;
try{
Class。forName(”com。microsoft.sqlserver.jdbc.SQLServerDriver”);
String url=”jdbc:sqlserver://localhost:1433;integratedSecuri 37、ty=true;";
con=DriverManager.getConnection(url);
con。setCatalog("book”);
}
catch(ClassNotFoundException ex){
ex。printStackTrace();
}
catch(SQLException ex){
ex。printStackTrace();
}
return con;
}
//添加数据
public final static void insert(Connection con,Object obj[]){
Prepare 38、dStatement stmt=null;
try {
stmt=con.prepareStatement(”insert into book values(?,?,?,?)");
stmt。setString(1,obj[0]。toString());
stmt。setString(2,obj[1].toString());
stmt.setFloat(3,Float。valueOf(obj[2].toString()));
stmt。setString(4,obj[3].toString());
stmt。execute();
JOptionP 39、ane.showMessageDialog(null,"添加成功!”,”操作提示”,JOptionPane。NO_OPTION );
} catch (SQLException e) {
JOptionPane.showMessageDialog(null,”添加数据时发生错误!","信息",JOptionPane。INFORMATION_MESSAGE );
}
}
//查询数据
public final static ResultSet query(Connection con,Object ob){
ResultSet rs=null;
PreparedSt 40、atement stmt=null;
try {
stmt=con.prepareStatement("select * from book”);
rs=stmt。executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}
//删除数据
public final static void delete(Connection con,Object ob){
try {
Pre 41、paredStatement stmt;
stmt=con。prepareStatement("delete from book where bid=?”);
stmt。setObject(1,ob);
stmt.executeUpdate();
JOptionPane。showMessageDialog(null,”信息删除成功!","信息”,JOptionPane。INFORMATION_MESSAGE );
} catch (SQLException e) {
// TODO Auto-generated catch block
e。printSt 42、ackTrace();
}
finally{
}
}
}
6.书本类 book。java
package bookmanager;
public class book {
private String id,name,publish;
private float price;
public book(String id,String name,float price,String publish){
this。id=id;
this。name=name;
this。price =price;
this.publish =publish;
}
public String getid(){
return id;
}
public String getname(){
return name;
}
public float getprice(){
return price;
}
public String getpublish(){
return publish;
}
}






