java图书管理系统
进入21世纪以来,信息技术从根本上推动了图书馆的飞速发展,计算机和计算机管理系统已成为图书馆进行图书管理的主要设备和系统。虽然目前很多大型的图书馆已经有一套比较完善的管理系统,但是在一些中小型的图书馆中,大部分工作仍需手工完成,工作起来效率比较低,不便于动态,及时地调整图书结构。为了更好的适应当前图书馆的管理需求,解决手工管理中存在的弊端,越来越多的中小型图书馆正在逐步向计算机信息化管理转变。
随着各高校图书馆的图书数量不断增多和图书馆规模的不断扩大,管理这些庞大的图书体系非常困难的,因为图书的情况是随时改变的,因此必需对图书进行动态的管理,而这对于一个管理人员来说是一件比较复杂的事情,存储、查询、借阅是必不可少的业务。
为了能让管理员比较轻松的工作,使管理员在使用一个软件以后能极其容易地对所有图书进行管理,并且准确无误,轻松自如。因此开发一个图书馆管理软件是当务之急,也是本毕业
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
选题的重要意义和研究宗旨。
图书馆管理系统的流通部分是所有图书馆系统中最重要的部分,流通系统将读者与图书、读者与管理员、读者与读者相互间联系起来,而且流通系统处理的数据类型多,数量大,精细且频繁,因而需要系统应具备较完善的检验防错功能,从而根据系统的运行及反馈信息高质量,高效率地管理系统流通部门的全部功能。
图书馆管理系统开发背景:当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好图书馆信息而设计的。图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、
表格
关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载
等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
的信息管理手段。尽管有的图书馆有计算机,但是尚未用于
信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。基于这此问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和
修改图书情况。
图书馆管理系统的目的和意义:我们要实现科学技术现代化,图书情报工作的现代化是极其重要的,又由于科学和技术的不断发展和进步,现代技术是一个动态的概念.第二次世界大战以来,以计算机技术为代表的现代技术有了巨大的发展,而且还在迅速的变化发展之中,70年代后期,出现图书情报工作的 “联机革命”,使计算机更广泛地,更有效的应用到各个角落,发达国家较重视这一领域的发展,我国尚存在较大的差距。所以我们说,图书情报工作计算机化是提高我国科学技术水平的一项带有重大战略意义的措施,它是图书情报工作现代化的重要标志。
计算机技术是现代技术的一部分,图书自动化也只是图书馆现代化的一部分,它们之间是部分和整体的关系,但由于计算机技术是信息技术的心脏,现代社会的骄子,信息社会的科技主角,所以在图书馆现代技术中,计算机技术处于核心地位,它对于其他现代化设备起控制,连接和转换的作用,而图书馆自动化是图书馆现代化的核心和主导部分。图书情报的计算机管理系统能提高图书馆本身管理水平,能代替工作人员进行图书情报资料的某些加工处理,把工作人员从繁重的手工劳动,重复劳动中解放出来。
总之,建立图书馆的计算机自动化管理系统,不但可以大大提高图书馆图书流通率,而且推动了社会文化生活的进步。
以图书馆管理信息系统的需求
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
及概念设计为切入点,运用理论与实际相结合的方法,构建一个包含读者信息,书籍信息和借阅信息的图书馆管理系统。图书馆管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。
因此结合开放式图书馆的要求,对MySQL数据库、Java程序设计进行了较深入的学习和应用,主要完成对图书管理系统的需求分析、功能模块划分、数据库模式分析,并由此设计了数据库结构和应用程序。希望
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是有Sun Microsystems公司与1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。Java技术具有卓越的通用性,高效性,平台移植性和安全性,广泛应用于个人PC,数据中心,游戏控制台,科学超级计算机,移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 基于Java的可移植性和高效性等特点,在设计本系统的时候选用了Java语言。
MVC模式的介绍以及在本系统中的使用:MVC是三个单词的缩写,分别为:模型(Model),视图(View),控制(Controller)。MVC 模式的目的就是实现系统的职能分工。Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。View层用于与用户的交互,通常在C/S系统中用swing+AWT实现,在B/S系统中常用jsp来实现。Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。
C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。C/S结构软件(即
客户机/服务器模式)分为客户机和服务器两层,客户机不是毫无运算能力的输入、输出设备,而是具有了一定的数据处理和数据存储能力,通过把应用软件的计算和数据合理地分配在客户机和服务器两端,可以有效地降低网络通信量和服务器运算量。由于服务器连接个数和数据通信量的限制,这种结构的软件适于在用户数目不多的局域网内使用。国内目前的大部分ERP(财务)软件产品即属于此类结构。
在本系统中模型(Model)层运用JavaBean技术,完成了各部分功能的实现,包括基础数据维护,图书借阅管理,新书订购管理和系统维护部分。视图(View)层主要运用Swing技术,完成了对主界面,订阅界面等的显示。控制层
(Controller)的作用是整合模型层和视图层。用户在界面层点击的事件,会通过控制层调用模型层相应的处理,从而形成相应的处理结果显示在界面中。
通过运用MVC思想后,整个系统将会显得很清晰,使代码更加的清晰。也方便以后的维护。
作为一款图书管理系统,首先要完成它的基本功能。在本次设计中,将根据调查过程后形成的流程图,将系统分为基础数据维护,图书借阅管理,新书订购管理以及系统维护四大功能模块。在完成功能的设计过程中,要尽量使系统达到一些基本目标,下面将详细的介绍系统的整体结构以及需要达到的目标。 2.1 系统目标
根据对系统的分析,该系统应达到以下目的。
界面设计友好、美观
数据存储安全、可靠 信息分类清晰、准确
强大的查询功能、保证数据查询的灵活性 系统安全、稳定
开发技术先进、功能完备、扩展性强 占用资源小、对硬件要求低
提供灵活、方便的权限设置功能、使整个系统的管理分工明确
系统功能结构:图书馆管理系统分为4大功能模块,分别为“基础数据维护”、“图书借阅管理”、“新书订购管理”和“系统维护”。本系统各个部分及其包括的具体功能模块如图2-1所示:
图书馆管理系统功能结构
系统流程
图书馆管理系统的业务流程:通常作为一个管理软件,它的数据部分都是由数据库来存储和管理的。在本设计中数据库承担了图书信息和读者信息。在如今的数据库产品中,有很多成熟的产品,如oracle,DB2,SQL Server,MySQL等,图书馆管理系统应用于高校的图书馆中,用户数据以及图书的信息数据并不是很大。考虑到成本,选用了MySQL数据库。下面将详细的为您介绍本设计中数据库的选择以及数据库的概念设计等。
数据库分析:MySQL具有很强的完整性与可伸缩性,性价比很高。考虑到本系统的稳定性、可靠性,我决定在设计该系统是选择MySQL数据库来满足系统的需求。 数据库概念设计:根据以上对系统所作的需求分析、系统设计,规划出本系统中使用的数据库实体分别为图书信息实体、图书分类实体、图书订购实体、读者信息实体、图书借阅信息实体、库存信息实体。
以下为几个关键实体的E-R结构体系
1. 图书信息实体
图书信息实体包括图书编号、图书类别编号、书名、作者、出版社、价格、出
版时间等属性。其中图书编号为图书信息实体的主键,图书类别编号为图书信息实体的外键,与图书分类实体具有外键关系。
图书信息实体E-R结构
2. 读者信息实体
读者信息实体包括条形码、姓名、性别、年龄、电话、办证日期、证件号码等属性。其中条形码作为本实体的唯一标识。
通常作为一个管理软件,它的数据部分都是由数据库来存储和管理的。在本设计中数据库承担了图书信息和读者信息。在如今的数据库产品中,有很多成熟的产品,如oracle,DB2,SQL Server,MySQL等,图书馆管理系统应用于高校的图书馆中,用户数据以及图书的信息数据并不是很大。考虑到成本,选用了MySQL数据库。下面将详细的为您介绍本设计中数据库的选择以及数据库的概念设计等。
数据库分析
MySQL具有很强的完整性与可伸缩性,性价比很高。考虑到本系统的稳定性、可靠性,我决定在设计该系统是选择MySQL数据库来满足系统的需求。 数据库概念设计
根据以上对系统所作的需求分析、系统设计,规划出本系统中使用的数据库实体分别为图书信息实体、图书分类实体、图书订购实体、读者信息实体、图书借阅信息实体、库存信息实体。
以下为几个关键实体的E-R结构
1. 图书信息实体
图书信息实体包括图书编号、图书类别编号、书名、作者、出版社、价格、出版时间等属性。其中图书编号为图书信息实体的主键,图书类别编号为图书信息实体的外键,与图书分类实体具有外键关系。
图书信息实体E-R结构
2. 读者信息实体
读者信息实体包括条形码、姓名、性别、年龄、电话、办证日期、证件号码等属性。其中条形码作为本实体的唯一标识。
第四章 主窗体设计
在整个系统中,主窗体部分显示了本系统的所有功能。在主窗体的设计中运用了Swing技术,完成了对菜单栏以及工具栏的设计。管理员通过主窗体可以进行相应的操作,实现系统的功能。普通用户也可以利用主窗体中的工具栏进行常用的功能操作。下面将详细的展现主窗体的设计细节部分。
主窗体概述
管理员通过“系统登录”模块的验证后,可以登录到图书馆管理系统的主窗体。系统主窗体主要包括菜单栏、工具栏。用户在菜单栏中单击任一菜单项,即可执行相应的功能;工具栏为用户提供了经常使用的功能按钮。
主窗体的实现过程
主窗体的实现过程如下:
1( 创建Library类,在其构造函数中设置主窗体相关属性,如窗体大小、窗
体标
题等相关属性,还可以为窗体设置背景图片,并调用创建菜单栏与工具栏的方
法,在主窗体中创建菜单栏与工具栏。关键代码如下:
public Library() {
super();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setModalExclusionType(ModalExclusionType.APPLICATION_EXCLUDE);
setLocationByPlatform(true); setSize(800, 600); setTitle("图书馆管理系统
"); JMenuBar menuBar = createMenu(); // 调用创建菜单栏的方法
setJMenuBar(menuBar); JToolBar toolBar = createToolBar(); // 调用创建工具栏
的方法 getContentPane().add(toolBar, BorderLayout.NORTH); final JLabel 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("<html><img width=" + size.width + " height=" + size.height + " src=„" +
this.getClass().getResource("/backImg.jpg")
+ "?></html>");
}
});
DESKTOP_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_ORDER);
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 bookTypeManageMItem = 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); baseMenu.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.BOOK_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);
sysManageMenu.add(userManageMItem); menuBar.add(baseMenu); // 添加基础
数据维护菜单到菜单栏 menuBar.add(bookOrderMenu); // 添加新书订购管理菜
单到菜单栏 menuBar.add(borrowManageMenu); // 添加借阅管理菜单到菜单栏
menuBar.add(sysManageMenu); // 添加系统维护菜单到菜单栏 return menuBar;
}
3( 编写创建工具栏的方法
private JToolBar createToolBar() { // 创建工具栏的方法
JToolBar toolBar = new JToolBar();
toolBar.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.setToolTipText("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);
bookModiAndDelButton.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(bookTypeAddButton); 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);
ImageIcon bookOrdericon=CreatecdIcon.add("bookOrdertb.jpg");//创
建图标方法
bookOrderButton.setIcon(bookOrdericon);
bookOrderButton.setHideActionText(true); toolBar.add(bookOrderButton); JButton
bookCheckButton=new
JButton(MenuActions.NEWBOOK_CHECK_ACCEPT);
ImageIcon
bookCheckicon=CreatecdIcon.add("newbookChecktb.jpg");//创建图标
方法 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.setHideActionText(true);
toolBar.add(readerAddButton);
JButton readerModiAndDelButton=new
JButton(MenuActions.READER_MODIFY);
ImageIcon readerModiAndDelicon=
CreatecdIcon.add("readerModiAndDeltb.jpg");//创建图标方法
readerModiAndDelButton.setIcon(readerModiAndDelicon);
readerModiAndDelButton.setHideActionText(true); 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( 经过程序运行后得到下图:
图4-1 图书馆管理系统主界面运行图
5( 小结
图书管理系统的主窗体部分作为图书管理的主要界面,里面含有很多的菜单栏
和工具栏,因此在设计的时候需要注意各菜单栏和工具栏的布局。另外,用户通
过账号密码登陆之后,需要判断此次登陆的用户身份是管理员还是用户,如果是
管理员则显示管理员相应的主界面,如果是普通借阅用户,则该用户界面没有新
书订购等只有管理员才有的功能。
一个完整的系统需要一定的权限才能进行相应的操作,图书馆管理系统也不例
外。无论是管理员还是用户都必须首先进入登陆界面,只有输入正确的账号和密
码才能进入到主窗体进行相应的操作,否则是不能进行功能操作的。因此登陆模
块在整个系统中占据了很重要的地位。
5.1 登录模块概述
登录模块是图书馆管理系统的入口,在运行本系统后,首先进入的便是登录窗
体。在该窗体中,系统管理员可以通过输入正确的管理员名称与密码登录到系统;
当没有输入管理员名称或密码时,系统将会弹出相应的提示信息。
5.2 登录模块的实现过程
开发登录模块的具体步骤如下:
1) 首先在BookLoginIFrame类构造函数中设计登录窗体的整体布局,包括添加
窗
体关闭按钮、最小化按钮、设置窗体大小等属性。关键代码如下:
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(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 JLabel();
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_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 KeyEvent 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 BookResetAction()); 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(tupianLabel,
BorderLayout.NORTH); setVisible(true); setResizable(false);
}
图书馆管理系统登录运行: 为了方便在登录验证时取值传递,需要创建一个对应于tb_operator表字段的
JavaBean。这个类除了以数据表字段命名的成员变量之外,还创建了与成员变量相对应的setXXX()\getXXX()方法。关键代码如下:
public class Operater {
private String id;
private String name;
private String grade;
private String 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 password;
}
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 = new Library(); frame.setVisible(true); BookLoginIFrame.this.setVisible(false); } catch (Exception ex)
{ ex.printStackTrace(); } } else { JOptionPane.showMessageDialog(null, "只
有管理员才可以登 } username.setText(""); password.setText(""); }
4) 在Dao类中创建登录验证方法,在此方法中查询文本框中输入的字符串是
否与
操作员数据表中的数据相匹配,并是否为管理员登录,以上条件都满足,登录
验证才能成功。关键代码如下:
public 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(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;
}
小结
在设计登陆模块时,需要验证用户是否存在,如果用户存在,则需要进行密码
的验证,如果通过会进行身份的验证。管理员账号验证通过后会显示出管理员的
主界面。通过登录以后,才可以进行相应的管理员操作。普通借阅用户登录成功
后,可以进行查询,借阅等操作。如果验证不通过,则会在登录界面弹出提示框,
显示用户名或者密码错误。
在登录模块中,最主要的工作是进行用户名以及密码的验证,以及在验证账号
密码后的身份验证工作。
图书管理系统的最主要功能当然要进行图书的管理,其中包括图书的添加,图
书信息的修改,图书的借还和图书的查询。图书管理模块是图书管理系统的核心
模块。它包含了系统中最重要的功能。管理员和用户平时使用的大部分功能都将
在这一模块中实现。
图书信息管理模块概述
图书信息管理模块主要包括图书添加、图书信息修改、图书借还、图书查询等
功能。 在图书添加窗体中,管理员可以录入图书相关信息,进入图书信息修改
窗体后,首先在表格中显示所有图书的相关信息,管理员可以选择表格中需要修
改的某一行数据,这时在窗体下方的文本框中将显示相应的内容。
图书借阅模块主要用于管理读者借阅图书的信息。管理员输入读者条形码、图
书条形码后,在读者相关信息文本框以及图书相关信息文本框中将相应地显示此
读者和书籍的相关信息。
图书信息的添加模块实现
图书添加模块的开发步骤如下:
首先创建图书信息添加窗体,然后在图书信息添加窗体中添加按钮监听事件,关键代码如下:
public BookAddIFrame() {
super();
final BorderLayout borderLayout = new BorderLayout();
getContentPane().setLayout(borderLayout);
setIconifiable(true); // 设置窗体可最小化
setClosable(true); // 设置窗体可关闭
setTitle("图书信息添加"); // 设置窗体标题
setBounds(100, 100, 396, 260);
final JPanel panel = new JPanel();
panel.setBorder(new EmptyBorder(5, 10, 5, 10)); final GridLayout gridLayout =
new GridLayout(0,
4); gridLayout.setVgap(5); gridLayout.setHgap(5); panel.setLayout(gridLayout);
getContentPane().add(panel); final JLabel label_2 = new JLabel();
label_2.setText("图书编号:");
图书管理系统的最主要功能当然要进行图书的管理,其中包括图书的添加,图书信息的修改,图书的借还和图书的查询。图书管理模块是图书管理系统的核心模块。它包含了系统中最重要的功能。管理员和用户平时使用的大部分功能都将在这一模块中实现。
图书信息管理模块概述
图书信息管理模块主要包括图书添加、图书信息修改、图书借还、图书查询等功能。 在图书添加窗体中,管理员可以录入图书相关信息,进入图书信息修改窗体后,首先在表格中显示所有图书的相关信息,管理员可以选择表格中需要修改的某一行数据,这时在窗体下方的文本框中将显示相应的内容。
图书借阅模块主要用于管理读者借阅图书的信息。管理员输入读者条形码、图书条形码后,在读者相关信息文本框以及图书相关信息文本框中将相应地显示此读者和书籍的相关信息。
图书信息管理模块实现过程
图书信息的添加模块实现
图书添加模块的开发步骤如下:
首先创建图书信息添加窗体,然后在图书信息添加窗体中添加按钮监听事件,关键代码如下:
public BookAddIFrame() {
super();
final BorderLayout borderLayout = new BorderLayout();
getContentPane().setLayout(borderLayout);
setIconifiable(true); // 设置窗体可最小化
setClosable(true); // 设置窗体可关闭
setTitle("图书信息添加"); // 设置窗体标题
setBounds(100, 100, 396, 260);
final JPanel panel = new JPanel();
panel.setBorder(new EmptyBorder(5, 10, 5, 10)); final GridLayout gridLayout = new GridLayout(0,
4); gridLayout.setVgap(5); gridLayout.setHgap(5); panel.setLayout(gridLayout); getContentPane().add(panel); final JLabel label_2 = new JLabel(); label_2.setText("图书编号:"); publisher = new JComboBox();
String[]array=new String[]{"***出版社","**信息出版社
","**大型出版社","***小型出版社"};
publisher.setModel(new DefaultComboBoxModel(array));
panel.add(publisher);
final JLabel label_4 = new JLabel();
label_4.setHorizontalAlignment(SwingConstants.CENTER);
label_4.setText("译者:");
panel.add(label_4);
translator = new JTextField();
translator.setDocument(new MyDocument(10));
panel.add(translator); final JLabel label_1_1 = new JLabel(); label_1_1.setText("出版日期:"); panel.add(label_1_1);
-dd"); SimpleDateFormat myfmt=new SimpleDateFormat("yyyy-MM
pubDate= new JFormattedTextField(myfmt.getDateInstance());
pubDate.setValue(new java.util.Date()); panel.add(pubDate); final JLabel label_3_1 = new JLabel(); label_3_1.setHorizontalAlignment(SwingConstants.CENTER); label_3_1.setText("单价:"); panel.add(label_3_1); price= new
JTextField(); price.setDocument(new MyDocument(5)); price.addKeyListener(new NumberListener()); panel.add(price); final JPanel panel_1 = new JPanel(); panel_1.setBorder(new LineBorder(SystemColor.activeCaptionBorder, 1, false)); getContentPane().add(panel_1, BorderLayout.SOUTH); final FlowLayout flowLayout = new FlowLayout(); flowLayout.setVgap(2); flowLayout.setHgap(30); flowLayout.setAlignment(FlowLayout.RIGHT); panel_1.setLayout(flowLayout); buttonadd= new JButton(); buttonadd.addActionListener(new
addBookActionListener()); buttonadd.setText("添加");
panel_1.add(buttonadd); buttonclose = new JButton();
buttonclose.addActionListener(new CloseActionListener());
buttonclose.setText("关闭"); panel_1.add(buttonclose); final JLabel label_5 = new JLabel(); ImageIcon
bookAddIcon=CreatecdIcon.add("newBookorderImg.jpg");
label_5.setIcon(bookAddIcon); label_5.setPreferredSize(new
Dimension(400, 80)); label_5.setBorder(new
LineBorder(SystemColor.activeCaptionBorder, 1, false));
getContentPane().add(label_5, BorderLayout.NORTH);
label_5.setText("新书定购(LOGO图片)");
setVisible(true);
}
程序运行如下:
图书借阅模块的实现
开发图书借阅模块的步骤如下:
在类构造函数中创建窗体布局以及相关属性,然后为读者条形码文本框添加键
盘监听事件,最后在“借阅当前图书”按钮监听事件中,将相关信息存入图书借阅
表中,如果操作成功,提示相应的对话框。关键代码如下:
class BorrowActionListener implements ActionListener {
public void actionPerformed(final ActionEvent e) {
String bookISBNs=bookISBN.getText().trim();
String readerISBNs=readerISBN.getText().trim();
String bookNames=bookName.getText().trim();
String operatorId=user.getId();
//String num=table.getRowCount()+"";
String borrowDate=myfmt.format(new java.util.Date());
String backDate=myfmt.format(getBackTime());
//System.out.println(borrowDate);
//System.out.println(java.sql.Timestamp.valueOf(backDate)); int i=Dao.InsertBookBorrow(bookISBNs, readerISBNs, operatorId, java.sql.Timestamp.valueOf(borrowDate),
java.sql.Timestamp.valueOf(backDate));
if(i==1){
JOptionPane.showMessageDialog(null, "图书借阅完成~");
doDefaultCloseAction();
}
}
}
程序运行如下:
图书借阅管理运行图书归还模块的实现
图书归还模块实现时,在设计窗体时,需要实现用户单击表格中的某一行,在
相应的文本框中显示此图书借阅的罚款信息。关键代码如下:
class BookBackActionListener implements ActionListener{
private final DefaultTableModel model;
BookBackActionListener(DefaultTableModel model) { this.model = model; }
public void actionPerformed(ActionEvent e)
{ if(readerISBNs==null){ JOptionPane.showMessageDialog(null, "请输入读
者编号~"); return; } System.out.println(bookISBNs==null);
if(table.getSelectedRow()==-1){ JOptionPane.showMessageDialog(null, "请
选择所要归还的图书~"); } return; } int i=Dao.UpdateBookBack(bookISBNs, readerISBNs,id); System.out.print(i); if(i==1){ int selectedRow = table.getSelectedRow(); model.removeRow(selectedRow);
JOptionPane.showMessageDialog(null, "还书操作完成~"); }
}
程序运行如下:
图书归还管理运行
图书查询模块的实现
图书查询模块实现的步骤如下:
首先在Dao类中定义两个查询方法,分别为条件查询和全部查询,然后在BookSerachIFram类中创建表格,用来显示查询结果。关键代码如下:
", "分类", "名称", String booksearch[] = { "编号
"作者", "译者","出版社", "出版日期", "单价" };
private Object[][] getselect(List list) {
Object[][] s = new Object[list.size()][8];
for (int i = 0; i < list.size(); i++) {
BookInfo book = (BookInfo) list.get(i);
} s[i][0] = book.getISBN(); String
booktypename=String.valueOf(MapPz.getMap().get(book.getTypeid())); s[i][1] =
booktypename; s[i][2] = book.getBookname(); s[i][3] = book.getWriter(); s[i][4] =
book.getTranslator(); s[i][5] =
book.getPublisher(); s[i][6] = book.getDate(); s[i][7] =
book.getPrice();
return s;
}
程序运行图如下:
图书查询运行
本运用了软件
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
的设计思想,实现了代码的简洁化,易维护等特点。为以后的功能添加提供可能性。同时,在这此的设计中,采用了Swing机制,使整个系统的设计思路更加清晰。通过这次毕业设计,我也对Java语言有了更进一步的了解,同时还可以掌握在Swing项目中如何使用Action接口的开发模式,如何创建菜单栏与工具栏,为以后应用Swing语言开发程序奠定了基础。
本系统仅仅是一个面向小型的高校图书馆,它主要完成对图书的一些基本操作,包括图书和读者的添加,查询,修改以及借还书等信息的操作。在整个系统的开发过程中采用了面向对象的思想,在数据库的设计上利用了MySQL的便利性和实用性。
系统在设计过程中不可避免的遇到了许多的问题,由于整个系统的复杂性,加上整个系统完全由我个人设计,所以整个系统仍有许多的不足,这些都是我需要改进的地方。作为一款图书管理系统,我设计的该系统离实际使用还有相当的距离,需要我不断的进行补充和改善。