搜档网
当前位置:搜档网 › 数据结构 课程设计 简易文本编辑器

数据结构 课程设计 简易文本编辑器

《数据结构》课程设计

班级:10计本2班

姓名:邓寅森

学号:2010305202

指导教师:杨老师

完成日期:2011年12月

计算机科学与技术系课程设计评分表课程名称:数据结构简易文本编辑器

项目评价

设计方案的合理性与创造性

设计与调试结果

设计说明书的质量

功能完善度

综合成绩

学号班级姓名综合成绩2010305202 10计本2班邓寅森

教师评语

教师签名:

日期:

目录

一、需求分析 (3)

二、概要设计 (3)

三、模块设计 (6)

四、详细设计 (8)

五、调试分析 (9)

六、用户使用说明 (13)

七、参考文献 (13)

八、对所设计的软件进行自我评价,如创新点、未解决的问题等情况说明 (13)

九、程序源代码: (14)

一、需求分析

1.1 问题描述

传统的纸质文档已经不能满足大家的需求,有容易丢失、查找不方便等缺点。计算机信息管理为人们的生活、工作提供了方便,提高了效率。“简易文本编辑器”是为了帮助老师、同学或其他一些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序。

1.2 基本任务

通过用户调查分析及实际需求,系统需要实现如下基本任务:(1)输入数据信息建立文本;

(2)查询文本中满足要求的信息;

(3)插入新的信息到文本中;

(4)删除不再需要的文本信息;

(5) 查看所有的文本信息。

二、概要设计

为了完成需求分析的基本任务,主要从以下3个方面进行设计:2.1 主界面设计

为了实现简易文本编辑器的各项功能,设计了一个含有多个菜单项的主控菜单模块以操作系统的各项功能,以方便用户使用系统。

系统进入菜单运行界面如图所示:

简易文本编辑器主菜单

2.2 数据结构设计

系统采用线性表的顺序存储结构表示和存储“简易文本编辑器”

中的信息。实现文本的输入,删除,插入,查找,显示功能。

2.3 系统功能设计

运行程序,提示进入菜单,按“回车键”进入主菜单,再可以在主菜单上进行各项操作。每次进入菜单,选择“1键”新建文本,然后才可以进行其他操作,或者按“0键”选择退出。

三、模块设计

3.1 模块设计

系统主要包含主程序模块和其它操作模块。其调用关系如图所示。

主函数各操作模块

模块调用示意图

3.2 系统子模块及其功能设计

本系统共设计了16个子模块,各程序的函数名及功能说明如下:

1、/*由模式串nextval值*/

void GetNextval(SqVString T,int nextval[])

2、/*模式匹配KMP算法*/

int KMPIndex(SqVString S,int pos,int next[],SqVString T)

3、/*初始化串*/

void InitString(SqVString *S,char *str)

4、/*串插入*/

int StrInsert(SqVString *S,int pos,SqVString T)

5、/*串删除*/

int StrDelete(SqVString *S,int pos,int len)

6、/*求子串*/

int SubStr(SqVString S,int pos,int len,SqVString *T)

7、/*串连接*/

int Concat(SqVString *S,SqVString T)

8、/*串赋值*/

int StrAssign(SqVString *S,char *value)

9、void InputString() //新建

10、void DeleteString()//删除

11、void DeleteSubstring()//删除

12、void InsertSubstring()//查找

13、void DisplayString()//显示

14、void cd()//进入界面

15、void ts()//主菜单

16、void tc()//退出

3.3 系统模块之间的调用关系

系统的16个子模块之间的主要调用关系所示:

系统函数调用关系图

四、详细设计

4.1 数据结构设计

系统采用线性表的顺序存储结构存储通讯录信息。

4.2 系统主要模块设计

(1)建立文本模块,由void InitString(SqVString *S,char *str)函数实现。该模块的算法思想是:○1按照给定的线性表存储空间的初始化

分配量分配存储空间,若分配成功,则往下进行;○2令线性表长为0;○3令线性表当前存储容量为给定的线性表存储空间的初始化分

配量。

该模块的算法描述如下:见源程序

(2)查看文本中得所有记录,需要一个模式匹配int

KMPIndex(SqVString S,int pos,int next[],SqVString T)函数实现。该模块的算法思想是:在此略

该模块的算法描述如下:见源程序

(其它模块设计略)

五、调试分析

5.1、调试方法:

首先打开Microsoft Visual C++ 6.0 ,运行程序,出现错误修改再运行,直至运行结果0 error ,0 warning结束。接着进入程序界面,看程序能否实现所要求的各项功能,再作下一步的修改。

5.2、调试结果

主菜单新建显示

删除查找

插入

退出

5.3、程序出现的问题:还有几个程序模块未能成功调用。

(其他问题见“第八项中未能解决的问题”)

六、用户使用说明

当用户打开程序,就会提示按【回车键】进入,按【回车键】则进入主菜单页面,进入主菜单,选择【1键】,新建文本信息,编辑好后,按照程序中的文字提示,返回到主菜单,此时在主菜单选择其他操作,当进入各项操作,均有提示。每一操作完成,按【回车键】返回主菜单,选择【0键】,安全退出程序!

七、参考文献

《数据结构理论与实践》——杨永斌

八、对所设计的软件进行自我评价,如创新点、未解决的问题等情况说明。

