资源描述
软 件 工 程 概 论
实
验
报
告
学 院 软件学院
年 级 2007级
班 级 五班
学 号 3007218129
姓 名 田玮
2010年 5月 1日
软件工程概论上机实验报告
题目:图书馆自动循环系统概要设计及详细设计
学院名称 软件学院
专 业 软件工程
学生姓名 田玮
学 号 3007218129
年 级 2007 级
班 级 五班
时 间 2010年 5月1日
目 录
项目名称 1
结构化设计 2
详细设计 3
实验结论 11
项目名称
“图书馆自动循环系统概要设计及详细设计”。
考虑一个图书馆自动循环系统。每本书有一个条形码,每个借书者有一张借书卡,上面也有一个条形码。当借书者想借书时,图书管理员扫描该书和借书卡上的条形码,并在计算机终端上输入C。类似地,还书时,图书管理员再次进行扫描,并输入R。图书管理员可以向书库中增加图书(+)或去掉图书(-)。借书者可以在一台终端上确定书库中特定作者的所有书籍(借书者输入A=之后,再输入作者的名字)、特定标题的所有书籍(输入T=之后,再输入标题)或者特定主题范围的所有书籍(输入S=之后,再输入主题范围)。最后,如果借书者想要一本目前已借出的书,图书管理员可以在该书上做个标记,当该书被归还时,将为申请过它的借书者保留起来(输入H=之后,再输入该书的书号)。
11
结构化设计
采用事务分析的技术,从借书者和图书管理员的角度来进行设计。设计图书馆自动循环系统时,将其分成两个部分:分析器和分配器。
Input
Operation_analysis
borrow
return
Apply_the_book
add
delete
Check_borrow_book_info
Record_borrow_order
Print_message_on_screen
Check_return_book_info
Complete_borrow_order
Check_order_book_info
Record_apply_order
search
Author_search
title_search
subject_search
Print_result_table
Book_identification
Book_identification
Borrower_name
Borrower_number
Borrower_number
Book_identification
“H”
Order_book_identification
A=
T=
S=
Temp_table
Temp_table
Temp_table
“+”
“-”
order
Audit_information
Audit_information
Audit_information
Audit_information
Audit_information
Audit_information
图1-1 图书馆自动循环系统的事物处理分析图
详细设计
详细设计也称过程设计,是程序设计的蓝图。该设计是在数据设计、体系结构设计和接口设计完成之后进行的。过程设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程尽可能的简明易懂。结构化程序设计是实现上述目标的关键技术,因此是过程设计的逻辑基础。过程设计的结果基本上决定了最终程序设计的质量。
将程序体系结构元素变换为对软件构件的过程描述。该实验主要是利用过程设计工具进行程序设计。
由于时间限制,要求由一个小组而不是由单个程序员负责编写所有模块的代码。由于这个原因,必须给出每个模块的详细设计,使得不用参考其他模块就可以理解每个模块。
表2-1 borrow模块的详细设计
模块名称
Borrow
模块类型
函数
返回类型
Boolean
输入参数
Book_identification
输出参数
无
错误消息
无
文件存取
LIBRARY_BOOK_DATA
文件修改
无
模块调用
无
描述
通过管理员扫描条形码获得的book_identification,然后在数据库LIBRARY_BOOK_DATA表中查找相应的book_identification,找到后,读取其book_status一项,如果为2,表示书在库中,返回true;如果为1或0,表示已下架或已借出,返回false。
表2-2 check_borrow_book_info模块的详细设计
模块名称
check_borrow_book_info
模块类型
函数
返回类型
Boolean
输入参数
Borrower_number
book_identification
输出参数
无
错误消息
“该书已被预定,不能借阅”
文件存取
BOOKED_ORDER_DATA
文件修改
可能做删除操作
模块调用
无
描述
管理员请借书者刷借书卡,以获得borrower_number。根据当前的book_identification值,在数据库的BOOKED_ORDER_DATA中查找ordered_book_identification值是否有与之相同的,如果没有,则结束过程,返回true。如果有相同项,则继续查看相同项中的booker_number值,与当前borrower_number值是否相同,如果相同,则表示订阅者与借阅者是同一人,则将BOOKED_ORDER_DATA中这一项删除,然后结束过程,返回true。如果预订者与借阅者不同,则结束过程,弹出错误消息,返回false。
表2-3 record_borrow_order模块的详细设计
模块名称
record_borrow_order
模块类型
函数
返回类型
Boolean
输入参数
Book_identification
Borrower_number
Borrower_name
Borrow_date
输出参数
Borrow_order
错误消息
无
文件存取
BORROWED_ORDER_DATA
文件修改
添加项
模块调用
Generate_identification
描述
将输入的book_identification, borrower_number, borrower_name, borrow_date整合成borrow_order添加到BORROWED_ORDER_DATA表中,由过程generate_identification生成一个借阅编码,也添加到这一项中,操作完成后,返回true,否则返回false。
表2-4 generate _identification模块的详细设计
模块名称
generate _identification
模块类型
函数
返回类型
long
输入参数
无
输出参数
Borrow_identification
错误消息
无
文件存取
无
文件修改
无
模块调用
无
描述
按照一定顺序生成一个无重复的12位整数,后两位为校验码,作为借阅编码,生成完毕后,将所生成的borrow_identification值返回。
表2-5 return模块的详细设计
模块名称
Return
模块类型
函数
返回类型
Boolean
输入参数
Book_identification
输出参数
无
错误消息
无
文件存取
LIBRARY_BOOK_DATA
文件修改
无
模块调用
无
描述
通过管理员扫描条形码获得的book_identification,然后在数据库LIBRARY_BOOK_DATA表中查找相应的book_identification,找到后,读取其book_status一项,如果为1,表示已借出,返回true;如果为2或0,表示已下架或在库中,返回false。
表2-6 check_return_book_info模块的详细设计
模块名称
check_return_book_info
模块类型
函数
返回类型
Boolean
输入参数
Book_identification
输出参数
无
错误消息
无
文件存取
ORDERED_BOOK_DATA
文件修改
修改book_status项
模块调用
无
描述
在ORDERED_BOOK_DATA表中寻找是否有ordered_book_identification项与当前book_identification相同的,如果没有,过程结束,返回true。如果有,将表中这一项中的book_status值修改为2,表示归还到库中,过程结束,返回true,否则返回false。
表2-7 complete_borrow_order模块的详细设计
模块名称
complete_borrow_order
模块类型
函数
返回类型
Boolean
输入参数
Book_identification
Borrower_number
Return_date
输出参数
无
错误消息
无
文件存取
BORROWED_ORDER_DATA
文件修改
添加值
模块调用
描述
通过book_identification和borrower_number寻找BORROWED_ORDER_DATA表中的相应项,根据输入的return_date,修改其中的return_date值,过程结束返回true,否则返回false。
表2-8 apply_the_book模块的详细设计
模块名称
apply_the_book
模块类型
函数
返回类型
Boolean
输入参数
字符“H”
输出参数
无
错误消息
无
文件存取
无
文件修改
无
模块调用
无
描述
预订者输入“H”后,屏幕上显示出请求预订者输入个人信息的对话框,生成完毕后过程结束返回true,否则返回false。
表2-9 check_order_book_info模块的详细设计
模块名称
check_order_book_info
模块类型
函数
返回类型
Boolean
输入参数
Ordered_book_identification
输出参数
无
错误消息
“已经有人预定了这本书,无法再预定!”
文件存取
ORDERED_BOOK_DATA
文件修改
无
模块调用
无
描述
检查ORDERED_BOOK_DATA中是否有ordered_book_identification值与当前要订阅书的ordered_book_identification值相同的项,如果有,则弹出错误消息,返回false,如果没有,则过程结束,返回true。
表2-10 record_apply_order模块的详细设计
模块名称
record_apply_order
模块类型
函数
返回类型
Boolean
输入参数
Ordered_book_identification
booker_number
booker_name
输出参数
无
错误消息
无
文件存取
ORDERED_BOOK_DATA
文件修改
添加项
模块调用
Generate_identification
描述
根据预订者输入的个人信息:booker_number, booker_name以及Ordered_book_identification,在ORDERED_BOOK_DATA中建立新的项,调用generate_identification生成一个预定编码,过程结束后,返回true,否则返回false。
表2-11 author_search模块的详细设计
模块名称
Author_search
模块类型
函数
返回类型
Stack
输入参数
Book_author
输出参数
Author_stack
错误消息
无
文件存取
LIBRARY_BOOK_DATA
文件修改
无
模块调用
Print_result_table
描述
根据借书者输入的book_author,在LIBRARY_BOOK_DATA表中进行查找,每查到book_author与之相同的一项,则将其book_idenfication添加到author_stack栈中,直至查询结束,调用print_result_table,返回true。否则返回false。
表2-12 title_search模块的详细设计
模块名称
title _search
模块类型
函数
返回类型
Stack
输入参数
Book_title
输出参数
title_stack
错误消息
无
文件存取
LIBRARY_BOOK_DATA
文件修改
无
模块调用
Print_result_table
描述
根据借书者输入的book_title,在LIBRARY_BOOK_DATA表中进行查找,每查到book_title与之相同的一项,则将其book_idenfication添加到title _stack栈中,直至查询结束,调用print_result_table,返回true。否则返回false。
表2-13 subject_search模块的详细设计
模块名称
Subject_search
模块类型
函数
返回类型
Stack
输入参数
Book_subject
输出参数
Subject_stack
错误消息
无
文件存取
LIBRARY_BOOK_DATA
文件修改
无
模块调用
Print_result_table
描述
根据借书者输入的book_subject,在LIBRARY_BOOK_DATA表中进行查找,每查到book_subject中包含相同关键字的一项,则将其book_idenfication添加到title _stack栈中,直至查询结束,调用print_result_table,返回true。否则返回false。
表2-14 print_result_table 模块的详细设计
模块名称
Print_result_table
模块类型
函数
返回类型
Boolean
输入参数
Stack
输出参数
无
错误消息
“没有找到相应的内容!”
文件存取
LIBRARY_BOOK_DATA
文件修改
无
模块调用
无
描述
读取stack中的内容,如果stack为空,弹出错误消息,返回false。如果不为空,根据stack中读取到的book_identification值,在LIBRARY_BOOK_DATA查找,没找到一项,就将其book_identification,book_author,book_subject,book_title,book_destination,book_status以表格形式显示在屏幕上,完成后返回true。否则返回false。
表2-15 add模块的详细设计
模块名称
add
模块类型
函数
返回类型
Boolean
输入参数
+
Book_author
Book_title
Book_subject
Book_destination
输出参数
无
错误消息
无
文件存取
LIBRARY_BOOK_DATA
文件修改
添加项
模块调用
无
描述
图书管理员输入“+”后,弹出添加书目的对话框,请求管理员输入实际信息如:book_author,Book_title,Book_subject和Book_destination,根据这些信息在LIBRARY_BOOK_DATA中建立新的项,调用generate_identification生成新的条形码,完成后返回true,否则返回false。
表2-16 delete模块的详细设计
模块名称
Delete
模块类型
函数
返回类型
Boolean
输入参数
-
输出参数
无
错误消息
无
文件存取
LIBRARY_BOOK_DATA
文件修改
添加项
模块调用
无
描述
图书管理员输入“-”后,列出LIBRARY_BOOK_DATA表,请求管理员选择要删除的项,管理员可以通过book_author,Book_title,Book_subject和Book_destination进行查找,管理员选择后删除掉这一项的所有信息,完成后返回true,否则返回false。
表2-17 operation_analysis模块的详细设计
模块名称
operation_analysis
模块类型
函数
返回类型
Boolean
输入参数
Book_identification
char
输出参数
无
错误消息
“错误的操作”
文件存取
无
文件修改
无
模块调用
Borrow
Return
Apply_the_book
Search
Add
delete
描述
判断是否输入了book_identification,如果输入了book_identification,则调用borrow,返回为false时则调用return。
如果没有输入book_identification,判断是否输入了字符,如果字符为H,调用apply_the_book;如果字符为A,调用author_search;如果字符为T,调用title_search;如果字符为S,调用subject_search;如果字符为+,调用add过程;如果字符为-,调用delete过程。
如果不为上述任何一种,弹出错误消息,返回false。结束后返回true。
实验结论
传统的设计阶段由三个活动组成:结构化设计、详细设计和设计测试。设计过程的输入是规格说明文档,描述产品要做什么。输出是设计文档,描述产品如何做才能完成。
在结构化设计期间,对产品进行模块化分解,即,仔细分析规格说明,产生具有期望功能的模块结构。这个活动的输出是模块的列表,以及对于它们如何相互连接的说明。从抽象的观点来看,在结构化设计期间,假定某些模块存在,然后根据那些模块开展设计。
传统设计阶段的下一个活动是详细设计,在此期间对每个模块进行详细设计。例如,选择特定的算法和数据结构。同样,从抽象的观点来看,在这个活动期间,将模块互连构成一个完整产品的事实被忽略了。
展开阅读全文