文章编辑况水云设计完成.docx

上传人:b****9 文档编号:25044642 上传时间:2023-06-04 格式:DOCX 页数:25 大小:199.34KB
下载 相关 举报
文章编辑况水云设计完成.docx_第1页
第1页 / 共25页
文章编辑况水云设计完成.docx_第2页
第2页 / 共25页
文章编辑况水云设计完成.docx_第3页
第3页 / 共25页
文章编辑况水云设计完成.docx_第4页
第4页 / 共25页
文章编辑况水云设计完成.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

文章编辑况水云设计完成.docx

《文章编辑况水云设计完成.docx》由会员分享,可在线阅读,更多相关《文章编辑况水云设计完成.docx(25页珍藏版)》请在冰豆网上搜索。

文章编辑况水云设计完成.docx

文章编辑况水云设计完成

目录

1.问题描述及要求1

1.1问题描述1

1.2基本要求1

2.需求分析1

2.1输入数据的形式和范围1

2.2输出形式1

3.算法思想描述1

4.概要设计1

4.1统计字符个数函数及算法流程图1

4.2统计指定字符串个数函数及算法流程图3

4.3删除指定字符串函数及算法流程图3

5.详细设计4

5.1文章输入函数4

5.2文章输出函数5

5.3统计字符个数函数5

5.4统计指定字符串个数函数5

5.5删除指定字符串函数6

5.6字体颜色函数7

6.测试数据及分析7

6.1文章输入函数7

6.2文章输出函数8

6.3统计字符个数函数8

6.4统计指定字符串个数函数9

6.5删除指定字符串个数函数9

6.6退出程序10

6.7时间复杂度分析10

7.课程设计总结11

8.谢辞12

9.参考资料12

附录:

源代码

课程设计(论文)任务书

软件学院学  院  软件+电气专  业2011—4 班

一、课程设计(论文)题目 文章编辑

二、课程设计(论文)工作自2012年12月29日起至2013年1月6日止

三、课程设计(论文)地点:

科技楼机房

四、课程设计(论文)内容要求:

1.本课程设计的目的

⑴训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,

编写程序求解指定问题;

⑵初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;

⑶提高综合运用所学的理论知识和方法独立分析和解决问题的能力,巩固、深化学生

的理论知识,提升编程水平。

2.课程设计的任务及要求

1)基本要求:

⑴要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象

数据类型、编写上机程序和上机调试等若干步骤完成题目,最终写出完整的报告;

⑵在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率;

⑶程序设计语言推荐使用C/C++,程序书写规范,源程序需加必要的注释;

⑷每位同学需提交可独立运行的程序和规范的课程设计报告。

2)课程设计论文编写要求

⑴理论设计部分以课程设计论文的形式提交,格式必须按照课程设计论文标准格式进

行书写和装订;

⑵课程设计报告(论文)包括中文目录、设计任务、需求分析、概要设计、详细设计、

编码实现、调试分析、课设总结、谢辞、参考文献、附录等;

⑶设计部分应包含系统功能模块图,调试分析应包括运行截图等。

3)课程设计评分标准:

⑴学习态度:

10分;

⑵系统设计:

20分;

⑶编程调试:

20分;

⑷回答问题:

20分;

⑸论文撰写:

30分。

4)参考文献:

⑴严蔚敏,吴伟民.数据结构(C语言版)[M].清华大学出版社.2010.3

⑵严蔚敏,吴伟民.数据结构题集(C语言版)[M].清华大学出版社.1999.2

⑶何钦铭,冯燕等.数据结构课程设计[M].浙江大学出版社.2007.8

5)课程设计进度安排

⑴准备阶段(4学时):

选择设计题目、了解设计目的要求、查阅相关资料;

⑵程序模块设计分析阶段(4学时):

程序概要设计、详细设计;

⑶代码编写调试阶段(8学时):

程序模块代码编写、调试、测试;

⑷撰写论文阶段(4学时):

总结课程设计任务和设计内容,撰写课程设计论文。

学生签名:

2012年12月29日

6)课程设计题目具体要求:

问题描述:

输入一页文字,可以统计出文字、数字、空格的个数。

基本要求:

⑴静态存储一页文章,每行最多不超过80个字符,共N行。

⑵分别统计出其中英文字母和空格数及整篇文章总字数。

⑶统计某一字符串在文章中出现的次数,并输出该次数。

⑶删除某一子串,并将后面的字符前移。

⑷存储结构使用线性表,分别用几个子函数实现相应的功能。

 

课程设计(论文)评审意见

(1)学习态度(10分):

优( )、良( )、中( )、一般( )、差( );

(2)系统设计(20分):

优()、良( )、中( )、一般( )、差( );

(3)编程调试(20分):

