📄 bookflow.java
字号:
package lib_source;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class BookFlow extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
public static final int WIDTH = 410;
public static final int HEIGHT = 390;
public JTextField[] text = new JTextField[11];
public JTabbedPane HelpPanel;
String dbURL = "jdbc:odbc:Student2007";
String user = "devon";
String password = "book";
public BookFlow() {
setSize(WIDTH, HEIGHT);
setResizable(false);
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
}
});
setTitle("图书流通");
Container content = getContentPane();
content.setLayout(new BorderLayout());
JButton[] button = new JButton[3];
HelpPanel = new JTabbedPane();
content.add(HelpPanel, BorderLayout.NORTH);
JPanel jPanel;
JPanel[] tempPanel;
String[] str2 = { "图书ID号 ", "读者ID号 ", "图书书名 ", "图书作者 ", "出借日期 " };
JLabel[] label;
JPanel panel;
JPanel pane;
String[] str3 = { " 清除 ", " 返回主界面 ",
" 出库 ", " 锁定屏幕 ",
" 退出 " };
String[][] str4 = { { "images/sky2_065.jpg", "images/风景08.jpg" },
{ "images/cz05.jpg", "images/cz06.jpg" } };
label = new JLabel[5];
tempPanel = new JPanel[5];
label = new JLabel[5];
button = new JButton[5];
for (int j = 0; j < 2; j++) {
jPanel = new JPanel();
jPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
jPanel.setLayout(new BorderLayout());
panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.setBorder(new BevelBorder(BevelBorder.RAISED));
if (j == 1) {
str2 = new String[6];
str2[0] = "图书ID号 ";
str2[1] = "读者ID号 ";
str2[2] = "图书书名 ";
str2[3] = "图书作者 ";
str2[4] = "归还日期 ";
str2[5] = "罚款 ";
label = new JLabel[6];
tempPanel = new JPanel[6];
label = new JLabel[6];
}
for (int i = 0; i < str2.length; i++) {
tempPanel[i] = new JPanel();
tempPanel[i].setLayout(new FlowLayout());
tempPanel[i].setBorder(new BevelBorder(BevelBorder.RAISED));
label[i] = new JLabel(str2[i]);
tempPanel[i].add(label[i]);
text[i + 5 * j] = new JTextField(16);
text[i + 5 * j].setBorder(new BevelBorder(BevelBorder.LOWERED));
if (i > 1)
text[i + 5 * j].setEditable(false);
tempPanel[i].add(text[i + 5 * j]);
panel.add(tempPanel[i]);
}
if (j == 0)
panel.add(new JLabel(new ImageIcon(ClassLoader.getSystemResource("images/瀑布.jpg"))));
if (j == 1) {
panel.add(new JLabel(new ImageIcon(ClassLoader.getSystemResource("images/瀑布1.jpg"))));
}
jPanel.add(panel, BorderLayout.CENTER);
pane = new JPanel();
pane.setBorder(new BevelBorder(BevelBorder.RAISED));
panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.setBorder(new BevelBorder(BevelBorder.RAISED));
if (j == 1)
str3[2] = " 入库 ";
for (int i = 0; i < 2; i++)
panel.add(new JLabel(new ImageIcon(ClassLoader.getSystemResource(str4[j][i]))));
for (int i = 0; i < str3.length; i++) {
button[i] = new JButton(str3[i]);
button[i].addActionListener(this);
panel.add(button[i]);
}
pane.add(panel);
jPanel.add(panel, BorderLayout.EAST);
if (j == 0)
HelpPanel.add("借书", jPanel);
else if (j == 1)
HelpPanel.add("还书", jPanel);
}
/**String[] s = { " 请寻找管理员帮助或仔细", " 查看本图书管理系统的说明!",
" 谢谢使用!" };
label = new JLabel[s.length];
jPanel = new JPanel();
jPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));
jPanel.add(new JLabel(new ImageIcon("船.gif"), JLabel.CENTER));
for (int i = 0; i < s.length; i++) {
label[i] = new JLabel(s[i], JLabel.CENTER);
label[i].setFont(new Font("黑体", Font.PLAIN, 20));
jPanel.add(label[i]);
}*/jPanel = new JPanel();
//jPanel.add(new JLabel(new ImageIcon("船.gif"), JLabel.CENTER));
jPanel.add(new JLabel(new ImageIcon(ClassLoader.getSystemResource("images/风景06副本.jpg"))));
HelpPanel.add("帮助", jPanel);
content.add(HelpPanel, BorderLayout.CENTER);
Dimension screen = getToolkit().getScreenSize();
setLocation((screen.width - getSize().width) / 2,
(screen.height - getSize().height) / 2);
}
public void actionPerformed(ActionEvent e) {
String actionCommand = e.getActionCommand();
if (actionCommand.trim().equals("清除")) {
for (int i = 0; i < text.length; i++)
text[i].setText("");
}
else if (actionCommand.trim().equals("入库")) {
if ((text[5]).getText().equals("") || text[6].getText().equals("")) {
JOptionPane.showMessageDialog(this,
" 您输入的借阅者证号或借阅图书号不能为空 ");
} else {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection(dbURL, user,
password);
Statement st = con.createStatement();
ResultSet rs;
rs = st
.executeQuery("SELECT * FROM Book,Reader,Recorder,Configuration WHERE 图书编号 = '"
+ text[5].getText().trim()
+ "' and 读者识别号 = '"
+ text[6].getText().trim()
+ "' and 借阅图书号 = '"
+ text[5].getText().trim()
+ "' and 记录号 = '"+ text[6].getText().trim()+"'");
if (rs.next()) {
if (rs.getString("图书状态").trim().equals("在馆")) {
JOptionPane.showMessageDialog(this,
" 您没有借此书 ");
} else if (!rs.getString("借阅者证号").trim().equals(
text[6].getText().trim())) {
JOptionPane.showMessageDialog(this,
" 请输入借阅此图书的读者的正确的读者ID号! ");
} else {
text[7].setText(rs.getString("图书书名"));
text[8].setText(rs.getString("图书作者"));
text[9].setText(new GetDate().getDate());
int LimitDays=Integer.parseInt(rs.getString("最多借书天数"));
double price=Double.parseDouble(rs.getString("图书单价"));
String LendDate = rs.getString("借书日期");
String ReturnDate = new GetDate().getDate();
int year1=Integer.parseInt(LendDate.substring(0,4));
int year2=Integer.parseInt(ReturnDate.substring(0,4));
int month1=Integer.parseInt(LendDate.substring(5,7));
int month2=Integer.parseInt(ReturnDate.substring(5,7));
int day1=Integer.parseInt(LendDate.substring(8,10));
int day2=Integer.parseInt(LendDate.substring(8,10));
int Days=days( year1, month1, day1,
year2, month2, day2);
if (Days < LimitDays) {
text[10].setText("0.0");
} else
text[10].setText(Double
.toString(price*0.01 * (Days - LimitDays)));
st
.executeUpdate("delete from Recorder where 借阅图书号 ='"
+ text[5].getText().trim() + "'");
st
.executeUpdate("update Book set 图书状态='在馆' where 图书编号='"
+ text[5].getText().trim() + "' ");
st.executeUpdate("update Reader set 借书数目=借书数目-1"
+ " where 读者识别号 = '"
+ text[6].getText().trim() + "' ");
JOptionPane.showMessageDialog(this,
" 您所借图书已还上! ");
}
} else
JOptionPane.showMessageDialog(this,
" 您输入的借阅者证号或借阅图书号有误 ");
con.close();
} catch (Exception ex) {
JOptionPane.showMessageDialog(this,
"数据库连接错误!\n"+ex);
ex.printStackTrace();
}
}
}
else if (actionCommand.trim().equals("出库")) {
if ((text[0]).getText().equals("") || text[1].getText().equals("")) {
JOptionPane.showMessageDialog(this,
" 您输入的借阅者证号或借阅图书号不能为空 ");
} else {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection(dbURL, user,
password);
Statement st = con.createStatement();
ResultSet rs;
String s = "";
rs = st
.executeQuery("SELECT * FROM Book,Reader,Configuration WHERE 图书编号 = '"
+ text[0].getText().trim()
+ "' and 读者识别号 = \'"
+ text[1].getText().trim()
+ "\' and 记录号 = \'"
+ text[1].getText().trim() + "\' ");
if (rs.next()) {
int a = 0, b = 0;
a = rs.getInt("最多可借图书数");
b = rs.getInt("借书数目");
if (a > b) {
if (rs.getString("图书状态").trim().equals("借出")) {
JOptionPane.showMessageDialog(this,
" 您要的图书已被借出 ");
} else {
s = rs.getString("图书书名");
text[2].setText(s);
text[3].setText(rs.getString("图书作者"));
text[4].setText(new GetDate().getDate());
st
.executeUpdate("insert into Recorder (借阅图书号,借阅图书名,借阅者证号,借阅者姓名,借书日期)"
+ "values('"
+ text[0].getText().trim()
+ "', '"
+ s
+ "','"
+ text[1].getText().trim()
+ "', '"
+ rs.getString("读者姓名")
+ "','"
+ new GetDate().getDate()
+ "')");
st
.executeUpdate("update Book set 图书状态='借出' where 图书编号='"
+ text[0].getText().trim()
+ "' ");
st
.executeUpdate("update Reader set 借书数目=借书数目+1"
+ " where 读者识别号 = '"
+ text[1].getText().trim()
+ "' ");
JOptionPane.showMessageDialog(this,
" 您已完成对该书的借阅! ");
}
} else
JOptionPane.showMessageDialog(this,
"您所借图书数目已达最高限制,\n请还上其他书后再借书! ");
} else
JOptionPane.showMessageDialog(this,
" 您输入的借阅者证号或借阅图书号有误 ");
con.close();
} catch (Exception e1) {
JOptionPane.showMessageDialog(this,
"数据库连接错误!\n"+e1);
e1.printStackTrace();
}
}
}
else if (actionCommand.trim().equals("返回主界面")) {
setVisible(false);
new LibraryManagementSystem().setVisible(true);
}
else if (actionCommand.trim().equals("锁定屏幕")) {
try {
Runtime rt = Runtime.getRuntime();
rt.exec("suoding.exe");
} catch (Exception exx) {
}
}
else if (actionCommand.trim().equals("退出")) {
dispose();
}
else JOptionPane.showMessageDialog(this,"按钮监听注册出现错误!");
}
public static boolean leap(int i){
boolean leapyear;
if(i%400==0|(i%100!=0&i%4==0))
leapyear=true;
else leapyear=false;
return leapyear;
}
public static int getday(int year,int month ,int day){
int sum=0,sum1=0,sum2=0,sum3=0;int n=0;
int[] a=new int[12];
a[0]=a[2]=a[4]=a[6]=a[7]=a[9]=a[10]=a[11]=31;
a[3]=a[5]=a[8]=a[10]=30;
sum1=365*(year-1);
for(int i=1;i<year;i++)if(leap(i))n++;
if(leap(year))a[1]=29;
for(int j=0;j<month;j++)sum2+=a[j];
sum3=n;
sum=sum1+sum2+sum3;
return sum;
}
public static int days(int year1,int month1,int day1,
int year2,int month2,int day2){
int m=getday(year1,month1,day1);
int n=getday(year2,month2,day2);
return Math.abs(m-n);
}
public static void main(String[] args) {
new BookFlow().setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -