2023年软件维护实验报告y_第1页
2023年软件维护实验报告y_第2页
2023年软件维护实验报告y_第3页
2023年软件维护实验报告y_第4页
2023年软件维护实验报告y_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一检查程序的可维护性实验内容a、认真分析程序代码,了解程序的功能;b、找出程序中的错误,对其进行修改;c、找出程序中不符合规范的地方,进行修改;d、对输入的分数进行检测,规定不小于零,不大于100;e、为了检测程序输出的对错,规定通过在输入结束后,显示输入的学生数据;f、假如学生人数为6,每个同学有4门课,请在源程序上修改。程序代码:structstudent{charnum[6];charname[8];intfenshuintmain(){ﻩ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);ﻩscanf("%d",&stu[i].fenshu[j]); sum+=stu[i].fenshu[j];} stu[i].avr=sum/3.0;}fp=fopen("stud","w"); for(i=0,i<5,i++)fprintf(fp,"%s\t%s\t%d\t%d\t%d\t%f\n",stu[i].num,stu[i].name,stu[i].fenshu[0],stu[i].fenshu[1],stu[i].fenshu[2],stu[i].avr);ﻩfclose(fp);}实验环节将代码拷贝到c++编译器中,这里使用的是devc++。将代码格式规范一下。由于程序用到了文献流,所以加上”#include<iostream>”。注意到程序中的for语句中的语句是用逗号分隔的,将逗号改为分号。程序中的scanf语句,输入的对象应当是一个地址,在对象前加上取地址符号&。编译成功,修改后的程序代码如下:(最后一个’}’没截到)这个程序将结果输出到项目下的一个名为”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>UMLClassDiagram8)右键单击函数api_new_file_operator,选择GraphicalViews>ControlFlow9)右键单击类IFileOperator,选择GraphicalViews>Declaration实验心得为了更好的理解程序,有时候图是一个很好的方法。不仅可以把程序的逻辑直观的展示出来,并且可以方便与别人分享,很多逻辑上的问题也许代码上看不出来,但是采用图的方法就很方便了。实验三提高程序的可维护性实验目的1.理解程序的可维护性。2.提高程序的可维护性。3.实现程序的维护。二.实验环境安装MicrosoftVisualC++的PC机一台。三.实验内容:两人一组,分别从三个题目中选择一题(两人不要选同一题)完毕,然后由对方进行维护,涉及修改程序中不合理的地方,补充注释,扩展程序功能等。题目一:有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是本来第几号的那位。总体思绪:用一个数组代表所有人,其中每个数的值代表这个人还在不在圈内。(0代表已出局,1代表还在圈内)通过一个指针循环访问数组内各个成员,若数组成员值为1,则计数器+1,每当计数器加到3时,将该数组成员置0(即这个人出圈),最后指针指向的数组成员的下标就是最后留下的人。#include<stdio.h>usingnamespacestd;

voidmain()

inti,k,m,n,num[50],*p;ﻫﻩprintf("inputnumberofperson:n=");

scanf("%d",&n);

ﻩp=num;ﻫ for(i=0;i<n;i++)

ﻩ *(p+i)=i+1;

i=0;

k=0;ﻫﻩm=0;

while(m<n-1)//m是指出局的人数,由于有n个人,最后剩下一个人,所以最多余局(n-1)个人,构成循环ﻫﻩ{

ﻩﻩ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("% elseif(a[i]>=70) {printf("% elseif(a[i]>=60) ﻩ{ﻩprintf("% else ﻩ{printf("% }ﻩ}思绪:用switch语句替代if语句修改后的代码如下:#include<iostream>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;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论