《基于Oracle数据库的图书管理系统开发(共27页).docx》由会员分享,可在线阅读,更多相关《基于Oracle数据库的图书管理系统开发(共27页).docx(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上目录一 项目开发背景当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好图书馆信息而设计的。图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他
2、们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般
3、借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。基于这此问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。二 项目目的及意义我们要实现科学技术现代化,图书情报工作的现代化是极其重要的,又由于科学和技术的不断发展和进步,现代技术是一个动态的概念.第二次世界大战以来,以计算机技术为代表的现代技术有了巨大
4、的发展,而且还在迅速的变化发展之中,70年代后期,出现图书情报工作的 “联机革命”,使计算机更广泛地,更有效的应用到各个角落,发达国家较重视这一领域的发展,我国尚存在较大的差距。所以我们说,图书情报工作计算机化是提高我国科学技术水平的一项带有重大战略意义的措施,它是图书情报工作现代化的重要标志。计算机技术是现代技术的一部分,图书自动化也只是图书馆现代化的一部分,它们之间是部分和整体的关系,但由于计算机技术是信息技术的心脏,现代社会的骄子,信息社会的科技主角,所以在图书馆现代技术中,计算机技术处于核心地位,它对于其他现代化设备起控制,连接和转换的作用,而图书馆自动化是图书馆现代化的核心和主导部分
5、。图书情报的计算机管理系统能提高图书馆本身管理水平,能代替工作人员进行图书情报资料的某些加工处理,把工作人员从繁重的手工劳动,重复劳动中解放出来。总之,建立图书馆的计算机自动化管理系统,不但可以大大提高图书馆图书流通率,而且推动了社会文化生活的进步。本论文以图书馆管理信息系统的需求分析及概念设计为切入点,运用理论与实际相结合的方法,构建一个包含读者信息,书籍信息和借阅信息的图书馆管理系统。图书馆管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易
6、使用等特点。因此本人结合开放式图书馆的要求,对MySQL数据库、Java程序设计进行了较深入的学习和应用,主要完成对图书管理系统的需求分析、功能模块划分、数据库模式分析,并由此设计了数据库结构和应用程序。希望本文所设计的图书馆管理系统能够满足借阅者和图书馆管理人员的需求。三 开发环境3.1硬件环境 PC机一台3.2软件环境My Eclipse开发环境;Power Designer;Visio;Oracle 11g四 项目可行性分析4.1 项目背景 名称:基于Oracle 11g的图书馆管理系统4.2 对现有系统的分析 现在市面上有许多的图书馆管理系统的软件,但是质量参差不齐,购买花费大,技术不
7、到位,人力花费多,导致系统所有者的支出变多4.3 对所建议技术可行性分析 基于Oracle数据库开发的图书馆管理系统,在原有系统的基础上,进行了改进,系统运行速度大大提升,并且节约成本,安全可靠,操作方便,不要要太多的人力。4.4 经济可行性分析 由于对该系统进行了改进,所以成本费用不高,最主要的是,由于操作简单易上手,不需要大量的人力来运行,大大节约了成本4.5 社会因素可行性分析 本系统的研发,完全符合相关规定,委托方和被委托方签订合同,完全合法,并且,自主研发改进,不会侵犯其他类似软件的专利权等。4.6 结论意见 通过以上分析,我认为该方案可行。 五 项目需求分析5.1 目的 项目需求分
8、析的目的是明确本系统的详细需求,供使用单位确定本系统的功能和性能,并作为软件设计人员的设计依据和使用单位的验收依据。5.2 用户特点本系统面向的最终用户是管理员(图书馆管理员和其他管理员),读者(老师和同学等)。 5.3 系统需求分析 5.3.1 主要功能 1,能够输入图书的综合情况和进行新书的入库,现有图书的信 息修改等。 2,能够实现对读者信息的增,删,查,改。 3,能够进行图书的借阅和管理功能。 5.3.2 系统性能要求 1,系统安全,可靠 2,功能齐全 3,操作方便,界面整洁,友好 4,易于维护和扩充 5.3.3 系统功能划分 图书馆管理系统分为4大功能模块,分别为“基础数据维护”、“
9、图书借阅管理”、“新书订购管理”和“系统维护”。本系统各个部分及其包括的具体功能模块如下图所示:图书借书管理图书还书管理图书查询图书类别管理图书信息管理更改密码用户管理验收订书新书订购读者信息管理系统维护新书订购管理图书借阅管理基础数据维护图书馆管理系统 5.3.4 数据流程图六 系统模块设计 6.1数据库设计 通常作为一个管理软件,它的数据部分都是由数据库来存储和管理的。在本设计中数据库承担了图书信息和读者信息。在如今的数据库产品中,有很多成熟的产品,如Oracle,DB2,SQL Server,MySQL等,图书馆管理系统应用于高校的图书馆中,用户数据以及图书的信息数据并不是很大。考虑到成
10、本,选用了Oracle数据库。下面将详细的为您介绍本设计中数据库的选择以及数据库的概念设计等。 6.1.1数据库分析Oracle具有与其他数据库相比具有以下优点:1、处理速度快,非常快2、安全级别高。支持快闪以及完美的恢复,即使硬件坏了 也可以恢复到故障发前的1s3、几台数据库做负载数据库,可以做到30s以内故障转移,4、网格控制,以及 数据仓库方面 也非常强大 6.1.2数据库概念设计 根据以上对系统所作的需求分析、系统设计,规划出本系统中使用的数据库实体分别为图书信息实体、图书分类实体、图书订购实体、读者信息实体、图书借阅信息实体、库存信息实体。以下为几个关键实体的E-R图。1. 图书信息
11、实体图书信息实体包括图书编号、图书类别编号、书名、作者、出版社、价格、出版时间等属性。其中图书编号为图书信息实体的主键,图书类别编号为图书信息实体的外键,与图书分类实体具有外键关系。作者书名类别编号编号图书出版时间价格出版社图3-1 图书信息实体E-R图2. 读者信息实体读者信息实体包括条形码、姓名、性别、年龄、电话、办证日期、证件号码等属性。其中条形码作为本实体的唯一标识。 年龄性别 姓名条形码读者电话办证日期证件号码 图3-2 读者信息实体E-R图3. 图书借阅信息实体图书借阅信息实体包括编号、图书编号、读者编号、是否归还、借阅日期、归还日期等属性。编号作为图书借阅信息实体的唯一标识,包括
12、两个外键,分别为图书编号与读者编号。编号图书编号读者编号图书借阅借阅日期归还日期是否归还图3-3 图书借阅信息实体E-R图4. 图书订购实体图书订购实体主要包括图书编号,订购日期、订购数量、是否验收等属性。图书订购实体以图书编号与图书信息实体建立了关系。订购日期图书编号订购数量图书订购操作员折扣是否验收6.2主窗体设计 在整个系统中,主窗体部分显示了本系统的所有功能。在主窗体的设计中运用了Swing技术,完成了对菜单栏以及工具栏的设计。管理员通过主窗体可以进行相应的操作,实现系统的功能。普通用户也可以利用主窗体中的工具栏进行常用的功能操作。下面将详细的展现主窗体的设计细节部分。 6.2.1主窗
13、体概述管理员通过“系统登录”模块的验证后,可以登录到图书馆管理系统的主窗体。系统主窗体主要包括菜单栏、工具栏。用户在菜单栏中单击任一菜单项,即可执行相应的功能;工具栏为用户提供了经常使用的功能按钮。 6.2.2主窗体的实现过程 主窗体的实现过程如下:1 创建Library类,在其构造函数中设置主窗体相关属性,如窗体大小、窗体标题等相关属性,还可以为窗体设置背景图片,并调用创建菜单栏与工具栏的方法,在主窗体中创建菜单栏与工具栏。关键代码如下:public Library() super();setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOS
14、E);setModalExclusionType(ModalExclusionType.APPLICATION_EXCLUDE);setLocationByPlatform(true);setSize(800, 600);setTitle(图书馆管理系统);JMenuBar menuBar = createMenu(); / 调用创建菜单栏的方法setJMenuBar(menuBar);JToolBar toolBar = createToolBar(); / 调用创建工具栏的方法getContentPane().add(toolBar, BorderLayout.NORTH);final J
15、Label label = new JLabel();label.setBounds(0, 0, 0, 0);label.setIcon(null); / 窗体背景DESKTOP_PANE.addComponentListener(new ComponentAdapter() public void componentResized(final ComponentEvent e) Dimension size = e.getComponent().getSize();label.setSize(e.getComponent().getSize();label.setText(););DESKT
16、OP_PANE.add(label,new Integer(Integer.MIN_VALUE);getContentPane().add(DESKTOP_PANE);2 编写创建菜单栏的方法private JMenuBar createMenu() JMenuBar menuBar = new JMenuBar();JMenu bookOrderMenu = new JMenu(); / 初始化新书订购管理菜单bookOrderMenu.setIcon(CreatecdIcon.add(xsdgcd.jpg);bookOrderMenu.add(MenuActions.NEWBOOK_ORD
17、ER);bookOrderMenu.add(MenuActions.NEWBOOK_CHECK_ACCEPT);JMenu baseMenu = new JMenu();/ 初始化基础数据维护菜单baseMenu.setIcon(CreatecdIcon.add(jcsjcd.jpg);JMenu readerManagerMItem = new JMenu(读者信息管理);readerManagerMItem.add(MenuActions.READER_ADD);readerManagerMItem.add(MenuActions.READER_MODIFY);JMenu bookType
18、ManageMItem = new JMenu(图书类别管理);bookTypeManageMItem.add(MenuActions.BOOKTYPE_ADD);bookTypeManageMItem.add(MenuActions.BOOKTYPE_MODIFY);JMenu menu = new JMenu(图书信息管理);menu.add(MenuActions.BOOK_ADD);menu.add(MenuActions.BOOK_MODIFY);baseMenu.add(readerManagerMItem);baseMenu.add(bookTypeManageMItem);ba
19、seMenu.add(menu);baseMenu.addSeparator();baseMenu.add(MenuActions.EXIT);JMenu borrowManageMenu = new JMenu(); / 借阅管理borrowManageMenu.setIcon(CreatecdIcon.add(jyglcd.jpg);borrowManageMenu.add(MenuActions.BORROW); / 借阅borrowManageMenu.add(MenuActions.GIVE_BACK); / 归还borrowManageMenu.add(MenuActions.BO
20、OK_SEARCH); / 搜索JMenu sysManageMenu = new JMenu(); / 系统维护sysManageMenu.setIcon(CreatecdIcon.add(jcwhcd.jpg);JMenu userManageMItem = new JMenu(用户管理); / 用户管理userManageMItem.add(MenuActions.USER_ADD);userManageMItem.add(MenuActions.USER_MODIFY);sysManageMenu.add(MenuActions.MODIFY_PASSWORD);sysManageMe
21、nu.add(userManageMItem);menuBar.add(baseMenu); / 添加基础数据维护菜单到菜单栏menuBar.add(bookOrderMenu); / 添加新书订购管理菜单到菜单栏menuBar.add(borrowManageMenu); / 添加借阅管理菜单到菜单栏menuBar.add(sysManageMenu); / 添加系统维护菜单到菜单栏return menuBar;3 编写创建工具栏的方法private JToolBar createToolBar() / 创建工具栏的方法JToolBar toolBar = new JToolBar();to
22、olBar.setFloatable(false);toolBar.setBorder(new BevelBorder(BevelBorder.RAISED);JButton bookAddButton=new JButton(MenuActions.BOOK_ADD);ImageIcon icon = new ImageIcon(Library.class.getResource(“/bookAddtb.jpg”)bookAddButton.setIcon(icon);bookAddButton.setHideActionText(true);bookAddButton.setToolTip
23、Text(fjdkjfk);/图片上提示字toolBar.add(bookAddButton);toolBar.add(MenuActions.BOOK_MODIFY);/在工具栏中添加图书修改与删除图标JButton bookModiAndDelButton=new JButton(MenuActions.BOOK_MODIFY); ImageIconbookmodi icon=CreatecdIcon.add(bookModiAndDeltb.jpg);/创建图标方法bookModiAndDelButton.setIcon(bookmodiicon);bookModiAndDelButto
24、n.setHideActionText(true);toolBar.add(bookModiAndDelButton);JButton bookTypeAddButton=new JButton(MenuActions.BOOKTYPE_ADD);ImageIconbookTypeAddicon=CreatecdIcon.add(bookTypeAddtb.jpg);/创建图标方法bookTypeAddButton.setIcon(bookTypeAddicon);bookTypeAddButton.setHideActionText(true);toolBar.add(bookTypeAdd
25、Button);JButton bookBorrowButton=new JButton(MenuActions.BORROW);ImageIcon bookBorrowicon=CreatecdIcon.add(bookBorrowtb.jpg); bookBorrowButton.setIcon(bookBorrowicon);bookBorrowButton.setHideActionText(true);toolBar.add(bookBorrowButton);JButton bookOrderButton=new JButton(MenuActions.NEWBOOK_ORDER)
26、;ImageIcon bookOrdericon=CreatecdIcon.add(bookOrdertb.jpg);/创建图标方法bookOrderButton.setIcon(bookOrdericon);bookOrderButton.setHideActionText(true);toolBar.add(bookOrderButton);JButton bookCheckButton=newJButton(MenuActions.NEWBOOK_CHECK_ACCEPT);ImageIcon bookCheckicon=CreatecdIcon.add(newbookChecktb.j
27、pg);/创建图标方法bookCheckButton.setIcon(bookCheckicon);bookCheckButton.setHideActionText(true);toolBar.add(bookCheckButton);JButton readerAddButton=new JButton(MenuActions.READER_ADD);ImageIcon readerAddicon=CreatecdIcon.add(readerAddtb.jpg);/创建图标方法readerAddButton.setIcon(readerAddicon);readerAddButton.s
28、etHideActionText(true);toolBar.add(readerAddButton);JButton readerModiAndDelButton=new JButton(MenuActions.READER_MODIFY);ImageIcon readerModiAndDelicon=CreatecdIcon.add(readerModiAndDeltb.jpg);/创建图标方法readerModiAndDelButton.setIcon(readerModiAndDelicon);readerModiAndDelButton.setHideActionText(true)
29、;toolBar.add(readerModiAndDelButton);JButton ExitButton=new JButton(MenuActions.EXIT);ImageIcon Exiticon=CreatecdIcon.add(exittb.jpg);/创建图标方法ExitButton.setIcon(Exiticon);ExitButton.setHideActionText(true);toolBar.add(ExitButton);return toolBar;4 经过程序运行后得到下图: 6.3登陆模块设计一个完整的系统需要一定的权限才能进行相应的操作,图书馆管理系统也
30、不例外。无论是管理员还是用户都必须首先进入登陆界面,只有输入正确的账号和密码才能进入到主窗体进行相应的操作,否则是不能进行功能操作的。因此登陆模块在整个系统中占据了很重要的地位。 6.3.1登录模块概述登录模块是图书馆管理系统的入口,在运行本系统后,首先进入的便是登录窗体。在该窗体中,系统管理员可以通过输入正确的管理员名称与密码登录到系统;当没有输入管理员名称或密码时,系统将会弹出相应的提示信息。 6.3.2登录模块的实现过程开发登录模块的具体步骤如下:1) 首先在BookLoginIFrame类构造函数中设计登录窗体的整体布局,包括添加窗体关闭按钮、最小化按钮、设置窗体大小等属性。关键代码如
31、下:public BookLoginIFrame() super();final BorderLayout borderLayout = new BorderLayout();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);borderLayout.setVgap(10);getContentPane().setLayout(borderLayout);setTitle(图书馆管理系统登录);setBounds(100, 100, 285, 194);final JPanel panel = new JPanel();panel.setLayout
32、(new BorderLayout();panel.setBorder(new EmptyBorder(0, 0, 0, 0);getContentPane().add(panel);final JPanel panel_2 = new JPanel();final GridLayout gridLayout = new GridLayout(0, 2);gridLayout.setHgap(5);gridLayout.setVgap(20);panel_2.setLayout(gridLayout);panel.add(panel_2);final JLabel label = new JL
33、abel();label.setHorizontalAlignment(SwingConstants.CENTER);label.setPreferredSize(new Dimension(0, 0);label.setMinimumSize(new Dimension(0, 0);panel_2.add(label);label.setText(用 户 名:);username = new JTextField(20);username.setPreferredSize(new Dimension(0, 0);panel_2.add(username);final JLabel label
34、_1 = new JLabel();label_1.setHorizontalAlignment(SwingConstants.CENTER);panel_2.add(label_1);label_1.setText(密 码:);password = new JPasswordField(20);password.setDocument(new MyDocument(6);password.setEchoChar(*);/设置密码框的回显字符password.addKeyListener(new KeyAdapter() public void keyPressed(final KeyEven
35、t e) if (e.getKeyCode() = 10)login.doClick(););panel_2.add(password);final JPanel panel_1 = new JPanel();panel.add(panel_1, BorderLayout.SOUTH);login=new JButton();login.addActionListener(new BookLoginAction();login.setText(登录);panel_1.add(login);reset=new JButton();reset.addActionListener(new BookR
36、esetAction();reset.setText(重置);panel_1.add(reset);final JLabel tupianLabel = new JLabel();ImageIcon loginIcon=CreatecdIcon.add(login.jpg);tupianLabel.setIcon(loginIcon);tupianLabel.setOpaque(true);tupianLabel.setBackground(Color.GREEN);tupianLabel.setPreferredSize(new Dimension(260, 60);panel.add(tu
37、pianLabel, BorderLayout.NORTH);setVisible(true);setResizable(false);程序运行图如下:图5-1 图书馆管理系统登录运行图2) 为了方便在登录验证时取值传递,需要创建一个对应于tb_operator表字段的JavaBean。这个类除了以数据表字段命名的成员变量之外,还创建了与成员变量相对应的setXXX()getXXX()方法。关键代码如下:public class Operater private String id;private String name;private String grade;private String
38、password;public String getGrade() return grade;public void setGrade(String grade) this.grade = grade;public String getId() return id;public void setId(String id) this.id = id;public String getName() return name;public void setName(String name) this.name = name;public String getPassword() return pass
39、word;public void setPassword(String password) this.password = password;3) 分别为“登录”按钮与“重置”按钮设置监听事件。class BookLoginAction implements ActionListener public void actionPerformed(final ActionEvent e) user = Dao.check(username.getText(), password.getText();if (user.getName() != null) try Library frame = ne
40、w Library();frame.setVisible(true);BookLoginIFrame.this.setVisible(false); catch (Exception ex) ex.printStackTrace(); else JOptionPane.showMessageDialog(null, 只有管理员才可以登录!);username.setText();password.setText();4) 在Dao类中创建登录验证方法,在此方法中查询文本框中输入的字符串是否与操作员数据表中的数据相匹配,并是否为管理员登录,以上条件都满足,登录验证才能成功。关键代码如下:publ
41、ic static Operater check(String name, String password) int i = 0;Operater operater=new Operater();String sql = select * from tb_operator where name= + name+ and password= + password + and admin=1;ResultSet rs = Dao.executeQuery(sql);try while (rs.next() String names = rs.getString(1);operater.setId(
42、rs.getString(id);operater.setName(rs.getString(name);operater.setGrade(rs.getString(admin);operater.setPassword(rs.getString(password);if (names != null) i = 1; catch (Exception e) e.printStackTrace();Dao.close();return operater;6.4图书管理模块设计 图书管理系统的最主要功能当然要进行图书的管理,其中包括图书的添加,图书信息的修改,图书的借还和图书的查询。图书管理模块是图书管理系统的核心模块。它包含了系统中最重要的功能。管理员和用户平时使用的大部分功能都将在这一模块中实现。 6.4.1图书信息管理模块概述图书信息管理模块主要包括图书添加、图书信息修改、图书借还、图书查询等功能。在图书添加窗体中,管理员可以录入图书相关信息,进入图书信息修改窗体后,首先在表格中显示所有图书的相关信息,管理员可以选择表格中需要修改的某一行数据,这时在窗体下方的文本框中将显示相应的内容。图书借阅模块主要用于管理读者借阅图书的信息。管理员输入读者条形码、图书条形码后,在读者相关信息文本框以及图书相关信息文本框中将相应地显示此读者和书籍的相关信息。