软件工程实验报告

时间:2024.4.7

河南省高等教育自学考试

实 验 报 告 册

计算机及应用专业(本科段)

《软件工程》

姓名准考证号所属地市

实验地点实验日期

实验总成绩指导教师签名

实验单位(实验室)意见主考院校审核意见

河南科技大学自学考试办公室

二 零 一 零 年 三 月

实验一 学生成绩管理系统需求分析

1.实验目的

l 了解软件工程中需求分析阶段的主要活动;

l 了解需求分析文档描述的主要内容;

l 掌握利用数据流图描述系统功能需求的方法。

l 掌握数据字典的描述方法。

2.实验设备

(1) 硬件环境:586 以上微机。

(2) 软件环境:ms word 2000,visio 2000。

3.学生成绩管理系统需求分析

(一)实验目的

总结软件开发过程中的方法和技巧,更好的应用和掌握数据库技术 。

(二)需求分析文档主要内容描述

分析确定系统的规模和范围,确定软件的总体要求以及所需要的硬件和支撑软件,确定待开发软件与外界的接口,根据用户的情况确定软件对操作的要求,以及待开发软件总体上的约束和限制,完善项目计划。 在这之后,这一阶段的大部分时间将被用来进行需求收集和分析。向学校管理人员及学生了解情况,确定软件系统的综合要求,分析软件系统的数据要求,导出系统的逻辑模型,修正项目开发计划。采用结构化分析方法,生成数据流图、数据词典及加工逻辑说明。估计阶段跨度:20##年某月初至某月中旬

(三)分层绘制的数据流图

1.关联图(顶级流图)

实体:学生、课程、成绩。

实体属性定义

       学生:学号、姓名、性别、出生日期、入学年月

       课程:课程编号、课程名称、课程学分、课程描述

       成绩:学号、课程编号、分数、考核日期

实体关系图:

教务人员维护学生信息和课程信息,并登录学生的选课成绩;
学生查询自己的成绩单。

第0层DFD图

2.功能级流水图

第1层DFD图
对第0层DFD图中的一个加工"学生成绩管理"进行展开。

3.细化数据流图

* 第2层DFD图

对第1层DFD图中的一个加工"查询学生成绩"进行展开。

(四) 需求分析数据字典描述

以下列出"学生成绩管理系统"的部分数据字典条目:

(五)绘制数据流图的常见错误及解决方法

根据以上实例和经验,绘制数据流图应当遵循以下原则:
  (1) 分层时,子图的输入、输出数据流必须和父图中相应加工的输入、输出数据流一致;
  (2) 加工的编号应该唯一且具有层次性;
  (3) 加工不应该只有输入或只有输出,通常既有输入又有输出;
  (4) 数据流图不应反映处理的顺序;
  (5) 加工之间应通过数据存储进行通信,避免从一个加工直接流到另一个加工;
  (6) 数据应通过加工进行流动,避免从一个数据存储直接流到另一个数据存储;
  (7) 数据流图中所有元素的命名应当对客户有意义,且与业务相关;
  (8) 不要在一个图中绘制7个以上的加工,否则难于绘制和理解。

实验二 白盒测试

1.实验目的

l 理解软件测试的目的;

l 掌握白盒测试用例的设计方法;

l 熟悉软件调试的步骤和方法。

2.实验设备

(3) 硬件环境:586 以上微机。

(4) 软件环境:turbo C 2.0。

3.白盒测试

(一) 实验目的

1、通过简单程序白盒测试,熟悉测试过程,对软件测试行程初步了解,并养成良好的测试习惯。

2、熟练掌握如何运用基路径测试方法进行测试用例设计,进行逻辑覆盖率分析。

(二) 被测试程序清单

#include"stdio.h"

typedef struct MyDate{

int month;

int day;

int year;

}MyDate;

MyDate PreDate(MyDate date);

int Leapyear(int year);

void Print(MyDate date);

MyDate PreDate(MyDate date)

//输入日期有效性检查中其他模块实现,此处假设输入日期都是合法数据

