当前位置:文档之家› 数据结构课程设计-文本文件单词检索和计数

数据结构课程设计-文本文件单词检索和计数

数据结构课程设计-文本文件单词检索和计数
数据结构课程设计-文本文件单词检索和计数

合肥学院

计算机科学与技术系

课程设计报告

2017~2018学年第二学期

课程数据结构与算法

课程设计名称文本文件单词的检索与计数

学生姓名陈映而

学号1604092001

专业班级16软件工程(1)班

指导教师孙斐

文本文件单词的检索与计数

一、问题分析和任务定义

要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;

统计给定单词在文本文件中出现的总次数;

检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。

(1)建立文本文件

(2)给定单词的计数

(3)检索单词出现在文本文件中的行号、次数及其位置

(4)主控菜单程序的结构

二、数据结构的选择和概要设计

数据结构:1.所有存储形式都用顺序存储

2.用矩阵检索单词出现的位置和次数

概要设计:该设计要求可分为三个部分实现:

1.对文件的操作,其中包括文本文档的建立,文件名由用户用键盘输入;以及读取文本文档内容并显示在屏幕上;

2.给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;

3.检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。

图2-1 课题目录

图2-2 流程图

图2-3 函数关系

三、详细设计和编码

1.头文件包含:

#include

#include

#include

2.功能细分

(1)创建自定义名字文档

①用字符数组filename存放特定的文件路径(D:\\Dev-Cpp\\课程设计数据\\)

②从键盘输入自定义的文档名字name,把name和“.txt”用strcat连接

③再用strcat把路径filename与文档名name连接起来

④打开文件时用变量(filename)表示文件名,若无该文件则创建

图3-1 创建自定义名字文档编码

(2)打开文件读取内容并输出

①输入文档名字,根据名字打开文件

②打开文件后,用fgets读取文档内容

③fgets读取一行输出一行,并用i记录行数

④fgets返回EOF(END OF FILE)表示文件结尾

(3)写入文本

①输入文档名字,根据名字打开文档,若无该文档,则重新建立一个。

②根据提示,从键盘输入字符,最后以0结束

③用字符变量ch接收字符,并用fputc()把字符输出到文本文档中

图3-2 写入文档编码

(4)单词的计数

①输入文档名字,根据名字打开文件

②根据提示输入单词

③用ch遍历文本文档

④把空格前的单词与给定单词比较,若相同则count++

⑤若不相同则重新开始比较

(5)获取文件的行数

①输入单词

②获取文本行数:

根据\n判断,由于有些行是空行,无法算作一行,所以要判断\n后一个字符是不是也是\n

若是两个连续的\n,则line-1;

若不是,则line+1;

③判断方法:当ch1为\n时,把ch1赋值给ch2,ch1继续获取下一个字符,若ch1==ch2,则line-1;

图3-3 获取文件行数编码

(6)矩阵存储单词检索

①输入单词

②边统计边判断

统计:定义一个二维数组a,所有位置的初始值为-1

遍历文本文件时,在遇到第一个\n前为第一行,遇到第一个空格前为第一个单词,即a[0][0]位置上的-1变为0,依次类推

把每个单词与给定单词作比较,若该单词与给定单词相同,则该单词位置上的0的值变为1

③统计每一行值为1的数的个数,为给定单词在该行中出现的次数;

④输出每一行为1的数的列的值,即为给定单词在该行中出现的位置;

⑤把行列数的值赋给矩阵的s,v;用循环,把数组中所有值为1的数的位置存储在矩阵的word(y,z)中,并且计算每行为1的总数count++;

图3-4 矩阵的结构体类型

图3-5 单词的位置、个数的输出

四、上机调试过程

1.输出文档内容时,fgets()不能用EOF判断是否到达结尾,若把EOF换作null,但由于单词与单词之间有空格,无法正确显示。

解决:用fgetc读取每个字符存放于ch中,

当ch!=EOF的时候,就可以不断输出直到文件结尾,

再用len记录行数,初始值为1,当遇到‘\n’时则+1。

2.单词的计数出错,无法准确计算出文档有多少和给定的单词。

解决:①在循环中,判断ch为空格或转行符号时,要用&&判断,不能用||,否则将在判断时出错

②在比较过程中,若下一个字符不符合就直接判断为错,从i=0重新开始,否则只要单词中包含给出的单词都表示正确

③在比较时还要主要标点符号,符号也会影响判断

3.在计算文本文档行数的时候,若有空行,也会计算成一行。

解决:当两个连续的转行符号\n\n在一起时,line应该先+1再-1,即不变。

