欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    计算机工程学院课程设计报告数据结构课程设计.doc

    • 资源ID:4297061       资源大小:246KB        全文页数:18页
    • 资源格式: DOC        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机工程学院课程设计报告数据结构课程设计.doc

    淮 海 工 学 院 计算机工程学院课程设计报告设计名称: 数据结构课程设计 选题名称: 简单行编辑 姓 名: 侯耀生 学 号: 2012122694 专业班级: 软件工程 软件121 系 (院): 计算机工程学院 设计时间: 2013.12.232013.1.5 设计地点: 软件工程实验室、教室 成绩:指导教师评语: 签名: 年 月 日1课程设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。 2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。2课程设计任务与要求:任务根据教材数据结构-C语言描述(耿国华主编)和参考书数据结构题集(C语言版)(严蔚敏、吴伟民主编)选择课程设计题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用。设计题目从任务书所列选题表中选取,每班每题不得超过2人。学生自选课题学生原则上可以结合个人爱好自选课题,要求课题有一定的深度与难度,有一定的算法复杂性,能够巩固数据结构课程所学的知识。学生自选课题需在18周前报课程设计指导教师批准方可生效。要求:1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。 2、.设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。3、程序设计语言推荐使用C/C+,程序书写规范,源程序需加必要的注释;4、每位同学需提交可独立运行的程序;5 、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算);6、课程设计实践作为培养学生动手能力的一种手段,单独考核。 3课程设计说明书一 需求分析设计一个简单的行编辑程序,输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行。存储结构使用线性表,文字中可以是大写、小写的英文字母、任何数字及标点符号。 基本要求 (1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。(4)输出形式:1)分行输出用户输入的各行字符;2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"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 * &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)功能:向屏幕输出文章系统流程图主函数 统计文章总字数统计某个字符串出现次数 统 计字母数 退出该系统 删除指定字符串 统计空格数 统计数字数三 详细设计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=head;int count=0;int h=0;int len1=0;/保存当前行的总字符数int len2=strlen(str);/待统计字符串的长度int i,j,k;dolen1=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)删除指定字符串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 * &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) 系统起始界面,要求输入字符串文章(2) 系统主界面(3) 统计字母数(4) 统计数字数(5) 统计空格数(6) 统计文章总字数(7) 统计某个字符串出现的次数(8) 删除指定字符串(9) 退出该系统(10) 未按指定要求输入编号五 用户手册1. 进入用户界面,输入一篇文章,可以包括字母数字以及空格符,完成后按Ctrl+E键。2. 输入完成后,进入用户主界面,在选项17内进行选择。 (1)若按1键,统计该篇文章的全部字母数。 (2)若按2键,统计该篇文章的全部数字数。 (3)若按3键,统计该篇文章的全部空格数。 (4)若按4键,统计该篇文章的总字数。 (5)若按5键,统计某个字符串在文章中出现的次数。 (6)若按6键,删除该文章中的指定字符串。 (7)若按7键,退出该系统。 (8)若按8键,则返回异常,提示输入键为17键。六 测试成果七 附录(源程序清单)#include <iostream.h>#include <string.h>#include <stdio.h>/文本每行以字符串形式存储,行与行之间以链表存储typedef struct linechar *data;struct line *next;LINE;void Create(LINE * &head)printf("请输入字符串,以Ctrl+E(E)为结尾(每行最多输入80字符!):n");LINE *p=new LINE; head=p; char tmp100; while(1)gets(tmp); if(strlen(tmp)>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;doint 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;doint 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->next)!=NULL); return count; /统计文章的总字数int CountAll(LINE * &head)LINE *p=head; int count=0;do count+=strlen(p->data);while(p=p->next)!=NULL); return count; /统计str在文章中出现的次数int FindString(LINE * &head,char*str)LINE *p=head;int count=0;int h=0;int len1=0; int len2=strlen(str); int i,j,k;dolen1=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;/删除指定的字符串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+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 * &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); /遍历链表/主函数void main()int choice;LINE *head;char str120,str220;printf("n");printf("*n"); printf("*简单行编辑系统*n"); printf("* 2012122694 *n"); printf("*n");printf("n"); Create(head); printf("输入的文章为:n");OutPut(head);printf("*n");printf("* 1.统计全部字母数 *n");printf("* 2.统计数字个数 *n");printf("* 3.统计空格个数 *n");printf("* 4.统计文章总字数 *n");printf("* 5.统计某个字符串出现的次数 *n");printf("* 6.删除指定字符串 *n");printf("* 7.退出该系统 *n");printf("*n");printf("* 请输入17,选择你要的步骤 *n");printf("*n");while(1)cin>>choice;switch(choice)case 1:printf("* 1.统计字母数 *n");printf("*n");printf("* 该文章的全部字母数为:%d *n",Countwords(head);printf("* 请您继续进行选择 *n");printf("*n");printf("n");break;case 2:printf("* 2.统计数字数 *n");printf("*n");printf("* 该文章的数字个数:%d *n",CountNumber(head);printf("* 请您继续进行选择 *n"); printf("+*n");printf("n");break;case 3:printf("* 3.统计空格数 *n");printf("*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("*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("n");break;case 6:printf("* 6.删除指定字符串 *n");printf("*n");printf("* 请输入要删除的某一字符串: *n");scanf("%s",str2); DelString(head,str2); printf(" 删除%s后的文章为:",str2); OutPut(head);printf("* 请您继续进行选择 *n");printf("*n");printf("n"); break; case 7:printf("* 7.退出该系统 *n");printf("*n"); printf("* 已退出该系统 *n"); printf("* 谢 谢 使 用 *n"); printf("*n");printf("n"); break; default:printf("*n"); printf("* 对不起,您所输入的编号不在17之间 *n"); printf("* 请重新输入 *n"); printf("*n");printf("n"); break;if(choice=7)break;3. 课程设计心得 通过这次课程设计,使我对链表有了更深的了解,同时也使我对串的概念有了更深的理解 。在次实验的行编辑程序中,我认真分析了行编辑的各种功能模块,从而确定单链表的数据结构。单链表的每个结点开辟一个数组存储行的内容。该结构能够轻易地插入行和删除行。 通过本次实验,我对编程有了更进一步的了解,自己的编辑能力也得到了一定的提高,巩固了课本的知识,加强了我敏锐的洞察能力。虽然在其中遇到了很多的问题,但是通过自己的理解及他人的帮助,终于解决了。 刚开始学的时候确实有很多地方我很不理解,对于我们一个初学者来说,无疑是一个具大的挑战,撞了几次壁之后,我决定静下心来,仔细去写程序。老师会给我们需要编程的内容一些讲解,顺着老师的思路,来完成自己的设计,我们可以开始运行自己的程序,可是好多处的错误让人看的可怕,还看不出到底是哪里出现了错误,但是程序还是得继续下去,我多次请教了老师和同学,逐渐能自己找出错误,并加以改正。VC查错误都是用英文来显示出来的,经过了这次课程设计,现在已经可以了解很多错误在英文里的提示,这对我来说是一个突破性的进步,眼看着一个个错误通过自己的努力在我眼前消失,觉得很是开心。在这一段努力学习的过程中,我们的编程设计有了明显的提高。 其实现在想起来,收获还真是不少,虽然说以前非常不懂这门语言,在它上面花费了好多心血,觉得它很难,是需用花费了大量的时间编写出来的。现在真正的明白了一些代码的应用,每个程序都有一些共同点,通用的结构,相似的格式。只要努力去学习,就会灵活的去应用它。 通过这次试验我知道了自己的许多不足,其实这和我自身有很大的关系,在平时上课的时候 没有认真的听老师的讲解,对书上的好多基础知识还没有理解,现在想起来真是后悔莫及,我时常反省自己为啥就不能静下心来学习,总要等到设计的时候要临时抱佛脚,现在想起来真是悔不当初,通过这次课程设计我深深的得到了反省,以后要好好学习认真理解书上的知识,是自己的专业知识有更深的提高。

    注意事项

    本文(计算机工程学院课程设计报告数据结构课程设计.doc)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开