{

1.MyDate yesterday;

2.yesterday.month = date.month; // initialization

3.yesterday.day = date.day;

4.yesterday.year = date.year;

5.int days_month[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};

//初始化每月天数,其中2月不确定,初始化为0

6.if(date.day>1)

7.yesterday.day=date.day-1;

else

{

8.if(date.month==1)

{

9.yesterday.year=date.year-1;

10.yesterday.month=12;

11.yesterday.day=31;

}

12.else if(date.month==3)

{

13.if(Leapyear(date.year))

{

14.yesterday.month=2;

15.yesterday.day=29;

}

else

{

16.yesterday.month=2;

17.yesterday.day=28;

}

}

else

{

18.yesterday.month=date.month-1;

19.yesterday.day=days_month[date.month-1];

}

}

20.return yesterday;

}

21.int Leapyear(int year)

{

22.if((year%4==0&&year%100!=0) || (year%400==0))

23.return 1;

24.else return 0;

}

void Print(MyDate date)

{

25.printf("%d--%d--%d\n",date.year,date.month,date.day);

}

(三)程序流程图


(四)测试用例设计

1)环路复杂度计算

由图可知,图中的环路有五条,故环路复杂度为五。

2)基本路径集设计

基本路径集为:

A.1、2、3、4、5、6、8、12、13、14、15、20、25

B.1、2、3、4、5、6、8、12、16、17、20、25

C.1、2、3、4、5、6、8、12、18、19、20、25

D.1、2、3、4、5、6、8、9、10、11、20、25

E.1、2、3、4、5、6、7、20、25

3)测试用例集设计

测试用例集为:

20##-1-2 20##-1-1 20##-3-1

1999-3-1 1980-5-1

(五) 测试步骤及结果分析

#include"stdio.h"

typedef struct MyDate{

int month;

int day;

int year;

}MyDate;

int a[6];

MyDate PreDate(MyDate date);

int Leapyear(int year);

void Print(MyDate date);

int count();

MyDate PreDate(MyDate date)

//输入日期有效性检查中其他模块实现,此处假设输入日期都是合法数据

{

MyDate yesterday;

yesterday.month = date.month; // initialization

yesterday.day = date.day;

yesterday.year = date.year;

int days_month[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};

//初始化每月天数,其中2月不确定,初始化为0

if(date.day>1)

{

a[0]=count();

yesterday.day=date.day-1;

}

else

{

a[1]= count();

if(date.month==1)

{

a[2]= count();

yesterday.year=date.year-1;

yesterday.month=12;

yesterday.day=31;

}

else if(date.month==3)

{

a[3]=count();

if(Leapyear(date.year))

{

a[4]=count();

yesterday.month=2;

yesterday.day=29;

}

else

{

a[5]=count();

yesterday.month=2;

yesterday.day=28;

}

}

else

{

a[6]=count();

yesterday.month=date.month-1;

yesterday.day=days_month[date.month-1];

}

}

return yesterday;

}

int Leapyear(int year)

{

if((year%4==0&&year%100!=0) || (year%400==0))

return 1;

else return 0;

}

void Print(MyDate date)

{

printf("%d--%d--%d\n",date.year,date.month,date.day);

}

int count()

{

return 1;

}

void DriverofPreDate()

