软件工程报告_图书馆管理系统_JAVA.docx

上传人:聆听****声音 文档编号:1959537 上传时间:2023-05-02 格式:DOCX 页数:49 大小:592.04KB
下载 相关 举报
软件工程报告_图书馆管理系统_JAVA.docx_第1页
第1页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第2页
第2页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第3页
第3页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第4页
第4页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第5页
第5页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第6页
第6页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第7页
第7页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第8页
第8页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第9页
第9页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第10页
第10页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第11页
第11页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第12页
第12页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第13页
第13页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第14页
第14页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第15页
第15页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第16页
第16页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第17页
第17页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第18页
第18页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第19页
第19页 / 共49页
软件工程报告_图书馆管理系统_JAVA.docx_第20页
第20页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

软件工程报告_图书馆管理系统_JAVA.docx

《软件工程报告_图书馆管理系统_JAVA.docx》由会员分享,可在线阅读,更多相关《软件工程报告_图书馆管理系统_JAVA.docx(49页珍藏版)》请在冰点文库上搜索。

软件工程报告_图书馆管理系统_JAVA.docx

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

<>tsglRecord

-type :

boolean

-dzID :

boolean

-book_ID:

boolean

-time :

time

<>dzglRecord

<>

zjRecord

bookreader

<>

administrator

-name:

String

-bookID:

String

-kbkyj:

boolean

-jsz :

String

<>administrator:

:

reader

<>administrator:

:

book

):

Boolean():

boolean():

boolean

+Creat(

+delete

+updata

-name :

String

-ID :

String

-password:

String

-other :

String

<>person

类图说明:

(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,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2