1、 软件体系结构 大作业报告 姓 名: 于春游 学 号: 班 级: 0805051 院 系: 数学与计算机学院 日 期: 任课教师: 丁月华 软件需求说明书 1引言 1.1编写目的 一个小型图书馆管理系统, 1.
2、2作业题目 1. 借书, 还书; 2. 在图书馆中增加/删除一本书; 3. 按照作者名或专业领域检索一批书; 4. 找出被某位读者借出的一批书; 5. 找出最近借走某本图书的读者. 该系统有两类用户:图书管理员与普通读者.功能4可供普通读者查找她们自己借出的书目.功能1, 2, 5只供图书管理员使用. 该系统必须满足以下限制: 1. 馆中所有未借出的书籍能够供读者随时借阅. 2. 在同一时刻, 一本书不能既被借出, 又可供借阅. 3. 一个读者一次借出的书籍数目不能超过预定值. 1.3定义 列出本文件中用到的专门术语的定义和外文首字母组词的原词组。 1.4
3、参考资料 教材: 软件体系结构原理/实践与方法 张友生 等 清华大学出版社 2. 参考书籍 l 软件体系结构( 第2版) 张友生 等 清华大学出版社 -11 l 软件构架实践( 第2版) (SOFTWARE ARCHITECTURE IN PRACTICE, SECOND EDITION) ( 美) LEN BASS, PAUL CLEMENTS, RICK KAZMAN 清华大学出版社 -3 l 软件体系结构 : (美)MARY SHAW; DAVID GARLAN 牛振东 江鹏 金福生等编译 清华大学出版社 -3-1 l 大型软件体系结构: 使用UM
4、L实践指南 作者: ( 美) JEFF GARLAND RICHARD ANTHONY 译 者: 叶俊民 汪望珠 电子工业出版社 -3 l 软件架构设计 温昱 电子工业出版社 -3 l 面向模式的软件体系结构 卷1: 模式系统 Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sornmerlad, Michael Stal著, 1996. 译者: 贲可荣 郭福亮 等) l 面向模式的软件体系结构 卷2: 用于并发和网络化对象的模式 Douglas Schmidt, Michael Stal, Hans Rohn
5、ert, Frank Buschmann, 著, 1996. l 面向模式的软件体系结构 卷3: 资源管理模式 机械工业出版社 -10 3. 参考课程网站 l http://125.71.228.222/wlxt/ncourse/72231330/web/website/sadp/index.html 电子科技大学 软件体系结构与设计模式 l http://210.42.106.79:8080/course/index.htm 华中科技大学 软件体系结构 4.参考网站 l 豆丁网 l 维普资讯 l 万方数据资源系统 l CNKI 中国知网 l
6、EBSCO: Elsevier SDOS 2任务概述 2.1目标 实现题目所要求的系统功能 l 图书检索系统: 经过图书证读者能够进行查询图书馆书目 l 图书管理系统: 管理员能够经过此系统对书进行借出登记、 增加/删除新书、 查询书目信息 2.2用户的特点 本软件最终用户为图书馆管理员以及借书人: 其中: 借书人只能进行图书书目查询、 图书管理员能进行全部操作, 因此要求图书管理员能充分掌握该系统。 3需求规定 3.1对功能的规定 制作的图书管理系统对系统支持和支持的并行操作用户指标作出以下规定: 图书馆客户端的台数: 200台 系统支持的终端书
7、 3个 支持的并行操作用户指标: >200 3.2对性能的规定 3.2.1精度 鉴于图书馆数量的要求, 输入输出的精度应控制在0.01 4运行环境规定 4.1设备 PC台式机 4.2支持软件 软件平台: Windows Xp以及更高版本 Oracle /Mysql数据库 4.3接口 用户界面: 实现用户和软件之间的简易操作性 硬件接口: 采用标准的键盘鼠标控制接口, 能够提供与多种打印机之间的接口, 该部分有操作系统决定。 概要设计说明书 2总体设计 2.1需求规定 按照需求分析文档中的规格要求,
8、使用条形码扫描进体统, 从而进行借书、 还书, 2.3基本设计概念和处理流程 l 借阅管理 l 读者信息录入 l 图书查询: 2.5功能需求与程序的关系 本条用一张如下的矩阵图说明各项功能需求的实现同各块程序的分配关系: 书目管理 读者信息管理 打印管理 借书 √ √ 读者注册 √ 查询图书 √ 增加/删除图书 √ 查询读者所借出的书 √ √ 找出最近借出的书 √ √ 图书馆图书批量查询 √ √ 2.6人工处理过程 借出图书时扫描条形码 图书按区摆放 3接口设计 3.
9、1用户接口 采用页面形式的图形界面, 且提供鼠标、 键盘的支持, 界面设计遵循以下规则: ·界面的一致性; ·给出简单的错误提示; ·给予信息反馈; ·操作可逆: 使得读者能够进行重复操作 3.2外部接口 本软件应提供条形码扫描仪的支持; 运行于Windows XP级以上版本的系统; 3.3内部接口 系统管理模块是图书管理员的操作模块, 必须设置操作员后才能使用其它模块; 图书管理模块和图书查询模块必须先有图书数据后才能使用统计和查询模块; 借阅模块必须提供借阅者信息后才能继续操作; 5系统数据结构设计 5.1逻辑结构设计要点 5.2物理结构
10、设计要点 在逻辑设计基础上增加如下表结构: ·出版社: 记录图书印刷单位出版社信息 ·图书书位信息 提示读者图书所在位置 ·系统参数 图书馆名, 借阅期限, 以及相应的系统信息 5.3数据结构与程序的关系 图书维护 图书证办理 读者查询 借阅管理 系统管理 报表统计 图书信息表【book】 √ 读者信息表 【reader】 √ √ √ √ 用户借阅 【borrow】 √ √ √ 操作员表 【login】 √ 详细设计说明书 1引言 1.1编写目的 为了完
11、成此次软件结构大作业, 选择了图书管理系统 读者为: 作业批改老师 1.2背景 a. 图书管理系统 b. 本项目的任务提出者、 开发者: 于春游 c. 用户: 图书馆管理员, 读者用户 2程序系统的结构 l 软件结构 主 模 块 用户界面 子模块调度 用户输入 图书查询 还 书 输 出 借 书 系统操作 借 书 模 块 读者身份查验 用户界面 图书查验 输入 输入 获取相 关信息 输出 数据库查询 借书登记 操
12、作命 令生成 数据库操作 还 书 模 块 借书记录查验 记录还书信息 数据库查询 还书登记 操作命 令生成 数据库操作 用户界面 输入 获取相 关信息 输出 计算超期 系 统 操 作 模 块 系统 设置 系统操作 权限查验 更改 口令 子 模 块 调 度 读者库 操作 数据 统计 用户 界面 输 入 输 出 图书库 操作 数据
13、备份 数据 恢复 获取记录 数据库查询 数据库操作 图 书 库 操 作 模 块 用户界面 输 入 更新 显示 输 出 事 务 处 理 移动 至上 一个 记录 移动 至下 一个 记录 移动 至 最后 记录 移动 至第 一个 记录 加入记录 删除记录 移动 至 指定 ID 更新当前记录 输入ID ID查验 借书 记录 查验
14、 数据库查询 数据库操作 更新当前记录 输入ID ID查验 获取记录 读 者 库 操 作 模 块 事 务 处 理 移动 至下 一个 记录 移动 至 最后 记录 移动 至第 一个 记录 移动 至上 一个 记录 移动 至 指定 ID 删除记录 加入记录 用户界面 输 入 更新 显示 输 出 获取 相关 信息 数据统计 / 图书查询 用户界面 查询命令生成 数据
15、库查询 结果显示 输入 输出 生成结 果列表 输入 排序 结果列 表显示 系统设置模块 用户界面 输 入 更新 显示 输 出 系统设置获取 操作员记录集获取 数据库查询 事务处理 上一个 操作员 下一个 操作员 删 除 加 入 保存当 前设置 数据库操作 更新当前记录 初始化 主模块 功能 系统查询模块 图书查询模块 还书模块 借书模块 建立与数据库连接 获取系统设置 运行主对话框 根据输入调用子模块
16、退出系统时断开与数据库的连接 输入项目 用户鼠标点击输入 程序逻辑 见右图 存储分配 内部数据: 数据库连接 m_pConnection _ConnectionPtr 数据库连接指针 m_IsConnected BOOL 数据库连接指示 系统设置 m_MaxLBNum int 可借图书数上限 m_MaxLBDay int 借书天数上限 子对话框 m_BookOutDlg CBookOutDlg 借书对话框 m_BookInDlg CBookInDlg 还书对话框
17、 m_BookQuiryDlg CBookQuiryDlg 图书查询对话框 m_SysDlg CSysDlg 系统操作对话框 测试要点 数据库连接情况: 正常情况, 数据库文件缺少, 外部系统异常。 系统设置获取: 正常情况, 外部系统异常。 对用户输入的响应: 合法输入, 能够正常调用子模块; 非法输入, 系统能否辨别, 并作出响应(提出警告); 子模块的异常状况, 系统能否及时做出响应。 借书模块 功能 查验输入的读者证号 运行借书对话框 获取该读者的相关信息 查验输入的图书号 登记借书 输入项目 读者
18、证号、 图书书号(用户输入) 输出项目 读者信息(姓名); 读者已借图书信息(书名、 借书日期); 程序逻辑 接口 调用形式: void CBookDlg::LendBook(const _ConnectionPtr pConnection, const int MaxLBNum) 传入参数: pConnection 数据库连接指针 MaxLBNum 系统参数(可借图书上限) 传出参数: 无 存储分配 内部数据: 数据库 m_pConnection _ConnectionPtr 数据库连接指针 用户界面 m_strReade
19、rName CString 读者姓名 m_strLBInf CString 已借图书信息 m_strLBNum CString 已借图书数显示 m_lBookID long 欲借图书书号 内部参数 m_lReaderID long 当前读者证号 m_MaxLBNum int 可借图书数上限 操作取消 对话框初始化 输入读者证号 查 验 输入不合理 借书对话框 点击返回 查验 出错 借书登记 更新相关信
20、息及显示 关闭对话框 2.4 借书登记模块 功能 登录借书信息 输入项目 读者证号(整型常量); 图书书号(整型常量) 输出项目 操作结果(BOOL值) 程序逻辑 生成数据库操作命令 调用数据库操作模块 IF 操作成功 返回”操作成功” ELSE 返回”操作失败” 接口 调用形式: BOOL WriteBlrecord(const long ReaderID,const long BookID) 传入参数: ReaderID(整型常量) 操作参数(借阅者读者证号) BookID(整型常量) 操作参数(借阅图书
21、书号) 传出参数: 操作成功/失败标志(返回值) 存储分配 局部变量: 操作命令参数 vRecsAffected _variant_t 操作影响 vtCommand _variant_t 操作命令 类型转换 strCommand CString 操作命令类型转换 strToday CString 借书日期类型转换 oleToday COleDateTime 借书日期 测试要点 数据库连接正常 数据库操作正常 输入参数合法 输入参数非法 数据库操作异常 数据库连接异常 还书模块 功能 运
22、行还书对话框 查验输入的图书书号 对合法输入登录还书信息 显示相关信息(本次还书操作信息, 尚未归还图书的相关信息, 读者信息) 输入项目 图书书号(用户输入) 输出项目 相关信息(本次还书操作信息, 尚未归还的图书信息, 读者信息) 程序逻辑 点击退出 初始对话框 出错返回 借书记录查验模块 登记还书 更新还书信息及显示 关闭对话框 接口 调用形式: CBookInDlg::ReturnBook(const _ConnectionPtr pConnection, const int MaxLBDay)
23、传入参量: pConnection(数据库连接指针常量) 提供数据库连接 MaxLBDay(整型常量) 系统参数(借书天数上限) 传出参量: 无 存储分配 内部变量: 数据库 m_pConnection _ConnectionPtr 数据库连接指针 m_pRecords _RecordsetPtr 数据库查询结果集指针 用户界面 m_lBookID long 欲还图书书号 m_strLenderID CString 借阅者图书证号显示 m_strLender CString 借阅者姓名
24、 m_strRBInf CString 已还图书信息显示 m_strNRBInf CString 未还图书信息显示 m_strRBNum CString 已还图书数显示 m_strNRBNum CString 未还图书数显示 内部参数 m_lCurrID long 当前还书者读者证号 m_intRBNum int 已还图书计数 m_MaxLBDay int 借书天数上限 测试要点 模块正常工作流程 对输入的查验, 包括输入值的合法性与合理性检验 数据库连接
25、异常能否做出适当处理 数据库数据异常时能否判断并给予适当处理 图书查询模块 功能 根据给定查询条件, 查询数据库, 获取图书信息 输入项目 查询方式指定以及查询关键字 输出项目 查询结果列表显示 程序逻辑 接口 调用形式: CBookQuiryDlg::QuiryBook(const _ConnectionPtr pConnection) 传入参数: pConnection(数据库连接指针) 传出参数: 无 存储分配 内部变量: 数据库 m_pBooks _RecordsetPtr 数据库查询结果集指针 用户界面 m_str
26、Author CString 作者关键字 m_bAuthor BOOL 作者查询选择状态 m_strBookName CString 书名关键字 m_bBookName BOOL 书名查询选择状态 m_strPublisher CString 出版社关键字 m_bPublisher BOOL 出版社查询选择状态 m_intYear1 int 出版时间关键字 m_intYear2 int 出版时间关键字 m_intMonth1 int 出版
27、时间关键字 m_intMonth2 int 出版时间关键字 m_bPubTime BOOL 出版时间查询选择状态 m_intTimeType int 出版时间查询方式选择 局部变量: 查询参数 vtQuiry _variant_t 查询命令 vNull _variant_t 查询连接 类型转换 strQuiry CString 查询命令类型转换 测试要点 数据库连接正常 数据库数据正常 获得正确的查询结果并显示 数据库数据异常 给出警告 数据库连接异常 给出警告