{

int tcPassNum = 0;

int tcFailNum = 0; // 存储通过和失败的测试用例总数

FILE *pFpFrom=NULL;

FILE *pFpTo=NULL;

//----------- 打开数据文件,准备读取测试用例的数据-----------

char *DataFileName="test.txt";

pFpFrom=fopen(DataFileName,"r");

if(!pFpFrom){

printf("读取数据失败,返回\n");

return; }

//----------- 打开数据文件,准备记录测试用例执行结果-----------

char *DataFileTestResultName="DivedeTestResult.txt";

pFpTo=fopen(DataFileTestResultName,"w");

if(!pFpTo){

printf("打开文件失败,返回\n");

return; }

fprintf(pFpTo,"----------对函数PreDate的单元测试结果------------\n");

//----------- 执行测试用例,记录测试结果-----------

int TCID = 0;

int sum=0;

MyDate date ; // 测试用例的输入

MyDate expectedOut,actualOut; // 测试用例的预期、实际输出

printf("对函数PreDate展开单元测试\n");

while(!feof(pFpFrom)){ // 不断读取每个测试用例的数据

fscanf(pFpFrom, "%d ", &TCID); // 读入测试用例的ID

fscanf(pFpFrom, "%d %d %d", &date.month,&date.day,&date.year); //读测试用例输入

fscanf(pFpFrom,"%d %d %d", &expectedOut.year,&expectedOut.month,&expectedOut.day); // 读入测试用例的预期输出

actualOut = PreDate(date); // 执行测试用例

printf( "测试用例%d: 输入%d,%d,%d, 预期输出%d,%d,%d,,实际输出%d,%d,%d, ",

TCID, date.month,date.day,date.year,expectedOut.year, expectedOut.month,expectedOut.day,actualOut.year,actualOut.month,actualOut.day); // 输出测试用例的信息

if( actualOut.day==expectedOut.day&&actualOut.month==expectedOut.month&&actualOut.year==expectedOut.year){// 若测试用例通过,则记录通过用例总数

tcPassNum ++; printf( "通过\n" );

fprintf(pFpTo,"测试用例%d:Pass",TCID); //将测试结果存入结果文件

}

else{

tcFailNum ++; printf( "失败\n" );

fprintf(pFpTo,"测试用例%d:Fail",TCID); //将测试结果存入结果文件

}

} //----------- 统计测试结果-----------

for(int i=0;i<=6;i++)

{

sum=sum+a[i];

}

printf("覆盖率=%d", sum*100/7);

printf("%%\n");

printf( "共执行%d 个测试用例,其中%d 个通过,%d 个失败\n", tcPassNum+tcFailNum, tcPassNum, tcFailNum );

fprintf(pFpTo,"共执行%d 个测试用例,其中%d 个通过,%d 个失败\n", tcPassNum+tcFailNum, tcPassNum, tcFailNum );

fclose(pFpFrom);

fclose(pFpTo);

}

void main()

{

DriverofPreDate ( );// 调用测试驱动程序

}


第二篇:软件工程实验报告5


软件工程导论课外实验

项 目 名 称:旅游管理系统开发过程

所 在 班 级:20##级JAVA(1)班

姓 名:赵媛媛

指 导 教 师:王业

起 止 时 间:10月25日-11月4日

旅游管理系统开发过程

一、系统分析

1.1需求分析

根据要求,系统具有以下功能:

1.由于该系统的使用对是对客户信息,导游信息,景点信息进行管理的多方管理系统。

2.确保系统的安全性。

3.方便的全方位的数据查询。

4.统计功能。

二、总体设计

2.1系统主要功能

客户管理系统是一个非常有特点的管理软件,系统由客户信息维护、信息查询、数据管理、系统管理和帮助信息等几个功能模块组成,规划系统功能模块如下:

(1)客户信息维护模块

客户信息维护模块主要包括客户信息。

(2)信息查询模块

信息查询模块主要包括客户信息查询、导游信息查询、景点查询、联系方式查询4个部分

(3)数据管理模块

数据管理模块主要包括客户信息、导游信息、密码信息3个部分。

(4)系统管理模块

系统管理模块主要包括操密码修改、退出系统3个部分。

2.2 系统功能结构图

2—1旅游管理系统功能结构图

三、系统设计

3.1 设计目标

本系统可以达到以下目标:

(1)系统运行稳定,安全可靠。

(2)界面设计美观,人机交互界面友好。

(3)信息查询灵活、方便、快捷、准确,数据存储安全可靠。

(4)采用多种方式查询数据。

(5)对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。

3.2 开发及运行环境

系统开发平台:Microsoft Visual Basic 6.0 中文版

运行平台:Windows xp

3.3 数据库设计

本系统采用Microsoft Office Access 2003设计数据库

数据表结构

(1)密码表

密码表示维护系统安全的最重要的功能。

表3-1

(2)旅游信息

是关于旅游游客,景点,导游的信息,是对旅行社对旅游信息的描述。

表3-2

四、主要功能模块设计

4.1 主窗体设计

主窗体是显示系统主要操作功能的面板。

4—1系统主窗体

4.2 密码设置

输入密码,输入错误之后会出现从新输入,以达到校验的目的。

4—2 密码校验窗口

代码设计

在窗体加载时,其实现的代码如下:

