资源描述
本程序以java为设计语言,可以实现一种简朴图书管理系统,可以实现简朴增长图书,查询图书,删除图书功能,其中用到数据库连接,窗体布局管理。
本程序有如下几种功能函数构成
所有模块都在名为bookmanager包中
1:主函数mainframe.java
2:增长模块 adddialog.java
3:查询模块 searchdialog.java
4:查询成果模块 searchresult.java
5:课本类book.java
6:数据库连接类 dbcon.java
1. 主界面
2. 添加模块
3. 查询模块
4. 输出模块
5.
6.
源程序如下
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 .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;
}
}
展开阅读全文