当一个转行符号\n后不是转行符号,也不是文件结尾,line+1

4.标点符号后有空格,重复计算单词。

解决:修改判断条件,若标点符号后是空格,则不计算单词

5.调试过程中,完成输入点击“Enter”后,直接跳过程序进行下一步。

解决:下一步进入该函数时,程序会自动获取该Enter键,导致函数直接结束。

因此要用getchar()先获取该字符,才可以开始执行程序。

五、测试结果及其分析

图5-1 程序主菜单

图5-2 功能1 子菜单

1.创建文件

图5-3 创建文件成功

图5-4 文档成功出现在文件夹中2.文档内容显示

图5-5 abc.txt文档内容

图5-6 abc.txt文档内容显示在屏幕上

3.单词计数

(1)测试数据1

文档:abc.txt

给定单词:you

正确数据:9个

检验数据:9个

图5-7 abc.txt中you的单词总数

(2)测试数据2

文档:abc.txt

给定单词:Y ou(与you区分大小写)

正确数据:4个

检验数据:4个

图5-7 abc.txt中You的单词总数

(3)测试数据3

文档:v alue.txt

给定单词:it

正确数据:3个

检验数据:3个

图5-8 value.txt中it的单词总数

文档:value.txt

给定单词:is

正确数据:4个

检验数据:4个

图5-9 value.txt中is的单词总数

4.单词定位

(1)测试数据1

文档:abc.txt

给定单词:you

(共9个)

图5-10 abc.txt中you所在的位置和个数

文档:value.txt

给定单词:is

(共4个)

图5-10 value.txt中is所在的位置和个数

5.时间性能分析

①程序中对数据进行顺序存储的时间性能为O(n);但是用矩阵记录单词的坐标和个数用了两层for循环,其时间性能为O(n*n);

②在对文本文档进行遍历并输出,只需要while控制的一层循环,所以其时间性能为O(n);

③在计算文本文档的行数和单词的个数的时候,用了多个if-else的判断,但是仍然只有一层while控制的循环,所以其时间性能为O(n);

总结:该程序的时间性能为O(n*n);

六、用户使用说明

1.功能叙述

①创建文本文档

②显示文本文档的内容

③统计给定单词在文本文档中出现的次数

④检索给定单词,并输出其所在的行、列和每行总共出现的次数

2.操作说明

①由数字0-9可以选择不同的功能,以及板块的退出

②除数字以外的符号可以结束程序(空格键和\n除外)

3.输入说明

本程序涉及文件名字的输入和单词的输入。

①输入文件名:文件名由数字0-9、26个英文字母以及符号-组成;

②单词的输入:字符间不可出现空格,只能用26个英文字母组成,且区分大小写

七、参考文献

[1] 王昆仑,李红. 数据结构与算法. 北京:中国铁道出版社,2006年5月。

八、附录

#include

#include

#include

#define Max100

void FileOperation();

void CreateFile();

void Show();

void WordCount();

void Explor();

typedef struct

{

int y,z;

}node;

typedef struct

{

int s,v;

int count[Max];

node word[Max];

}SeqMatrix;

int main()//主菜单

{

int number;

printf("***************\n"); printf("1.文件操作\n");

printf("2.单词计数\n");

printf("3.单词定位\n");

printf("4.退出程序\n");

printf("***************\n");

printf("\n请输入功能序号:"); scanf("%d",&number);

switch(number)

{

case1:FileOperation();

case2:WordCount();

case3:Explor();

default:exit(0);

}

return0;

}

void FileOperation()//文件操作

{

system("CLS");

int number;

printf("***************\n");

printf("1.创建文件\n");

//printf("2.写入文件\n");

printf("2.显示内容\n");

printf("3.返回\n");

printf("***************\n");

printf("\n请输入功能序号:");

scanf("%d",&number);

switch(number)

{

case1:CreateFile();

case2:Show();

case3:system("CLS");main();

default:exit(0);

}

}

void CreateFile()//创建文档

{

system("CLS");

char filename[100]="D:\\Dev-Cpp\\课程设计数据\\";//直接把地址赋值进数组中char name[25];

FILE*fp;

getchar();

printf("输入创建的文件的名字:");

gets(name);

strcat(name,".txt");//连接成一个文件名

strcat(filename,name);

if((fp=fopen(filename,"a+"))==NULL)

{

printf("null");

exit(0);

}

//给文件输入内容

fprintf(fp,"We each dictate what it is,how it is,and why it is.\n\nShe is kind,carin g,nurturing,and loving.\n");

printf("创建成功!");

fclose(fp);

char ch;

printf("\n任意值退出,0返回:");

ch=getchar();

if(ch=='0')

{

FileOperation();

}

else

{

exit(0);

}

}

