软件工程报告_图书馆管理系统_JAVA.docx
- 文档编号:1959537
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:49
- 大小:592.04KB
软件工程报告_图书馆管理系统_JAVA.docx
《软件工程报告_图书馆管理系统_JAVA.docx》由会员分享,可在线阅读,更多相关《软件工程报告_图书馆管理系统_JAVA.docx(49页珍藏版)》请在冰点文库上搜索。
XXXX大学
软件工程实验报告
(2010--2011年度第二 学期)
课程名称:
软件工程课程设计 题 目:
图书管理系统 院 系:
计算机科学与技术系班 级:
计科082 组 长:
XXX 组 员:
XX 指导教师:
姜瑛 设计周数:
七周
日期:
2008年5月30日
一、实验目的
通过软件开发的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。
二、实验要求
1.学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,编码和测试方面的知识;
2.熟悉自动化的软件开发工具PowerDesigner,并将其运用于软件开发的全过程;
3.进一步加强和提高软件工程文档的编写能力;
4.培养协作能力和团队精神。
5.
三、所用仪器、材料(设备名称、型号、规格等或使用软件)
系统的开发环境及运行环境:
1.操作系统:
WindowsXPProSP32.建模工具:
PowerDesigner153.数据库系统:
SQLServer2008
4.开发工具:
Netbeans5.Web服务器:
tomcat平台
四、实验过程原始记录(测试数据、图表、计算等)
一、主要内容
1.实验题目:
图书管理系统,本系统要实现读者借阅图书的基本功能,包括读者对图书的借出、归还、计费及读者查看自己的借阅信息;管理员查看读者信息、添加读者、管理读者、管理图书、添加图书。
2.运用面向对象技术、UML及可视化的建模工具完成系统的需求分析与设计。
3.使用PowerDesigner作为需求分析与设计的建模工具,包括静态建模和动态建模,并利用对象模型自动生成数据模型,自动建立数据库。
4.采用分层模式的应用设计模式进行系统的设计实现。
5.系统要实现四个模块功能:
读者模块、管理员模块、图书模块和公用模块。
6.初步建立系统原型,实现关键的功能,并对系统进行测试。
7.编写课程设计报告。
二、任务分配
任务
负责人
参与人
备注
需求分析
李健
崔辉毅
总体设计
崔辉毅
李健
详细设计
崔辉毅
李健
系统实现与测
李健
崔辉毅
试
三、进度计划
序号
设计内容名称
完成时间
备注
1
分组及确定题目
2011.4.1
2
初步的需求分析与设计建模
2011.4.2~4.5
3
详细的需求分析与设计建模
2011.4.6~4.20
4
关键模块的实现与测试
2011.4.21~5.5
5
编写课程设计报告
2011.5.6~5.20
四、系统需求分析
图书管理系统主要满足来自三方面的需求,这三个方面分别是读者用户、读者代
理用户和管理员用户,也即是三类用户角色。
(1)读者用户是主要的需求者,主要需求功能是查询个人信息、查看自己借阅情况及进行借书、还书操作等;
(2)读者代理用户主要需求功能是协助读者用户进行相关操作、以及利用本系统提交修改借阅信息等;
(3)管理员用户的功能需求较为复杂,包括对读者信息、读者代理员信息、图书信息进行管理。
在读者信息管理子模块中,实现对读者信息的添加、修改、删除操作,还可以输入查询条件进行查询操作。
在读者代理员管理子模块中,实现对读者代理员信息的添加、修改、删除、查询等操作。
在图书管理子模块中,实现对图书信息的添加,实现对图书的修改、删除、查看某本图书的详细信息等。
本系统将读者用户、读者代理员用户、管理员用户的身份及权限进行严格的划分,让管理员拥有最高权限,可以查看、维护系统中的所有信息,如添加读者,添加图书,修改图书信息等;让读者代理员拥有查看读者借书情况,以及提交新借阅的权限;让读者拥有借书及还书的权限。
修改密码模块的权限每个用户都可拥有,用以修改自己的密码信息。
通过进行严格的权限划分,可以更好地进行管理,也可更好地保护用户信息安全。
一、用例图:
图书管理系统用例图
二、活动图:
U0读者信息验证:
U1查询及修改:
U2查询图书信息:
U3借书:
U5还书:
U7注销:
U8管理员身份验证:
U9管理读者信息:
U10添加读者:
U12删除读者:
U14管理图书信息:
U15添加图书:
U16修改图书:
三、类图:
U17删除图书:
-kjs:
int
-yjs:
ZjRecord[m]
-qk:
Float
+Creat()
+delete()
+updata()
:
boolean
:
boolean
:
boolean
1
+huanShu():
boolean
+Creat() :
boolean
* +delete() :
boolean
+updata() :
boolean
+updataAll():
boolean +findByID():
boolean
+findByID():
boolean +updataAll():
boolean
+borrow() :
boolean +borrow() :
boolean
+huanshu():
boolean +huanshu():
boolean
<
record
+doRecord():
boolean
+set() :
boolean
-ID:
String
+dzID() :
String
+book_ID():
String
+toString():
String
+doRecord():
boolean
-type:
int
-dzID:
String
-time:
time
-type :
int
-book_ID:
String
-time :
time
<
-type :
boolean
-dzID :
boolean
-book_ID:
boolean
-time :
time
<
<
zjRecord
bookreader
<
administrator
-name:
String
-bookID:
String
-kbkyj:
boolean
-jsz :
String
<
:
reader
<
:
book
):
Boolean():
boolean():
boolean
+Creat(
+delete
+updata
-name :
String
-ID :
String
-password:
String
-other :
String
<
类图说明:
(1)person类是一个系统角色用户的基类;
(2)reader类继承自person类,主要方法有:
Creat()用于添加读者;
Delete()用于删除读者;Update()用于更新读者一般信息;updataAll()更新所有信息;findByID()通过ID找到这个类;borrow()借书;huanshu()还书;
(3)administrator类继承自person类。
(4)book类是一个图书类,主要方法有:
Huanshu()用于更改还书信息;Creat()用于添加图书;
Delete()用于删除图书;Update()用于更新图书一般信息;updataAll()更新所有信息;findByID()通过ID找到这个类;borrow()借书;huanshu()还书;
(5)record类是一记录数据的基类;Set()设置要记录的属性;doRecord()把记录存入数据库中;
(6)dzglRecord类继承自record类。
(7)tsglRecord类继承自record类。
(6)zjglRecord类继承自record类,主要方法有:
dzID()用于记录读者账号;bookID()用于记录图书编号;
四.状态机图:
4.1读者类的状态图:
借书[kjs>0]
无借书
kjs=MAX
借书[kjs>0]
借书[kjs=0]
有借书
0 不可借书 kjs=0 还书[kjs=MAX] 还书[kjs 4.2图书类的状态图: 还书[kjs □不 在馆 不在馆 □不 五、顺序图: (1)借书顺序图: 借书顺序图 : 不不 : 不不 □不不不 □不不 uan] [-za alt ig □不 [za iguan] □不不不 : 不不不不 不 □不不 □不不不 □不不不 : 不不不不 □不 □不不不 : 不不2 : 不不2 还书顺序图 (2)还书顺序图: 六、数据库表结构: 数据库目录结构: 1、表book的详细数据字段: 序号 字段名 字段类型 说明 备注 1 name varchar 图书名称 2 ID varchar 图书编号 关键字 3 zaiguan tinyint 在馆状态 4 readerID varchar 借阅者ID 可为空 2、表dzgrecord的详细数据字段: 序号 字段名 字段类型 说明 备注 1 TYPE tinyint 记录类型 2 ID varchar 记录ID 关键字 3 reader varchar 读者ID 4 time date 记录时间 5 book varchar 记录图书 3、表global的详细数据字段: 序号 字段名 字段类型 说明 备注 1 zjRecordID int 租借记录ID 2 gsgRecordID int 读者记录ID 3 tsglRecordID int 图书管理记录ID 4 zqk float 总欠款 5 visitNumber int 总访问人数 4、表gly的详细数据字段: 序号 字段名 字段类型 说明 备注 1 Password varchar 管理员密码 2 ID varchar 管理员ID 关键字 5、表reader的详细数据字段: 序号 字段名 字段类型 说明 备注 1 name varchar 读者姓名 2 ID varchar 读者编号 关键字 3 Password varchar 读者密码 4 Other varchar 其他属性 可为空 5 Kjs Int 可借书数量 6 Qk Float 读者欠款 7 ZjRecord0 varchar 租借记录 8 ZjRecord1 varchar 租借记录 9 ZjRecord2 varchar 租借记录 6、表tsglrecord的详细数据字段: 序号 字段名 字段类型 说明 备注 1 Type Tinyint 记录种类 2 bookID varchar 图书编号 3 Time Date 记录时间 4 ID varchar 记录ID 关键字 7、表zjrecord的详细数据字段: 序号 字段名 字段类型 说明 备注 1 type Tinyint 记录种类 2 readerID varchar 读者ID 3 bookID varchar 书籍ID 4 Time Date 记录时间 七.系统实现 本系统采用了三层架构来实现,即分为用户界面层(UI)、业务逻辑层(BLL)和数据访问层(DAL),用户界面层是展示给用户的界面,方便用户与系统进行交互;业务逻辑层是对系统业务实体的封装,完成系统业务功能;数据访问层直接与数据库打交道,为业务逻辑层提供底层的数据库操作。 7.1文件目录结构: 界面: 控制类: 数据类: 7.2界面效果(详细源代码见附件): 默认主页: 读者登录: 进入主界面: 查看图书信息: 读者信息: 借书: 完成后个人信息和图书信息: 还书: 还书完成后个人信息及图书信息: 管理员所有界面效果如下: 图书管理: 7.3业务逻辑(完整源代码见附件): 借书核心代码: protected void doGet(HttpServletRequest request,HttpServletResponseresponse) throwsServletException,IOException{HttpSessionsession=request.getSession(); readerre=(reader)session.getAttribute("reader");Stringid=request.getParameter("id");Connectioncn=null; StringdriverName="com.mysql.jdbc.Driver"; Stringurl="jdbc: mysql: //localhost: 3306/library";try{ Class.forName(driverName); cn=DriverManager.getConnection(url);System.out.println("取得数据库连接成功: "); }catch(Exceptione){ System.out.println("取得数据库连接错误: " +e.getMessage()); } re.borrow(cn,id);response.sendRedirect("/ruanA/login/isreal.jsp"); 还书核心代码: protected void doGet(HttpServletRequest request,HttpServletResponseresponse) throwsServletException,IOException{Stringid=request.getParameter("id");Connectioncn=null; StringdriverName="com.mysql.jdbc.Driver"; Stringurl="jdbc: mysql: //localhost: 3306/library";try{ Class.forName(driverName); cn=DriverManager.getConnection(url);System.out.println("取得数据库连接成功: "); }catch(Exceptione){ System.out.println("取得数据库连接错误: " +e.getMessage()); } bookbo=newbook();bo.findbyID(cn,id);bo.huanshu(cn); response.sendRedirect("/ruanA/login/isreal.jsp"); } 7.4数据层主要代码: 7.4.1person类: publicabstractclassperson{privateStringname;privateStringID; privateStringpassword;privateStringother; publicabstractbooleaninstert(Connectioncn); //在数据库中创 建 publicabstractbooleandeleat(Connectioncn);//在数据库中删除publicabstractbooleanuptade(Connectioncn);//在数据库中更新 /** *@returnthename */ publicStringgetName(){returnname; } /** *@paramnamethenametoset */ publicvoidsetName(Stringname){this.name=name; } /** *@returntheID */ publicStringgetID(){returnID; } /** *@paramIDtheIDtoset */ publicvoidsetID(StringID){this.ID=ID; } /** *@returnthepassword */ publicStringgetPassword(){returnpassword; } /** *@parampasswordthepasswordtoset */ publicvoidsetPassword(Stringpassword){this.password=password; } /** *@returntheother */ publicStringgetOther(){returnother; } /** *@paramothertheothertoset */ publicvoidsetOther(Stringother){this.other=other; } } 7.4.2reader类: /* *Tochangethistemplate,chooseTools|Templates *andopenthetemplateintheeditor. */ packagedata; importjava.sql.Connection; importjava.sql.PreparedStatement;importjava.sql.ResultSet; /** * *@authorchy *Stringname; *StringID; *Stringpassword; *Stringother; */ publicclassreaderextendsperson{ privateintkjs;privatefloatqk; privateStringyjs0;//假设没人最多借3本书privateStringyjs1; privateStringyjs2; @Override publicbooleaninstert(Connectioncn){ String sql = "insert into reader(name,ID,password,other,kjs,qk,ZjRecord0,ZjRecord1,ZjRecord2)" +"values(? ? ? ? ? ? NULL,NULL,NULL)"; try{ PreparedStatementps=cn.prepareStatement(sql);ps.setString(1,this.getName()); ps.setString(2,this.getID());ps.setString(3,this.getPassword());ps.setString(4,this.getOther());ps.setInt(5,3); ps.setFloat(6,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 报告 图书馆 管理 系统 _JAVA