您好,欢迎来到测品娱乐。
搜索
您的当前位置:首页《JAVA图书管理系统开发》实训报告

《JAVA图书管理系统开发》实训报告

来源:测品娱乐
 《JAVA图书管理系统开发》实训报告

课程名称: JAVA 图书管理系统开发 业: 计算机应用技术 专 班 级:

学 号:姓 名:成

绩:

ZB10001

计算机学院

二〇一二年三月五日

目 录

一、程序设计目的 ................................................. 二、程序设计题目描述和要求 ....................................... 三、程序设计报告内容 .............................................

3.1 系统需求分析 ..........................................................

3.1.1 功能需求描述 .................................................... 3.1.2 对应数据需求描述 ................................................ 3.1.3 数据库概念模型设计 .............................................. 3.1.4数据库逻辑模型设计模型设计 ....................................... 3.1.5表的设计与实现 ................................................... 3.2系统详细设计与实现 ....................................................

3.2.1 登陆界面设计 .................................................... 3.2.2 主界面 .......................................................... 3.2.3 用户注册界面设计 ................................................ 3.2.4 图书登记界面设计 ................................................ 3.2.5 图书入库面设计 .................................................. 3.2.6 图书出库界面设计 ................................................ 3.2.7 软件关于界面设计 ................................................ 3.2.8 用户注销界面设计 ................................................ 3.2.9 用户权限界面设计 ................................................ 图书借还界面设计 ...................................................... 图书超期界面设计 ...................................................... 用户修改界面设计 ......................................................

四、实训结论 ..................................................... 五、结束语 ....................................................... 六、参考文献 .....................................................

一、程序设计目的

通过项目驱动的学习和综合实训,熟练掌握运用Java语言进行桌面应用程序开发的基本知识和技能;熟练掌握JAVA的基本语法与JDBC数据库技术的应用;进一步熟悉SQL Server数据库的数据库管理(数据库的创建、备份与恢复、函数与存储过程的应用、数据导入导出、作业的调度等)、表的设计(表的创建、修改、删除,字段的默认值、约束及关系等)、数据的查询处理(insert、update、delete、select语句的应用)等技术;并能结合数据

库应用技术和软件工程技术进行桌面应用程序的开发,能基本胜任Java桌面开发程序员的岗位。

二、程序设计题目描述和要求

图书管理系统,是一个由人、计算机等组成的能进行管理信息的收集、传递、加工、保存、维护和使用的系统。其功能一般包括:图书信息管理、用户信息管理、图书借阅、图书归还、违约与毁坏赔偿、图书借还查询等等。

三、程序设计报告内容

3.1 系统需求分析

以我校实际情况为基础,对于图书馆图书管理设计一个适合于学校图书馆使用的图书管理系统。还可以为学校领导提供图书的库存和图书流通量的查询。该系统需要完成对图书类别管理、统计管理、库存管理、用户信息管理、图书借阅管理、图书归还管理、超期与损毁赔偿管理、图书借还查询管理、图书出入库和统计查询等。 3.1.1 功能需求描述

(1)、图书管理:对图书进行分类存储(计算机、机械、建筑、文学、心理、艺术、经济、历史、地理、其它)。在入库和出库的时候按图书类别进行管理。可对现有图书信息信息进行管理(查询、修改)。

(2)、库存信息管理:对于图书出库图书登记和入库图书登记。

(3)、用户信息管理:可以实现对不同用户进行添加、查询、删除和修改,并给与不同用户不同权限。

(4)、图书借阅管理:对于图书借阅信息的登记(书名、图书编号、馆藏、借书日期、借期、应还日期)、对现有图书库存减少、对图书借阅人信息进行登记(姓名/学号、本次借阅册数、图书编号)。

(5)、图书归还管理:对图书信息进行登记(图书编号、借书日期、借期、应还日期、超期、续期)对图书借阅人信息进行登记(姓名/学号、现借册数、现借藏书信息)。

(6)、图书超期与损毁赔偿管理:对于超期、损毁图书进行赔偿收费并登记赔偿人和管理员信息以及费用金额。

图书管理系统 图书管理 用户管理 图书赔偿管理 现有库存管理 出库管理 入库管理 图书借阅管理 图书归还管理 添加用户管理 删除用户管理 修改用户管理 权限管理

系统设计图

1、 图书类别管理:

对图书进行分类存储。在入库和出库的时候按图书类别进行管理。

(1)分类:按图书的性质进行分类,并在图书编号中对不同类别的书籍使用不同的类别标示符(计算机(JS)、机械(JQ)、建筑(JZ)、文学(WX)、心理(XL)、艺术(YS)、经济(JJ)、历史(LS)、地理(DL))。

(2)图书信息管理:对现有图书信息进行查看并可以修改。 2、 库存信息管理:

对于图书出库图书登记和入库图书登记及现有库存图书进行管理。

(1) 入库管理:记录入库图书总量,分类别进行统计并记录。记录登记人员姓名。(将这

些信息记录进数据库中,在相应查询权限下可以查询。但是记录后不可修改。)

(2) 出库管理:记录出库图书总量,分类别进行统计记录,记录登记人员姓名。将这些信

息记录进数据库中,在相应查询权限下可以查询。但是记录后不可修改。)

(3) 现有库存管理:对现有库存进行管理,在入库时对库存进行增加并对每一本图书进行