优( )、良( )、中( )、一般( )、差( );

(4)回答问题(20分):

优( )、良( )、中( )、一般( )、差( );

(5)论文撰写(30分):

优( )、良( )、中( )、一般( )、差( );

(6)格式规范性及考勤是否降等级:

是( )、否( )

评阅人:

王英华 职称:

讲师

2013年1月7日

 

1.问题描述及要求

1.1问题描述

功能:

输入一页文字,程序可以统计出文字、数字、空格的个数。

1.2基本要求

(1)静态存储一页文章,每行最多不超过80个字符,共N行;

(2)分别统计出其中英文字母数和空格数及整篇文章总字数;

(3)统计某一字符串在文章中出现的次数,并输出该次数;

(4)删除某一子串,并将后面的字符前移;

(5)存储结构使用线性表,分别用几个子函数实现相应的功能。

2.需求分析

2.1输入数据的形式和范围

可以输入大写、小写的英文字母、任何数字及标点符号。

2.2输出形式

(1)分行输出用户输入的各行字符;

(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数;

(3)输出删除某一字符串后的文章;

3.算法思想描述

本程序是对输入的文字进行操作,故使用静态的字符数组作为存储结构,定义如下:

charstr[N][80];//存储文章的字符数组

对于文本的输入,采用头插法将文本信息存储到链表已申请好的存储空间中;对于文本内容的统计,使用循环对已存储的文章进行匹配,大写字母数、小写字母数、空格数、数字数直接通过条件比较即可得到;对于文本内容的处理,查找部分仍是使用循环对已存储的文章进行匹配,判断需要查找的字符或者字符串是否与文章中某部分内容相同,如果存在相同的记录相同的个数。

删除部分先使用程序的查找功能对文章中需要删除的字符或者字符串进行查找,然后对其进行删除。

4.概要设计

本程序主要定义了5个函数:

voidoutput();voidcount(),voidcheckstring(),voidoutputdelstr()voidmenu()

4.1统计字符个数函数及算法流程图

函数:

voidcount()

功能:

统计字母、数字、空格的个数

流程图如下:

 

4.2统计指定字符串个数函数及算法流程图

函数:

voidcheckstring()

功能:

统计某一个指定的字符串的个数

流程图如下:

4.3删除指定字符串函数及算法流程图

函数:

voidoutputdelstr()

功能:

删除某一个指定的字符串

流程图如下:

5.详细设计

5.1文章输入函数

intintput()//文章输入函数

{

printf("请输入第%d行文字\n",i+1);

gets(str[i]);//读取数组的内容

if(strlen(str[i])>80)

{

printf("每行最多输入80字符,请重新输入第%d行文字\n",i+1);

/*当每行输入文字大于80字符时输出此语句,并且重新输入文字*/

gets(str[i]);

}

returnstrlen(str[i]);//返回数组的长度

}

5.2文章输出函数

voidoutput()//文章输出函数

{

for(i=0;i

{

puts(str[i]);//输出数组的内容

}

}

5.3统计字符个数函数

voidcount()//统计字符个数的函数

{for(j=0;j

{

if(str[i][j]>='a'&&str[i][j]<='z')cnum++;//统计小写字母

if(str[i][j]>='A'&&str[i][j]<='Z')cnum++;//统计大写字母

if(str[i][j]>='0'&&str[i][j]<='9')dnum++;//统计数字

if(str[i][j]=='')snum++;//统计空格

}

}

5.4统计指定字符串个数函数

voidcheckstring()//统计指定字符串个数函数

{

charcstr[20];

char*p1,*p2;

printf("请输入需要统计的字符串:

");

gets(cstr);

p2=cstr;

for(i=0;i

{

p1=str[i];

while(strstr(p1,p2)!

=NULL)

/*strstr()函数的原型是:

externchar*strstr(char*str1,char*str2);功能是找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。

*/

{

strnum++;

p1=strstr(p1,p2)+1;

}

}

printf("字符串:

%s在文章中出现的次数为:

%d\n",cstr,strnum);

}

5.5删除指定字符串函数

voidoutputdelstr()//删除指定字符串函数

{

charcstr[20];

char*p,*p1,*p2;

intlen;

printf("请输入要删除的字符串:

");

gets(cstr);

len=strlen(cstr);

p2=cstr;

for(i=0;i

{

p1=str[i];

while(strstr(p1,p2)!

=NULL)

{

p=p1=strstr(p1,p2);

while(*(p+len-1))

{

*p=*(p+len);

p++;

}

}

}

printf("删除字符串:

%s后文章为:

\n",cstr);

output();//输出删除字符串后的文章

}

5.6字体颜色函数

intmain(intargc,char*argv[])//主函数

{

HANDLEconsolehwnd;consolehwnd=GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute(consolehwnd,FOREGROUND_RED);

printf("\n");

}

6.测试数据及分析

6.1文章输入函数(输入第一行后按回车键输入下一行)

6.2文章输出函数---按回车键自动输出

6.3统计字符个数函数--按回车键自动统计

6.4统计指定字符串——输入字符按回车键自动统计

6.5删除指定字符串函数--输入要删除的字符按回车键进行删除

6.6退出程序

输入0按回车出现“Pressanykeytocontinue”后按任意键退出

 

6.7时间复杂度分析

 

统计字符个数算法时间复杂度为O(N*80)

查找某一字符串出现的次数算法时间复杂度为O(N*80)

删除某一字符串算法所耗费的时间最多,每次进行删除操作时都要

读整篇文章,删除字符串s时是将s中的字符一个个的删除,每删除

一个字符都需要一次前移操作,所以平均时间复杂度为O(N*(N+1)/2)

 

7.课程设计总结

这已经不是第一次熬夜为了做课设了,开始对于编程几乎不懂的我,课设对于我来说无疑是刀山火海。

但是我没有放弃,我鼓起勇气从简单的编程开始,渐渐地我好想懂得了些许,心中的喜悦感只有经历过的人才能体会得到。

懂得一点后我就开始按照任务书上的要求把要实现的基本功能分成了几个模块我一个模块一个模块的慢慢来做。

有时候都不知道该如何继续往下做。

于是就到图书馆查找书籍,到网上查阅资料,一些小模块竟然在不知不觉中建好了,小模块的建立无疑使我建立一份小信心。

经历小波折后小模块全部建立完,但在链接的时候发现出错了,唉。

没得办法,只有硬着头皮慢慢改。

一直英语都不行的我看到出错的东东还不知道是啥意思,无奈只有向请XX和同学请教。

错误修改完后运行发现,每个文字和字符都是占两个字节的,于是总字数统计就出现了错误。

真是屋漏偏风连夜雨,唉。

抓耳饶腮之际发现了可以通过建立一个算法实现。

没想到竟然和我想的一样实现了。

再怎么想瞌睡也阻挡不了我这颗正激动着的心。

看着运行结果的字体颜色太过单一,于是我想怎样能使它产生多种颜色字体的效果呢。

通过网上查阅资料发现只需要在主函数中加入一段代码,然后再输入函数前加入一行小代码,最后颜色是通过英文翻译得到的。

我开始还以为能加上五颜六色的字体,XX查了所有的颜色英文单词代入,最后只发现4中颜色,唉,有点美中不足。

通过本次课程设计,我学到了很多:

增强了查阅相关参考资料的能力,独立分析解决问题的能力;自己的上机动手的能力和对课程设计的理解,得到很多启示;课程设计为我们提供了一个即动手又动脑、独立实践的机会,将课本上的知识理论和实际有机的结合起来,锻炼了我们的分析解决实际问题的能力。

这次课程设计使我我对数据逻辑结构的特点和存储表示方式的有了更深的了解和认识,培养了我在具体应用中选择合适的数据结构和存储结构的能力,同时也使我认识到自己在学习编程方面还有很多的不足。

今后我要多读一些编程方面的书籍,不能只拘泥于课本上的知识,并注重理论与实践的结合,多上机练习编写程序,提高自己的实际动手能力和独立思考的能力,不断充实自己,更好的掌握编程思想。

事情只有自己经历过才来的彻底,来的深刻。

在解决问题的过程中,充分体会到了数据结构这门课程对于软件设计的重要性,也体会到了数据结构+算法=程序这句话的真正含义,一个实际问题的解决第一步就是要依赖于良好的抽象思维的,将实际问题转化为相应的数据结构,只有这一步做好了,才能采取相应的算法和优化方法解决问题和解决好问题,

8.谢辞

课程设计得以熬夜完成,要感谢的人实在太多了。

首先感谢学校提供给我们一个这么好的机会,让我们能把平常在课上学到的相关理论知识运用的实践当,让我们在编程中更加熟练地掌握了数据结构的相关算法内容。

其次当然是我们的任课老师王英华老师,本课程设计在她的悉心指导和严格要求下完成,从选题到具体的论文写作过程,无不凝聚着老师的心血和汗水。

2013年的第一天,新年的到来,王老师在凌晨一点半给我讲解了课设的中我存在不懂的问题。

第一次遇到这么好的老师,我真的好感动。

王老师的这种教学精神不是一般的老师能够比拟的。

王老师为我们提供了种种专业知识上的指导和一些富于创造性的建议,在此向王老师表示深深的感谢和崇高的敬意。

另外我还要感谢各位同学在课程设计的这段时间里,你们给了我很多的启示,提出了很多宝贵的意见,对于你们的帮助和支持,在此我表示真心感谢。

9.参考资料

⑴严蔚敏,吴伟民.数据结构(C语言版)[M].清华大学出版社.2010.3

⑵严蔚敏,吴伟民.数据结构题集(C语言版)[M].清华大学出版社.1999.2

⑶何钦铭,冯燕等.数据结构课程设计[M].浙江大学出版社.2007.8

(4)廖雷,《C程序设计实践教程》,电子工业出版社,2006年7月

 

附录:

源代码:

#include

#include

#include

#include

#include

#defineN3//文章的行数

charstr[N][80];//存储文章的字符数组,为全局变量

inti,j;

intlen[N];

intZnum=0,Snum=0,Knum=0,Anum=0,strnum=0;//为各变量赋初值

voidmenu();//菜单显示函数

intintput();//文章输入函数

voidoutput();//文章输出函数

voidcount();//统计字符个数函数

voidcheckstring();//统计指定字符串个数函数

voidoutputdelstr();//删除指定字符串函数

voidmenu()//菜单显示函数

{

printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");

printf("※菜单※\n");

printf("※♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀※\n");

printf("※1---统计字符串※\n");

printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");

printf("※2---删除字符串※\n");

printf("※♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂※\n");

printf("※0---退出系统※\n");

printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");

}

intintput()//文章输入函数

{

printf("请输入第%d行文字\n",i+1);

gets(str[i]);//读取数组的内容

if(strlen(str[i])>80)

{

printf("每行最多输入80字符,请重新输入第%d行文字\n",i+1);

/*当每行输入文字大于80字符时输出此语句,并且重新输入文字*/

gets(str[i]);

}

returnstrlen(str[i]);//返回数组的长度

}

voidoutput()//文章输出函数

{

for(i=0;i

{

puts(str[i]);//输出数组的内容

}

}

voidcount()//统计字符个数的函数

{

for(j=0;j

{

if(str[i][j]>='a'&&str[i][j]<='z')Znum++;//统计小写字母

if(str[i][j]>='A'&&str[i][j]<='Z')Znum++;//统计大写字母

if(str[i][j]>='0'&&str[i][j]<='9')Snum++;//统计数字

if(str[i][j]=='')Knum++;//统计空格

}

}

voidcheckstring()//统计指定字符串个数函数

{

charcstr[20];

char*p1,*p2;

printf("请输入需要统计的字符串:

");

gets(cstr);

p2=cstr;

for(i=0;i

{

p1=str[i];

while(strstr(p1,p2)!

=NULL)//strstr()函数的原型是:

externchar*strstr(char*str1,char*str2);

//功能是找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。

{

strnum++;

p1=strstr(p1,p2)+1;

}

}

printf("字符串:

%s在文章中出现的次数为:

%d\n",cstr,strnum);

}

voidoutputdelstr()//删除指定字符串函数

{

charcstr[20];

char*p,*p1,*p2;

intlen;

printf("请输入要删除的字符串:

");

gets(cstr);

len=strlen(cstr);

p2=cstr;

for(i=0;i

{

p1=str[i];

while(strstr(p1,p2)!

=NULL)

{

p=p1=strstr(p1,p2);

while(*(p+len-1))

{

*p=*(p+len);

p++;

}

}

}

printf("删除字符串:

%s后文章为:

\n",cstr);

output();//输出删除字符串后的文章

}

intmain(intargc,char*argv[])//主函数,同时对字体颜色定义

{

HANDLEconsolehwnd;consolehwnd=GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute(consolehwnd,FOREGROUND_RED);

printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");

printf("※※\n");

printf("※¥¥¥¥¥¥¥¥11软件+电气四班况水云¥¥¥¥¥¥¥¥※\n");

printf("※♂♂※\n");

printf("※♂♂※\n");

printf("※♂(y^o^y)--欢迎您使用本文章编辑--(*^@^*)♂※\n");

printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");

charkey,t;

for(i=0;i

{

len[i]=intput();

Anum+=len[i];

}

for(i=0;i

{

count();//调用count()函数

}

while

(1)

{

SetConsoleTextAttribute(consolehwnd,FOREGROUND_GREEN);

printf("**¥¥#########################╭(╯ε╰)╮######################¥¥**\n");

SetConsoleTextAttribute(consolehwnd,FOREGROUND_BLUE);

printf("\n");

printf("您输入的文章为:

\n");

SetConsoleTextAttribute(consolehwnd,FOREGROUND_RED);

output();//调用output()函数

SetConsoleTextAttribute(consolehwnd,FOREGROUND_GREEN);

printf("\n");

printf("文章中的字母个数为:

%d\n",Znum);

printf("数字个数为:

%d\n",Snum);

printf("空格个数为:

%d\n",Knum);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1