void Show()//显示内容

{

system("CLS");

char filename[100]="D:\\Dev-Cpp\\课程设计数据\\";

char name[25];

FILE*fp;

char ch;

//int len=1;

getchar();

printf("输入打开的文件的名字:");

gets(name);//输入文件名

strcat(name,".txt");//连接成一个文件名

strcat(filename,name);

if((fp=fopen(filename,"r"))==NULL)

{

printf("找不到该文件!\n");

Show();

}

ch=fgetc(fp);//获取每个字符

while(ch!=EOF)

{

putchar(ch);//输出在屏幕

/*if(ch=='\n')

{

len++;

}*/

ch=fgetc(fp);

}

fclose(fp);

char c;

printf("\n任意值结束,0返回:");

c=getchar();

if(c=='0')

{

FileOperation();

}

else

{

exit(0);

}

}

void WordCount()//单词计数

{

getchar();

system("CLS");

char filename[100]="D:\\Dev-Cpp\\课程设计数据\\"; char name[25];

char character[10];

FILE*fp;

char ch;

int count=0;

int len;

char c;

printf("请输入文本文件名:");

gets(name);

strcat(name,".txt");

strcat(filename,name);

if((fp=fopen(filename,"r"))==NULL)

{

printf("找不到该文件\n");

main();

}

printf("\n请输入要计数的单词:");

gets(character);

len=strlen(character);//len-1表示这个单词的大小

int i=0,k=0;

ch=fgetc(fp);

while(ch!=EOF)

{

if(ch!=''&&ch!='\n'&&ch!=','&&ch!='.'&&ch!='?'&&ch!='!')

{

if(ch==character[i])//字符相等

{

i++;

}

k++;

ch=fgetc(fp);

}

else

{

if(i==len&&i==k)//k是读取的单词中字母的序号,i是相同字符的个数,len是给定单词长度

{

count++;

}

i=0;k=0;

ch=fgetc(fp);

}

}

if(ch==EOF&&i==len&&i==k)

{

count++;

}

printf("单词总数为:%d",count);

fclose(fp);

printf("\n任意值结束,0返回:");

c=getchar();

if(c=='0')

{

system("CLS");

main();

}

else

{

exit(0);

}

}

void Explor()//单词检索