分类编号登记,在出库时对库存减少并删除相应的图书信息。 3、 用户信息管理:

可以实现对不同用户进行添加、查询、删除和修改,并给与不同用户不同权限。

(1) 用户信息添加:对用户的相应信息进行添加(用户名,密码,出生日期,性别,管理

操作权限,借阅权限)。

(2) 用户信息查询:对用户的信息进行查询。 (3) 用户信息删除:对用户信息进行删除。

(4) 用户信息修改:用户可以对自己的用户密码和出生日期进行修改,管理员只可以修改

用户的权限

4、 图书借阅管理:

对于图书借阅信息的登记(书名、图书编号、馆藏、借书日期、借期、、应还日期)同时系统自动对借阅图书量增加、对现有图书库存减少、对图书借阅人信息进行登记(姓名/学号、本次借阅册数、现借册数、可借册数、现借藏书信息)。

(1) 借阅信息登记:对用户的信息进行登记(姓名、本次借阅册数、现借册数、可借册数、

现借藏书信息),并根据借书权限借阅相应的书籍数量。(将信息记录入数据库中相应权限可以进行查询。)

(2) 对借阅图书进行登记:对借出图书的书名、图书编号、馆藏、借书日期、借期、、应

还日期进行登记并关联相应的借书用户系统自动的在书籍借阅标示栏加一表示借出。(图书在图书馆内借阅栏标示0,借出后自动加1,归还自动减1,损毁在借阅的基础上加1。将信息记录入数据库中相应权限可以进行查询。)(0表示在书库中,1表示借出,2表示损毁)。 5、 图书归还管理:

对图书信息进行登记(书名、图书编号、馆藏、借书日期、借期、、应还日期、超期、续期)对图书借阅人信息进行登记(姓名/学号、现借册数、可借册数、现借藏书信息)。 (1) 用户信息显示:显示用户信息(姓名/学号、现借册数、可借册数、现借藏书信息),

对图书信息管登记(书名、图书编号、馆藏、借书日期、借期、、应还日期、超期、续期)并根据是否超期损毁进行相应操作。

(2) 用户信息删除:对相应的借书用户关联图书信息删除。系统自动在图书标示栏内减1。

系统自动将用户现借数量减1,可借数量加1。 6、 图书超期和损毁赔偿管理:

对于超期、损毁图书进行赔偿收费并登记赔偿人和管理员信息以及费用金额。

(1) 超期赔偿管理:登记用户信息(姓名/学号)查看超期时间并对其进行赔偿收费(记

录收费人信息,赔偿人信息,收费金额,收费日期并存入数据库中)。

(2) 损毁赔偿管理:登记用户信息(姓名/学号)并对其进行赔偿收费(记录收费人信息,

赔偿人信息,收费金额,收费日期并存入数据库中)。在图书信息中的借阅标示栏内系统自动在借阅的基础上加1表示损毁。 3.1.2 对应数据需求描述 1 、 图书类别管理数据需求:

图书分类管理数据需求:(按:计算机、机械、建筑、文学、心理、艺术、经济、历史、地理九类进行分类)。并对分类图书进行标识(计算机(JS)、机械(JQ)、建筑(JZ)、文学(WX)、心理(XL)、艺术(YS)、经济(JJ)、历史(LS)、地理(DL))。并在标识符后面加四位编号(例子:JS0001)。 数据项 图书类别名称 类别说明 数据需求 按图书类别进行分类(初始分为九种),计算机、机械、建筑、文学、心理、艺术、经济、历史、地理。在系统完成后可进行类别的添加和删除修改。(10汉字内) 对相应类别进行详细描述。 2 、库存信息管理数据需求:

(1) 入库管理数据需求:

数据项 入库编号 入库ISBN编号 入库图书数量 入库时间 入库操作员编号 出库编号 出库ISBN编号 出库图书数量 出库时间 出库操作员编号 数据需求 用于在数据库中唯一标识入库信息。自动增加 用于唯一标识图书的图书ISBN编码 。 图书的数量。 记录图书入库时间。 记录登记图书入库操作员的编号。 用于在数据库中唯一标识出库信息。自动增加 用于唯一标识图书的图书ISBN编码 。 图书数量 记录图书出库时间。 登记图书出库操作员的编号。 (2) 出库管理数据需求:

3、 用户信息管理数据需求: (1)用户信息添加数据需求: 数据项 用户编号 姓名 性别 密码 电话 班级 注册时间 用户权限号 状态 数据需求 用于唯一标识学生,要求:共8位,前2为年份,中间2位特殊类别标号(默认00),后面4位为报名序号。 15个汉字以内,可能带有特殊符号(可修改)。 只能是“男”或“女”。 任意6~~12位字符。 十一为数字(座机前面加区号)。 存储学院班级详细信息 如:2012-12-10 只能有以下四种(领导,管理员,教师,学生), 包括:正常、暂停使用和已注销 数据项 权限编号编号 权限名称 可借阅书籍 数据项 用户编号 姓名 性别 密码 电话 班级 用于标示权限类别的编号 权限的名称。(领导、教师、管理员、学生) 根据权限借阅不同数量的书籍。 数据需求 用于唯一标识学生,要求:共8位,前2为年份,中间2位特殊类别标号(默认00),后面4位为报名序号。 15个汉字以内,可能带有特殊符号(可修改)。 只能是“男”或“女”。 任意6~~12位字符。 十一为数字(座机前面加区号)。 存储学院班级详细信息 数据需求 (2)用户权限管理: (3)用户信息修改数据需求:修改用户的信息。 注册时间 用户权限号 状态 如:2012-12-10 权限的标识号码。只能有以下四种(领导,管理员,教师,学生), 包括:正常、暂停使用和已注销 (5)用户信息删除数据需求:删除用户的注册信息。 4 、图书借阅,归还管理数据需求:

