1、 课课 程程 设设 计计 报报 告告 课程设计名称:C 语言课程设计语言课程设计 课程设计题目: 邮件地址提取程序 院(系):计算机学院 专 业: 计算机科学与技术 第 1 章 概要设计 1.1 题目的内容与要求题目的内容与要求 内容:设计一个简单的程序,可以把指定 TXT 文件中的电子邮件地址提取出来, 并保存到文件里。 要求: 1)读入一个 TXT 文件,把其中的电子邮件地址提取出来,并保存到指定的文件 中; 2)符合 格式的字符串就是电子邮件地址,其中和.是必不 可少的,且在.左边,两者之间必须得有字母或数字; 3)保存邮件地址的文件格式,首行为 TXT 文件名,随后每一行开始为邮件地址
2、 在 TXT 文件中的行号,然后是邮件地址。 1.2 总体结总体结构构 如图 1.1 功能模块图所示,本程序主要分为 4 个模块。提取文件模块,验证 地址模块,提取地址模块,保存地址模块。提取文件模块:提取指定文件里的内 容,将其放入数组中。验证地址模块:验证该字符串是否符合邮件地址的格式。 提取地址模块:将符合邮件地址的字符串保存到数组里。保存地址模块:将数组 里的邮件地址写入到文件中。 图图 1.1 功能功能模块图模块图 验 证 地 址 模 块 提 取 地 址 模 块 保 存 地 址 模 块 提 取 文 件 模 块 邮件地址提取程序 第 2 章 详细设计 2.1 提取文件提取文件模模块块
3、提取文件模块采用 while 语句,逐个读取文件里的字符,将其放入数组里保 存起来。 2.2 验证地址验证地址模模块块 验证含有的字符串是否符合邮件地址的格式,若符合则将其保存起来,否 则继续查找。 2.3 提取地址提取地址模模块块 将符合邮件地址的字符串提取到数组里。 开始 开始 第 3 章 调试分析 问题 1:程序运行,发现只能找到第一个邮件地址,而不能接着找下去。 解决方案:运用 continue 语句,使循环接着做下去。 问题 2:如何记录邮件地址所在行数? 解决方案:利用一个变量 m,记录源文件的换行符的个数即可。 问题 3:当向新文件里写数据时,发现只能写进部分。 解 决 方 案
4、: 原 来 新 文 件 在 一 开 始 就 以 写 的 方 式 被 打 开 , 只 要 将 if(fp2=fopen(“b.txt“,“w“)=NULL) printf(“can not open the filen“); exit(0); 写到程序的下方即可。 第 4 章 使用说明 运行操作及结果: 指定读取要文件 a.txt 里的内容。 (见图 4.1) 图 4.1 运行程序后 ch2 数组里存的内容。 (见图 4.2) 图 4.2 运行程序后文件 b.txt 内存进去的内容。 (见图 4.3) 图 4.3 参考文献 1 张长海.C 语言程设计M.北京:高等教育出版社,2006 2 谭浩强
5、.C 程序设计(第三版)M.北京:清华大学出版社,2005(2007 重印) 3 王敬华,林萍,张清国.C 语言程序设计教程(第二版)M.北京:清华大学 出版社,2009 4 冼镜光.C 语言名题精选百则M.北京:机械工业出版社,2005 5 李春葆,金晶,黄楠,喻丹丹.C 语言程序设计辅导M. 北京:清华大学出版 社,2007.4 附 录(程序清单) #include #include #include #include #define N 500 int AN,BN,CN,DN; void main() FILE *fp1,*fp2; int i=0,j=0,l=0,k=0,a,b,c,n
6、,p=0,m=0,flag=0; char ch1N,ch2N,ch; if(fp1=fopen(“a.txt“,“r“)=NULL) printf(“can not open the filen“); exit(0); i=0; while(!feof(fp1) ch=fgetc(fp1); ch1i=ch; i+; n=i-1; ch1i=#; for(i=0,j=0;ch1i!=#;i+) if(ch1i=) Aj=i+1;/的位置 j+; continue; a=j;k=0; for(j=0;j1) break; i+; if(flag=1) for(i=Aj;ch1i!= ;i+) if(ch1i=.) Bk=i;/点的位置 k+; break