资源描述
本程序以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。mainframe。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;
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("图书管理系统");
//初始化各个按钮
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,BorderLayout。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]){
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。QUESTION_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 con=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。getString(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。addRow(str);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e。printStackTrace();
}
}
public static void main(String args[]){
new mainframe().show();
}
}
*********************************************************
*********************************************************
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={”图书编号","图书名称",”单 价",”出 版 社”};
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。setBorder(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 ));
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]);
dialog。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,90,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();
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].setText(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.toString(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。getconnectin(), 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 init(){
//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.*;
import 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={"图书编号”,”图书名称","出 版 社"};
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<radio.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++){
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);
//设定各个组件的边界
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<radio。length ;i++){
dialog.add(radio[i]);
dialog。add(txtfield[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();
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]。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。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。add(b);
}
for(int i=0;i<list.size();i++){
book b=(book)list.get(i);
Object ob[]={b。getid(),b。getname(),b。getprice(),b。getpublish()};
st。model.addRow(ob);
}
JOptionPane.showMessageDialog(null,”总共找到"+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<radio。length;i++){
if(radio[i].isSelected()){
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 implements 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.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.*;
import 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;integratedSecurity=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[]){
PreparedStatement 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();
JOptionPane.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;
PreparedStatement 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 {
PreparedStatement 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。printStackTrace();
}
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;
}
}
展开阅读全文