在借阅图书时的数据需求。

数据项 借还编号 用户编号 ISBN 借阅时间 借阅数量 归还时间 数据需求 唯一标识借阅信息的编号。在数据库中区别信息。 管理员人工将用户编号输入登记框。 管理员人工将图书编号输入登记框。 系统自动在电脑上获取时间。 登记借阅书籍的数量。 在归还时自动获取时间。 5、图书超期和损毁赔偿管理数据需求:

数据项 赔偿编号 用户编号 ISBN编号 情况描述 处理结果 收费时间 操作员编号 数据需求 唯一标识借阅信息编号。自动增加。 管理员人工将用户编号输入文本框。 管理员人工将图书编号输入文本框。 对于赔偿情况的详细描述 管理员登记赔偿金额 系统自动获取系统时间。 输入操作员编号。 3.1.3 数据库概念模型设计

班级 电话 注册时间 密码 用户 用户编号 权限号 性别 姓名 状态

图1 用户实体图

权限 可借阅书籍数量 权限名 权限编号

图2 权限实体图

作者 图书名 出版社 现存量 书价 图书 ISBN编号 类别名 出版时间 图3 图书实体图

库存量

类别 图书类别名 类别说明

图4 类别实体图

借还编号 归还时间 借还 ISBN编号 借阅数量 借阅时间 图5 借还实体图

用户编号

赔偿编号 处理时间 赔偿 操作员编号 ISBN编号 处理结果 情况描述 用户编号

图6 赔偿实体图

入库 入库编号 入库操作员编号 入库时间 入库ISBN编号 入库数量

图7 入库实体图

出库 出库编号 出库ISBN编号 出库操作员编号 出库时间 出库数量 图8 出库实体图

功能 功能编号 功能模块

图9 功能实体图

模块 功能编号 权限编号

图10 模块实体图

M M 用户管理 借还 N M 图书管理 N 读者 M 违约 N N 1 N 管理员 图书 所属 类别

图11 各实体关系图

3.1.4数据库逻辑模型设计模型设计

根据E-R图,将其转换为关系模式可得到以下8个关系模式:

用户(用户编号、姓名、性别、密码、电话、班级、注册时间、权限编号、状态) 权限(权限编号、权限名称、可借阅书籍) 模块(权限编号、功能名称)

图书(ISBN编号、图书名、作者、出版社、出版时间、书价、图书书类别名、库存量、现存量)

类别(图书类别名、说明)

借还(借阅编号、用户编号、ISBN、借阅时间、借阅数量、归还时间)

赔偿(赔偿编号、用户编号、ISBN编号、原因、处理结果、处理时间、操作员编号) 出库(出库编号、ISBN编号、出库图书数量、出库时间、出库操作员编号) 入库(入库编号、ISBN编号、入库图书数量、入库时间、入库操作员编号)

表一:用户信息表(users)==(OK)

字段名称 用户编号(user_Id) 用户名(user_Name) 性别(user_Sex) 密码(user_Pwd) 电话(user_Tel) 类型 int varchar(10) char(2) char(12) varchar (30) 是否为空 not null not null not null not null 男 123456 默认值 自动增加 主键 是否主键 班级(user_Class) 注册时间(user_Time) 权限编号(limit_Id) 状态(user_State) varchar (50) datetime varchar(10) char(4) not null not null not null 自动获取 学生 使用 外键 表二:用户权限表(limit)==(OK)

字段名称 权限编号(limit_Id) 权限类名(limit_Name) 借阅书籍数量(limit_Qty) 类型 varchar(10) varchar(15) int 是否为空 not null not null not null 默认值 自动增加 3 是否主键 主键(S001) 表三:图书信息表(books)

字段名称 ISBN编号(book_Id) 图书名(book_Name) 作者(book_Author) 出版社(book_Society) 出版时间(book_Time) 书价(book_Price) 图书类别名(book_Sort) 库存量(book_Qty) 现存量(book_Qtyx) 类型 varchar(17) varchar(30) varchar (10) varchar(50) datatime int varchar(10) int int 是否为空 not null not null not null not null not null not null not null 计算机 默认值 主键 外键 是否主键 表四:功能模块表(module)==(OK)

字段名称 权限编号(lilmit_Id) 模块名称(module_Name) 字段名称 赔偿编号(cpt_Id) 用户编号(user_Id) ISBN编号(book_Id) 原因(cpt_Cause) 收费(cpt_result) 收费时间(cpt_Time) 操作员编号(user_Id) 字段名称 图书类别名(book_Sort) 说明explain 字段名称 借阅编号(borrow_Id) 用户编号(user_Id) ISBN编号(book_Id) 借阅时间(borrow_Time) 类型 varchar(10) varchar(30) 类型 int int varchar(17) varchar (50) char(10) datatime int 类型 varchar(10) text 类型 int Int varchar(17) datetime 是否为空 not null not null 是否为空 not null not null not null not null not null not null not null 是否为空 not null 是否为空 not null not null not null not null 默认值 是否主键 外键 表五:超期损毁表(compensate)

