软件工程导论实验报告Word格式.docx
《软件工程导论实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《软件工程导论实验报告Word格式.docx(29页珍藏版)》请在冰豆网上搜索。
(1)数据项描述
1)数据项名称:
借书证号
含义说明:
惟一标识一个借书证
类型:
字符型
长度:
50
逻辑关系:
不允许为空
2)数据项名称:
用户名
读者的名称
20
3)数据项名称:
密码
对用户名和操作员管理员进行加密
10
允许为空
4)数据项名称:
性别
5)数据项名称:
所在系别
6)数据项名称:
所在班级
7)数据项名称:
操作员名称
字符型
30
8)数据项名称:
操作员简称
惟一标识一个操作员
10
9)数据项名称:
操作员级别
对操作员和管理员进行区分
10)数据项名称:
图书编号
惟一标识一个图书
11)数据项名称:
图书名称
50
12)数据项名称:
作者
13)数据项名称:
14)数据项名称:
15)数据项名称:
出版社
16)数据项名称:
出版时间
日期时间型
8
17)数据项名称:
价格
整型
4
18)数据项名称:
备注
200
19)数据项名称:
借书日期
日期时间
20)数据项名称:
还书日期
(2)数据结构描述
1)数据流名称:
用户情况
定义了一个读者的有关信息
组成结构:
用户情况=用户名+借书证号+密码+性别+所在系别+所在班级
2)数据流名称:
操作员情况含义说明:
定义了一个操作员的有关信息
组成结构:
操作员情况=操作员名称+操作员简称+操作员级别+操作员密码
3)数据流名称:
图书情况
定义了一个图书的有关信息
图书情况=图书编号+图书名称+作者+出版社+出版时间+价格+备注
(3)数据流(非数据项)说明
借书单
含义:
读者借书时要填写的单据
来源:
读者
去向:
审核借书
数据流量:
250份/天
组成:
借书单=借书证号+图书编号+借书日期
还书单
读者还书时要填写的单据
审核还书
250份/天
还书单=图书编号+还书日期
(4)数据存储说明
1)数据存储名称:
图书数据表
存放图书的有关信息
图书编号+图书名称+作者+出版社+出版时间+价格+备注
说明:
书号具有惟一性和非空性
2)数据存储名称:
用户信息表
存放读者的注册信息
用户名+借书证号+密码+性别+所在系别+所在班级
证号具有惟一性和非空性,性别只能是男和女
3)数据存储名称:
借书记录
存放读者的借书,还书信息
借书证号+图书编号+借书日期+还书日期
要求能够立即查询
(5)处理过程说明
1)处理过程名称:
图书管理
输入:
图书情况,
输出:
图书记录
处理说明:
对馆内所有图书按图书编号进行管理,将图书数据数据化,存储图书数据表中。
2)处理过程名称:
读者管理
读者情况,
读者记录
建立读者信息表,对读者进行统一编号,实现读者记录
表的增删改维护功能。
3)处理过程名称:
查看数目
借书请求,读者,,
借书记录,图书信息
实现根据图书编号等查询图书。
4)处理过程名称:
借书处理
图书情况,读者,借书记录
确认读者符合借书条件,办理借书手续。
5)处理过程名称:
还书处理
对照相应的图书编号可办理还书手续。
6)处理过程名称:
安全管理
操作员情况,用户情况
操作员级别,操作员记录,用户记录
通过用户名和口令,确认用户身份,保证系统的安全型。
实验二
实验内容:
采用面向数据流的设计方法设计系统软件结构,使用Visio画出软件层次图。
(2学时)
①
学习总体设计的基本方法;
②
掌握面向数据流的设计方法;
③
通过对实验
(一)中DFD图的分析,使用Visio画出软件层次图
。
④编写出初步的系统设计报告
实验结果:
顶层数据流图:
第0层图:
第一层图:
(1):
登入子系统
(2):
管理子系统
(3):
查询子系统
第二层图:
处理新书购入
(2)处理学生借书
处理学生还书
(4):
处理图书注销
(5)处理学生信息查询
(6)处理图书信息查询
实验三
完成实验
(二)中的两到三个主要功能模块的详细设计;
编写部分代码(2学时)
要求:
学习详细设计的基本方法;
掌握详细设计图形工具的使用方法;
给出主要功能模块的算法
选择程序设计语言编写主要功能模块代码
图书基本信息录入模块
首先输入图书录入的编号(不为0)判断是否有重复的编号,若有,则提示用户该书已存在,若无则继续录入书名、作者、出版社、单价。
voidputin()/*定义录入函数*/
{
inty=1;
system("
cls"
);
while(y)
printf("
\t请输入您的书籍的书号:
"
scanf("
%s"
library.book[library.count].number);
\t请输入书名:
library.book[library.count].name);
\t请输入作者名:
library.book[library.count].author);
\t请输入出版社:
library.book[library.count].publish);
\t请输入出版时间:
library.book[library.count].time);
\t请输入该书的价格:
fflush(stdin);
%f"
&
library.book[library.count].price);
library.count++;
\n是否继续录入(1.继续;
0,退出录入):
%d"
y);
if(y!
=1)
{
y=0;
break;
}
save();
}
图书基本信息查询模块
用户先选择图书查询方式(按书名查找或按书号查找)输入图书书名或书号后,查找出该图书是否存在,若存在,则显示该图书信息,若不存在则提示用户无此图书信息。
voidsearch_by_author()/*定义按作者名查询*/
chars3[20];
intflag=1;
printf("
请输入要查询的书的作者:
"
fflush(stdin);
scanf("
s3);
图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"
for(inti=0;
i<
library.count;
i++)
if(strcmp(s3,library.book[i].author)==0)
flag=0;
printf("
%s\t%s\t%s\t%s\t%s\t%6.2f\n"
library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);
}
if(flag)
{
printf("
cannotfound!
}
fflush(stdin);
getchar();
}
图书基本信息修改模块
用户输入要修改的书名,判断该书是否存在,若不存在,则提示用户无此图书信息;
若存在,则提示用户选择修改项目,然后提示用户图书信息修改完成。
voidmodify()//修改图书信息
{
charnumber[10];
/*清屏*/
\nPleasetypeinthenumberofthebookyouwanttodelete:
number);
inti;
for(i=0;
i++)
if(strcmp(number,library.book[i].number)==0)
library.book[i].number,library.book[i
.name,library.book[i].author,library.book[i].publish,library.book[i].time,libra
y.book[i].price);
if(i!
=library.count)
{mbookbook;
\n\t\t请输入修改后此图书的信息\n"
\t请输入图书号:
book.number);
\t请输入图书名:
book.name);
book.author);
book.publish);
book.time);
book.price);
strcpy(library.book[i].name,book.name);
strcpy(library.book[i].number,book.number);
strcpy(library.book[i].publish,book.publish);
strcpy(library.book[i].author,book.author);
strcpy(library.book[i].time,book.time);
library.book[i].price=book.price;
else
\ncannotfound!
\n"
getchar();
实验四
对所选系统完成系统测试(2学时)
学习软件测试的基本方法;
②结合实验(三)中的算法,用白盒法中的逻辑覆盖测试技术,设计测试用例;
③选择实验(三)中给出代码的模块进行黑盒测试。
单元测试:
采用白盒测试法针对用户还书、预约、借书、查询等功能模块进行测试
(1)对于还书功能模块,模块的程序流程图如下:
判定节点为2,环形复杂度为:
2+1=3
采用路径覆盖法,测试用例为:
1、测试路径:
0-5输入条件:
retno不存在预期输出:
无该图书
2、测试路径:
0-1-4-5输入条件:
retno存在,borday>
90预期输出:
接受违约惩罚
3、测试路径:
0-1-2-3输入条件:
retno存在,borday<
=90预期输出:
成功还书
(2)对于预约功能模块,模块的程序流程图如下:
图中判定节点为:
2,环形复杂度为:
2+1+3
采用路径覆盖法,测试用例如下:
0-1-6-9输入条件:
borday>
接受违约处罚
2、测试路径:
0-1-2-7输入条件:
borday<
=90,borno不存在预期输出:
不存在该图书
0-1-2-3-8输入条件:
=90,borno存在,onself不存在预期输出:
图书已借出
4、测试路径:
0-1-2-3-4-5输入条件:
=90,borno存在,onself存在预期输出:
预约成功
(3)对于借书功能模块,模块的程序流程图如下:
图中判定节点为4,环形复杂度为:
4+1=5
采用路径覆盖测试法,测试用例如下:
0-7输入条件:
0-1-8输入条件:
=90,borno>
5预期输出:
超出所借数目的最大
0-1-2-3-9输入条件:
5,bookno不存在预期输出:
所借图书编号不存在
0-1-2-3-4-10输入条件:
5,bookno存在,onshelf不存在预期输出:
书不在架
5、测试路径:
0-1-2-3-4-5-6输入条件:
5,bookno存在,onshelf存在预期输出:
借书成功
(4)对于查询功能模块,模块的程序流程图如下:
流程图中判定节点为2,环形复杂度为:
2+1=3
0-1-6输入条件:
bookno不存在预期输出:
要查找的图书不存在
bookno存在,onself=1预期输出:
要查找的图书已被借走
0-1-2-4-5输入条件:
bookno存在,onself=0预期输出:
返回查找图书信息
2.)确认测试:
采用黑盒测试法测试
确认测试,主要是为了检测接口功能应对的各种非预期性输入时系统的可靠性和容错性等性能。
本小型图书管理系统将对用户和管理员与图书管理系统之间的交互接口进行测试,所以测试的主要内容有2个:
图书管理系统和管理员接口,图书管理系统和读者接口。
(1)读者与图书管理系统之间的接口读者登陆图书管理系统,应受到系统如下的约束:
用户名需要以字母开头,后面是数字和字母组合,不能超过最大长度为10,密码长度不超过6划分了等价类,情况如下所示:
输入条件
有效等价类
编号
无效等价类
用户名开头
字母(a-z)
1
非字母
4
余下字符
数字和字母组合
2
非数字和字母
5
字符数
小于10
3
大于10
6
有效等价类的测试用例:
测试编号
预期输出
覆盖等价类
开头
个数
T1
a
dd32323
8
add32323
1、2、3
无效等价类的测试用例:
覆盖等价类
dd32323
输入错误
2、3、4
T2
A
*>
<
?
1、3、5
T3
1234567899
11
1、2、6
实验五
面向对象方法建模(2学时)
1学习面向对象软件的设计方法;
2掌握UML建模语言的使用,ROSE工具使用;
3对前四个实验所建系统的用例图和类图。
用例图
1.借阅者请求服务的用例图
用例图说明:
(1)SerchforBook:
书籍查询用例。
(2)Reservethebook:
书籍预订用例。
(3)Logonthesystem:
登陆系统。
(4)QueryInfo:
查询借阅信息。
(5)Borrowthebook:
借阅书籍。
(6)Returnthebook:
归还书籍。
(7)ReturnWithFine:
还书时交纳罚金。
如果借阅者所借书籍超过借阅期限未还,还书的时候就要交纳一定的罚金。
2.图书馆管理员处理借书、还书等的用例图
(1)Getbook:
书籍归还处理
(2)Lendbook:
书籍借阅处理
(3)RemoveReservation:
删除书籍预订信息
(4)GetWithFine:
还书时收取罚金
(5)Checkusercount:
检查用户借阅凭证的合法性,图书管理员在借阅者借书的时候要检查用户借阅凭证的合法性
3.系统管理员进行系统维护的用例图
(1)QueryBorrowerInfo:
查询读者信息
(2)QueryBookInfo:
查询书籍信息
(3)AddTitle:
增加书目
(4)RemoveorUpdateTitle:
删除或更新书目
(5)AddBook:
增加书籍
(6)RemoveBook:
删除书籍
(7)AddBorrower:
添加借阅者帐户
(8)RemoveorUpdateBorrower:
删除或更新借阅者帐户信息
类图
对图书馆管理系统中,对需求规格说明书进行分析,完成图书馆管理系统中,系统包图和类图的设计。