{

char filename[100]="D:\\Dev-Cpp\\课程设计数据\\";//文件路径char name[25];//文件名

char character[10];//给定单词

FILE*fp;

char ch,ch2,c;

int a[20][30];

int i,j,k,x;

int len;//单词的长度

getchar();

system("CLS");

for(i=0;i<20;i++)

{

for(j=0;j<30;j++)

{

a[i][j]=-1;

}

}

printf("请输入文本文件名:");

gets(name);

strcat(name,".txt");

strcat(filename,name);

if((fp=fopen(filename,"r"))==NULL)

{

printf("找不到该文件\n");

main();

}

printf("\n请输入要计数的单词:");

gets(character);

len=strlen(character);//len-1表示这个单词的大小

i=0,j=0,k=0,x=0;//i为行j为列k用于判断

ch=fgetc(fp);

while(ch!=EOF)

{

if(ch!=''&&ch!='\n'&&ch!=','&&ch!='.'&&ch!='?'&&ch!='!'&&ch!=':') {

//printf("%c",ch);

if(ch==character[k])//字符相等

{

k++;

}

x++;

//printf("[%d,%d]",k,x);

ch=fgetc(fp);

}//判断单词是否一致

else if(ch==''||ch==','||ch=='.'||ch=='?'||ch=='!'||ch==':')

{

ch=fgetc(fp);

if(ch=='')

{

a[i][j]=0;

ch=fgetc(fp);

}

else

{

a[i][j]=0;

}

if(k==len&&k==x)

{

a[i][j]=1;

}

k=0;x=0;

j++;

}

else if(ch=='\n')

{

ch2=ch;

ch=fgetc(fp);

if(ch==ch2)

{

//a[i][j]=0;

i++;

j=0;

ch=fgetc(fp);

}

else if(ch!=ch2&&ch!=EOF)

{

i++;

j=0;

}

}

}

printf("\n");

SeqMatrix m;

m.s=i+1;

m.v=30;

for(i=0;i

{

m.count[i]=0;

}

k=0;

for(i=0;i

{

printf("第%d行该单词出现的位置:",i+1); for(j=0;j

{

if(a[i][j]==1)

{

m.word[k].y=i;

m.word[k].z=j;

printf("%d",m.word[k].z+1);

m.count[i]++;

k++;

}

//printf("%d",a[i][j]);

}

printf("[共%d个]\n",m.count[i]);

printf("\n");

}

fclose(fp);

printf("\n任意值结束,0返回:");

c=getchar();

if(c=='0')

{

system("CLS");

main();

}

else

{

exit(0);

}

}

2018 年2月

数据结构课程设计参考题目

数据结构课程设计题目 数据结构课程设计题目(大题目).doc 一、公司销售管理系统 项目开发基本要求 1.客户信息管理:对客户的基本信息进行添加、修改和删除。 2.产品信息管理:对产品的基本信息进行添加、修改和删除。 3.供应商信息管理:对供应商的基本信息进行添加、修改和删除。 4.订单信息管理:对订单的基本信息进行添加、修改和删除。 二、高校科研管理系统 系统主要用于帮助高校或科研单位管理和维护各项科研相关资料 项目开发基本要求 1.系统用户管理模块:为系统新用户设置用户名及口令;操作员更改自己的系统口令。2.数据字典管理模块:管理项目性质包括:分为国家自然科学基金、863、部省科委及企业集团四种情况;范围包括:分为全国、国际、地方三种情况;检索源包括:分为EI、SCI、核心和一般四种情况。 3.项目参加人员管理模块包括:显示添加修改删除查询。 4.项目基本情况模块包括:显示添加修改删除查询。 5.项目获奖情况模块包括:显示添加修改删除查询。 6.期刊论文管理模块包括:显示添加修改删除查询。 7.著作管理模块包括:显示添加修改删除查询。 8.科研工作量统计模块:按照学校科研工作量计算办法,为每位科研人员进行科研工作量的计算和统计。 9.科研积分统计模块:按照学校科研积分计算办法,为每位科研人员进行科研计分的计算和统计。 三、网络五子棋对战 四、不同排序算法模拟 五、科学计算器 数据结构课程设计题目 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)能统计各学校总分,

文本文件单词的检索与计数(流程图)

《数据结构》课程设计报告 一、设计时间 2015年01月5日-----2015年01月11日 二、设计地点 实验楼计算机511机房 三、设计目的 1.巩固和加深对数据结构课程所学知识的理解,了解并掌握数据结构与算法的设计方法; 2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 3.提高综合运用所学的理论知识和方法,独立分析和解决问题的能力; 4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风; 5.培养查阅资料,独立思考问题的能力。 四.设计小组成员 五.指导老师 六.设计课题 文本文件单词的检索与计数 七.基本思路及关键问题的解决方法(需求分析和概要设计) (一)需求分析: 1.建立文本文件 建立文本文件的实现思路: (1)定义一个串变量 (2)定义文本文件 (3)输入文件名,打开该文件 (4)循环读入文本行,写入文本文件,其过程如下: While(不是文件输入结束){ 读入一文本行至串变量; 串变量写入文件; 输入是否结束输入标志; } (5)关闭文件 2.给定单词的计数 该功能需要用到前一节中设计的模式匹配算法,逐行扫描文本文件。匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词的次数。 3 .检索单词出现在文本文件中的行号、次数及其位置

4.主控菜单程序的结构 (1)头文件包含 (2)菜单选择包括: 1、建立文件 2、单词计数 3、单词定位 4、退出程序 (3)选择1~4执行相应的操作,其他字符为非法 (二)概要设计: 1.建立文本文件:定义一个串变量,定义文本文件,输入文件名,打开该文件,循环读入文本行,写入文本文件,关闭文件。 2.给定单词的计数:逐行扫描文本文件。匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词的次数。 3.检索单词出现在文本文件中的行号、次数及其位置:逐行扫描文本文件。扫描一个单词,单词数加1,匹配一个,计数器加1,输出该单词数,行数到底为止,行数加1,单词数清零,直到整个文件扫描结束;然后输出单词的次数,行号,第几个单词。 八.算法及流程图(详细设计)

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

《数据结构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

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

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

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

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

文本文件单词的检索与计数

软件综合课程设计 文本文件单词的检索与计数 实时监控报警系统 二〇一四年六月

文本文件单词的检索与计数 1.问题陈述 要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。该设计要求可分为三个部分实现:其一,建立文本文件,文件名由用户用键盘输入;其二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。 (1).建立文本文件 (2)给定单词的计数 (3)检索单词出现在文本文件中的行号、次数及其位置 (4)主控菜单程序的结构 ①头文件包含 ②菜单选项包含 建立文件、单词定位、单词计数、退出程序 ③选择1-4执行相应的操作,其他字符为非法。 2.程序代码 #include #include #include #define MaxStrSize 256 //根据用户需要自己定义大小 using namespace std; typedef struct { char ch[MaxStrSize]; //ch是一个可容纳256个字符的字符数组 int length; } SString;//定义顺序串类型 int PartPosition (SString s1,SString s2,int k) { int i,j; i=k-1; //扫描s1的下标,因为c中数组下标是从0开始,串中序号相差1 j=0;//扫描s2的开始下标 while(i

数据结构课程设计报告

《数据结构与算法》课程设计报告 学号: 班级序号: 姓名: 指导教师: 成绩: 中国地质大学信息工程学院地理信息系统系 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. 巩固和加深对常见数据结构的理解和掌握 2. 掌握基于数据结构进行算法设计的基本方法 3. 掌握用高级语言实现算法的基本技能 4. 掌握书写程序设计说明文档的能力 5. 提高运用数据结构知识及高级语言解决非数值实际问题的能力 二.课程设计容说明 1. 项目一 (1) 对设计任务容的概述 学生成绩管理** 任务:要现对学生资料的录入、浏览、插入和删除等功能。 输入:设学生成绩以记录形式存储,每个学生记录包含的信息有:学号和各门课程的成绩,设学生成绩至少3门以上。存储结构:采用线性链式结构。 (2) 详细设计 LinkList *create():输入学生成绩记录函数; void print(LinkList *head):显示全部记录函数 LinkList *Delete(LinkList *head):删除记录函数 LinkList *Insert(LinkList *head):插入记录函数 void menu_select():菜单选择 void ScoreManage():函数界面 (3) 程序流程图

(4) 程序模块及其接口描述 该程序可以分为以下几个模块: 1、菜单选择:void menu_select(); 提供五种可以选择的操作,在main函数过switch语句调用菜单menu_select()函数,进入不同的功能函数中完成相关操作。 2、输入功能:LinkList *create(); 通过一个for循环语句的控制,可以一次完成无数条记录的输入。并将其存入链

数据结构课程设计独立题目

题目2:运动会分数统计 1.问题描述 参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) 2.功能要求 1)可以输入各个项目的前三名或前五名的成绩; 2)能统计各学校总分; 3)可以按学校编号、学校总分、男女团体总分排序输出; 4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。 。 题目6:哈夫曼编/译码器 1.问题描述 利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼编/译码系统。 2.功能要求 I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。 E:编码(Encoding)。利用已建好的哈夫曼树(如不在内存,则从文件htmTree 中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile 中。 D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。 P:印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码写入文件CodePrint中。 T:印哈夫曼树(Tree Printing)。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint 中。 题目9:构造可以使n个城市连接的最小生成树 1.问题描述 给定一个地区的n个城市间的距离网,用Prim算法或Kruskal算法建立最小生成树,并计算得到的最小生成树的代价。 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)上述功能可用菜单选择。

