JAVA图书管理系统开发实训报告.docx
《JAVA图书管理系统开发实训报告.docx》由会员分享,可在线阅读,更多相关《JAVA图书管理系统开发实训报告.docx(25页珍藏版)》请在冰豆网上搜索。
JAVA图书管理系统开发实训报告
《JAVA图书管理系统开发》实训报告
课程名称:
JAVA图书管理系统开发
专业:
计算机应用技术
班级:
ZB10001
学号:
姓名:
成绩:
计算机学院
二〇一二年三月五日
一、程序设计目的
通过项目驱动的学习和综合实训,熟练掌握运用Java语言进行桌面应用程序开发的基本知识和技能;熟练掌握JAVA的基本语法与JDBC数据库技术的应用;进一步熟悉SQLServer数据库的数据库管理(数据库的创建、备份与恢复、函数与存储过程的应用、数据导入导出、作业的调度等)、表的设计(表的创建、修改、删除,字段的默认值、约束及关系等)、数据的查询处理(insert、update、delete、select语句的应用)等技术;并能结合数据库应用技术和软件工程技术进行桌面应用程序的开发,能基本胜任Java桌面开发程序员的岗位。
二、程序设计题目描述和要求
图书管理系统,是一个由人、计算机等组成的能进行管理信息的收集、传递、加工、保存、维护和使用的系统。
其功能一般包括:
图书信息管理、用户信息管理、图书借阅、图书归还、违约与毁坏赔偿、图书借还查询等等。
三、程序设计报告内容
系统需求分析
以我校实际情况为基础,对于图书馆图书管理设计一个适合于学校图书馆使用的图书管理系统。
还可以为学校领导提供图书的库存和图书流通量的查询。
该系统需要完成对图书类别管理、统计管理、库存管理、用户信息管理、图书借阅管理、图书归还管理、超期与损毁赔偿管理、图书借还查询管理、图书出入库和统计查询等。
功能需求描述
(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表示损毁。
对应数据需求描述
1、图书类别管理数据需求:
图书分类管理数据需求:
(按:
计算机、机械、建筑、文学、心理、艺术、经济、历史、地理九类进行分类)。
并对分类图书进行标识(计算机(JS)、机械(JQ)、建筑(JZ)、文学(WX)、心理(XL)、艺术(YS)、经济(JJ)、历史(LS)、地理(DL))。
并在标识符后面加四位编号(例子:
JS0001)。
数据项
数据需求
图书类别名称
按图书类别进行分类(初始分为九种),计算机、机械、建筑、文学、心理、艺术、经济、历史、地理。
在系统完成后可进行类别的添加和删除修改。
(10汉字内)
类别说明
对相应类别进行详细描述。
2、库存信息管理数据需求:
(1)入库管理数据需求:
数据项
数据需求
入库编号
用于在数据库中唯一标识入库信息。
自动增加
入库ISBN编号
用于唯一标识图书的图书ISBN编码。
入库图书数量
图书的数量。
入库时间
记录图书入库时间。
入库操作员编号
记录登记图书入库操作员的编号。
(2)出库管理数据需求:
出库编号
用于在数据库中唯一标识出库信息。
自动增加
出库ISBN编号
用于唯一标识图书的图书ISBN编码。
出库图书数量
图书数量
出库时间
记录图书出库时间。
出库操作员编号
登记图书出库操作员的编号。
3、用户信息管理数据需求:
(1)用户信息添加数据需求:
数据项
数据需求
用户编号
用于唯一标识学生,要求:
共8位,前2为年份,中间2位特殊类别标号(默认00),后面4位为报名序号。
姓名
15个汉字以内,可能带有特殊符号(可修改)。
性别
只能是“男”或“女”。
密码
任意6~~12位字符。
电话
十一为数字(座机前面加区号)。
班级
存储学院班级详细信息
注册时间
如:
2012-12-10
用户权限号
只能有以下四种(领导,管理员,教师,学生),
状态
包括:
正常、暂停使用和已注销
(2)用户权限管理:
数据项
数据需求
权限编号编号
用于标示权限类别的编号
权限名称
权限的名称。
(领导、教师、管理员、学生)
可借阅书籍
根据权限借阅不同数量的书籍。
(3)用户信息修改数据需求:
修改用户的信息。
数据项
数据需求
用户编号
用于唯一标识学生,要求:
共8位,前2为年份,中间2位特殊类别标号(默认00),后面4位为报名序号。
姓名
15个汉字以内,可能带有特殊符号(可修改)。
性别
只能是“男”或“女”。
密码
任意6~~12位字符。
电话
十一为数字(座机前面加区号)。
班级
存储学院班级详细信息
注册时间
如:
2012-12-10
用户权限号
权限的标识号码。
只能有以下四种(领导,管理员,教师,学生),
状态
包括:
正常、暂停使用和已注销
(5)用户信息删除数据需求:
删除用户的注册信息。
4、图书借阅,归还管理数据需求:
在借阅图书时的数据需求。
数据项
数据需求
借还编号
唯一标识借阅信息的编号。
在数据库中区别信息。
用户编号
管理员人工将用户编号输入登记框。
ISBN
管理员人工将图书编号输入登记框。
借阅时间
系统自动在电脑上获取时间。
借阅数量
登记借阅书籍的数量。
归还时间
在归还时自动获取时间。
5、图书超期和损毁赔偿管理数据需求:
数据项
数据需求
赔偿编号
唯一标识借阅信息编号。
自动增加。
用户编号
管理员人工将用户编号输入文本框。
ISBN编号
管理员人工将图书编号输入文本框。
情况描述
对于赔偿情况的详细描述
处理结果
管理员登记赔偿金额
收费时间
系统自动获取系统时间。
操作员编号
输入操作员编号。
数据库概念模型设计
图1用户实体图
图2权限实体图
图3图书实体图
图4类别实体图
图5借还实体图
图6赔偿实体图
图7入库实体图
图8出库实体图
图9功能实体图
图10模块实体图
图11各实体关系图
数据库逻辑模型设计模型设计
根据E-R图,将其转换为关系模式可得到以下8个关系模式:
用户(用户编号、姓名、性别、密码、电话、班级、注册时间、权限编号、状态)
权限(权限编号、权限名称、可借阅书籍)
模块(权限编号、功能名称)
图书(ISBN编号、图书名、作者、出版社、出版时间、书价、图书书类别名、库存量、现存量)
类别(图书类别名、说明)
借还(借阅编号、用户编号、ISBN、借阅时间、借阅数量、归还时间)
赔偿(赔偿编号、用户编号、ISBN编号、原因、处理结果、处理时间、操作员编号)
出库(出库编号、ISBN编号、出库图书数量、出库时间、出库操作员编号)
入库(入库编号、ISBN编号、入库图书数量、入库时间、入库操作员编号)
表一:
用户信息表(users)==(OK)
字段名称
类型
是否为空
默认值
是否主键
用户编号(user_Id)
int
notnull
自动增加
主键
用户名(user_Name)
varchar(10)
notnull
性别(user_Sex)
char
(2)
notnull
男
密码(user_Pwd)
char(12)
notnull
123456
电话(user_Tel)
varchar(30)
班级(user_Class)
varchar(50)
注册时间(user_Time)
datetime
notnull
自动获取
权限编号(limit_Id)
varchar(10)
notnull
学生
外键
状态(user_State)
char(4)
notnull
使用
表二:
用户权限表(limit)==(OK)
字段名称
类型
是否为空
默认值
是否主键
权限编号(limit_Id)
varchar(10)
notnull
自动增加
主键(S001)
权限类名(limit_Name)
varchar(15)
notnull
借阅书籍数量(limit_Qty)
int
notnull
3
表三:
图书信息表(books)
字段名称
类型
是否为空
默认值
是否主键
ISBN编号(book_Id)
varchar(17)
notnull
主键
图书名(book_Name)
varchar(30)
notnull
作者(book_Author)
varchar(10)
notnull
出版社(book_Society)
varchar(50)
notnull
出版时间(book_Time)
datatime
notnull
书价(book_Price)
int
notnull
图书类别名(book_Sort)
varchar(10)
notnull
计算机
外键
库存量(book_Qty)
int
现存量(book_Qtyx)
int
表四:
功能模块表(module)==(OK)
字段名称
类型
是否为空
默认值
是否主键
权限编号(lilmit_Id)
varchar(10)
notnull
外键
模块名称(module_Name)
varchar(30)
notnull
表五:
超期损毁表(compensate)
字段名称
类型
是否为空
默认值
是否主键
赔偿编号(cpt_Id)
int
notnull
主键
用户编号(user_Id)
int
notnull
外键
ISBN编号(book_Id)
varchar(17)
notnull
外键
原因(cpt_Cause)
varchar(50)
notnull
收费(cpt_result)
char(10)
notnull
收费时间(cpt_Time)
datatime
notnull
自动获取
操作员编号(user_Id)
int
notnull
外键
表七:
图书类别表:
(sort)==
字段名称
类型
是否为空
默认值
是否主键
图书类别名(book_Sort)
varchar(10)
notnull
计算机
主键
说明explain
text
表六:
借阅归还表(borrow)
字段名称
类型
是否为空
默认值
是否主键
借阅编号(borrow_Id)
int
notnull
主键
用户编号(user_Id)
Int
notnull
外键
ISBN编号(book_Id)
varchar(17)
notnull
外键
借阅时间(borrow_Time)
datetime
notnull
自动获取
借阅数量(borrow_Qty)
int
归还时间(return_Time)
datatime
自动获取
表八:
入库表:
(enter)
字段名称
类型
是否为空
默认值
是否主键
入库编号(enter_Id)
int
notnull
自动增加
主键
ISBN编号(book_Id)
varchar(17)
notnull
外键
入库图书数量(enter_Qty)
int
notnull
入库时间(enter_Time)
datatime
notnull
自动获取
入库操作员编号(user_Id)
int
notnull
外键
表九:
出库表(out)
字段名称
类型
是否为空
默认值
是否主键
出库编号(out_Id)
varchar(10)
notnull
自动增加
主键
ISBN编号(book_Id)
varchar(12)
notnull
外键
出库图书数量(out_Qty)
int
notnull
出库时间(out_Time)
datatime
notnull
自动获取
出库操作员编号(user_Id)
varchar(10)
notnull
外键
管理系统窗口图
系统详细设计与实现
登陆界面设计
publicvoidactionPerformed(ActionEvente){quals("")){quals("")){\data\\");
try{
FileWritertxt=newFileWriter(f);
()+"-");
()+"+");
();
}catch(IOExceptione){
\data\\");
try{
FileWritertxt=newFileWriter(f);
()+"-");
(""+"+");
();
}catch(IOExceptione){
\data\\");
BufferedReaderbr=newBufferedReader(fr);
try{
Stringline=();
().substring(0,().indexOf('-')));
().substring().indexOf('-')+1,().indexOf('+')));
}catch(IOExceptione){
();
}
}catch(FileNotFoundExceptione1){
();
}
}
主界面
voidsetAllFrameIcon(){sIcon())jf[i].setIcon(true);
}catch(PropertyVetoExceptione){
();
}
();
}
booleangetDakai(Strings){etTitle()))returnfalse;
}
returntrue;
}
voidopenFrame(Strings){etTitle()))
try{
jf[i].setIcon(false);
}catch(PropertyVetoExceptione){
oString());
intn=();
if(n>0){oString());
ResultSetrst=();
();
Strings=("limit_Id");
PreparedStatementpstmt=("updateuserssetlimit_Id=whereuser_Id=");
(1,s);
(2,()));
intn=();
if(n>0){
(null,"修改成功!
","提示",;
();
}else{
(null,"修改失败,请重新修改!
","提示",;
}
}catch(SQLExceptione1){
(null,"SQL语句执行错误!
","提示",;
}
}
if()==qx){
();
}
}
图书借还界面设计
quals(""))){
(null,"请输入用户号!
","提示",;
}else{
PreparedStatementpstmt1=("select*fromuserswhereuser_Id=");
(1,());
ResultSetrst1=();
if()){
PreparedStatementpstmt=("select*fromborrowwhereuser_Id=andreturn_Timeisnull");
(1,()));
ResultSetrst=();
while()){
dataTemp[0]=("user_Id");
dataTemp[1]=("books_Id");
dataTemp[2]=("borrow_Time");
dataTemp[3]=("borrow_Qty");
dataTemp[4]=("return_Time");
(dataTemp);quals("")){
(null,"请输入用户号!
","提示",;
}
elseif(().equals(""))){
(null,"请输入图书号!
","提示",;
}else{
PreparedStatementpstmt1=("select*fromuserswhereuser_Id=");
(1,()));
ResultSetrst1=();
if()){
PreparedStatementpstmt3=("select*frombookswherebooks_Id=");
(1,());
ResultSetrst3=();
if()){
if("books_Qtyx")<1){
(null,"图书库存不足不能借阅!
","提示",;
}else{
PreparedStatementpstmt=("insertintoborrow(user_Id,books_Id)values(,)");
(1,()));
(2,());
intn=();
if(n>0){quals(null)){
(null,"请输入用户号!
","提示",;
}
elseif(().equals(""))){
(null,"请输入图书号!
","提示",;
}else{
PreparedStatementpstmt=("updateborrowsetreturn_Time=whereuser_