文档编号:LMS—3 版本号:V10 文档名称:详细设计说明书 项目名称:图书管理系统 项目负责人:范柰青,陈小凌 编写:范柰青 2000年04月08旦 校对:范柰青,陈小凌2000年04月08且 审核:范柰青,陈小凌 2000年04月08且 批准:范柰青,陈小凌2000年04月08旦 开发单位:电信科学技术研究院研究生部99级 1.引言 1.1编写目的 根据《需求规格说明书》、《概要设计说明书》,在仔细考虑讨论之后,我们 对《图书管理系统》软件的功能划分、数据结构、软件总体结构的实现有了进 步的想法。我们将这些想法记录下来,作为详细设计说明书,为进一步设计软件、 编写代码打下基础 1.2项目背景
文档编号: LMS--3 版 本 号: V1.0 文档名称: 详细设计说明书 项目名称: 图书管理系统 项目负责人:范柰青,陈小凌 编写:范柰青 2000 年 04 月 08 日 校对:范柰青,陈小凌 2000 年 04 月 08 日 审核:范柰青,陈小凌 2000 年 04 月 08 日 批准:范柰青,陈小凌 2000 年 04 月 08 日 开发单位:电信科学技术研究院研究生部 99 级 1. 引言 1.1 编写目的 根据《需求规格说明书》、《概要设计说明书》,在仔细考虑讨论之后,我们 对《图书管理系统》软件的功能划分、数据结构、软件总体结构的实现有了进一 步的想法。我们将这些想法记录下来,作为详细设计说明书,为进一步设计软件、 编写代码打下基础。 1.2 项目背景
随着社会信息量的与日俱增,作为信息存储的主要媒体之一图书, 数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要 使用方便而有效的方式来管理自己的书籍。在计算机日益普及的今天,对 个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便 许多,这也充分应用硬件资源;对图书管理部门而言,以前单一的手工检 索已不能满足人们的要求,为了便于图书资料的管理更为需要有效的图书 管理软件。 图书管理系统软件LMSⅥ1.0是一功能比较完善的数据管理软件,具 有数据操作方便高效迅速等优点。该软件采用功能强大的数据库软件开发 工具进行开发,具有很好的可移植性,可在应用范围较广的DOS, WINDOWS 系列等操作系统上使用。除此以外,LMSV1.0可通过访问权限控制以及数 据备份功能,确保数据的安全性。 1.3定义 文档中采用的专门术语的定义及缩略词简要如下: rary Management System,图书管理系统 1.4参考资料 [1]郑人杰,殷人昆,陶永雷。《实用软件工程》(第二版)。北京:清华大学 出版社。1997。 [2]郑章,程刚,张勇等。《 Visual c++6.0数据库开发技术》北京:机械 工业出版社。1999。 2总体设计 软件结构 主模块 用户界面 子模块调度 用户输入 输出 借书 还书 图书查询 系统操作 借书模块 读者身份查验 用户界面 图书查验 借书登记
随着社会信息量的与日俱增,作为信息存储的主要媒体之一图书, 数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要 使用方便而有效的方式来管理自己的书籍。在计算机日益普及的今天,对 个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便 许多,这也充分应用硬件资源;对图书管理部门而言,以前单一的手工检 索已不能满足人们的要求,为了便于图书资料的管理更为需要有效的图书 管理软件。 图书管理系统软件 LMS V1.0 是一功能比较完善的数据管理软件,具 有数据操作方便高效迅速等优点。该软件采用功能强大的数据库软件开发 工具进行开发,具有很好的可移植性,可在应用范围较广的 DOS,WINDOWS 系列等操作系统上使用。除此以外,LMS V1.0 可通过访问权限控制以及数 据备份功能,确保数据的安全性。 1.3 定义 文档中采用的专门术语的定义及缩略词简要如下: LMS:Library Management System,图书管理系统。 1.4 参考资料 [1] 郑人杰,殷人昆,陶永雷。《实用软件工程》(第二版)。北京:清华大学 出版社。1997。 [2] 郑章,程刚,张勇等。《Visual C++ 6.0 数据库开发技术》北京:机械 工业出版社。1999。 2 总体设计 1. 软件结构 主 模 块 用户界面 子模块调度 用户输入 输 出 借 书 还 书 图书查询 系统操作 借 书 模 块 读者身份查验 用户界面 图书查验 借书登记
还书模块 用户界面 借书记录查验 记录还书信息 还书登记 输入 获取相 输出 计算超期 操作命 数据库操作 关信息 令生成 数据库查询 系统操作模块 系统操作 用户 子模块调度 权限查验 界面 输 输 更改 图书库 读者库数据 系统 数据 数据 出 口令 操作 操作 统计 设置 备份 恢复 图书库操作模块 用户界面 获取记录 事务处理 新
还 书 模 块 借书记录查验 记录还书信息 数据库查询 还书登记 操作命 令生成 数据库操作 用户界面 输入 获取相 关信息 输出 计算超期 系 统 操 作 模 块 系统 设置 系统操作 权限查验 更改 口令 子 模 块 调 度 读者库 操作 数据 统计 用户 界面 输 入 输 出 图书库 操作 数据 备份 数据 恢复 获取记录 图 书 库 操 作 模 块 用户界面 输 入 更新 显示 输 出 事 务 处 理 移动 至上 移动 至下 移动 至 移动 至第 加 入 删 除 移动 至
读者库操作模块 用户界面 获取记录 事务处理 输更新输 移动 加删|移动 移动移动移动 入 显示 至 入除至上 至下 至第 指定 记|记 个 一个 最后 D 录录记录 记录 记录 记录 获取 相关 信息 输入IDD查验 更新当前记录 数据库查询 数据库操作 询 用户界面 查询命令生成 数据库查询 结果显示
数据统计 / 图书查询 用户界面 查询命令生成 数据库查询 结果显示 数据库查询 数据库操作 输入 ID ID 查验 更新当前记录 获取记录 读 者 库 操 作 模 块 事 务 处 理 移动 至下 一个 记录 移动 至 最后 记录 移动 至第 一个 记录 移动 至上 一个 记录 移动 至 指定 ID 删 除 记 录 加 入 记 录 用户界面 输 入 更新 显示 输 出 获取 相关 信息
系统设置模块 用户界面 系统设置获取 操作员记录集获取 事务处理 更新 下一个删加保存当 操作员操作员除入前设置 更新当前记录 数据库查询 数据库操作 3程序描述 1.主模块 功能 借书模块 建立与数据库连接 初始化 获取系统设置 还书模块 运行主对话框 根据输入调用子模块 UNTL输 退出系统时断开与数据库的连接 图书查询模块 输入项目 用户鼠标点击输入 系统操作模块 程序逻辑 见右图 退出 存储分配 内部数据:数据库连接 m coNnection_ Connectionptr数据库连接指针 m IsConnected BOOL 数据库连接指示
3 程序描述 1. 主模块 ⚫ 功能 建立与数据库连接 获取系统设置 运行主对话框 根据输入调用子模块 退出系统时断开与数据库的连接 ⚫ 输入项目 用户鼠标点击输入 ⚫ 程序逻辑 见右图 ⚫ 存储分配 内部数据: 数据库连接 m_pConnection _ConnectionPtr 数据库连接指针 m_IsConnected BOOL 数据库连接指示 系统设置模块 用户界面 输 入 更新 显示 输 出 系统设置获取 操作员记录集获取 数据库查询 事务处理 上一个 操作员 下一个 操作员 删 除 加 入 保存当 前设置 数据库操作 更新当前记录 初始化 UNTIL 输 入”退出” 借书模块 还书模块 图书查询模块 系统操作模块 退出
系统设置 m MaxLBNum int 可借图书数上限 借书天数上限 子对话框 m_ BookOutDlg CBookOutDlg借书对话框 m BooklnDlg CBookInDlg还书对话框 m BookQuiryDlg CBookQuiryDlg图书查询对话框 n Sys saLg 系统操作对话框 测试要点 数据库连接情况:正常情况,数据库文件缺少,外部系统异常, 系统设置获取:正常情况,外部系统异常 对用户输入的响应:合法输入,能够正常调用子模块 非法输入,系统能否辨别,并作出响应(提出警告) 子模块的异常状况,系统能否及时做出响应。 2.借书模块 功能 查验输入的读者证号 运行借书对话框 获取该读者的相关信息 查验输入的图书号 登记借书 输入项目 读者证号、图书书号(用户输入) 输出项目 读者信息(姓名):读者已借图书信息(书名、借书日期) 程序逻辑 初始化 要求输入读者证号 返回 操作取消“ 警告 输入不合理? 图书查验模块 返回 读者查验模块 返回 查验结果为不能出借? 警告 查验结果为该号不存在? 返回 借书登记 更新相关信息 借书对话框初始化 更新显示 UNL输入返回”:确3t( ConnectionPtr cOnnection 关闭借书对话框
系统设置 m_MaxLBNum int 可借图书数上限 m_MaxLBDay int 借书天数上限 子对话框 m_BookOutDlg CBookOutDlg 借书对话框 m_BookInDlg CBookInDlg 还书对话框 m_BookQuiryDlg CBookQuiryDlg 图书查询对话框 m_SysDlg CSysDlg 系统操作对话框 ⚫ 测试要点 数据库连接情况:正常情况,数据库文件缺少,外部系统异常。 系统设置获取:正常情况,外部系统异常。 对用户输入的响应: 合法输入,能够正常调用子模块; 非法输入,系统能否辨别,并作出响应(提出警告); 子模块的异常状况,系统能否及时做出响应。 2. 借书模块 ⚫ 功能 查验输入的读者证号 运行借书对话框 获取该读者的相关信息 查验输入的图书号 登记借书 ⚫ 输入项目 读者证号、图书书号(用户输入) ⚫ 输出项目 读者信息(姓名);读者已借图书信息(书名、借书日期); ⚫ 程序逻辑 ⚫ 接口 调用形式:void CBookDlg::LendBook(const _ConnectionPtr pConnection, 初始化 要求输入读者证号 读者查验模块 借书对话框初始化 关闭借书对话框 返回 操作取消? 输入不合理? 警告 返回 查验结果为该号不存在? 警告 返回 UNTIL 输入”返回” 输入确认? 图书查验模块 借书登记 更新相关信息 更新显示 查验结果为不能出借? 返回
const int MaxLBNum) 传入参数: cOnnection 数据库连接指针 MaxlBNum系统参数(可借图书上限) 传出参数:无 存储分配 内部数据:数据库 m cOnnection_ Connectionptr数据库连接指针 用户界面 m strReader Name CString 读者姓名 mstrLBInf CString 已借图书信息 m-strLBNum CString 已借图书数显示 m IBookid 欲借图书书号 内部参数m1 Readers 当前读者证号 m MaxlBNum 可借图书数上限 测试要点 模块正常运行流程 用户输入数据检查(读者证号、图书书号),包括数据合理性检査,以及合法性检査 数据库操作 数据库连接异常时的响应情况 2.1读者查验模块 功能 查验输入的读者证号是否合法(即是否存在与该读者证号对应的读者记录) 输入项目 读者证号(整型常数),读者姓名(引用型字符串 输出项目 查验结果(BOOL值) 程序逻辑 生成数据库查询语句 调用数据库査询模块 IF返回结果集为空(不存在该读者证号) 置读者姓名字符串为空 返回”非法读者证号 ELSE 置读者姓名字符串 返回”合法读者证号” 接口 调用形式: BOoL Check Reader( const long ReaderID, CString& strReaderName) 传入参数: Readerld(常量参数传入) 待查验的读者证号 m_ cOnnection(借书模块内的全局变量) 数据库连接指针 传出参数:读者证号存在/不存在标志(返回值) strReaderName(传入的引用参数)读者证号对应的读者姓名 (读者证号不存在时置为空) 存储分配 局部变量:数据库 pReade RecordsetPtr数据库査询结果集指针 查询参数 eqUiry variant t 查询命令 nUll varlan 查询连接
const int MaxLBNum) 传入参数:pConnection 数据库连接指针 MaxLBNum 系统参数(可借图书上限) 传出参数:无 ⚫ 存储分配 内部数据: 数据库 m_pConnection _ConnectionPtr 数据库连接指针 用户界面 m_strReaderName CString 读者姓名 m_strLBInf CString 已借图书信息 m_strLBNum CString 已借图书数显示 m_lBookID long 欲借图书书号 内部参数 m_lReaderID long 当前读者证号 m_MaxLBNum int 可借图书数上限 ⚫ 测试要点 模块正常运行流程 用户输入数据检查(读者证号、图书书号),包括数据合理性检查,以及合法性检查 数据库操作 数据库连接异常时的响应情况 2.1 读者查验模块 ⚫ 功能 查验输入的读者证号是否合法(即是否存在与该读者证号对应的读者记录) ⚫ 输入项目 读者证号(整型常数),读者姓名(引用型字符串) ⚫ 输出项目 查验结果(BOOL 值) ⚫ 程序逻辑 生成数据库查询语句 调用数据库查询模块 IF 返回结果集为空(不存在该读者证号) 置读者姓名字符串为空 返回”非法读者证号” ELSE 置读者姓名字符串 返回”合法读者证号” ⚫ 接口 调用形式:BOOL CheckReader(const long ReaderID,CString &strReaderName) 传入参数:ReaderID(常量参数传入) 待查验的读者证号 m_pConnection(借书模块内的全局变量) 数据库连接指针 传出参数:读者证号存在/不存在标志(返回值) strReaderName(传入的引用参数) 读者证号对应的读者姓名 (读者证号不存在时置为空) ⚫ 存储分配 局部变量:数据库 pReader _RecordsetPtr 数据库查询结果集指针 查询参数 vtQuiry _variant_t 查询命令 vNull _variant_t 查询连接
类型转换 strQuiry Estrin 查询命令类型转换 vtemp variant t 查询结果类型转换 测试要点 数据库连接正常时 输入合理合法参数 输入参数不合理 输入参数不合法 数据库连接异常:数据库数据异常(读者姓名为空) 2.2图书查验模块 功能 查验输入的图书书号是否合法 输入项目 图书书号(整型常量) 输出项目 查验结果(BOL值 程序逻辑 生成数据库査询语句 调用数据库查询模块 IF返回结果集为空(不存在该图书书号) 返回”非法图书书号 ELSE 返回”合法图书书号 接口 调用形式: BooL Checkbook( const long Book Id) 传入参数: BookID(整型常量) 带查验的图书书号 传出参数:书号合法/不合法标志(返回值)查验结果 存储分配 局部变量:数据库 Recordsetptr数据库查询结果集指针 查询参量 vtQuiry variant t 查询字符串 variant t 查询连接参量 类型转换 strQuiry Cstring 查询命令类型转换 测试要点 数据库连接正常 数据库数据正常 输入的书号合理合法 输入的书号不合理 输入的书号不合法 数据库数据异常 数据库连接异常 2.3相关信息获取模块 功能 获取合法读者的借书记录 输入项目 合法读者证号(整型常量):读者已借图书信息(引用型字符串)
类型转换 strQuiry Cstring 查询命令类型转换 vtemp _variant_t 查询结果类型转换 ⚫ 测试要点 数据库连接正常时 输入合理合法参数 输入参数不合理 输入参数不合法 数据库连接异常;数据库数据异常(读者姓名为空) 2.2 图书查验模块 ⚫ 功能 查验输入的图书书号是否合法 ⚫ 输入项目 图书书号(整型常量) ⚫ 输出项目 查验结果(BOOL 值) ⚫ 程序逻辑 生成数据库查询语句 调用数据库查询模块 IF 返回结果集为空(不存在该图书书号) 返回”非法图书书号” ELSE 返回”合法图书书号” ⚫ 接口 调用形式: BOOL CheckBook(const long BookID) 传入参数: BookID(整型常量) 带查验的图书书号 传出参数: 书号合法/不合法标志(返回值) 查验结果 ⚫ 存储分配 局部变量: 数据库 pBook _RecordsetPtr 数据库查询结果集指针 查询参量 vtQuiry _variant_t 查询字符串 vNull _variant_t 查询连接参量 类型转换 strQuiry Cstring 查询命令类型转换 ⚫ 测试要点 数据库连接正常 数据库数据正常 输入的书号合理合法 输入的书号不合理 输入的书号不合法 数据库数据异常 数据库连接异常 2.3 相关信息获取模块 ⚫ 功能 获取合法读者的借书记录 ⚫ 输入项目 合法读者证号(整型常量);读者已借图书信息(引用型字符串)
输出项目 查询操作结果(BOOL值) 程序逻辑 生成数据库查询语句 调用数据库查询模块 IF操作成功 WHILE查询结果集未读至文件尾 读取各项值 置入读者已借图书信息字符串 返回”操作成功 ELSE 置空读者已借图书信息字符串 返回”操作失败 接口 调用形式: BOOL GetLBInf( const long Reader ID, CString& strlBInf) 传入参量: Reader(整型常量 查询参数 strlBInf(引用型字符串)返回用的格式化的查询信息 传出参量:查询成功/失败标志(B00L值)查询操作结果信息 存储分配 局部变量:数据库 rEcords RecordsetPtr数据库查询结果集指针 查询参数 vtQuiry variant t 查询命令字符串 variant t查询连接参量 类型转换 strQuiry CString 查询命令类型转换 测试要点 数据库连接正常 数据库数据正常 输入正常(读者证号合法) 输入异常(读者证号非法) 数据库数据异常 数据库连接异常 2.4借书登记模块 功能 登录借书信息 输入项目 读者证号(整型常量):图书书号(整型常量) 输出项目 操作结果(BOOL值) 程序逻辑 生成数据库操作命令 调用数据库操作模块 IF操作成功 返回”操作成功
⚫ 输出项目 查询操作结果(BOOL 值) ⚫ 程序逻辑 生成数据库查询语句 调用数据库查询模块 IF 操作成功 WHILE 查询结果集未读至文件尾 读取各项值 置入读者已借图书信息字符串 返回”操作成功” ELSE 置空读者已借图书信息字符串 返回”操作失败” ⚫ 接口 调用形式:BOOL GetLBInf(const long ReaderID,CString &strLBInf) 传入参量:ReaderID(整型常量) 查询参数 strLBInf(引用型字符串) 返回用的格式化的查询信息 传出参量:查询成功/失败标志(BOOL 值) 查询操作结果信息 ⚫ 存储分配 局部变量: 数据库 pRecords _RecordsetPtr 数据库查询结果集指针 查询参数 vtQuiry _variant_t 查询命令字符串 vNull _variant_t 查询连接参量 类型转换 strQuiry CString 查询命令类型转换 ⚫ 测试要点 数据库连接正常 数据库数据正常 输入正常(读者证号合法) 输入异常(读者证号非法) 数据库数据异常 数据库连接异常 2.4 借书登记模块 ⚫ 功能 登录借书信息 ⚫ 输入项目 读者证号(整型常量);图书书号(整型常量) ⚫ 输出项目 操作结果(BOOL 值) ⚫ 程序逻辑 生成数据库操作命令 调用数据库操作模块 IF 操作成功 返回”操作成功
返回操作失败” 接囗 调用形式: BOoL Writeblrecord( const long Reader ID, const long BookID) 传入参数: Reader(整型常量) 操作参数(借阅者读者证号) BookID(整型常量 操作参数(借阅图书书号) 传出参数:操作成功/失败标志(返回值) 存储分配 局部变量:操作命令参数 RecsAffected variant t操作影响 variant t操作命令 类型转换 strCommand 操作命令类型转换 CString借书日期类型转换 oleToday COleDateTime借书日期 测试要点 数据库连接正常 数据库操作正常 输入参数合法 输入参数非法 数据库操作异常 数据库连接异常 3.还书模块 功能 运行还书对话框 查验输入的图书书号 对合法输入登录还书信息 显示相关信息(本次还书操作信息,尚未归还图书的相关信息,读者信息) 输入项目 图书书号(用户输入) 输出项目 相关信息(本次还书操作信息,尚未归还的图书信息,读者信 程序逻辑 初始化 借书记录查验模块 警告 初始化还书对话框 该借书记录不存在 返回 登记还书 TL输入”返回 输入确认 记录还书信息模块 关闭还书对话框 接口 获取相关信息模块 调用形式: CBookInDlg: Returnbook( const Connectie lon 新显
ELSE 返回”操作失败” ⚫ 接口 调用形式:BOOL WriteBlrecord(const long ReaderID,const long BookID) 传入参数:ReaderID(整型常量) 操作参数(借阅者读者证号) BookID(整型常量) 操作参数(借阅图书书号) 传出参数:操作成功/失败标志(返回值) ⚫ 存储分配 局部变量: 操作命令参数 vRecsAffected _variant_t 操作影响 vtCommand _variant_t 操作命令 类型转换 strCommand CString 操作命令类型转换 strToday CString 借书日期类型转换 oleToday COleDateTime 借书日期 ⚫ 测试要点 数据库连接正常 数据库操作正常 输入参数合法 输入参数非法 数据库操作异常 数据库连接异常 3. 还书模块 ⚫ 功能 运行还书对话框 查验输入的图书书号 对合法输入登录还书信息 显示相关信息(本次还书操作信息,尚未归还图书的相关信息,读者信息) ⚫ 输入项目 图书书号(用户输入) ⚫ 输出项目 相关信息(本次还书操作信息,尚未归还的图书信息,读者信息) ⚫ 程序逻辑 ⚫ 接口 调用形式:CBookInDlg::ReturnBook(const _ConnectionPtr pConnection, 初始化 初始化还书对话框 关闭还书对话框 输入确认 借书记录查验模块 登记还书 记录还书信息模块 获取相关信息模块 更新显示 警告 该借书记录不存在 返回 UNTIL 输入”返回