文档库 最新最全的文档下载
当前位置:文档库 › Javaee图书馆管理系统

Javaee图书馆管理系统

Javaee图书馆管理系统
Javaee图书馆管理系统

C H A N G

Z H

O U U N I V

E

R S I T Y

实 验 报 告

实验课程名称: JAVAEE 应用程序开发

本次实验名称为: 图书馆管理系统

学 生 姓 名: 张铭烨 班 级 中加132

学 号:13416418

学 院(系): 国际教育交流学院 指 导 教 师:倪彤光

目录

1. 实验目的 (3)

2. 功能模块图 (3)

3 详细设计 (6)

3.1 主界面 (6)

3.2 读者管理模块功能实现 (6)

3.3 书籍管理模块功能实现 (7)

3.4 书籍借阅与归还功能实现 (9)

4. 数据库设计 (10)

4.1 概念结构设计 (10)

4.2 逻辑结构设计 (11)

4.3 数据库表的建立 (12)

5系统实现 (18)

5.1. 数据库的连接 (18)

5.2. 系统功能模块设置 (18)

结论 (20)

另附:小组成员任务分配 (20)

1.实验目的

(1)读者身份设置:用于设置不同类型读者所具有的借书权限(借阅数量、续借次数)等;

(2)读者信息管理:读者图书证的生成、管理读者信息等;

(3)新增图书:图书馆新添图书,为图书入库编号等;

(4)图书信息管理:图书基本信息的增删与修改;

(5)图书类型管理:图书分类及不同类型图书具有不同的借阅权限(借阅天数);

(6)图书借阅:管理读者借书过程;

(7)图书过期名单:产看是否有过期图书。

(1)读者信息表,包括:条形码、编号、姓名、性别、类型、出生日期、有效证件、证件号码、联系方式、登记日期、有效期限、操作员、备注、图书借阅次数、是否挂失等;

(2)读者类型表,包括:类型、图书册书。续借次数、限制图书等;

(3)新增图书信息表,包括:入库编号、图书编号、订购者、经手者联系方式、定购数量、是否验收、验收日期、操作员等;

(4)书架信息表,包括:书架名、书架类型等;

(5)图书类型表,包括:可借天数、图书类型、类型编号等;

(6)图书借阅表,包括:借阅编号、读者编号、图书编号、操作时间;

(7)图书归还表,包括:故还编号、图书编号、读者编号、归还时间、操作员;

2. 功能模块图

(1)根据上述的功能,可以设计出系统的总体功能模块,如图3-1所示。

图3-1 图书信息管理系统—管理员登陆与操作模块功能示意图

(2)“员工管理”功能模块用于增加员工,删除员工,修改员工已有信息,查询已有员工相关信息。其功能模块如图3-2所示。

图3-2 员工管理

(3)“读者管理”功能模块用于新生入校时增加使用本系统的读者信息,以及老生毕业离校时删除相关读者信息,清楚数据库,查询读者的借阅书籍情况。其功能模块如图3-3所示。

图3-3 读者管理

(4)“图书信息管理”功能模块用于新书入库,丢失或者陈旧不可用的书籍的出库,已有书籍的查询。其功能模块如图3-4所示。

图3-4 图书信息管理

(5)“图书借还管理”功能模块用于读者借书和还书的登记,其其功能模块如图3-5所示。

图3-5 图书借还管理

本系统将用户划分为三种类型,即系统管理员、员工和读者。系统管理员为Admin,他可以管理其他用户和员工的信息,在其他方面的权限相同。

3 详细设计

3.1 主界面

用户登陆系统以后,将出现主界面,用户可以选择要执行的操作,点击即可实

现各功能模块相应的操作,如图4-1所示。

图4-1 主界面

3.2 读者管理模块功能实现

(1)读者添加

功能介绍:添加新的读者,使其能够进入图书系统阅览图书,读者添加如图4-2

所示。

图4-2 读者添加

(2)读者修改功能介绍:对读者需要修改的资料进行重定义,读者信息修改如图4-3所示。

图4-3 读者信息修改

(3)读者查询

功能介绍:可以对数据库中已有的读者信息进行查询。读者查询如图4-4所示。

图4-4 读者信息查询

(4)读者删除

功能介绍:删除数据库中已有信息。读者删除如图4-5所示。

图4-5 读者删除

3.3 书籍管理模块功能实现

(1)书入库实现

