图书管理系统
目录
第一章 研究前提................................................................................1
第二章 系统分析................................................................................3
第三章 数据库分析............................................................................5
第四章 系统详细设计与具体实现....................................................8
第五章 收获与体会............................................................................14
第六章 系统源代码............................................................................15
参考文献
第一章
研究前提
一:目的及要求
1:下载并了解jdk1.8
2:下载并且学会安装Microsoft SQL Server 2008数据库
3:下载并安装eclipse 8.0 java开发工具
4:掌握数据库的连接,了解java开发工具,熟悉java开发运行环境,学会用java编写项目,知道如何搭建系统框架,通过这个系统培养我们的眼光以及用java开发项目的兴趣
附加:
Jdk下载地址:Oracle官网”www.8u10-windows-i586.exe”
http://java.sun.com/javase/downloads/index.jsp
Microsoft SQLServer 2008地址:CMDN开源社区
Eclipse 8.0下载地址:http://www.eclipse.org
二:研究环境
JDK1.8 SQL server 2008 eclipse 8.0 windows 8.0操作系统 PC
三:研究环境搭建
JDK
说明一下要找到适合自己操作系统的安装包,下载完安装包后解压到指定安装路径。直接点击exe可执行程序,安装到你指定的路径, 如果没有特殊要求,一般默认安装到C:\Program Files\Java目录下。
JDK环境配置,由于JDK提供的编译与运行都是基于命令行的,所以应该进行一下DOS下面的一个设定,把JDK安装目录的bin添加到DOS的外部命令中,这样就可以直接运用bin目录下的exe程序。
配置步骤:开始->设置->控制面板->系统(或者在我的电脑 右键选择属性。系统->高级->环境变量。在环境变量窗口中,选择系统变量中变量名为PATH的环境变量,双击该按钮。把JDK安装路径中的bin目录的绝对路径,添加到PATH变量的值中,并且用半角的分号和已有路径进行分隔。
检测jdk是否安装成功。
开始->程序->附件->命令提示符(windows+r) 在命令行中输入javac,并回车执行。如果输出的是使用说明,则配置成功,否则重新配置环境。
eclipse使用说明
Eclipse是一个开源,免费的集成开发工具。
Eclipse的安装很简单,只要解压到任意路径下就行,要说明的是安装eclipse前先安装jdk。
然后,关于eclipse的使用,依次需要我自己去实践,比如
1
project->package->class 等等,重要的是去如何运行,调试,熟悉jdk1.6 API
文档说明也是必要的。
SQL server 2008说明
1.1SQL server 2008数据库是一个非常好的工具。数据库安装是一个煎熬的过程,它对于新手来说是一个比较耗时的。
注释:SQL Server 2008是一个重大的产品版本,它在Microsoft的数据平台上发布,帮助用户的组织随时随地管理任何数据。它可以将结构化、半结构化和非结构性文档的数据(例如图像和音乐)直接存储到数据库中。SQL Server 2008 提供一系列丰富的集成服务,可以对数据进行查询、搜索、同步、报告和分析之类的操作。数据可以存储在各种设备上,从数据中心最大的服务器一直到桌面计算机和移动设备,用户可以控制数据而不用管数据存储在哪里。
安装方法建议直接百度SQL server 2008安装过程的图示步骤。(这里就不再说明具体注意事项) 尽管安装成功,还需要进行一些补丁。
1.2 在连接数据库之前必须保证SQL Server 2008是采用SQL Server身份验证方式而不是windows身份验证方式。如果在安装时选用了后者,则重新设置如下:
http://blog.163.com/jackie_howe/blog/static/19949134720122261121214/
1.3 安装好SQL Server 2008后,运行开始→所有程序→Microsoft SQL Server 2008→配置工具→SQL Server配置管理器,在打开的窗口的左边找到MSSQLSERVER的协议,在右边右单击TCP/IP,选择已启用。如果Named Pipes 未启用也设为启用。右边的 TCP/IP,在弹出的窗口中选择IP地址标签,把IPAll中的 TCP端口 设成 1433,并将上方所有的已启用选项设置成是。
1.4 然后重启数据库,重启完毕后,接下来使用命令测试1433端口是否打开。
开始菜单→运行cmd→在命令提示符下输入:telnet 127.0.0.1 1433(注意telnet与127之间有空格,1与1433之间有空格)若提示“不能打开到主机的连接,在端口1433: 连接失败”,则说明1433端口没有打开,需要重新进行以上配置。
如何实现eclipse与数据库SQLserver2008 的连接
2.1 为使各个小程序都能连接在一起,需使用JDBC连接数据库,包括安装ODBC驱动,连接数据源。所以,需要下载驱动程序工具。
Microsoft JDBC Driver for SQL Server
http://www.microsoft.com/zh-cn/download/details.aspx?id=11774
上面为下载地址。
2.2 在环境变量中配置JDBC Driver,方法与配置jdk类似,这里不再重述。
2.3 检测是否可以通过eclipse加载驱动数据库
2.3.1打开SQL Server 2008,在其中新建数据库 Test
2.3.2运行Eclipse,新建一个Java Project 名为 Test
2.3.3 右击工程名
Build Path→Configure Build Path,在打开的窗口的右边选Libraries标签,然后单击 Add External JARs,找到sqljdbc4jar文件并打开,然后单击
2
OK完成构建路径的配置
最后,进行程序设计,使eclipse成功加载驱动数据库
在test中建立一个名为package的包,源代码如下:
package pkg;
import java.sql.*;
public class
Main {
public static
void main(String
[] args)
{
String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=创建的数据库名";
String userName="数据库登录名";
String userPwd="登录密码";
try
{ Class.forName(driverName);
System.out.println("加载驱动成功!");
}catch(Exception e){
e.printStackTrace();
System.out.println("加载驱动失败!");
}
try
{
Connection dbConn=DriverManager.getConnection(dbURL,userName,userPwd);
System.out.println("连接数据库成功!");
}catch(Exception e)
{e.printStackTrace();
System.out.print("SQL
Server连接失败!");}
}
}
直到出现 加载驱动成功! 连接数据库成功!
第二章
系统分析
针对现有的图书馆管理系统,我们设计简单的图书系统,以用来满足我们基本的需求。 业务流程:
3
|
No
|
|
|
|
|
|
|
|
Yes
针对业务流程,现在描述其功能如下:
1.用户登录 系统对其用户的合法性进行检查。
2.扩充书库 对新购进的书进行编号,并且把基本信息录入计算机,存储于数据库,易于形成表,并对表进行处理。
3.系统管理 更改界面,退出系统。
4.用户管理 更改用户密码,查询用户。
5.图书预览 查询图书管理系统的库存,及其图书信息
4
6.图书查询 查询图书管理系统是否存在该图书
7.帮助 使用指南,关于系统介绍,作者信息 版权所有
8.图书管理 删除用户等等操作
数据分析
根据系统的基本原理,详细设计分析所需功能,对目标进行精确的概述,从而把实现目标进行转换java语言,进行系统思想转换。详细的源代码见第六章系统源代码。
第三章
数据库分析
E-R关系图
|
|
1 n
|
设计表
实体型--->
|
|
属性----->
|
实体型--->
dbo.Table_book表
5
SELECT TOP (200) 图书名, 图书号, 单价, 作者, 出版社, 入库时间
FROM Table_book
ORDER BY 作者
dbo.Table_user表
SELECT TOP (200) 用户名, 密码
FROM Table_user
表的相关信息
6
数据表dbo.Table_book
数据表dbo.Table_user
7
第四章
系统详细设计与具体实现
系统的功能分析与详细设计
本系统的具体实现目标
·界面简单 友好 美观 画面感强
·操作简单 快捷方便 信息分类清晰准确 数据灵活查询
·数据存储安全 可靠
·对于用户输入的数据 进行严格检查 排除人为因素
操作说明:
系统用户名 sa 密码 123
8
操作流程:
1 选择系统管理/更改主题按钮,在弹出的窗体中进行对界面更换
2 选择系统管理/退出系统按钮,将要退出图书管理系统
3 选择图书预览/预览图书按钮,在弹出的窗体中进行查看库存
4 选择图书管理/删除操作按钮,在弹出窗体中进行操作
5 选择扩充图书/新书登记按钮,在窗口中添加新书信息
6 选择查询/查询图书操作按钮,在窗口中进行操作
7 选择用户管理/更改密码按钮,在窗体中进行更改密码操作
8 选择帮助/关于作者按钮,显示作者信息;帮助/关于系统按钮,显示系统相关信息;帮助/使用指南按钮,显示操作指南。
系统的具体实现
登录界面
主界面
9
系统管理系统/更改主题/睿智深灰
图书预览
10
图书删除
11
扩充图书
图书查询
用户管理/更改密码
12
关于作者
关于系统
使用指南
13
第五章
收获与体会
收获与体会
本人自从开始接触java,对其兴趣浓厚,然而其学习路途并不是很顺利,尤其是到用数据库安装和用java连接数据库时,其中遇到的困难很多,当时觉得太难了,现在回过头来看,其实还好。一切都是值得的,因为在用java做这个图书管理系统过程中收获挺多,自己进一步了解与入门java。
通过对java的学习,以及应用eclipse开发工具,我们初步了解通过编程实现企业图书管理的主要核心,实现一个简单图书管理系统。
系统在调试过程中基本调试了当初的设计要求,设计合理,功能较为完善,目前可以做到查询,改密码,添加,删除,修改等等基本操作。其中程序源代码我将会在在附录中给出,相信大家通过源代码会进一步对编程思想有更深的了解。在这个页面设计中,也有许多的不足,页面设计较为简单,不够精致,美观。
由于学习java的时间较短和使用java编程的能力有限,我们设计的图书管理系统只能完成几个简单的基本功能,还存在很多问题需要我们亟待解决,系统设计的不精致同时存在着许多不足与缺陷,还需要我们进一步完善。
根据目前大二的我以及对IT的了解,可以使用jsp进行网页界面的设计,使用MVC设计模式,采用开源框架Struts,使之具有开发效率高、设计灵活、生成的软件界面友好美观等特点。
在弄图书管理系统之前,我参阅了大量的图书设计文献,对所开发系统的现状,发展情况以及未来发展趋势有了深入的了解;在整个系统的需求分析过程中对开发前期工作的流程步骤有了深入的掌握;在开发过程我进一步学习了Java的基础语法和一些HTML网页设计方面的知识,以便使系统有更好的美观性,在编写过程中也规范了许多编码习惯。
在整个系统开发的过程中,我学到了很多新的知识,以前学过的许多知识点在运用过程中也有了更为深入的分析,这是我大一到大二期间做过的规模最大的系统,在这个过程中也体会到了如何将书本知识转化到实际的应用中。
14
第六章
系统源代码
登录源代码Login类
package pk;//login类所在的包
import java.sql.*;//包含实现java程序与操作系统以及其他java程序之间进行数据交换的类
import java.awt.*;//包含创建用户界面与绘制图形的类
import java.awt.event.*;//事件处理所在的类
import javax.swing.*;//包含轻量级组件
@SuppressWarnings("deprecation")
public class Login extends JFrame implementsActionListener//登录界面login类继承JFrame类实现ActionListener接口
{
privatestatic final long serialVersionUID = 1L;//序列化时保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
Containercp=null;//定义空集合
JFramef=null;//定义容器
JButtonj1,j2;//定义按钮
JTextFieldname;//文本框 用于存储用户名
JPasswordFieldpwd;//密码框 用于存储密码
JLabeljlabel1,jlabel2;//用于短文本字符串或图像或二者的显示区 标签
Color c;//定义颜色
JPaneljp1,jp2;//JPanel 是一般轻量级容器中间容器
Login()//实现登入界面
{
f=newJFrame("小型图书馆管理系统");//显示"小型图书管理系统"的标题
j1=newJButton("登录");//显示按钮登录
j2=newJButton("取消");//显示按钮取消
cp=f.getContentPane();//返回窗体的 contentPane对象
jlabel1=newJLabel(" 用户 ");//显示用户
jlabel2=newJLabel(" 密码 ");//显示密码
jp1=newJPanel();//面板1
jp2=newJPanel();//面板2
name=newJTextField(19);//设置用户名长度大小
pwd=newJPasswordField(19);//设置密码长度大小
jp1.add(jlabel1);
jp1.add(name);
jp1.add(jlabel2);
jp1.add(pwd);//以上分别把标签1 用户名 标签2 密码添加到面板1
JLabel JL=new JLabel("<html><fontcolor=red size=‘6‘><i>欢迎登陆图书馆
15
</i></font>",SwingConstants.CENTER);
//定义标签JL 将JL中的内容添加到某区域的中心位置。用于罗盘方向常量
(NORTH 等)和框方向常量(TOP 等)。
//"<html><font color=red size=‘6‘><i>欢迎登陆图书馆</i></font>"
//规定文本的字体、字体尺寸、字体颜色 color->颜色 size->字体 <i>标签显示斜体文本效果
cp.add(JL,"North");//将JL添加到NORTH
jp2.add(j1);//将按钮登录添加到面板2
jp2.add(j2);//将按钮取消添加到面板2
cp.add(jp1,"Center");//将面板1添加到Center
cp.add(jp2,"South");//将面板2添加到South
jp1.setBackground(new Color(245,211,155));//label颜色 面板1设置背景 三色板调制颜色
Toolkit kit=Toolkit.getDefaultToolkit();//
Dimension screen=kit.getScreenSize();//
int x=screen.width;//设置窗口的宽度
int y=screen.height;//设置窗口的高度
f.setSize(300,300);//窗口设置大小
int xcenter=(x-300)/2;//设置窗口距离长
int ycenter=(y-300)/2;//设置窗口距离宽
f.setLocation(xcenter,ycenter);//显示在窗口中央
f.setVisible(true);//窗口可见
j1.addActionListener(this);//注册事件监听器
j2.addActionListener(this);//注册事件监听器
f.addWindowListener(new WindowAdapter ()//事件适配器
{//设置窗口的关闭方式
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
}
public void confirm()//验证用户名与密码是否匹配
{
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//连接数据库
}
catch(ClassNotFoundExceptione)
{
System.out.println("加载驱动程序出错");//加载异常}
16
try
{
Stringdbuser = "sa";//数据库登录名
Stringdbpwd = "123";//数据库登录密码
Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";
//直接使用当前类目录所在的数据库文件
Connectioncon=DriverManager.getConnection(url,dbuser,dbpwd);
//连接数据库
Statementsql=con.createStatement();
Stringuname=name.getText().trim();
StringMima=pwd.getText().trim();
StringqueryMima="select * from dbo.Table_user where 用户名=‘"+uname+"‘ and 密码=‘"+Mima+"‘";
//操作数据库的语句从dbo.Table_user表中获取用户名和密码
ResultSetrs=sql.executeQuery(queryMima);
if(rs.next())
{
newBook(uname);//登录密码正确 则进入主框架 主登录界面
f.hide();
con.close();
}
else
{
JOptionPane.showMessageDialog(null,"该用户不存在","提示!",JOptionPane.YES_NO_OPTION);
}
//如果不存在该用户则抛出用户不存在
name.setText("");
pwd.setText("");//重置用户名 密码框
}
catch(SQLExceptiong)
{
System.out.println(g.getErrorCode());
System.out.println(g.getMessage());//异常问题的处理
}
}
publicvoid actionPerformed(ActionEvent e)
{
Stringcmd=e.getActionCommand();
if(cmd.equals("登录"))
{
confirm();//匹配登录按钮
}
17
else if(cmd.equals("取消"))
{
f.dispose();//匹配取消按钮
}
}
publicstatic void main(String [] args)
{
newLogin();//程序入口处
}
}
图书登记BookIn类
package pk;
import java.sql.*;//包含实现java程序与操作系统以及其他java程序之间进行数据交换的类
import java.awt.*;//包含创建用户界面与绘制图形的类
import java.awt.event.*;//事件处理所在的类
import java.awt.Container;//包含容器类
import javax.swing.*;//包含轻量级组件
public class BookIn implements ActionListener{
//BookIn类实现接口ActionListener
JFrame f3;//设置顶级窗口对象
Container cp;//容器对象
JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;//创建面板
JButton jbt1,jbt2;//设置按钮
JLabel label1,label2,label3,label4,label;//创建标签
String sno;//创建字符串对象
JTextField tf1,tf2,tf3,tf4,tf5,tf6;//创建文本框
BookIn()//BookIn类
{
f3=newJFrame("图书信息添加");//设置标题
cp=f3.getContentPane();//返回ContentPane内容
jp1=newJPanel();//面板jp1
jp2=newJPanel();//面板jp2
jp3=newJPanel();//面板jp3
jp4=newJPanel();//面板jp4
jpanelWest=newJPanel();//创建面板jpanelWest
jp=newJPanel();
jbt1=newJButton("确定");
jbt2=newJButton("取消");//创建按钮 内容分别为确定 取消
label=newJLabel("<html><font color=blue size=‘6‘>新书登记</font>",SwingConstants.CENTER);
//创建标签 放到中间
18
label.setForeground(Color.black);//标签设置前景色
tf1=newJTextField(20);//设置文本框tf1的大小
tf2=new JTextField(20);//设置文本框tf2的大小
tf3=newJTextField(20);//设置文本框tf3的大小
tf4=newJTextField(20);//设置文本框tf4的大小
tf5=newJTextField(20);//设置文本框tf5的大小
tf6=newJTextField(20);//设置文本框tf6的大小
jp1.add(jbt1);
jp1.add(jbt2);
JPaneljpanel=new JPanel();
jpanel.add(label);//面板添加标签 label
JPanelpp4=new JPanel();
JPaneljpane4=new JPanel();
cp.add(jpanel,"North");//面板放置North
JPanelpp2=new JPanel(new GridLayout(6,1,20,10));//设置为网格布局 容器的水平间距为20 垂直布局间距为10
JPanelpp3=new JPanel();
pp4.setLayout(newGridLayout(6,1));//设置容器6行1列
pp4.add(newJLabel("图书名",SwingConstants.CENTER));
pp2.add(tf1);
pp4.add(newJLabel("图书号",SwingConstants.CENTER));
pp2.add(tf2);
pp4.add(newJLabel("单 价",SwingConstants.CENTER));
pp2.add(tf3);
pp4.add(newJLabel("作 者",SwingConstants.CENTER));
pp2.add(tf4);
pp4.add(newJLabel("出版社",SwingConstants.CENTER));
pp2.add(tf5);
pp4.add(newJLabel("入库时间",SwingConstants.CENTER));
pp2.add(tf6);
//以上分别为将图书名 图书号 单价 作者 出版社 入库时间添加到pp4面板中
//以上分别为将文本框添加到pp2面板中
pp3.add(jbt1);
pp3.add(jbt2);// 分别将按钮添加到面板pp3中
cp.add(pp4,"West");
cp.add(pp2,"East");
cp.add(pp3,"South");
cp.add(jpane4,"Center");
//容器中West->pp4 East->pp2 South->pp3Center->jpane4 North->jpanel
f3.setSize(320,300);//设置顶级窗口大小
f3.setVisible(true);//设置顶级窗口可视化
jbt1.addActionListener(this);
19
jbt2.addActionListener(this);
}
public void insertRecord()
{
if(tf1.getText().equals("")||tf2.getText().equals("")||tf3.getText().equals("")||
tf4.getText().equals("")||tf5.getText().equals("")||tf6.getText().equals(""))
{
JOptionPane.showMessageDialog(f3,"请填写图书资料");
return;
}//进行图书添加
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}//连接数据库
catch(ClassNotFoundExceptione)
{
System.out.println("加载驱动程序出错");
}
try
{
Stringdbuser = "sa";
String dbpwd= "123";
Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";
Connectioncon=DriverManager.getConnection(url,dbuser,dbpwd);
Statementsql;
Strings="insert into dbo.Table_bookvalues(‘"+tf1.getText()+"‘,‘"+tf2.getText()+"‘,‘"+tf3.getText()+"‘,‘"
+tf4.getText()+"‘,‘"+tf5.getText()+"‘,‘"+tf6.getText()+"‘);";
String query="select* from Table_book where 图书号=‘"+tf2.getText()+"‘";
//查询功能
sql=con.createStatement();
ResultSetrs=sql.executeQuery(query);
booleanmoreRecords=rs.next();//以上数据库操作基本上一样
if(moreRecords)
{
JOptionPane.showMessageDialog(f3,"图书号已经被使用,请重新输入");
con.close();//判断图书号是否已经被用
tf2.setText("");//重置图书号
return;
}
intinsert=sql.executeUpdate(s);
if(insert==1)
{
20
JOptionPane.showMessageDialog(null,"图书信息录入成功!!!");
con.close();
tf1.setText("");
tf2.setText("");
tf3.setText("");
tf4.setText("");
tf5.setText("");
tf6.setText("");//更新数据库,并且重置六个文本框
}
}
catch(SQLException g)
{
System.out.println(g.getErrorCode());
System.out.println(g.getMessage());
}
}
@SuppressWarnings("deprecation")@Override
public void actionPerformed(ActionEvent e) {
Stringcmd=e.getActionCommand();
if(cmd.equals("确定"))
{
insertRecord();//匹配按钮事件,调用插入方法
}
elseif(cmd.equals("取消"))
{
f3.hide();//退出窗口
}
}
public static void main(String [] args)
{
newBookIn();
}
}
更改密码UpdateMima类
package pk;//代码注释与上面几个类的代码近似一样
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class UpdateMima extends JFrame implementsActionListener{
privatestatic final long serialVersionUID = 1L;
21
JFrame f;
Container cp;
JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;
JButton jbt1,jbt2;
JLabel label;
JTextField name;
JPasswordField tf1,tf2,tf3;
JLabel label1,label2,label3,label4;
String sno;
UpdateMima(){}
UpdateMima(String username)
{
sno=username;
f=newJFrame("修改密码");
cp=f.getContentPane();
jp1=newJPanel();
jp2=newJPanel();
jp3=newJPanel();
jp4=newJPanel();
jpanelWest=newJPanel();
jp=newJPanel();
jbt1=newJButton("确定");
jbt2=newJButton("取消");
label=newJLabel("<html><font color=red size=‘4‘>"
+"修改密码<br><hr>请记住你的密码</font>",SwingConstants.CENTER);
label.setForeground(Color.gray);
name=newJTextField(10);
tf1=newJPasswordField(10);
tf2=newJPasswordField(10);
tf3=newJPasswordField(10);
jp1.add(jbt1);
jp1.add(jbt2);
JPaneljpanel=new JPanel();
jpanel.add(label);
JPanelpp4=new JPanel();
JPaneljpane4=new JPanel();
JPanelpp3=new JPanel();
cp.add(jpanel,"North");
JPanelpp2=new JPanel(new GridLayout(6,1,20,10));
pp4.setLayout(newGridLayout(6,1,20,10));
pp4.add(newJLabel("用户名: ",SwingConstants.RIGHT));
pp4.add(name);
22
pp4.add(new JLabel("原密码: ",SwingConstants.RIGHT));
pp4.add(tf1);
pp4.add(newJLabel("新密码: ",SwingConstants.RIGHT));
pp4.add(tf2);
pp4.add(newJLabel("确认密码: ",SwingConstants.RIGHT));
pp4.add(tf3);
pp4.add(newJLabel());
JPaneljpbutton=new JPanel();
jpbutton.add(jbt1);
jpbutton.add(jbt2);
pp3.add(jbt1);
pp3.add(jbt2);
pp2.add(jpbutton);
cp.add(pp4,"West");
cp.add(pp2,"Center");
cp.add(pp3,"South");
cp.add(jpane4,"East");
f.setSize(400,300);
f.setVisible(true);
jbt1.addActionListener(this);
jbt2.addActionListener(this);
}
@SuppressWarnings("deprecation")
public void upDateM()
{
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch(ClassNotFoundExceptione)
{
System.out.println("加载驱动程序出错");
}
try
{
Stringdbuser = "sa";
String dbpwd = "123";
Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";
Connectioncon=DriverManager.getConnection(url,dbuser,dbpwd);
Statementsql=con.createStatement();
Stringuname=name.getText().trim();
StringqueryMima="select * from Table_userwhere 用户名=‘"+uname+"‘";
ResultSetrs=sql.executeQuery(queryMima);
23
if(rs.next())
{
StringnewMima=tf2.getText().trim();
Strings="update dbo.Table_user set 密码=‘"+newMima+"‘where用户名 =‘"+uname+"‘";
sql=con.createStatement();
intupdateMima=sql.executeUpdate(s);
if(updateMima==1)
{
JOptionPane.showMessageDialog(f,"密码修改成功!");
}
f.hide();
con.close();
}
else
{
JOptionPane.showMessageDialog(null,"该用户不存在","提示!",JOptionPane.YES_NO_CANCEL_OPTION);
}
name.setText("");
tf1.setText("");
tf2.setText("");
tf3.setText("");
}
catch(SQLExceptiong)
{
System.out.println(g.getErrorCode());
System.out.println(g.getMessage());
}
}
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent e) {
Stringcmd=e.getActionCommand();
if(cmd.equals("确定"))
{
if(name.getText().equals("")||tf1.getText().equals("")||tf2.getText().equals("")||tf3.getText().equals(""))
{
JOptionPane.showMessageDialog(null,"请填写用户所有的信息","提示",JOptionPane.YES_NO_OPTION);
return;
}
24
if(tf2.getText().trim().equals(tf3.getText().trim()))
upDateM();
}
else if(cmd.equals("取消"))
{
f.hide();
}
}
public static void main(String []args )
{
newUpdateMima("");
}
}
删除图书RemoveBook类
package pk;//代码注释与上面几个类的代码近似一样
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class RemoveBook implements ActionListener{
JFrame f;
Container cp;
JPanel jpS,jpanelWest;
JButton jbt1,jbt2,jbt3;
JLabel label,L;
JTextField tf;
JTable table;
Object columnName[]={"图书名","图书号","单价","作者","出版社","入库时间"};
Object ar[][]=new Object[80][6];
String sno;
String count="0";
RemoveBook()
{
f=newJFrame("书籍是人类进步的阶梯!");
cp=f.getContentPane();
jpS=newJPanel();
jpanelWest=newJPanel();
jbt1=newJButton("查询");
jbt1.setBackground(Color.orange);
jbt2=newJButton("取消");
jbt2.setBackground(Color.magenta);
jbt3=newJButton("删除");
25
jbt3.setBackground(Color.LIGHT_GRAY);
label =newJLabel("<html><font color=yellow size=‘4‘>"
+"删除图书<br><hr>"
+"<html><font color=red size=‘4‘>请输入要删除的图书名:</font>",SwingConstants.CENTER);
label.setForeground(Color.blue);
L=newJLabel("该种图书共有"+count+"本");
table=newJTable(ar,columnName);
JScrollPanesrollpane=new JScrollPane(table);
tf=newJTextField(18);
jpS.add(jbt1);
jpS.add(jbt2);
jpS.add(jbt3);
JPaneljpanel=new JPanel();
jpanel.add(label);
jpanel.add(tf);
JPanelpp4=new JPanel();
JPaneljpE=new JPanel();
cp.add(jpanel,"North");
JPanelp=new JPanel();
p.setLayout(newBorderLayout());
p.add(L,"North");
p.add(srollpane);
cp.add(pp4,"West");
cp.add(p,"Center");
cp.add(jpS,"South");
cp.add(jpE,"East");
jpS.setBackground(Color.lightGray);
jpanelWest.setBackground(Color.lightGray);
jpanel.setBackground(Color.lightGray);
f.setSize(1000,600);
f.setVisible(true);
jbt1.addActionListener(this);
jbt2.addActionListener(this);
jbt3.addActionListener(this);
}
int i=0;
public void showRecord(String ql)
{
while(i>=0)
{
ar[i][0]="";
26
ar[i][1]="";
ar[i][2]="";
ar[i][3]="";
ar[i][4]="";
ar[i][5]="";
i--;
}
i=0;
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch(ClassNotFoundExceptione)
{
System.out.println("加载驱动程序出错");
}
try
{
String dbuser = "sa";
String dbpwd = "123";
Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";
Connectioncon=DriverManager.getConnection(url,dbuser,dbpwd);
Statement sql;
String s="select * from dbo.Table_bookwhere 图书名 =‘"+ql+"‘";
sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
while(rs.next())
{
Stringbname=rs.getString(1);
Stringbno=rs.getString(2);
Stringprice=rs.getString(3);
Stringwriter=rs.getString(4);
Stringpublish=rs.getString(5);
Stringindate=rs.getString(6);
ar[i][0]=bname;
ar[i][1]=bno;
ar[i][2]=price;
ar[i][3]=writer;
ar[i][4]=publish;
ar[i][5]=indate;
i++;}
27
count=""+i+"";
table=newJTable(ar,columnName);
L.setText("书库现有图书"+count+"本");
f.repaint();
con.close();
}
catch(SQLExceptiong)
{
System.out.println(g.getErrorCode());
System.out.println(g.getMessage());
}
}
public void deleteRecord(int ql)
{
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch(ClassNotFoundExceptione)
{
System.out.println("加载驱动程序出错");
}
try
{
Statementsql;
Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";
Connectioncon=DriverManager.getConnection(url);
Strings="delete * from dbo.Table_book where 图书名=‘"+ql+"‘";
sql=con.createStatement();
intdel=sql.executeUpdate(s);
if(del==1)
{
JOptionPane.showMessageDialog(null,"删除成功!","信息",JOptionPane.YES_NO_CANCEL_OPTION);
}
con.close();
f.repaint();
}
catch(SQLExceptiong)
{
System.out.println(g.getErrorCode());
System.out.println(g.getMessage());
}}
28
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent e) {
Stringql="";
if(e.getSource()==jbt1)
{
ql=tf.getText().trim();
showRecord(ql);
}
if(e.getSource()==jbt3)
{
int index=table.getSelectedRow();
if(index==-1)
{
JOptionPane.showMessageDialog(null,"请输入要删除的表格行","输入错误",JOptionPane.YES_NO_OPTION);
}
else
{
deleteRecord(index);
}
}
if(e.getSource()==jbt2)
{
f.hide();
}
}
public static void main(String []arg)
{
new RemoveBook();
}
}
查询图书QueryBook类
package pk;
import java.sql.*;//包含实现java程序与操作系统以及其他java程序之间进行数据交换的类
import java.awt.*;//包含创建用户界面与绘制图形的类
import java.awt.event.*;//事件处理所在的类
29
import javax.swing.*;//包含轻量级组件
//查询图书
public class QueryBook implements ActionListener{
/**
*
*/
//QueryBook类实现接口ActionListener
JFramef;//设置顶级窗口对象
Container cp;//容器对象
JPanel jpS,jpanelWest;//创建面板
JButton jbt1,jbt2,jbt3;//设置按钮
JLabel label,L;//创建标签
JTextField tf;//创建文本框
JTable table;
Object columnName[]={"图书名","图书号","单价","作者","出版社","入库时间"};
Object ar[][]=new Object [2000][6];
String sno;//创建表 与 数组
String count="0";
QueryBook()
{
f=newJFrame("书籍是人类进步的阶梯!");//设置标题
cp=f.getContentPane();//返回ContentPane内容
jpS=newJPanel();//创建面板jpS
jpanelWest= new JPanel();//创建面板jpanelWest
jbt1=newJButton("查询");
jbt1.setBackground(Color.lightGray);//创建按钮 设为查询 并且设置背景颜色
jbt2=newJButton("确定");
jbt2.setBackground(Color.lightGray);//创建按钮 设为确定 并且设置背景颜色
jbt3=newJButton("取消");
jbt3.setBackground(Color.lightGray);//创建按钮 设为取消 并且设置背景颜色
label=newJLabel("<html><font color=blue size=‘6‘>图书查询<br><hr>请输入图书名:</Font>",SwingConstants.CENTER);
label.setForeground(Color.gray);
//设置超级文本 设置颜色
L=newJLabel("该种图书共有"+count+"本");//添加标签,显示多少本书
table=newJTable(ar,columnName);//建立一个新的表
JScrollPanescrollpane =new JScrollPane(table);//建立一个滚动面板
tf=newJTextField(18);//设置文本框大小
jpS.add(jbt1);
jpS.add(jbt2);
jpS.add(jbt3);//按钮jbt1 jbt2 jbt3 添加到面板jpS
30
JPanel jpanel=new JPanel();
jpanel.add(label);
jpanel.add(tf);
JPanelpp4=new JPanel();
JPaneljpE=new JPanel();
cp.add(jpanel,"North");//面板添加到容器North
JPanelp=new JPanel();
p.setLayout(newBorderLayout());//面板为边界布局
p.add(L,"North");//标签为North方向
p.add(scrollpane);//面板添加滚动面板
cp.add(pp4,"West");
cp.add(p,"Center");
cp.add(jpS,"South");
cp.add(jpE,"East");//pp4->Westp->Center jpS->South jpE->East
jpS.setBackground(Color.lightGray);//设置面板背景颜色
jpanel.setBackground(Color.lightGray);//设置面板背景颜色
f.setSize(1000,550);//设置大小
f.setVisible(true);//设置可视化
jbt1.addActionListener(this);
jbt2.addActionListener(this);
jbt3.addActionListener(this);//按钮监听事件
}
int i=0;
public void showRecord(String ql)
{
while(i>=0)
{
ar[i][0]="";
ar[i][1]="";
ar[i][2]="";
ar[i][3]="";
ar[i][4]="";
ar[i][5]="";
i--;
}
i=0;
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch(ClassNotFoundExceptione)
{
System.out.println("加载驱动程序失败");}
31
try
{
Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";
Connectioncon=DriverManager.getConnection(url);
Statement sql;
String s="select * from dbo.Table_bookwhere 图书名 =‘"+ql+"‘";
sql=con.createStatement();
ResultSetrs=sql.executeQuery(s);
while(rs.next())
{
Stringbname=rs.getString(1);
Stringbno=rs.getString(2);
Stringprice=rs.getString(3);
Stringwriter=rs.getString(4);
Stringpublish=rs.getString(5);
Stringindate=rs.getString(6);
//定义图书名 图书号 价格 作者 出版社 出版日期
ar[i][0]=bname;
ar[i][1]=bno;
ar[i][2]=price;
ar[i][3]=writer;
ar[i][4]=publish;
ar[i][5]=indate;
i++;
}
count=""+i+"";
L.setText("书库现有该图书"+count+"本");
f.repaint();
con.close();
System.out.println(ar[0][1]);
}
catch(SQLExceptiong)
{
System.out.println(g.getErrorCode());
System.out.println(g.getMessage());
}
}
public void deleteRecord(int index)
{
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
32
}catch(ClassNotFoundExceptione)
{
System.out.println("加载驱动程序失败");
}
try
{
Stringdbuser = "sa";
String dbpwd = "123";
Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";
Connectioncon=DriverManager.getConnection(url,dbuser,dbpwd);
Statementsql;
Stringql=(String)(ar[index][1]);
Strings="delete * from Table_book where 图书名 =‘"+ql+"‘";
sql=con.createStatement();
intdel=sql.executeUpdate(s);
if(del==1)
{
JOptionPane.showMessageDialog(null,"删除成功","信息",JOptionPane.YES_NO_CANCEL_OPTION);
}
con.close();
f.repaint();
}
catch(SQLException g)
{
System.out.println(g.getErrorCode());
System.out.println(g.getMessage());
}
}
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent e)
{
Stringql="";
Stringcmd=e.getActionCommand();
if(cmd.equals("查询"))
{
ql=tf.getText().trim();
showRecord(ql);
}
if(cmd.equals("确定"))
33
{
System.exit(0);
}
if(cmd.equals("取消"))
f.hide();
}
public static void main(String []arg){
newQueryBook();
}
}
预览图书BookBrower类
package pk;
import java.sql.*;//包含实现java程序与操作系统以及其他java程序之间进行数据交换的类
import java.awt.*;//包含创建用户界面与绘制图形的类
import java.awt.event.*;//事件处理所在的类
import javax.swing.*;//包含轻量级组件
//预览图书
public class BookBrower implements ActionListener {
/**
*
*/
//预览图书 实现ActionListener接口
JFrame f;//设置顶级窗口对象
Container cp;//容器对象
JPanel jpS,jpanelWest;//设置面板
JButton jbt1,jbt2;//设置按钮
JLabel L,label;//设置标签
JTable table;//表对象
Object columnName[]={"书名","书号","单价","作者","出版社","入架时间"};
//设置一维数组
Object ar[][]=new Object[1000][6];//设置二维数组
String count="1000";
String sno;
BookBrower()
{
f=newJFrame("预览图书");//设置窗口标题
cp=f.getContentPane();//返回窗体的 contentPane对象
jpS=newJPanel();
jpanelWest=newJPanel();
JButtonjbt1 = new JButton("确定");//按钮添加确定
jbt1.setBackground(Color.lightGray);//设置按钮颜色
34
JButton jbt2=new JButton("返回");//按钮添加确定
jbt2.setBackground(Color.lightGray);//设置按钮颜色
label=newJLabel("<html><font color= blue size=‘6‘> "
+" "+"预览图书<br><hr>立志宜思真品格,读书须尽真功夫--阮元</font>",SwingConstants.CENTER);
//设置超文本 颜色字体大小  为空格符 放在窗口中间
L=newJLabel("图书库现有图书"+count+"本");//标签
table =newJTable(ar,columnName);
JScrollPanescrollpane=new JScrollPane(table);//滚动面板
jpS.add(jbt1);
jpS.add(jbt2);//按钮1 按钮2 添加到面板中
JPaneljpanel=new JPanel();
jpanel.add(label);//label添加到面板中
JPanelpp4=new JPanel();
JPaneljpE=new JPanel();
cp.add(jpanel,"North");//面板jpanel添加到容器North
JPanelp=new JPanel();
p.setLayout(newBorderLayout());//p设为为边界布局
p.add(L,"North");
p.add(scrollpane);
cp.add(pp4,"West");//pp4添加到West
cp.add(p,"Center");//p添加到Center
cp.add(jpS,"South");//jpS添加到South
cp.add(jpE,"East");//East添加到East
jpanel.setBackground(Color.LIGHT_GRAY);//设置背景颜色
jpS.setBackground(Color.LIGHT_GRAY);
jpanelWest.setBackground(Color.LIGHT_GRAY);
f.setSize(1000,600);//设置大小
f.setVisible(true);//设为可视化
jbt1.addActionListener(this);
jbt2.addActionListener(this);
}
int i=0;
public void showRecord()
{
while(i>=0)
{
ar[i][0]="";
ar[i][1]="";
ar[i][2]="";
ar[i][3]="";
ar[i][4]="";
35
ar[i][5]="";
i--;
}
i=0;
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//连接数据库
}catch(ClassNotFoundExceptione)
{
System.out.println("加载驱动程序失败");//显示驱动加载异常
}
try
{
Stringdbuser = "sa";
Stringdbpwd = "123";
//存储于数据库中的用户名 密码
Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";
Connectioncon=DriverManager.getConnection(url,dbuser,dbpwd);
Strings="select * from dbo.Table_book ";//获取图书相关信息
Statementsql=con.createStatement();
ResultSetrs=sql.executeQuery(s);
while(rs.next())
{
Stringbname=rs.getString(1);
Stringbno=rs.getString(2);
Stringprice=rs.getString(3);
Stringwriter=rs.getString(4);
Stringpublish=rs.getString(5);
Stringindate=rs.getString(6);
ar[i][0]=bname;
ar[i][1]=bno;
ar[i][2]=price;
ar[i][3]=writer;
ar[i][4]=publish;
ar[i][5]=indate;
i++;
}
count=""+i+"";//计算存储于数据库中的图书数量
L.setText("书库现有图书"+count+"本");//显示标签信息
f.repaint();
con.close();}
36
catch(SQLExceptiong)
{
System.out.println(g.getErrorCode());
System.out.println(g.getMessage());
}
}
@SuppressWarnings("deprecation")
@Override
public void actionPerformed(ActionEvent e) {
Stringcmd=e.getActionCommand();
if(cmd.equals("确定"));
{
f.hide();//匹配确定按钮
}
if(cmd.equals("返回"));
{
f.hide();//匹配返回按钮
}
}
public static void main(String []arg)
{
BookBrowera=new BookBrower();
a.showRecord();//调用显示方法名
}
}
图书主界面Book类
package pk;
import java.sql.*;//包含实现java程序与操作系统以及其他java程序之间进行数据交换的类
import java.awt.*;//包含创建用户界面与绘制图形的类
import java.awt.event.*;//事件处理所在的类
import javax.swing.*;//包含轻量级组件
//预览图书
public class BookBrower implements ActionListener {
/**
*
*/
//预览图书 实现ActionListener接口
JFrame f;//设置顶级窗口对象
Container cp;//容器对象
JPanel jpS,jpanelWest;//设置面板
JButton jbt1,jbt2;//设置按钮
37
JLabel L,label;//设置标签
JTable table;//表对象
Object columnName[]={"书名","书号","单价","作者","出版社","入架时间"};
//设置一维数组
Object ar[][]=new Object[1000][6];//设置二维数组
String count="1000";
String sno;
BookBrower()
{
f=newJFrame("预览图书");//设置窗口标题
cp=f.getContentPane();//返回窗体的 contentPane对象
jpS=newJPanel();
jpanelWest=newJPanel();
JButtonjbt1 = new JButton("确定");//按钮添加确定
jbt1.setBackground(Color.lightGray);//设置按钮颜色
JButtonjbt2=new JButton("返回");//按钮添加确定
jbt2.setBackground(Color.lightGray);//设置按钮颜色
label=newJLabel("<html><font color= blue size=‘6‘> "
+" "+"预览图书<br><hr>立志宜思真品格,读书须尽真功夫--阮元</font>",SwingConstants.CENTER);
//设置超文本 颜色字体大小  为空格符 放在窗口中间
L=newJLabel("图书库现有图书"+count+"本");//标签
table =newJTable(ar,columnName);
JScrollPanescrollpane=new JScrollPane(table);//滚动面板
jpS.add(jbt1);
jpS.add(jbt2);//按钮1 按钮2 添加到面板中
JPaneljpanel=new JPanel();
jpanel.add(label);//label添加到面板中
JPanelpp4=new JPanel();
JPaneljpE=new JPanel();
cp.add(jpanel,"North");//面板jpanel添加到容器North
JPanelp=new JPanel();
p.setLayout(newBorderLayout());//p设为为边界布局
p.add(L,"North");
p.add(scrollpane);
cp.add(pp4,"West");//pp4添加到West
cp.add(p,"Center");//p添加到Center
cp.add(jpS,"South");//jpS添加到South
cp.add(jpE,"East");//East添加到East
jpanel.setBackground(Color.LIGHT_GRAY);//设置背景颜色
jpS.setBackground(Color.LIGHT_GRAY);
jpanelWest.setBackground(Color.LIGHT_GRAY);
38
f.setSize(1000, 600);//设置大小
f.setVisible(true);//设为可视化
jbt1.addActionListener(this);
jbt2.addActionListener(this);
}
int i=0;
public void showRecord()
{
while(i>=0)
{
ar[i][0]="";
ar[i][1]="";
ar[i][2]="";
ar[i][3]="";
ar[i][4]="";
ar[i][5]="";
i--;
}
i=0;
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//连接数据库
}catch(ClassNotFoundExceptione)
{
System.out.println("加载驱动程序失败");//显示驱动加载异常
}
try
{
Stringdbuser = "sa";
Stringdbpwd = "123";
//存储于数据库中的用户名 密码
Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";
Connectioncon=DriverManager.getConnection(url,dbuser,dbpwd);
Strings="select * from dbo.Table_book ";//获取图书相关信息
Statementsql=con.createStatement();
ResultSetrs=sql.executeQuery(s);
while(rs.next())
{
Stringbname=rs.getString(1);
Stringbno=rs.getString(2);
Stringprice=rs.getString(3);
Stringwriter=rs.getString(4);
39
String publish=rs.getString(5);
Stringindate=rs.getString(6);
ar[i][0]=bname;
ar[i][1]=bno;
ar[i][2]=price;
ar[i][3]=writer;
ar[i][4]=publish;
ar[i][5]=indate;
i++;
}
count=""+i+"";//计算存储于数据库中的图书数量
L.setText("书库现有图书"+count+"本");//显示标签信息
f.repaint();
con.close();
}
catch(SQLExceptiong)
{
System.out.println(g.getErrorCode());
System.out.println(g.getMessage());
}
}
@SuppressWarnings("deprecation")
@Override
public void actionPerformed(ActionEvent e) {
Stringcmd=e.getActionCommand();
if(cmd.equals("确定"));
{
f.hide();//匹配确定按钮
}
if(cmd.equals("返回"));
{
f.hide();//匹配返回按钮
}
}
public static void main(String []arg)
{
BookBrowera=new BookBrower();
a.showRecord();//调用显示方法名
}
}
40
参考文献
[1]Java基础入门 清华大学出版社 传智播客高教产品研发部编著
[2]java编程思想 机械工业出版社 Bruce Eckel 著 陈昊鹏 译
[3]CSDN博客
[4]HTML5入门经典 机械工业出版社 刘欢 王雨竹 著
43