搜档网
当前位置:搜档网 › 数据结构课程设计文章编辑器报告

数据结构课程设计文章编辑器报告

数据结构课程设计文章编辑器报告
数据结构课程设计文章编辑器报告

学号

数据结构课程设计

设计说明书

文章编辑

起止日期:2012 年1月2 日至2012 年1月6日

学生姓名

班级09计算机一班

成绩

指导教师(签字)

电子与信息工程系

2012年1 月6日

天津城市建设学院

课程设计任务书

2011—2012学年第1学期

电子与信息工程系计算机科学与技术专业09级1 班级

课程设计名称:数据结构课程设计

设计题目:文章编辑

完成期限:自2012 年 1 月 2 日至2012 年 1 月6 日共 1 周

设计依据、要求及主要内容(可另加附页):

一、设计目的

熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。

二、设计要求

(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;

(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;

(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;

(4)认真编写课程设计报告。

三、设计内容

文章编辑程序

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

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

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

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

目录

一、需求分析 (3)

二、总体设计 (3)

三、详细设计 (4)

四、调试与测试 (7)

五、源程序及运行结果 (10)

六、心得体会 (19)

七、参考文献 (19)

文章编辑程序

一、需求分析

文章编辑,顾名思义就是对文章进行读写、统计、修改等操作。首先我们需要通过函数读取或者录入文章,然后设计模块统计需要分类统计各类字符的个数,当然有时候我们也需要查询某个字符或者字符串在文章中出现的次数,对于某个字符或者字符串,后来经过改进需要删除,就要设计函数实现,并且为了保证文本的页面一致性,我们需要实现分行输出,并且在删除子串以后后续字符前移。为此,我设计了文章编辑程序。

二、总体设计

程序组成框图

程序流程图

三、详细设计

程序主要包括六个模块

第一个模块是是文本获取模块,由三个函数组成,getdata分别调用getdata1、getdata2,实现读取文件和键盘输入两种文本获取方式

函数伪代码如下

V oid getdata()

{

Case 1:getadata1();

Case 2:getdata2();

}

Void getdata1()

{

f1=fopen(filename,"r"); //以文件名打开文件

while((a=getc(f1))!=EOF)

if(j==79) {s[i++][j]='\n';j=0;}

if(a!='\n'){s[i][j++]=a;}

else s[i++][j]=a;

}

}

Void getdata2()

{

while((a=getchar())!='#') //键盘输入文本

{

if(j==79) {s[i++][j]='\n';j=0;}

if(a!='\n'){s[i][j++]=a;}

else s[i++][j]=a;

}

}

第二个模块是文本输出模块,通过函数show_text()实现,伪代码如下:

void Text::show_text()

{

cout<<"文本如下:"<

第三个模块是指令集显示模块,便于随时查看命令,进行新的操作

函数伪代码”

void Text::help()

{ cout<<" 请选择操作指令"<

cout<<"=========================================================================== ====="<

cout<<"-------- ☆count : 分别统计各类字符总数☆--------"<

cout<<"-------- ☆search: 统计所查字符☆--------"<

cout<<"-------- ☆delete: 删除特定字符☆--------"<

cout<<"-------- ☆help : 查看程序指令集合☆--------"<

cout<<"-------- ☆return: 返回选择文件☆--------"<

cout<<"-------- ☆exit : 退出文本编辑程序☆--------"<

cout<<"======================================================================== ========"<

}

第四个模块是分类统计字符模块,用来统计各类字符信息并传递到终端。通过void Text::count()函数实现,函数伪代码:

void Text::count() //分别统计各类字符个数

{

cc=cp=cn=co=sum=0;

for(int i=0;i

for(int j=0;j<80;j++)

{

扫描并分类统计字符信息

}

cout<<" 文章字符统计如下"<

cout<<" 字母个数为:"<

cout<<" 空格个数为:"<

cout<<" 数字个数为:"<

cout<<" 文章总字数:"<

}

第五个模块是子串查找模块,该模块对用户在终端输入的子串在目标串中运用顺序查找进行检索,统计匹配次数,并将结果反馈给用户,由void Text::search_str()函数实现

函数伪代码:

void Text::search_str()

{

char str[80],*p;int q,count=0;

cout<<"请输入一个字符子串:"<

cin>>str;

p=str; /

匹配…..

cout<

}

第六个模块是子串删除模块,该模块对用户输入的子串在目标串中运用顺序查找进行检索并删除,后续字符前移,通过void Text::delete_str()函数实现

函数伪代码:

void Text::search_str()

{

char str[80],*p;int q,count=0;

cout<<"请输入一个字符子串:"<

cin>>str;

p=str;

匹配并删除

cout<<"删除字符"<

show_text();

}

四、调试与测试

修改程序能够正确编译执行后出现的问题及解决方法:

1、文本输出部分正确,后面出现乱码。查找资料说是没有对数组内存初始化,可以通过memset函数实现,

在获取文本的时候同时对数组内存初始化,解决问题。

加上memset函数之后

2、分类统计字符的时候输出异常。具体是文章总字数sum不正确,仔细检查是for循环的过程中,sum

每次都自增,没有设置自增条件,通过对sum++加上if条件后解决问题。

加上自增if条件后

3、删除子串时如果遇见同一子串连续出现数次,只能删除一半

这是因为每次匹配时j的值变化,需要还原,然后J++如果不删除前面匹配过直接还原即可,删除的话

五、源程序及运行结果

程序源代码:

#include

#include //输入输出文件流类头文件using namespace std;

const int N=800;

class Text //定义Text类

{

private:

char s[N][80];

char filename[30];

char str[90];

int len;

void getdata1();

void getdata2();

void getdata();

void show_text();

void count();

void search_str();

void delete_str();

void help();

public:

Text()

{

cout<<" ★---您好,欢迎使用文本编辑程序!---★"<

cout<<"======================================================================== ========"<

cout<<"======================================================================== ========"<

}

void Main_Work();

};

void Text::getdata()

{

int chose; //选择文本

cout<<" 请选择文件来源"<

cout<<" 1、打开文件"<

cout<<" 2、手动输入"<

cin>>chose;

switch(chose)

{

case 1:getdata1();break;

case 2:getdata2();break;

}

}

void Text::getdata1()

{

cout<<"请输入文本名:"<

cin>>filename;

cout<

f1=fopen(filename,"r"); //通过文件名与文件流关联

cout<<"正在读取数据......"<

len=0;

memset(s,0,sizeof(s));

while((a=getc(f1))!=EOF) //从文件逐个读取字符并传递a直到文件结束 {

if(j==79) {s[i++][j]='\n';j=0;} //每行不超过80个字符

if(a!='\n'){s[i][j++]=a;} //如果没有回车就一直传递

else s[i++][j]=a; //如果遇见回车换行输入

}

len=i+1; //计算行数

cout<<"数据读取完毕:"<

}

void Text::getdata2() //从键盘输入字符

{

cout<<"请输入一段字符,以#号结束"<

memset(s,0,sizeof(s));

char a;int i=0,j=0;

while((a=getchar())!='#') //以#号结束

{

if(j==79) {s[i++][j]='\n';j=0;}

if(a!='\n'){s[i][j++]=a;}

else s[i++][j]=a;

}

len=i+1;

}

void Text::show_text()

{

cout<<"文本如下:"<

for(int i=0;i

for(int j=0;j<80;j++)

{

if(s[i][j]!='\0')

cout<

}

cout<

}

void Text::help()

cout<<"======================================================================== ========"<

cout<<"-------- ☆count : 分别统计各类字符总数☆--------"<

cout<<"-------- ☆search: 统计所查字符☆--------"<

cout<<"-------- ☆delete: 删除特定字符☆--------"<

cout<<"-------- ☆help : 查看程序指令集合☆--------"<

cout<<"-------- ☆return: 返回选择文件☆--------"<

cout<<"-------- ☆exit : 退出文本编辑程序☆--------"<

cout<<"======================================================================== ========"<

}

void Text::count() //分别统计各类字符个数

{

int cc,cp,cn,co,sum;

cc=cp=cn=co=sum=0;

for(int i=0;i

for(int j=0;j<80;j++)

{

if(s[i][j]>='0'&&s[i][j]<='9') cn++;

if(s[i][j]>='A'&&s[i][j]<='Z'||s[i][j]>='a'&&s[i][j]<='z') cc++;

if(s[i][j]==' ') cp++;

if(s[i][j]!='\0')sum++; //只要字符不为空,就计入总数

}

cout<<" 文章字符统计如下"<

cout<<" 字母个数为:"<

cout<<" 空格个数为:"<

cout<<" 数字个数为:"<

cout<<" 文章总字数:"<

}

void Text::search_str()

{

char str[80],*p;int q,count=0; //定义子串指针

cout<<"请输入一个字符子串:"<

cin>>str;

p=str; //从键盘输入子串

for(int i=0;i

for(int j=0;j<80;j++)

q=j; //保存j的初值

while(*p!='\0') //匹配直至子串最后一个字符

if(*p==s[i][j]){j++;p++;} //如果字符匹配,目标串和子串同时右移

else break; //如果字符不匹配跳出循环

if(*p=='\0')count++; //完全匹配时count加1

p=str; //子串还原

j=q; //还原j的值

}

cout<

}

void Text::delete_str()

{

char str[80],*p;

int q,m;

cout<<"请输入一个字符子串:"<

cin>>str;

p=str;

for(int i=0;i

for(int j=0;j<80;j++)

{

q=j;

while(*p!='\0')

if(*p==s[i][j]) {j++;p++;}

else break;

m=j-q; //删除子串后移动的距离(子串长度)

if(*p=='\0')

{

for(j=q;s[i][j+m]!='\0';j++) s[i][j]=s[i][j+m]; //字符前移

s[i][j]='\0'; //前移之后末尾长度为子串长度的字符设为结束符

j=q-1; //删除一次子串,目标串前移之后,j++(再次匹配需要-1)}

else j=q; //不删除子串,前面的已经匹配过,所以不需要-1

p=str; //子串还原

}

cout<<"删除字符"<

show_text();

}

{

char order[10];

getdata();

show_text();

cout<

help();

cout<<"请输入指令: ";

while(cin>>order)

{

cout<

if(strcmp(order, "exit") == 0) return;

if(strcmp(order, "count") == 0) count();

else

if(strcmp(order, "search") == 0) search_str();

else

if(strcmp(order, "delete") == 0) delete_str();

else

if(strcmp(order, "return") == 0) Main_Work();

else

if(strcmp(order, "help") == 0) help();

else cout<<"指令错误,请重新输入"<

}

}

int main()

{

Text text;

text.Main_Work();

return 0;

}

运行结果:

读取文件以及分类统计

查询子串:

删除子串

六、心得体会

经过前些周的准备,和这几天的努力终于完成了此次数据结构课程设计。我个人认为数据结构课程设计是C++程序设计,数据结构,算法设计与分析这三门我们目前学过的专业课程的综合设计。由于C++学习完已经两年了,虽然一直在用,但还是有些知识点需要复习,课设期间重温了一下课本,数据结构上学期学的不是很好,对于一些数据结构基本的特点着重看了一下,我的课设是文本编辑主要用的是二维数组,程序的基本功能通过一些函数实现。

课程设计虽然说已经完成了,但是我也发现一些问题,有些如调试过程中解决的,还有一个不尽完美的地方需要以后更加的努力学习去完善。

七、参考文献

1.王红梅.数据结构.清华大学出版社

2.王红梅.数据结构学习辅导与实验指导.清华大学出版社

3.谭浩强.C++程序设计.清华大学出版社

4.https://www.sodocs.net/doc/e59104534.html,/u/20110315/13/33326428-652f-4873-a851-58f52979a9f8.html

java记事本课程设计论文附源码

设计题目:记事本课程设计 专业:电子信息科学与技术 班级:电子1202班 学号:20121210606 姓名:王鹏 2015 年7月

XXX学院本科学生课程设计任务书

摘要 目前,很多新的技术领域都涉及到了Java语言,Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此Java语言也是学习面向对象编程和网络编程的首选语言。此次课程设计主要通过编写一个简单的记事本程序使我们深入理解并实践在本课程中所学的有关JAVA程序设计方面的语言基础、异常处理、事件处理、小应用程序以及图形用户界面设计等内容。此简易记事本程序,使用Java程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切等功能。该程序主要用到了Java swing和事件监听等。 关键词记事本程序,java语言,Java swing

目录 摘要 (1) 1 需求分析 (3) 1.1需求分析 (3) 1.2功能设计 (3) 2 概要分析 (4) 2.1概要设计思想 (4) 2.2程序运行界面 (4) 2.3程序模块说明 (4) 2.4流程图 (5) 2.5程序相关说明 (6) 3 程序详细设计与分析 (8) 3.1构建菜单栏及其下拉菜单 (8) 3.2“文件”菜单操作的事件监听 (8) 3.3“编辑”、“格式”等菜单的事件监听 (10) 3.4异常处理 (11) 4 测试分析 (12) 5 源程序清单 (15) 结论 (22) 参考文献 (23)

1 需求分析 1.1需求分析 现在网络上各种文档编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad++,win32pad ,SkimEdit,UniRed, xint 。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。 1.2功能设计 本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面: 1、菜单中有“文件”,“编辑”,“格式”,“查看”,“帮助”五个主菜单。 2、“文件”有“新建”“打开”“保存”“另存为”“退出”五个子菜单:分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。 3、“编辑”中有“撤销”“剪切”“复制”“粘贴”“全选”“时间/日期”六个字菜单:用于撤销操作,剪切文字,复制文字,粘贴文字。全部选择,插入日期、时间。 4、“格式”菜单中有“自动换行”和“字体”两个子菜单。 5、“查看”菜单只是显示状态栏。 6、“帮助”菜单中只有“关于记事本”子菜单,主要用于显示该程序的名字,版本等信息。

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

《数据结构I》三级项目报告 大连东软信息学院 电子工程系 ××××年××月

三级项目报告注意事项 1. 按照项目要求书写项目报告,条理清晰,数据准确; 2. 项目报告严禁抄袭,如发现抄袭的情况,则抄袭者与被抄袭者均 以0分计; 3. 课程结束后报告上交教师,并进行考核与存档。 三级项目报告格式规范 1. 正文:宋体,小四号,首行缩进2字符,1.5倍行距,段前段后 各0行; 2. 图表:居中,图名用五号字,中文用宋体,英文用“Times New Roman”,位于图表下方,须全文统一。

目录 一项目设计方案 (3) 二项目设计分析 (4) 三项目设计成果 (4) 四项目创新创业 (5) 五项目展望 (6) 附录一:项目成员 (6) 附录二:相关代码、电路图等 (6)

一项目设计方案 1、项目名称: 垃圾回收 2、项目要求及系统基本功能: 1)利用数据结构的知识独立完成一个应用系统设计 2)程序正常运行,能够实现基本的数据增加、删除、修改、查询等功能3)体现程序实现算法复杂度优化 4)体现程序的健壮性 二项目设计分析 1、系统预期实现基本功能: (结合本系统预期具体实现,描述出对应基本要求(增、删、改、查等)的具体功能) 1. 2. 3. 4. 5. 6. 7. 2、项目模块功能描述 (基本分为组织实施组织、程序功能模块编写、系统说明撰写等。其中程序功能子模块实现) 模块一: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 模块二: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 模块n: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

文章编辑程序设计

课程设计报告 课程设计名称数据结构课程设计 专业计算机科学与技术 班级 学号 姓名 指导教师 成绩 2012年2月26日

数据结构课程设计 ——《文章编辑》 一、设计任务与要求 (1) 二、需求分析 (1) 2.1 用户需求分析 (1) 2.2 功能需求分析 (1) 三、概要设计 (2) 3.1 各模块的算法设计说明 (2) 3.2 存储结构设计说明 (4) 四、详细设计 (4) 五、实际运行结果 (6) 六、收获与体会 (9) 七、主要参考资料 (9)

一、设计任务与要求 问题描述:输入一页文字,程序可以统计出文字、数字、空格的个数。 静态存储一页文章,每行最多不超过80个字符,共N行。 要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。 存储结构使用线性表,分别用几个子函数实现相应的功能; 输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。 输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章; 二、需求分析 2.1 用户需求分析 随着社会的发展,人们对信息的处理要求逐渐增高,设计这个程序是为了方便人们能更加迅速地处理文字信息,从而提高工作效率。 2.2 功能需求分析 功能分析如图所示

功能说明: 输出原文:此功能是将原先录入的信息读出,并在屏幕上显示出来。 统计文章字数:此功能是统计出文章中的字母数,空格数,数字数和文章总字数。 统计某一字符串在文章中出现的次数:通过用户输入要查询项来统计要查询的字符在文章中的出现次数。 删除某一字符串并输出文章:删除文章中用户希望删除的字符,并将修改后的文章在屏幕上显示出来。 结束:退出程序。 2.3 系统需求分析(开发环境、工具) Windows操作系统,visual6.0编译环境 三、概要设计 3.1 各模块的算法设计说明 本程序由输入、输出、统计、查找、删除、选择功能模块组成,以下为重要模块的流程图:

数据结构课程设计报告

《数据结构与算法》课程设计报告 学号: 班级序号: 姓名: 指导教师: 成绩: 中国地质大学信息工程学院地理信息系统系 2011年12 月

1.需求规格说明 【问题描述】 利用哈夫曼编码进行对已有文件进行重新编码可以大大提高减小文件大小,减少存储空间。但是,这要求在首先对一个现有文件进行编码行成新的文件,也就是压缩。在文件使用时,再对压缩文件进行解压缩,也就是译码,复原原有文件。试为完成此功能,写一个压缩/解压缩软件。 【基本要求】 一个完整的系统应具有以下功能: (1)压缩准备。读取指定被压缩文件,对文件进行分析,建立哈夫曼树,并给出分析结果(包括数据集大小,每个数据的权值,压缩前后文件的大小),在屏幕上输出。 (2)压缩。利用已建好的哈夫曼树,对文件进行编码,并将哈夫曼编码及文件编码后的数据一起写入文件中,形成压缩文件(*.Haf)。 (3)解压缩。打开已有压缩文件(*.Haf),读取其中的哈夫曼编码,构建哈夫曼树,读取其中的数据,进行译码后,写入文件,完成解压缩。 (4)程序使用命令行方式运行 压缩命令:SZip A Test.Haf 1.doc 解压缩命令:SZip X Test.Haf 2.doc或SZip X Test.Haf 用户输入的命令不正确时,给出提示。 (5)使用面向对象的思想编程,压缩/解压缩、哈夫曼构建功能分别构建类实现。 2.总体分析与设计 (1)设计思想: 1、压缩准备:1> 读文件,逐个读取字符,统计频率 2> 建立哈夫曼树 3> 获得哈弗曼编码 2、压缩过程: 1> 建立一个新文件,将储存权值和字符的对象数组取存储在文件头

数据结构实验总结报告

数据结构实验总结报告 一、调试过程中遇到哪些问题? (1)在二叉树的调试中,从广义表生成二叉树的模块花了较多时间调试。 由于一开始设计的广义表的字符串表示没有思考清晰,处理只有一个孩子的节点时发生了混乱。调试之初不以为是设计的问题,从而在代码上花了不少时间调试。 目前的设计是: Tree = Identifier(Node,Node) Node = Identifier | () | Tree Identifier = ASCII Character 例子:a(b((),f),c(d,e)) 这样便消除了歧义,保证只有一个孩子的节点和叶节点的处理中不存在问题。 (2)Huffman树的调试花了较长时间。Huffman编码本身并不难处理,麻烦的是输入输出。①Huffman编码后的文件是按位存储的,因此需要位运算。 ②文件结尾要刷新缓冲区,这里容易引发边界错误。 在实际编程时,首先编写了屏幕输入输出(用0、1表示二进制位)的版本,然后再加入二进制文件的读写模块。主要调试时间在后者。 二、要让演示版压缩程序具有实用性,哪些地方有待改进? (1)压缩文件的最后一字节问题。 压缩文件的最后一字节不一定对齐到字节边界,因此可能有几个多余的0,而这些多余的0可能恰好构成一个Huffman编码。解码程序无法获知这个编码是否属于源文件的一部分。因此有的文件解压后末尾可能出现一个多余的字节。 解决方案: ①在压缩文件头部写入源文件的总长度(字节数)。需要四个字节来存储这个信息(假定文件长度不超过4GB)。 ②增加第257个字符(在一个字节的0~255之外)用于EOF。对于较长的文件,

会造成较大的损耗。 ③在压缩文件头写入源文件的总长度%256的值,需要一个字节。由于最后一个字节存在或不存在会影响文件总长%256的值,因此可以根据这个值判断整个压缩文件的最后一字节末尾的0是否在源文件中存在。 (2)压缩程序的效率问题。 在编写压缩解压程序时 ①编写了屏幕输入输出的版本 ②将输入输出语句用位运算封装成一次一个字节的文件输入输出版本 ③为提高输入输出效率,减少系统调用次数,增加了8KB的输入输出缓存窗口 这样一来,每写一位二进制位,就要在内部进行两次函数调用。如果将这些代码合并起来,再针对位运算进行一些优化,显然不利于代码的可读性,但对程序的执行速度将有一定提高。 (3)程序界面更加人性化。 Huffman Tree Demo (C) 2011-12-16 boj Usage: huffman [-c file] [-u file] output_file -c Compress file. e.g. huffman -c test.txt test.huff -u Uncompress file. e.g. huffman -u test.huff test.txt 目前的程序提示如上所示。如果要求实用性,可以考虑加入其他人性化的功能。 三、调研常用的压缩算法,对这些算法进行比较分析 (一)无损压缩算法 ①RLE RLE又叫Run Length Encoding,是一个针对无损压缩的非常简单的算法。它用重复字节和重复的次数来简单描述来代替重复的字节。尽管简单并且对于通常的压缩非常低效,但它有的时候却非常有用(例如,JPEG就使用它)。 变体1:重复次数+字符 文本字符串:A A A B B B C C C C D D D D,编码后得到:3 A 3 B 4 C 4 D。

数据结构课程设计文章编辑(附录中有全部代码)

课程设计任务书 专业名称:计算机科学与技术(软件工程) 课程名称:数据结构课程设计 设计题目:文章编辑问题 起止时间:2013年6 月24 日至2013年7 月12 日 问题描述 静态存储一页文章,每行最多不超过80个字符,共N行,程序可以统计出文字、数字、空格的个数,并且可以对文章中特定内容进行查找及替换,同时也可以删除指定内容。 基本要求 (1)分别统计出其中英文字母数和空格数及整篇文章总字数; (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)查找出文章中某一段文字,并用其他文字进行替换; (4)删除某一子串,并将后面的字符前移。 输出形式: (1)分行输出用户输入的各行字符; (2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"; (3)查找出指定字符串在文章中出现的所有地方并替换,输出替换后结果; (4)输出删除某一字符串后的文章; 实现提示 存储结构使用线性表,分别用几个子函数实现相应的功能,并且使用菜单的形式,可以选择所要进行的操作(查找、替换、删除、统计等)。

文章编辑系统 1概要设计 本次课程设计的题目是文章编辑系统,本系统的功能描述如下:用户新建文本、浏览新建文本、文本字符统计、指定字符串统计、指定字符串删除、指定字符串替换等操作。 1.新建文本 2.浏览输入文本 3.文本字符统计 4.指定字符串统计 5.指定字符串删除 6.指定字符串替换 7.退出系统 本系统包含七个功能模块,分别为:新建文本模块,浏览输入文本模块,指定字符串统计模块,指定字符串删除模块,指定字符串删除模块,指定字符串替换模块以退出系统模块。新建文本模块实现用户录入文本信息,并且系统自动保存录入信息。浏览输入文本模块实现了显示用户录入信息的功能。指定字符串统模块实现了对英文字母数和空格数及整篇文章总字数的统计。指定字符串统计实现了统计用户自定义字符串个数的功能。指定字符串删除模块实现了对用户自定义字符串的删除。指定字符串替换模块实现了替换用户自定义字符串为用户定义的新字符功能。退出系统模块实现了退出系统功能。

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

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

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

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

文章编辑课程设计报告

实验报告 (课程设计)课程名称:数据结构 实验项目名称:文章编辑 学院:计算机与软件学院指导教师: 报告人: 实验时间 实验报告提交时间: 教务处制

实验项目名称 一、问题描述 描述算法设计的内容、约束条件,要求达到的目标等内容。(由老师公布) 输入一页文字,每行最多不超过80个字符,共N行; 程序可以统计出文字、数字、空格的个数 要求在光标下(与记事本相似)做插入、删除等操作 要求能够存盘,并能对老文件打开进行修改操作 采用的数据结构及其算法:线性结构[采用顺序存储方式];查找、插入、删除 二、基本要求 描述算法设计项目应达到的基本要求。 应该实现基本的删除插入查找打开文件以及存盘等操作.并能对打开的文件里的内容进行插入删除查找等操作,并且在进行完这些操作之后能够进行存盘. 三、分析与实验 分析算法设计方法,拟采用的数据结构(类结构)与主要算法实现原理等内容。 拟采用链表进行操作,与字符串结合. 主要运用了KMP算法进行查找操作,在删除中也有涉及. void GetNext(string p, int next[]) //求模式串p的next[j]的值 { int j = 0, k = -1; next[0] = -1; int length = p.length() - 1; while (j

else k = next[k]; } } int KMPFind(string p, int next[], string q,int search[]) //用KMP算法在主串中查找子串,p为主串,q为子串{ int i = 0, j = 0, k = 0, plength = p.length(), qlength=q.length(),flag=0,t=0; while (i < plength) { if (j == -1 || p[i] == q[j]) { i++; j++; } else j = next[j]; if (j == qlength) { flag++; search[t]= i-qlength;//flag存放的是每一次匹配到的字符的首位置 t++; } } return flag; } Search[]数组存放子串出现的位置.

数据结构课程设计报告

编号 课程设计 题目 1、一元稀疏多项式计算器 2、模拟浏览器操作程序 3、背包问题的求解 4、八皇后问题 二级学院计算机科学与工程学院 专业计算机科学与技术 班级 2011级 37-3班 学生姓名 XX 学号 XXXXXXXXXX 指导教师 XXXXX 评阅教师 时间 1、一元稀疏多项式计算器 【实验内容】 一元稀疏多项式计算器。

【问题描述】 设计一个一元稀疏多项式简单计算器。 【需求分析】 其基本功能包括: (1)输入并建立多项式; (2)输出多项式,输出形式为整数序列为:n,c1,e1,c2,e2,……,cn,en,其中n 是多项式的项数,ci,ei分别是第i项的系数和指数,序列按指数降序排序;(3)多项式a和b相减,建立多项a+b; (4)多项式a和b相减,建立多项式a-b; (5)计算多项式在x处的值; (6)计算器的仿真界面(选做); 【概要设计】 -=ADT=- { void input(Jd *ha,Jd *hb); void sort(dnode *h)

dnode *operate(dnode *a,dnode *b) float qiuzhi(int x,dnode *h) f",sum); printf("\n"); } 【运行结果及分析】 (1)输入多项式:

(2)输出多项式(多项式格式为:c1x^e1+c2x^e2+…+cnx^en): (3)实现多项式a和b相加: (4)实现多项式a和b相减: (5)计算多项式在x处的值:

2、模拟浏览器操作程序 【实验内容】 模拟浏览器操作程序 【问题描述】 标准Web浏览器具有在最近访问的网页间后退和前进的功能。实现这些功能的一个方法是:使用两个栈,追踪可以后退和前进而能够到达的网页。在本题中,要求模拟实现这一功能。 【需求分析】 需要支持以下指令: BACK:将当前页推到“前进栈”的顶部。取出“后退栈”中顶端的页面,使它成为当前页。若“后退栈”是空的,忽略该命令。 FORWARD:将当前页推到“后退栈”的顶部。取出“前进栈”中顶部的页面,使它成为当前页。如果“前进栈”是空的,忽略该命令。 VISIT:将当前页推到“后退栈”的顶部。使URL特指当前页。清空“前进栈”。 QUIT:退出浏览器。 假设浏览器首先加载的网页URL是:http:

最新数据结构实训总结

精品文档 这次课程设计的心得体会通过实习我的收获如下1、巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。2、培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。4、通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。从刚开始得觉得很难,到最后把这个做出来,付出了很多,也得到了很多,以前总以为自己对编程的地方还不行,现在,才发现只要认真做,没有什么不可能。 编程时要认真仔细,出现错误要及时找出并改正,(其中对英语的要求也体现出来了,因为它说明错误的时候都是英语)遇到问题要去查相关的资料。反复的调试程序,最好是多找几个同学来对你的程序进行调试并听其对你的程序的建议,在他们不知道程序怎么写的时候完全以一个用户的身份来用对你的用户界面做一些建议,正所谓当局者迷旁观者清,把各个注意的问题要想到;同时要形成自己的编写程序与调试程序的风格,从每个细节出发,不放过每个知识点,注意与理论的联系和理论与实践的差别。另外,要注意符号的使用,注意对字符处理,特别是对指针的使用很容易出错且调试过程是不会报错的,那么我们要始终注意指针的初始化不管它怎么用以免不必要麻烦。 通过近两周的学习与实践,体验了一下离开课堂的学习,也可以理解为一次实践与理论的很好的连接。特别是本组所做的题目都是课堂上所讲的例子,在实行之的过程中并不是那么容易事让人有一种纸上谈兵的体会,正所谓纸上得来终觉浅绝知此事要躬行。实训过程中让我们对懂得的知识做了进一步深入了解,让我们的理解与记忆更深刻,对不懂的知识与不清楚的东西也做了一定的了解,也形成了一定的个人做事风格。 通过这次课程设计,让我对一个程序的数据结构有更全面更进一步的认识,根据不同的需求,采用不同的数据存储方式,不一定要用栈,二叉树等高级类型,有时用基本的一维数组,只要运用得当,也能达到相同的效果,甚至更佳,就如这次的课程设计,通过用for的多重循环,舍弃多余的循环,提高了程序的运行效率。在编写这个程序的过程中,我复习了之前学的基本语法,哈弗曼树最小路径的求取,哈弗曼编码及译码的应用范围,程序结构算法等一系列的问题它使我对数据结构改变了看法。在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,也从中发现自己平时学习的不足和薄弱环节,从而加以弥补。 精品文档

数据结构文章编辑程序的设计Word版

数据结构(c语言版)课程设计报告 文章编辑程序的设计 学院:信息科学技术学院 班级:信息工程09级 1 班 学号:200941843107 姓名:董升 指导教师:何儒云 完成日期:2010年12月

目录

1.需求分析——文章编辑........................................................................................................... - 3 - 2.程序设计................................................................................................................................... - 3 - 结构体的设计:.................................................................................................................. - 3 -函数的设计:...................................................................................................................... - 3 -主函数的设计:.................................................................................................................. - 8 - 3.测试分析................................................................................................................................... - 9 - 4.用户说明................................................................................................................................. - 10 - 5.经验和体会............................................................................................................................. - 10 - 6.附录——程序完整原代码..................................................................................................... - 10 -

文章编辑课程设计报告及代码

*****工学院 数据结构课程设计报告 选题名称:文章编辑 系(院): ***工程学院 专业: 班级: 姓名: ** 学号: 指导教师: 学年学期:2009 ~ 2010 学年第 2 学期2010 年 6 月16 日

设计任务书

摘要: 随着社会的高速发展,现在人们对信息的处理要求越来越高,使得文章内容、数量也越变庞大,所以,随之而来的就是对文章的处理变得越来越复杂。设计此程序以方便人们对文章的处理。此程序的功能有查找文章中某个字符串出现的次数,统计文章中数字,字母,空格等信息出现的次数,分行显示用户输入的文章,输入一字符串并删除文章中所有该字符串,最后,此程序功能简单,操作方便,所以,试验证明,本程序是一款很实用的程序。 关键字:文章编辑;字符查找;统计;删除

目录 1需求分析 (5) 2概要设计 (5) 2.1主要模块的描述 (5) 2.2程序流程框图如图1所示 (6) 2.3各功能函数描述 (6) 3详细设计和实现 (7) 3.1存储结构设计 (7) 3.2主要算法设计 (7) 3.3程序运行流程说明 (9) 4调试与操作说明 (9)

1需求分析 这一次数据结构课程设计,我做的课题是文章编辑。 任务与要求包括: 输入一页文字,程序可以统计出文字、数字、空格的个数。 静态存储一页文章,每行最多不超过80个字符,共N行; 要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数; (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)删除某一子串,并将后面的字符前移。 存储结构使用线性表,分别用几个子函数实现相应的功能; void InitList(wzbj *L) //查找文章结尾有无结束符“#” void StrNo(wzbj *L) //统计某一字符串出现的次数 wzbj *DelStr(wzbj *L) //删除某一字段 void print1(wzbj *L) //分行输出用户的输入的各行字符 void print2(wzbj *L, int &p1, int &p2, int &p3, int &n) //统计字符信息输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;运行环境包括: Windows2000以上操作系统、Visual C++6.0以上编译环境。 2概要设计 对于文章的处理,我用的是for语句查找,即将符合条件的字符查找出来,然后通过函数实现字符的统计,删除等操作。同时,存储用线性表的链表结构,然后通过设计四个函数,实现设计要求的4个基本功能。 2.1主要模块的描述 while(L->next) { for (p = L, q = s; *q != '\0' && p->next; p = p->next, q++) if (p->wz!= *q) break; if (*q == '\0') n++;

数据结构课程设计报告

数据结构课程设计 设计说明书 TSP 问题 起止日期:2016 年 6 月27 日至2016 年7 月 1 日 学生姓名 班级 学号 成绩 指导教师( 签字) 2016 年7 月 1 日

目录 第1 章需求分析.................................................................................1... 1.1 简介 (1) 1.2 系统的开发背景 (1) 1.3 研究现状 (1) 第2 章概要设计.................................................................................2... 2.1 系统开发环境和技术介绍 (2) 2.2 系统需求分析 (2) 2.2.1 总体功能分析 (2) 2.2.2 核心功能分析 (3) 第3 章详细设计...................................................................................4... 3.1 系统开发流程 (4) 3.2 系统模块设计 (4) 3.3 系统结构 (6) 3.2 系统流程图 (6) 第4 章调试分析...................................................................................7... 4.1 程序逻辑调试 (7) 4.2 系统界面调试 (8) 第5 章测试结果...................................................................................9... 5.1 测试环境 (9) 5.2 输入输出测试项目 (9) 5.3 测试结果 (10) 结论.....................................................................................................1..1.. 参考文献................................................................................................1..1. 附录.......................................................................................................1..2..

课程设计文本编辑器的设计

. 《高级语言程序设计》 课程设计报告 题目: 文本编辑器的设计 专业: 计算机科学与技术 班级: 14计科一班 : 彭鑫 指导教师: 王峻 成绩: 计算机学院 2015年4月24日 2014-2015学年 第2学期

目录 1 设计内容及要求 (2) 1.1设计内容 ..................................................................................... 错误!未定义书签。 1.2具体要求 (2) 2 概要设计 (2) 2.1系统的功能简介 (3) 2.2系统功能模块图........................................................................ 错误!未定义书签。 2.3各个模块之间的主要关系 (3) 3 详细设计 (4) 3.1文件操作 (4) 3.2编辑操作 (9) 3.3工具操作 (17) 4 程序运行结果与调试 (19) 4.1 在调试过程中出现的一些问题 (19) 4.2 实验结果 (20) 5 课程设计总结与感想 (24) 参考文献 (24) 源代码 (25)

1 设计内容及要求 1.1设计内容 该文本编辑器运行后弹出文本编辑器的主界面,由键盘输入或以打开的方式输入或显示文本文件内容。其中程序的编辑项可对当前的文本进行撤销、删除、剪切、复制、粘贴、在文本里显示当前时间、全选、清除、查找、替换、统计等功能。程序的文件项可以对电脑上txt,c++等格式文件的打开、对当前文本的保存和另存、对当前文本的的新建以及退出文本编辑系统。程序的工具项为背景音乐,为用户提供了优美动听的音乐,仅在用户编辑疲惫乏力的时候尽情的享用。最后在程序的帮助项有对该小型文本编辑器的关于,用来介绍该程序,还有访问链接百度,访问114网页大全,为用户提供查找资料等功能服务。 1.2具体要求 基本要求:编辑器应具备对文本文件的打开、保存、新建、查找、插人、删除、修改、字符串替换、统计字数,统计行数等功能,对于超过一屏的长文件,应能够分页显示。设计用户接口命令,实现对文本的编辑 2 概要设计

数据结构课程设计报告-学生成绩管理系统[]

武汉理工大学华夏学院课程设计报告书 课程名称:数据结构课程设计 题目:用C语言实现成绩统计程序的设计系名:信息工程系 专业班级:计算机1121 姓名:吴涛 学号:10210412104 指导教师:司晓梅 2016年3 月20日

武汉理工大学华夏学院信息工程系 课程设计任务书 课程名称:数据结构课程设计指导教师:司晓梅班级名称:计算机1121 开课系、教研室:信息系计算机 一、课程设计目的与任务 《数据结构》课程设计是为训练学生的数据组织能力和提高程序设计能力而设置的增强实践能力的课程。目的:学习数据结构课程,旨在使学生学会分析研究数据对象的特性,学会数据的组织方法,以便选择合适的数据的逻辑结构和存储结构以及相应操作,把现实世界中的问题转换为计算机内部的表示和处理,这就是一个良好的程序设计技能训练的过程。提高学生的程序设计能力、掌握基本知识、基本技能,提高算法设计质量与程序设计素质的培养就是本门课程的课程设计的目的。 任务:根据题目要求,完成算法设计与程序实现,并按规定写出课程设计报告。 二、课程设计的内容与基本要求 设计题目:用C语言实现成绩统计程序的设计 〔问题描述〕给出n个学生的m门课程的考试成绩信息,每条信息由姓名、课程代号与分数组成,要求设计算法: (1)输入每个人的各门课程的成绩,计算每人的平均成绩; (2)按平均成绩的高低次序,打印出个人的名次,平均成绩相同的为同一名次; (3)按名次列出每个学生的姓名和各科成绩; 〔基本要求〕学生的考试成绩必须通过键盘输入,且需对输出进行格式控制; 〔算法提示〕可以用选择排序、冒泡排序等多种排序算法求解; 具体要完成的任务是: A. 编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果。 B. 写出规范的课程设计报告书; 三、课程设计步骤及时间进度和场地安排 时间:1周地点:现代教育中心 具体时间安排如下: 第一天:布置题目,确定任务、查找相关资料 第二天~第四天:功能分析,编写程序,调试程序、运行系统; 第五天上午:撰写设计报告; 第五天下午:程序验收、答辩。 四、课程设计考核及评分标准

关于数据结构课程设计心得体会范文

关于数据结构课程设计心得体会范文 心得体会是指一种读书、实践后所写的感受性文字。是指将学习的东西运用到实践中去,通过实践反思学习内容并记录下来的文字,近似于经验总结。下面是小编搜集的关于数据结构课程设计心得体会范文,希望对你有所帮助。 关于数据结构课程设计心得体会(1) 这学期开始两周时间是我们自己选题上机的时间,这学期开始两周时间是我们自己选题上机的时间,虽然上机时间只有短短两个星期但从中确实学到了不少知识。上机时间只有短短两个星期但从中确实学到了不少知识。 数据结构可以说是计算机里一门基础课程,据结构可以说是计算机里一门基础课程,但我觉得我们一低计算机里一门基础课程定要把基础学扎实,定要把基础学扎实,然而这次短短的上机帮我又重新巩固了 c 语言知识,让我的水平又一部的提高。数据结构这是一门语言知识让我的水平又一部的提高。数据结构这是一门知识,纯属于设计的科目,它需用把理论变为上机调试。 纯属于设计的科目,它需用把理论变为上机调试。它对我们来说具有一定的难度。它是其它编程语言的一门基本学科。来说具有一定的难度。它是其它编程语言的一门基本学科。我选的上机题目是交叉合并两个链表,对这个题目,我选的上机题目是交叉合并两个链表,对这个题目,我觉得很基础。刚开始调试代码的时候有时就是一个很小的错觉得很基础。 刚开始调试代码的时候有时就是一个很小的错调试代码的时候误,导致整个程序不能运行,然而开始的我还没从暑假的状导致整个程序不能运行,态转到学习上,每当程序错误时我都非常焦躁,态转到学习上,每当程序错误时我都非常焦躁,甚至想到了放弃,但我最终找到了状态,一步一步慢慢来,放弃,但我最终找到了状态,一步一步慢慢来,经过无数次的检查程序错误的原因后慢慢懂得了耐心是一个人成功的必然具备的条件! 同时,通过此次课程设计使我了解到,必然具备的条件! 同时,通过此次课程设计使我了解到,硬件语言必不可缺少,要想成为一个有能力的人,必须懂得件语言必不可缺少,要想成为一个有能力的人,硬件

数据结构课设——文章编辑

课程设计报告 课程设计题目: 文 章 编 辑 专业:信息工程 班级:1720601 学生姓名: 指导教师: 、 实验目的及要求: 任务:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行; 要求: (1)分别统计出其中英文字母数和空格数及整篇文章总字数; (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)删除某一子串,并将后面的字符前移。存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。 输出形式: (1)分行输出用户输入的各行字符; (2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数" (3)输出删除某一字符串后的文章; 实验时间、地点: 一、概要设计(实验思路) 1.问题分析

本程序是对一段英文文章的内容进行处理,存储方式采用链式存储。 对于文本的输入,采用头插法将文本信息存储到链表已申请好的存储空间中,在此部分设计中最大的问题在于输入文章过程中输入的字符数大于80时如何换行; 对于文本内容的统计,使用循环对已存储的文章进行匹配,字母数、空格数、数字数直接通过比较即可得到; 对于文本内容的处理,查找部分仍是使用循环对已存储的文章进行匹配,判断需要查找的字符或者字符串是否与文章中某部分内容相同,如果存在相同的记录相同的个数及位置并输出个数及位置。 删除部分先使用程序的查找功能对文章中需要删除的字符或者字符串进行查找,然后对其进行删除。 2. 数据结构选择 本程序是对输入的文字进行操作,故使用的数据结构为单链表操作。根据第一部分的问题分析有该链表操作有3部分: 另有全局变量 *head,作为文章的头指针。 创建结构体: typedef struct list { char data[80]; //记录一行字符 int length; //记录一行字符长度 struct _list *next; //后继指针 struct _list *pre; //前趋指针 int row; //记录整篇文章的行数 }LinkList; 在文章内容创建部分中使用线性表的链式存储,并使用全局变量对文本的各种信息进行存储;文章的读取、内容统计、删除、查找都采用链表操作完成。 3.流程图 (1)主框架: (2)文章内容统计子菜单 (3)文章内容处理子菜单

数据结构课程设计报告

《数据结构课程设计》报告 题目:课程设计题目2教学计划编制 班级:700 学号:09070026 姓名:尹煜 完成日期:2011年11月7日

一.需求分析 本课设的任务是根据课程之间的先后的顺序,利用拓扑排序算法,设计出教学计划,在七个学期中合理安排所需修的所有课程。 (一)输入形式:文件 文件中存储课程信息,包括课程名称、课程属性、课程学分以及课程之间先修关系。 格式:第一行给出课程数量。大于等于0的整形,无上限。 之后每行按如下格式“高等数学公共基础必修6.0”将每门课程的具体信息存入文件。 课程基本信息存储完毕后,接着给出各门课程之间的关系,把每门课程看成顶点,则关系即为边。 先给出边的数量。大于等于0的整形。 默认课程编号从0开始依次增加。之后每行按如下格式“1 3”存储。此例即为编号为1的课程与编号为3的课程之间有一条边,而1为3的前驱,即修完1课程才能修3课程。 例: (二)输出形式:1.以图形方式显示有向无环图

2.以文本文件形式存储课程安排 (三)课设的功能 1.根据文本文件中存储的课程信息(课程名称、课程属性、课程学分、课程之间关系) 以图形方式输出课程的有向无环图。 拓展:其显示的有向无环图可进行拖拽、拉伸、修改课程名称等操作。 2.对课程进行拓扑排序。 3.根据拓扑排序结果以及课程的学分安排七个学期的课程。 4.安排好的教学计划可以按图形方式显示也可存储在文本文件里供用户查看。 5.点击信息菜单项可显示本人的学好及姓名“09070026 尹煜” (四)测试数据(见六测设结果)

二.概要设计 数据类型的定义: 1.Class Graph即图类采用邻接矩阵的存储结构。类中定义两个二维数组int[][] matrix 和Object[][] adjMat。第一个用来标记两个顶点之间是否有边,为画图服务。第二个 是为了实现核心算法拓扑排序。 2.ArrayList list用来存储课程信息。DrawInfo类是一个辅助画图的类,其中 包括成员变量num、name、shuxing、xuefen分别代表课程的编号、名称、属性、 学分。ArrayList是一个DrawInfo类型的数组,主要用来在ReadFile、DrawG、DrawC、SaveFile、Window这些类之间辅助参数传递,传递课程信息。 3.Class DrawInfo, 包括int num;String name;String shuxing;float xuefen;四个成员变量。 4.Class Edge包括int from;int to;double weight;三个成员变量。 5.Class Vertex包括int value一个成员变量。 主要程序的流程图: //ReadFile.java

相关主题