综合实验题目.docx
- 文档编号:24475386
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:32
- 大小:140.16KB
综合实验题目.docx
《综合实验题目.docx》由会员分享,可在线阅读,更多相关《综合实验题目.docx(32页珍藏版)》请在冰豆网上搜索。
综合实验题目
综合实验题目
目录
目录1
综合实验一:
文本检索2
综合实验二:
HTML文件中有序列表的语法树提取及基于树的检索3
综合实验三:
全国交通资讯模拟6
综合实验四:
数据压缩(DataCompression)6
综合实验五:
小游戏(LittleGame)8
综合实验六:
学籍信息管理10
综合实验七:
最小生成树问题11
【附录一】字符串操作函数13
【附录二】html文档20
综合实验一:
文本检索
【实验说明】
实现一个类似于编辑器(如记事本、word等)中“查找”某个单词或字符串、统计输入单词的词频以及统计段落的单词数等功能。
由于查找字符串涉及到串匹配的内容,可以只实现查找某个单词的功能。
【实验目的】
熟练应用线性结构、树等数据结构。
【实验内容】
1.根据给定的文本文件(一个段落或者多个段落),建立对应的数据结构表示(综合使用线性结构、树等)。
2.基于已经建好的数据结构表示,对于用户提交的单词查询请求,返回所有匹配单词的位置(如第*段第*个单词)。
3.输入一个段落号,统计该段落的单词数。
4.输入一个单词,统计改单词的词频(在文件中出现的次数)。
5.一个简单的实现示例:
每一个段落用一个链表存储,称为段落链表,其中表中每个元素值即为一个单词;若干个段落链表头节点再链接起来成为一个链表,下面的文件及其表示如下图所示:
Asimpleexample.
Listsstoreparagraphs.
IllustratedinFig.1.1
图1.1
当然,也可以有其他表示方式,例如,将每一个段落中的单词用树来表示,所有的段落列表也可以用树来表示。
6.所有的标点符号可以忽略。
【附录一】字符串操作函数
综合实验二:
HTML文件中有序列表的语法树提取及基于树的检索
【实验说明】
HTML语言用来描述Web文档的通用格式和布局。
详细的介绍可以参照一些书本或者网上资料。
HTML中基本的语法单位称为标签。
总的来说,标签用于指定内容的类别。
对于每个类别,针对特定的内容,浏览器都有默认的显示方式。
标签的使用语法是利用一对尖括号“<>”将标签名称包围起来。
大部分标签都是成对的:
包括开始标签和结束标签,如和。
开始标签和结束标签之间的信息称为标签的内容。
这里仅考虑一个HTML语言的子集,该子集包含以下标签:
,:
标识文档的根元素;
,:包含了文档的头部分,该部分提供了文档的相关信息,而没有提供文档的内容;
文档的标题元素,其内容显示在浏览器的顶部;
,:文档的主体部分,提供了文档的内容;
- ,
有序列表标签,用于创建有序列表,列表中的条目是通过标签
可以嵌套有序列表
- 。
- 嵌套。
例如,下面的示例演示了嵌套的有序列表:
testfornestedlists Section1
Section1.1
Section1.2
Section2
显示结果是:
1.AnhuiProvince
1.CityHefei
2.CityWuhu
2.Shanghai
对应的语法树为:
图2.1
通过上面的HTML语言子集,可以设计结构化的Web文档。
对于这样的文档,我们可以提取其结构信息,建立对应的结构化数据存储,并可以在此基础上进一步做相应应用如查询操作等。
【实验目的】
熟练应用线性结构、树等数据结构。
【实验内容】
1.根据前面介绍的HTML语言子集,编写合法的文档,作为输入文件。
也可以使用附录中所给的内容建立文档作为输入;
2.然后用相应算法提取其结构化信息,生成如图2.1的树形结构。
3.在已经建立的结构化存储数据结构上,做单词查询操作。
输入一个查询关键字(如”City”),要求返回所有匹配的单词所在原HTML文档中的位置信息(如,City:
Section1.2thefirstwordandSection1.2thefirstword)。
4.下面给出一个实现的算法。
这里考虑一个简单的情况,即
中只有一个有向列表,对于标签中有多个列表的情况,通过简单的修改此算法可以解决:1)对于这样一个HTML文档,,
,是无关紧要的,在读取文档内容时可以忽略。 核心的结构化信息在有序列表中。
2)遇到第一个
- 时,生成头节点,头节点内容为空,curParent=curNode都指向该节点;
- ,生成curParent指向的节点的一个子节点curNode,
- 后内容即为该节点的内容;
4)每当遇到一个
- ,curParent=curNode,准备以curParent为根的子树(递归操作);
5)每当遇到一个
,则curNode指向的节点生成完毕(即不再往下递归地生成子树),继续读文件(注意,
3)每当遇到一个
应忽略,因为 - ,生成第一个
子节点2,并将
- 其后内容作为节点内容。
(c)遇到
- ,curParent=curNode,准备(d)再次读到
- ,生成以curParent
以curParent为根生成子树;读到
- ,生为根的子节点4;读到 ,非
成以curParent为根的子节点3;读到
后第一个,curNode指向的节点 - ,生成以curParent
- ,生成以curParent为根的
生成完毕,curParent=curParent->parent,子节点5,内容为”Section2”;再读到
即curParent从2变为1;再往下读到
,,curNode节点生成结束;读到
标签
- 后不能直接嵌套
- ,而必须通过
6)每当遇到一个
7)当读到时,整个树生成完毕,返回其头指针。
针对前面示例的html文件,其语法树生成过程图示如下:
(a)读到第一个
- ,生成空的头节点1。
(b)读到
- 后第一个
,非
的节点生成完毕。
(e)读到
此为
读文件。
子树生成完毕;读到,整个树
生成完毕,返回头指针。
【附录二】html文档
综合实验三:
全国交通资讯模拟
【实验要求】:
见《数据结构习题集》P153实习5.8
综合实验四:
数据压缩(DataCompression)
【实验目的】
1)调研数据压缩原理与相关算法的实现;
2)实现一个压缩/解压缩程序
【实验要求】
1.阅读相关资料,理解数据压缩的意义和过程。
2.调研几个著名的数据压缩算法,写一份调研报告,说明其算法及所使用的数据结构。
3.实现一个压缩/解压缩程序,算法任意。
4.程序要求:
控制台界面。
首先实现对单文件压缩的功能。
命令行格式:
压缩:
程序名-c输入文件[输出文件名]
解压缩:
程序名-d输入文件[输出文件名]
[]里内容表示可选。
控制台输出:
压缩:
原始文件大小、压缩后文件大小、压缩比例、消耗时间
解压缩:
解压前文件大小,解压后文件大小、压缩比例、消耗时间
选做:
1)将多个文件压缩到一个文件;2)检查压缩文件完整性,测试其能够完成解压缩;3)对文件测试,不压缩,输入其若压缩后的压缩率;4)列出压缩文件内所包含的文件名;4)实现对整个目录进行压缩的功能。
文件格式:
对压缩文件起一个后缀名。
若在命令行中没指定输入文件的话,输出文件名应该是输入文件名+.后缀名的格式;若在命令行中指定输出文件名的话,后缀也应自动加上。
5.实现的压缩比例越高、压缩事件越短越好。
【参考资料】
a)图书馆书籍
数据压缩原理与应用(第二版)
(美)萨洛蒙/2003-9-1/电子工业出版社/吴乐南
b)维基百科
Datacompression
http:
//en.wikipedia.org/wiki/Data_compression
ZIP
http:
//en.wikipedia.org/wiki/ZIP_file_format
Tar
http:
//en.wikipedia.org/wiki/Tar_(file_format)
7z
http:
//en.wikipedia.org/wiki/7z
gzip
http:
//en.wikipedia.org/wiki/Gzip
bzip2
http:
//en.wikipedia.org/wiki/Bzip2
RAR
http:
//en.wikipedia.org/wiki/Rar
HuffmanCoding
http:
//en.wikipedia.org/wiki/Huffman_code
ImageCompression
http:
//en.wikipedia.org/wiki/Image_compression
VideoCompression
http:
//en.wikipedia.org/wiki/Video_compression
c)源代码
gzip
http:
//www.gzip.org/
bzip2
http:
//bzip.org/
7-zip
tar
http:
//www.gnu.org/software/tar/
rar
综合实验五:
小游戏(LittleGame)
【实验目的】
a)学以致用,运用所学数据结构知识实现一个游戏程序。
b)提高程序开发能力,获得开发大型程序的经验。
c)掌握一个图形库的使用,为以后写程序图形界面打好基础。
【实验要求】
a)选择:
俄罗斯方块、贪吃蛇、赛车、五子棋,或其他你喜欢的小程序。
b)界面:
选择图形界面,图形库的选择:
GTK+或者Win32。
若熟悉面向对象程序设计,可以使用Java的Swing库或者QT、MFC库(C++)。
建议GTK+。
c)功能:
只需实现游戏程序的基本功能即可。
d)难度:
在程序中要用到所学过的数据结构,如树、图等。
e)创新:
在实现过程中要参考其他程序,但最后的实现中要有自己的内容,比如可以替换掉某个程序的关键数据结构,使程序设计更加合理或者提高效率。
【参考资料】
FromWikipedia
1Tetris(俄罗斯方块)
http:
//en.wikipedia.org/wiki/Tetris
2Snake(贪吃蛇)
http:
//en.wikipedia.org/wiki/Snake_(video_game)
3maze(迷宫)
http:
//en.wikipedia.org/wiki/Maze_game
http:
//en.wikipedia.org/wiki/Maze
4Gomoku(五子棋)
http:
//en.wikipedia.org/wiki/Gomoku
5Mine(扫雷)
http:
//en.wikipedia.org/wiki/Minesweeper_(computer_game)
6Bubbles(泡泡龙)
http:
//en.wikipedia.org/wiki/Bubbles_(video_game)
7pac-man(吃豆豆)
http:
//en.wikipedia.org/wiki/Pacman
Others
http:
//en.wikipedia.org/wiki/Category:
Video_games
SourceCode
SearchintheorGoogle
图形库
GTK+库只要求你掌握了C语言即可编写图形界面的程序,如果你会使用C++,也可以考虑QT或者MFC。
下面是一些关于GTK+的资料。
GTK+网站及教程
http:
//www.gtk.org/
http:
//library.gnome.org/devel/gtk-tutorial/stable/
中文资料
GTK2.0教程
GTK入门导引
FromIBMDeveloperWorks
GTK+FAQ
http:
//gtk.osprg.org/uploads/doc/online/faq/index.htm
GObject对象系统
浅析GLib
应用GTK+编程
GTK+2.0中的容器控件与布局技巧
简单GTK+自定义控件的创建
GTK+中的插件
综合实验六:
学籍信息管理
【实验目的】
综合考察数据存储、以及对各种存储结构的建立、插入、删除、排序、查找等操作。
【实验要求】
设计一个简单的学籍管理系统。
包括建立、插入、修改,查找、输出、排序(按不同关键字)
【实验内容】
1.从学生基本信息文件读入数据以建立学籍信息。
下面是一个例子:
学号姓名性别宿舍号码电话号码
07011001张成成男50187732111
07011002李成华女10187723112
07011003王成凤女10187723112
07011004张明明男50287734333
07011005陈东男50187732111
每个学生信息至少包括:
学号、姓名、性别。
文件至少包括10个学生。
2.从学生成绩信息文件读入其内容建立学生的成绩信息。
以下一个例子:
(至少包含20项信息)
学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分
07011001A01大学物理3667882
07011002B03高等数学478-190
07011001B03高等数学445-188
07011002C01VF3657666
功能要求极其说明:
(1)数据录入功能:
录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。
实得成绩、实得学分根据条件自动运算。
综合成绩的计算:
a.如果本课程的实验成绩为-1,则表无实验成绩,综合成绩=平时成绩*30%+卷面成绩*70%
b.如果实验成绩不为-1,表示本课程有实验成绩,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70%
实得学分的计算:
采用等级学分制。
综合成绩在90~100之间,应得学分=学分*100%
综合成绩在80~90之间,应得学分=学分*80%
综合成绩在70~80之间,应得学分=学分*75%
综合成绩在60~70之间,应得学分=学分*60%
综合成绩在60分以下,应得学分=学分*0%
3.查询功能:
分为学生基本情况查询和成绩查询两种
学生基本情况查询:
输入一个学号或姓名(可实现选择)查出此学生的基本信息并显示输出。
成绩查询:
输入一个学号时,查出此学生所有课程情况,格式如下:
学号:
XX课程名称:
XXXX综合成绩:
XX实得学分:
XXX
...............................................................................
共修:
X科,实得总分为:
XXX
1.删除功能:
根据输入的学生姓名或学好删除相应的学生信息。
2.排序功能:
能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
综合实验七:
最小生成树问题
【实验目的】
理解树、图结构,prim算法、Kruskal算法求最小生成树。
【实验内容】
1.关于找出最小生成树的两种算法
(1)Kruskal算法
如下图演示了此算法.
(2)Prim算法
2.要求实现两种算法。
文本输入:
1.无向网的结点数。
2.无向网的边数。
3.各边的权值。
例如“1,2,30”表示结点1,2构成的边权值为30。
文本输出:
生成树的各边及权值。
3.比较并分析两种算法在不同情况下的优劣(选做)。
【附录一】字符串操作函数
一些可能用到的字符串操作函数:
#include
#include
函数名:
stpcpy
功 能:
拷贝一个字符串到另一个
用 法:
char*stpcpy(char*destin,char*source);
程序例:
intmain(void)
{
charstring[10];
char*str1="abcdefghi";
stpcpy(string,str1);
printf("%s\n",string);
return0;
}
函数名:
strcat
功 能:
字符串拼接函数
用 法:
char*strcat(char*destin,char*source);
程序例:
intmain(void)
{
chardestination[25];
char*blank="",*c="C++",*Borland="Borland";
strcpy(destination,Borland);
strcat(destination,blank);
strcat(destination,c);
printf("%s\n",destination);
return0;
}
函数名:
strchr
功 能:
在一个串中查找给定字符的第一个匹配之处
用 法:
char*strchr(char*str,charc);
程序例:
intmain(void)
{
charstring[15];
char*ptr,c='r';
strcpy(string,"Thisisastring");
ptr=strchr(string,c);
if(ptr)
printf("Thecharacter%cisatposition:
%d\n",c,ptr-string);
else
printf("Thecharacterwasnotfound\n");
return0;
}
函数名:
strcmp
功 能:
串比较
用 法:
intstrcmp(char*str1,char*str2);
看Asic码,str1>str2,返回值>0;两串相等,返回0
程序例:
intmain(void)
{
char*buf1="aaa",*buf2="bbb",*buf3="ccc";
intptr;
ptr=strcmp(buf2,buf1);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1\n");
else
printf("buffer2islessthanbuffer1\n");
ptr=strcmp(buf2,buf3);
if(ptr>0)
printf("buffer2isgreaterthanbuffer3\n");
else
printf("buffer2islessthanbuffer3\n");
return0;
}
函数名:
strncmpi
功 能:
将一个串中的一部分与另一个串比较,不管大小写
用 法:
intstrncmpi(char*str1,char*str2,unsignedmaxlen);
程序例:
intmain(void)
{
char*buf1="BBB",*buf2="bbb";
intptr;
ptr=strcmpi(buf2,buf1);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1\n");
if(ptr<0)
printf("buffer2islessthanbuffer1\n");
if(ptr==0)
printf("buffer2equalsbuffer1\n");
return0;
}
函数名:
strcpy
功 能:
串拷贝
用 法:
char*strcpy(char*str1,char*str2);
程序例:
intmain(void)
{
charstring[10];
char*str1="abcdefghi";
strcpy(string,str1);
printf("%s\n",string);
return0;
}
函数名:
str
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 综合 实验 题目