拿到该课程题目,准备仿照电脑上的文本编辑器写该程序,由于我所学不是扎实,于是就借助课本上所学的串与数组,写好了这个程序,程序能够正确的完成,程序充分包含了本学期的所学内容,体现了数据结构的特点。继续沿用了清屏函数,是屏幕看起来很舒服,不至于那么杂乱。

未解决的问题:○1在完成插入,查找功能的时候,出现了问题,当程序执行到此处时,程序未能进入下一步,而是直接退出了。○2当进入主菜单后,只能选择【1键】或者退出,这是未能得到优化的。○3块移动(行块,列块移动),正确存盘、取盘;正确显示总行数等功能未能完成。

九、程序源代码:

#include

#include

#include

#include

#include

#define STRSIZE 100

#define MAXSTRING 60

#define MAXLINE 24

/*存储结构*/

typedef struct

{

char*ch;

int length;

}SqVString;

/*由模式串nextval值*/

void GetNextval(SqVString T,int nextval[]) {

int j=0,k=-1;

nextval[0]=-1;

while(j

{

if(k==-1||T.ch[j]==T.ch[k])

{

j++;

k++;

if(T.ch[j]==T.ch[k])

nextval[j]=nextval[k];

else

nextval[j]=k;

}

else

k=nextval[k];

}

}

/*模式匹配KMP算法*/

int KMPIndex(SqVString S,int pos,int next[],SqVString T) {

int i=pos,j=0,r;

while(i

{

if(i

{

++i;

++j;

}

else if(j==0)

++i;

else

j=next[j];

}

if(j>=T.length)

r=i-T.length;

else

r=-1;

return r;

}

/*初始化串*/

void InitString(SqVString *S,char *str)

{

int i;

char *c;

int len=0;

c=str;

while(*c!='\n')

{

len++;

c++;

}/*求str的长度*/

S->ch=(char *)malloc(len *sizeof(char));/*申请动态数组空间*/

S->length=len;/*置串的当前长度*/

for(i=0;ilength;i++)

S->ch[i]=str[i];/*赋值串值*/

}

/*串插入*/

int StrInsert(SqVString *S,int pos,SqVString T)

{

int i;

int len;

if(pos<0 || pos>S->length)

{

cout<<" \t\t插入位置不合法,其取值范围应该是[0,length]";

return 0;

}

len=S->length+T.length;

S->ch=(char *)realloc(S->ch,len *sizeof(char));

if(!S->ch)

{

cout<<" \t\t分配空间出错,无法完成串插入操作";

return 0;

}

for(i=S->length-1;i>=pos;i--)

S->ch[i=T.length]=S->ch[i];

for(i=0;i

S->ch[i+pos]=T.ch[i];

S->length=len;

return 1;

}

/*串删除*/

int StrDelete(SqVString *S,int pos,int len)

{

int i;

int length;

char *str;

if(pos<0 || len<=0 || pos>S->length ||S->length<=0)

{

cout<<" \t\t删除位置pos及删除长度len不合法,无法完成删除操作";

return 0;

}

length=S->length-len;

if(length<=0)

length=pos;/*若pos+len大于串长,则从pos删到串尾*/

文本编辑器设计

四川师范大学成都学院高级语言程序课程设计 文本编辑器设计 学生姓名xxx 学号x 所在学院x 专业名称x 班级x级x班 指导教师x 成绩 x学院 二○一四年十二月

课程设计任务书

文本编辑器设计 内容摘要:当今,计算机以及网络技术的飞速发展,社会正快速向信息化社会前进,我们需要更智能,更专业的软件帮助我们完成工作,从而提高了工作效率。 目前文本编辑器种类很多,所提供的功能也很多,但是能满足用户实现多种功能和进行C++程序语言的编译与运行很少,不能更好的适应当前用户的要求。本设计所完成的文本编辑器功能是针对学习C++程序语言,因此我们利用C++程序设计虚拟机和软件用户以及使用者的应用过程形成一整套完整的编写代码,编译,运行。本文本编辑器的开发主要包括界面窗口的菜单栏和工具栏,还有链接C++语言虚拟机实现编译与运行。操作系统为Windows 7。 关键词:文本编辑器C++程序语言编译运行 The design of text editor Abstract:Today, the rapid development of computer and network technology, society is rapidly advancing to the information society, we need a more intelligent, more professional software to help us to finish the work, so as to improve work efficiency. At present, many text editors species, to provide the function of many, but can satisfy the compiling and running the user to achieve a variety of functions and the C++ programming language is very few, can better adapt to the requirements of the current user. The completion of the design of the text editor function is for learning C++ programming language, so we use the C++ program design of virtual machines and software users and users of the application process of form a complete set of code, compile, run. The development of the text editor includes interface window menus and toolbars, and link the C + + programming language virtual machine implementation compile and run. The development of the text editor use VC++ as the development tool, and the operating system is Window 7.

文本编辑器c++实验报告附源代码

四川大学软件学院 实验报告 课程名称数据结构实验课时8 实验项目文本编辑器实验时间12到14周实验目的了解c++类的封装和KMP算法。 实验环境 Windows平台 VC6.0++ 实验内容(算法、程序、步骤和方法) 部分函数创建思想: 创建过程如下: a、定义LinkList指针变量*temp: LinkList *temp; b、定义文本输入变量ch,记录文本行数变量j,记录每行字符数变量i; c、申请动态存储空间:head->next=(LinkList *)malloc(sizeof(LinkList)); d、首行头指针的前驱指针为空:head->pre=NULL; 首行指针:temp=head->next; 首行指针的前驱指针也为空:temp->pre=NULL; 定义没输入字符时文章长度为0:temp->length=0; 初始化为字符串结束标志,防止出现乱码:for(i=0;i<80;i++) temp->data[i]='\0'; e、利用循环进行文本输入 for(j=0;jdata[i]=ch; //给temp指向的行赋值 ···· temp->length++;//行中字符长度加1 if(ch=='#') {NUM=j; break; //文章结束时,Num来记录整个文章的行数 }}} 在字符输入的过程中,如果在单行输入的字符超过了80个字符, 则需要以下操作: 输入字符数大于80,重新分配空间建立下一行 temp->next=(LinkList *)malloc(sizeof(LinkList)) ;

数据结构课程设计

1.一元稀疏多项式计算器 [问题描述] 设计一个一元稀疏多项式简单计算器。 [基本要求] 输入并建立多项式; 输出多项式,输出形式为整数序列:n, c1, e1, c2, e2,……, cn, en ,其中n是多项式的项数,ci, ei分别是第i项的系数和指数,序列按指数降序排序; 多项式a和b相加,建立多项式a+b; 多项式a和b相减,建立多项式a-b; [测试数据] (2x+5x8-3.1x11)+(7-5x8+11x9)=(-3.1x11+11x9+2x+7) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2-x2+7.8x15)=(-7.8x15-1.2x9-x+12x-3) (1+x+x2+x3+x4+x5)+(-x3-x4)=(x5+x2+x+1) (x+x3)+(-x-x3)=0 (x+x2+x3)+0=(x3+x2+x) [实现提示] 用带头结点的单链表存储多项式,多项式的项数存放在头结点中。 2.背包问题的求解 [问题描述] 假设有一个能装入总体积为T的背包和n件体积分别为w1, w2, …,wn的物品,能否从n件物品中挑选若干件恰好装满背包,即使w1+w2+…+wn=T,要求找出所有满足上述条件的解。例如:当T=10,各件物品的体积为{1,8,4,3,5,2}时,可找到下列4组解:(1,4,3,2)、(1,4,5)、(8,2)、(3,5,2) [实现提示] 可利用回溯法的设计思想来解决背包问题。首先,将物品排成一列,然后顺序选取物品转入背包,假设已选取了前i件物品之后背包还没有装满,则继续选取第i+1件物品,若该件物品“太大”不能装入,则弃之而继续选取下一件,直至背包装满为止。但如果在剩余的物品中找不到合适的物品以填满背包,则说明“刚刚”装入背包的那件物品“不合适”,应将它取出“弃之一边”,继续再从“它之后”的物品中选取,如此重复,直至求得满足条件的解,或者无解。 由于回溯求解的规则是“后进先出”因此自然要用到栈。 3.完全二叉树判断 用一个二叉链表存储的二叉树,判断其是否是完全二叉树。 4.最小生成树求解(1人) 任意创建一个图,利用克鲁斯卡尔算法,求出该图的最小生成树。 5.最小生成树求解(1人) 任意创建一个图,利用普里姆算法,求出该图的最小生成树。 6.树状显示二叉树 编写函数displaytree(二叉树的根指针,数据值宽度,屏幕的宽度)输出树的直观示意图。输出的二叉树是垂直打印的,同层的节点在同一行上。 [问题描述] 假设数据宽度datawidth=2,而屏幕宽度screenwidth为64=26,假设节点的输出位置用 (层号,须打印的空格数)来界定。 第0层:根在(0,32)处输出;

数据结构课程设计题目2010

一、数据结构课程设计要求 1.学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。有问题及时主动通过各种方式与教师联系沟通。 2.学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。 3.课程设计按照教学要求需要两周时间完成,两周中每天(按每周5天)至少要上2小时的上机来调试C 或C++语言设计的程序,总共至少要上机调试程序20小时。属教师安排上机时间学生不得缺席。 二、数据结构课程设计题目 1. 运动会分数统计(限1 人完成) 任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) 功能要求: 1) 可以输入各个项目的前三名或前五名的成绩; 2) 能统计各学校总分, 3) 可以按学校编号或名称、学校总分、男女团体总分排序输出; 4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 5) 数据存入文件并能随时查询 6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称 输出形式:有中文提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构; 测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明; 2. 飞机订票系统(限1 人完成) 任务:通过此系统可以实现如下功能: 录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)

