信息系统工程
设计题目:图书馆信息系统
班 级:计算机1112班
姓 名:刘 奉
学 号:20111221153
指导老师:滕皓
20##年05月17日
图书管理系统可行性分析报告
1. 引言... 2
1.2 项目背景... 2
。 2. 可行性研究的前提... 3
2.1 要求... 3
2.2 目标... 3
2.3 条件、假定和限制... 3
2.4 评价的尺度... 4
3.对现有系统的分析... 4
3.1 处理流程和数据流程... 4
3.2 费用支出... 4
3.3设备... 4
4. 所建议系统的技术可行性分析... 4
4.1 系统的概要说明... 5
4.2 处理流程和数据流程... 5
4.3 与现有系统比较的优越性... 5
4.4 所建议系统将来可能带来的影响... 5
4.5 技术可行性评价... 6
5. 所建议系统经济可行性评价... 6
5.1 支出... 6
5.2 收入... 6
5.3 投资回收期... 6
5.4 敏感性分析... 6
6. 社会因素方面的可行性分析... 6
6.1 法律因素... 6
6.2 用户使用可行性... 7
7. 结论意见... 7
1. 引言
1.1 编写目的
方便用户及管理员的使用方便。
适用对象有图书馆管理员及学生等。
1.2 项目背景
开发软件名称:图书管理系统。
项目开发者:**大学计算机科学系“图书管理系统”开发小组
用户单位:**图书馆
1.3 定义
实体:客观世界中存在的且可互相区别的事物。
联系:客观事物中的彼此之间的关系。
属性:实体或者联系所具有的性质。
管理员:指日常管理维护本软件的管理人员或图书馆主管单位的领导。
1.4 参考资料
(1)卫红春,朱欣娟编著,信息系统分析与设计(第二版),西安电子科技大学出版社,2007
(2)杨选辉编著,信息系统分析与设计,清华大学出版社,2007。
。
2. 可行性研究的前提
2.1 要求
要求该系统可以完成读者登记、购入新书、读者借书、读者还书、图书注销等功能。读者登记时要为读者编制读者卡片,包括读者的具体信息(读者编号,姓名,学院,专业,年纪等),写入读者目录文件中。购入新书时要为该书编制图书卡片,包括分类目录号、流水号(唯一)书名、作者、内容摘要、价格和购书日期等信息,写入图书目录文件中。读者借书时,先检查该读者是否是有效的读者,若无效则拒绝借书,否则检查该读者所借图书是否超过最大限制数(根据情况自定)以及有未归还的过期图书,否则拒绝借书。查找该图书是否还有,如果有则可以借出,登记图书分类号、读者号和借阅日期等。读者还书时,根据流水号,从借书文件中读出有关记录,表明还书日期,如果图书过期,则处以罚款,并打印罚款单。在某些情况下,需要对图书馆的图书进行清理工作,对无价值的和过时的图书要注销。咨询要求分为查询某位读者、某种图书和全局图书三种情况。可以打印读者和图书情况统计表。
2.2 目标
系统目标:建立一个能灵敏、高效、全面提高公司运营、仓储管理信息系统,促进物流、资金流、信息流三流的管理上的集成;辅助管理决策者及时、准确地做出决策。
(1)实现仓储业务全面计算机处理,提高公司的工作效率和工作质量,减少人力资源与设备费用、提高处理速度、提高控制精度或生产能力。
(2)及时提供仓储业务的统计信息,自动决策系统的改进,提高管理水平。
(3)与供应商共享信息,满足供应链中对各项信息处理的准确性、一致性、时效性和灵敏性的要求。
2.3 条件、假定和限制
(1)建议软件寿命:10年。
(2)经费来源:企业。
(3)硬件条件:服务器sun工作站,终端为pc机。
(4)运行环境:Microsoft Windows 2000以及其后继操作系统
(5)数据库:SQL Server 2000
2.4 评价的尺度
(1)经济可行性分析:从支出、收益以及两者之间的关系来分析,还需要进行投资回收期分析、敏感性分析;
(2)技术可行性分析:对提出的主要技术路线进行分析;
(3)社会可行性分析:从组织内外部的社会环境入手来分析,如系统在法律方面和使用方面的可行性。
(4)用户使用可行性:使用本软件人员要求有一定计算机基础的人员,系统管理员要求由计算机的专业知识,所有人员都要经过本公司培训。管理人员也需经一般培训,经过培训人员将会熟练使用本软件,两名系统管理,一名审计员将进行专业培训,他们将熟练管理本系统。
3.对现有系统的分析
3.1 处理流程和数据流程
可用系统流程图和数据流图进行描述。
3.2 费用支出
(1)固定成本:设备维护费用、人员基本工资以及办公用品、水电费等费用。
(2)可变成本:车辆油费、车辆维修费用、人员奖金。
3.3设备
现有系统的设备主要包括:
(1)电话机、复印机、传真机等通讯设备。
(2)用于单据、数据处理的计算机及网络。
4. 所建议系统的技术可行性分析
4.1 系统的概要说明
文件模块:此模块实现本系统对数据的打开、保存、打印预览、打印及用户管理等功能,并可由此退出系统。
信息管理模块:此模块实现系统的信息管理,包括对图书情况一览表、图书借入借出情况表其它各表的信息数据的插入、删除、修改、保存等功能。
查询模块:此模块实现本系统的查询功能,能将图书的基本情况、借入借出情况等检索出来,并可实现多条件查询和模糊查询。
统计模块:此模块用于对数据库中的信息数据按照一定的规则进行统计。
系统服务模块:此模块用来系统管理人员设密码和对系统的功能和开发信息进行介绍等
4.2 处理流程和数据流程
4.3 与现有系统比较的优越性
与传统手工管理相比,适用本系统可以降低管理成本,更加方便、快捷的对图书进行管理。
4.4 所建议系统将来可能带来的影响
(1)对设备的影响
1.添置条形码系统:
操作自动化就要求有先进的货物识别技术,在这方面,我们选用条形码系统。该技术与RFID相比更为成熟,改造项目所使用的普通条码,错误率仅为0.0002%;而RFID为10%。同样,普通条码的成本也大大低于RFID。一张条形码的成本不过5分钱,而一个RFID芯片就要1美元,约为7元人民币。
2.添置PC机信息处理平台:
考虑整条供应链都没有EDI系统,新建一套价格非常昂贵。而且这个信息系统以企业现有pc已经足够胜任,企业至多新增一台备份数据用机。所以,这里选用pc机作为信息系统处理平台。
(2)对软件的影响
实施系统,需要首先在操作系统中安装SQL Server数据库与.NET软件平台。
(3)对用户的影响
1.员工适应方面,员工与新的流程接轨需要一段时间,并会付出一定成本,但好在财务方面并不紧张。
2.岗位方面,新增了的系统管理员需要专业知识,可从重新培训而来。
3.员工士气方面,优秀的管理方法可以让管理人员更加轻松,工作更加有积极性。
(4)对系统运行的影响
系统运行基于windows系统,服务器基于windows系统,数据库平台为SQL Server2000。
(5)对开发环境的影响
系统开发周期约为1个月,开发人员约为3人。开发人员需要对图书管理业务流程全面了解。
(6)对地点和设施的影响
完全不需要重新布局。
(7)对经费支出的影响
1.信息系统的成本:
硬件、外部设备:12000元左右
2.其他成本:
开发人员工资:2000*3=6000元
维护:600元/年
管理人员工资:600*2=1200元/月
4.5 技术可行性评价
使用C#语言开发winform开发,使用mySQL数据库储存数据,在现有技术下可以达到要求,并且能够完成用户要求,对开发人员数量要求不多,但要求掌握一上技术。没有不可抗因素,开发能够按时完成。
5. 所建议系统经济可行性评价
5.1 支出
硬件、外部设备(高性能计算机一台、打印机一台):1.2万元左右,
开发费用:3*2000=6000元
开发完成后维护费用:每年约600元,
管理人员:2*600元=1200元。
5.2 收入
(1)应用此系统后可直接削减图书馆管理人员。削减2人计算,每人每月工资600,则每年直接减少支出7200元,按十年计算收入72000元。
(2)可产生不可定量的收益,如社会效益,这是不可估量的。
5.3 投资回收期
约两年可收回成本
5.4 敏感性分析
该系统操作简单,开发完善,预计使用年限为10年,对硬件有较低要求。故只需要在操作时注意保护硬件设备即可。
6. 社会因素方面的可行性分析
6.1 法律因素
所有软件都选用正版。
所有技术资料都由提出方保管。
合同制定确定违约责任。
6.2 用户使用可行性
使用本软件人员要求有一定计算机基础的人员,系统管理员要求由计算机的专业知识,所有人员都要经过本公司培训。
管理人员也需经一般培训。
经过培训人员将会熟练使用本软件。
两名系统管理员,一名审计员将进行专业培训,他们将熟练管理本系统。
7. 结论意见
由于投资效益比远大于100%, 技术、经济、操作都有可行性,可以进行开发。
第二篇:图书管理系统
摘 要
图书是人类用来纪录一切成就的主要工具,也是人类交融感情,取得知识,传承经验的重要媒介,对人类文明的开展,贡献至钜。所以,无论古今中外,对于图书,人们总给予最高的肯定与特别的关怀。如何获取信息?图书是我们最好的获取信息的方式,所以可以随处见到各种各样的图书,但由于图书图书收藏量也大增加,使传统的图书管理员的工作日益繁重起来。迫使人们起用新的管理方法来管理图书,如何把图书管理员从繁重的工作中解脱出来呢?
科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。信息化时代的到来成为不可抗拒的潮流,人类文明正在进入一个崭新的时代。因此,图书管理系统也以方便、快捷、费用低的优点正慢慢地进入人们的生活,将传统的手工图书管理方式彻底的解脱出来,提高效率,减轻人们以往繁忙的工作,减小出错的概率,使人们可以花更多的时间在自己喜欢的书上。从而使人们更好的获取信息、了解信息、掌握信息
图书管理系统是典型的信息管理系统(MIS),其开发主要包括前台应用程序的开发以及后台数据库的建立和维护两个方面。对于前者则要求应用程序功能完备,易使用等特点。而对于后者要求建立起数据一致性和完整性强、数据安全性好的库。因此本人结合图书管理的要求,对数据库管理系统、JAVA应用程序设计,对数据库技术进行了较深入的学习和应用,主要完成对图书管理系统的需求分析、功能模块划分、数据库模式分析,并由此设计了数据库结构和应用程序。系统运行结果证明,本文所设计的图书管理系统可以满足个人图书管理的需要。实现了数据库表的浏览,记录的添加、删除和修改,实现了多种条件查询。设计充分利用JAVA、Microsoft Office Access数据库技术的强大力量,提高了编程效率和可靠性
绪论
1.1研究背景与研究意义
1.1.1研究背景
本图书管理系统是针对小型图书馆的日常图书管理而开发的管理软件。根据人们借阅的需求,实现图书、读者之间的有序化,信息化管理。本系统主要由这几个模块组成:图书查询、图书入库、图书删除、图书概览等。
图书管理系统通过录入图书的详细资料,设置各类参数(如:超期期限、读者类别、图书类别等等),找出图书与读者之间的对应关系,实现日常的借阅操作。基于得到的这些基础数据,系统自行生成相应的统计数据以供管理员查询、分析;另外,管理员还可以对这些基本信息进行定期的数据更新和数据库维护;为读者借阅时提供图书是否在馆,以及自己借书、还书等情况的查询功能,图书管理系统力求给图书管理员提供操作简单、方便快捷的途径去管理这些庞大,繁琐的信息和图书。
1.1.2研究意义
随着计算机应用在全球范围内日益普及,当今社会正快速向信息化、电脑化社会前进,信息自动化的作用也越来越大。从而使我们从繁杂的事务中解放出来,提高了我们的工作效率。
鉴于目前某些图书的借阅工作还是手工管理,工作效率很低,并且不能及时了解人们们的需求的图书等,不能更好的适应当前人们的要求。手工管理还存在这许多弊端,由于不可避免的人为因素,造成数据的遗漏。计算机信息化管理有着储存量大,速度快等许多优点,提供给我们的处理信息及时快捷。
1.2.2可行性分析
本次毕业设计题目:“图书管理系统”主要目的是利用数据库软件编制一个管理软件,用以实现图书老板(管理员)对图书多项管理。同时对整个系统的分析、设计过程给出一个完整论证。
图书管理系统是一种基于集中统一规划的数据库数据管理新模式。在对图书、人们的管理,其实是对图书、人们数据的管理。本系统的建成无疑会为图书老板(管理员)提供极大的帮助。
本系统的设计主要从以下几方面做起:系统业务流程分析、系统的功能设计、系统的数据库结构设计、系统输入/输出设计等。作这些工作需对数据库知识有足够认识,并深入的了解Eclipse3.6的使用和管理系统的相关知识。
在信息时代的今天,人类需要对在政治、经济、军事、文化、科研、教育等领域产生的大量信息进行管理,并对数据进行加工处理,数据库技术则是信息管理与数据处理的先进技术。随着信息量的不断增加,作为计算机的三大主要应用(科学计算、过程控制和数据处理)之一的数据处理,已迅速上升为计算机应用的主要方面,数据库技术则成为人们日常生活中处理数据不可缺少的有力工具,并且现代的信息管理系统几乎都以数据库技术作为核心。 一、系统开发技术介绍
1.1 Java简介
Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新。
Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。
Java分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。
1.2 ODBC定义
开放数据库互连(Open Database Connectivity,ODBC)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。
1.3 Microsoft Office Access简介
Microsoft Office Access是由微软发布的关联式数据库管理系统。它结合了 Microsoft Jet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程式之一。
Microsoft Access在很多地方得到广泛使用,例如小型企业,大公司的部门,和喜爱编程的开发人员专门利用它来制作处理数据的桌面系统。它也常被用来开发简单的WEB应用程序.这些应用程序都利用ASP技术在Internet Information Services运行.比较复杂的WEB应用程序则使用PHP/MySQL或者ASP/Microsoft SQL Server.
它的使用方便程度和强大的设计工具为初级程序员提供许多功能。不过,这种便于使用可能使人误解。这类开发者都是没有在应用或者数据设计方面训练的办公室从业人员。因此许多人以为这样的开发者能够创造可用的系统,但也有很多人认为工具本身的局限性产生了这样的误导。
一些专业的应用程序开发人员使用 Access 用作快速应用开发,特别是给街道上的推销员制作一个初型或独立应用程序的工具。可是如果是透个网络存取数据的话,Access 的可扩放性并不高.因此当程序被较多使用者使用时,他们的选择多会是倾向于一些客户端-服务器为本的方案,例如 Oracle、DB2、Microsoft SQL Server、Windows SharePoint Services、PostgreSQL、MySQL、Alpha Five、MaxDB,或者Filemaker。无论如何,不少 Access 的功能(表单,报告,序列和VB代码)可以用作其他数据库的后期应用,包括 JET(档案为主的数据库引擎,Access 缺省使用)、Microsoft SQL Server、Oracle和任何其他跟ODBC兼容的产品。这种方法允许开发者把一个成熟的应用的数据移动到一台更大功率的服务器而没有已经在适当的位置牺牲发展
1.4 开发环境
开发软件: Eclipse3.6.2
JDK1.6.0.24
操作系统:32位windows XP SP3
Microsoft Office Access 2003
二、系统实现
2.1 系统总体结构设计
系统共有4个功能模块:图书入库、图书查询、图书删除、图书概览、修改密码。支持一系列关于图书管理方面的简单操作,诸如查询、删除、添加、修改密码等
2.2数据库设计设计
在图书管理系统中,共设计2张表。本系统使用Access来创建数据表。数据库的名称Book.mdb。
2.3系统源代码
1登陆界面:程序名Login.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.util.*;
import java.sql.*;
class Login extends JFrame implements ActionListener
{ Container cp=null;
JFrame f=null;
JButton j1,j2;
JTextField t1;
JPasswordField t2;
JLabel jlable1,jlable2;
Color c;
JPanel jp1,jp2;
Login(){
f=new JFrame("小型图书管理系统");
j1=new JButton("确定");
j2=new JButton("取消");
cp=f.getContentPane();
jlable1=new JLabel(" 输入用户名");
jlable2=new JLabel(" 用户密码");
jp1=new JPanel();
jp2=new JPanel();
t1=new JTextField(18);
t2=new JPasswordField(18);
jp1.add(jlable1);
jp1.add(t1);
jp1.add(jlable2);
jp1.add(t2);
JLabel JL=new JLabel("<html><font color=#CC00FF size='7'><i>欢迎登陆</i></font>",SwingConstants.CENTER);
cp.add(JL,"North");
jp2.add(j1);
jp2.add(j2);
cp.add(jp1,"Center");
cp.add("South",jp2);
jp1.setBackground(new Color(255,153,255));
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
//setSize(x,y); /*让系统窗口平铺整个显示器窗口*/
f.setSize(300,300);
int xcenter=(x-300)/2;
int ycenter=(y-300)/2;
f.setLocation(xcenter,ycenter);/*显示在窗口中央*/
f.setVisible(true);
//-----------------------------------------------------
j1.addActionListener(this);//注册事件监听器
j2.addActionListener(this);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);
}
public void confirm()//验证用户和密码是否存在
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
Statement sql=con.createStatement();
String uname=t1.getText().trim();
String Mima=t2.getText().trim();
String queryMima="select * from user where 用户名='"+uname+"' and 密码='"+Mima+"'";
ResultSet rs=sql.executeQuery(queryMima);
if(rs.next())
{
new Book(uname);
f.hide();
con.close();
}else{
JOptionPane.showMessageDialog(null,"该用户不存在","提示!",
JOptionPane.YES_NO_OPTION);
}
t1.setText("");
t2.setText("");
} catch(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("确定")){
confirm();
}
else if(cmd.equals("取消")){
f.dispose();
}
}
public static void main(String []arg){
Login a=new Login();
}
}
2图书概览:程序名BookBrower.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.util.*;
import java.sql.*;
class BookBrower implements ActionListener
{
JFrame f;
Container cp;
JPanel jpS,jpanelWest;
JButton jbt1,jbt2;//按钮,查询、取消、修改
JLabel label,L; //标签
//定义文本框
JTable table;//用来接收数据库中返回的信息
Object columnName[]={"图书名","图书号","单价","作者","出版社","入库时间"};
Object ar[][] =new Object[80][6];
String sno;
String count="xx";
BookBrower()
{
f=new JFrame();
cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框
jpS=new JPanel();
jpanelWest=new JPanel();
//------------------------------------------------
jbt1=new JButton("确定");
jbt2=new JButton("返回");
//------------------------------------------------
label=new JLabel("<html><font color=#CC00FF size='4'>图书概览</font>",SwingConstants.CENTER);
label.setForeground(Color.blue);
L=new JLabel("书库现在共有图书"+count+"本");
//------------------------------------------------
table=new JTable(ar,columnName);//ar存放表中的数据,columnname表示列名
JScrollPane scrollpane = new JScrollPane(table);
//------------------------------------------------
//布局,添加控件
jpS.add(jbt1);
jpS.add(jbt2);
JPanel jpanel=new JPanel();
jpanel.add(label);
JPanel pp4=new JPanel();
JPanel jpE=new JPanel();
cp.add(jpanel,"North");
JPanel jp=new JPanel();
//jp.add(scrollpane);
JPanel p=new JPanel();//用来放两个表
p.setLayout(new BorderLayout());
p.add(L,"North");
p.add(scrollpane);
cp.add(pp4,"West");
cp.add(p,"Center");
cp.add(jpS,"South");
cp.add(jpE,"East");
//------------------------------------------------
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
f.setSize(400,330);
int xcenter=(x-350)/2;
int ycenter=(y-330)/2;
f.setLocation(xcenter,ycenter);/*显示在窗口中央*/
f.setVisible(true);
//-------------------------------------------------
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
/* f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);*/
}
//------------------------------------------------
int i=0;
public void showRecord()
{
while(i>=0)
{
ar[i][0]="";
ar[i][1]="";
ar[i][2]="";
ar[i][3]="";
ar[i][4]="";
ar[i][5]="";
i--;
}
i=0;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
String s="select * from book ";
Statement sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
while(rs.next())
{
String bname=rs.getString(1);
String bno=rs.getString(2);
String price=rs.getString(3);
String writer=rs.getString(4);
String publish=rs.getString(5);
String indate=rs.getString(6);
ar[i][0]=bname;
ar[i][1]=bno;
ar[i][2]=price;
ar[i][3]=writer;
ar[i][4]=publish;
ar[i][5]=indate;
i++;
}
count=""+i+"";
L.setText("书库现在共有图书"+count+"本");
f.repaint();
con.close();
}catch(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("确定"))
{
f.hide();
}
if(cmd.equals("返回"))
f.hide();
}
public static void main(String []arg){
BookBrower a=new BookBrower();
a.showRecord();
}
}
3图书查询:程序名QueryBook.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.util.*;
import java.sql.*;
class QueryBook implements ActionListener
{
JFrame f3;
Container cp;
JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;
JButton jbt1,jbt2;//按钮,确定、取消
JLabel label; //标签:请输入图书号
JTextField tf,tf1,tf2,tf3,tf4,tf5,tf6; //定义文本框
JLabel label1,label2,label3,label4;
QueryBook()
{
f3=new JFrame();
cp=f3.getContentPane(); // 初始化面板、按钮、标签、文本框
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
jp4=new JPanel();
jpanelWest=new JPanel();
jp=new JPanel();
//------------------------------------------------
jbt1=new JButton("确定");
jbt2=new JButton("取消");
//------------------------------------------------
label=new JLabel("<html><font color=#CC00FF size='4'>请输入图书号:</font>",SwingConstants.CENTER);
label.setForeground(Color.blue);
tf=new JTextField(20);
//------------------------------------------------
tf1=new JTextField(20);
tf2=new JTextField(20);
tf3=new JTextField(20);
tf4=new JTextField(20);
tf5=new JTextField(20);
tf6=new JTextField(20);
//------------------------------------------------
//布局,添加控件
JPanel jpanel=new JPanel();
jpanel.add(label);
jpanel.add(tf);
JPanel pp4=new JPanel();
JPanel jpane4=new JPanel();
cp.add(jpanel,"North");
JPanel pp2=new JPanel(new GridLayout(6,1));
JPanel pp3=new JPanel();
pp4.setLayout(new GridLayout(6,1));
pp4.add(new JLabel("图书名",SwingConstants.CENTER));
pp2.add(tf1);
pp4.add(new JLabel("图书号",SwingConstants.CENTER));
pp2.add(tf2);
pp4.add(new JLabel("单 价",SwingConstants.CENTER));
pp2.add(tf3);
pp4.add(new JLabel("作 者",SwingConstants.CENTER));
pp2.add(tf4);
pp4.add(new JLabel("出版社",SwingConstants.CENTER));
pp2.add(tf5);
pp4.add(new JLabel("入库时间",SwingConstants.CENTER));
pp2.add(tf6);
pp3.add(jbt1);
pp3.add(jbt2);
cp.add(pp4,"West");
cp.add(pp2,"Center");
cp.add(pp3,"South");
cp.add(jpane4,"East");
//------------------------------------------------
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
f3.setSize(350,330);
int xcenter=(x-350)/2;
int ycenter=(y-330)/2;
f3.setLocation(xcenter,ycenter);/*显示在窗口中央*/
f3.setVisible(true);
//-------------------------------------------------
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
/*f3.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);*/
}
//------------------------------------------------
public void showRecord()
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
Statement sql;
String ql=tf.getText().trim();
String s="select * from book where 图书号 ='"+ql +"'";
sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
if(rs.next())
{
String bname=rs.getString(1);
String bno=rs.getString(2);
String price=rs.getString(3);
String writer=rs.getString(4);
String publish=rs.getString(5);
String indate=rs.getString(6);
tf1.setText(bname);
tf2.setText(bno);
tf3.setText(price);
tf4.setText(writer);
tf5.setText(publish);
tf6.setText(indate);
}
else
{JOptionPane.showMessageDialog(null,"您输入的图书号不存在,请重新输入",
"输入错误", JOptionPane.YES_NO_OPTION);
}
con.close();
}catch(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
tf1.setEditable(false);
tf2.setEditable(false);
tf3.setEditable(false);
tf4.setEditable(false);
tf5.setEditable(false);
tf6.setEditable(false);
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("确定"))
{
showRecord();
tf.setText("");
}
else if(cmd.equals("取消"))
f3.hide();
}
public static void main(String []arg){
QueryBook a=new QueryBook();
}
}
4图书删除:程序名RemoveBook.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.util.*;
import java.sql.*;
class RemoveBook implements ActionListener
{
JFrame f;
Container cp;
JPanel jpS,jpanelWest;
JButton jbt1,jbt2,jbt3;//按钮,查询、取消、修改
JLabel label,L; //标签:请输入学号
JTextField tf; //定义文本框
JTable table;//用来接收数据库中返回的信息
Object columnName[]={"图书名","图书号","单价","作者","出版社","入库时间"};
Object ar[][] =new Object[80][6];
String sno;
String count="xx";
RemoveBook()
{
f=new JFrame();
cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框
jpS=new JPanel();
jpanelWest=new JPanel();
//------------------------------------------------
jbt1=new JButton("查询");
jbt2=new JButton("取消");
jbt3=new JButton("删除");
//------------------------------------------------
label=new JLabel("<html><font color=#CC00FF size='4'>请输入要删除的图书名:</font>",SwingConstants.CENTER);
label.setForeground(Color.blue);
L=new JLabel("该种图书共有"+count+"本");
//------------------------------------------------
table=new JTable(ar,columnName);//ar存放表中的数据,columnname表示列名
JScrollPane scrollpane = new JScrollPane(table);
//------------------------------------------------
tf=new JTextField(18);
//------------------------------------------------
//------------------------------------------------
//布局,添加控件
jpS.add(jbt1);
jpS.add(jbt2);
jpS.add(jbt3);
JPanel jpanel=new JPanel();
jpanel.add(label);
jpanel.add(tf);
JPanel pp4=new JPanel();
JPanel jpE=new JPanel();
cp.add(jpanel,"North");
JPanel jp=new JPanel();
//jp.add(scrollpane);
JPanel p=new JPanel();//用来放两个表
p.setLayout(new BorderLayout());
p.add(L,"North");
p.add(scrollpane);
cp.add(pp4,"West");
cp.add(p,"Center");
cp.add(jpS,"South");
cp.add(jpE,"East");
//------------------------------------------------
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
f.setSize(400,330);
int xcenter=(x-350)/2;
int ycenter=(y-330)/2;
f.setLocation(xcenter,ycenter);/*显示在窗口中央*/
f.setVisible(true);
//-------------------------------------------------
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
jbt3.addActionListener(this);
/*f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);*/
}
//------------------------------------------------
int i=0;
public void showRecord(String ql)
{
while(i>=0)
{
ar[i][0]="";
ar[i][1]="";
ar[i][2]="";
ar[i][3]="";
ar[i][4]="";
ar[i][5]="";
i--;
}
i=0;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
Statement sql;
String s="select * from book where 图书名 ='"+ql +"'";
sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
while(rs.next())
{
String bname=rs.getString(1);
String bno=rs.getString(2);
String price=rs.getString(3);
String writer=rs.getString(4);
String publish=rs.getString(5);
String indate=rs.getString(6);
ar[i][0]=bname;
ar[i][1]=bno;
ar[i][2]=price;
ar[i][3]=writer;
ar[i][4]=publish;
ar[i][5]=indate;
i++;
}
count=""+i+"";
L.setText("该种图书共有"+count+"本");
f.repaint();
con.close();System.out.println(ar[0][1]);
}catch(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
public void deleteRecord(int index)
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
Statement sql;
String ql=(String)(ar[index][1]);
String s="delete * from book where 图书号 ='"+ql +"'";
sql=con.createStatement();
int del=sql.executeUpdate(s);
if(del==1)
{JOptionPane.showMessageDialog(null,"删除成功!",
"信息", JOptionPane.YES_NO_OPTION);
}
con.close();
f.repaint();
}catch(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
public void actionPerformed(ActionEvent e)
{
String remember="";
String ql="";
String cmd=e.getActionCommand();
if(cmd.equals("查询"))
{
ql=tf.getText().trim();
remember=ql;
showRecord(ql);
}
if(cmd.equals("删除"))
{
int index=table.getSelectedRow();
if( index==-1)
JOptionPane.showMessageDialog(null,"请选定要删除的表格行",
"输入错误", JOptionPane.YES_NO_OPTION);
else{
deleteRecord(index);
//showRecord(remember);
}
}
if(cmd.equals("取消"))
f.hide();
}
public static void main(String []arg){
RemoveBook a=new RemoveBook();
}
}
5图书入库:程序名BookIn.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.util.*;
import java.sql.*;
import javax.swing.text.JTextComponent;
//extends JFrame
class BookIn implements ActionListener
{
JFrame f3;
Container cp;
JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;
JButton jbt1,jbt2;//按钮:确定、取消、
JLabel label; //标签
JTextField tf1,tf2,tf3,tf4,tf5,tf6; //定义文本框
JLabel label1,label2,label3,label4;
String sno;
BookIn()
{
f3=new JFrame();
cp=f3.getContentPane(); // 初始化面板、按钮、标签、文本框
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
jp4=new JPanel();
jpanelWest=new JPanel();
jp=new JPanel();
//------------------------------------------------
jbt1=new JButton("确定");
jbt2=new JButton("取消");
//------------------------------------------------
label=new JLabel("<html><font color=#CC00FF size='4'>图书入库</font>",SwingConstants.CENTER);
label.setForeground(Color.blue);
//------------------------------------------------
tf1=new JTextField(20);
tf2=new JTextField(20);
tf3=new JTextField(20);
tf4=new JTextField(20);
tf5=new JTextField(20);
tf6=new JTextField(20);
//------------------------------------------------
//布局,添加控件
jp1.add(jbt1);
jp1.add(jbt2);
sno=tf4.getText();
jp1.add(new JLabel("您好"+sno+"欢迎登陆学生信息系统"));
JPanel jpanel=new JPanel();
jpanel.add(label);
JPanel pp4=new JPanel();
JPanel jpane4=new JPanel();
cp.add(jpanel,"North");
JPanel pp2=new JPanel(new GridLayout(6,1));
JPanel pp3=new JPanel();
pp4.setLayout(new GridLayout(6,1));
pp4.add(new JLabel("图书名",SwingConstants.CENTER));
pp2.add(tf1);
pp4.add(new JLabel("图书号",SwingConstants.CENTER));
pp2.add(tf2);
pp4.add(new JLabel("单 价",SwingConstants.CENTER));
pp2.add(tf3);
pp4.add(new JLabel("作 者",SwingConstants.CENTER));
pp2.add(tf4);
pp4.add(new JLabel("出版社",SwingConstants.CENTER));
pp2.add(tf5);
pp4.add(new JLabel("入库时间",SwingConstants.CENTER));
pp2.add(tf6);
pp3.add(jbt1);
pp3.add(jbt2);
cp.add(pp4,"West");
cp.add(pp2,"Center");
cp.add(pp3,"South");
cp.add(jpane4,"East");
//------------------------------------------------
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
f3.setSize(350,330);
int xcenter=(x-350)/2;
int ycenter=(y-330)/2;
f3.setLocation(xcenter,ycenter);/*显示在窗口中央*/
f3.setVisible(true);
//-------------------------------------------------
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
/*f3.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);*/
}
//------------------------------------------------
public void insertRecord()
{
if(tf1.getText().equals("")||tf2.getText().equals("")||tf3.getText().equals("")||
tf4.getText().equals("")||tf5.getText().equals("")||tf6.getText().equals(""))
{
JOptionPane.showMessageDialog(f3,"请填写图书资料");
return;
}
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
Statement sql;
String s="insert into book values('"+tf1.getText()+"','"+tf2.getText()+"','"+
tf3.getText()+"','"+tf4.getText()+"','"+tf5.getText()+"','"+tf6.getText()+"');";
//查询输入的图书号是否在数据库中存在
String query="select * from book where 图书号='"+tf2.getText()+"'";
sql=con.createStatement();
ResultSet rs=sql.executeQuery(query);//返回查询结果集
boolean moreRecords=rs.next();//判断结果集是否有数据
if(moreRecords)
{
JOptionPane.showMessageDialog(f3,"图书号已经被使用,请重新输入");
con.close();
tf2.setText("");
return;
}
int insert=sql.executeUpdate(s);
if(insert==1)
{
JOptionPane.showMessageDialog(null,"图书信息录入成功!");
tf1.setText("");
tf2.setText("");
tf3.setText("");
tf4.setText("");
tf5.setText("");
tf6.setText("");
}
}catch(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("确定"))
{
insertRecord();
}
else if(cmd.equals("取消"))
f3.hide();
}
public static void main(String []arg){
BookIn a=new BookIn();
}
}
6主界面:程序名Book.java
/*本类为用户界面*/
import java.net.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;import java.util.*;
class Book extends JFrame implements ActionListener
{
JButton QueryScore=new JButton("图书查询");
JButton QueryXuefen=new JButton("图书入库");
JButton jiangfa=new JButton("图书删除");
JButton xuanke=new JButton("图书概览");
JButton gaiMima=new JButton("修改密码");
JMenuBar mb = new JMenuBar();//菜单栏
JPanel jp=new JPanel();//用来填放子模块
Container cp=getContentPane();
String username;
Book(){}
Book(String username)
{
this.username=username;
mb.add(QueryScore);
mb.add(QueryXuefen);
mb.add(jiangfa);
mb.add(xuanke);
mb.add(gaiMima);
cp.add(mb,"North");
// 设置边框
jp.setBorder(BorderFactory.createTitledBorder(BorderFactory
.createLineBorder(Color.blue, 2),null,
TitledBorder.CENTER, TitledBorder.TOP));
jp.setLayout(new BorderLayout());
JLabel label1 = new JLabel(new ImageIcon("4.jpg"));
jp.add(label1);
/* JLabel JL=new JLabel("<html><font color=#CC00FF size='7'><i>欢迎登陆</i></font>",SwingConstants.CENTER);
jp.add(JL,"North");*/
JLabel label2 = new JLabel(new ImageIcon("2.jpg"));
//jp.add(label2,"South");
JScrollPane scrollpane=new JScrollPane(jp);
cp.add(scrollpane);
setTitle("欢迎登陆");
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
//setSize(x,y); /*让系统窗口平铺整个显示器窗口*/
setSize(600,600);
int xcenter=(x-600)/2;
int ycenter=(y-600)/2;
setLocation(xcenter,ycenter);/*显示在窗口中央*/
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//注册临听器
QueryScore.addActionListener(this);
QueryXuefen.addActionListener(this);
jiangfa.addActionListener(this);
xuanke.addActionListener(this);
gaiMima.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if (cmd.equals("图书查询"))
{
new QueryBook();
}
if (cmd.equals("图书入库"))
{
new BookIn();
}
if (cmd.equals("图书删除"))
{
new RemoveBook();
}
if (cmd.equals("图书概览"))
{
new BookBrower().showRecord();
}
if (cmd.equals("修改密码"))
{
new UpdateMima(username);
}
}
public static void main(String[]args)
{
new Book("");
}
}
7.密码修改:程序名UpdateMima.java
import java.net.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
class UpdateMima extends JFrame implements ActionListener
{
JFrame f;
Container cp;
JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;
JButton jbt1,jbt2;//按钮,确定、取消
JLabel label; //标签:修改密码
JTextField name;
JPasswordField tf1,tf2,tf3; //定义文本框
JLabel label1,label2,label3,label4;
String sno;
UpdateMima(){}
UpdateMima(String username)
{
sno=username;
f=new JFrame();
cp=f.getContentPane(); // 初始化
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
jp4=new JPanel();
jpanelWest=new JPanel();
jp=new JPanel();
//------------------------------------------------
jbt1=new JButton("确定");
jbt2=new JButton("取消");
//------------------------------------------------
label=new JLabel("<html><font color=#CC00FF size='4'>修改密码</font>",SwingConstants.CENTER);
label.setForeground(Color.blue);
label.setFont(new Font("BOLD",Font.BOLD,15));
name=new JTextField(20);
//name.setEditable(false);
//------------------------------------------------
tf1=new JPasswordField(20);
tf2=new JPasswordField(20);
tf3=new JPasswordField(20);
//------------------------------------------------
//布局,添加控件
jp1.add(jbt1);
jp1.add(jbt2);
jp1.add(new JLabel("您好"+"xx"+"欢迎登陆学生信息系统"));
JPanel jpanel=new JPanel();
jpanel.add(label);
JPanel pp4=new JPanel();
JPanel jpane4=new JPanel();
cp.add(jpanel,"North");
JPanel pp2=new JPanel(new GridLayout(6,1));
JPanel pp3=new JPanel();
pp4.setLayout(new GridLayout(6,1));
pp4.add(new JLabel("用户名: ",SwingConstants.RIGHT));
pp2.add(name);
pp4.add(new JLabel("原密码: ",SwingConstants.RIGHT));
pp2.add(tf1);
pp4.add(new JLabel(" 新密码: ",SwingConstants.RIGHT));
pp2.add(tf2);
pp4.add(new JLabel("确认密码: ",SwingConstants.RIGHT));
pp2.add(tf3);
pp2.add(new JLabel());
JPanel jpbutton=new JPanel();
jpbutton.add(jbt1);
jpbutton.add(jbt2);
pp2.add(jpbutton);
//pp3.add(jbt1);
//pp3.add(jbt2);
cp.add(pp4,"West");
cp.add(pp2,"Center");
//cp.add(pp3,"South");
cp.add(jpane4,"East");
//------------------------------------------------
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height;
f.setSize(350,330); /*取得显示器窗口的高度*/
int xcenter=(x-350)/2;
int ycenter=(y-330)/2;
f.setLocation(xcenter,ycenter);/*显示在窗口中央*/
//f.setTitle("修改密码");
f.setVisible(true);
//-------------------------------------------------
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
/*f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);*/
}
public void updateM()
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
Statement sql=con.createStatement();
String uname=name.getText().trim();
String queryMima="select * from user where 用户名='"+uname+"'";
ResultSet rs=sql.executeQuery(queryMima);
if(rs.next())
{
String newMima=tf2.getText().trim();
String s="update user set 密码='"+newMima+"' where 用户名 ='"+uname +"'";
sql=con.createStatement();
int updateMima=sql.executeUpdate(s);
if(updateMima==1)
{
JOptionPane.showMessageDialog(f,"密码修改成功!");
}
con.close();
f.repaint();
}else{
JOptionPane.showMessageDialog(null,"该用户不存在","警告!",
JOptionPane.YES_NO_OPTION);
}
name.setText("");
tf1.setText("");
tf2.setText("");
tf3.setText("");
} catch(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
//------------------------------------------------
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("确定"))
{
if(name.getText().equals("")||tf1.getText().equals("")||tf2.getText().equals("")||tf3.getText().equals(""))
{
JOptionPane.showMessageDialog(null,"请填写用户的所有信息","提示",
JOptionPane.YES_NO_OPTION);
return;
}
if(tf2.getText().trim().equals(tf3.getText().trim()))
updateM();
}
else if(cmd.equals("取消"))
f.hide();
}
public static void main(String[]args)
{
new UpdateMima("");
}
}
三、系统实览
主界面
图书查询
图书入库
图书删除
图书概览
修改密码