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课程设计—— 图书管理系统相关推荐

  1. java课程设计(图书管理系统)

    技术:Swing+jdbc+mysql Swing:Swing是一个用于开发Java应用程序用户界面的开发工具包.它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格,操作简 ...

  2. RFID课程设计-图书管理系统用户端设计

    RFID课程设计-图书管理系统用户端设计课程设计题目课程设计任务内容题目设计基本原理NFC开发概述标签调度系统如何将 NFC 标签映射到 MIME 类型和 URI如何将 NFC 标签分发到应用在 An ...

  3. Python课程设计-图书管理系统

    Python课程设计-图书管理系统 摘要 第一章 绪论 1.1 开发环境及技术 1.2 系统实现功能描述 第二章 功能详细设计与实现 2.1 系统框架各层次实现 2.1.1 可视页面设计 2 数据库设 ...

  4. oracle课程设计图书销售系统,oracle课程设计图书管理系统

    oracle课程设计图书管理系统 数据库课程设计 设计名称:图书管理系统 组员:尚靖伟(122068) 张红凯(122072) 班级:计 G121 班信息工程学院计算机系 2013 年 6 月 27 ...

  5. c语言课程设计图书管理系统

    数据结构c语言课程设计 图书管理系统 我做的是百度文库的第28题,目前没有报错,正常运行,但是还有一点小bug.代码很多地方写的不是很好,请多多包涵. 账号1,密码1,为管理员账号:其他账号2,3,4 ...

  6. java设计火车的类,JAVA课程设计--火车票管理系统

    JAVA课程设计--火车票管理系统 ******************* 实践教学实践教学 ******************* 兰州理工大学兰州理工大学 计算机与通信学院 2013 年秋季学期 ...

  7. java学籍管理系统课设报告,java课程设计学籍管理系统.doc

    java课程设计学籍管理系统.doc 课程设计任务书题目学籍管理系统组员学号组员学号组员学号专业课程JAVA指导教师完成时间2011年9月2011年12月计算机科学系制1课程设计任务书及成绩评定课程设 ...

  8. C#课程设计-图书管理系统

    C#课程设计-图书管理系统 前言 一.课设任务是什么? 二.使用工具及软件环境 三.系统功能介绍及部分代码展示 3.1 登陆界面及主要代码 3.2 图书管理 3.3 修改书籍页面视图及主要代码 四.使 ...

  9. C语言课程设计-图书管理系统

    实训项目名称:图书管理系统的设计与实现 1.实训目的 开发一个小型的图书管理应用软件,使用该软件可以实现图书信息的登记.浏览.借书.还书.删除和更新等操作.通过该系统的实现可以了解C++连接数据库的原 ...

  10. Java 课程设计--数据库管理系统

    目录 源代码说明 一.源代码地址 二.源代码文件说明 1.关键类说明 2.关键方法说明 参考文献 源代码说明 该文章是对JAVA课程设计-<基于JAVA实现的数据库管理系统> 的源代码说明 ...

最新文章

  1. 用mysql创建学生成绩表_用SQL创建学生成绩数据库
  2. 计算机考试前的心情作文,期中考试前的心情作文
  3. 符号引用(typeglob,别名)与全局变量的修改
  4. SAP SD销售收入科目确定VKOA
  5. 谈谈即时通讯开发平台
  6. React开发(235):react可以这样返回dom
  7. 70行Python代码,获取中国数据库大会(DTCC)全部PPT
  8. C/C++中国指针、数组的基本认知
  9. 鸡蛋掉落(动态规划)
  10. 51单片机数值存储c语言教程,单片机c语言教程:C51变量
  11. react 使用ajax axios,react中使用Ajax请求(axios,Fetch)
  12. SpringBoot整合Minio实现文件上传、下载
  13. 为什么要用“设计模式”?(六大好处)
  14. 大学生vb计算机基础,大学计算机基础课程上机考试登录程序的VB实现
  15. 无心剑汉英双语诗005.《抒怀》
  16. python批量剪辑音频pydub
  17. Ubuntu14.04安装搜狗拼音输入法后无法使用解决方案
  18. 这里有五种身份证提取出生年月的格式
  19. Paillier同态加密算法总结
  20. Linux中CentOS 7如何联网?

热门文章

  1. BootDo平台免密登陆
  2. ubuntu16.04 Detectron目标检测库配置(包含GPU驱动,Cuda,Caffee2等配置梳理)
  3. sqoop1.99.6 mysql_Alex的Hadoop菜鸟教程:第6课Sqoop2安装教程
  4. 电视、家庭影院、音响、电影院、中高端声卡测试多声道测试样片
  5. 问卷星的自动答题脚本
  6. oracle默认端口号是,sqlserver、mysql、oracle各自的默认端口号
  7. python如何下载网易云付费音乐
  8. android组件化掘金,MVPArms 官方快速组件化方案
  9. 蓝屏dump分析教程,附分析工具WinDbg(x86 x64)6.12.0002.633下载
  10. Nexus下载安装及对接