JAVA课程设计图书管理系统课程设计.doc
主要内容、基本要求、主要参考资料等:1. 使用图形用户界面2. 用数据库建立图书信息表和借阅者。(不限使用哪种数据库)3. 能连接数据库并实现查询、增、删、改等功能4. 王克宏、郝建文。Java技术教程。北京:清华大学出版社。20025. 周竞涛、赵寒。Eclipse完全手册。北京:电子工业出版社,2006蒙祖强、龚涛。数据库Java开发。北京:中国水利水电出版社。2006完 成 期 限: 2010/6/7-2010/6/14 指导教师签名: 课程负责人签名: 2010年 6月 12日目录一、引言。4二、需求分析。5三、总体设计。6四、详细设计。8五、实现和源程序。45六、课程设计心得与体会。49七、参考文献。49一、引言1.1项目的名称图书管理系统1.2项目背景和目标 背景:随着图书馆规模的不断扩大,图书数量的不断增多,有关图书的各种信息量也是成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书管理上的混乱,人力与物力过多浪费,图书管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和管理控制,因此,必须制定一套合理有效规范图书管理系统,对图书资料进行统一的管理。 另一方面,IT产业和Internet获得了飞速的发展,计算机应用已经渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。 提高计算机管理的工作效率,做到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。目标:实现图书管理的图书入库、图书查询、图书删除。图书概览。修改密码等简单功能。1.3项目的可行性描述 课堂上老师的例子多是关于图书馆系统,而且上学期的数据库做的也是相关内容,因而对该系统相对比较熟悉。二、需求分析2.1 系统概述2.2 系统运行环境运行本软件所要求的硬设备的最小配置:内存:512M硬盘:80G说明为运行本软件所需要的支持软件,如:1.操作系统的名称windows、版本号XP;2 程序开发的IDE: Elipse3.数据库管理系统:Access4.其他支持软件。2.3功能需求描述 本课题根据学生图书管理综合分析,便出于方便功能管理考虑,将学生图书管理系统的功能总结起来,其需要实现以下几个方面功能。系统共有4个功能模块:图书入库、图书查询、图书删除、图书概览、修改密码。支持一系列关于图书管理方面的简单操作,诸如查询、删除、添加、修改密码等。三、总体设计3.1开发和设计的总体思想实现图书管理的基本功能3.2系统模块结构图 图书删除图书概览修改密码图书查询图书入库系统开始判断成功判断输入密码失败退出退出33模块设计3.3模块功能图书入库、图书查询、图书删除、图书概览、修改密码34系统流程描述首先是输入判断,相当于在登陆模块,要求用户输入用户名和密码;然后判断,如果判断失败退出系统,否则进入图书管理系统的主界面。进入主界面后,用户要选择所需执行的功能,即通过鼠标点击相应项,来完成所需操作。3.5 数据库结构设计图书名图书号单价作者出版社入库时间表book表user用户名密码数据库表在图书管理系统中,共设计2张表。本系统使用Access来创建数据表。1.表book字段名称数据类型图书名文本图书号文本(主键)单价文本作者文本出版社文本入库时间文本2.表user字段名称数据类型用户名文本(主键)密码文本四、 详细设计41主界面模块42模块设计同上43代码部分4.4 各主要模块介绍源程序(4.3/4.4均如下)程序代码1登陆界面:程序名Login.javaimport 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("<html><font color=#CC00FF size='7'><i>欢迎登陆</i></font>",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()/验证用户和密码是否存在 tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundException e)System.out.println("加载驱动程序失败!");tryString 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(); elseJOptionPane.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.javaimport 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 Object806;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("<html><font color=#CC00FF size='4'>图书概览</font>",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)ari0=""ari1=""ari2=""ari3=""ari4=""ari5=""i-;i=0; tryClass.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);ari0=bname;ari1=bno;ari2=price;ari3=writer;ari4=publish;ari5=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.javaimport 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("<html><font color=#CC00FF size='4'>请输入图书号:</font>",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() tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundException e)System.out.println("加载驱动程序失败!");tryString 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.javaimport 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 Object806;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("<html><font color=#CC00FF size='4'>请输入要删除的图书名:</font>",SwingConstants.CENTER);label.setForeground(Color.blue);L=new JLabel("该种图书共有"+count+"本");/- table=new JTable(ar,columnName);/ar存放表中的数据,columnname表示列名JScrollPane scrollpane = new JScrollPane(table);/-