Java课程设计—— 图书管理系统
1系統需求分析
1.1功能需求分析
本課題根據圖書信息管理綜合分析,便出于方便管理考慮,將圖書信息管理系統的功能總結起來,共需要實現以下幾個方面功能:
1.1.1管理圖書信息
管理所有圖書的基本信息,對圖書信息的操作包括添加、修改、刪除等;可以根據各種條件查詢出需要的信息,比如修改,可以通過圖書書本號查詢出該書的基本信息,然后通過對需要修改項進行修改并保存修改后的結果存入數據庫的圖書表中。
1.1.2圖書管理員信息
管理員所有的基本信息,包括對書本信息的添加、修改、刪除等操作;可以根據各種條件查詢出需要的信息,并對相應的信息進行操作。比如修改和刪除,可以通過管理員的工號查詢出管理員的相應信息,對相應的信息進行修改、刪除操作。
1.1.3注冊模塊
首先用戶需先注冊,然后將注冊的信息存儲在數據庫中,完成注冊功能模塊,后可以訪問本系統.
1.1.4登錄模塊
?????? 用戶根據數據庫中注冊的信息進行登錄,首先輸入的信息會和數據庫中的信息進行匹配,若用戶名密碼相同,則登錄成功,否則登錄失敗,需重新輸入信息.
1.1.5模塊總結
通過以上功能的設計與實現,并實現圖書信息管理系統的基本功能。當然在實際的圖書信息管理系統中,其功能要比本課題的多的多,也復雜的多,本課題僅以比較簡單易懂的方式介紹給讀者—一個圖書管理系統的設計與實現的流程。從而讓讀者明白一個項目開發中需要做的工作,并在今后的工作中能遇到相關問題能知道如何解決。
1.2用到的技術
該系統的開發運用了JAVA語言,后端技術主要運用了JAVA中的JSP技術,Servlet技術,JDBC技術,以及tomcat服務器,前端技術主要運用了HTML,CSS,JavaScript技術,以及運用了當下最火的前端框架BOOTSTARP3框架,完成了整個系統的開發.
2 圖書信息管理系統設計
2.1數據模型分析與設計
數據庫模型描述了在數據庫中結構化和操縱數據的方法,模型的結構部分規定了數據如何被描述(例如樹、表等);模型的操縱部分規定了數據的添加、刪除、顯示、維護、打印、查找、選擇、排序和更新等操作。數據庫模型的分類:分層模型、關系模型、網絡模型和對象模型。
本課題選擇的關系模型,關系模型是目前最重要的一種數據模型。關系數據庫系統采用關系模型作為數據的組織方式。關系數據模型具有下列優點:
◆關系模型與非關系模型不同,它是建立在嚴格的數學概念的基礎上的。
◆關系模型的概念單一。無論實體還是實體之間的聯系都用關系表示。對數據的檢索結構也是關系(即表)。所以其數據結構簡單、清晰,擁護易懂易用。
◆關系模型的存取路徑對用戶透明,從而具有更高的數據獨立性、更好的安全保密性,也簡化了程序員的工作和數據庫開發建立的工作。
所以,關系數據模型誕生以后發展迅速,深受擁護的喜愛,這也是本課題選取關系數據模型的原因。
當然,關系數據模型也有缺點,其中最主要的缺點是,由于存取路徑對用戶透明,查詢效率往往不如非關系數據模型。因此為了提高性能,必須對用戶的查詢請求進行優化,增加了開發數據庫管理系統的難度。
本課題的關系數據模型的數據結構可分為一個表來表示:圖書信息表
圖書信息表用于記錄書本的基本信息,如表 3-1;圖書信息表用于記錄書本的基本信息,圖3.1圖書信息E-R圖;如下圖。
?
表2-1圖書信息表
?
圖2.1圖書信息E-R圖
2.2結構設計與結構功能圖
2.2.1 結構設計
根據對系統進行需求分析,本系統將分為4個模塊:
◆書本管理
管理書本基本信息,包括每本書信息的添加、修改、刪除以及整套書信息的添加。
◆圖書管理員
圖書管理員的基本信息,包括管理員的添加、修改和刪除。
◆登錄
管理用戶信息,包括用戶的登錄存儲,以及從數據庫中獲取內容來進行匹配登錄.
◆注冊
將用戶的注冊信息存儲到數據庫中
2.2.2功能結構圖
?
3系統實現
該系統由6個模塊構成,包括圖書管理系統主界面模塊、圖書信息管理模塊、管理員信息管理模塊、登錄注冊管理模塊、信息查詢模塊和數據操作模塊。下面分別加以敘述:
3.4圖書管理系統主界面模塊
圖書管理系統主界面模塊運用shouye.jsp文件來實現。Shouye.jsp文件是圖書管理系統的主頁面,其中包含了各個功能模塊的URL,以及主頁面運用的各個前端樣式,從而生成了圖書管理系統的界面,如圖4.1所示。shouye.jsp頁面將所有功能集中到豎向導航欄中,并通過調用其他模塊來實現圖書管理系統的各個功能。
?
圖3.1圖書管理系統主界面
3.2圖書信息管理模塊
圖書信息管理模塊主要由HotRoutes_Info 、 Login 、MainJframe 、Registered、UpdateStudentServlet.java ,Registration_Management共計6個文件組成,如圖4.2所示。
?
圖3.2圖書信息管理模塊功能結構圖
圖書信息管理模塊的6個文件組成了主界面中的“圖書信息管理”菜單的內容,其中包括增加、修改、刪除等功能,如圖4.3所示。
?
圖3.3圖書信息管理模塊的運行界面
3.3圖書管理員模塊
圖書管理員模塊主要由RegistrationInfo_Change 、TouristGroup 、HotRoutes_Info、
這3個文件組成,如圖3.4所示。
?
圖3.4圖書管理管理員模塊功能結構圖
課程信息管理模塊中的5個類文件組成了主界面中“教師信息管理”菜單的內容,其中包括增加、修改和刪除功能,如圖3.5所示。
?
圖3.5圖書管理員模塊運行界面
3.4登錄管理模塊
登錄管理模塊主要由Login這個文件組成,如圖3.6所示。
?
圖3.6登錄管理模塊功能結構圖
登錄管理模塊中的2個文件組成了主界面中的“登錄”菜單的內容,其中包括登錄注冊功能,如圖3.7所示。
?
圖3.7 登錄模塊的運行界面
3.5注冊模塊
注冊管理模塊主要由Login這1個文件組成,如圖3.8所示。
?
注冊模塊主要包括管理員注冊和返回登錄功能。注冊的運行主截面如圖4.9所示。
?
package com.orange.View;import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JTextField;import com.orange.Controller.Select; import com.orange.Controller.Updata; import com.orange.Utils.ValidateUtils;import javax.swing.JButton; import java.awt.event.ActionListener; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.awt.event.ActionEvent; import java.awt.Color; import java.awt.Font; import java.awt.Image; import java.awt.Toolkit;import javax.swing.JComboBox; import javax.swing.DefaultComboBoxModel; import javax.swing.ImageIcon;//添加圖書界面public class Registration_Info extends JFrame {private static final long serialVersionUID = 1L;private JTextField nameField;private JTextField ageField;private JTextField IDcardField;private JTextField addressField;private JTextField phoneField;private JTextField touristNumberField;private JTextField accompanyField;private JTextField foodsField;Select select = new Select();Updata updata = new Updata();String name,sex,age,IDcard,address,phone,touristNumber,accompany,foods;public Registration_Info() {super("填寫圖書信息");this.setBounds(0, 0, 800, 600);this.setLocationRelativeTo(null);//讓窗口在屏幕中間顯示this.setResizable(false);//讓窗口大小不可改變getContentPane().setLayout(null);//設置窗口圖標Toolkit tk = Toolkit.getDefaultToolkit();Image frameImage=tk.createImage("img/logo.png"); this.setIconImage(frameImage);//圖片添加JLabel jl = new JLabel();jl.setIcon(new ImageIcon("img/brand.png"));//文件路徑jl.setBounds(453, 10, 800, 300);this.add(jl);//書名JLabel nameLabel= new JLabel("書 名:");nameLabel.setFont(new Font("微軟雅黑", Font.BOLD, 15));nameLabel.setBounds(130, 39, 72, 18);getContentPane().add(nameLabel);nameField = new JTextField();nameField.setBounds(191, 36, 240, 28);getContentPane().add(nameField);nameField.setColumns(10);//編碼JLabel ageLabel= new JLabel("編 碼:");ageLabel.setFont(new Font("微軟雅黑", Font.BOLD, 15));ageLabel.setBounds(130, 138, 72, 18);getContentPane().add(ageLabel);ageField = new JTextField();ageField.setBounds(191, 135, 240, 28);getContentPane().add(ageField);ageField.setColumns(10);//圖書代碼JLabel IDcardLabel= new JLabel("圖書代碼:");IDcardLabel.setFont(new Font("微軟雅黑", Font.BOLD, 15));IDcardLabel.setBounds(98, 188, 117, 18);getContentPane().add(IDcardLabel);IDcardField = new JTextField();IDcardField.setBounds(191, 185, 240, 28);getContentPane().add(IDcardField);IDcardField.setColumns(10);//作者信息JLabel addressLabel= new JLabel("作者信息:");addressLabel.setFont(new Font("微軟雅黑", Font.BOLD, 15));addressLabel.setBounds(113, 234, 100, 18);getContentPane().add(addressLabel);addressField = new JTextField();addressField.setBounds(191, 231, 240, 28);getContentPane().add(addressField);addressField.setColumns(10);//出版方JLabel phoneLabel= new JLabel("出版方:");phoneLabel.setFont(new Font("微軟雅黑", Font.BOLD, 15));phoneLabel.setBounds(113, 280, 100, 18);getContentPane().add(phoneLabel);phoneField = new JTextField();phoneField.setBounds(191, 277, 240, 28);getContentPane().add(phoneField);phoneField.setColumns(10);//立即報名JButton submitButton = new JButton("立即添加");submitButton.setFont(new Font("微軟雅黑", Font.PLAIN, 18));submitButton.setBounds(320, 495, 150, 33);submitButton.setFocusPainted(false);//去掉按鈕周圍的焦點框submitButton.setBackground(new Color(78, 110, 242));submitButton.setForeground(Color.WHITE);getContentPane().add(submitButton);submitButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {//判斷輸入的信息是否為空,是否完整if (name.equals("")||sex.equals("")||age.equals("")||IDcard.equals("")||address.equals("")||phone.equals("")||touristNumber.equals("")||accompany.equals("")||foods.equals("")) {JOptionPane.showMessageDialog(null, "請輸入完整信息!");} else {//判斷身份證號碼if (!ValidateUtils.IDcard(IDcard)) {JOptionPane.showMessageDialog(null, "身份證號碼錯誤!請檢查!");} else {String i = select.getString("SELECT user_id FROM `user` WHERE user_state='已登錄'");String sql = "INSERT INTO `tourist` VALUES (null, '"+i+"', '"+name+"', '"+sex+"', '"+age+"', '"+IDcard+"', '"+address+"', '"+phone+"', '"+touristNumber+"', '"+accompany+"', '"+foods+"');";int result = updata.addData(sql);//判斷手機號是否符合格式String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$";if(phone.length() != 11){JOptionPane.showMessageDialog(null, "手機號應為11位數!");}else{Pattern p = Pattern.compile(regex);Matcher m = p.matcher(phone);boolean isMatch = m.matches();if(!isMatch){JOptionPane.showMessageDialog(null, "您的手機號" + phone + "是錯誤格式!!!");}else {//判斷插入結果if (result>0) {JOptionPane.showMessageDialog(null, "報名成功!");dispose();//關閉窗口} else {JOptionPane.showMessageDialog(null, "報名失敗,請與管理員聯系!");}}}}}}});} } package com.orange.View;import java.awt.Color; import java.awt.Font; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;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.JTextField;import com.orange.Controller.Updata;//注冊界面public class Registered extends JFrame {private static final long serialVersionUID = 1L;Updata updata = new Updata();private JTextField userField;//賬號private JPasswordField passwordField;//密碼private JPasswordField passwordAgainField;//確認密碼public Registered() {super.setTitle("西亞斯圖書管理系統");this.setBounds(0, 0, 700, 450);//設置大小this.setLocationRelativeTo(null);//讓窗口在屏幕中間顯示this.setResizable(false);//讓窗口大小不可改變getContentPane().setLayout(null);//設置窗口圖標Toolkit tk = Toolkit.getDefaultToolkit();Image frameImage=tk.createImage("img/logo.png"); this.setIconImage(frameImage);//logo添加JLabel jl_logo = new JLabel();jl_logo.setIcon(new ImageIcon("img/logo2.png"));//文件路徑jl_logo.setBounds(280, 15, 200, 50);this.add(jl_logo);//文本信息顯示JLabel font = new JLabel();font.setFont(new Font("微軟雅黑", Font.PLAIN, 25));font.setText("歡迎來到西亞斯,請注冊使用!");font.setBounds(140, 58, 600, 50);add(font);//賬戶名JLabel usernameLabel = new JLabel("賬 號 名:");usernameLabel.setFont(new Font("微軟雅黑", Font.BOLD, 15));usernameLabel.setBounds(165, 138, 72, 18);getContentPane().add(usernameLabel);userField = new JTextField();userField.setBounds(248, 130, 255, 34);getContentPane().add(userField);userField.setColumns(10);//密碼JLabel passwordLabel = new JLabel("輸入密碼:");passwordLabel.setFont(new Font("微軟雅黑", Font.BOLD, 15));passwordLabel.setBounds(165, 208, 83, 18);getContentPane().add(passwordLabel);passwordField = new JPasswordField();passwordField.setBounds(248, 267, 255, 34);getContentPane().add(passwordField);passwordField.setColumns(10);JLabel passwordAgainLabel = new JLabel("確認密碼:");passwordAgainLabel.setFont(new Font("微軟雅黑", Font.BOLD, 15));passwordAgainLabel.setBounds(165, 275, 92, 18);getContentPane().add(passwordAgainLabel);passwordAgainField = new JPasswordField();passwordAgainField.setBounds(248, 200, 255, 34);getContentPane().add(passwordAgainField);passwordAgainField.setColumns(10);//確認注冊按鈕JButton button = new JButton("確定注冊");button.setFont(new Font("微軟雅黑", Font.BOLD, 15));button.setBounds(250, 330, 250, 34);button.setFocusPainted(false);//去掉按鈕周圍的焦點框button.setBackground(new Color(78, 110, 242));button.setForeground(Color.WHITE);getContentPane().add(button);button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {String username = userField.getText();@SuppressWarnings("deprecation")String password = passwordField.getText();@SuppressWarnings("deprecation")String passwordAgain = passwordAgainField.getText();//確認輸入的信息是否為空if (username.equals("")&&password.equals("")&&passwordAgain.equals("")) {JOptionPane.showMessageDialog(null, "請完整輸入信息!");}else {//判斷兩次密碼是否一致if (password.equals(passwordAgain)) {String sql = "INSERT INTO `user` VALUES (null, '" + username + "', '"+password + "', '游客', '未登錄');";int reselt = updata.addData(sql);if (reselt>0) {JOptionPane.showMessageDialog(null, "注冊成功,即將跳轉到登錄頁面!");//打開登錄界面Login l = new Login();l.setVisible(true);dispose();}else {JOptionPane.showMessageDialog(null, "注冊失敗,請聯系管理員!");}}else {JOptionPane.showMessageDialog(null, "兩次輸入的密碼不一致,請重新輸入!");}}}});}}?
package com.orange.View;import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ScrollPaneConstants; import javax.swing.Timer; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel;import com.orange.Controller.Select; import com.orange.Controller.Updata;import javax.swing.ImageIcon; import javax.swing.JButton; import java.awt.event.ActionListener; import java.sql.Date; import java.text.SimpleDateFormat; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent;//主界面public class MainJframe extends JFrame {private static final long serialVersionUID = 1L;Select select = new Select();Updata updata = new Updata();Object[] header = {"圖書編號","圖書名稱","圖書名稱","圖書代碼","圖書簡介"};//表頭Object[][] data = select.getLineInfo();public MainJframe() {this.setTitle("西亞斯圖書管理系統");this.setBounds(0, 0, 1130, 700);this.setLocationRelativeTo(null);//讓窗口在屏幕中間顯示this.setResizable(false);//讓窗口大小不可改變getContentPane().setLayout(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//用戶單擊窗口的關閉按鈕時程序執行的操作//設置窗口圖標Toolkit tk = Toolkit.getDefaultToolkit();Image frameImage=tk.createImage("img/logo.png"); this.setIconImage(frameImage);//logo添加JLabel jl_logo = new JLabel();jl_logo.setIcon(new ImageIcon("img/logo2.png"));//文件路徑jl_logo.setBounds(950, 6, 200, 50);this.add(jl_logo);//熱門圖書推薦ImageIcon icon1 = new ImageIcon("img/Icon1.png");JButton searchButton = new JButton("熱門圖書推薦",icon1);searchButton.setBounds(20, 11, 145, 35);searchButton.setFocusPainted(false);//去掉按鈕周圍的焦點框searchButton.setContentAreaFilled(false);//設置按鈕透明背景searchButton.setFont(new Font("微軟雅黑", Font.BOLD, 14)); // searchButton.setBackground(new Color(255, 153, 41));searchButton.setForeground(Color.black);getContentPane().add(searchButton);searchButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {//顯示熱門圖書界面HotRoutes_Info hr = new HotRoutes_Info();hr.setVisible(true); // dispose();關閉舊窗口}});//添加圖書ImageIcon icon2 = new ImageIcon("img/Icon2.png");JButton signButton = new JButton("添加圖書",icon2);signButton.setBounds(173, 11, 120, 35);signButton.setFocusPainted(false);//去掉按鈕周圍的焦點框signButton.setContentAreaFilled(false);//設置按鈕透明背景signButton.setFont(new Font("微軟雅黑", Font.BOLD, 14)); // signButton.setBackground(new Color(255, 153, 41));signButton.setForeground(Color.black);getContentPane().add(signButton);signButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {//判斷當前是否有用戶登錄String sql = "SELECT COUNT(*) FROM `user` WHERE user_state='已登錄'";int reselt = select.getCount(sql);if (reselt>0) {//打開報名界面Registration_Info r = new Registration_Info();r.setVisible(true);} else {JOptionPane.showMessageDialog(null, "請先登錄!");//打開登錄界面Login l = new Login();l.setVisible(true); // dispose();}}});//圖書管理按鈕ImageIcon icon3 = new ImageIcon("img/Icon3.png");JButton orderButton = new JButton("圖書管理",icon3);orderButton.setBounds(300, 11, 125, 35);orderButton.setFocusPainted(false);//去掉按鈕周圍的焦點框orderButton.setContentAreaFilled(false);//設置按鈕透明背景orderButton.setFont(new Font("微軟雅黑", Font.BOLD, 14)); // yhdl.setBackground(new Color(255, 153, 41));orderButton.setForeground(Color.black);getContentPane().add(orderButton);orderButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {//判斷當前是否有用戶登錄String sql = "SELECT COUNT(*) FROM `user` WHERE user_state='已登錄'";int reselt = select.getCount(sql);if (reselt>0) {//判斷當前登錄的用戶身份String user_type = select.getString("SELECT user_type FROM `user` WHERE user_state='已登錄'");if (user_type.equals("管理員")) {//打開訂單管理界面Registration_Management r = new Registration_Management();r.setVisible(true);dispose();}else{JOptionPane.showMessageDialog(null, "當前用戶無權限!請登錄管理員賬號!");}} else {JOptionPane.showMessageDialog(null, "請先登錄!");//打開登錄界面Login l = new Login();l.setVisible(true); // dispose();//關閉舊窗口}}});//用戶切換按鈕ImageIcon icon4 = new ImageIcon("img/Icon4.png");JButton switchButton = new JButton("用戶切換",icon4);switchButton.setBounds(433, 11, 120, 35);switchButton.setFocusPainted(false);//去掉按鈕周圍的焦點框switchButton.setContentAreaFilled(false);//設置按鈕透明背景switchButton.setFont(new Font("微軟雅黑", Font.BOLD, 14)); // switchButton.setBackground(new Color(255, 153, 41));switchButton.setForeground(Color.black);getContentPane().add(switchButton);switchButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {//判斷當前是否有用戶登錄String sql = "SELECT COUNT(*) FROM `user` WHERE user_state='已登錄'";int reselt = select.getCount(sql);if (reselt>0) {String i = select.getString("SELECT user_account FROM `user` WHERE user_state='已登錄'");int a = JOptionPane.showConfirmDialog(null,"當前已有用戶" + " ”"+ i +"” " + "登錄!是否注銷?","注銷提示",0,1);if(a == JOptionPane.OK_OPTION){JOptionPane.showMessageDialog(null, "已注銷前賬戶!");updata.addData("UPDATE user SET user_state='未登錄' WHERE user_account='"+ i +"';");//打開登錄界面Login l = new Login();l.setVisible(true);dispose();//關閉舊窗口}}else {//打開登錄界面Login l = new Login();l.setVisible(true);dispose();//關閉舊窗口}}});//添加用戶按鈕ImageIcon icon5 = new ImageIcon("img/Icon5.png");JButton appendButton = new JButton("添加用戶",icon5);appendButton.setBounds(560, 11, 120, 35);appendButton.setFocusPainted(false);//去掉按鈕周圍的焦點框appendButton.setContentAreaFilled(false);//設置按鈕透明背景appendButton.setFont(new Font("微軟雅黑", Font.BOLD, 14)); // appendButton.setBackground(new Color(255, 153, 41));appendButton.setForeground(Color.black);getContentPane().add(appendButton);appendButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {//判斷當前是否有用戶登錄String sql = "SELECT COUNT(*) FROM `user` WHERE user_state='已登錄'";int reselt = select.getCount(sql);if (reselt>0) {String i = select.getString("SELECT user_account FROM `user` WHERE user_state='已登錄'"); // JOptionPane.showMessageDialog(null, "當前已有用戶"+" ”"+i+"” "+"登錄!是否注銷?");int a = JOptionPane.showConfirmDialog(null,"當前已有用戶" + " ”" + i + "” " + "登錄!是否注銷?","注銷提示",0,1);if(a == JOptionPane.OK_OPTION){JOptionPane.showMessageDialog(null, "已注銷前賬戶!");updata.addData("UPDATE user SET user_state='未登錄' WHERE user_account='" + i + "';");//打開注冊界面Registered r = new Registered();r.setVisible(true);//dispose();//打開新窗口的時候關閉舊窗口}}else {//打開注冊界面Registered r = new Registered();r.setVisible(true);//dispose();}}});//退出系統按鈕ImageIcon icon6 = new ImageIcon("img/Icon6.png");JButton exitButton = new JButton("退出系統",icon6);exitButton.setBounds(687, 11, 120, 35);exitButton.setFocusPainted(false);//去掉按鈕周圍的焦點框exitButton.setContentAreaFilled(false);//設置按鈕透明背景exitButton.setFont(new Font("微軟雅黑", Font.BOLD, 14)); // exitButton.setBackground(new Color(255, 153, 41));exitButton.setForeground(Color.black);getContentPane().add(exitButton);exitButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {int result = JOptionPane.showConfirmDialog(null,"您現在要關閉系統嗎?關閉后同時注銷賬號!","退出提示",0,1);if(result == JOptionPane.OK_OPTION){JOptionPane.showMessageDialog(null, "已退出系統,歡迎下次使用!");updata.addData("UPDATE user SET user_state='未登錄';");System.exit(0);}}});//系統幫助按鈕ImageIcon icon7 = new ImageIcon("img/Icon7.png");JButton helpButton = new JButton("圖書館幫助",icon7);helpButton.setBounds(815, 11, 140, 35);helpButton.setFocusPainted(false);//去掉按鈕周圍的焦點框helpButton.setContentAreaFilled(false);//設置按鈕透明背景helpButton.setFont(new Font("微軟雅黑", Font.BOLD, 14)); // helpButton.setBackground(new Color(101, 113, 175));helpButton.setForeground(Color.black);getContentPane().add(helpButton);helpButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//打開系統幫助界面About a = new About();a.setVisible(true);}});//當前時間JLabel dqsj = new JLabel("當前時間 :");dqsj.setBounds(825, 70, 85, 35);dqsj.setFont(new Font("微軟雅黑", Font.BOLD, 15));dqsj.setForeground(Color.white);getContentPane().add(dqsj);JLabel time1 = new JLabel();time1.setBounds(910, 71, 236, 35);time1.setFont(new Font("微軟雅黑", Font.CENTER_BASELINE, 16));time1.setForeground(Color.white);getContentPane().add(time1);this.setTimer(time1);//背景圖片添加JLabel jl = new JLabel();jl.setIcon(new ImageIcon("img/timebg.png"));//文件路徑jl.setBounds(810, 62, 750, 40);this.add(jl); //文本信息JLabel massageLabel = new JLabel("西亞斯熱門圖書借閱推薦");massageLabel.setBounds(20, 65, 252, 35);massageLabel.setFont(new Font("微軟雅黑", Font.BOLD, 20));getContentPane().add(massageLabel);//創建表模型DefaultTableModel dt = new DefaultTableModel(data,header){private static final long serialVersionUID = 1L;//設置表格內容不可被編輯public boolean isCellEditable(int row, int column) {return false;//返回true表示能編輯,false表示不能編輯}};JTable jTable=new JTable(dt);//創建表格jTable.getTableHeader().setFont(new Font("微軟雅黑", Font.CENTER_BASELINE, 15));// 設置表頭名稱字體樣式jTable.getTableHeader().setForeground(Color.white);// 設置表頭名稱字體顏色jTable.getTableHeader().setResizingAllowed(false);// 設置不允許手動改變列寬jTable.getTableHeader().setReorderingAllowed(false);//設置表頭不允許拖動jTable.getTableHeader().setBackground(new Color(68, 114, 196));//設置表頭背景色//設置表頭高度Dimension size = jTable.getTableHeader().getPreferredSize();size.height = 40;//設置新的表頭高度40jTable.getTableHeader().setPreferredSize(size);//設置行高jTable.setRowHeight(30);//指定每一行的行高50jTable.setFont(new Font("微軟雅黑", Font.PLAIN, 14));//設置表格字體//設置表格列寬int[] length = {100 , 200 , 200 , 100 , 400 };//表格的列寬TableColumnModel model0 = jTable.getColumnModel();for (int i = 0 ; i<model0.getColumnCount() ; i++){TableColumn column = model0.getColumn(i);//獲取列對象column.setPreferredWidth(length[i]);//設置列寬}int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;//水平滾動條int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;//垂直滾動條JScrollPane jsp=new JScrollPane(jTable,v,h);//創建滾動容器jsp.setBounds(20, 110, 1070, 530);getContentPane().add(jsp);//設置單元格內容居中顯示DefaultTableCellRenderer r = new DefaultTableCellRenderer(); r.setHorizontalAlignment(JLabel.CENTER); jTable.setDefaultRenderer(Object.class, r);}// 設置Timer1000ms實現一次動作 實際是一個線程private void setTimer(JLabel time) {final JLabel varTime = time;Timer timeAction = new Timer(100, new ActionListener() {public void actionPerformed(ActionEvent e) {long timemillis = System.currentTimeMillis();// 轉換日期顯示格式SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");varTime.setText(df.format(new Date(timemillis)));}});timeAction.start();} }總結
以上是生活随笔為你收集整理的Java课程设计—— 图书管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 单结晶体管触发电路
- 下一篇: 前端学习(2828):数组和对象循环