(点击“确定”按钮时实现的的用户密码登陆)

Private Sub Command1_Click()

Adodc1.RecordSource = "select * from 密码表 where 用户名 ='" & Text1.Text & "'"

Adodc1.Refresh

If Text2.Text <> Text3.Text Then

MsgBox "两次输入密码不同请重新输入", vbOKOnly, "提示"

Text2.Text = ""

Text3.Text = ""

Text2.SetFocus

Else

Text4.Text = Text2.Text

Adodc1.Recordset.Fields(1) = Text4.Text

Adodc1.Recordset.Update

Adodc1.Recordset.Close

MsgBox "修改成功", vbOKOnly, "提示"

End If

End Sub

(点击“取消”实现的密码登陆的取消功能。)

Private Sub Command2_Click()

Unload Me

Form1.Show

End Sub

Private Sub Form_Load()

Adodc1.RecordSource = "select * from 密码表"

Adodc1.Refresh

If Adodc1.Recordset.RecordCount > 0 Then

ListView1.Enabled = True

ListView1.ListItems.Clear

i = 1

Adodc1.Recordset.MoveFirst

Do While Adodc1.Recordset.EOF = False

Key = Adodc1.Recordset.Fields("用户名")

Set itmX = ListView1.ListItems.Add(, , Key, i)

i = i + 1

Adodc1.Recordset.MoveNext

Loop

Else

ListView1.Enabled = False

End If

End Sub

Private Sub ListView1_Click()

Text1.Text = ListView1.SelectedItem

Adodc1.Refresh

Text1.SetFocus

4.3 系统用户管理

系统用户管理包括,游客编号,游客姓名,工作单位,景点编号,景点名称

导游编号,导游姓名,利用功能键实现查找的功能。

4—3 系统用户管理窗口

代码设计

其实现的关键代码如下:

(点击“首条”时实现的是移动到首条)

Private Sub Command1_Click()

Adodc1.Recordset.MoveFirst

If Adodc1.Recordset.BOF Then

Adodc1.Recordset.MoveFirst

End If

End Sub

(点击“上一条”时实现的是上一条)

Private Sub Command2_Click()

Adodc1.Recordset.MovePrevious

If Adodc1.Recordset.BOF Then

Adodc1.Recordset.MoveFirst

MsgBox "已经为首条", vbOKOnly, "提示"

End If

End Sub

(但点击“下一条”时,实现的是下一条。)

Private Sub Command3_Click()

Adodc1.Recordset.MoveNext

If Adodc1.Recordset.EOF Then

Adodc1.Recordset.MoveLast

MsgBox "已经为末条", vbOKOnly, "提示"

End If

End Sub

(点击“最后一条”实现的是最后一条。)

Private Sub Command4_Click()

Adodc1.Recordset.MoveLast

If Adodc1.Recordset.EOF Then

Adodc1.Recordset.MoveLast

End If

End Sub

(点击“添加”实现的是添加功能)

Private Sub Command5_Click()

Adodc1.Recordset.AddNew

End Sub

(点击“更新”实现的是更新功能)

Private Sub Command6_Click()

Adodc1.Recordset.Update

MsgBox "修改成功!", vbOKOnly + vbExclamation, ""

End Sub

(点击“删除”实现的是删除功能)

Private Sub Command7_Click()

answer = MsgBox("是否删除本条?", vbYesNo, "提示")

If answer = vbYes Then

Adodc1.Recordset.Delete

MsgBox "删除成功!", vbOKOnly, "提示"

Adodc1.Refresh

Else

MsgBox "已确认未删除", vbOKOnly, "提示"

End If

End Sub

(点击“取消”实现的是退出功能。)

Private Sub Command8_Click()

Unload Me

End Sub

4.4 旅游管理浏览

系统用户浏览包括用户的所有信息,通过第一条,上一条,下一条,和末条,打印,返回实现浏览的功能。

4—4旅游管理浏览窗口

代码设计

在窗体加载时,其实现的关键代码如下:

(点击“首条”时实现的是移动到首条)

Private Sub Command2_Click()

Unload Me

End Sub

(点击“上一条”时实现的是上一条)

Private Sub Command3_Click()

