软件工程实践报告

《软件工程》实践报告

准考证号:

考生姓名:

一.实验目的

软件工程是一门实践性很强的计算机专业课程, 该课程的任务是使我们掌握软件工程的基本概念、基本原理、实用的开发方法和技术 。了解软件工程各领域的发展动向;如何用工程化的方法开发软件项目,在开发过程中应遵循的流程,准则,标准和规范。注重方法、技术的实际应用。在上机实践考核中,为培养考生良好的学习与工作作风。要求考生按一定的规范进行上机前的考核准备。熟悉软硬伯环境。上机调试和正确运行程序,以及提交实践考核报告。上机实践考核的述记在机器环境上调试、运行程序和产生正确的结果,。但准备阶段和整理实践报告也十分重要,只有做好充分的准备,熟悉机器及环境,尽可能的正确编码,才能高效率地利用机时。在书写报告时,必须依照规定的格式整理好文档资料,为考生将来从事于软件 开发和研制工作,打下一个坚实的基础。

二.实验环境

1. 硬件环境:

CPU: Pentium 1.8GHz

内存: 512M

硬盘: 40G (局域网)

2.软件环境:

操作系统:Windows 2000

开发工具:Microsoft Visual C++ 6.0

数据库 : Microsoft Access

三. 实践内容

3.1 需求说明书

3.1.1 概述

1. 项目背景

科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,21世纪是信息的社会,而计算机在数据信息处理上有着很大优越性。学生成绩管理是学校的一项重要工作,原有的人工管理存在这着很多不足,造成不足的原因是,在校学生人数众多,并且每个学生的信息过于复杂,从而工作量非常大,给查询、添加、修改、统计、删除成绩带来了不便。因此,如何解决这些不足,使成绩管理更快捷、更方便,具有更高的效率也就成了一个关键问题。随着科学技术的迅速发展学校成绩管理的自动化也越来越迫切,因此有必要开发成绩管理系统的软件系统来辅助学校的教学管理。

2. 目标

软件的目标:实现学生信息数据处理的自动化与智能化。

3. 用户特点

a) 掌握计算机基本操作。

b) 学校老师(可选)

4. 假定与约束

3.1.2 具体要求

1. 功能需求

对用户所提需求进行梳理后,将用户需求划分如下:

数据输入功能:可输入班级学生信息包括成绩。

数据保存功能:可保存学生信息。

数据修改功能:对学生信息进行更新修改。

数据删除功能:对学生进行删除。

数据查询功能::对学生信息进行详细查询和模糊查询。

数据统计功能:对学生平均成绩统计,对单科成绩统计,对学生班级成绩进行统计等。

数据打印功能:将查询的结果按一定报表格式进行打印。

系统设置功能:设置系统登陆时的用户名和密码,并对用户名和密码可重设。

2. 外部接口

3. 性能需求

1) 数据库记录容量不小于10万条。

2) 数据库实时性要高。

4. 数据需求

1)数据为学生基本信息,没有特殊数据或字段。

5. 产品化需求

3.1.3 运行环境规定

1. 硬件设备:

CPU:P4或P4以上

内存:256M

硬盘:20G或20G以上

2. 支持软件

系统:Windows 20## 或 Windows XP

数据库:Microsoft Access

3.2 设计说明书

3.2.1 概要设计说明书

1. 总体设计

学生成绩管理系统是专为教务工作者设计开发的,具有很强的专用性。由于系统功能比较简单,并且系统处理的数据量不是很大,故设计开发时采用微软的Access数据库。微软的Access数据库在小型数据库系统比较常用,Access是实时性较高的数据库之一,存储速度快,查询效率高。考虑到数据查询的实时性,主程序采用比较常用的ADO数据库访问技术,ADO是微软访问为自已数据库,而专门开发的数据库访问引擎,与Access数据库配合使用具有无缝连接性能,主程序界面开发采用自己比较熟悉的Microsoft Visual C++ 6.0 + SP6。

2. 模块设计

系统按用户需求说明书,可划分成如下功能:

a) 数据输入功能

b) 数据保存功能

c) 数据修改功能

d) 数据删除功能

e) 数据查询功能

f) 数据统计功能

g) 数据打印功能

h) 系统设置功能

系统结构图如下:

软件工程实践报告

3. 数据结构设计

1) 在开发过程中要使用到数据库,需要创建数据库,并在数据库中创建表和视图。表的字段包含如下:

数据库名称:XCSJ.mdb

学生信息表

管理员信息表

2) 以C/C ++程序结构为基础,按照模块化思路进行设计,使程序易编写,易维护。确定程序主接口和接口设计方案,多应用现有或成熟的方案。

