课程设计(文本格式化)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

附件1:

课程设计

题目文本格式化

学院计算机科学与技术学院

专业计算机科学与技术

班级计算机1104班

姓名成霖

指导教师吴利军

2013 年 6 月17 日

题目:文本格式化

一,问题描述:

试写一个文本格式化程序可以处理一个输入文件,它按照用户指定的下列版面规格参数重排版面:实现页内调整、分段、分页等文本处理功能,排版结果存入输出文本文件中。

(1)输出文件中字与字之间只留一个空格符,即实现多余空格符的压缩。

(2)输出文件中,任何完整的字不能分割在两行,行尾可以不齐,但行首要对齐。

(3)将页号印在页底空行中第2行的中间位置上。

(4)版面要求的参数见题集p117。

(5)测试用例自己设计。

二,设计:

1, 版面要求的参数要包含:

页长(Page Length)——每页内文字(不计页号)的行数。

页宽(Page Wedth)——每行内文字所占最大字符数。

左空白(Left Margin)——每行文字前的固定格数。

头长(Heading Length)——每页页顶所空行数。

脚长(Footing Length)——每页页底所空行数(含页号行)

起始页号(Starting Page Number)——首页的页号。

2,概要设计:

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,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()

3,实验设计程序代码:

#include

#include

#include

int (PageLength) = 56; //页长(一页最大的行数)

int PageWedth = 60; //页宽(一行最大的字符数)

int LeftMargin = 10; //左空白(一行开始输出的空格数)

int HeadingLength = 5; //头长(一页开始输出的空行数)

int FootingLength = 5; //脚长(每页最后空5行)

int StaringPageNumber = 1; //起始页号

int page = 1; //记录页数

int i = 0; //循环变量

char a[5]; //记录page的char类型

char * aIndex = a; //数组a的首地址

//函数声明(后面的函数调用了它)

void linageFull(FILE * fp2,int * linage,int * columns,int * page);

//函数1:

void printOut() //输出头文件中的所以整形变量

{

//这个函数中的参数全部来自头文件

printf("\n");

printf(" 格式化文本文件结束\n");

printf("版面的参数如下:\n");

printf("页长:%d\n",PageLength);

printf("页宽:%d\n",PageWedth);

printf("左空白:%d\n",LeftMargin);

printf("头长:%d\n",HeadingLength);

printf("脚长:%d\n",FootingLength);

printf("起始页号:%d\n",StaringPageNumber);

printf("\n");

printf(" 特别说明:本程序只支持英文格式化,对于中文格式化存在乱码问题。\n");

printf("\n");

}

//函数2:

void writeOut(FILE * fp2,char c1) // 输出到文本文件2和屏幕

{

char ch1;

ch1 = fputc(c1,fp2);//接收从文本文件1中读出的一个字符,并且保存到文本文件2中

printf("%c",ch1); //把这个字符输出到外设(屏幕)

}

//函数3:

int zuokongbai(FILE * fp2) // 左空白

{

for(i=0; i<10; i++)

writeOut(fp2,' '); //循环10次,输出10个空格到文本文件2中

return i; //返回值为10.它赋给记录单行字节数的变量columns

}

//函数4:

void pageNumber(FILE * fp2,char * aIndex,int * page) //输出当前页码

{

int m,n; //定义2个整形变量接收page和page%10的值

m = *page; //接收page的值

int i=0;

while(m != 0) //判断条件为:m的值不为0即page的值不为0

{

n = m % 10;

*(aIndex+i) = n+'0'; //对数组a进行赋值操作,把int类型的page的各位数转换为字符型保存到数组a中,以便于向文本文件2中输出page

i++;

m = m /10;

}

//此时page 已经保存在数组a中了,开始输出page

for(i=i-1; i>=0; i--)

{

writeOut(fp2,*(aIndex+i)); //向文本文件2中输出page

}

(*page)++; //指向下一页

}

//函数5:

相关文档
最新文档