java实训报告--图书管理系统.doc
Java实训报告 项目: 图书管理系统 专业: 软件技术 班级: 12级软件技术 姓名: 马巍 杨迪 张倩茹 指导教师: 黄珍 兰州文理学院电子信息工程学院2014年7月目 录摘 要31实习(实训)器材或环境42实习(实训)内容与过程42.1 数据库结构设计42.2 主页面模块设计52.3 与数据库建立连接102.4 操作员管理设计112.5 书籍管理模块设计133 实习(实训)总结与体会15摘 要 近年来,随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。 为此,在此次的实训中我选择了图书管理系统,它是以“图书”数据库为后台,在java和Microsoft SQL Server2000的开发环境下进行的。 主要实现了对客户资料的添加、修改、删除等功能;在查询方面,利用了模糊查询、详细查询;一、 实习(实训)器材或环境(注:针对计算机等专业的硬件、软件环境要求) 1硬件环境 学校101机房电脑 2软件环境 操作系统:Windows 98或Windows2000/Windows NT Server4.0 Microsoft Access 2000或SQL Sever二、 实习(实训)内容与过程 我们做的书籍借阅管理系统主要划分为以下七个模块:1) 操作员管理模块:实现操作员的登录及操作用户的添加,更改密码和删除用户的管理。2) 书籍信息管理模块:实现书籍信息的添加和更新。3) 书籍借出模块:书籍借出管理。4) 书籍还入模块:书籍还入管理。5) 信息一览模块:对书籍,读者和书籍借阅情况列表显示。6) 数据操作模块:封装对数据库的操作。具体操作如下:1) 数据库结构设计 该系统包括书籍管理、借阅管理和用户管理,所以数据库应包括书籍信息表(图1-1所示)、书籍借阅表(图1-2所示)、用户表(图1-3所示)。 图1-1书籍信息表 图1-2书籍借阅表 图1-3用户信息表 2) 主界面模块设计 根据功能需求和总体设计的结果,它应该由操作员登录、操作员管理、书籍借出管理、书籍还入管理和信息一览组成,如图2-1所示。可通过点击菜单项进入相应的功能模块。图2-1书籍管理系统主界面 建立一个新的应用程序,并将其主窗口命名为“BookManagerMain”。修改窗体布局为“XYLayout或NULL”。在此窗体上添加一菜单,名为“jMemuBar”。代码如下: /设置权限。根据操作员的不同,设置相应的权限。管理员可操作所有功能和添加用户;书籍操作员只能管理书籍;借阅操作员只能管理借阅情况。由于这个过程要在用户登录中使用,因此其函数作用范围要设为publicpublic void setEnable(String powertype) if (powertype.equals("管理员") jMenuUserManager.setEnabled(true); jMenuBookManager.setEnabled(true); jMenuBorrowBook.setEnabled(true); jMenuReturnBook.setEnabled(true); jMenuAllInfo.setEnabled(true); else if (powertype.equals("书籍操作员") jMenuUserManager.setEnabled(false); jMenuBookManager.setEnabled(true); jMenuBorrowBook.setEnabled(false); jMenuReturnBook.setEnabled(false); jMenuAllInfo.setEnabled(true); else if (powertype.equals("借阅操作员") jMenuUserManager.setEnabled(false); jMenuBookManager.setEnabled(false); jMenuBorrowBook.setEnabled(true); jMenuReturnBook.setEnabled(true); jMenuAllInfo.setEnabled(true); else jMenuUserManager.setEnabled(false); jMenuBookManager.setEnabled(false); jMenuBorrowBook.setEnabled(false); jMenuReturnBook.setEnabled(false); jMenuAllInfo.setEnabled(false); /在主窗体被打开时打开登陆窗口 void this_windowOpened(WindowEvent e) setEnable("else"); /采用 userLogin(this)的形式,将父窗体对象传入 userLogin dlg = new userLogin(this); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,(frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setVisible(true); /打开登陆窗口 void jMenuItemLogin_actionPerformed(ActionEvent e) userLogin dlg = new userLogin(this); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,(frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setVisible(true); /打开添加用户窗口 void jMenuItemUserAdd_actionPerformed(ActionEvent e) userAdd dlg = new userAdd(); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,(frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setVisible(true); /打开用户密码修改窗口 void jMenuItemUserUpdate_actionPerformed(ActionEvent e) userUpdate dlg = new userUpdate(); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,(frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setVisible(true); /打开用户删除窗口 void jMenuItemUserDelete_actionPerformed(ActionEvent e) userDelete dlg = new userDelete(); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,(frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setVisible(true); /打开书籍信息添加窗口 void jMenuItemBookAdd_actionPerformed(ActionEvent e) bookAdd dlg = new bookAdd(); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,(frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setVisible(true); /打开书籍信息更新窗口 void jMenuItemBookUpdate_actionPerformed(ActionEvent e) bookUpdate dlg = new bookUpdate(); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,(frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setVisible(true); /打开书籍删除窗口 void jMenuItemBookDelete_actionPerformed(ActionEvent e) bookDelete dlg = new bookDelete(); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,(frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setVisible(true); /打开书籍出借 窗口 void jMenuItemBookBorrow_actionPerformed(ActionEvent e) borrowBook dlg = new borrowBook(); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,(frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setVisible(true); /打开书籍出借信息修改窗口 void jMenuItemBookBorrowUpdate_actionPerformed(ActionEvent e) borrowInfoUpdate dlg = new borrowInfoUpdate(); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,(frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setVisible(true); /打开书籍还入窗口 void jMenuItemBookReturn_actionPerformed(ActionEvent e) returnBook dlg = new returnBook(); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,(frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setVisible(true); /打开书籍还入信息修改窗口 void jMenuItemBookReturnUpdate_actionPerformed(ActionEvent e) returnInfoUpdate dlg = new returnInfoUpdate(); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,(frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setVisible(true); /打开所有书籍列表窗口 void jMenuItemAllBook_actionPerformed(ActionEvent e) bookList dlg = new bookList(); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,(frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setVisible(true); void jMenuFileExit_actionPerformed(ActionEvent e) System.exit(0); /打开所有书籍借阅查询窗口 void jMenuItemAllInfo_actionPerformed(ActionEvent e) AllInfo dlg = new AllInfo(); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setVisible(true); 3) 与数据库建立连接package data;import java.sql.*; /引入sql包/数据库操作类public class DBManager private String driver="sun.jdbc.odbc.JdbcOdbcDriver" private String url="jdbc:odbc:BookManagerDB" /创建指定数据库的URL /查询方法,返回查询结果集 public ResultSet getResult(String sql) ResultSet rs=null; try Class.forName(driver) ; /加载驱动程序 Connection conn=DriverManager.getConnection(url) ; /创建连接 /创建statement对象 Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); rs=stmt.executeQuery(sql); /执行SQL语句,返回结果集 /异常处理 catch(Exception e) e.printStackTrace(); return rs; /执行更新语句方法 public int executeSql(String sql) int count=0; try Class.forName("driver") ; /加载驱动程序 Connection conn=DriverManager.getConnection(url) ; /创建连接 Statement stmt=conn.createStatement(); /创建statement对象 count=stmt.executeUpdate(sql); /执行SQL语句,返回更新条数 catch(Exception e) e.printStackTrace(); return count; /返回的count>0,表示操作成功 4) 操作员管理设计 1此模块要完成操作员或管理员的登录,因此界面设计得很乘法,只有【确定】和【取消】两个按钮,如图3-1-1所示。图3-1-1管理员和操作员登录窗口 操作员登录系统由用户名和密码构成,输入用户名和密码后系统首先验证输入字符的有效性,然后调用数据库查看此用户名是否存在、密码是否正确,然后再判断用户权限,从而确定是操作员还是管理员,根据权限的不同在执行主窗体中的setEnable过程时赋与不同的参数值。 2此部分要完成添加新的操作员或管理员账号的功能,用户需要提供用户名、密码并选择登录权限,界面设计如图3-2-1所示。 图3-2-1用户添加窗口登录权限采用JcomboBox,密码和确认密码采用JpasswordField。操作员的信息由用户名和密码构成,在操作员输入用户名和密码后,系统首先验证输入字符的有效性,再读取用户选择的登录权限,然后执行数据库的插入过程。3操作员密码或权限修改,这部分要实现友操作员或管理员账号的密码或权限修改的功能,用户需要提供用户名、原密码、亲密码和确认新密码或者要修改的权限,界面设计如图3-3-1所示。 图3-3-1用户密码或权限修改窗口4操作员删除模块,这部分要实现支操作员或管理员账事情进行删除的功能,用户需要提供用户名和密码,界面如图3-4-1所示。 图3-4-1用户删除窗口在操作员输入用户名和密码后,系统首先验证输入字符的有效性,然后调用数据库查看此用户名是否存在或密码是否正确,然后再执行更新过程。5) 书籍管理模块设计1 添加书籍信息模块,这部分要实现添加书籍信息的功能,用户需要提供书籍信息的相关资料,从功能上考虑,界面设计如图4-1-1所示。 图4-1-1书籍信息添加窗口在操作员输入书籍信息的相关资料后,系统首先验证输入字符的有效性,然后再执行添加过程。2 修改书籍信息模块,这部分要实现对书籍信息进行修改的功能,用户需要提供所要修改的书籍的名称,由功能考虑,界面设计如图4-2-1所示。在操作员输入书籍名称后,系统首先验证输入字符的有效性,然后市政用数据库对象执行更新过程。 图4-2-1书籍信息更新窗口3 删除书籍信息模块,这部分实现对书籍信息删除的功能,界面设计如图4-3-1所示。图4-3-1书籍信息删除窗口在操作员打开此窗口后,窗体给出一个文本框,用来输入书籍名称,单击【确定】按钮后,执行相应的操作。6) 书籍借出管理设计1 书籍借出模块,这部分要实现支书籍借出的功能,用户需要提供借阅者姓名、书名和其他相关信息,系统首先验证输入的有效性,然后执行相关的数据库过程。界面设计如图5-1-1所示。点击【清空】按钮,会清空所有信息,输入借阅者姓名、借阅日期并选择要借书籍,点击【确定】按钮会保存此书借阅的相关信息到数据库。 图5-1-1书籍借出窗口2 书籍借出信息修改模块,这部分要实现对书籍借出信息修改的功能。窗体效果如图5-2-1所示。点击【清空】按钮,会清空所有信息,输入借阅者姓名或书名点击【确定】按钮会调出此书相关信息,【更新】按钮将保存你对所借阅信息的修改。图5-2-1书籍借出信息修改窗口三、 实习(实训)总结与体会通过两个实训周的学习,我学到了不少新的东西,同时也温习了以前所学,老实说,实训的意义蛮大,特别是对我们动手、操作能力的培养,以及思维锻炼方面有非常大的作用,同时实训是我们平时的专业技能要求一个很好的体现,我们平时的掌握程度,通过实训,完全能够知道个大概,因为实训所涵盖的内容比较广,尽管就是我们平时的积累和学习,但是,要求明显有所提高。最后我希望在以后的学习生活中,能够很好的运用这所学知识,并且有更大的提高。参 考 资 料1java教学课本2 学习网站3百度网站4同学借鉴