数据结构 简易文本编辑器

题目: 【2】.简易文本编辑器 要求: 1) 具有图形菜单界面; 2) 查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除 3) 可正确存盘、取盘; 4) 正确显示总行数。 1需求分析 一个简易文本编辑器应该具有图形菜单界面,包括查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除文本信息等功能并可正确存盘、取盘,正确显示总行数。 2概要设计 为实现数据的有序存储,该编辑器应该用顺序表来存储输入的信息。顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。其特点为:在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。在编辑器的主界面中应有如下提示信息: ⑴清空以前的文本信息:将用数组存的数据内容全部置为0; ⑵显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上; ⑶编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整 型变量,这个整型变量用于记录一维数组中存入数据的个数; ⑷替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入 要替换的信息内容,否则提示未找到要被替换的信息; ⑸插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入 信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置; ⑹移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行 列移动还是进行行移动,否则提示未找到要移动的信息; ⑺删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确

数据结构课程设计

题目: 学院: 专业班级: 学生姓名: 指导教师: 2016 年06 月2 9日

目录 一、课程设计目的 (3) 二、课程设计步骤 (3) 三、课程设计内容 (4) 四、课程设计报告 (6) 五、提交材料 (6) 六、考核方式与评分标准 (7) 七、参考文献 (8) 附录1 齐齐哈尔大学软件工程系课程设计说明书(报告)撰写规范 (9)

