通信与信息工程学院软件实验报告1通信与信息工程学院2012/2013学年第二学期软件设计实验报告模块名称VisualC++专业广播电视工程学生班级B100117学生学号B10011714学生姓名王建明指导教师田炜通信与信息工程学院软件实验报告2设计题目(1)P021E(2)P018M(3)R019M(4)P006H任务要求(1)编辑文本;保存、打开指定位置的文本文件;具有输入输出界面。(2)编制不同数制间的转换程序。要求提供输入输出界面,当输完一个任意十进制数字,程序能自动将其转化为另外的数制表示的值,包括二进制、八进制和十六进制。(3)输入一个自然数n,求,同时统计结果中有多少个0。(4)输入任意四个整数(0到10),运算符只有加减乘除,还有括号.每个数只能且必须用一次。要求判断这些表达的结果中是否有24。如果有,输出计算表达式:如输入4,6,1,1输出4*6*1*1=24(允许有括号)。实验设备及软件硬件设备:微型计算机一台JH5001IV型通信教学实验系统软件设备:MicrosoftVisualC++6.0同组人员学号及姓名参考文献教材:《VisualC++6.0教程》于涛等编科学出版社《C语言程序设计》朱立华王立柱编著人民邮电出版社参考书:《计算机软件技术实验教程》熊壮编重庆大学出版社《VisualC++6.0程序设计自学教程》康博创作室编著清华大学出版社《C程序设计》第三版谭浩强编著清华大学出版社通信与信息工程学院软件实验报告3题目一:P021E实验要求:设计一个简单的文本编辑器,该系统要求对一个文本文件中的内容进行各种常规操作,例如:(1)编辑文本;(2)保存、打开指定位置的文本文件;(3)具有输入输出界面。1、问题分析与方案设计。本次程序主要为了让我们了解C语言中对于文件的一般操作。文件是程序设计中的一个重要概念。操作系统是以文件为单位对数据进行管理的,也就是说,如果想找外部介质上的数据,必须先按文件名找到所指定的文件,然后再从该文件中读取数据。C语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)数据顺序组成。根据数据的组织形式,可分为ASCII文件和二进制文件。ASCII文件又称文本(text)文件,他的每一个字节放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。在文件系统中,“文件指针”是一个非常重要的概念,通常在进行关于文件操作的C程序时,会定义一个结构体变量的文件指针(FILE*fp),以便于C语言程序能够准确的对文件进行访问及操作。本次实验程序包含了简单地对于文件的打开、插入、删除、查找、替换、显示、保存的操作,通过对于文件指针的运用以及各种文件指令的运用,基本达到了实验的要求。在本次实验中,按照顺序程序的设计方法,加以熟练地运用C程序中主函数与一般函数之间的熟练调用,顺利的实现了实验要求的各种结果。程序中用到的核心方法包括:文件的打开与关闭、文件的读写、文件的定位以及文件的出错检测等。其中包括了fopen、fclose、fputc、fgetc、fread、fwrite、rewind、fseek、ftell和ferror等函数。这些函数对算法的实现起了很大的作用具体算法实现过程如下图所示。通信与信息工程学院软件实验报告4程序流程图如下:Choice=6NYNYchoice=3Choice=1Choice=2Choice=4Choice=5Choice=0开始结束Choice=1Choice=2输入文件名及路径1.插入2.删除3.查找4.替换5.显示6.返回0.退出输入插入的字符串输入删除的字符串输入查找的字符串输入替换的字符串及源字符串显示文件内容1.打开文件2.退出文件能否打输入正确选择操作通信与信息工程学院软件实验报告52、编程实现。程序的关键源代码如下:(1)打开指定位置的文件的代码:printf(请输入要打开的文件名及路径:);scanf(%s,name);fp=fopen(name,r+);if(!fp){system(cls);printf(\t\t\t====文件无法打开!====\n);choose0();}system(cls);while((ch=fgetc(fp))!=EOF){putchar(ch);}rewind(fp);(2)对文件内容进行插入操作的代码:chars1[10000];chars2[100];inti=0;while((ch1=fgetc(fp))!=EOF){s1[i]=ch1;i++;}rewind(fp);s1[i]='\0';system(cls);show();printf(请定位你想要插入字符串的地方:);scanf(%d,&set);system(cls);show();printf(输入你插入的字符串:);scanf(%s,s2);通信与信息工程学院软件实验报告6intlen=strlen(s2);fclose(fp);fp=fopen(name,w);for(intj=0;jset;j++){ch1=s1[j];fputc(ch1,fp);}for(j=0;jlen;j++){ch1=s2[j];fputc(ch1,fp);}for(j=set;ji;j++){ch1=s1[j];fputc(ch1,fp);}fclose(fp);system(cls);(3)对文件内容进行查找操作的代码:intcount=0;scanf(%s,str);intlen=strlen(str);fp=fopen(name,r);if(!fp){printf(\t\t\t\t===文件无法打开!===\n);}rewind(fp);while((ch=fgetc(fp))!=EOF){str1[count]=ch;count++;}str1[count]='\0';fclose(fp);p=strstr(str1,str);通信与信息工程学院软件实验报告7system(cls);if(p!=NULL)printf(\t\t\t===文本中存在这样的字符串===\n);elseprintf(\t\t\t\t===文本中不存在这样的字符串===\n);(4)对文件内容进行替换的代码:printf(请输入被替换字符串:);printf(\n);scanf(%s,s2);printf(请输入替换的字符串:);printf(\n);scanf(%s,s3);inti,j,len1,len2,len3,len4,count=0;len1=strlen(s1);len2=strlen(s2);len3=strlen(s3);intnum=0;fp=fopen(name,r);if(!fp){printf(\t\t\t\t===文件无法打开!===\n);}rewind(fp);while((ch=fgetc(fp))!=EOF){s1[count]=ch;count++;}s1[count]='\0';fclose(fp);for(i=0;ilen1;i++){for(j=0;jlen2;j++){if(s1[i+j]!=s2[j]){s4[num]=s1[i];num++;break;通信与信息工程学院软件实验报告8}if(j==len2-1){for(intk=0;klen3;k++){s4[num]=s3[k];num++;}i+=len2-1;}}}s4[num]='\0';len4=strlen(s4);fp=fopen(name,w);for(j=0;jlen4;j++){ch=s4[j];fputc(ch,fp);}fclose(fp);(5)对文件内容进行删除的代码:printf(请输入被删除字符串:);scanf(%s,s2);printf(\n);inti,j,len1,len2,len4,count=0;len1=strlen(s1);len2=strlen(s2);intnum=0;fp=fopen(name,r);if(!fp){printf(\t\t\t\t===文件无法打开!===\n);}rewind(fp);while((ch=fgetc(fp))!=EOF){s1[count]=ch;通信与信息工程学院软件实验报告9count++;}s1[count]='\0';fclose(fp);for(i=0;ilen1;i++){for(j=0;jlen2;j++){if(s1[i+j]!=s2[j]){s4[num]=s1[i];num++;break;}if(j==len2-1){s4[num]=s1[i+len2];num++;i+=len2;}}}s4[num]='\0';len4=strlen(s4);fp=fopen(name,w);for(j=0;jlen4;j++){ch=s4[j];fputc(ch,fp);}fclose(fp);(6)显示文件内容的代码:fp=fopen(name,r);if(!fp){printf(\t\t\t\t===文件无法打开!===\n);choose0();通信与信息工程学院软件实验报告10}printf(--------------------------------------------------------------------------------)while((ch=fgetc(fp))!=EOF){putchar(ch);}rewind(fp);3、测试数据、测试结果、结果分析。(1)欢迎界面:(2)选择菜单:(3)插入操作及结果:在文本文档“123456789abcdefg”的“123456789”后插入“gfedcba”其结果应为“123456789gfedcbaabcdefg”其C程序执行结果如下:通信与信息工程学院软件实验报告11(4)删除操作及结果:在文本文档“123456789gfedcbaabcdefg”中,删去文本“abcdefg”,其结果应为“123456789gfedcba”,其C程序执行结果如下:(5)查找操作及结果:在文本文档“123456789gfedcba”中,查找“123456789”字符串,其结果应为提示“===文本中存在这样的字符串===”。其C程序执行结果如下:通信与信息工程学院软件实验报告12(6)替换操作及结果在文本文档“123456789gfedcba”中,将“gfedcba”字符串替换为“abcdefg”字符串,其结果应为“123456789abcdefg”。其C程序执行结果如下:(7)实验结果分析。从上面的测试结果可以看出,本次实验程序基本完成了实验的要求内容而且在功能上还进行了一定程度的的丰富,实现了文件的打开、保存以及一些简单的编辑操作。程序通过打开文件后对文件内容进行字符串的一系列操作,运用C语言定义的指令对文件系统进行编辑,熟悉了各指令的用途,进一步了解了C语言是怎样对文件系统进行操作的,对后续课程的学习奠定了坚实的基础。通信与信息工程学院软件实验报告13题目二:P018M实验要求:编制不同数制间的转换程序。要求提供输入输出界面,当输完一个任意十进制数字,程序能自动将其转化为另外的数制表示的值,包括二进制、八进制和十六进制。1、问题分析与方案设计。算法处理的对象是数据,而数据是以某种特定的形式存在的(例如整数、实数、字符等形式)。不同的数据之间往往还存在某些联系(例如由若干个整数组成一个整数数组)。C语言提供了一些数据类型,由这些数据类型可以构造出不同的数据结构。包括:基本类型、构造类型、指针类型和空类型。数据一般常用的有十六进制、十进制、八进制和二进制。在计算机内部,数据一般以二进制的方式存储和运算。当往计算机中输入一个非二进制数据时,计算机会自动将其转换为二进制数来存储或计算,当需要输出其他进制的数据时,需要转换成其他进制的数据输出。根据设计题目的要求,可以知道要实现进制数的转换,可以将不同的进制数转换成字符串输出,即