《课程设计:图书信息管理系统2.doc》由会员分享,可在线阅读,更多相关《课程设计:图书信息管理系统2.doc(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流课程设计:图书信息管理系统2.精品文档.湖南科技学院课程设计报告课程名称:面向对象程序设计课程设计课程设计题目:图书信息管理系统系:数学与计算科学系专 业:信息与计算科学年级、班:XXX姓 名:XXX学 号:XXX指导教师:XXX职 称:讲师2011年6月自我评价自我评分:90。首先,我在老师给的程序上完善了图书管理系统的一些基本功能,如增加、修改、删除、查询,另外,我还增加了bookmain()、Adminbooksever()、login()、jdbcfile()等函数功能,实现了可以按多种方式查找,如按图书编号,按图书名称,实现了完全的
2、在界面操作的系统。然后,我通过查阅书籍,上网查询,最后,我将数据存储在数据库(Oracle Database 10g)中,通过CS模式的服务器和接收端的运行平台,以及Java驱动程序,连接了数据库,使其数据库当中的数据随着界面的操作而随时更新。用java.sql.PreparedStatement这个java.sql.Statement接口的一个变种,可以使用参数化SQL语句,用java.sql.ResultSet这个接口抽象了运行SQL select语句的结果,提供了访问结果的方法,这个接口可以用来来访问各记录中不同的字段。 为了保证安全性,我使用了自定义函数Login()的登录功能,使得登
3、录用户要有用户名和密码;Bookmain()函数是实现首页面板,除了菜单选项,还有下拉菜单的功能实现;Adminbooksever()函数是接受服务器端的传输功能,实现提示面板,因为本系统采用的是本地CS模式,有服务器和接收端;jdbcfile()函数是实现与数据库的连接函数。而在每个面板上也就免不了的加了按钮的触发事件功能。另外的基本功能是用单独的每个函数实现的。具体见代码。下面是我的工作步骤:一:查阅相关资料。针对系统的开发目的、需求分析、功能分析、系统分析、系统结构、系统设计等相关知识的查阅和学习。二:数据库设计-概念设计(E-R图的设计)、逻辑设计(表及视图的设计)三:系统功能设计-功
4、能模块详细设计四:总结【摘要】书籍是人类不可缺少的精神食粮,图书管理系统是一些单位不可缺少的部分,尤其是对一些学校来说尤为的重要。所以图书管理系统应该能够为用户提供重做的信息和快捷的查询手段。但一直以来人们使用传统的人工的方式管理图书、期刊、试卷合订本等,这种管理方式存在着诸多的缺点,如:效率低,保密性差,另外时间长了,将产生大量的文件和数据,这对于查找、更新和维护都带来不少的困难。随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆信息管理费用的增加,从而使图书馆的负担过重,
5、影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。本论文主要是针对图书信息管理系统的研究,介绍的是一个典型的数据库应用系统,主要涉及数据的读写和数据的传递,利用数据库Oracle Database 10g软件和Eclipse3.62工具,采用java语言进行开发,介绍了系统的开发目的、系统分析、系统结构、系统设计、等。系统的建立将支持图书管理人员对各类信息进行快捷、准确、方便的查询;支持管理人员对图书的录入、修改、删除与查询。关键词 Java Oracle Access 面向对象 图书馆里目录摘要.I第1章 绪论.1第2章 系
6、统功能介绍.1 2.1系统设计.1 2.2系统流程及模块功能.2 2.3模块功能介绍.2第3章 数据库设计.3 3.1数据库需求分析.3 3.2数据库概念结构设计.3 3.3数据库表逻辑结构设计.3第4章 系统功能实现.4 4.1数据库模块设计.4 4.2管理员登录模块设计.6 4.3主界面功能实现.9 4.4图书添加功能实现.12 4.5图书查询功能实现.17 4.6图书删除功能实现.21 4.7图书信息修改功能实现.26 4.8图书管理模块的服务器端功能实现.32第5章 总结 .39第6章 参考文献.39第1章 绪 论随着社会经济的迅速发展、科学技术的全面进步和计算机事业的飞速发展,以计算
7、机与通信技术为基础的信息系统正处于蓬勃发展的时期。随着经济文化水平的显著提高,人们对生活质量及工作环境要求也越来越高。书籍作为人类的精神食粮,在现代社会中越来越受到重视,大量的书籍出现在市场上,人们有了各种不同的选择。与此同时,为了管理大量的图书,图书仓库也大量的出现,仓库的管理问题也就提上了日程。随着图书的大量增加,其管理难度也越来越大,如何优化仓库的日常管理也就成了一个大众化的课题。在计算机飞速发展的今天,将计算机这一信息处理器应用于仓库的日常管理已是势必索然,而且这也将为仓库的管理带来前所未有的变化,同时也会为企业的飞速发展提供无限潜力。采用计算机管理信息系统已成为仓库管理科学化和现代化
8、的重要标志,它给企业管理带来明显的经济效益和社会效益。主要体现在:极大的提高了仓库管理人员的工作效率,大大减少了以往入出存流程繁琐、杂乱、周期长的弊端。基于仓库管理的自动化,可以减少入库管理、出库管理及库存管理的漏洞,可以节约不少管理开支,增加企业收入。仓库的管理操作自动化和信息的电子化,全面提高了仓库的管理水平。随着我国改革开放的不断深入,经济飞速的发展,企业想要生存和发展 ,要想在激烈的市场竞争中立于不败之地,没有现代化的管理好似万万不行的,图书管理的全面自动化、信息化则是其中极其重要的部分。为了加快仓库管理的自动化的步伐,提高仓库的管理业务处理效率,建立仓库管理系统已变得十分重要。新书入
9、库、出库还是现在企业图书仓库管理的常规基本模式。如何设计好仓库的管理系统,尽可能的减少仓库管理的复杂性和低效率性就成为当前最重要的问题。通过对图书仓库管理的日常工作的详细调查,搜集了大量的资料,从系统结构的组织,功能的实现,技术的要求以及可行性等诸多方面进行考虑,认为本课题是一个适合 现今图书仓库管理需求的计算机信息管理系统,具有一定的实际开发价值和使用价值。第2章 系统功能介绍2.1系统设计本人设计的图书信息管理系统采用C/S模式,通过内部网络处理和信息交换,开发结构、解决数据库共享问题,客户端运行Java客户端程序,服务器端运行Java服务器端程序。主要用于对图书馆日常工作的管理,主要任务
10、是用计算机图书各种信息进行日常的管理,如增加、修改、删除、查询图书的管理等。本系统实现了图书馆的信息自动化管理,完成了图书管理系统的基本功能,该系统主要包括管理员子系统和书籍管理子系统退出子系统两个部分。其书籍管理子系统的主要功能是用于书籍信息的管理,如新书的入库、图书查询、删除图书、图书修改。2.2系统流程及模块功能系统图书信息管理流程如下图1所示 N结束更新数据库成功登录开始 Y图1系统模块功能结构分析图如图2所示图书管理信息系统登录 添加图书修改图书删除图书查询图书退出系统图22.3模块功能介绍 本系统是图书管理系统,本系统启动后需要登录,然后进入主界面在这个界面,我们可以选择所需要的功
11、能模块来实现所要的执行功能。A) 添加图书功能:图书信息录入到数据库当中(主要包括图书的编号、书名、作者、出版社、出版日期、图书简介、图书类别等);B)修改图书功能:把数据库当中图书的录入信息错误的图书先查找出来,再对其进行修改和保存;C)删除图书功能:主要的是对图书馆中没有此书和不想保留图书的资料进行删除,不存储该书信息;D)查询图书功能:方便管理工作人员对图书信息的了解,主要按照图书的编号和书名进行浏览图书信息;第3章 数据库设计3.1数据库需求分析 数据库结构要能充分满足各种信息的输入和输出,收集基本数据,数据结构处理的流程,组成一份详尽的数据字典,为具体设计做准备。针对一般图书管理系统
12、的需求,通过对数据管理工作过程的内容和数据流程的分析,得到其系统的逻辑模型,设计如下数据项和数据结构:l 图书(图书编号,图书名称,作者,出版社,出版日期,图书简介,图书类型)l 用户(用户名,密码)3.2数据库概念结构设计 本系统用到的数据库表的ER图如图33.3数据库表逻辑结构设计 管理员表Admin用来保存管理员用户信息,结构如表1表1 管理员表 图书表book用来保存图书信息,结构如表2表2 图书表book第4章 系统功能实现4.1连接数据库模块设计系统对图书所需要的信息都存储于数据库当中,要对这些数据信息进行操作,就必须连接数据库,为了省去每次操作都要编写连接数据库程序的步骤,我们把
13、连接数据库操作封装到一个类jdbcfile.java中,在不同的模块中调用这个类就可以对数据库进行连接,执行相应的数据库操作,这样就使得连接数据库安全高效,程序代码简洁清晰,也符合java面向对象的思想。连接数据库类jdbcfile.java的代码如下:package 管理员登录;import java.sql.*;public class jdbcfile / 声明变量Connection conn;Statement stmt;int inorupdatevalue = -1;/ 声明构造方法,并抛出异常public jdbcfile() throws Exception try Stri
14、ng drivername = oracle.jdbc.driver.OracleDriver;String dbURL = jdbc:oracle:thin:0.0.0.0:1521:xe;String user = system;String password = 123;/ 加载驱动程序Class.forName(drivername);/ 创建数据库连接Connection对象conn = DriverManager.getConnection(dbURL, user, password);/ 创建Statement对象stmt = conn.createStatement(); ca
15、tch (ClassNotFoundException e) / 捕获异常throw new Exception(数据库驱动未找到 + e.getMessage(); catch (SQLException e) / 捕获异常throw new Exception(数据库未连接 + e.getMessage();/ 定义查询数据的方法public synchronized ResultSet executeQuery(String sql) throws Exception ResultSet rs = stmt.executeQuery(sql);return rs;/ 定义插入数据的方法p
16、ublic synchronized int insert(String sql) throws Exception inorupdatevalue = stmt.executeUpdate(sql);return inorupdatevalue;/ 定义修改数据的方法public synchronized int update(String sql) throws Exception inorupdatevalue = stmt.executeUpdate(sql);return inorupdatevalue;/ 定义删除数据的方法public synchronized int del(S
17、tring sql) throws Exception inorupdatevalue = stmt.executeUpdate(sql);return inorupdatevalue;/ 定义关闭数据库连接的方法public void close() throws Exception conn.close();在jdbcfile的代码中,定义了查询数据、插入数据、修改数据、删除数据和关闭数据库连接的方法。其连接的图如图4所示图44.2管理员登录模块设计为了保证系统的安全性,只有管理员才可以对系统进行操作,因此,需要对用户登录的信息进行验证,管理员的用户和密码存放在数据库当中,通过文本框获得用
18、户输入的用户名和密码,然后与数据库的用户名和密码进行比较,如果匹配,则进入系统,否则提示用户名和密码不正确。管理员登录界面主要用于输入用户名和密码,以便与数据库的用户名和密码进行比较,界面主要包括两个标签、一个文本框、一个密码框和两个按钮,如图5所示。图5 登录界面图形用户登录界面的代码如下:package 管理员登录;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql
19、.ResultSet;import java.sql.SQLException;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 javax.swing.SwingConstants;public class Login extends JFrame /声明标签、按钮、文本框和密码框pr
20、ivate JLabel JLb1;private JLabel JLb2;private JButton Ok_btn;private JButton Cancel_btn;private JTextField jtflduser;private JPasswordField jtpwdfld;/声明窗口private JFrame frame;/构造方法public Login ()frame=new JFrame(登录);Container content=frame.getContentPane();/采用GridLayout布局管理content.setLayout(new Grid
21、Layout(3,2,20,20);JLb1=new JLabel(用户名);JLb2=new JLabel(密 码);/将标签置于居中位置JLb1.setHorizontalAlignment(SwingConstants.CENTER);JLb2.setHorizontalAlignment(SwingConstants.CENTER);jtflduser=new JTextField();jtpwdfld=new JPasswordField();Ok_btn=new JButton(确定);Cancel_btn=new JButton(取消);/为按钮添加事件监听者Ok_btn.add
22、ActionListener(new ActionHandler();Cancel_btn.addActionListener(new ActionHandler();/添加标签、文本框、密码框和按钮到窗口content.add(JLb1);content.add(jtflduser);content.add(JLb2);content.add(jtpwdfld);content.add(Ok_btn);content.add(Cancel_btn);frame.pack(); /设定登录窗口启动时出现在屏幕的中央位置frame.setLocationRelativeTo(null);fram
23、e.setSize(300,200);frame.setVisible(true);/实现ActionListener监听class ActionHandler implements ActionListenerpublic void actionPerformed(ActionEvent e)String str1,str2,sqlStr;Object obj=e.getSource();/获得文本框和密码框的数据str1=jtflduser.getText().trim();str2=new String(jtpwdfld.getPassword().trim();try/单击确定按钮if
24、(obj.equals(Ok_btn)if(str1.equals()JOptionPane.showMessageDialog(frame,用户名不能为空!);return;/创建数据库连接jdbcfile conn=new jdbcfile();sqlStr=select*from Admin where num=+str1+and password=+str2+;ResultSet result=conn.executeQuery(sqlStr);if(result.next()/弹出对话框提示登录成功JOptionPane.showConfirmDialog(frame,登录成功!);
25、/打开图书馆主页bookmain bookmain1=new bookmain();bookmain1.go();/关闭登录窗口 frame.dispose();/关闭数据库连接conn.close();elseJOptionPane.showMessageDialog(frame,用户名或密码错误!);else if(obj.equals(Cancel_btn)/单击取消按钮System.exit(0);catch(ClassNotFoundException ce)System.out.println(SQLException:+ce.getMessage();catch(SQLExcep
26、tion ex)System.out.println(ex);catch (Exception s)s.printStackTrace();public static void main(String args) Login login=new Login(); Login类继承了Frame类,因此可以显示,在Login类中,首先声明标签、按钮、文本框、密码框、和一个JFrame窗口,然后通过构造方法创建标签、按钮、文本框、密码框,并添加到窗口容器中,最后设置窗口的大小和可见性。当单击按钮的时候产生事件,按钮把事件对象传递给监听者,事件监听者要监听到该事件,就要在程序当中加入一个能够“听到”该
27、事件的接口,实现这个接口并处理监听到的事件。那么就在上面的Login代码中实现一个ActionListener类的代码。4.3主界面功能实现在系统的主界面中,包括两个部分:图书管理和退出。而在各自的下拉菜单中有各自的实现功能。运行的主界面如图6所示。图6 系统主界面 在本界面的实现当中,定义了一个类bookmain,继承了JFrame类,在bookmain类当中,定义了一个菜单栏、2个菜单和5个菜单项,在类中没有定义构造方法,而是定义了一个go()的方法,通过此方法设置窗口的大小、布局管理器和标题,将菜单加入到各自的菜单中,把菜单加入到菜单栏中,并将菜单栏加入到窗口中。其技术实现代码具体如下:
28、package 管理员登录;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class bookmain extends JFrame / 声明面板容器和标签private JPanel jp1 = new JPanel();private JLabel label1;BorderLayout borderLayout1 = new BorderLayout();/ 创建菜单栏JMenuBar jMenuBar1 = new JMenuBar();JMenu jMenu1 = new JMenu();J
29、Menu jMenu2 = new JMenu();JMenuItem jMenuItem1 = new JMenuItem();JMenuItem jMenuItem2 = new JMenuItem();JMenuItem jMenuItem3 = new JMenuItem();JMenuItem jMenuItem4 = new JMenuItem();JMenuItem jMenuItem5 = new JMenuItem();public void go() / 设置窗口的容器的布局管理器this.getContentPane().setLayout(borderLayout1);
30、/ 设置窗口大小和标题this.setSize(new Dimension(300, 200);this.setTitle(图书信息管理系统);label1 = new JLabel(设计者数学系信计0801班 丁军 );/ 添加菜单栏this.setJMenuBar(jMenuBar1);/ 设置菜单和菜单项的名称jMenu1.setText(图书管理);jMenuItem1.setText(添加图书);jMenuItem2.setText(修改图书);jMenuItem3.setText(删除图书);jMenuItem4.setText(查询图书);jMenuItem5.setText(退
31、出系统);jMenu2.setText(退出);/ 向菜单栏添加菜单jMenuBar1.add(jMenu1);jMenuBar1.add(jMenu2);/ 向菜单中添加菜单项jMenu1.add(jMenuItem1);jMenu1.add(jMenuItem2);jMenu1.add(jMenuItem3);jMenu1.add(jMenuItem4);jMenu2.add(jMenuItem5);/ 监听者对象注册给jMenuItem1jMenuItem1.addActionListener(new ActionListener() public void actionPerforme
32、d(ActionEvent e) / 将添加图书管理面板添加到jp1中,并显示出来addbook addbook1 = new addbook();jp1.add(addbook1, 添加图书信息);CardLayout c1 = (CardLayout) jp1.getLayout();c1.show(jp1, 添加图书信息);/ 监听者对象注册给jMenuItem2jMenuItem2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) / 将修改图书管理面板添加到jp1中,并显
33、示出来updatebook updatebook1 = new updatebook();jp1.add(updatebook1, 修改图书信息);CardLayout c1 = (CardLayout) jp1.getLayout();c1.show(jp1, 修改图书信息);/ 监听者对象注册给jMenuItem3jMenuItem3.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) / 将删除图书管理面板添加到jp1中,并显示出来delbook delbook1 = new
34、delbook();jp1.add(delbook1, 删除图书信息);CardLayout c1 = (CardLayout) jp1.getLayout();c1.show(jp1, 删除图书信息);/ 监听者对象注册给jMenuItem4iwo kjMenuItem4.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) / 将查询图书管理面板添加到jp1中,并显示出来searchbook searchbook1 = new searchbook();jp1.add(search
35、book1, 查询图书信息);CardLayout c1 = (CardLayout) jp1.getLayout();c1.show(jp1, 查询图书信息);/ 监听者对象注册给jMenuItem5jMenuItem5.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(ActionEvent e) System.exit(0);/ 设置Jpane1的布局管理CardLayout cardlayout = new CardLayout();jp1.setLayout(cardla
36、yout);jp1.add(label1, 图书管理系统);this.add(jp1, BorderLayout.CENTER);setSize(300, 450);this.setVisible(true);public static void main(String args) / TODO Auto-generated method stubbookmain ex = new bookmain();ex.go();ex.setVisible(true);4.4图书添加功能的实现 图书入库是图书管理系统中不可缺少的部分,用于图书入库,通过界面中文本框接受书籍信息,然后将此信息写入到Acce
37、ss数据库中。运行界面如图7所示,运行成功提示如图8。图8 其技术实现的代码如下:package 管理员登录;import java.io.*;import .*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class addbook extends JPanel /声明标签private JTextField 图7id,bookname,author,publish,time,synopsis,category;/声明文本框private JLabel jid,jbookname,jauthor,
38、jpublish,jtime,jsynopsis,jcategory;/声明按钮private JButton button1,button2;/声明数据流对象PrintWriter output;BufferedReader input;/声明字符串变量String message=;/构造方法public addbook()/设置布局为nullthis.setLayout(null);jid=new JLabel(编号);id=new JTextField();jbookname=new JLabel(书名);bookname=new JTextField();jauthor=new JL
39、abel(作者);author=new JTextField();jpublish=new JLabel(出版社);publish=new JTextField();jtime=new JLabel(出版日期);time=new JTextField();jsynopsis=new JLabel(图书简介);synopsis=new JTextField();jcategory=new JLabel(类别);category=new JTextField();button1=new JButton(添加);button2=new JButton(取消);/设置标签大小和位置jid.setBou
40、nds(30,20,60,30);jbookname.setBounds(30,70,60,26);jauthor.setBounds(30,120,60,26);jpublish.setBounds(30,170,60,26);jtime.setBounds(30,220,60,26);jsynopsis.setBounds(30,270,60,26);jcategory.setBounds(30,320,60,26);/设置文本框的位置和大小id.setBounds(110,20,120,26);bookname.setBounds(110,70,120,26);author.setBou
41、nds(110,120,120,26);publish.setBounds(110,170,120,26);time.setBounds(110,220,120,26);synopsis.setBounds(110,270,120,26);category.setBounds(110,320,120,26);/设置按钮的位置和大小button1.setBounds(50,360,60,26);button2.setBounds(130,360,60,26);/将标签、文本框和按钮添加到JPanel中this.add(jid);this.add(id);this.add(jbookname);t