一、课程设计目的及要求 《数据结构与算法分析》课程设计培养计算机专业的学生的算法程序设计能力。通过上机实验,可以培养学生程序设计的方法和技巧,提高学生编制清晰、合理、可读性好的系统程序的能力,加深对数据结构课程和算法的理解。使学生更好地掌握数据结构的基本概念、基本原理、及基本算法,具有分析算法、设计算法、构造和开发较复杂算法的基本能力。 要求学生能综合运用《数据结构与算法分析》的相关知识,培养学生上机解决一些与实际应用结合紧密的、规模较大的问题的能力,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析实际问题的能力并提高C语言编程技巧,培养良好的编程风格。 课程设计要求独立完成,题目自选(参考题目见三,也可自拟),但需要老师确认(6月16日前定题),一人一题,要求程序有能采用交互式工作方式的界面进行功能的选择,只能用文件存储数据和处理数据不能使用数据库。要求在教学周的第18周前完成。 二、课程设计步骤 随着计算机性能的提高,它所面临的软件开发的复杂度也日趋增加。然而,编制一个10000行的程序的难度绝不仅仅是一个5000行的程序的两倍,因此软件开发需要系统的方法。一种常用的软件开发方法,是将软件开发过程分为分析、设计、实现和维护四个阶段。虽然数据结构课程中的课程设计的复杂度远不如(从实际问题中提出来的)一个“真正的”软件,但为了培养一个软件工作者所应具备的科学工作的方法和作风,完成课程设计的应有如下的5个步骤: 1.问题分析和任务定义 通常,课程设计题目的陈述比较简洁,或者说是有模棱两可的含义。因此,在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么,限制条件是什么。注意:本步骤强调的是做什么,而不是怎么做。对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回答。例如:输入数据的类型、值的范围以及输入的形式;输出数据的类型、值的范围及输出的形式;若是会话式的输入,则结束标志是什么,是否接受非法的输入,对非法输入的回答方式是什么等等。这一步还应该为调试程序准备好测试数据,包括合法的输入数据和非法形式输入的数据。 2.数据类型和系统设计 在设计这一步骤中需分逻辑设计和详细设计两步实现。逻辑设计指的是,对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型;详细设计则为定义相应的存储结构并写出各过程和函数的伪码算法。在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。作为逻辑设计的结果,应写出每个

java课设—文本编辑器的设计与实现

淮 海 工 学 院 计算机工程学院
课程设计报告
设计名称: 选题名称: 姓 名: 面向对象课程设计 文本编辑器的设计与实现 学 号:
专业班级: 系 (院) : 设计时间: 设计地点: 计算机工程学院 2015.6.21~2014.7.4 计算机楼机房、教室、宿舍
指导教师评语:
成绩:
签名:
年 月 日

面向对象课程设计报告

1
页,共
14

1.课程设计目的
《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程 后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理 论、方法和基础知识的理解,掌握使用 Java 语言进行面向对象设计的基本方法,提高运用 面向对象知识分析实际问题、解决实际问题的能力。
2.课程设计任务与要求:
课程设计可选用 NetBeans、Eclipse、JBuilder 等作为开发平台以提高开发效率,尽可能熟 练掌握其中一种集成开发环境。建议采用 UML 建模技术进行系统的分析设计,在 Visio 中画出系 统用例图和类图,并将 UML 图复制到设计报告中。 通过这次设计,要求掌握以下内容: 1)面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用 2)类、包、接口的定义与使用 3)常用工具类与算法的实现(数组、向量、字符串、链表) 4)Java 常用标准 GUI 组件及其事件处理 5)Java 的异常处理机制 6)Java 的数据库连接技术 7)Java 的多线程技术与动画制作 8)Java 的网络编程 任务: 设计一个类似于 Windows 记事本(Notepad)的 Java 程序。可以打开、新建、保存一个文本 文件;对选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复 制、粘贴、剪切、查找、替换等) ;在文本中能够插入对象。简单文本编辑器提供给用户基本的 纯文本编辑功能, 能够将用户录入的文本存储到本地磁盘中。 能够读取磁盘中现有的纯文本文件, 以及方便用户进行需要的编辑功能。

数据结构简易文本编辑器

数据结构简易文本编辑 器 文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-

题目: 【2】.简易文本编辑器 要求: 1) 具有图形菜单界面; 2) 查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除 3) 可正确存盘、取盘; 4) 正确显示总行数。 1需求分析 一个简易文本编辑器应该具有图形菜单界面,包括查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除文本信息等功能并可正确存盘、取盘,正确显示总行数。 2概要设计 为实现数据的有序存储,该编辑器应该用顺序表来存储输入的信息。顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。其特点为:在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。在编辑器的主界面中应有如下提示信息: ⑴清空以前的文本信息:将用数组存的数据内容全部置为0; ⑵显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上; ⑶编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整 型变量,这个整型变量用于记录一维数组中存入数据的个数; ⑷替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入 要替换的信息内容,否则提示未找到要被替换的信息; ⑸插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入 信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置; ⑹移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行 列移动还是进行行移动,否则提示未找到要移动的信息; ⑺删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确 认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;