默认值 是否主键 主键 外键 外键 自动获取 外键 默认值 计算机 默认值 是否主键 主键 外键 外键 表七:图书类别表:(sort)==

是否主键 主键 表六:借阅归还表(borrow)

自动获取 借阅数量(borrow_Qty) 归还时间(return_Time) int datatime 表八:入库表:(enter)

自动获取 字段名称 入库编号(enter_Id) ISBN编号(book_Id) 入库图书数量(enter_Qty) 入库时间(enter_Time) 入库操作员编号(user_Id) 字段名称 出库编号(out_Id) ISBN编号(book_Id) 出库图书数量(out_Qty) 出库时间(out_Time) 出库操作员编号(user_Id) 类型 int varchar(17) int datatime int 类型 varchar(10) varchar(12) int datatime varchar(10) 是否为空 not null not null not null not null not null 表九:出库表(out)

默认值 自动增加 是否主键 主键 外键 自动获取 外键 默认值 是否主键 主键 外键 是否为空 not null not null not null not null not null 管理系统窗口图

自动增加 自动获取 外键 3.2系统详细设计与实现 3.2.1 登陆界面设计

public void actionPerformed(ActionEvent e) {//监视器

if(e.getSource()==Ok){//点击确定时执行的语句

if(yh.getText().equals(\"\")){//判断用户号是否输入 }

else if(mm.getText().equals(\"\")){//判断密码是否为空 } try {

} catch (ClassNotFoundException e1) { } try {

PreparedStatement pstmt=con.prepareStatement(\"select * from users where user_Id=? and pstmt.setInt(1,Integer.parseInt(yh.getText())); pstmt.setString(2,mm.getText()); ResultSet rst=pstmt.executeQuery(); if(rst.next()){

new MainFrame(\"图书管理系统his.dispose();

JOptionPane.showMessageDialog(null,\"

数据库驱动程序不存在\

JOptionPane.showMessageDialog(Ok,\"请输入 密码!\提示\JOptionPane.showMessageDialog(Ok,\"请输入账号 \提示\

\

user_Pwd=? and user_State='使用'\");

}

}

}

}else{ }

JOptionPane.showMessageDialog(null,\"SQL

\

JOptionPane.showMessageDialog(null,\"用户名不存在或者密码不正确,请重新输入!\提示

\

} catch (SQLException e1) {

\

if(e.getSource()==Cancel){//点击取消实现的 }

if(bc.isSelected()==true){//选择记住密码 }

if(e.getSource()==login){//点击注册按钮 }

new LoginFrame(\"注册\"); savaFile(); savaFile1();

}if(bc.isSelected()==false){//未选择记住密码

this.dispose();

public void savaFile(){//实现对文本框文字的保存 }

public void savaFile1(){//实现对空白文本的保存 }

public void Duqu() {//实现对文字的读取

File f=new File(\".\\\\data\\\\dk.txt\"); try { }

FileWriter txt=new FileWriter(f); txt.write(yh.getText()+\"-\"); txt.write(\"\"+\"+\"); txt.close();

// TODO 自动生成 catch 块 e.printStackTrace();

File f=new File(\".\\\\data\\\\dk.txt\"); try { }

FileWriter txt=new FileWriter(f); txt.write(yh.getText()+\"-\"); txt.write(mm.getText()+\"+\"); txt.close();

// TODO 自动生成 catch 块 e.printStackTrace();

} catch (IOException e) {

} catch (IOException e) {

FileReader fr; }

try { }

fr = new FileReader(\".\\\\data\\\\dk.txt\"); BufferedReader br = new BufferedReader(fr);

} catch (IOException e) { }

e1.printStackTrace();

e.printStackTrace(); try {

String line = br.readLine();

yh.setText(line.toString().substring(0,line.toString().indexOf('-')));

mm.setText(line.toString().substring(line.toString().indexOf('-')+1,line.toString().indexOf('+')));

} catch (FileNotFoundException e1) {

3.2.2 主界面

void setAllFrameIcon(){//在运行新窗体之前,将所有的窗体最小化 }

boolean getDakai(String s){//判断标题为s的窗体是否打开 }

void openFrame(String s){//搜索标题为s的窗体,并将其显式出来

JInternalFrame jf[]; jf=desk1.getAllFrames(); for(int i=0;iif(s.equals(jf[i].getTitle()))

try {

jf[i].setIcon(false);

JInternalFrame jf[]; jf=desk1.getAllFrames(); for(int i=0;ireturn true;

if(s.equals(jf[i].getTitle()))return false; JInternalFrame jf[]; jf=desk1.getAllFrames(); for(int i=0;itry { }

if(!jf[i].isIcon()) jf[i].setIcon(true); e.printStackTrace();

} catch (PropertyVetoException e) {

desk1.validate();

} }

}

} catch (PropertyVetoException e) { }

// TODO 自动生成 catch 块 e.printStackTrace();

public void actionPerformed(ActionEvent e) {//监视器方法 }

if((e.getSource()==m21)||(e.getSource()==b1)){ }

if((e.getSource()==m25)||(e.getSource()==b2)){ }

if(e.getSource()==m22){ }

if(e.getSource()==m23){ }

if(e.getSource()==b3){ }

if((e.getSource()==m24)||(e.getSource()==b4)){ }

if((e.getSource()==m31)||(e.getSource()==b6)){ }

if((e.getSource()==m32)||(e.getSource()==b5)){ }

if(e.getSource()==m33){ }

if(e.getSource()==m41){ }

if(e.getSource()==m42){ }

new GyFrame(\"软件关于\"); new UpdateFrame(); new LimitFrame(); new CanFrame(\"用户注销\"); new EnterFrame(userId); new DJFrame();

new OutFrame(userId);// new DamageFrame(userId);

new BorrowFrame(userId);//借阅窗口

3.2.3 用户注册界面设计

//加载驱动

try {

} catch (ClassNotFoundException e1) { }

JOptionPane.showMessageDialog(null,\"加载驱动程序失败!\");

//监视器实现的事件

public void actionPerformed(ActionEvent e) {

if(e.getSource()==Ok){//点击注册按钮实现的事件

try {

PreparedStatement

//3、创建PreparedStatement预处理执行对象pstmt

}

}

if(e.getSource()==Cancel){ }

this.dispose();

pstmt.setString(1,Nametext.getText()); if(man.isSelected()) pstmt.setString(2,\"男\"); else

pstmt.setString(2,\"女\");

pstmt.setString(3,Pwdtext.getText()); pstmt.setString(4,Teltext.getText()); pstmt.setString(5,Classtext.getText());

//5、执行数据插入操作,将返回值赋值给整型变量n int n=pstmt.executeUpdate();

//6、判断n是否大于0,如果大于0提示注册成功并关闭注册窗体,否则提示注册失败

if(n>0){//判断成功并提示!

JOptionPane.showMessageDialog(null,\"注册用户成功!\添加用户提示 this.dispose();

JOptionPane.showMessageDialog(null,\"注册用户失败!\添加用户提示

pstmt=con.prepareStatement(\"insert

into

users(user_Name,user_Sex,user_Pwd,user_Tel,user_Class)values(?,?,?,?,?)\");

\

}else{//失败

\

}

pstmt.close();//7、关闭预处理对象pstmt con.close();//8、关闭数据库连接对象con } catch (SQLException e1) { }

JOptionPane.showMessageDialog(null,\"SQL语句执行错误!\提示\

3.2.4 图书登记界面设计

//为下拉菜单添加数据库中数据

try {

} catch (ClassNotFoundException e1) {

}

JOptionPane.showMessageDialog(null,\"数据库驱动程序不存在\提示

\

try {

PreparedStatement pstmt=con.prepareStatement(\"select book_Sort from sort\"); ResultSet rst=pstmt.executeQuery(); while(rst.next()){ }

rst.close(); pstmt.close(); con.close();

} catch (SQLException e1) { }

JOptionPane.showMessageDialog(null,\"SQL语句执行错误!\提示\

Sortext.addItem(rst.getString(1));

//监视器方法

public void actionPerformed(ActionEvent e) {

if(e.getSource()==Ok){//点击登记实现的事件

try {

/////下面在添加分组 PreparedStatement

pstmt=con.prepareStatement(\"insert

into

books(books_Id,books_Name,books_Author,books_Society,books_Time,books_Price,books_Sort)values(?,?,?,?,?,?,?)\");//3、创建PreparedStatement预处理执行对象pstmt

//4、为每个参数设置值

}

pstmt.setString(1,Idtext.getText()); pstmt.setString(2,Nametext.getText()); pstmt.setString(3,Auttext.getText()); pstmt.setString(4,Soctext.getText()); pstmt.setString(5,Timetext.getText());

pstmt.setInt(6,Integer.parseInt(Pritext.getText())); pstmt.setString(7,Sortext.getSelectedItem().toString()); if(n>0){//成功!

JOptionPane.showMessageDialog(null,\"添加图书成功!\添加图书提示 this.dispose();

JOptionPane.showMessageDialog(null,\"添加图书失败!\添加图书提示

int n=pstmt.executeUpdate();

\

}else{//失败

\

}

pstmt.close();//7、关闭预处理对象pstmt con.close();//8、关闭数据库连接对象con } catch (SQLException e1) { }

JOptionPane.showMessageDialog(null,\"SQL执行错误!\");

}

if(e.getSource()==Cancel){ }

this.dispose();

3.2.5 图书入库面设计

//监视器中实现的事件

public void actionPerformed(ActionEvent e) {

if(e.getSource()==Ok){//点击确定要执行的事件

try {

} catch (ClassNotFoundException e1) { } try {

///////下面首先判断要添加的分组是否存在,如果不存在才添加分组

PreparedStatement pstmt1=con.prepareStatement(\"select * from books where books_Id=?\"); pstmt1.setString(1,BookIdtext.getText()); ResultSet rst=pstmt1.executeQuery(); if(!rst.next()){//不存在则添加 } else{

PreparedStatement

pstmt=con.prepareStatement(\"insert

into

new DJFrame();

JOptionPane.showMessageDialog(null,\"加载驱动程序失败!\");

enter(books_Id,enter_Qty,user_Id)values(?,?,?)\");//3、创建PreparedStatement预处理执行对象pstmt

pstmt.setString(1,BookIdtext.getText());

pstmt.setInt(2,Integer.parseInt(Qtytext.getText())); pstmt.setInt(3,userId); PreparedStatement

pstmt2=con.prepareStatement(\"update

books

set

books_Qty=books_Qty+?,books_Qtyx=books_Qtyx+? where books_Id=?\");

pstmt2.setInt(1,Integer.parseInt(Qtytext.getText())); pstmt2.setInt(2,Integer.parseInt(Qtytext.getText())); pstmt2.setString(3,BookIdtext.getText());

int n=pstmt2.executeUpdate(); int n1=pstmt.executeUpdate();

if((n>0)&&(n1>0)){//成功!

JOptionPane.showMessageDialog(null,\"图书入库成功!\入库提示 this.dispose();

JOptionPane.showMessageDialog(null,\"图书入库失败!\入库提示

\

}else{//失败

\

}

pstmt2.close();//7、关闭预处理对象pstmt pstmt.close();//7、关闭预处理对象pstmt

}

}

}

rst.close(); pstmt1.close();

con.close();//8、关闭数据库连接对象con } catch (SQLException e1) { }

if(e.getSource()==Cancel){//点击取消则关闭窗口 }

this.dispose();

3.2.6 图书出库界面设计

//监视器中实现的方法

public void actionPerformed(ActionEvent e) {

if(e.getSource()==Ok){

try {

} catch (ClassNotFoundException e1) { } try {

PreparedStatement pstmt1=con.prepareStatement(\"select * from books where books_Id=?\"); pstmt1.setString(1,BookIdtext.getText()); ResultSet rst=pstmt1.executeQuery(); if(!rst.next()){//不存在则添加 } else{

PreparedStatement

pstmt=con.prepareStatement(\"insert

into

//rst.getString(\"books_Qty\");

JOptionPane.showMessageDialog(null,\"

\

JOptionPane.showMessageDialog(null,\"加载驱动程序失败!\");

\

out(books_Id,out_Qty,user_Id)values(?,?,?)\");//3、创建PreparedStatement预处理执行对象pstmt

pstmt.setString(1,BookIdtext.getText());

pstmt.setInt(2,Integer.parseInt(Qtytext.getText())); pstmt.setInt(3,userId); PreparedStatement

pstmt2=con.prepareStatement(\"update

books

set

books_Qty=books_Qty-?,books_Qtyx=books_Qtyx-? where books_Id=?\");

pstmt2.setInt(1,Integer.parseInt(Qtytext.getText())); pstmt2.setInt(2,Integer.parseInt(Qtytext.getText())); pstmt2.setString(3,BookIdtext.getText());

int n=pstmt2.executeUpdate(); int n1=pstmt.executeUpdate();

if((n>0)&&(n1>0)){//成功!

JOptionPane.showMessageDialog(null,\"图书销毁成功!\出库提示

\

}

}

if(e.getSource()==Cancel){ }

this.dispose();

this.dispose();

JOptionPane.showMessageDialog(null,\"图书销毁失败!\出库提示 }else{//失败

\

}

pstmt2.close();//7、关闭预处理对象pstmt } rst.close(); pstmt1.close();

pstmt.close();//7、关闭预处理对象pstmt

con.close();//8、关闭数据库连接对象con } catch (SQLException e1) { }

JOptionPane.showMessageDialog(null,\"SQL语句执行错误!\提示\

3.2.7 软件关于界面设计

public void paint(Graphics g){ }

g.drawImage(bg,0,0,300,300,this);//设置图片bg显示的位置

g.setColor(Color.RED);//设置后面字体的颜色

g.setFont(new Font(\"隶书\设置字体格式和大小

g.drawString(\"软件由梦语工作室开发\设置显示的内容和位置(位置为左上角坐标) g.drawString(\"版权所有为梦语工作室\g.drawString(\"如有问题请咨询--\

3.2.8 用户注销界面设计

//加载驱动

}

public void actionPerformed(ActionEvent e) {

if(e.getSource()==Ok){

try {

PreparedStatement pstmt=con.prepareStatement(\"update users set user_State='注销'

try {

} catch (ClassNotFoundException e1) { }

JOptionPane.showMessageDialog(null,\"加载驱动程序失败!\");

where(user_Id=? and user_Pwd=?)\");

}

}

pstmt.setString(1,Nametext.getText()); pstmt.setString(2,Pwdtext.getText()); int n=pstmt.executeUpdate();

if(n>0){//成功!

JOptionPane.showMessageDialog(null,\"注消用户成功!\用户注销提示 this.dispose();

JOptionPane.showMessageDialog(null,\"注消用户失败!\用户注销提示

\

}else{//失败

\

}

pstmt.close();//7、关闭预处理对象pstmt con.close();//8、关闭数据库连接对象con } catch (SQLException e1) { }

JOptionPane.showMessageDialog(null,\"SQL执行错误!\");

if(e.getSource()==Cancel){ }

this.dispose();

3.2.9 用户权限界面设计

//为下拉选单添加数据库中的数据

try {

} catch (ClassNotFoundException e1) { } try { }

PreparedStatement pstmt=con.prepareStatement(\"select limit_Name from limit\"); ResultSet rst=pstmt.executeQuery(); while(rst.next()){ } rst.close(); pstmt.close();

JOptionPane.showMessageDialog(null,\"SQL语句执行错误!\提示\

limit.addItem(rst.getString(1));

JOptionPane.showMessageDialog(null,\"数据库驱动程序不存在\提示\

} catch (SQLException e1) {

//监视器中实现的事件

public void actionPerformed(ActionEvent e) {

if(e.getSource()==ok){

try {

} catch (ClassNotFoundException e1) {

}

}

}

JOptionPane.showMessageDialog(null,\"加载驱动程序失败!\");

try { }

PreparedStatement pstmt1=con.prepareStatement(\"select * from limit where limit_Name=?\"); pstmt1.setString(1,limit.getSelectedItem().toString()); ResultSet rst=pstmt1.executeQuery(); rst.next();

String s=rst.getString(\"limit_Id\");

PreparedStatement pstmt=con.prepareStatement(\"update users set limit_Id=? where user_Id=?\"); pstmt.setString(1,s);

pstmt.setInt(2,Integer.parseInt(name.getText())); int n=pstmt.executeUpdate(); if(n>0){ }

JOptionPane.showMessageDialog(null,\"SQL语句执行错误!\提示\

JOptionPane.showMessageDialog(null,\"this.dispose();

JOptionPane.showMessageDialog(null,\"修改失败,请重新修改!\提示

\

\

}else{

\

} catch (SQLException e1) {

if(e.getSource()==qx){ }

this.dispose();

3.2.10 图书借还界面设计

//加载驱动

try {

} catch (ClassNotFoundException e1) { }

JOptionPane.showMessageDialog(null,\"

\

\//实现监视器中事件

public void actionPerformed(ActionEvent e) {

if(e.getSource()==selset){//查询用户借阅未归还数据并显示到表格

while(Model.getRowCount()>0){ } try {

if((usertext.getText().equals(\"\"))){ Model.removeRow(Model.getRowCount()-1);

}

}

JOptionPane.showMessageDialog(null,\"请输入用户号!\提示

\

}else{ }

JOptionPane.showMessageDialog(null,\"SQL

\

PreparedStatement pstmt1=con.prepareStatement(\"select * from users where user_Id=?\"); pstmt1.setString(1,usertext.getText()); ResultSet rst1=pstmt1.executeQuery(); if(rst1.next()){ }

rst1.close();

pstmt1.close();

con.close();

PreparedStatement pstmt=con.prepareStatement(\"select * from borrow where pstmt.setInt(1,Integer.parseInt(usertext.getText())); ResultSet rst=pstmt.executeQuery(); while(rst.next()){ }

rst.close();

pstmt.close();

dataTemp[0]=rst.getString(\"user_Id\"); dataTemp[1]=rst.getString(\"books_Id\"); dataTemp[2]=rst.getString(\"borrow_Time\"); dataTemp[3]=rst.getString(\"borrow_Qty\"); dataTemp[4]=rst.getString(\"return_Time\"); Model.addRow(dataTemp);//增加一行

user_Id=? and return_Time is null\");

}else{

JOptionPane.showMessageDialog(null,\"用户不存在请重新输入用户号!\提示

\

} catch (SQLException e1) {

\

if(e.getSource()==loan){//借阅图书

try {

if(usertext.getText().equals(\"\")){ }

else if((booktext.getText().equals(\"\"))){

JOptionPane.showMessageDialog(null,\"

\

JOptionPane.showMessageDialog(null,\"

\

\

\

}else{

PreparedStatement pstmt1=con.prepareStatement(\"select * from users where user_Id=?\"); pstmt1.setInt(1,Integer.parseInt(usertext.getText())); ResultSet rst1=pstmt1.executeQuery(); if(rst1.next()){

PreparedStatement pstmt3=con.prepareStatement(\"select * from books where

books_Id=?\");

}

if(e.getSource()==gh){//归还图书

}

}

JOptionPane.showMessageDialog(null,\"SQL

\

}

pstmt1.close();

rst1.close();

con.close();

pstmt3.setString(1,booktext.getText()); ResultSet rst3=pstmt3.executeQuery(); if(rst3.next()){ }

pstmt3.close(); rst3.close();

JOptionPane.showMessageDialog(null,\"用户不存在请重新输入用户号!\提示

if(rst3.getInt(\"books_Qtyx\")<1){

JOptionPane.showMessageDialog(null,\"图书库存不足不能借阅!\提示

\

}else{ }

JOptionPane.showMessageDialog(null,\"书籍不存在请重新输入ISBN号!\提示

PreparedStatement

pstmt=con.prepareStatement(\"insert

into

borrow(user_Id,books_Id)values(?,?)\");

pstmt.setInt(1,Integer.parseInt(usertext.getText())); pstmt.setString(2,booktext.getText()); int n=pstmt.executeUpdate(); if(n>0){//成功! }

pstmt.close();

PreparedStatement pstmt2=con.prepareStatement(\"update books set pstmt2.setString(1,booktext.getText()); int nnn=pstmt2.executeUpdate(); pstmt2.close();

JOptionPane.showMessageDialog(null,\"借阅成功!\借阅提示this.dispose();

\

}else{//失败

JOptionPane.showMessageDialog(null,\"借阅失败!\借阅提示

\

books_Qtyx=books_Qtyx-1 where books_Id=?\");

}else{

\

}else{

\

} catch (SQLException e1) {

\

}

}

try { }

if(usertext.getText().equals(null)){ }

else if((booktext.getText().equals(\"\"))){

JOptionPane.showMessageDialog(null,\"

\

JOptionPane.showMessageDialog(null,\"

\

\

\

}else{

PreparedStatement pstmt=con.prepareStatement(\"update borrow set return_Time=? where Date d = new Date();

DateFormat df = new SimpleDateFormat(\"yyyy-MM-dd hh:mm:ss\"); pstmt.setString(1,df.format(d)); }

JOptionPane.showMessageDialog(null,\"SQL

\

pstmt.setInt(2,Integer.parseInt(usertext.getText())); pstmt.setString(3,booktext.getText()); int n=pstmt.executeUpdate(); if(n>0){//成功! }

pstmt.close(); con.close();

PreparedStatement

pstmt2=con.prepareStatement(\"update

books

set

user_Id=? and books_Id=? and return_Time is null\");

books_Qtyx=books_Qtyx+1 where books_Id=?\");

pstmt2.setString(1,booktext.getText()); int nnn=pstmt2.executeUpdate(); pstmt2.close();

JOptionPane.showMessageDialog(null,\"归还成功!\归还提示 this.dispose();

JOptionPane.showMessageDialog(null,\"此用户没有借阅这本书籍,归还失败!\归

\

}else{//失败

还提示\

} catch (SQLException e1) {

\

3.2.11 图书超期界面设计

public void actionPerformed(ActionEvent e) {

if(e.getSource()==dj){

if(usertext.getText().equals(\"\")){

}

}

}

JOptionPane.showMessageDialog(null,\"请输入用户号!\提示

\

if(booktext.getText().equals(\"\")){ } try {

} catch (ClassNotFoundException e1) { } try { }

PreparedStatement

pstmt=con.prepareStatement(\"insert

into

JOptionPane.showMessageDialog(null,\"数据库驱动程序不存在\提示JOptionPane.showMessageDialog(null,\"

\

\

\

compensate(user_Id,book_Id,cpt_Cause,cpt_result,user_Id2)values(?,?,?,?,?)\");

pstmt.setInt(1,Integer.parseInt(usertext.getText())); pstmt.setString(2,booktext.getText()); pstmt.setString(3,exptext.getText());

pstmt.setString(4,chargetext.getText()+\"元\"); pstmt.setInt(5,userId); int n=pstmt.executeUpdate(); if(n>0){ }

JOptionPane.showMessageDialog(null,\"SQL

\

PreparedStatement

pstmt2=con.prepareStatement(\"update

books

set

books_Qtyx=books_Qtyx-1,books_Qty=books_Qty-1 where books_Id=?\");

pstmt2.setString(1,booktext.getText()); int nnn=pstmt2.executeUpdate(); pstmt2.close();

JOptionPane.showMessageDialog(null,\"this.dispose();

JOptionPane.showMessageDialog(null,\"登记失败!\提示\

\

\

}else{

} catch (SQLException e1) {

\

if(e.getSource()==qx){ }

this.dispose();

3.2.12 用户修改界面设计

//加载驱动

try {

} catch (ClassNotFoundException e1) { }

JOptionPane.showMessageDialog(null,\"加载驱动程序失败!\");

//监视器中实现的方法

public void actionPerformed(ActionEvent e) {

if(e.getSource()==inquire){ }

if(e.getSource()==alter){

try {

PreparedStatement

pstmt=con.prepareStatement(\"update

users

set

try {

PreparedStatement pstmt=con.prepareStatement(\"select * from users where user_Id=?\"); pstmt.setString(1,Idtext.getText());

rst.next();

SexText.setEnabled(true);

Teltext.setEnabled(true); Classtext.setEnabled(true); Statext.setEnabled(true);

con.close();//8、关闭数据库连接对象con

ResultSet rst=pstmt.executeQuery();

Nametext.setText(rst.getString(\"user_Name\")); SexText.setText(rst.getString(\"user_Sex\")); Teltext.setText(rst.getString(\"user_Tel\")); Timetext.setText(rst.getString(\"user_Time\")); Statext.setText(rst.getString(\"user_State\")); pstmt.close();//7、关闭预处理对象pstmt rst.close();

} catch (SQLException e1) { }

JOptionPane.showMessageDialog(null,\"SQL执行错误!\提示\

Classtext.setText(rst.getString(\"user_Class\"));

user_Name=?,user_Sex=?,user_Tel=?,user_State=?,user_Class=? where user_Id=?\");

pstmt.setString(1,Nametext.getText()); pstmt.setString(3,Teltext.getText()); pstmt.setString(5,Classtext.getText()); int n=pstmt.executeUpdate();

if(n>0){//成功!

JOptionPane.showMessageDialog(null,\"修改成功!\修改用户提示 this.dispose();

JOptionPane.showMessageDialog(null,\"修改失败!\修改用户提示

pstmt.setString(2,SexText.getText()); pstmt.setString(4,Statext.getText()); pstmt.setString(6,Idtext.getText());

\

}else{//失败

\

}

con.close();//8、关闭数据库连接对象con

pstmt.close();//7、关闭预处理对象pstmt } catch (SQLException e1) {

JOptionPane.showMessageDialog(null,\"SQL执行错误!\提示\

}

}

}

if(e.getSource()==Cancel){ }

this.dispose();

四、实训结论

五、结束语

六、参考文献

[1] 丁保康.《数据库系统原理》.经济出版社,2007

[2] 张月萍,李凌.《Java SE程序设计高级教程》.电子工业出版社,2011 [3] 洪维恩.《Java完全自学手册》.中国铁道出版社,2009

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- cepb.cn 版权所有 湘ICP备2022005869号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务