《2022年2022年课程设计:图书信息管理系统 2.pdf》由会员分享,可在线阅读,更多相关《2022年2022年课程设计:图书信息管理系统 2.pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、湖南科技学院课程设计报告课程名称:面向对象程序设计课程设计课程设计题目:图书信息管理系统系:数学与计算科学系专业:信息与计算科学年级、班:XXX姓名:XXX学号:XXX指导教师:XXX 职称:XXX 2011年 6 月名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 17 页 - - - - - - - - - 图书信息管理系统课题说明 :自我评分 :88 编写一个 Java图书信息管理系统,设计一个图形界面,能够很轻松的对图书信息进行管理,系统与数据库(Oracle9i)
2、相连接,使得数据比较安全并且容易操作,对图书信息的修改, 添加,删除都变得很简单。 每一条图书信息包括图书编号,书名,作者,出版社,出版日期,图书简介和图书类别。并且本系统要实现图书管理系统的一些基本功能:图书所有信息的查看功能图书信息的录入功能图书信息的查找功能图书信息的修改功能图书信息的删除功能图书管理系统安全退出功能其中图书信息的查找功能又分为:1、按书名精确查找。 2、按书名模糊查找。而对于图书信息的查找和图书所有信息的查看,会以表格的方式在图形界面中显示出来。程序设计思路:该图书管理系统要求对一系列完整的图书信息进行处理,即包括录入,查看,修改,删除等。考虑到程序系统的实用性, 编写
3、了图形界面, 并且与数据库相连接,在保证数据安全的前提下,大大简化了对数据的操作。首先应该与数据库建立连接,先在电脑上创建好ODBC 数据源。然后使用 JDBC-ODBC 驱动来访问 ODBC 数据源的 Java程序。做好这些工作之后就要在数据库中建立名为book_info 的表:名称数据类型大小可否为空默认值BNO(编号)Varchar2 8 否null BNAME (书名)Varchar2 40 否null Auther(作者)Varchar2 20 否null B_adress (出版社)Varchar2 50 可以null B_date (出版日期)Varchar2 12 可以null
4、 B_info(简介)Varchar2 100 可以null B_kind(类别)Varchar2 30 可以null 程序包括 3 个类:程序入口 Book_DBA 类,数据显示的图形界面Table类,和包括了各种操作数据的方法类Book_Menu 类,Book_Menu 类包含的六个方法void creat(), ResultSet display(),ResultSet Find(),void delete(),voidchange(), voidEnd()分别实现对图书信息的录入、查看所有数据、查找、删除、修改、退出功能的实现。如果选择查看所有按钮,则触发事件里调用display()函
5、数,display()函数的返回类型是 ResultSet结果集,它携带了执行数据库查询book_info 表中所有信息的结果。然后再调用图形界面 Table ,将结果以二维表格的形势显示出来。选择查询按钮, 就要输入要查询图书名的相关信息,而查询提供了两种查询名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 17 页 - - - - - - - - - 方式,如果要模糊查询, 则只需输入书名的关键字, 如果选择精确查询则需要输入完整的书名。然后调用Find(String
6、find)在book_info 表中查找相应信息,也以二维表格的形势显示出来。选择插入按钮,则需要输入要插入的图书编号,在按钮触发的事件里调用creat()函数。然后根据提示输入图书的相应信息,把新输入的图书插入到book_info 表中。选择修改按钮, 在按钮触发事件里调用change()函数,则需要输入要修改的已有图书编号,然后输入修改的图书信息。把修改的信息覆盖原有book_info 表中需要修改的信息。选择删除按钮,则按钮触发事件里调用delete()函数, delete()函数里需要输入要删除的已有图书编号,delete()函数再在book_info 表中删除输入的编号对应的那条信息
7、。选择退出按钮,则按钮触发事件里调用End()函数, End()函数里有System.exit(0) 语句结束程序。因为管理系统的图形界面用到了图片,所以程序执行时也必须将图片放入文件夹中。源代码及注释:Book_DBA 类:package books; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.sql.Connection; import java.s
8、ql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.swing.Box; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPa
9、nel; public class Book_DBA extends JFrame implements ActionListener menu ss = new menu();/ 创建一个新的menu类static final String driver = sun.jdbc.odbc.JdbcOdbcDriver; static final String user = hr; static final String pass = hr; static final String url = jdbc:odbc:System;/数据库连接信息JButton btnSearch = new JB
10、utton( 查询 ); JButton btnSeeAll = new JButton( 查看所有所有信息); JButton btnInsert = new JButton( 插入 ); JButton btnUpdate = new JButton( 修改 ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 17 页 - - - - - - - - - JButton btnDelete = new JButton( 删除 ); JButton btnExit =
11、 new JButton( 退出 );/ 以上几个是主界面中文本域和按钮的创建ImageIcon icon=new ImageIcon(lw1.jpg);/创建图标JLabel pic=new JLabel(icon,JLabel.CENTER);/创建一个标签public Book_DBA() super(图书管理系统); btnSeeAll.addActionListener(this);/为按钮添加监听btnSearch.addActionListener(this);/ 为查找添加监听btnInsert.addActionListener(this);/ 为插入添加监听btnUpdat
12、e.addActionListener(this);/ 为修改添加监听btnDelete.addActionListener(this);/为删除添加监听btnExit.addActionListener(this);/为退出添加监听final Box boxButtonBox= Box.createHorizontalBox();/创建纵向显示其组建的Box boxButtonBox.add(Box.createHorizontalStrut(60);/设置按钮之间的宽度boxButtonBox.add(btnSeeAll);/ 将查看所有按钮放入组件中boxButtonBox.add(Bo
13、x.createHorizontalStrut(30);/设置按钮之间的宽度boxButtonBox.add(btnSearch);/ 将查找按钮放入组件中boxButtonBox.add(Box.createHorizontalStrut(30);/设置按钮之间的宽度boxButtonBox.add(btnInsert);/ 将插入按钮放入组件中boxButtonBox.add(Box.createHorizontalStrut(30);/设置按钮之间的宽度boxButtonBox.add(btnUpdate);/ 将修改按钮放入组件中boxButtonBox.add(Box.createH
14、orizontalStrut(30);/设置按钮之间的宽度boxButtonBox.add(btnDelete);/ 将删除按钮放入组件中boxButtonBox.add(Box.createHorizontalStrut(30);/设置按钮之间的宽度boxButtonBox.add(btnExit);/将退出按钮放入组件中final JPanel spnll = new JPanel();/ 创建面板spnll.setLayout(new BorderLayout();/为面板设置边界布局管理器spnll.add(pic,BorderLayout.CENTER);/将提示信息的文本框放入布局
15、中部setLayout(new BorderLayout();/设置布局管理器this.add(spnll, BorderLayout.CENTER);/将面板放入布局中间this.add(boxButtonBox, BorderLayout.SOUTH);/将存放按钮的面板放入右边 Override public void actionPerformed(final ActionEvent e) final Object obj = e.getSource();/ 返回 Event对象if (obj = btnSeeAll) try Table mm = new Table(1,no);/
16、创建 jojo对象,no表示调用显示所有图书信息的函数mm.setVisible(true);/ 设置为可见名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 17 页 - - - - - - - - - mm.setBounds(400, 200, 500, 300);/ 设置界面的显示位置和大小 catch (final SQLException e1) e1.printStackTrace(); if (obj = btnSearch) try Table mm = n
17、ew Table(2,yes);/ 创建 jojo对象,调用查询图书信息的函数mm.setVisible(true);/ 设置为可见mm.setBounds(400, 200, 500, 300);/ 设置界面的显示位置和大小 catch (SQLException e1) e1.printStackTrace(); if (obj = btnInsert) try ss.creat();/调用插入函数 catch (final IOException e1) e1.printStackTrace(); catch (final SQLException e1) e1.printStackTr
18、ace(); if (obj = btnUpdate) ss.change();/调用修改函数 if (obj = btnDelete) ss.delete();/调用删除函数 if (obj = btnExit) ss.End();/ 调用退出函数 public static void main(final String args) throws Exception final Book_DBA t2 = new Book_DBA();/创建 DBA 对象t2.setBounds(400, 200, 700, 400);/ 设置主界面大小和显示位置t2.setVisible(true);/
19、设置为可见名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 17 页 - - - - - - - - - t2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置关闭方式Connection conn = null; try Class.forName(driver);/ 加载驱动器System.out.println( 数据库连接成功!); catch (final ClassNotFoundException e) Sy
20、stem.err.print( 连接失败! ); try / 建立这个方法类的对象conn = DriverManager.getConnection(url, user, pass);/ 建立数据库连接final PreparedStatement pss = conn .prepareStatement(create table book_info(bno varchar(8) primary key, + bname varchar(40) not null,auther varchar(20) not null,book_address varchar(50) + ,b_date va
21、rchar(12),info varchar(100),bookkind varchar(30);/ 在数据库中创建表的语句/ pss.executeBatch();/ 第一次运行时用到来创建表,然后就要注释掉pss.close(); catch (final Exception e) System.out.println( 出现异常! ! + e.getMessage(); finally try if (conn != null) conn.close();/ 关闭数据库连接 catch (final SQLException e1) System.out.println( 关闭数据库异常
22、: + e1.getMessage(); class menu static final String user = hr;/数据库用户名static final String pass = hr;/ 数据库密码static final String url = jdbc:odbc:System;/creat()函数实现向数据库中插入数据void creat() throws IOException, SQLException Connection conn = DriverManager.getConnection(url, user, pass);/ 建立数据库连接名师资料总结 - - -
23、精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 17 页 - - - - - - - - - String num = ;/ 定义用于接收图书编号的num String name = ;/ 定义用于接收图书名称的name String auther = ;/ 定义用于接收图书作者的auther String book_address = ;/ 定义用于接收出版社的book_address String bdate = ;/ 定义用于接收出版日期的bdate String book_info =
24、;/定义用于接收图书简介的book_info String kind = ;/ 定义用于接收图书类别的kind System.out.print(n 请输入图书信息(以书名为no结束) n); name = JOptionPane.showInputDialog( 请输入图书名称:); PreparedStatement pss1 = conn .prepareStatement(insert into book_info values(?,?,?,?,?,?,?); /创建数据库插入语句while (pareTo(no) != 0) /如果书名为 0则结束输入num = JOptionPan
25、e.showInputDialog( 请输入图书编号:);/ 创建标准输入对话框auther = JOptionPane.showInputDialog( 请输入图书作者:);/ 创建标准输入对话框book_address = JOptionPane.showInputDialog( 请输入图书出版社:);/创建标准输入对话框bdate = JOptionPane.showInputDialog( 请输入出版日期:);/ 创建标准输入对话框book_info = JOptionPane.showInputDialog(请输入图书简介:);/ 创建标准输入对话框kind = JOptionPan
26、e.showInputDialog(请输入图书类别:);/ 创建标准输入对话框pss1.setString(1, num);/ 设置数据库语句的参数pss1.setString(2, name);/设置数据库语句的参数pss1.setString(3, auther);/ 设置数据库语句的参数pss1.setString(4, book_address);/设置数据库语句的参数pss1.setString(5, bdate);/设置数据库语句的参数pss1.setString(6, book_info);/ 设置数据库语句的参数pss1.setString(7, kind);/ 设置数据库语句
27、的参数pss1.executeUpdate(); name = JOptionPane.showInputDialog( 请输入下一个图书名称:); ; pss1.close(); conn.close(); ResultSet display() throws SQLException ResultSet rss; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 17 页 - - - - - - - - - Connection conn = DriverManager
28、.getConnection(url, user, pass); PreparedStatement pss2 = conn .prepareStatement(select * from book_info); rss = pss2.executeQuery(); /创建数据库查询语句return rss;/返回查询结果的rss /Find(String find) 函数用于执行查找功能,find参数是查找的初始信息ResultSet Find() String snum = ;/ 创建 snum接收函数传入的实参String ss = null; ResultSet rss = null;
29、/ 声明用于返回数据库查询的rss try Connection conn = DriverManager.getConnection(url, user, pass); PreparedStatement pss3 = conn .prepareStatement(select * from book_info where bname like ?);/设置数据库查询语句String possibleV alues = 按图书名精确查找, 按书名模糊查找 ; String selectedValue = (String) JOptionPane.showInputDialog(null,选择
30、查找方式:, Input, JOptionPane.INFORMATION_MESSAGE, null, possibleValues, possibleValues0);/ 显示输入对话框if (selectedVpareTo( 按图书名精确查找) = 0) snum =JOptionPane.showInputDialog( 请输入要搜索的图书名称:); ss = snum;/执行精确查找 else snum =JOptionPane.showInputDialog( 请输入要搜索的图书名称:); ss = % + snum + %;/ 执行模糊查找 pss3.setString(1, s
31、s);/设置数据库语句的参数rss = pss3.executeQuery();/ 执行数据库查询语句 catch (Exception e) System.out.println( 查无此条信息! 请核对! + e.getMessage();/ TODO: handle / exception return rss;/返回查询结果 /delete(String delete)用于删除编号为delete图书的信息void delete() try Connection conn = DriverManager.getConnection(url, user, pass); 名师资料总结 - -
32、 -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 17 页 - - - - - - - - - PreparedStatement pss4 = conn .prepareStatement(delete from book_info where bno=?); /设置数据库删除语句String delete=JOptionPane.showInputDialog( 请输入要删除图书编号: ); pss4.setString(1, delete);/设置数据库语句的参数pss4.execute
33、Update();/执行数据库删除语句System.out.println( 刪除成功! ! ); catch (Exception e) System.out.println( 刪除失敗,请核对编号! ! + e.getMessage(); /change(String change)函数用于修改图书编号为change的信息void change() String num=null; String name = ;/ 定义用于接收图书名称的name String auther = ;/ 定义用于接收图书作者的auther String book_address = ;/ 定义用于接收出版社的
34、book_address String bdate = ;/ 定义用于接收出版日期的bdate String book_info = ;/定义用于接收图书简介的book_info String kind = ;/ 定义用于接收图书类别的kind try Connection conn = DriverManager.getConnection(url, user, pass); PreparedStatement pss4 = conn .prepareStatement(update book_info set bname=?,auther=?,book_address=?,b_date=?
35、,info=?,bookkind=? where bno=?); /设置数据库修改语句num=JOptionPane.showInputDialog( 请输入要修改图书编号:); name = JOptionPane.showInputDialog( 请输入图书名称:); auther = JOptionPane.showInputDialog( 请输入图书作者:); book_address = JOptionPane.showInputDialog( 请输入出版社:); bdate = JOptionPane.showInputDialog( 请输入出版日期:); book_info =
36、JOptionPane.showInputDialog(请输入图书简介:); kind = JOptionPane.showInputDialog( 请输入图书类别:); pss4.setString(1, name);/设置数据库语句的参数pss4.setString(2, auther);/ 设置数据库语句的参数pss4.setString(3, book_address);/设置数据库语句的参数pss4.setString(4, bdate);/设置数据库语句的参数pss4.setString(5, book_info);/ 设置数据库语句的参数pss4.setString(6, kin
37、d);/ 设置数据库语句的参数pss4.setString(7, num);/ 设置数据库语句的参数pss4.executeUpdate();/执行数据库修改语句System.out.println( 修改成功! ! ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 17 页 - - - - - - - - - catch (Exception e) System.out.println( 修改失败,请核对编号! ! + e.getMessage(); void En
38、d() System.out.println( 安全退出! !谢谢使用 ); System.exit(0);/ 结束程序 Table类:package books; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.ResultSet; import java
39、.sql.SQLException; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; public class Table extends JFrame implements ActionListener final String colname= 图书编号 ,书
40、名 , 作者 ,出版社 ,出版日期 ,简介 ,图书类别; /创建扁头数组static ResultSet rs1;/创建用于接收数据库返回信息的结果集int count=100; final Object data=new Objectcountcolname.length;/创建用于接收图书信息的二维数组public Table(int flag,String bookID ) throws SQLException 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 1
41、7 页 - - - - - - - - - /构造函数,如果flag=1则执行显示所有信息的函数,否则执行查找函数menu ss = new menu(); if(flag=1) rs1=ss.display();/ 执行显示所有信息的函数else rs1=ss.Find();/ 执行查找函数 try int i=0,j=0; int s=0; while (rs1.next() dataij+=rs1.getString(1);/读取结果集中第1列信息付给 data dataij+=rs1.getString(2);/读取结果集中第2列信息付给 data dataij+=rs1.getStr
42、ing(3);/读取结果集中第3列信息付给 data dataij+=rs1.getString(4);/读取结果集中第4列信息付给 data dataij+=rs1.getString(5);/读取结果集中第5列信息付给 data dataij+=rs1.getString(6);/读取结果集中第6列信息付给 data dataij+=rs1.getString(7);/读取结果集中第7列信息付给 data i+; j=0; s+; / 将返回的数据库结果写入到data数组中Object data1=new Objectscolname.length; /data1用于接收数组 data中的
43、数据for(int x=0;xs;x+) for(int y=0;ycolname.length;y+) data1xy=dataxy; JLabel lblBookJLabel = new JLabel( 图书信息查询); lblBookJLabel.setFont(new Font(Dialog, Font.BOLD, 20); /设置 lblBookJLabel 标签的字体JButton btn1 = new JButton( 返回 );/ 创建返回按钮btn1.addActionListener(this);/ 为返回按钮添加监听Box boxb = Box.createHorizon
44、talBox();/创建纵向显示其组建的Box boxb.add(Box.createVerticalStrut(100);/ 设置按钮与窗体的距离boxb.add(btn1);/ 将按钮放入组件中JTable table = new JTable(data1, colname);/创建表格table.setPreferredScrollableViewportSize(new Dimension(550, 30); /设置表格大小JScrollPane ssJ = new JScrollPane(table);/将表格加到滚动条中Container ctn = this.getContent
45、Pane();/ 返回窗体 Container对象JPanel pnlsch = new JPanel(new BorderLayout();/ 创建面板并设置布局管理器pnlsch.add(lblBookJLabel, BorderLayout.NORTH);/将标签加入到上边pnlsch.add(ssJ, BorderLayout.CENTER);/ 将表格加入到中间名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 17 页 - - - - - - - - - pnl
46、sch.add(boxb, BorderLayout.SOUTH);/将按钮放入下边ctn.add(pnlsch,BorderLayout.CENTER);/ 将面板放入布局管理器 catch (Exception e) System.out.println(SQL 异常! ! ! +e.getMessage();/ TODO: handle exception e.printStackTrace(); Override public void actionPerformed(ActionEvent arg0) this.dispose();/ 关闭窗体 程序测试:1、系统运行的主界面(以下图
47、片全为截图):2、当选择“查看所有信息”后显示所有图书信息:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 17 页 - - - - - - - - - 3、选择“查询”后显示:4、选择一种查询方式后(这里选择模糊查询),显示:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 17 页 - - - - - - - - - 5、选择“插入”后,则需要
48、输入新的插入图书信息:6、选择“修改”后,需要输入要修改的已有图书编号:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 17 页 - - - - - - - - - 然后根据提示提示输入要修改后的图书信息。例:把编号为10012的图书改为:作者:刘欣,图书名称:系统分析与设计出版社:清华大学出版社出版日期:2009-12-20 图书简介:系统分析员学习宝典类别:计算机7、选择“删除”后,则需要输入要删除的已有图书的编号:名师资料总结 - - -精品资料欢迎下载 - -
49、- - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 17 页 - - - - - - - - - 删除编号为 10014后,图书的所有信息中已经没有了它的信息:8、选择“退出”后,系统结束运行:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 17 页 - - - - - - - - - 9、系统运行分析在以上的运行过程中, 每个功能都进行了一次测试所得到的结果与预期结果都刚好相符合。 而且界面简单,
50、 每次操作都有相应的提示,就算是第一次用, 也能很好的操作,系统还对执行过程中由于错误操作进行了异常处理,比较完善。在整个操作过程, 随着各步的提醒输入相应的操作,这使得真个过程都是非常清晰明了。设计总结:通过本次课程设计,我更加熟悉了程序设计中类的运用,学习到了很多有关于类的实现方法, 最重要的一点是学会了查JDK ,Java 中接口和类太多肯定记不清,但只要学会了查JDK文档,这些都不是问题,并且里面还有解释和示例,通过这次实践,使我很好的理解了类的封装性,基于对象的编程技巧与优越性。同时,通过查阅资料, 适用帮助软件进行编写代码,让我深深体会到了书本理论知识的重要性。在设计界面的过程中我