数据结构课程设计分析报告

雪魂 发布于 2012/06/17 10:34
阅读 2K+
收藏 0
数据结构课程设计报告应该怎么写啊,我别的都写出来了,算法和别的也实现了,但是不会写报告,不知道应该怎么入手,哪位教教我啊。。。。
加载中
0
上古进程
上古进程

1、题目及解析

2、所用的数据结构域解析

3、代码细节与调优

4、总结

想到啥就写啥吧

0
中山野鬼
中山野鬼
到底是“设计报告”还是“设计的分析报告”????
0
雪魂
雪魂

我设计好了,就是差课程设计报告了,那上面有要求,但是我看那些要求不知道怎么下手

0
空云万里晴
空云万里晴
什么题目?上代码?。。。。。
0
雪魂
雪魂

设计题目:      基于线性表和二叉排序树的低频词过滤系统     

内   容:

对于一篇给定的英文文章,分别利用线性表和二叉排序树来实现单词频率的统计,实现低频词的过滤,并比较两种方法的效率。

设计要求:

1. 读取英文文章文件(InFile.txt),识别其中的单词。

2. 分别利用线性表和二叉排序树构建单词的存储结构。当识别出一个单词后,若线性表或者二叉排序树中没有该单词,则在适当的位置上添加该单词;若该单词已经被识别,则增加其出现的频率。

3. 统计结束后,删除出现频率低于五次的单词,并显示该单词和其出现频率。

4.其余单词及其出现频率按照从高到低的次序输出到文件中(OutFile.txt),同时输出用两种方法完成该工作所用的时间。

5.计算查找表的ASL值,分析比较两种方法的效率

这个是题目,下面的是代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<time.h>
#define maxqsize 9000