功能介绍:此界面主要完成的功能是往数据库book表中添加新书的记录,在book表中可查看最新的记录。在新书信息输入的过程中,会出现一些异常处理,如某个字段的信息没有填写;新书信息输入字段的过程中,输入的字段类型与给定

的字段类型与输入不匹配(如:货币、日期);输入的信息长度超过给定的字段长

度等。如果填写的内容正确则可以成功将新书添加入库,新书入库窗口如图4-6所示。

图4-6 添加新书入库界面

(2)查询功能实现

功能介绍:本系统包含两项一是检索项令一个是检索词,在检索项中用户可以

根据自己的需求来选择所要查询的项目并在检索词中添写自己所要查询的内容。本

系统副带四个按钮:确定、取消、查看全库,该图书馆管理系统的查询界面如图

4-7所示。

图4-7 查询系统界面

在该系统中为了用户使用方便还设有查看全库一项,用户可以通过这一功能来查看全库的图书,所查询的内容将在下方的文本区中显示,其界面如图4-8所示。

图4-8 查看全库信息

使用检索词必须得满足一定的查询条件才可以执行,用户必须得在检索项中选择查询方式并添好检索词才可查询否则系统会显示未找到您要查找的内容并给以提示,

如图4-9所示。

图4-9 检索

3.4 书籍借阅与归还功能实现

(1)借阅书籍功能实现

输入图书证号“0001”后点击查看按钮,可显示该读者信息,若输入图书证号错误,点击查看按钮则会弹出借书证错误对话框,如图4-10所示。输入图书编号“0000003”按回车键,可显示该图书信息,若输入图书编号错误,按回车键则会弹出图书编号错误对话框,如图4-11所示。点击借阅按钮则会弹出图书借阅成功对话框。借阅书籍功能的具体实现如图4-12所示。

图4-10 借书证错误

图4-11 图书编号错误

图4-12 借阅书籍

(2)归还书籍功能实现

输入图书编号“0000003”点击回车键,则该界面右侧会显示借书者的信息,若图书编号错误则会弹出图书编号错告对话框,如图4-13所示。点击还书按钮会弹出归还成功对话框。归还书籍功能的具体实现,如图4-14所示。

图4-13 图书编号错误

图4-14 归还书籍

4. 数据库设计

4.1 概念结构设计

根据需求分析抽象出信息结构,可得该系统的E-R图。

用户E-R图,如图4-15所示。

图4-15 用户E-R图

4.2 逻辑结构设计

根据上述的概念结构设计出逻辑结构,将E-R图转换为关系模型。

数据库Bookmanage包含以下5个表:员工信息表yuangong、用户信息表Users、读者信息表duzhe、图书信息表tushu、图书借还信息表jiehuan。

(1)员工信息表yuangong

用来保存员工编号,姓名,性别,密码,备注等信息。表yuangong的结构如表4-1所示。

表4-1 员工的结构

编号字段名称数据结构说明

1 yid char 记录编号

2 yname Varchar2(30) 记录员工姓名

3 ysex Varchar(6) 记录员工性别

4 ybirthday date 记录员工生日

5 ynote Varchar2(100) 记录员工是否迟到或者是否需要删除

6 ypassword char(6) 记录员工登陆系统密码

(2)图书信息表

表4-2 图书的结构

编号字段名称数据结构说明

1 tid char(6) 记录图书编号

2 tname varchar2(30) 记录图书名称

3 tpress varchar2(30) 记录图书出版地址

4 tprice number(5,2) 记录图书价格

本系统将用户划分为三种类型,即系统管理员、员工和普通用户。系统管理员

为Admin,他可以管理其他用户的信息,在其他方面的权限相同。

前面是通过前台来实现系统安全性的,我们也可以对数据库进行身份验证,可

以从服务器角度建一个登录名,使得不同的服务器角色拥有不同的权限,从而实现

对数据库的不同权限的管理,以此来增强图书信息管理系统的安全性。

4.3 数据库表的建立

本次课程设计使用的是SQL Sever数据库,可以在新建的SQL WINDOW里面创建表。

(1)创建表yuangong

创建表yuangong(员工信息表),它的代码如下:

create table yuangong(

yid char(5) ,

yname varchar2(30),

ysex varchar2(2),

ybirthday date,

ypassword char(6),

ynote varchar2(100),

constraints yuangong_pk primary key (yid)

);

insert into yuangong values('00001','张三','男',to_date('1991-01-01','yyyy-mm-dd') ,'123456','无');