数据结构课程设计题目

《数据结构》课程设计题目 1. 排序算法的性能分析 问题描述 设计一个测试程序,比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。 基本要求 (1)对冒泡排序、直接排序、选择排序、箱子排序、堆排序、快速排序及归并排序算法进行比较。 (2)待排序表的表长不小于100,表中数据随机产生,至少用5组不同数据作比较,比较指标:关键字参加比较次数和关键字的移动次数(关键字交换记为3次移动)。 (3)输出比较结果。 选做内容 (1)对不同表长进行比较。 (2)验证各算法的稳定性。 (3)输出界面的优化。 2. 排序算法思想的可视化演示—1 基本要求 排序数据随机产生,针对随机案例,对冒泡排序、箱子排序、堆排序、归并算法,提供排序执行过程的动态图形演示。 3. 排序算法思想的可视化演示—2 基本要求 排序数据随机产生,针对随机案例,,对插入排序、选择排序、基数排序、快速排序算法,提供排序执行过程的动态图形演示。 4. 线性表的实现与分析 基本要求 ①设计并实现线性表。 ②线性表分别采取数组(公式化描述)、单链表、双向链表、间接寻址存储方 式 ③针对随机产生的线性表实例,实现线性表的插入、删除、搜索操作动态演示(图 形演示)。 5. 等价类实现及其应用 问题描述:某工厂有一台机器能够执行n个任务,任务i的释放时间为r i(是一个整数),最后期限为d i(也是整数)。在该机上完成每个任务都需要一个单元的时间。一种可行的调