数据结构课程设计报告模板

课程设计说明书 课程名称:数据结构 专业:班级: 姓名:学号: 指导教师:成绩: 完成日期:年月日

任务书 题目:黑白棋系统 设计内容及要求: 1.课程设计任务内容 通过玩家与电脑双方的交替下棋,在一个8行8列的方格中,进行棋子的相互交替翻转。反复循环下棋,最后让双方的棋子填满整个方格。再根据循环遍历方格程序,判断玩家与电脑双方的棋子数。进行大小判断,最红给出胜负的一方。并根据y/n选项,判断是否要进行下一局的游戏。 2.课程设计要求 实现黑白两色棋子的对峙 开发环境:vc++6.0 实现目标: (1)熟悉的运用c语言程序编写代码。 (2)能够理清整个程序的运行过程并绘画流程图 (3)了解如何定义局部变量和整体变量; (4)学会上机调试程序,发现问题,并解决 (5)学习使用C++程序来了解游戏原理。 (6)学习用文档书写程序说明

摘要 本文的研究工作在于利用计算机模拟人脑进行下黑白棋,计算机下棋是人工智能领域中的一个研究热点,多年以来,随着计算机技术和人工智能技术的不断发展,计算机下棋的水平得到了长足的进步 该程序的最终胜负是由棋盘上岗双方的棋子的个数来判断的,多的一方为胜,少的一方为负。所以该程序主要运用的战术有削弱对手行动战术、四角优先战术、在游戏开局和中局时,程序采用削弱对手行动力战术,即尽量减少对手能够落子的位置;在游戏终局时则采用最大贪吃战术,即尽可能多的吃掉对手的棋子;而四角优先战术则是贯穿游戏的始终,棋盘的四角围稳定角,不会被对手吃掉,所以这里是兵家的必争之地,在阻止对手进角的同时,自己却又要努力的进角。 关键词:黑白棋;编程;设计

简单行编辑器 数据结构 课程设计汇总

中国矿业大学徐海学院计算机系《软件认知实践》报告 姓名:学号: 专业: 设计题目:简单行编辑器 指导教师: 2012年12月25

目录 第1章题目概述 (1) 第1.1节题目要求 (1) 第1.2节主要难点 (2) 第2章系统流程图 (3) 第3章数据结构和算法 (4) 第4章核心代码分析 (6) 第5章复杂度分析 (10) 第6章总结 (11) 参考文献 (13)

第1章题目概述 在这次课程设计中我选的题目是文本编辑,文本编辑几乎是每个使用电脑 的人都会遇到的问题,特别是网络小说作家们。在文本的编辑中,我们会时常 遇到文本信息的统计问题、小型子串的查找问题、子串的查找和删除问题等。 如果靠人自己去观察和执行相关操作的话,不仅累人,而且很容易出错。而使 用计算机程序去实现的话,则会省力不少,而且相对来说非常精确。本程序使 用了较快速的查找算法,可以大大提高检索的效率,相信这可一极大的方便用 户用电脑编辑文本文件。 第1.1节题目要求 文章编辑 功能:输入一页文字,程序可以统计出文字、数字、空格的个数。 静态存储一页文章,每行最多不超过80个字符,共N行; 要求 (1)分别统计出其中英文字母数和空格数及整篇文章总字数; (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)删除某一子串,并将后面的字符前移。 存储结构使用线性表,分别用几个子函数实现相应的功能; 输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标 点符号。 输出形式: (1)分行输出用户输入的各行字符; (2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数" (3)输出删除某一字符串后的文章; 实现功能 (1)文章内容的输入:包括字母、标点符号、数字等; (2)文章内容的统计:包括文章中大写字母、小写字母、数字、标点符

数据结构课程设计

课程设计说明书 课程名称:数据结构和算法 设计题目:多种排序 院系:计算机科学与信息工程学院 学生姓名: 学号: 专业班级:计科嵌入式(12-1) 指导教师: 年月日

课程设计任务书 设计题目表达式计算程序设计 学生姓名所在院系计科专业、年级、班12计科(嵌入式)设计要求: 1) 采用如下七种方法实现上述问题求解:插入排序、希尔排序、起泡排序、快速排 序、选择排序、堆排序、归并排序。 2) 统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出 其中两种较快的方法。并将数据序列和不同的查找算法的性能结果记录入txt 文件。 学生应完成的工作: 1. 利用随机函数产生N 个随机整数(10000 以上)。 2. 对这些数字进行排序。 3. 采用插入、希尔、起泡、快速、选择、归并、堆排序方法解决问题。 4. 对不同的排序算法进行性能比较并记录。 参考文献阅读: 1. 《数据结构(C 语言版)》严蔚敏清华大学出版社 2. 《C 语言程序设计》丁峻岭中国铁道出版社 3. 《C 程序设计》谭浩强清华大学出版社 工作计划: 任务下达日期:年月日 任务完成日期:年月日 指导教师(签名):学生(签名):