3) 编码时一定要严格遵守编程规范,命名标准,注释通俗易懂,排版注释量在20%以上,在保证系统编码的正确性、稳定性、可读性的前提下,提高代码效率。

4) 个人必需对所编写的代码进行单元测试。以减少集成测试时的问题,提高软件开发效率,加快软件开发进度。

3.2.2 详细设计说明书

1.引言

1) 编写目的

本说明书是对学生成绩管理系统详细设计的描述,读者为代码编写人员。

2)项目背景

软件名称:学生成绩管理系统

软件用户:教务工作者、

软件运行单位:学校

软件开发方:个人

3)参考资料

设计说明书中“概要设计说明”部分。

4)术语

2.软件结构

软件结构按系统功能需求划分成如下模块:

1) 系统设置模块

对管理员的用户名和密码进行管理,可增加、删除用户,可对管理员的

用户名和密码进行修改。

2) 系统数据输入模块

输入学生信息后,就检查学生信息的唯一性,检查输入学生信息各字段

信息的正确性。

3) 系统数据保存模块

可将管理员信息保存到数据库的管理员信息表中,也可将学生信息保存

到数据库的学生信息表中 。

4) 系统数据修改模块

输入要修改的记录的学号后,可对已输入的学生信息进行修改与更新,

并检查输入学生信息各字段信息的正确性。

5) 系统数据删除模块

输入要删除记录的学号,在删除前应提示用户是否要删除此记录,在用户

确认删除后,才可进行删除操作。

6) 系统数据查询模块

数据查询方式应灵活,应设立按照学号、姓名、出生日期及各科成绩进

行查询的程序,可使用模糊查询。

7) 系统数据统计模块

对学生的总成绩、平均成绩进行统计。统计时提示“正在进行统计,请

等待……”,统计完成后应提示“统计完成,请查阅”。

8) 系统数据打印模块

按照设计的报表,编写“学生成绩管理表”打印程序,按一定格式显示

报表数据。

3.模块设计说明

1) 主程序模块:

主程序模块界面设计如下:

软件工程实践报告

编写程序时注意:ADO库的引入

(1)、引入ADO类

#import "c:\program files\common files\system\ado\msado15.dll" \

no_namespace \

rename ("EOF", "adoEOF")

(2)、初始化COM

在MFC中可以用AfxOleInit();非MFC环境中用:

CoInitialize(NULL);

CoUnInitialize();

源代码清单

//------------- .h 文件--------------------

// 学生成绩管理系统2View.h : interface of the CMy2View class

//

class CMy2Set;

class CMy2View : public CRecordView

{

//只显示自己写的代码,不显示VC++自己生成的代码

protected:

afx_msg void OnButtonQuery();

afx_msg void OnRecAdd();

afx_msg void OnRecDel();

afx_msg void OnRecEdit();

afx_msg void OnChangeEditQuery();

afx_msg void OnButtonQuery2();

afx_msg void OnStatic0();

};

//---------------------. cpp文件----------------------------------

//“数据查询”按钮响应函数

void CMy2View::OnButtonQuery()

{

// TODO: Add your control notification handler code here

UpdateData();

m_strQuery.TrimLeft(); //左对齐

if(m_strQuery.IsEmpty()) //编辑框中为空时

{

MessageBox("号码不可为空!"); //未填入学号时提示

return;

}

if(m_pSet->IsOpen())

m_pSet->Close(); //如果记录集打开,则先关闭

m_pSet->m_strFilter.Format("ID='%s'",m_strQuery);//查询条件

m_pSet->m_strSort="id"; //按id由大到小排序

m_pSet->Open();

if(!m_pSet->IsEOF()) //打开记录集有的数据

UpdateData(FALSE); //更新表单数据

else

MessageBox("无此学号记录!"); //无此学号时提示

}

//“数据修改”按钮响应函数

void CMy2View::OnRecAdd()

{

// TODO: Add your control notification handler code here

CScoreDlg dlg; //定义对象

if(dlg.DoModal()==IDOK)

{

m_pSet->AddNew(); //添加数据与数据库的对应

m_pSet->m_id =dlg.m_id2; //学号

m_pSet->m_name =dlg.m_name2; //名字

m_pSet->m_special =dlg.m_special2; //专业

m_pSet->m_chinese =dlg.m_chinese2; //语文

m_pSet->m_math =dlg.m_math2; //数学

m_pSet->Update();

m_pSet->Requery();

UpdateData(FALSE);

UpdateData();

}

}

//删除按钮响应函数

void CMy2View::OnRecDel()

