兰州商学院陇桥学院 工学系课程设计报告
设 计 题 目:文章编辑系统 系 别: 专 业 (方 向):信息管理与信息系统 年 级、 班: 学 生 姓 名: 学 生 学 号: 指 导 教 师:
年月日
1
目 录
一、 系统开发背景………………………………………………………1 二、 系统分析与设计…………………………………………………1
(一) 系统功能要求…………………………………………..1 (二) 系统模块结构……………………………………………1
三、 系统的设计与实现…………………………………………..2
(一) 字符统计流程图………………………………………..3 (二) 字符串定位流程图…………………………………...4
四、 系统测试……………………………………………………………5 五、 总结………………………………………………………………….…6 六、 附件(代码)…………………………………………………...6
2
一、 系统开发背景
数据结构是计算机科学与技术等电气信息类相关专业的一门重要的基础课程,也是一门必修的核心课程。在计算机科学的各个领域都要用到不同的数据结构,例如在操作系统中要用到队列;编译系统中要用到栈、树;人工智能中要用到有向图。另外,面向对象程序设计、计算机图形学、软件工程、多媒体技术等领域,都会用到很多数据结构。
数据结构是一门理论与实际紧密联系的课程,它旨在分析研究计算机加工的数据对象的特性,以便选择适当的数据结构和存储结构,从而使建立在其上的解决问题的算法达到最优,并在此基础上,编写出结构清晰、正确易读、符合软件工程规范的程序,为进一步学习后续专业课程和软件的开发打下坚实的基础。
二、 系统分析与设计
(一) 系统功能要求
1.问题描述:
功能:输入一页文字,程序可以统计出文字、数字、空格的个数。 2.基本要求:
(1)分别统计出其中英文字母数和空格数及整篇文章总字数; (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)删除某一子串,并将后面的字符前移; 3.需求分析:
(1)输入数据的形式和范围:
可以输入大写、小写的英文字母、任何数字及标点符号。 (2)输出形式:
①分行输出用户输入的各行字符;
②分4行输出“全部字母数”、“数字个数”、“空格个数”、“文章总字数”;
③输出删除某一字符串后的文章。
(二)系统模块结构
3
通过对系统功能的分析,文章编辑系统功能如下图所示。
通过上图的功能分析,把整个系统划分为3个模块:
1、 字符的统计:该模块主要是对大小写字母、空格、数字的统计,主要通过数
组来实现。
2、 字符串的统计:该模块可以很明确的找出所需字符串的位置,并对进行统计。
3、 字符串的删除:该模块主要是对指定字符串的删除。
三、 系统的设计与实现
1、字符统计流程图:
4
该模块的代码: void tj1() {
char ss[max1]; char zc=' '; int i,k,n; k=0; n=0;
printf(\"请输入一篇文章以@结束:\\n\"); getchar(); gets(ss);
for(i=0;ss[i]!='@';i++) {
5
if('z'>=ss[i]&&ss[i]>='a') k++;
if(ss[i]==zc) n++; }
printf(\"全文共%d个字符\\n出现英文字符为%d个\\n出现空格为%d个\\n\\n\}
2、子串定位流程图:
该模块的代码:
int BF(char *s,char *t) {
int i,j; i=1; j=1;
while(i<=s[0]&&j<=t[0]) if(s[i]==t[j]) {
i++;
6
}
j++; } else {
i=i-j+2; j=1; }
if(j>t[0])
return i-t[0]; else
return 0;
四、系统测试
1、主界面:
2、测试void tj1()函数:
3、测试void tj2()函数:
7
4、测试void shanchu()函数:
五、总结
本次课程设计历时一周,所用知识基本上包括了课本所学的知识以及很多有关C语言的基础知识,课程设计的过程中自己更更进一步了解了字符串,掌握了数据结构的思想与方法,也使我认识到自己在学习编程方面还有很多的不足。自己在编写程序的过程中,不是所有知识一下就想起来的,而是出现了不少错误,通过调试,在查阅一些资料后,才整理出来的。今后我要多读一些编程方面的书籍,不能只拘泥于课本上的知识,并注重理论与实践的结合,多上机练习编写程序,提高自己的实际动手能力和独立思考的能力,不断充实自己,更好的掌握编程思想。我相信,随着时间的积累系统中很多内容都将得到充实。
六、附件(代码)
源代码:
#include char ss[max1]; char zc=' '; int i,k,n; k=0; 8 n=0; printf(\"请输入一篇文章以@结束:\\n\"); getchar(); gets(ss); for(i=0;ss[i]!='@';i++) { if('z'>=ss[i]&&ss[i]>='a') k++; if(ss[i]==zc) n++; } printf(\"全文共%d个字符\\n出现英文字符为%d个\\n出现空格为%d个\\n\\n\} int BF(char *s,char *t) { int i,j; i=1; j=1; while(i<=s[0]&&j<=t[0]) if(s[i]==t[j]) { i++; j++; } else { i=i-j+2; j=1; } if(j>t[0]) return i-t[0]; else return 0; } void tj2() { int k; char s[max1],t[max2]; printf(\"请输入一篇文章:\\n\"); scanf(\"%s\ printf(\"请输入一串字符:\\n\"); scanf(\"%s\ 9 s[0]=strlen(s+1); t[0]=strlen(t+1); k=BF(s,t); if(k==0) printf(\"对不起!您输入的字符在文章中不存在!\\n\"); else printf(\"字符在文章的第%d个位置\\n\} void shanchu() { char s[max1], t[max2]; int k; int i,j,len; t[0]=strlen(t+1); len=t[0]; printf(\"请输入一篇文章:\\n\"); scanf(\"%s\ printf(\"请输入一串字符:\\n\"); scanf(\"%s\ t[0]=strlen(t+1); k=BF(s,t); if(k==0) printf(\"对不起!您输入的字符在文章中不存在!\\n\"); else { for(i=k;i<=k+len;i++) s[i]=s[i+len]; for(i=i+1,j=i+len; j<=s[0];j++,i++) s[i]=s[j]; s[i]='\\0'; printf(\"删除后的文章为:%s\ } printf(\"\\n\"); } void mulu() { int n; printf(\"*******************************************\\n\"); printf(\"* 欢迎进入文章编辑系统 *\\n\"); printf(\"* 1、字符统计 *\\n\"); printf(\"* 2、字符串统计 *\\n\"); printf(\"* 3、字符串删除 *\\n\"); printf(\"* 4、退出系统 *\\n\"); 10 printf(\"*******************************************\\n\"); printf(\"请输入您的选择\\n\"); scanf(\"%d\ switch(n) { case 1 : { tj1(); mulu(); break; } case 2 : { tj2(); mulu(); break; } case 3: { shanchu(); mulu(); break; } default : printf(\"已退出系统\\n\"); } } void main() { mulu(); } 11 因篇幅问题不能全部显示,请点此查看更多更全内容