Adodc1.Recordset.MoveFirst

If Adodc1.Recordset.BOF Then

Adodc1.Recordset.MoveFirst

End If

End Sub

(但点击“下一条”时,实现的是下一条。)

Private Sub Command4_Click()

Adodc1.Recordset.MovePrevious

If Adodc1.Recordset.BOF Then

Adodc1.Recordset.MoveFirst

MsgBox "已经为首条", vbOKOnly, "提示"

End If

End Sub

Private Sub Command5_Click()

Adodc1.Recordset.MoveNext

If Adodc1.Recordset.EOF Then

Adodc1.Recordset.MoveLast

MsgBox "已经为末条", vbOKOnly, "提示"

End If

End Sub

(点击“最后一条”实现的是最后一条。)

Private Sub Command6_Click()

Adodc1.Recordset.MoveLast

If Adodc1.Recordset.EOF Then

Adodc1.Recordset.MoveLast

End If

End

4.5 旅游管理查询界面

查询系统包括景点查询和导游查询

运行结果如图4--5所示。

4—5旅游管理查询窗口

代码设计

在窗体加载时,其实现的关键代码如下

(点击“确定”实现了查询功能)

Private Sub Command1_Click()

a = "select * from 表2 where "

n = 0

If Check1.Value = Checked Then

a = a + "景点编号='" + Combo1 + "'"

Adodc1.RecordSource = a

Adodc1.Refresh

n = 1

End If

If Check2.Value = Checked Then

If n = 1 Then

End If

a = a + " 导游编号='" + Combo2 + "'"

Adodc1.RecordSource = a

Adodc1.Refresh

n = 1

End If

End Sub

(点击“关闭”实现了窗口的关闭功能)

Private Sub Command2_Click()

Unload Me

End Sub

Private Sub Form_Load()

Combo1.AddItem "100"

Combo1.AddItem "200"

Combo1.AddItem "300"

Combo1.AddItem "400"

Combo2.AddItem "010"

Combo2.AddItem "020"

Combo2.AddItem "030"

Combo2.AddItem "040"

End Sub

4.6 旅游管理统计界面

运行结果如图6所示。

4—6旅游管理统计窗口

代码设计

在窗体加载时,其实现的关键代码如下:

(点击“按单位统计”实现了按单位数据的统计功能)

Private Sub Command3_Click()

strsql = "select 工作单位,count(*) as 人数 from 表3 GROUP BY 工作单位"

Adodc1.RecordSource = strsql

Adodc1.Refresh

End Sub

(点击“按导游统计”实现了按导游数据的统计功能)

Private Sub Command4_Click()

strsql = "select 导游编号,count(*) as 人数 from 表3 GROUP BY 导游编号"

Adodc1.RecordSource = strsql

Adodc1.Refresh

End Sub

(点击“按景点编号统计”实现了按景点编号数据的统计功能)

Private Sub Command1_Click()

strsql = "select 景点编号,count(*) as 人数 from 表3 GROUP BY 景点编号"

Adodc1.RecordSource = strsql

Adodc1.Refresh

End Sub

Private Sub Command2_Click()

Unload Me

End Sub

4.7 旅游管理界面登录

密码登录窗口通过点左侧的人物,在代码中设置了对应的密码,点完人物之后直接点确认键即可登录。

4—7旅游管理登陆窗口

代码设计

在窗体加载时,其实现的关键代码如下:

(点击“确定”实现了登陆的功能)

Private Sub Command1_Click()

Dim MPassword As String

Adodc1.RecordSource = "select * from 密码表 where 用户名 ='" & Text1.Text & "'"

Adodc1.Refresh

If Adodc1.Recordset.RecordCount > 0 Then

MPassword = Adodc1.Recordset.Fields("密码")

If Text2.Text = MPassword Then '判断数据的密码是否正确

Name1 = Text1.Text

Form1.Show

'frm_Main.Show

Unload Me

Else

MsgBox "密码不正确,请您确认后重新输入", , "提示信息"

Text2.Text = ""

Text2.SetFocus

End If

Else

MsgBox "对不起 没有此用户的信息", , "提示信息"

Text1.Text = ""

Text2.Text = ""

End If

End Sub

Private Sub Command2_Click()