insert into yuangong values('00002','李四','男',to_date('1991-01-01','yyyy-mm-dd') ,'123456','无');

insert into yuangong values('00003','王二','女',to_date('1991-01-01','yyyy-mm-dd') ,'123456','无');

insert into yuangong values('00004','刘一','女',to_date('1991-01-01','yyyy-mm-dd') ,'123456','无');

(2)创建表tushu

创建表tushu(图书基本信息表),它的代码如下:

create table tushu(

tid char(6) primary key,

tname varchar2(30),

tpress varchar2(30),

tprice number(5,2),

tcount number(4)

);

insert into tushu values('000001','Java入门教程','高等教育出版社','39','20'); insert into tushu values('000002','数据库','高等教育出版社','39','20');

insert into tushu values('000003','数据结构','高等教育出版社','39','20'); insert into tushu values('000004','数据库系统概论','高等教育出版社','59','20'); insert into tushu values('000005','三国演义','清华出版社','49','20');

insert into tushu values('000006','西游记','高等教育出版社','39','20');

insert into tushu values('000007','C语言','高等教育出版社','39','20');

insert into tushu values('000008','JA V A语言','高等教育出版社','39','20'); insert into tushu values('000009','JavaEE框架','清华出版社','39','20');

insert into tushu values('000010','网页制作','高等教育出版社','39','20'); insert into tushu values('000011','组成原理','高等教育出版社','39','20');

insert into tushu values('000012','操作系统','清华出版社','39','20');

(3)创建关系用户数据表user

创建关系用户数据表user的代码如下:

create table user(

uid char(8) primary key,

upassword varchar2(30),

unote varchar2(2),

);

创建读者基本信息数据表duzhe

创建读者基本信息数据表duzhe的代码如下:

create table duzhe(

hid char(8) primary key,

hname varchar2(30),

hsex varchar2(2),

hbirthday date,

htel varchar2(11)

);

import java.awt.EventQueue;

import java.awt.Frame;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JPasswordField;

import javax.swing.JTextField;

import javax.swing.border.EmptyBorder;

import https://www.wendangku.net/doc/9e7405444.html,.csuinfo.listener.QuXiaoactionlistener; import https://www.wendangku.net/doc/9e7405444.html,.csuinfo.listener.QueDingActionListener; public class FrmDengLu extends JFrame {

private JPanel contentPane;

private JTextField txtYongHuMing;

private JPasswordField txtPassWord;

/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

FrmDengLu frame = new FrmDengLu();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

/**

* Create the frame.

*/

public FrmDengLu() {

setTitle("南华大学图书信息管理系统"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 374, 183);

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane);

contentPane.setLayout(null);

JLabel lblYongHuMing = new JLabel("\u7528 \u6237 \u540D"); lblYongHuMing.setBounds(84, 28, 54, 15);

contentPane.add(lblYongHuMing);

txtYongHuMing = new JTextField();

txtYongHuMing.setBounds(190, 25, 90, 21);

contentPane.add(txtYongHuMing);

txtYongHuMing.setColumns(10);

JLabel lblKouLing = new JLabel("\u53E3 \u4EE4"); lblKouLing.setBounds(84, 58, 54, 15);

contentPane.add(lblKouLing);

txtPassWord = new JPasswordField();

txtPassWord.setBounds(190, 55, 90, 21);

contentPane.add(txtPassWord);

JButton btnQueDing = new JButton("\u786E \u5B9A"); btnQueDing.setBounds(91, 118, 77, 23);

contentPane.add(btnQueDing);

btnQueDing.addActionListener(new QueDingActionListener(this)); JButton btnQuXiao = new JButton("\u53D6 \u6D88"); btnQuXiao.setBounds(200, 118, 93, 23);

contentPane.add(btnQuXiao);

btnQuXiao.addActionListener(new QuXiaoactionlistener (this));

}

public JTextField getTxtYongHuMing() {

return txtYongHuMing;

}

public JPasswordField getTxtPassWord() {

return txtPassWord;

}

}

程序功能说明:管理员登陆之后进入的系统主界面

程序作者:

package https://www.wendangku.net/doc/9e7405444.html,.csuinfo.gui;

import java.awt.EventQueue;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTabbedPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.ScrollPaneConstants;

import javax.swing.border.EmptyBorder;

import javax.swing.table.DefaultTableModel;

