版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、淮海 工学院 计算机工程学院课程设计报告设计名称:数据结构课程设计选题名称:简单行编辑姓 名: 侯耀生 学 号:2012122694专业班级:软件工程软件121系(院): 计算机工程学院设计时间: 2013.12.232013.1.5设计地点:软件工程实验室、教室成绩:指导教师评语:签名:数据结构课程设计报告第 18 页,共 页1.课程设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。2 .初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3 .提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4 .训练
2、用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。2 .课程设计任务与要求:任务根据教材数据结构-C语言描述(耿国华主编)和参考书数据结构题集(C语言版)(严蔚敏、吴伟民主编)选择课程设计题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构 的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用。设计题目从任务书所列选题表中选取,每班每题不得超过2人。学生自选课题学生原则上可以结合个人爱好自选课题,要求课题有一定的深度与难度,有一定的算法复杂性,能够巩固数据结构课程所学的知识。学生自选
3、课题需在18周前报课程设计指导教师批准方可生效。要求:1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。2、.设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。3、程序设计语言推荐使用 C/C+,程序书写规范,源程序需加必要的注释;4、每位同学需提交可独立运行的程序;5、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充
4、实,不少于10页(代码不算);6、课程设计实践作为培养学生动手能力的一种手段,单独考核。3 .课程设计说明书一需求分析设计一个简单的行编辑程序,输入一页文字,程序可以统计出文字、数字、空格的个数。静态存 储一页文章,每彳T最多不超过80个字符,共N行。存储结构使用线性表,文字中可以是大写、小写的英文字母、任何数字及标点符号。基本要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。(4)输出形式:1)分行输出用户输入的各行字符;2)分4行输出"全部字母数"、"数字个
5、数"、"空格个数"、"文章总字数"3)输出删除某一字符串后的文章;二概要设计1 .结构体定义:typedef struct linechar *data;struct line *next;LINE;2 .各函数功能(1) void Create(LINE * &head)功能:创建一个链表,同时向里面输入文本数据(2) int Countwords(LINE * &head)功能:统计字母数(3) int CountNumber(LINE * &head)功能:统计数字数(4) int CountSpace(LINE
6、* &head)功能:统计空格数(5) int CountAll(LINE * &head)功能:统计文章的总字数(6) int FindString(LINE * &head,char*str)功能:统计str在文章中出现的次数(7) void delstringword(char *s,char *str)void DelString(LINE * &head,char *str)功能:删除指定的字符串(8) void OutPut(LINE * &head)功能:向屏幕输出文章系统流程图主函数f1广、统统统统计删计计计某除数空文个指字格早字士 7E
7、数J数1z总 字 数符 串 出现 次、数,字 符 串1)退 出 该 系 统三详细设计1 .定义头文件#include <iostream.h>#include <string.h>#include <stdio.h>2 .定义结构体定义一个链表,文本每行以字符串形式存储,行与行之间以链表存储typedef struct linechar *data;struct line *next;LINE;3 .主要难点函数的功能及其实现(1)统计str在文章中出现的次数。int FindString(LINE * &head,char*str) LINE *p
8、=head;int count=0;int h=0;int len1=0;/保存当前行的总字符数int len2=strlen(str);/待统计字符串的长度int i,j,k;do len1=strlen(p->data);/当前行的字符数for(i=0;i<len1;i+)/字符匹配if(p->datai=str0) k=0;for(j=0;j<len2;j+)if(p->datai+j=strj) k+;if(k=len2) count+; i=i+k-1;while(p=p->next)!=NULL);/遍历链表return count;(2)删除指
9、定字符申void delstringword(char *s,char *str)char *p=strstr(s,str);从字符串s中寻找str第一次出现的位置char tmp80;int len=strlen(s);int i=len-strlen(p);int j=i+strlen(str);int count=0;for(int m=0;m<i;m+)tmpcount+=sm;for(int n=j;n<len;n+)tmpcount+=sn;tmpcount='0'strcpy(s,tmp);/ 返回新的字符串void DelString(LINE *
10、&head,char *str)LINE*p=head;do/删除指定字符申if(strstr(p->data,str)!=NULL) delstringword(p->data,str);while(p=p->next)!=NULL);/遍历链表/向屏幕输出文章void OutPut(LINE * &head)LINE *p=head;doprintf("%sn",p->data);while(p=p->next)!=NULL);/ 遍历链表四设计与调试分析(1)系统起始界面,要求输入字符串文章I Q I S3 II尸* M
11、KMK MTM M K X M M MMM MM M M |"单 j丁当先 MM M KM'K MM M MM M KM X M K M KMK 整4堇 JCAM*装 MM 2012122694 JKM MM! M: MM ML MM K JCM JH M M: X MM M:请输入字符串,以Ctrl.ELQ为结尾(每行最多输入3咛符纥:(2)系统王界面E旧”侯印生果程的,口或ugL。/1 = 1 回1n部一子恬草J式乐 ±整文 i十汜盥 统统统第晦 12 3 4 5 6 7数 次 的 现 出请输入ir,选择你要的步骚(3)统计字母数(4)统计数子数(6).-统讦文
12、章总字数-统计某个字符串出现的次数删除指定字符申(8)退出该系统(9)未按指定要求输入编号(10)史巳信S年Debugl.exe'a五用户手册Ctrl+E 键。1 .进入用户界面,输入一篇文章,可以包括字母数字以及空格符,完成后按2 .输入完成后,进入用户主界面,在选项 17内进行选择。(1)若按1键,统计该篇文章的全部字母数。(2)若按2键,统计该篇文章的全部数字数。(3)若按3键,统计该篇文章的全部空格数。(4)若按4键,统计该篇文章的总字数。(5)若按5键,统计某个字符串在文章中出现的次数,(6)若按6键,删除该文章中的指定字符用。(7)若按7键,退出该系统。(8)若按8键,则返
13、回异常,提示输入键为17键六测试成果±缶侯耀生:果程只计DobuglExek*mM*MWM*N MM* 简单彳 J 编辑系金克 MX XMKKJtlEJCKXMM2B12122694情输入于符串,协口七出反呜为结尾匕每行蜃多输入幽字中” 扁入面文章为:. _ _&Fh尊g号ing 12312ingr bcxg*/s6324c66g2xi*F6ingr 乂wgy后Adic数革出现的次数部字量®KH/E系 全独支KW 充塞南充充胴艮IL g £k幺 ;2* 一 一 - 10 12 3 4 5 6 7选择你要的步骤请输入2.统计湫字数七附录(源程序清单)#inc
14、lude <iostream.h>#include <string.h>#include <stdio.h>文本每行以字符串形式存储,行与行之间以链表存储typedef struct linechar *data;struct line *next;LINE;void Create(LINE * &head)printf("请输入字符串,以Ctrl+E1E)为结尾(每行最多输入80字符!):n");LINE *p=new LINE;head=p;char tmp100;while(1)gets(tmp);if(strlen(tmp
15、)>80)printf("每行最多输入80字符");break;if(tmp0=5)break;p=p->next=new LINE;p->data=new charstrlen(tmp)+1;strcpy(p->data,tmp);if(tmpstrlen(tmp)-1=5)p->datastrlen(tmp)-1='0'break;p->next=NULL;head=head->next;统计字母数int Countwords(LINE * &head)LINE *p=head;int count=0;d
16、oint Len=strlen(p->data);for(int i=0;i<Len;i+)if(p->datai>='a'&&p->datai<='z')|(p->datai>='A'&&p->datai<='Z')count+;while(p=p->next)!=NULL);return count;统计数字数int CountNumber(LINE * &head)LINE *p=head;int count=0;do
17、int Len=strlen(p->data);for(int i=0;i<Len;i+)if(p->datai>=48&&p->datai<=57)count+;while(p=p->next)!=NULL);return count;统计空格数int CountSpace(LINE * &head)LINE *p=head;int count=0;doint Len=strlen(p->data);for(int i=0;i<Len;i+)if(p->datai=32)count+;while(p=p-&g
18、t;next)!=NULL);统计文章的总字数int CountAll(LINE * &head)LINE *p=head;docount+=strlen(p->data);while(p=p->next)!=NULL);统计str在文章中出现的次数int FindString(LINE * &head,char*str)return count;int count=0;return count;LINE *p=head;int count=0;int h=0;int len1=0;int len2=strlen(str);int i,j,k;dolen1=strl
19、en(p->data);for(i=0;i<len1;i+)if(p->datai=str0)k=0;for(j=0;j<len2;j+)if(p->datai+j=strj)k+;if(k=len2)count+;i=i+k-1;while(p=p->next)!=NULL);return count;删除指定的字符串void delstringword(char *s,char *str)char *p=strstr(s,str);char tmp80;int len=strlen(s);int i=len-strlen(p);int j=i+strle
20、n(str);int count=0;for(int m=0;m<i;m+)tmpcount+=sm;for(int n=j;n<len;n+)tmpcount+=sn;tmpcount='0'strcpy(s,tmp);void DelString(LINE * &head,char *str)LINE*p=head;do删除指定字符串if(strstr(p->data,str)!=NULL)delstringword(p->data,str);while(p=p->next)!=NULL); 向屏幕输出文章void OutPut(LIN
21、E * &head)LINE *p=head;doprintf("%sn",p->data);while(p=p->next)!=NULL); / 遍历链表主函数void main()int choice;LINE *head;char str120,str220;printf("n");printf("*n");printf("*简单行编辑系统*n");printf("*2012122694*n");printf("*n");printf("n
22、");Create(head);printf("输入的文章为:n");OutPut(head);printf("*请输入17,选择你要的步骤*n");printf("*1.统计全部字母数*n"printf("*2.统计数字个数*n"printf("*3.统计空格个数*n"printf("*4.统计文章总字数*n"printf("*5.统计某个字符串出现的次数*n"printf("*6.删除指定字符串*n"printf(&quo
23、t;*7.退出该系统*n");););););););printf(" *n");printf(" *n");printf(" *n"); while(1)cin>>choice;switch(choice)case 1:printf("*1.统计字母数*n");printf("*n");printf("*该文章的全部字母数为:%d *n",Countwords(head);printf("*请您继续进行选择*n");printf(
24、"*n"); printf("n");break;case 2:printf("*2.统计数字数*n");printf(”*n");数据结构课程设计报告第19页,共页printf("*该文章的数字个数:%d *n",CountNumber(head);printf("*请您继续进行选择*n");printf("+*n");printf("n");break;case 3:printf("*3.统计空格数*n");printf(
25、"*n");printf("*该文章的空格个数:%d *n",CountSpace(head);printf("*请您继续进行选择*n");printf("*n");printf("n");break;case 4:printf("*4.统计文章总字数*n");printf("*n");printf("*该文章的总字数:d n",CountAll(head);printf("*请您继续进行选择*n");printf(
26、"*n");printf("n");break;case 5:printf("*5.统计某个字符串出现的次数*n");printf("*n");printf("*请输入要统计的字符串:");scanf("%s",str1);printf("*%s 出现的次数为:d *n",str1,FindString(head,str1);printf("*请您继续进行选择*n");printf("*n");printf(&quo
27、t;n");break;数据结构课程设计报告第16页,共 页printf("*6.删除指定字符串printf("*n");printf("*请输入要删除的某一字符串:*n");*n");scanf("%s",str2);DelString(head,str2);printf("删除s后的文章为:”,str2);OutPut(head);printf("*请您继续进行选择*n");printf("*n");printf("n");break;case 6:printf("*7.退出该系统printf("*n");printf("*已退出该系统printf("*n");*n");*n");printf( "*n");printf("n");break;default:printf("*n");printf("*对不起,您所输入的编号不在17之间printf("*请重新输入*n");*n");p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国蛭石板数据监测研究报告
- 2025至2030年中国直式高压注油器数据监测研究报告
- 2025至2030年中国激光防伪标签数据监测研究报告
- 2025至2030年中国手提式气动打标机数据监测研究报告
- 2025至2030年中国全自动液压紧固机数据监测研究报告
- 2025至2030年中国LPG中压减压阀数据监测研究报告
- 2025年中国耐热硅橡胶橡套软电缆市场调查研究报告
- 2025年中国烧烤用竹签市场调查研究报告
- 2025年中国多级深井泵市场调查研究报告
- 2025年度个人智能家居控制系统定制合同2篇
- 电缆挤塑操作手册
- 浙江宁波鄞州区市级名校2025届中考生物全真模拟试卷含解析
- 2024-2025学年广东省深圳市南山区监测数学三年级第一学期期末学业水平测试试题含解析
- IATF16949基础知识培训教材
- 【MOOC】大学生创新创业知能训练与指导-西北农林科技大学 中国大学慕课MOOC答案
- 劳务派遣公司员工考核方案
- 基础生态学-7种内种间关系
- 2024年光伏农田出租合同范本
- 《阻燃材料与技术》课件 第3讲 阻燃基本理论
- 2024-2030年中国黄鳝市市场供需现状与营销渠道分析报告
- 新人教版九年级化学第三单元复习课件
评论
0/150
提交评论