typedef struct vnode{
 char word[16];
 int count;
 vnode* next;
}*linklist;
typedef struct tree{
 char word[16];
 int count;
 tree *lcchild,*rcchild;
}*Bitree,*queueelem;
typedef struct queue{
 queueelem *data;
 int rear,front,tag;//tag 为判断队的状态1为满 0为空
};
void inordertraverse(Bitree r,FILE* fp)//中序遍历输出结果到文档
{
if(r==NULL)return;
inordertraverse(r->lcchild,fp);
printf("%-16s%3d\n",r->word,r->count);
fprintf(fp,"%-16s%3d\n",r->word,r->count);
inordertraverse(r->rcchild,fp);
}
void initqueue(queue &q){
 q.data=(queueelem *)malloc(maxqsize*sizeof(queueelem));
 q.tag=q.front=q.rear=0;
 return;
}
void enqueue(queue &q,queueelem e)
{
 if(q.tag==1)return;
 q.data[q.rear]=e;
 q.rear=(q.rear+1)%maxqsize;
 if(q.rear==q.front)q.tag=1;
 else q.tag=2;
}
void dequeue(queue &q,queueelem &e)
{
 if(q.tag==0)return;
 e=q.data[q.front];
 q.front=(q.front+1)%maxqsize;
 if(q.rear==q.front)q.tag=0;
 else q.tag=2;
}
linklist head;
Bitree root=(Bitree)malloc(sizeof(tree)),root2;
int main()
{
 void start();
 start();
}
void start()
{
 int i;
 void biao();
 void bitree();
 while(true)
 {
  system("cls");
  printf("统计低频词汇\n");
  printf("1.线性表\n");
  printf("2.二叉排序树\n");
  printf("3.退出\n");
  printf("键入数字1-3,选择需要进入的功能界面\n");
  printf("\n");
  while(scanf("%d",&i),i<1&&i>3);
  switch(i)
  {
   case 1:biao();break;
   case 2:bitree();break;
   case 3:return;
  }
 }
}
void biao()
{
 void basl();
 system("cls");
 int i;
 void jm1();
 void jm2();
 while(true)
 {
  system("cls");
  printf("统计低频词汇\n");
  printf("1.连续执行并显示时间\n");
  printf("2.分步执行\n");
  printf("3.计算ASL\n");
  printf("4.返回主菜单\n");
  printf("\n");
  while(scanf("%d",&i),i<1&&i>4);
  switch(i)
  {
   case 1:jm1();break;
   case 2:jm2();break;
   case 3:basl();break;
   case 4:return;
  }
 }
}
void bread()
{
 char a [99999];
 FILE* fp=fopen("D:\\data\\InFile.txt","r");
 //if(fp)printf("读取文件成功\n");
 char ch[35],str[16];linklist p,q;int i,j;
 head=(linklist)malloc(sizeof(vnode));
 head->next=NULL;
 while(~fscanf(fp,"%s",ch))
 {
  j=0;
  for(i=0;;i++)
  if(isalpha(ch[i]))str[j++]=ch[i];
  else if(j)
  {
   str[j]=0;
   for(j=0;str[j];j++)
   if(isupper(str[j]))str[j]+=32;
   for(p=head;p->next;p=p->next)
   if(strcmp(str,p->next->word)==0)break;
   if(p->next)p->next->count++;
   else{
    q=(linklist)malloc(sizeof(vnode));
    //printf("%s\n",str);
    strcpy(q->word,str);
    q->count=1;
    p->next=q;q->next=NULL;
   }
   j=0;if(!ch[i])break;
  }
  else if(!ch[i])break;
 }
 fclose(fp);
 void boutput();
 boutput();
}
void bdel()
{
 linklist p=head,q;
 while(p->next)
 if(p->next->count<5)
 {
  q=p->next;p->next=q->next;
  
  //free(q);
 }
 else p=p->next;
 //printf("s%\n",p);
}
void bsort()
{
 linklist p,q,r;
 q=head->next->next;head->next->next=NULL;
 while(q)
 {
  r=q;q=q->next;
  for(p=head;p->next;p=p->next)
  if(r->count>p->next->count)break;
  r->next=p->next;p->next=r;
 }
}
void boutput()
{
 bsort();
 linklist p=head->next;
 FILE* fp=fopen("D:\\data\\File1.txt","w");
 while(p)
 {
  printf("  %-15s\t%d\n",p->word,p->count);  
  //printf("%d",&basl);
  fprintf(fp,"  %-15s\t%d\n",p->word,p->count);
  p=p->next;
 }
 if(fp)printf("已成功写入文件File1,路径为D:\\data\\File1.txt,请自行查看\n");
 fclose(fp);
}
void jm1()
{
 time_t now=clock();
 bread();
 bdel();
 boutput();
 time_t f=clock();
 FILE *fp=fopen("D:\\data\\File1.txt","a");
 fprintf(fp,"时间为%.3fs\n",(double)(f-now)/CLOCKS_PER_SEC);
 fclose(fp);
 printf("时间为%.3fs\n",(double)(f-now)/CLOCKS_PER_SEC);
 system("pause");
}
void jm2()
{
 void basl();
 int i;
 while(true)
 {
  system("cls");
  printf("统计低频词汇\n");
  printf("1.统计单词\n");
  printf("2.删除低频单词\n");
  printf("3.输出剩余单词及频率\n");
  printf("4.计算ASL\n");
  printf("5.返回上一级\n");
  printf("\n");
  while(scanf("%d",&i),i<1&&i>5);
  switch(i)
  {
   case 1:bread();system("pause");break;
   case 2:bdel();system("pause");break;
   case 3:boutput();system("pause"); break;
   case 4:basl();system("pause");break;
   case 5:return;
  }
 }
}
void bitree()
{
 void sasl();
 system("cls");
 int i;
 void bitree1();
 void bitree2();
 while(true)
 {
  system("cls");
  printf("\n统计低频词汇\n");
  printf("1.连续执行并显示时间\n");
  printf("2.分步执行\n");
  printf("3.计算ASL\n");
  printf("4.返回主菜单\n");
  printf("\n");
  while(scanf("%d",&i),i<1&&i>3);
  switch(i)
  {
   case 1:bitree1();break;
   case 2:bitree2();break;
   case 3:sasl();break;
   case 4:return;
  }
 }
}
void sread()
{
 FILE* fp=fopen("D:\\data\\InFile.txt","r");
 char ch[35],str[16];Bitree p,q;int i,j,flag=1;
 while(~fscanf(fp,"%s",ch))
 {
  for(i=0,j=0;;i++)
  if(isalpha(ch[i]))str[j++]=ch[i];
  else if(j)
  {
   str[j]=0;
   for(j=0;str[j];j++)
   if(isupper(str[j]))str[j]+=32;
   p=root;
   if(flag)
   {
    strcpy(p->word,str);
    p->count=1;p->lcchild=NULL;
    p->rcchild=NULL;flag=0;
   }
   else while(true)
   {
    int k=strcmp(p->word,str);
    if(k==0){p->count++;break;}
    else if(k<0&&p->rcchild){
     p=p->rcchild;continue;
    }
    else if(k<0){
     q=(Bitree)malloc(sizeof(tree));
     strcpy(q->word,str);
     printf("%s ",str);
     q->count=1;
     p->rcchild=q;q->lcchild=NULL;
     q->rcchild=NULL;
     break;
    }
    else if(p->lcchild){
     p=p->lcchild;continue;
    }
    else{
     q=(Bitree)malloc(sizeof(tree));
     strcpy(q->word,str);
     printf("%s ",str);
     q->count=1;
     p->lcchild=q;q->lcchild=NULL;
     q->rcchild=NULL;break;
    }
   }
   j=0;if(!ch[i])break;
  }
  else if(!ch[i])break;
 }
 if(fp)printf("读取文件成功\n");
 fclose(fp);
 inordertraverse(root,0);
}
void inserttree(Bitree p)
{
    printf("  %-15s\t%d\n",p->word,p->count);
    Bitree q=(Bitree)malloc(sizeof(tree));
    strcpy(q->word,p->word);
    q->count=p->count;
    q->lcchild=NULL;
 q->rcchild=NULL;
 if(!root2){
  root2=q;
  return;
 }Bitree r=root2;
while(true)
{
if(p->count<r->count&&r->rcchild){
r=r->rcchild;continue;
}
if(p->count<r->count){
r->rcchild=q;
break;
}
if(p->count>=r->count&&r->lcchild){
r=r->lcchild;continue;
}
r->lcchild=q;
break;
}
}
void bitree(Bitree r)
{
 if(r){
  if(r->count>4)inserttree(r);
  if(r->lcchild)bitree(r->lcchild);
  if(r->rcchild)bitree(r->rcchild);
  
 }
}
void del()
{
 bitree(root);
 root=root2;
}
void output()
{
 FILE* fp=fopen("D:\\data\\File2.txt","w");
 //printf("%s\n",root2);
 //printf("已删除\n");
    fprintf(fp,"%s\n",root2,fp);
    inordertraverse(root2,fp);
 //while(r)
// {
//  printf("  %-15s\t%d\n",r->word,r->count);
//  fprintf(fp,"  %-15s\t%d\n",r->word,r->count);
//  r=r->next;
// }
 if(fp)printf("已成功写入文件File2,路径为D:\\data\\File2.txt,请自行查看\n");
 fclose(fp);
}
void bitree1()
{
 time_t now=clock();
 sread();
 del();
 output();
 void sasl();
 sasl();
 time_t f=clock();
 FILE *fp=fopen("D:\\data\\File2.txt","a");
 fprintf(fp,"时间为%.3fs\n",(double)(f-now)/CLOCKS_PER_SEC);
 fclose(fp);
 printf("时间为%.3fs\n",(double)(f-now)/CLOCKS_PER_SEC);
 system("pause");
}
void bitree2()
{
 int i;void sasl();
 while(true)
 {
  system("cls");
  printf("低频词过滤\n");
  printf("1.统计单词\n");
  printf("2.删除低频单词\n");
  printf("3.输出剩余单词及频率\n");
  printf("4.计算ASL\n");
  printf("5.返回上一级\n");
  printf("\n");
  while(scanf("%d",&i),i<1&&i>5);
  switch(i)
  {
   case 1:sread();system("pause");break;
   case 2:del();system("pause");break;
   case 3:output();system("pause"); break;
   case 4:sasl();break;
   case 5:return;
  }
 }
}
void basl()
{
   linklist p=head;
   float asl;
   int wn=0;
         while(p->next)
      {  
         wn++;
         p=p->next;
      }
         asl=((float)wn+1)/2.0;
         printf("ASL值为:%.3f\n",asl);
         //fprintf("ASL值为:%.3f\n",asl)
         system("pause");
}
void shu(Bitree p,int qu,int &wn,float &sl)
{
 if(p){
  wn++;sl+=qu;
  shu(p->lcchild,qu+1,wn,sl);
  shu(p->rcchild,qu+1,wn,sl);
 }
}
void sasl()
{
 int qu=1,wn=0;float asl=0;
 shu(root,qu,wn,asl);
    printf("ASL值为:%.3f\n",asl/wn);
    system("pause");
}

