软件维护实验报告yxx.docx
《软件维护实验报告yxx.docx》由会员分享,可在线阅读,更多相关《软件维护实验报告yxx.docx(14页珍藏版)》请在冰点文库上搜索。
![软件维护实验报告yxx.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/e422d640-0779-4dba-a59f-fe7d80fd82c2/e422d640-0779-4dba-a59f-fe7d80fd82c21.gif)
软件维护实验报告yxx
软件维护实验报告yxx
实验一检查程序的可维护性
一.实验内容
a、认真分析程序代码,了解程序的功能;
b、找出程序中的错误,对其进行修改;
c、找出程序中不符合规范的地方,进行修改;
d、对输入的分数进行检测,要求不小于零,不大于100;
e、为了检测程序输出的对错,要求通过在输入结束后,显示输入的学生数据;
f、如果学生人数为6,每个同学有4门课,请在源程序上修改。
程序代码:
structstudent
{charnum[6];charname[8];intfenshu[3];floatavr;}stu[5];
intmain(){inti,j,sum;FILE*fp;
/*input*/
for(i=0,i<5,i++){printf("\npleaseinputNo.%dfenshu:
\n",i);printf("stuNo:
");scanf("%s",stu[i].num);printf("name:
");
scanf("%s",stu[i].name);sum=0;
for(j=0,j<3,j++){printf("fenshu%d.",j+1);
这个程序将结果输出到项目下的一个名为”stud.txt”的文本文件里。
程序运行情况如下:
打开”stud.txt”,发现成绩信息已经被写入文件:
至于实验要求的最后三点,
e.在scanf语句后加一个if语句判断得到的数据是否小于一百,若不是,重新输入
f.在最后加一个输出语句就行了,输出语句就跟最后一个for循环一样。
g.修改一下structstudent类型的成员就行了,程序中的for循环的变量也要改一下。
鉴于篇幅原因这里不再贴代码了。
二.实验心得
实验二使用Understand程序理解工具
一.实验目的
1.了解Understand程序理解工具的主要功能。
2.学会使用Understand理解程序代码。
二.实验环境
安装Understand的PC机一台。
三.实验内容
1、创建新工程;
2、导入程序代码;
3、导出程序对应的可视化图形;
创建新工程:
1)在GettingStarted标签页点击NewProject链接,或者在菜单栏选择File>New>Project。
在引导程序Createaprojectfile页面,输入工程名称,指定工程文件保存的路径。
推荐将
工程文件保存到源代码所在目录的顶级目录。
如果指定路径不存在,会弹出提示窗口,向用户询问是否需要创建该目录。
2)点击Next,跳转到Language页面。
3)通过页面上的多选框为工程选择当前使用语言(详见语言类别配置),对于MicroSoftVisualC创建的C/C++/C#工程,可以选择最下面的多选框直接导入工程设置。
然后继续点击Next。
4)选择从Visual工程导入,可以看到VisualStudioFile(s)页面,否则可以直接跳转到下一步。
点击Add,弹出AddanewVisualStudiofile对话框,可以将Understand工程与VisualStudio工程进行同步。
在弹出对话框中点击…,确定VisualStudio工程文件,选择Understand分析代码需要遵循的工程设置,然后点击OK。
然后继续点击Next。
5)点击Next。
6)点击Finish。
7)选择Graphs>ProjectGraphs>UMLClassDiagram
8)右键单击函数api_new_file_operator,选择GraphicalViews>ControlFlow
9)右键单击类IFileOperator,选择GraphicalViews>Declaration
三.实验心得
为了更好的理解程序,有时候图是一个很好的方法。
不仅可以把程序的逻辑直观的展示出来,而且可以方便与他人分享,很多逻辑上的问题可能代码上看不出来,但是采用图的方法就很方便了。
实验三提高程序的可维护性
一.实验目的
1.理解程序的可维护性。
2.提高程序的可维护性。
3.实现程序的维护。
二.实验环境
安装MicrosoftVisualC++的PC机一台。
三.实验内容:
两人一组,分别从三个题目中选择一题(两人不要选同一题)完成,然后由对方进行维护,包括修改程序中不合理的地方,补充注释,扩展程序功能等。
题目一:
有n个人围成一圈,顺序排号。
从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
总体思路:
用一个数组代表所有人,其中每个数的值代表这个人还在不在圈内。
(0代表已出局,1代表还在圈内)通过一个指针循环访问数组内各个成员,若数组成员值为1,则计数器+1,每当计数器加到3时,将该数组成员置0(即这个人出圈),最后指针指向的数组成员的下标就是最后留下的人。
#include
usingnamespacestd;
voidmain()
{
inti,k,m,n,num[50],*p;
printf("inputnumberofperson:
n=");
scanf("%d",&n);
p=num;
for(i=0;i*(p+i)=i+1;
i=0;
k=0;
m=0;
while(m{
if(*(p+i)!
=0)//判断这个号(原来的序号)是否出局
k++;//这个号没有出局,就报数,计数器加1
if(k==3)//报3的出局
{
*(p+i)=0;//将出局的这个人标记
k=0;//使计数器置零,以便后面的人报数
m++;//出局人数计数器加1
}
i++;//将指针后移,虽然i不是指针,但p+i就是指针了,所以i就是为指针服务的
if(i==n)//如果指针移到了尾部,则返回到头部
i=0;
}
//以上的循环是主要焦点,后面的就是找出最后那个人,这个好理解
while(*p==0)//用这个可以只判断所找号的前面的号(包括所找号),不用判断后面的。
p++;
printf("ThelastoneisN0.%d\n",*p);
system(“pause”);
}
四.实验心得
编写代码的时候添加注释能提高程序的可理解性。
实验四实现程序的重构
一.实验目的
1.理解程序的重构。
2.实现效率驱动下的程序重构。
二.实验环境
安装MicrosoftVisualC++的PC机一台。
三.实验内容
实验内容:
对下列代码进行调整以提高效率。
#include"stdio.h"
voidmain()
{
inta[100];
for(inti=0;i<100;i++)
scanf("%d",&a[i]);
for(i=0;i<100;i++)
{
if(a[i]>=80)
{printf("%d\t%c\n",a[i],'A');continue;}
elseif(a[i]>=70)
{printf("%d\t%c\n",a[i],'B');continue;}
elseif(a[i]>=60)
{printf("%d\t%c\n",a[i],'C');continue;}
else
{printf("%d\t%c\n",a[i],'D');continue;}
}
}
思路:
用switch语句替代if语句
修改后的代码如下:
#include
usingnamespacestd;
intmain()
{
inta[100];
intx,i;
for(i=0;i<100;i++)
scanf("%d",&a[i]);
for(i=0;i<100;i++){
x=a[i]/10;
switch(x){
case10:
case9:
case8:
printf("%d\t%c\n",a[i],'A');break;
case7:
printf("%d\t%c\n",a[i],'B');break;
case6:
printf("%d\t%c\n",a[i],'C');break;
default:
printf("%d\t%c\n",a[i],'D');break;
}
}
system("pause");
return0;
}
运行结果:
四.实验心得
使用正确的合适的程序结构可以提高程序的效率。