多种排序 摘要: 排序是算法中最基础的问题之一,经典的排序算法是前人不断总结得到的,基于比较的方法是比较直观的方式,主要存在插入法排序、堆排序、希尔排序、归并排序、快速排序,每一种排序算法都有自己的优缺点,比如插入法排序适用于那些长度短的排序,要是长的话,有些爱莫能助啦,堆排序主要是依据了二叉堆的特性,但是创建堆的过程也是一个复杂的问题,希尔排序的过程是一个不断精确的过程,但是目前也只是一个经验方式。归并排序是一个递归的问题,采用分治的思想实现,但是这种算法需要额外的存储空间,快速排序虽然是实践中比较常用的算法,但是对于有序的数组采用快速排序就是灾难。比较型算法的时间复杂度最优也只能到达O(NlogN)。 关键词: 归并排序快排排序选择排序冒泡排序 插入排序堆排序希尔排序内部排序

数据结构课程设计简易文本编辑器

课程设计说明书 课程名称:数据结构课程设计 专业:电子信息科学与技术班级:2012-1 设计人: 山东科技大学 2015年 7 月 11 日

目录 1需求分析说明 (2) 1.1主函数模块 (2) 1.2菜单显示及输出子模块 (2) 1.3查找功能子模块 (2) 1.4替换功能子模块 (2) 1.5插入功能子模块 (3) 1.6块移动功能模块 (3) 1.7删除功能模块 (3) 1.8读盘功能模块 (3) 1.9存盘功能模块 (3) 1.10测试数据 (3) 2概要设计说明 (4) 2.1设计思想 (4) 2.2模块调用图 (4) 2.3程序代码简介 (4) 3详细设计说明 (7) 3.1主函数模块 (7) 3.2菜单显示及输出子模块 (7) 3.3查找功能子模块 (7) 3.4替换子模块 (9) 3.5插入子模块 (10) 3.6块移动模块 (11) 3.7删除模块 (12) 3.8读盘功能模块 (13) 3.9存盘功能模块 (15) 3.10流程图 (16) 4调试分析 (17) 4.1遇到的问题 (17) 4.2测试结果 (18) 5用户使用说明 (22) 6课程设计总结 (24)

1需求分析说明 简易文本编辑器的总体目标:在Visual Studio的开发环境下,利用所学C 语言和数据结构的相关知识,开发一个具有良好人机界面的简易文本编辑器,实现对文本的简单修改,从而达到编辑文本以及查看文本信息的目的。 基本功能如下: (1)界面友好,易与操作。采用菜单或其它人机对话方式进行选择。 (2)能正确打开所键入的文本路径,并能够读取相应文本信息。 (3)能对打开的文本进行文本信息显示、替换、查找、块移动、删除等基本操作。 (4)能够正确对修改后的文本内容存盘。 (5)正确显示文本总行数。 以下是各功能模块的功能描述: 1.1主函数模块 主函数模块的主要功能是初始化菜单界面,功能按键选择并调用相关模块,实现软件功能。 1.2菜单显示及输出子模块 菜单显示模块的主要功能是将菜单进行显示,内容包括本设计的主要功能及相关代号。 文本显示模块的主要功能是将所要显示的文本信息通过传入的参量传入 本模块进行显示。 输出模块主要功能是输出文本所有信息。 1.3查找功能子模块 本模块的主要功能是通过输入想要查找的文本信息,返回文本中所要查找的文本信息的所处起始位置。 1.4替换功能子模块 本模块的主要功能是将输入的被替换的文本替换为替换的文本信息,并能够显示文本信息。

《数据结构课程设计》课程设计方案

《算法与数据结构课程设计》方案 Course Design of Data Structure 适用专业:计算机科学与技术专业本科 课程代码:B08233004 一、课程设计的性质和目的 软件设计能力培养对学生是很重要。通过数据结构的学习,使学生对软件编程能力有一定的提高。数据结构学习是锻炼学生在进一步掌握模块化、结构化程序设计的方法的同时,培养学生运用已学知识分析问题、解决问题及编写实用程序的能力,通过对线性化、层次化、网络化数据结构的了解进一步掌握自然数据的结构方式及组织方式,让学生深入体会存储在计算机中的数据及程序,如何运用数据实现编程。 课程设计是《数据结构》课程教学必不可缺的一个重要环节,它可加深学生对该课程所学内容的进一步的理解与巩固,是将计算机课程与实际问题相联接的关键步骤。通过课程设计,能够提高学生分析问题、解决问题,从而运用所学知识解决实际问题的能力,因而必须给予足够的重视。 主要目的如下: 1、培养学生运用算法与数据结构的基本知识解决实际编程中的数据结构设计和算法设计问题。 2、培养学生独立设计程序与解决问题的能力,培养学生团队协作集成程序模块及调试能力。 3、培养学生初步的软件设计及软件测试的能力。 二、课程设计的基本要求 学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况。 1、设计和调试过程要规范化。 (1)需求分析 将题目中要求的功能进行叙述分析,并且设计解决此问题的数据存储结构,(有些题目已经指定了数据存储的,按照指定的设计),设计或叙述解决此问题的算法,描述算法建议使用流程图,进行算法分析指明关键语句的时间复杂度。 给出实现功能的一组或多组测试数据,程序调试后,将按照此测试数据进行测试的结果列出来。对有些题目提出算法改进方案,比较不同算法的优缺点。如果程序不能正常运行,写出实现此算法中遇到的问题,和改进方法。 (2)源程序(可以是一组源程序,即详细设计部分) 源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分

项目一:文本编辑器的设计与实现