这个的课程设计报告怎么写啊?

五.课程设计报告的内容

设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料.设计报告以规定格式的电子文档书写,打印并装订,排版及图,表要清楚,工整.

装订顺序如下:封面、目录、正文.

正文包括以下7个内容:

1.需求分析

   陈述说明程序设计的任务,强调的是程序要做什么 ,需要什么结果、所能达到的功能.

2.概要设计

    说明本程序中用到的所有抽象数据类型的定义,主程序的流程以及各程序模块之间的层次(调用)关系.

3.详细设计

    实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);可采用流程图、N S 图进行描述,画出函数和过程的调用关系图.

4.调试分析

内容包括:

a.调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;

b.算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和 改进设想;

c.经验和体会等.

5.测试结果

列出你的测试结果,包括输入和输出.这里的测试数据应该完整和严格,最好多于需求分析中所列.

6.参考文献

列出参考的相关资料和书籍.

这个是要求,我不知道怎么下手

0
中山野鬼
中山野鬼

没看后面,你的前面”内容摘要“就有问题。大体应该如下写:

”XXX的社会XX中,需要依赖单词的区分及识别。我们可以对这类问题的求解等同看待为针对一个英文文件的单词的XXX。传统的XXX方法在实现这类问题的解决方案中存在XXX问题。本课题针对XXX采用XXX,解决了传统XXX方法中XXXX的不足,提升了XXX,降低了XXX,有效的XXX。“

