深圳广播电视大学
计算机信息管理专业毕业设计(论文)
《图书管理系统设计与实现》
摘要
在信息化时代,数据库系统的建设实现对数据信息化的管理。在此基础上建立了图书管理系统,为其信息时代管理和交流提供了极大的便利。该论文着重论述了运用vb程序设计与后台数据库链接等关键技术所建立系统界面的布局分析,功能的实现及管理。
关键词:VB程序设计、ACCESS数据库
目 录
第一章 概述
第一节 课题来源
图书管理系统是图书馆管理工作中不可缺少的部分,它的内容对于图书馆的管理者和使用者来说都至关重要,所以图书管理系统应该能够为管理者或读者提供充足的信息和快捷的数据处理手段。但一直以来人们使用传统人工的方式进行图书管理和借阅管理,这种管理方式存在着许多缺点,如:效率低、易忘记、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。所以利用计算机实现图书信息信息管理的自动化将势在必行。
随着计算机技术的飞速发展,计算机以及计算机控制的自动处理技术已融入人类社会的各个领域并发挥着越来越重要的作用。对于当今的科学信息是一次重大的飞越,为人们的生活、工作、学习带来潜移默化的影响。今天我们使用计算机对图书进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高图书管理的效率。面对目前的实际状况,迫切需要开发一个新系统来适应这一些工作。
第二节 开发背景和开发目的
当今社会,随着图书馆的规模不断扩大,图书数量急剧增加,有关图书的各种信息也成倍增长特别是图书信息的信息,而面对庞大的信息量,有必要开发图书管理系统来提高图书管理工作的效率。通过这样的系统,可以做到信息的规范管理、科学统计和快速查询,从而减少管理方面的工作量。
在图书馆,尤其是在各大图书馆,对于图书的管理是相当重要,而且也是相当麻烦的,它是图书馆管理中最基本的一项常规性工作。而长期以来,图书馆管理都是依赖人工来进行的,面对如此众多的图书信息,其工作量是相当相当巨大的。这样不仅仅浪费了大量的人力物力,而且由于人工管理存在着大量的不可预知性,造成图书信息管理的一些不规范,使得信息管理陷入“事倍功半”的地步。
开发本系统就是为了解决图书馆在图书信息管理中的一些不规范,使图书信息的管理向着规范化、简单化、有效化的方向发展。
第二章 需求分析
第一节 系统目标
采用图书馆现有的软硬件软件及科学的管理系统开发方案,建立图书入库信息管理系统,实现图书入库管理的计算机自动化。
系统应符合图书馆原有的图书管理制度,并达到操作直观、方便、实用、安全等要求。
第二节 应用现状调查
当前,很多图书馆的图书管理都是以纸张为介质作记录,人力管理的比例比较大,因此实现图书管理的计算机化是非常必要的,也是可行的,因为使用计算机化的图书管理系统可以彻底改变管理工作的现状,能提高工作效率,能够提供更准确、及时、实用的信息。
第三节 系统总体流程图如下:
第四节 系统功能模块图
第五节 系统功能的分析
系统开发的总体任务是实现图书信息管理的系统化、规范化和自动化。
系统功能分析是在系统开发的总体任务的基础上完成的。读者信息管理系统需要完成的功能主要有:
·有关借还书等信息的输入,包括输入借书编号、图书编号、读者编号、借书时间和还书时间等。
·借还书信息的查询,包括借书编号、图书编号、读者编号、借书时间和还书时间等。
·图书管理信息的添加、修改、查询。
·系统用户信息的添加、修改、查询。
根据系统功能模块图得出系统的功能,现分析如下:
系统功能的分析
系统开发的总体任务是实现图书信息管理的系统化、规范化和自动化。
系统功能分析是在系统开发的总体任务的基础上完成的。图书信息管理系统需要完成的功能主要有:
·有关借还书等信息的输入,包括输入借书编号、图书编号、读者编号、借书时间和还书时间。
·借还书信息的查询,包括借书编号、图书编号、读者编号、借书时间和还书时间。
·图书信息管理的添加、删除、修改。
·图书类别管理的输入,包括输入图书类别、图书编号、图书名称。
·读者管理信息的查询。
·图书管理信息的查询。
·系统用户的添加和删
第六节 开发工具的选择
针对目前世界上流行的大量软件和开发工具,经过认真分析其优缺点,结合数据库管理系统的需要和目前的硬件环境,我们选用微软WINDOWS平台下的Visual Basic6.0(简写为VB6.0)作为软件开发工具。
第三章 图书管理系统的设计
第一节 数据库设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。同时,合理的数据库结构也将有利于程序的实现。
设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。
第二节 数据库流程图
借书是图书管理系统的主要流程之一,其过程是在借阅信息表中查找自己所需要的图书,然后进行借书、借书登记等操作。
数据流程图:
图1借书的主要流程图
第三节 数据库逻辑结构设计
图书信息管理系统数据库中各个表格的设计结果如下所示:
借阅表:
表1 借阅表
读者表:
表2 读者表
读者类别表:
表3 读者类别表
图书表:
表4 图书表
图书类别表:
表5 图书类别表
工作人员表:
表6 工作人员表
第四章 图书管理系统实施
第一节 创建工程项目——prjLMS
为了用Visual Basic创建应用程序,应当使用工程。一个工程是用来建造应用程序的文件的集合,它包括:
·跟踪所有部件的工程文件(.vbp)
·每个窗体的文件(.frm)
·每个窗体的二进制数据文件(.frx),它含有窗体上控件的属性数据。对含有二进制属性的任何.frm文件都是不可编辑的,这些文件都是自动产生的。
·每个类模块的一个文件(.cls),该文件是可选项。
·每个标准模块的一个文件(.bas),该文件是可选项。
·一个或多个包含ActiveX控件的文件(.ocx), 该文件是可选项。
·单个资源文件(.res), 该文件是可选项。
启动Visual Basic后,单击File/New Project菜单,在工程模板中选择Standard EXE, Visual Basic将自动产生一个Form窗体,属性都为缺省设置。删除窗体,单击File/Save Project菜单,将工程项目命名为图书馆管理系统。
第二节 创建图书信息管理系统的主窗体
Visual Basic创建的应用程序可以是SDI(单文档界面)和MDI(多文档界面)。在SDI的程序中,每个窗体之间是独立的。而MDI的程序中,有一个窗体是主窗体,可以包含其他窗体,它的类型是MDI Form。本系统采用多文档界面,这样可以使程序更加美观、整齐有序。
图书馆管理系统主窗体
单击工具栏中的“ MDI Form”按钮,生成一个窗体,属性设置如表。
主窗体及其控件属性设置:
表7 主窗体及其属性表
在主窗体中加入状态栏控件,可以实时反映系统中的各个状态的变化。状态栏控件需要在通常的属性窗口中设置一般属性,还需要在其特有的弹出式菜单中进行设置。选中状态栏控件,单击鼠标右键,选中Property菜单,在“General”属性页对一般属性进行设置,在“Panels”属性页对各个文本框进行设置,在“Font”属性页对文本字体进行设置,在“Picture”属性页可以添加图片。
单击Insert Panel按钮,为状态栏添加3个面板,设置属性如下表:
表8 主窗体中面板属性设置表
面板1用来显示各种文本信息,面板2用来显示当前日期,面板3用来显示当前时间。
第三节 创建主窗体的菜单
在主窗体中,单击鼠标右键,选择弹出式菜单中的“Menu Editor”命令,创建菜单结构如下表:
图9 主窗体菜单结构表
第五章 设计总结
本系统的功能基本符合用户需求,能够完成图书信息的存储和查询等操作。使用户方便进行数据输入、修改、删除等管理措施。对于数据的一致性的问题也通过程序进行了有效的解决。
在系统设计过程中,我体会到了即使是一件小事也不能马虎,在设计之前一定要对所设计的系统有较为深刻地了解,并对用户的要求加以认真的分析,并给予分类,对所分类进行功能模块化设计,画出系统数据流图,流程图和结构图.这样在进行详细设计时才可以做到有条不紊一步步地进行.编制一个系统还是有很多可学习的地方,不仅要掌握好相关知识,而且做事要细心,谨慎,这也是将来工作和学习应该注意的地方。
参考文献
[1] 《Visual Basic 程序设计》 刘世峰主编 中央电大出版社
[2] 《软件工程》 陈明编 中央电大出版社
[3] 《数据库基础与应用》 刘世峰主编 中央电大出版社
[4] 《Visual Basic数据库系统开发实例导航》刘韬编人民邮电出版社
[5] 《企业办公系统开发实例导航》 刘萌 人民邮电出版社
[6] 《数据库开发技术与工程实践》 张立科 人民邮电出版社
附录
源程序清单
主窗体原代码:
Select Case Button.Index
Case 1
frmBookInfo.Show
frmBookInfo.SetFocus
Case 2
frmMemberInfo.Show
frmMemberInfo.SetFocus
Case 5
frmIssue.Show
frmIssue.SetFocus
Case 6
frmReturn.Show
frmReturn.SetFocus
Case 9
Call mnuLogOff_Click
Case 10
Call mnuExit_Click
End Select
End Sub
'====================================================
' Form Event Coding [Starts]
'====================================================
Private Sub MDIForm_Load()
'First display the MDI Form
frmMain.Show
'Display Good-Thoughts form on start-up
frmTip.Show vbModal
DoEvents
frmWelcome.Show
DoEvents
End Sub
'When Application is Unloaded
Private Sub MDIForm_Unload(Cancel As Integer)
On Error Resume Next
If ApplicationUnload() <> 1 Then
Cancel = True
Else
Unload frmSYSTRAYICON
End If
End Sub
'====================================================
' Form Event Coding [Ends]
'====================================================
'=====================================================
'Code for Opening WebLink
Private Sub status_PanelClick(ByVal Panel As MSComctlLib.Panel)
ShellExecute Me.hWnd, vbNullString, "http://www.vivekpatel.cjb.net", vbNullString, vbNullString, SW_SHOWNORMAL
End Sub
第二篇:小型图书管理系统设计报告
陕西师范大学远程教育学院
题目: java小型图书管理系统设计
学习中心:陕西省咸阳教育科技培训学院
学号:
层次:高中起点专科
姓名:党晨娜
1.前言
本系统是小型图书管理系统,专为个人设计。本系统启动后需要登陆,然后进入主界
在这个界面我们可以选择所需要的功能模块来完成所要执行的功能。
系统共有4个功能模块:图书入库、图书查询、图书删除、图书概览、修改密码。支持一系列关于图书管理方面的简单操作,诸如查询、删除、添加、修改密码等。
2.系统流程图
说明:
首先是输入判断,相当于在登陆模块,要求用户输入用户名和密码;然后判断,如果判断失败退出系统,否则进入图书管理系统的主界面。进入主界面后,用户要选择所需执行的功能,即通过鼠标点击相应项,来完成所需操作。
3.数据库设计
在图书管理系统中,共设计2张表。本系统使用Access来创建数据表。数据库的名称为Book.mdb。
1.表book
2.表user
4.界面设计
系统源码
1登陆界面:程序名Login.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.util.*;
import java.sql.*;
class Login extends JFrame implements ActionListener
{ Container cp=null;
JFrame f=null;
JButton j1,j2;
JTextField t1;
JPasswordField t2;
JLabel jlable1,jlable2;
Color c;
JPanel jp1,jp2;
Login(){
f=new JFrame("小型图书管理系统");
j1=new JButton("确定");
j2=new JButton("取消");
cp=f.getContentPane();
jlable1=new JLabel(" 输入用户名");
jlable2=new JLabel(" 用户密码");
jp1=new JPanel();
jp2=new JPanel();
t1=new JTextField(18);
t2=new JPasswordField(18);
jp1.add(jlable1);
jp1.add(t1);
jp1.add(jlable2);
jp1.add(t2);
JLabel JL=new JLabel("欢迎登陆",SwingConstants.CENTER);
cp.add(JL,"North");
jp2.add(j1);
jp2.add(j2);
cp.add(jp1,"Center");
cp.add("South",jp2);
jp1.setBackground(new Color(255,153,255));
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
//setSize(x,y); /*让系统窗口平铺整个显示器窗口*/
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("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
Statement sql=con.createStatement();
String uname=t1.getText().trim();
String Mima=t2.getText().trim();
String queryMima="select * from user where 用户名='"+uname+"' and 密码='"+Mima+"'";
ResultSet rs=sql.executeQuery(queryMima);
if(rs.next())
{
new Book(uname);
f.hide();
con.close();
}else{
JOptionPane.showMessageDialog(null,"该用户不存在","提示!",
JOptionPane.YES_NO_OPTION);
}
t1.setText("");
t2.setText("");
} catch(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("确定")){
confirm();
}
else if(cmd.equals("取消")){
f.dispose();
}
}
public static void main(String []arg){
Login a=new Login();
}
}
2图书概览:程序名BookBrower.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.util.*;
import java.sql.*;
class BookBrower implements ActionListener
{
JFrame f;
Container cp;
JPanel jpS,jpanelWest;
JButton jbt1,jbt2;//按钮,查询、取消、修改
JLabel label,L; //标签
//定义文本框
JTable table;//用来接收数据库中返回的信息
Object columnName[]={"图书名","图书号","单价","作者","出版社","入库时间"};
Object ar[][] =new Object[80][6];
String sno;
String count="xx";
BookBrower()
{
f=new JFrame();
cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框
jpS=new JPanel();
jpanelWest=new JPanel();
//------------------------------------------------
jbt1=new JButton("确定");
jbt2=new JButton("返回");
//------------------------------------------------
label=new JLabel("图书概览",SwingConstants.CENTER);
label.setForeground(Color.blue);
L=new JLabel("书库现在共有图书"+count+"本");
//------------------------------------------------
table=new JTable(ar,columnName);//ar存放表中的数据,columnname表示列名
JScrollPane scrollpane = new JScrollPane(table);
//------------------------------------------------
//布局,添加控件
jpS.add(jbt1);
jpS.add(jbt2);
JPanel jpanel=new JPanel();
jpanel.add(label);
JPanel pp4=new JPanel();
JPanel jpE=new JPanel();
cp.add(jpanel,"North");
JPanel jp=new JPanel();
//jp.add(scrollpane);
JPanel p=new JPanel();//用来放两个表
p.setLayout(new BorderLayout());
p.add(L,"North");
p.add(scrollpane);
cp.add(pp4,"West");
cp.add(p,"Center");
cp.add(jpS,"South");
cp.add(jpE,"East");
//------------------------------------------------
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
f.setSize(400,330);
int xcenter=(x-350)/2;
int ycenter=(y-330)/2;
f.setLocation(xcenter,ycenter);/*显示在窗口中央*/
f.setVisible(true);
//-------------------------------------------------
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
/* f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);*/
}
//------------------------------------------------
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("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
String s="select * from book ";
Statement sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
while(rs.next())
{
String bname=rs.getString(1);
String bno=rs.getString(2);
String price=rs.getString(3);
String writer=rs.getString(4);
String publish=rs.getString(5);
String indate=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(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("确定"))
{
f.hide();
}
if(cmd.equals("返回"))
f.hide();
}
public static void main(String []arg){
BookBrower a=new BookBrower();
a.showRecord();
}
}
3图书查询:程序名QueryBook.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.util.*;
import java.sql.*;
class QueryBook implements ActionListener
{
JFrame f3;
Container cp;
JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;
JButton jbt1,jbt2;//按钮,确定、取消
JLabel label; //标签:请输入图书号
JTextField tf,tf1,tf2,tf3,tf4,tf5,tf6; //定义文本框
JLabel label1,label2,label3,label4;
QueryBook()
{
f3=new JFrame();
cp=f3.getContentPane(); // 初始化面板、按钮、标签、文本框
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
jp4=new JPanel();
jpanelWest=new JPanel();
jp=new JPanel();
//------------------------------------------------
jbt1=new JButton("确定");
jbt2=new JButton("取消");
//------------------------------------------------
label=new JLabel("请输入图书号:",SwingConstants.CENTER);
label.setForeground(Color.blue);
tf=new JTextField(20);
//------------------------------------------------
tf1=new JTextField(20);
tf2=new JTextField(20);
tf3=new JTextField(20);
tf4=new JTextField(20);
tf5=new JTextField(20);
tf6=new JTextField(20);
//------------------------------------------------
//布局,添加控件
JPanel jpanel=new JPanel();
jpanel.add(label);
jpanel.add(tf);
JPanel pp4=new JPanel();
JPanel jpane4=new JPanel();
cp.add(jpanel,"North");
JPanel pp2=new JPanel(new GridLayout(6,1));
JPanel pp3=new JPanel();
pp4.setLayout(new GridLayout(6,1));
pp4.add(new JLabel("图书名",SwingConstants.CENTER));
pp2.add(tf1);
pp4.add(new JLabel("图书号",SwingConstants.CENTER));
pp2.add(tf2);
pp4.add(new JLabel("单 价",SwingConstants.CENTER));
pp2.add(tf3);
pp4.add(new JLabel("作 者",SwingConstants.CENTER));
pp2.add(tf4);
pp4.add(new JLabel("出版社",SwingConstants.CENTER));
pp2.add(tf5);
pp4.add(new JLabel("入库时间",SwingConstants.CENTER));
pp2.add(tf6);
pp3.add(jbt1);
pp3.add(jbt2);
cp.add(pp4,"West");
cp.add(pp2,"Center");
cp.add(pp3,"South");
cp.add(jpane4,"East");
//------------------------------------------------
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
f3.setSize(350,330);
int xcenter=(x-350)/2;
int ycenter=(y-330)/2;
f3.setLocation(xcenter,ycenter);/*显示在窗口中央*/
f3.setVisible(true);
//-------------------------------------------------
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
/*f3.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);*/
}
//------------------------------------------------
public void showRecord()
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
Statement sql;
String ql=tf.getText().trim();
String s="select * from book where 图书号 ='"+ql +"'";
sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
if(rs.next())
{
String bname=rs.getString(1);
String bno=rs.getString(2);
String price=rs.getString(3);
String writer=rs.getString(4);
String publish=rs.getString(5);
String indate=rs.getString(6);
tf1.setText(bname);
tf2.setText(bno);
tf3.setText(price);
tf4.setText(writer);
tf5.setText(publish);
tf6.setText(indate);
}
else
{JOptionPane.showMessageDialog(null,"您输入的图书号不存在,请重新输入",
"输入错误", JOptionPane.YES_NO_OPTION);
}
con.close();
}catch(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
tf1.setEditable(false);
tf2.setEditable(false);
tf3.setEditable(false);
tf4.setEditable(false);
tf5.setEditable(false);
tf6.setEditable(false);
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("确定"))
{
showRecord();
tf.setText("");
}
else if(cmd.equals("取消"))
f3.hide();
}
public static void main(String []arg){
QueryBook a=new QueryBook();
}
}
4图书删除:程序名RemoveBook.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.util.*;
import java.sql.*;
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="xx";
RemoveBook()
{
f=new JFrame();
cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框
jpS=new JPanel();
jpanelWest=new JPanel();
//------------------------------------------------
jbt1=new JButton("查询");
jbt2=new JButton("取消");
jbt3=new JButton("删除");
//------------------------------------------------
label=new JLabel("请输入要删除的图书名:",SwingConstants.CENTER);
label.setForeground(Color.blue);
L=new JLabel("该种图书共有"+count+"本");
//------------------------------------------------
table=new JTable(ar,columnName);//ar存放表中的数据,columnname表示列名
JScrollPane scrollpane = new JScrollPane(table);
//------------------------------------------------
tf=new JTextField(18);
//------------------------------------------------
//------------------------------------------------
//布局,添加控件
jpS.add(jbt1);
jpS.add(jbt2);
jpS.add(jbt3);
JPanel jpanel=new JPanel();
jpanel.add(label);
jpanel.add(tf);
JPanel pp4=new JPanel();
JPanel jpE=new JPanel();
cp.add(jpanel,"North");
JPanel jp=new JPanel();
//jp.add(scrollpane);
JPanel p=new JPanel();//用来放两个表
p.setLayout(new BorderLayout());
p.add(L,"North");
p.add(scrollpane);
cp.add(pp4,"West");
cp.add(p,"Center");
cp.add(jpS,"South");
cp.add(jpE,"East");
//------------------------------------------------
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
f.setSize(400,330);
int xcenter=(x-350)/2;
int ycenter=(y-330)/2;
f.setLocation(xcenter,ycenter);/*显示在窗口中央*/
f.setVisible(true);
//-------------------------------------------------
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
jbt3.addActionListener(this);
/*f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);*/
}
//------------------------------------------------
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("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
Statement sql;
String s="select * from book where 图书名 ='"+ql +"'";
sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
while(rs.next())
{
String bname=rs.getString(1);
String bno=rs.getString(2);
String price=rs.getString(3);
String writer=rs.getString(4);
String publish=rs.getString(5);
String indate=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(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
public void deleteRecord(int index)
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
Statement sql;
String ql=(String)(ar[index][1]);
String s="delete * from book where 图书号 ='"+ql +"'";
sql=con.createStatement();
int del=sql.executeUpdate(s);
if(del==1)
{JOptionPane.showMessageDialog(null,"删除成功!",
"信息", JOptionPane.YES_NO_OPTION);
}
con.close();
f.repaint();
}catch(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
public void actionPerformed(ActionEvent e)
{
String remember="";
String ql="";
String cmd=e.getActionCommand();
if(cmd.equals("查询"))
{
ql=tf.getText().trim();
remember=ql;
showRecord(ql);
}
if(cmd.equals("删除"))
{
int index=table.getSelectedRow();
if( index==-1)
JOptionPane.showMessageDialog(null,"请选定要删除的表格行",
"输入错误", JOptionPane.YES_NO_OPTION);
else{
deleteRecord(index);
//showRecord(remember);
}
}
if(cmd.equals("取消"))
f.hide();
}
public static void main(String []arg){
RemoveBook a=new RemoveBook();
}
}
5图书入库:程序名BookIn.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.util.*;
import java.sql.*;
import javax.swing.text.JTextComponent;
//extends JFrame
class BookIn implements ActionListener
{
JFrame f3;
Container cp;
JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;
JButton jbt1,jbt2;//按钮:确定、取消、
JLabel label; //标签
JTextField tf1,tf2,tf3,tf4,tf5,tf6; //定义文本框
JLabel label1,label2,label3,label4;
String sno;
BookIn()
{
f3=new JFrame();
cp=f3.getContentPane(); // 初始化面板、按钮、标签、文本框
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
jp4=new JPanel();
jpanelWest=new JPanel();
jp=new JPanel();
//------------------------------------------------
jbt1=new JButton("确定");
jbt2=new JButton("取消");
//------------------------------------------------
label=new JLabel("图书入库",SwingConstants.CENTER);
label.setForeground(Color.blue);
//------------------------------------------------
tf1=new JTextField(20);
tf2=new JTextField(20);
tf3=new JTextField(20);
tf4=new JTextField(20);
tf5=new JTextField(20);
tf6=new JTextField(20);
//------------------------------------------------
//布局,添加控件
jp1.add(jbt1);
jp1.add(jbt2);
sno=tf4.getText();
jp1.add(new JLabel("您好"+sno+"欢迎登陆学生信息系统"));
JPanel jpanel=new JPanel();
jpanel.add(label);
JPanel pp4=new JPanel();
JPanel jpane4=new JPanel();
cp.add(jpanel,"North");
JPanel pp2=new JPanel(new GridLayout(6,1));
JPanel pp3=new JPanel();
pp4.setLayout(new GridLayout(6,1));
pp4.add(new JLabel("图书名",SwingConstants.CENTER));
pp2.add(tf1);
pp4.add(new JLabel("图书号",SwingConstants.CENTER));
pp2.add(tf2);
pp4.add(new JLabel("单 价",SwingConstants.CENTER));
pp2.add(tf3);
pp4.add(new JLabel("作 者",SwingConstants.CENTER));
pp2.add(tf4);
pp4.add(new JLabel("出版社",SwingConstants.CENTER));
pp2.add(tf5);
pp4.add(new JLabel("入库时间",SwingConstants.CENTER));
pp2.add(tf6);
pp3.add(jbt1);
pp3.add(jbt2);
cp.add(pp4,"West");
cp.add(pp2,"Center");
cp.add(pp3,"South");
cp.add(jpane4,"East");
//------------------------------------------------
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
f3.setSize(350,330);
int xcenter=(x-350)/2;
int ycenter=(y-330)/2;
f3.setLocation(xcenter,ycenter);/*显示在窗口中央*/
f3.setVisible(true);
//-------------------------------------------------
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
/*f3.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);*/
}
//------------------------------------------------
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("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
Statement sql;
String s="insert into book values('"+tf1.getText()+"','"+tf2.getText()+"','"+
tf3.getText()+"','"+tf4.getText()+"','"+tf5.getText()+"','"+tf6.getText()+"');";
//查询输入的图书号是否在数据库中存在
String query="select * from book where 图书号='"+tf2.getText()+"'";
sql=con.createStatement();
ResultSet rs=sql.executeQuery(query);//返回查询结果集
boolean moreRecords=rs.next();//判断结果集是否有数据
if(moreRecords)
{
JOptionPane.showMessageDialog(f3,"图书号已经被使用,请重新输入");
con.close();
tf2.setText("");
return;
}
int insert=sql.executeUpdate(s);
if(insert==1)
{
JOptionPane.showMessageDialog(null,"图书信息录入成功!");
tf1.setText("");
tf2.setText("");
tf3.setText("");
tf4.setText("");
tf5.setText("");
tf6.setText("");
}
}catch(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("确定"))
{
insertRecord();
}
else if(cmd.equals("取消"))
f3.hide();
}
public static void main(String []arg){
BookIn a=new BookIn();
}
}
6主界面:程序名Book.java
/*本类为用户界面*/
import java.net.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;import java.util.*;
class Book extends JFrame implements ActionListener
{
JButton QueryScore=new JButton("图书查询");
JButton QueryXuefen=new JButton("图书入库");
JButton jiangfa=new JButton("图书删除");
JButton xuanke=new JButton("图书概览");
JButton gaiMima=new JButton("修改密码");
JMenuBar mb = new JMenuBar();//菜单栏
JPanel jp=new JPanel();//用来填放子模块
Container cp=getContentPane();
String username;
Book(){}
Book(String username)
{
this.username=username;
mb.add(QueryScore);
mb.add(QueryXuefen);
mb.add(jiangfa);
mb.add(xuanke);
mb.add(gaiMima);
cp.add(mb,"North");
// 设置边框
jp.setBorder(BorderFactory.createTitledBorder(BorderFactory
.createLineBorder(Color.blue, 2),null,
TitledBorder.CENTER, TitledBorder.TOP));
jp.setLayout(new BorderLayout());
JLabel label1 = new JLabel(new ImageIcon("4.jpg"));
jp.add(label1);
/* JLabel JL=new JLabel("欢迎登陆",SwingConstants.CENTER);
jp.add(JL,"North");*/
JLabel label2 = new JLabel(new ImageIcon("2.jpg"));
//jp.add(label2,"South");
JScrollPane scrollpane=new JScrollPane(jp);
cp.add(scrollpane);
setTitle("欢迎登陆");
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
//setSize(x,y); /*让系统窗口平铺整个显示器窗口*/
setSize(600,600);
int xcenter=(x-600)/2;
int ycenter=(y-600)/2;
setLocation(xcenter,ycenter);/*显示在窗口中央*/
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//注册临听器
QueryScore.addActionListener(this);
QueryXuefen.addActionListener(this);
jiangfa.addActionListener(this);
xuanke.addActionListener(this);
gaiMima.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if (cmd.equals("图书查询"))
{
new QueryBook();
}
if (cmd.equals("图书入库"))
{
new BookIn();
}
if (cmd.equals("图书删除"))
{
new RemoveBook();
}
if (cmd.equals("图书概览"))
{
new BookBrower().showRecord();
}
if (cmd.equals("修改密码"))
{
new UpdateMima(username);
}
}
public static void main(String[]args)
{
new Book("");
}
}
7.密码修改:程序名UpdateMima.java
import java.net.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
class UpdateMima extends JFrame implements ActionListener
{
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=new JFrame();
cp=f.getContentPane(); // 初始化
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
jp4=new JPanel();
jpanelWest=new JPanel();
jp=new JPanel();
//------------------------------------------------
jbt1=new JButton("确定");
jbt2=new JButton("取消");
//------------------------------------------------
label=new JLabel("修改密码",SwingConstants.CENTER);
label.setForeground(Color.blue);
label.setFont(new Font("BOLD",Font.BOLD,15));
name=new JTextField(20);
//name.setEditable(false);
//------------------------------------------------
tf1=new JPasswordField(20);
tf2=new JPasswordField(20);
tf3=new JPasswordField(20);
//------------------------------------------------
//布局,添加控件
jp1.add(jbt1);
jp1.add(jbt2);
jp1.add(new JLabel("您好"+"xx"+"欢迎登陆学生信息系统"));
JPanel jpanel=new JPanel();
jpanel.add(label);
JPanel pp4=new JPanel();
JPanel jpane4=new JPanel();
cp.add(jpanel,"North");
JPanel pp2=new JPanel(new GridLayout(6,1));
JPanel pp3=new JPanel();
pp4.setLayout(new GridLayout(6,1));
pp4.add(new JLabel("用户名: ",SwingConstants.RIGHT));
pp2.add(name);
pp4.add(new JLabel("原密码: ",SwingConstants.RIGHT));
pp2.add(tf1);
pp4.add(new JLabel(" 新密码: ",SwingConstants.RIGHT));
pp2.add(tf2);
pp4.add(new JLabel("确认密码: ",SwingConstants.RIGHT));
pp2.add(tf3);
pp2.add(new JLabel());
JPanel jpbutton=new JPanel();
jpbutton.add(jbt1);
jpbutton.add(jbt2);
pp2.add(jpbutton);
//pp3.add(jbt1);
//pp3.add(jbt2);
cp.add(pp4,"West");
cp.add(pp2,"Center");
//cp.add(pp3,"South");
cp.add(jpane4,"East");
//------------------------------------------------
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height;
f.setSize(350,330); /*取得显示器窗口的高度*/
int xcenter=(x-350)/2;
int ycenter=(y-330)/2;
f.setLocation(xcenter,ycenter);/*显示在窗口中央*/
//f.setTitle("修改密码");
f.setVisible(true);
//-------------------------------------------------
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
/*f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);*/
}
public void updateM()
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
Statement sql=con.createStatement();
String uname=name.getText().trim();
String queryMima="select * from user where 用户名='"+uname+"'";
ResultSet rs=sql.executeQuery(queryMima);
if(rs.next())
{
String newMima=tf2.getText().trim();
String s="update user set 密码='"+newMima+"' where 用户名 ='"+uname +"'";
sql=con.createStatement();
int updateMima=sql.executeUpdate(s);
if(updateMima==1)
{
JOptionPane.showMessageDialog(f,"密码修改成功!");
}
con.close();
f.repaint();
}else{
JOptionPane.showMessageDialog(null,"该用户不存在","警告!",
JOptionPane.YES_NO_OPTION);
}
name.setText("");
tf1.setText("");
tf2.setText("");
tf3.setText("");
} catch(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
//------------------------------------------------
public void actionPerformed(ActionEvent e)
{
String cmd=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;
}
if(tf2.getText().trim().equals(tf3.getText().trim()))
updateM();
}
else if(cmd.equals("取消"))
f.hide();
}
public static void main(String[]args)
{
new UpdateMima("");
}
}