课程: C# Windows程序设计学年第_ _学期第周月日教学内容备注 项目一:文本编辑器的设计与实现 【项目背景】 文本编辑器有两类:单文档和多文档文本编辑器。单文档文本编辑器一次只能打开一个文件,如果要打开另一个文件,必须关闭当前打开的文件,微软的写字板程序就是单文档字处理程序。多文档文本编辑器允许同时打开多个文件,每个文件占用一个子窗口,微软的Word程序就是多文档字处理程序。本项目主要介绍建立单文档文本编辑器的方法,通过分析现有文本编辑器的功能与操作过程,利用C#开发一个新的文本编辑器。 【主要内容与技能要求】 (1)会进行复杂窗口设计 (2)会对常见的文本编辑功能进行分析与编码实现 (3)会设计多文档窗口 一、预备知识 本项目主要利用RichTextBox控件来构成文本编辑区域。 1、RichT extBox控件的主要属性 属性SelectedText、SelectionLength、SelectionStart: 属性SelectionFont: 属性SelectionColor: 属性Lines: 属性Modified: 事件SelectionChange: 事件TextChanged: 2、RichT extBox控件的主要方法 方法Clear(): 方法Copy()、Cut()、Paste(): 方法SelectAll(): 方法Find(): 方法SaveFile()和LoadFile():

课程: C# Windows程序设计学年第_ _学期第周月日教学内容备注方法Undo(): 方法Redo(): 二、功能设计与实现 1、剪贴板功能 放RichTextBox控件到窗体。属性Name=richTextBox1,Dock=Fill,Text=""。 private void menuItemEditCut_Click(object sender,EventArgs e) { richTextBox1.Cut(); } //剪切 private void menuItemEditCopy_Click(object sender,EventArgs e) { richTextBox1.Copy(); } //拷贝 private void menuItemEditPaste_Click(object sender,EventArgs e) { richTextBox1.Paste(); } //粘贴 private void menuItemEditUndo_Click(object sender,EventArgs e) { richTextBox1.Undo(); } //撤销 private void menuItemEditRedo_Click(object sender,EventArgs e) { richTextBox1.Redo(); } //恢复 2、存取文件功能 文本编辑器都应具有文件存取功能,菜单顶级菜单项“文件”的弹出菜单中一般包括如下菜单项:新建、打开、关闭、保存和另存为等。需要用到打开文件对话框(OpenFileDialog控件)和保存文件对话框(SaveFileDialog控件)。和 两个对话框的常用属性和方法: 属性Filter:例如Filter=“纯文本文件(*.txt)|*.txt|所有文件(*.*)|*.*” 属性FilterIndex: 属性FileName: 属性InitialDirectory: 属性DefaultExt: 方法ShowDialog(): 存取文件功能实现如下:

数据结构文本编辑器终审稿)

数据结构文本编辑器文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-