{

CRecordsetStatus status;

m_pSet->GetStatus(status);

m_pSet->Delete();

if(status.m_lCurrentRecord==0)

m_pSet->MoveNext(); //移动到下一个记录

else

m_pSet->MoveFirst(); //上移记录

UpdateData(FALSE);

UpdateData();

}

//保存数据按钮

void CMy2View::OnRecEdit()

{

// TODO: Add your control notification handler code here

CScoreDlg dlg;

dlg.m_id2 =m_pSet->m_id;

dlg.m_name2 =m_pSet->m_name;

dlg.m_special2=m_pSet->m_special;

dlg.m_chinese2=m_pSet->m_chinese;

dlg.m_math2 =m_pSet->m_math;

if(dlg.DoModal()==IDOK) //如果编辑

{

m_pSet->Edit();

m_pSet->m_id =dlg.m_id2; //学号

m_pSet->m_name =dlg.m_name2; //名字

m_pSet->m_special=dlg.m_special2; //专业

m_pSet->m_chinese=dlg.m_chinese2; //语文

m_pSet->m_math =dlg.m_math2; //数学

m_pSet->Update();

UpdateData(FALSE); //保存数据

UpdateData();

}

}

//“数据统计”按钮响应函数

void CMy2View::OnBtnTj()

{

CSocreStatDlg dlg;

dlg.DoModal(); //弹出数据统计对话框窗口

}

//“报表打印”按钮响应函数

void CMy2View::OnButton2()

{

CReportPrintDlg dlg;

dlg.DoModal(); //弹出报表打印对话框窗口

}

2)子模块一:系统设置模块

系统设置界面设计如下:

软件工程实践报告

源代码清单:

//------------ .h文件 ---------------------------

// CSystemSet dialog

class CSystemSet : public CDialog

{

afx_msg void OnBtnAdd();

afx_msg void OnBtnDel();

afx_msg void OnBtnPwdupdate();

virtual BOOL OnInitDialog();

};

//------------ .cpp文件-------------------------

// SystemSet.cpp : implementation file

//

#include "stdafx.h"

#include "SoftProject.h"

#include "SystemSet.h"

#include "AddUserDlg.h" //增加管理员对话框类

#include "DeluserDlg.h" //删除管理员对话框类

#include "PwdUpdateDlg.h" //更新管理员密码对话框类

//“增加管理员”按钮响应函数

void CSystemSet::OnBtnAdd()

{

CAddUserDlg dlg;

dlg.DoModal(); //弹出增加管理员对话框窗口

}

//“删除管理员”按钮响应函数

void CSystemSet::OnBtnDel()

{

CDelUserDlg dlg;

dlg.DoModal(); //弹出删除管理员对话框窗口

}

//“更新密码”按钮响应函数

void CSystemSet::OnBtnPwdupdate()

{ CPwdUpdateDlg dlg;

dlg.DoModal(); //弹出密码修改对话框窗口

}

3.2.3 测试分析报告

1. 测试结果

2. 软件功能结果

软件各个模块测试均正常。

3. 分析摘要

在前两遍的测试过程,发现了很多问题。比如测试分支没有走到,软件存在缺陷,由于对软件工程掌握的还不是熟悉,软件某些地方还存在问题,需要在以后的学生与工作中,加强学习与实践,提高自己在项目中的控制能力。

《软件工程》实践心得

软件工程是一门实践性很强的计算机专业课程,该课程的任务是使我们掌握软件工程的基本概念、基本原理、实用的开发方法和技术。在上机实践过程中发现了很多错误与不足,小到对文档编写的技巧,大到对软件工程中某些概念还没有彻底理解,在以后的学习中我要着重解决这些发现的问题。

在上机实践过程中,遇到了很多困难,指导老师给了很大的帮助。上机过程中遇到主要问题是:1. 对软件工程的一些知识点还没有领会,尤其是用面向对象建立模型时,应用时感到比较吃力。2.编程时对C++的一些语法不熟悉,比如静态成员变量的初始化,以及在类中的应用。通过指导老师的指点与查阅资料,理解了该部分,但是还需要在实践中多练习。3.对VC++的WINDOWS应用程序的设计学习没有很好理解,VC++下的MFC比较庞大,学习时感无从下手。对WINDOWS应用程序的机制不了解。

在上机过程中学习了很多课本上没有的知识,实践能力得到了大幅提高,对软件工程整体又有了新的认识与理解,对面向对象程序设计加深了理解,程序的调试技能有所提高,但是在上机过程中,也发现了自己的很多不足之处,需要在以后的学习与工作中不断的学习与实践,扎扎实实的学习,一步一个脚印的进行,积累程序开发经验和方法。

相关推荐