End

End Sub

Private Sub Form_Load()

'Adodc1.RecordSource = "select * from 密码表"

Adodc1.Refresh

If Adodc1.Recordset.RecordCount > 0 Then

ListView1.Enabled = True

ListView1.ListItems.Clear

i = 1

Adodc1.Recordset.MoveFirst

Do While Adodc1.Recordset.EOF = False

Key = Adodc1.Recordset.Fields("用户名")

Set itmX = ListView1.ListItems.Add(, , Key, i)

i = i + 1

Adodc1.Recordset.MoveNext

Loop

Else

ListView1.Enabled = False

End If

End Sub

Private Sub ListView1_Click()

Text1.Text = ListView1.SelectedItem

'Adodc1.Refresh

Text2.SetFocus

End Sub

更多相关推荐:
软件工程实验报告实验二

实验报告课程名称:软件工程实验项目:实验二面向对象分析及面向对象设计实验仪器:个人电脑系别:计算机科学与技术系专业:计算机科学与技术组长姓名:小组成员:实验日期:20XX-5-151实验内容对航空客运订票系统,…

软件工程课程设计实验报告

重庆邮电大学软件工程课程设计实验报告网上选课系统姓名雷雷学号专业计算机科学与技术班级0410801指导老师邹洋教室S331A时间一实验题目网上选课系统主要功能描述系统首先维护校内所有课程的信息课程分为研究生本科...

电大 软件工程实验报告1

大学图书馆图书信息管理系统实验报告学校宁波广播电视大学班级10春计算机科学与技术姓名学号一编写目的根据需求调研分析报告定义系统功能和系统数据流图通过编写需求分析规格说明书让开发人员能够根据需求规格说明书来开发项...

软件工程实验报告

实验一一实验室名称综合实验楼二试验项目名称图书管理系统三实验目的1了解和使用甘特图系统流程图线性时间图来描绘系统开发流程和进度2学会使用visio绘制常用的流程图四实验内容图书管管理系统更便于对图书进行分类和管...

软件工程实验报告模板

软件工程实验报告实验题目:实验室设备管理系统1、系统简介:每天对实验室设备使用情况进行统计,对于已彻底损坏的作报废处理,同时详细记录有关信息。对于有严重问题(故障)的要即时修理,并记录修理日期、设备名、修理厂家…

20xx级本科《软件工程实验》报告_(1)

20xx级本科软件工程实验报告共11页第1页实验一项目开发的准备工作实验学时实验类型验证性一目的与任务目的确定课题组织组员合理分工熟悉软件开发环境培养团队精神任务学习软件开发小组的组织和管理合理分工将项目开发各...

软件工程实验报告asas

软件工程实验报告班级学号姓名实验一软件需求分析实验项目名称软件需求分析实验目的1根据所选定题目进行需求分析工作2通过实例掌握结构化数据流分析技术3进行业务需求分析用户需求功能需求非功能需求分析4写出需求规格说明...

软件工程实验报告

实验一利用Visio绘制业务流程图本实验以某实际汽车运输集团有限公司的车辆管理业务为背景并针对主要功能来进行系统分析和设计业务流程调查的内容通过现场调研业务实习等手段了解业务开展的组织机构掌握业务活动的规律理解...

软件工程实验报告

软件工程实验报告指导老师吴卿软件工程实验报告设计者顾加平电话05735701077准考证号04820xx00288EMAILjiapingboy163com报到序号307指导老师吴卿实验题目图书管理系统子系统一...

软件工程实验报告

中南大学软件工程实验报告院系信息科学与工程学院专业计科1204学号姓名实验1需求分析实验任务书1阅读办公自动化烟站管理项目用户需求说明书以及用户需求规格说明书理解用户需求说明书和用户需求规格说明书里的内容组织方...

软件工程实验报告

软件工程实验报告,内容附图。

软件工程实验报告(可行性分析)

学生信息管理系统可行性分析报告1引言11编写目的随着高校招生规模的逐步扩大和人事制度的改革在校学生人数将不断增加而学生管理人员则相对减少加上我国高等学校基层学生管理工作的头绪多内容杂管理细要求高传统管理办法已基...

软件工程实验报告(17篇)