度方案是为每个任务分配相应的时间段,使得任务i的时间段正好位于释放时间和最后期限之间。一个时间段不允许分配给多个任务。 基本要求: 使用等价类实现以上机器调度问题。 等价类分别采取两种数据结构实现。 6. 一元稀疏多项式计算器 问题描述 设计一个一元稀疏多项式简单计算器。 基本要求 一元稀疏多项式简单计算器的基本功能是: (1)输入并建立多项式; (2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,…,c n,e n,其中n是多项式的项数,c i,e i,分别是第i项的系数和指数,序列按指数降序排序; (3)多项式a和b相加,建立多项式a+b; (4)多项式a和b相减,建立多项式a-b; (5)计算多项式在x处的值; (6)计算器的仿真界面(选做) 7. 长整数的代数计算 问题描述 应用线性数据结构解决长整数的计算问题。设计数据结构完成长整数的表示和存储,并编写算法来实现两长整数的加、减、乘、除等基本代数运算。 基本要求 ①长整数长度在一百位以上。 ②实现两长整数在取余操作下的加、减、乘、除操作,即实现算法来求解a+b mod n, a-b mod n, a?b mod n, a÷b mod n。 ③输入输出均在文件中。 ④分析算法的时空复杂性。 8. 敢死队问题。 有M个敢死队员要炸掉敌人的一碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。以此类推,直到任务完成为止。排长是不愿意去的,假设排长为1号,请你设计一程序,求出从第几号战士开始计数才能让排长最后一个留下来而不去执行任务。 要求:至少采用两种不同的数据结构的方法实现。 9. 简单计算器

常见的检索技术

常见检索技术 作者:陈亚萍学号:1101212925 手工检索(manual retrieval)是一种传统的检索方法,即以手工翻检的方式,利用工具书(包括图书、期刊、目录卡片等)来检索信息的一种检索手段。 与之对应的计算机检索(computer-based retrieval)简称机检,是指利用计算机通过各种数据库查找所需文献信息的方法,检索过程是由人操纵计算机完成的,其匹配是由计算机进行的。在检索过程中,人是整个检索方案的计设者和操纵者。利用机器及计算机,配合以相应的搜索语言和逻辑对相关课题进行检索是检索技术的发展趋势。 检索表达式,又称检索式、检索提问式,是机检中用来表达检索提问的一种逻辑运算 式。构建检索表达式需要用到相关逻辑检索及检索技术。 (一)常用检索方法概述 1.布尔逻辑运算检索——是指利用布尔运算符连接各个检索词,然后由计算机进行相应逻辑 运算,以找出所需信息的方法。它使用面最广、使用频率最高。 2.位置运算检索——位置算符检索是用一些特定的算符(位置算符)来表达检索词与检索词 之间的临近关系,并且可以不依赖主题词表而直接使用自由词进行检索的技术方法。 3.截词检索与词根检索——截词检索是预防漏检提高查全率的一种常用检索技术,大多数系 统都提供截词检索的功能。截词是指在检索词的合适位置进行截断,然后使用截词符进行处理,这样既可节省输入的字符数目,又可达到较高的查全率。词根检索是指输入某一单词,系统会自动匹配与该词具有相同词根的其他词。 4.字段检索——限定如主题、关键词等某个字段进行检索。 5.全文检索——将文件中所有文本与检索项匹配的文字资料检索方法。 6.精确检索——指检索词与结果完全匹配的检索技术。与之对应的模糊检索,则是指检索词 的基础上进行相应的扩展。 7.其他检索技术(禁用词、嵌套、限制词、大小写敏感词等) (二)分述 1.布尔逻辑检索(Boolean retrieval) 乔治·布尔(George Boole,1815年11月-1864年),爱尔兰数学家,哲学家。1848年,布尔出版了T he Mathematical Analysis of Logic,这是他对符号逻辑诸多贡献中的第一次。1854年,他出版了《The Laws of Thought》,这是他最著名的著作。在这本书中布尔介绍了现在以他的名字命名的布尔代数。由于其在符号逻辑运算中的特殊贡献,很多计算机语言中将逻辑运算称为布尔运算,将其结果称为布尔值。布尔逻辑在检索中主要分为与、逻辑或、逻辑非。 (1)逻辑与 示例数据库:CNKI 检索式:智能机器人*控制

数据结构课程设计报告

编号 课程设计 题目 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:

数据结构课程设计说明书讲解

安徽理工大学 数据结构 课程设计说明书题目: 一元多项式计算 院系:计算机科学与工程学院 专业班级:数字媒体13-1班 学号: 2013303102 学生姓名:钱福琛 指导教师:梁兴柱 2015年 1月 9 日

安徽理工大学课程设计(论文)任务书计算机科学与工程学院

2014年 11 月 10 日安徽理工大学课程设计(论文)成绩评定表

目录 1 问题描述 2 功能描述 2.1 课题要求........................................... 2.2 软件格式规定....................................... 3 设计 2 3.1 相关函数介绍说明................................... 3.2 主程序的流程基函数调用说明......................... 4 程序设计 4 4.1 多项式存储的实现................................... 4.2 加减乘除算法....................................... 4.2.1加法运算的实现............................... 4.2.2减法运算的实现............................... 4.2.3乘法运算的实现............................... 4.2.4除法运算的实现............................... 4.3 函数调用关系图..................................... 5 运行测试

数据结构课程设计题目表

《数据结构》课程设计课题表 课题1:设计出链表结构的相关函数库,以便在程序设计中调用。要求: (1)包括线性表的各种基本函数以及常用函数(自己确定函数、函数形式及理由)。 (2)最好能借助语言环境实现图形显示功能,以便能将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来。 (3)给出若干例程,演示通过调用自己的库函数来实现相关问题的求解。 课题2:设计出顺序表结构的相关函数库,以便在程序设计中调用。要求: (1)包括线性表的各种基本函数以及常用函数(自己确定函数、函数形式及理由)。 (2)最好能借助语言环境实现图形显示功能,以便能将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来。 (3)给出若干例程,演示通过调用自己的库函数来实现相关问题的求解。 课题3:设计程序以实现任意两个高次多项式的加法和乘法运算。 要求: (1)所设计的数据结构应尽可能节省存储空间。 (2)程序的运行时间应尽可能少。 课题4:设计一个模拟计算器的程序,要求能对包含加、减、乘、除、括号运算符及SQR和ABS函数的任意整型表达式进行求解。 要求:要检查有关运算的条件,并对错误的条件产生报警。 课题5:设计出二叉链表结构的相关函数库,以便在程序设计中调用。要求: (1)包括二叉树的各种基本函数以及常用函数(自己确定函数、函数形式及理由)。 (2)最好能借助语言环境实现图形显示功能,以便能将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来。 (3)给出若干例程,演示通过调用自己的库函数来实现相关问题的求解。 课题6:设计出树结构的相关函数库,以便在程序设计中调用。要求: (1)包括树结构的存储结构及各种基本函数以及常用函数(自己确定函数、函数形式及理由)。 (2)最好能借助语言环境实现图形显示功能,以便能将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来。 (3)给出若干例程,演示通过调用自己的库函数来实现相关问题的求解。 课题7:选择合适的存储结构表示广义表,并能实现下列运算要求: (1)用大写字母表示广义表,用小写字母表示原子,并提供设置广义表的值的功能。 (2)取广义表L的表头和表尾的函数head(L)和tail(L)。

建立文本的检索与计数

1 引言 本程序主要实现文本文件单词的检索与计数,正文包括:对文本文件单词的检索与计数程序的详细要求,对程序的分析,勾画程序思路及内容的流程图,程序代码,程序运行相关的截图,以及我们在本次程序中的详细分工和收获。 1.1课程设计目的 在本程序设计中,主要通过给定位置的串匹配算法,实现文本文件单词的查找,计数和记录单词的位置和行号。在C程序设计中我们对于算法的具体实现过程有一个深刻的理解,除了算法本身外,须借助一些辅助数据结构,在本程序中借用字符串对数据进行存储和输出操作。通过循环比较的方法,查找出单词的个数和位置。同时培养自己的算法设计和算法分析能力,提高综合运用所学的理论知识和方法独立分析和解决问题的能力。训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的工作方法、作风和相互合作的精神。 1.2课程设计内容及要求 要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。该设计要求可分为三个部分实现:其一,建立文本文件,文件名由用户用键盘输入;其二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。 (1)建立文本文件。 (2)给定单词的计数。 (3)检索单词出现在文本文件中的行号、次数及其位置。 (4)主控菜单程序的结构。 ①头文件包含。 ②菜单选项包含:建立文件、单词定位、单词计数、退出程序。 ③选择1-4执行相应的操作,其他字符为非法。

数据结构课程设计报告

数据结构课程设计 设计说明书 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..

数据结构课程设计(附代码)

上海应用技术学院课程设计报告 课程名称《数据结构课程设计》 设计题目猴子选大王;建立二叉树;各种排序;有序表的合并;成绩管理系统;院系计算机科学与信息工程专业计算机科学与技术班级 姓名学号指导教师日期 一.目的与要求 1. 巩固和加深对常见数据结构的理解和掌握 2. 掌握基于数据结构进行算法设计的基本方法 3. 掌握用高级语言实现算法的基本技能 4. 掌握书写程序设计说明文档的能力 5. 提高运用数据结构知识及高级语言解决非数值实际问题的能力 二.课程设计内容说明 1. 项目一 (1) 对设计任务内容的概述 学生成绩管理** 任务:要求实现对学生资料的录入、浏览、插入和删除等功能。 输入:设学生成绩以记录形式存储,每个学生记录包含的信息有:学号和各门课程的成绩,设学生成绩至少3门以上。存储结构:采用线性链式结构。 (2) 详细设计 LinkList *create():输入学生成绩记录函数; void print(LinkList *head):显示全部记录函数 LinkList *Delete(LinkList *head):删除记录函数 LinkList *Insert(LinkList *head):插入记录函数 void menu_select():菜单选择 void ScoreManage():函数界面

(3) 程序流程图 (4) 程序模块及其接口描述 该程序可以分为以下几个模块: 1、菜单选择:void menu_select(); 提供五种可以选择的操作,在main函数中通过switch语句调用菜单menu_select()函数,进入不同的功能函数中完成相关操作。

数据结构课程设计题目

数据结构课程设计 一、考核方法和容 根据课程设计过程中学生的学生态度、题目完成情况、课程设计报告书的质量和回答问题的情况等按照10%、40%、30%、20%加权综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。 评分标准: 优秀:答辩所有问题都能答出+报告良好 或报告良好+实现“提高部分”的功能; 良好:答辩所有问题都能答出+报告一般; 或报告一般+实现“提高部分”的功能; 中等:答辩大部分问题能答出+报告良好; 及格:答辩大部分问题能答出+报告一般; 以下四种,都不及格: 1)答辩几乎答不出问题; 2)报告几乎都是代码; 3)雷同部分达到60%; 4)课设报告与数据结构和c/c++关联不大。 课设报告的装订顺序如下: 任务书(签名,把题目要求贴在相应位置,注意下划线)-----目录(注意目录的格式,页码)-----1、设计任务(题目要求)-----2、需求分析(准备选用什么数据逻辑结构?数据元素包含哪些属性?需要哪些函数?为什么要这样设计?最后列出抽象数据类型定义)-----3、系统设计(设计实现抽象数据类型,包含选择什么物理存储方式?数据元素的结构体或类定义,以及各函数的设计思路,算法,程序流程图等)----4、编码实现(重要函数的实现代码)-----5、调试分析(选择多组测试数据、运行截图、结果分析)-----6、课设总结(心得体会)-----7、谢辞-----8、参考文献; 课设报告打印要求: B5纸打印,报告总页数控制在10—15页,报告中不能全是代码,报告中代码总量控制在3页。版式:无页眉,有页码,页码居中 字号:小四,单倍行距 字体:宋体+Times new Romar 截图:截图要配图的编号和图的题目,如:“图1 Insert函数流程图” 二、课程设计的题目 1.长整数的加法运算 2.通讯录管理系统的设计与实现——顺序表 3.广义表的应用 4.学生成绩管理系统的设计与实现 5.家谱管理系统的设计与实现

单词的检索与计数教材

内江师范学院计算机科学学院 数据结构课程设计报告 课题名称:文本文件单词的检索与计数 姓名: 学号: 专业班级:软件工程 系(院):计算机科学学院 设计时间:20XX 年X 月X日 设计地点: 成绩:

1.课程设计目的 (1).训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。 (2).初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; (3).提高综合运用所学的理论知识和方法独立分析和解决问题的能力; (4).训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。 2.课程设计任务与要求: 文本文件单词的检索与计数软件 任务:编写一个文本文件单词的检索与计数软件, 程序设计要求: 1)建立文本文件,文件名由用户键盘输入 2)给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数 要求: (1)、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。 (2)、设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。 (3)、程序设计语言推荐使用C/C++,程序书写规范,源程序需加必要的注释; (4)、每位同学需提交可独立运行的程序; (5)、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于8页(代码不算); (6)、课程设计实践作为培养学生动手能力的一种手段,单独考核。 3.课程设计说明书 一需求分析 3.1 串模式匹配算法的设计要求 在串的基本操作中,在主串中查找模式串的模式匹配算法——即求子串位置的函数Index(S,T),是文本

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

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

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

相关主题
文本预览
相关文档 最新文档