论文的摘要非常重要。基本上决定了论文的价值,论文的研究中心,研究方法,论文的章节排步等。

论文的摘要至少要写到一个程度,才算合格。也即,通过摘要,可以让别人包括自己一目了然,自己忙呼了半天是非常SB的在忙了个非常SB的事情,还是由此证明了前人非常SB的忙了个非常SB的事情。

 

0
中山野鬼
中山野鬼

楼主建议你多思考下应该怎么写论文。以前我导师对我的毕业论文,花了半个小时,琢磨标题,就是标题,摘要部分,我记得至少一个晚上,几个小时,两个人,一台电脑。我就被骂着,哈。谈不上每个字都被骂,至少每句话都被SB了。。。现在这样的导师难找了。。。

你问我有什么用?现在我和合伙人也经常相互讨论,比如,客户在哪里,需求在哪里,为什么这个方案比别人的方案可行,社会上需要什么,社会自身变化了什么?换汤不换药,思考的方法都是一致的。只有务实的思考问题才能有机会解决问题。

 

0
雪魂
雪魂
首先,您到底有没有认真的看东西,哪里有什么论文摘要?我很纳闷儿,我发的前面是题目,中间是代码,后面是课程设计的书写要求,哪里有什么论文摘要?第二,请您说清楚,谁到底是傻B,看清楚了,这不是什么软件工程,这是数据结构的,题目很简单,没什么需求什么的,难道说,我写需求分析的时候还要写我这个程序有什么需求么,我真的有些想不到,这个到底有什么需求呢?难道让用户下载我写好的EXE么,这个不是太奇怪了么?我的这个不是什么内容的摘要,也不是像软件工程的那么严格,我没写过课程设计,是头一次做这个东西,所以,不知道怎么入手而已,请您看下东西,然后在骂,可以么?
0
中山野鬼
中山野鬼

引用来自“雪魂”的答案

首先,您到底有没有认真的看东西,哪里有什么论文摘要?我很纳闷儿,我发的前面是题目,中间是代码,后面是课程设计的书写要求,哪里有什么论文摘要?第二,请您说清楚,谁到底是傻B,看清楚了,这不是什么软件工程,这是数据结构的,题目很简单,没什么需求什么的,难道说,我写需求分析的时候还要写我这个程序有什么需求么,我真的有些想不到,这个到底有什么需求呢?难道让用户下载我写好的EXE么,这个不是太奇怪了么?我的这个不是什么内容的摘要,也不是像软件工程的那么严格,我没写过课程设计,是头一次做这个东西,所以,不知道怎么入手而已,请您看下东西,然后在骂,可以么?
哈。。。。你看看你的内容第一个要求,”需求分析“???小朋友,心态好点。
0
雪魂
雪魂

引用来自“中山野鬼”的答案

楼主建议你多思考下应该怎么写论文。以前我导师对我的毕业论文,花了半个小时,琢磨标题,就是标题,摘要部分,我记得至少一个晚上,几个小时,两个人,一台电脑。我就被骂着,哈。谈不上每个字都被骂,至少每句话都被SB了。。。现在这样的导师难找了。。。

你问我有什么用?现在我和合伙人也经常相互讨论,比如,客户在哪里,需求在哪里,为什么这个方案比别人的方案可行,社会上需要什么,社会自身变化了什么?换汤不换药,思考的方法都是一致的。只有务实的思考问题才能有机会解决问题。

 

我的心态一直挺好,还有您说我傻B,那么请您说下,我做的这个东西,有什么市场需求,有什么客户需求?我是来求教的,不是闲来无事听着您骂我的,您是前辈,但是请您把我的东西和要求看完,再发表评论,您说的市场,客户需求,那是软件工程的东西,我提前看了一些,但是,我还没有学习软件工程,我写的这个仅仅就是老师要求的一个课程设计而已,只是用线性表和二叉树统计下低频词汇,顺便计算ASL,封面老师是给定的。。。。标题?老师给的东西,怎么自己加标题啊?您说的是自己要把握方向,对于自己做的东西需要清楚地知道,它怎么可以盈利,但是市场和客户总需要完整的东西吧,用C写的这个东西怎么拿出去?难道只是一个Cfree生成的EXE文件么?我没您那么牛,我只是一个大二的学生而已,像什么软件工程这类的东西,我基本算是没有接触过。当然,您可以说自学,但是,首先请您明白,我现在问的是怎么写我这次的课程设计,不是自学软件工程,谢谢。请您考虑下实际情况,再骂,可以么?如果您看完我的东西,觉得我还是傻B,还觉得我态度不好,觉得我说的还是无稽之谈,那么,我无话可说。。。
返回顶部
顶部