import https://www.wendangku.net/doc/9e7405444.html,.csuinfo.listener.ChaZhaojiehuanxingxiactionlistener; import https://www.wendangku.net/doc/9e7405444.html,.csuinfo.listener.ChaoZhaoActionListener;

import https://www.wendangku.net/doc/9e7405444.html,.csuinfo.listener.ChaoZhaoshiyanhuiyuanactionlistener; import https://www.wendangku.net/doc/9e7405444.html,.csuinfo.listener.Chaozhaotushuactionlistener;

import https://www.wendangku.net/doc/9e7405444.html,.csuinfo.listener.ShanChushiyanactionlistener;

import https://www.wendangku.net/doc/9e7405444.html,.csuinfo.listener.Shanchuhuiyuanactionlistener; import https://www.wendangku.net/doc/9e7405444.html,.csuinfo.listener.Shanchutushuactionlistener;

import https://www.wendangku.net/doc/9e7405444.html,.csuinfo.listener.XinZengshiyanactionlistener;

import https://www.wendangku.net/doc/9e7405444.html,.csuinfo.listener.XinZengshiyanhuiyuanactionlistener; import https://www.wendangku.net/doc/9e7405444.html,.csuinfo.listener.Xingzengshiyantushuactionlistener; import https://www.wendangku.net/doc/9e7405444.html,.csuinfo.listener.ZengTainjiehuanxingxiactionlistener; public class FrmGuanLiXiTong extends JFrame {

private JPanel contentPane;

private JTable tableYuanGong;

private JTable tableHuiYuan;

private JTable tableTuShu;

private JTable tableJieHuanXinXi;

private JTextField textHuiYuanBianHaoj;

private JTextField TxtYuanGongBianHao;

private JTextField TxtYuanGongXingMing;

private String[] ColumnNames = new String[] {

"编号", "姓名","性别", "生日", "密码","备注"

};

private String[] ColumnNames1 = new String[] {

"会员编号", "姓名","性别", "生日", "电话"

};

private String[] ColumnNames2 = new String[] {

"图书编号", "图书名","出版社", "单价", "数量"

};

private String[] ColumnNames3 = new String[] {

"图书编号", "图书名","出版社", "单价","借书日期","还书日期","是否归还" };

private JTextField textHuiYuanBianHao;

private JTextField textHuiYuanXingMing;

private JTextField texttushuchazhao;

/**

*Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

FrmGuanLiXiTong frame = new FrmGuanLiXiTong();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

5系统实现

5.1. 数据库的连接

//获取与数据库之间的连接

String user = "scott";

String dbpassword = "tiger";

String url = "jdbc:oracle:thin:@localhost:1521:student";

conn = DriverManager.getConnection(url, user, dbpassword);

//创建发送sql语句的Statement对象

st = conn.createStatement();

//发送sql语句,并用ResultSet类型的对象保存查询的数据行5.2. 系统功能模块设置

在该系统中设置管理员登陆后进入的界面如下图所示:

图5-1 员工管理框架

图5-2 读者管理界面

图5-3 图书管理界面

图5-4 图书借还信息管理界面

结论

在这次课程设计中我们努力完成了任务,共同学习知识,感到非常高兴。在这次课设中我不仅学到了知识,真正体会到了小组合作精神的重要性,这对我以后的工作有很大的帮助。

在程序中我们主要用了awt包和swing包,界面排版主要用轻量级容器box 来实现,页面位置、大小是通过设置setbounds来控制的。不但成功的连接了数据库,也成功实现了很多功能:在管理员方面实现了管理员登陆、管理员添加、管理员删除三个功能,在读者管理方面实现了读者添加、读者修改、读者查询、读者删除四个功能,在书籍管理方面实现了新书入库、书籍查询两个功能,在书籍借阅与归还方面实现了借阅书籍、归还书籍两个功能,在借阅超时方面也成功实现了此功能。我们应该从这次课程设计中所暴露出的问题入手,不断完善自己的欠缺和不足。相信此次课程设计为我们以后继续从事计算机工作打下了扎实的基础,也明确了以后的学习方向。

另附:小组成员任务分配

1.张铭烨

1)业务逻辑层代码调试与修改;

2)图书馆管理项目编写

2.严旭:

1)数据库设计;

2)数据访问层代码调试与修改;

3)项目说明书校对与修改;

3.刘超:

1)视图层代码编写

2)jsp、js、css代码修改与编写;

相关文档