数据结构课程设计报告 一.需求分析 1.题目及要求 名称:简单的文本编辑器 内容:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行。 要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数; (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)删除某一字符或者子串,并将后面的字符前移。 (4)插入某一字符或者子串。 (5)查找某一字符或者子串。 存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和 范围:可以输入大写、小写的英文字母、任何数字及标点符号。 输出形式: (1)分行输出用户输入的各行字符; (2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数" (3)输出删除某一字符串后的文章。 通过题目及其要求可知,本程序应实现以下功能: (1)文章内容的输入:包括字母、标点符号、数字等; (2)文章内容的统计:包括文章中大写字母、小写字母、数字、标点符号、空格以 及文章所有字数的个数的统计; (3)文章内容的处理:包括对文章内容的查找、删除以及对指定位置进行插入操作, 其中在查找的过程中统计出该字符或字符串在文章中出现的次数; 2.问题分析 本程序是对一段英文文章的内容进行处理,存储方式采用链式存储,没有文件操作,故本程序对其文本内容的所有操作都是在链表中进行的。对于文本的输入,采用头插法将文本信息存储到链表已申请好的存储空间中,在此部分设计中最大的问题在于输入文章过程中输入的字符数大于80时如何换行;对于文本内容的统计,使用循环对已存储的文章进行匹配,大写字母数、小写字母数、空格数、数字数直接通过比较即可得到,标点符号通过ASCⅡ比较即可得到;对于文本内容的处理,查找部分仍是使用循环对已存储的文章进行匹配,判断需要查找的字符或者字符串是否与文章中某部分内容相同,如果存在相同

数据结构课程设计报告(0002)

数据结构课程设计报告

数据结构课程设计报告 学院:信息工程 专业:信息工程 老师:陈占龙 姓名:郝宝亮 学号:20111001149 班号:116112-05

2013年1月 目录 控制台 1.停车场管理 (3) 2.个人电话号码查询系统 (6) 3.排序运用 (12) 4.“火烧连营”问题 (16) 5.管道铺设施工的最佳方案选择 (19) MFC 1.停车场管理 (27) 2.个人电话号码查询系统 (29) 3.排序运用 (34) 总结 自我总结 (38)

实习题目一停车场管理 【问题描述】 设停车场是一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n 辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 【设计思想】 以栈模拟停车场,以队列模拟车场外的便

道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息,汽车牌照号以及到达或离去的时刻。对每一组输入的数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。需另设一个栈,临时停放为给要离去的汽车让路而从停车场推出来的汽车,也用顺序存 储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。【设计表示】 输入数据 停离 判断停车场计算停车费

文本编辑器源代码

/* A Screen Editer Subsystem */ #define TURBOC #include #include #include #include #include #define BUF_SIZE 32000 #define LINE_LEN 79-2 #define MAX_LINES 24-1 #define KILL_BUF_SIZE 4*LINE_LEN /***********************************************************/ char buf[BUF_SIZE]; char *curloc,*endloc; int scrnx,scrny; char killbuf[KILL_BUF_SIZE]; char *helpline="F1:save F2:load F3:find F4:replace ^K:kill line ^Y:Yank ^Z:qiut"; /*************************************************************/ void edit(char *fname),help(void); void gotoxy(int x,int y),clrline(int y); void edit_clr_col(int x,int y),clrscr(void); void printline(char *p),delete_char(void); void search(void),kill_line(void); void scrolldn(int x,int y); void scrollup(int topx,int topy,int endx,int endy); void upline(void); void downline(void),left(void),right(void); void display_scrn(int x,int y,char *p); void pagedown(void),pageup(void),replace(void); void home(void),gotoend(void),yank(void); int load(char *fname),save(char *fname); void edit_gets(char *str); void draw_border(int,int,int,int,int); /***************************************************/ main(int argc,char *argv[]) { union REGS r; char fname[80]; if(argc<2) {

数据结构课程设计报告范例

Guangxi University of Science and Technology 课程设计报告 课程名称:算法与编程综合实习 课题名称: 姓名: 学号: 院系:计算机学院 专业班级:通信121 指导教师: 完成日期:2012年12月15日

目录 第1部分课程设计报告 (3) 第1章课程设计目的 (3) 第2章课程设计内容和要求 (4) 2.1 问题描述 (4) 2.2 设计要求 (4) 第3章课程设计总体方案及分析 (4) 3.1 问题分析 (4) 3.2 概要设计 (7) 3.3 详细设计 (7) 3.4 调试分析 (10) 3.5 测试结果 (10) 3.6 参考文献 (12) 第2部分课程设计总结 (13) 附录(源代码) (14)

第1部分课程设计报告 第1章课程设计目的 仅仅认识到队列是一种特殊的线性表是远远不够的,本次实习的目的在于使学生深入了解队列的特征,以便在实际问题背景下灵活运用它,同时还将巩固这种数据结构的构造方………………………………………………………………………………………………………………………………………………………………………………………..(省略)

第2章课程设计内容和要求 2.1问题描述: 迷宫问题是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒子中设置了许多墙,对行进方向形成了多处阻挡。盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。对同一只老鼠重复进行上述实验,一直到老鼠从入口走到出口,而不走错一步。老鼠经过多次试验最终学会走通迷宫的路线。设计一个计算机程序对任意设定的矩形迷宫如下图A所示,求出一条从入口到出口的通路,或得出没有通路的结论。 图A 2.2设计要求: 要求设计程序输出如下: (1) 建立一个大小为m×n的任意迷宫(迷宫数据可由用户输入或由程序自动生成),并在屏 幕上显示出来; (2)找出一条通路的二元组(i,j)数据序列,(i,j)表示通路上某一点的坐标。 (3)用一种标志(如数字8)在迷宫中标出该条通路; (4)在屏幕上输出迷宫和通路; (5)上述功能可用菜单选择。

汇编语言实现文本编辑器

汇编语言课程设计 题目文本方式下字处理程序的设计与实现 学院计算机科学与技术学院 专业计算机科学与技术 班级计算机科学与技术0705 课程设计任务书 题目: 文本方式下字处理程序的设计与实现 初始条件: 理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。 实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等 具体要求) 理解键盘和显示器接口的工作原理,掌握BIOS键盘和显示器中断调用的使用方法,掌握复杂内存数据结构的定义和管理方法。具体的设计任务及要求: 1)清晰且易于操作的用户界面;动态显示光标的当前位置; 2)在文本编辑区接受并保存输入信息; 3)光标上移,下移,左移,右移; 4)允许删除当前光标前的字符; 5)将编辑文本存盘,读出并显示硬盘中的指定文件。(任选) 在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。 阅读资料:

1)《IBM—PC汇编语言程序设计实验教程》3.3节 2)《IBM—PC汇编语言程序设计(第2版)》9.1节 时间安排: 设计安排一周:周1、周2:完成系统分析及设计。 周3、周4:完成程序调试,和验收。 周5:撰写课程设计报告。 指导教师签名:年月日 系主任(或责任教师)签名:年月日 一、系统描述 1、目的 (1)掌握计算机汇编语言的使用。学完汇编课程,理解和掌握键盘和显示器接口的工作原理,掌握BIOS键盘和显示器中断调用的使用方法,掌握复杂内存数据结构 的定义和管理方法。 (2)通过设计、编制、调试一个文本方式下字处理程序。实现一个简单的文本编辑器的基本功能 2、设计内容 1)清晰且易于操作的用户界面; 2)动态显示光标的当前位置; 3)在文本编辑区可以输入字符信息; 4)光标上移,下移,左移,右移,还可以回车,使用home键、end键退格键; 5)允许删除当前光标前的字符; 6)将编辑文本存盘,读出并显示硬盘中的指定文件。 3、开发平台 所使用的系统:Windows XP 程序开发工具:Masn for Windows 6.0 集成实验开发环境 序设计语言:IBM-PC 汇编语言 二、文本编辑译系统的概要设计 文本编辑程序要实现简单的文本编辑器基本功能。 1.设计一个友好,易于操作的界面,界面可仿照windows记事本,但windows记事本 的菜单项不好制作,所以将主要功能说明制作到边框,方便使用即可。并且实现在

相关主题