《课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《课程设计实验报告.docx(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程设计实验报告 课程设计实验报告 题目:编制一个将待格式化得文本按照一定得版面要求重新排版并输出到文件得程序 一:需求分析 ?1:文本文件非空且以文本文件形式存放(为空没有格式化意义)。输入输出文件名均由用户从键盘输入。 ?2:字得定义:由非(,(空格))得任意ASCII码字符组成。 ?3:文本文件得定义:由字母字符,数字字符,空格与可以用ASCII代码显示得字符组成。只表示换行得意义。(空格)只表示一个字得结束得意义。 ?4:任何完整得字都没有被分割在两行:,行尾不齐没关系,但要实现左对齐。每行字符数不超过60 ?5:输出文件中字与字之间只留一个空格符,即实现多余空格符得压缩。 ?6:符号
2、指示它后面得正文在格式化时应另起一段排放,段首缩入8个字符得位置。 二:概要设计 ?1:void printOut() 该函数得功能就是:格式化文本文件后必要提示用户得信息说明 ?2:void writeOut(FILE * fp2,char c1) 该函数得功能就是:将字符输出到文本文件与屏幕 ?3:int zuokongbai(FILE * fp2) 该函数得功能就是:实现文本参数格式(左空白) ?4:void pageNumber(FILE * fp2,char * aIndex,int * page) 该函数得功能就是:输出当前页码 ?5:void out(int * columns,
3、char * array,int * linage,FILE * fp2,int * page,int * size) 该函数得功能就是:判断就是否输出到文本文件与屏幕 ?6:void linageFull(FILE * fp2,int * linage,int * columns,int * page) 该函数得功能就是:输出页首得格式(头长+左空白) ?7:void readIn(FILE * fp1,FILE * fp2) 该函数就是整个程序得核心,执行程序得主要逻辑判断 ?8:void main() 该函数得功能就是:程序得入口 三:详细设计 1,头文件:noteParameter、h
4、(参数得说明) int (PageLength) = 56; /页长(一页最大得行数) int PageWedth = 60; /页宽(一行最大得字符数) int LeftMargin = 10; /左空白(一行开始输出得空格数) int HeadingLength = 5; /头长(一页开始输出得空行数) int FootingLength = 5; /脚长(每页最后空5行) int StaringPageNumber = 1; /起始页号 2,主程序中需要得全局变量与函数声明 int page = 1; /记录页数 int i = 0; /循环变量 char a5; /记录page得cha
5、r类型 char * aIndex = a; /数组a得首地址 /函数声明(后面得函数调用了它) void linageFull(FILE * fp2,int * linage,int * columns,int * page); 3:主函数与其她函数得伪代码算法 说明:为了便于描述。文本文件1代表用户输入得要格式化得文本文件。文本文件2代表用户输入得格式化之后保存得文本文件。 函数1: void printOut() /输出头文件中得所有整形变量 /这个函数中得参数全部来自头文件 printf(n); printf( 格式化文本文件结束n); printf(版面得参数如下:n); print
6、f(页长:%dn,PageLength); printf(页宽:%dn,PageWedth); printf(左空白:%dn,LeftMargin); printf(头长:%dn,HeadingLength); printf(脚长:%dn,FootingLength); printf(起始页号:%dn,StaringPageNumber); printf(n); printf( 特别说明:本程序只支持英文格式化,对于中文格式化存在乱码问题。n); printf(n); 函数2: void writeOut(FILE * fp2,char c1) / 输出到文本文件2与屏幕 char ch1;
7、ch1 = fputc(c1,fp2);/接收从文本文件1中读出得一个字符,并且保存到文本文件2中printf(%c,ch1); /把这个字符输出到外设(屏幕) 函数3: int zuokongbai(FILE * fp2) / 左空白 for(i=0; i=0; i-) writeOut(fp2,*(aIndex+i); /向文本文件2中输出page (*page)+; /指向下一页 函数5: void out(int * columns,char * array,int * linage,FILE * fp2,int * page,int * size) /输出 if(*(columns)
8、+1+strlen(array) 60) /判断这一行就是否还能够输出空格加一个单词 /这一行不能再输出了,开始换行 if(*(linage)50) /判断这一页就是否已经印满 linageFull(fp2,linage,columns,page);/转到下一页 for(i=0; i50) /判断这一页就是否已经印满 /印满了要换页输出 linageFull(fp2,&linage,&columns,&page); for(i=0; i61)/程序中设计一个字不能超过60个字符,这里判断条件为61就是加了一个结束符0、 printf(字符格式错误!哪有这么长得单词!n); break; /结束
9、while循环 函数8: /程序得入口 void main() FILE * fp1,* fp2; / fp1指向读入得文本文件,fp2指向输出得文本文件char 100; / 保存要格式化文本文件得文件名 char 100; / 保存格式化之后输出文本文件得文件名 printf(请输入要格式化文件得文件名(包括后缀名):n); gets(); if(fp1=fopen(,r)=NULL) printf(The file %s was not fopen!n,); exit(0); /得到要进行格式化得文本文件1得地址 printf(请输入输出文件得文件名(包括后缀名):n); gets();
10、 if(fp2=fopen(,a)=NULL) printf(The file %s was not fopen!n,); exit(0); /得到格式化后要保存到文本文件2得地址 readIn(fp1,fp2); / 读入文本文件开始格式化 printOut(); / 参数说明 fclose(fp1); / 关闭文件(把文件缓冲区得数据送入硬盘中) fclose(fp2); / 关闭文件(把文件缓冲区得数据送入硬盘中) 四:调试分析 ?1:本程序历时9天完工,在分析数据结构时对程序得架构没有想好,导致这个程序有2个版本。每个版本都有各自得优点与缺点。现在程序已经实现了所有得功能 并对代码进行
11、了必要得优化设计。 ?2:在编程过程中,对设计做了如下修改: (1):在第一版中设计为:读一个字符判断就是否为:空,。(占不考虑 其她条件)不就是就直接输出。导致不能实现任何完整得字都没有被分割在两 行这个功能。 (2)在第二版中改为:读一个字符判断就是否为:空字符,。(占不考虑 其她条件)不就是就保存在数组中,这个数组就就是保存一个字得作用。判断 输出就就是一个一个字得输出,这样就实现了任何完整得字都没有被分割在两 行这个功能。 (3):在第一版中就遇到页码输出得问题。开始我设计页码就是整形,当格式 化文本文件过大时,页码输出就出现了问题。实现输出页码就是用fputc这个 函数,它就是实现字
12、符得输出,就把整形得页码数转换为ASCII码形式输出 了。 (4)在第二版中改为:把整形得页码转换为字符型用一个字符数组来保存。 每次输出页码就是就就是输出这个数组中得数据。这样就实现了页码得完整 输出。 五:用户手册 ?1:本程序得运行环境为DOS操作系统,执行文件为:文本格式化、exe。 ?2:进入程序后即显示提示信息:请输入要格式化文件得文件名(包括后缀名):以等待用户输入待格式化得文本文件名(一个回车为结束标志得字符串),如果该文件不 存在,则显示信息:The file “?” was not fopen!(?为用户输入得文件名)并退出程序。 如果该文件存在,则执行程序得下一步。提示信
13、息:请输入输出文件得文件名(包 括后缀名): 以等待用户输入输出文件得文本文件名(一个回车为结束标志得字符 串),如果该文件不存在,则程序自动新建一个,如果新建失败则提示信息:The file “?” was not fopen!(?为用户输入得文件名)并退出程序。如果该文件存在,则在该文 件后面追加。 ?3:输入结束后,程序即进行格式化。随后输出格式化信息。按任意键退出。详细见测试结果。 ?4:格式化结果保存在由用户指定得文本文件中,如果该文件存在,则在该文件后面追加。(为了更好得观察测试结果,请确保当前工程中没有该文件)?5:测试数据最大字不能超过60个字符。 ?6:本程序只格式化由字母字
14、符构成得文本文件。对于中文格式化存在乱码问题。六:测试结果 ?1:测试数据:I have a dream、txt文本文件I have a dream节选 I say to you today, my friends, that in spite of the difficulties and frustrations of the moment, I still have a dream、It is a dream deeply rooted in the American dream、I have a dream that one day this nation will rise up a
15、nd live out the true meaning of its creed: We hold these truths to be self-evident: that all men are created equal、I have a dream that one day on the red hills of Georgia the sons of former slaves and the sons of former slaveowners will be able to sit down together at a table of brotherhood、I have a
16、 dream that one day even the state of Mississippi, a desert state, sweltering with the heat of injustice and oppression, will be transformed into an oasis of freedom and justice、I have a dream that my four children will one day live in a nation where they will not be judged by the color of their ski
17、n but by the content of their character、I have a dream today、 ?2:测试结果: 请输入要格式化文件得文件名(包括后缀名): i have a dream、txt 请输入输出文件得文件名(包括后缀名): value、txt I say to you today, my friends, that in spite of the difficulties and frustrations of the moment, I still have a dream、It is a dream deeply rooted in the Amer
18、ican dream、 I have a dream that one day this nation will rise up and live out the true meaning of its creed: We hold these truths to be self-evident: that all men are created equal、 I have a dream that one day on the red hills of Georgia the sons of former slaves and the sons of former slaveowners w
19、ill be able to sit down together at a table of brotherhood、 I have a dream that one day even the state of Mississippi, a desert state, sweltering with the heat of injustice and oppression, will be transformed into an oasis of freedom and justice、 I have a dream that my four children will one day liv
20、e in a nation where they will not be judged by the color of their skin but by the content of their character、 I have a dream today、 格式化文本文件结束 版面得参数如下: 页长:56 页宽:60 左空白:10 头长:5 脚长:5 起始页号:1 特别说明:本程序只支持英文格式化,对于中文格式化存在乱码问题。 Press any key to continue ?3:为了节省篇幅,其她测试数据没有列出。请参考程序执行结果。 七:附录 1:源程序文件名清单: noteParameter、h /参数说明 note、cpp /主程序 2:由于文字编辑软件得格式问题,此报告打印得测试数据与程序运行得数据会有所出入,请以程序执行结果得数据为准。 3:另附全部源代码。