1 / 28
文档名称:

数据结构课与算法课程课程设计 高校社团管理设计,二叉树的应用(附全代码).pdf

格式:pdf   大小:2,016KB   页数:28页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构课与算法课程课程设计 高校社团管理设计,二叉树的应用(附全代码).pdf

上传人:1781111**** 2024/5/11 文件大小:1.97 MB

下载得到文件列表

数据结构课与算法课程课程设计 高校社团管理设计,二叉树的应用(附全代码).pdf

相关文档

文档介绍

文档介绍:该【数据结构课与算法课程课程设计 高校社团管理设计,二叉树的应用(附全代码) 】是由【1781111****】上传分享,文档一共【28】页,该文档可以免费在线阅读,需要了解更多关于【数据结构课与算法课程课程设计 高校社团管理设计,二叉树的应用(附全代码) 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..目录引言.......................................................................................................61需求分析............................................................................................6任务与分析..........................................................................................................................................6测试数据...............................................................................................................................................72概要设计............................................................................................7ADT描述.............................................................................................................................................7程序模块结构.....................................................................................................................................8各功能模块..........................................................................................................................................83详细设计..........................................................................................9结构体概念..........................................................................................................................................9初始化...................................................................................................................................................9插入操作...............................................................................................................................................9插入社团:..........................................................................................................................................9创建......................................................................................................................................................11数据结构课与算法课程设计任务书学院名称:课程代码:_______专业:年级:一、设计题目高校社团管理二、主要内容在高校中,为了丰硕学生的业余生活,在学校的帮忙下,会成立许多社团,:..具体操作:(1)初始化存储社团和会员的二叉树;(2)成立以二叉链存储的社团;(3)查询:输入社团名称或社团中团员姓名,在二叉树中进行查找,若找到则显示相应信息;不然显示未找到信息;(4)修改:输入社团名称或社团中团员姓名,修改找到的社团或会员的相关信息;(5)插入:输入新的社团名称,在二叉树中增加一个社团;(6)会员插入:输入新的会员姓名,在指定的社哮中增加一个会员;(7)统计:统计每一个社团中的成员数,并显示结果;(8)删除:输入会员,删除相关社团中指定的会员;(9)社团删除:输入社团名称,删除指定的社团。用C/C++语言编程实现上述内容,并按数学与运算机学院对课程设计说明书规范化要求,写出课程设计说明书,并提交下列材料:1)课程设计说明书打印稿一份2)课程设计说明书电子稿一份;3)源程序电子文档一份。四、主要技术线路提示社团管理部门、社团和社团成员组成了完整的二叉树,二叉树选用二叉链表作为存储结构。五、进度安排按教学计划规定,数据结构与算法课程设计为2周,其进度及时刻大致分派如下:序号设计内容天数:..分析问题,给出数学模型,选择数据结构22设计算法,给出算法描述13给出源程序清单24编辑、编译、调试源程序25编写课程设计报告3总计10[1]严蔚敏,。[2]严蔚敏,(C语言版).。[3]唐策善,(作C语言描述).[4](C++语言描述)(第二版本).[5](C语言版).。该说明书主如果对高校社团管理系统进行描述,准确清楚的论述了本系统的功能。本次课程设计实现了对社团和会员的录入、查询、修改、插入、统计、删除等功能,功能详细全面。关键词:社团;功能;管理;:..:..言组织数据的方式。数据结构是指彼此之间存在一种或多种特定关系的数据元素的集合。通常情形下,精心选择的数据结构能够带来更高的运行或存储效率。数据结构往往同高效的检索算法和索引技术有关。课程设计是实践性教学中的一个重要环节,它是以课程为基础能够涉及和课程相关的方方面面,是一门独立于课程之外的特殊课程。课程设计是让同窗们对所学的课程更全面的学****和应用,理解和掌握课程的相关知识。1需求分析任务与分析在高校中,为了丰硕学生的业余生活,在学校的帮忙下,会成立许多社团,少则几个,多则几十个。为了有效管理这些社团,要求编写程序实现以下功能:具体操作:(1)初始化存储社团和会员的二叉树;(2)成立以二叉链存储的社团;(3)查询:输入社团名称或社团中团员姓名,在二叉树中进行查找,若找到则显示相应信息;不然显示未找到信息;(4)修改:输入社团名称或社团中团员姓名,修改找到的社团或会员的相关信息;(5)插入:输入新的社团名称,在二叉树中增加一个社团;(6)会员插入:输入新的会员姓名,在指定的社哮中增加一个会员;(7)统计:统计每一个社团中的成员数,并显示结果;(8)删除:输入会员,删除相关社团中指定的会员;(9)社团删除:输入社团名称,删除指定的社团。:..1ruanjian0ayingyu10dbc00e00f图1-1测试数据2概要设计ADT描述ADTLeagueManage{数据对象:D{具有相同特征的数据元素的有限集合;}数据关系:R={H};R如D为空,则R也为空,LeagueManage为空二叉树。不然D不为空,则R={H},H详细描述如下:,它在关系H下无前驱;-{root}不为空,则D-{root}={D,Dr},切D,Dr11互不相交;3.(D1,{H1})和(Dr,{Hr})都是二叉树,别离是跟root的左子树和右子树。大体操作:Face():选择用户要执行的操作;CreatBTree():创建社团,录入会员;Find():查找社团和会员;Alter():修改社团和会员;Insert():插入社团和会员;Statistic(Member*):统计社团中的成员数;DeleteNode():删除社团和会员:..开始创查修插统删退建询改入计除出结束图1-{ElemTypename;inttag;Member*lch;Member*rch;};各功能模块Face():选择用户要执行的操作;CreatBTree():创建社团,录入会员;Find():查找社团和会员;Alter():修改社团和会员;Insert():插入社团和会员;:..统计社团中的成员数;DeleteNode():删除社团和会员详细设计结构体概念structMember{ElemTypename;inttag;Member*lch;Member*rch;};初始化LeagueManage(){root=NULL;}插入操作插入社团:if(order==1){charx;请输入新社团的名字:cin>>m->name;m->tag=1;m->lch=m->rch=NULL;while(p->lch!=NULL&&p->rch!=NULL)p=p->lch;if(p->lch==NULL)p->lch=m;elsep->rch=m;:..插入社团成功!是不是为新的社团录入会员(y/n):cin>>x;while(x!='y'&&x!='Y'&&x!='n'&&x!='N'){输入错误!请重输:cin>>x;}if(x=='y'||x=='Y'){Member*p,*s[30];ElemTypename;inttag;inti=2,j;s[1]=m;请输入标识符、名字:cin>>tag>>name;p=newMember;p->name=name;p->tag=tag;p->lch=p->rch=NULL;s[i]=p;j=i/2;if((i%2)==0)s[j]->lch=p;elses[j]->rch=p;i++;标识符、名字:cin>>tag>>name;}:..}录入成功!}插入会员:elseif(order==2){请输入新会员的名字:cin>>m->name;m->tag=0;m->lch=m->rch=NULL;请输入新会员所属社团的名字:cin>>name;FindLeague(root,name,isfind,p);if(isfind==false)没有找到该社团!else{while(p->lch!=NULL&&p->rch!=NULL)p=p->lch;if(p->lch==NULL)p->lch=m;elsep->rch=m;插入会员成功!}}:..LeagueManage::CreatBTree(){:..管理信息化工作的步骤[J]..(11).12~15:..(C++语言描述)(第二版本).[3]++:清华大学出版社,2002[4]:东南大学出版社等,2003[5]郭福顺,王晓芬,李莲治《数据结构》(修订本),大连理工大学出版社,1997[6][美]MarkAllenWeiss,数据结构与算法分析——C语言描述(英文版?第2版),人民邮电出版社,[7]李春葆著,数据结构教程,清华大学出版社,所有代码:#include<iostream>#include<string>usingnamespacestd;:..structMember{ElemTypename;//inttag;//标识符,tag=0表示是会员,tage=1表示是社团Member*lch;Member*rch;};classLeagueManage{private:Member*root;public:LeagueManage(){root=NULL;}~LeagueManage(){Destroy(root);root=NULL;}voidCreatBTree();//成立以二叉链存储的社团voidFind();//输入社团名称或社团中团员姓名查询voidAlter();//修改voidInsert();//插入voidStatistic(){Statistic(root);}//统计每一个社团中的成员数voidDeleteNode();//删除private:voidFindMember(Member*,string,bool&,ElemType,Member*&);//查找会员voidFindLeague(Member*,string,bool&,Member*&);//查找社团voidFindAlter(string,bool&,Member*,Member*,Member*&,Member*&);//找双亲voidInsert(Member*,string);//插入voidStatistic(Member*p);voidDeleteMember(Member*,Member*,Member*);//删除会员voidDestroy(Member*);//删除所有节点voidDisplay(Member*,int&);//遍历输出};voidLeagueManage::CreatBTree(){//创建Member*p,*s[30];ElemTypename;inttag=0;inti=1,j;请依照二叉树的层序,自上而下自左至右顺序输入数据。标识符0:会员1:社团,输入会员名为0时结束录入。请输入标识符、名字:cin>>tag>>name;if(i==1):..while(tag==0){cin>>tag>>name;}p=newMember;p->name=name;p->tag=tag;p->lch=p->rch=NULL;s[i]=p;if(i==1)root=p;else{j=i/2;if((i%2)==0)s[j]->lch=p;elses[j]->rch=p;}i++;标识符、名字:cin>>tag>>name;}}voidLeagueManage::Find(){//查找intorder=-1;inti=0;Member*m=NULL;ElemTypee;boolisfind=false;stringname;****一、查询社团****二、查询会员****3、退出请输入查询方式:cin>>order;while(order!=1&&order!=2&&order!=3){输入错误,请重输:cin>>order;}if(order==1){请输入社团名字:cin>>name;:..FindLeague(root,name,isfind,m);if(!isfind)else{社团:,旗下会员有:Display(m->lch,i);Display(m->rch,i);cout<<endl;}}elseif(order==2){请输入会员名字:cin>>name;FindMember(root,name,isfind,e,m);if(!isfind)未找到该会员!}else}voidLeagueManage::FindLeague(Member*p,stringname,bool&isfind,Member*&m){//查找社团if(p!=NULL){if(p->tag==0){FindLeague(p->lch,name,isfind,m);FindLeague(p->rch,name,isfind,m);}elseif(p->name)){FindLeague(p->lch,name,isfind,m);FindLeague(p->rch,name,isfind,m);}elseif(!(p->name)){isfind=true;m=p;}}}voidLeagueManage::FindMember(Member*p,stringname,bool&isfind,ElemTypee,Member*&m){//查找会员if(p!=NULL){:..if(p->tag==1){e=p->name;FindMember(p->lch,name,isfind,e,m);FindMember(p->rch,name,isfind,e,m);}elseif(p->name)){FindMember(p->lch,name,isfind,e,m);FindMember(p->rch,name,isfind,e,m);}elseif(!(p->name)){isfind=true;,所属社团:m=p;}}}voidLeagueManage::Alter(){//修改intorder=-1;inti=0;ElemTypee;boolisfind=false;Member*m=NULL;stringname;****一、修改社团****二、修改会员****3、退出请输入修改方式:cin>>order;while(order!=1&&order!=2&&order!=3){输入错误,请重输:cin>>order;}if(order==1){请输入社团名字:cin>>name;FindLeague(root,name,isfind,m);if(!isfind)未找到该社团!else{社团:,旗下会员有:Display(m->lch,i);Display(m->rch,i);:..cin>>m->name;修改成功!}}elseif(order==2){请输入会员名字:cin>>name;FindMember(root,name,isfind,e,m);if(!isfind)未找到该会员!else{请输入要修改的会员名字:cin>>m->name;修改成功!}}else}voidLeagueManage::Insert(){intorder;boolisfind=false;Member*m=newMember;Member*p=root;stringname;****一、插入社团****二、插入会员****3、退出请输入插入方式:cin>>order;while(order!=1&&order!=2&&order!=3){输入错误,请重输:cin>>order;}if(order==1){charx;请输入新社团的名字::..cin>>m->name;m->tag=1;m->lch=m->rch=NULL;while(p->lch!=NULL&&p->rch!=NULL)p=p->lch;if(p->lch==NULL)p->lch=m;elsep->rch=m;是不是为新的社团录入会员(y/n):cin>>x;while(x!='y'&&x!='Y'&&x!='n'&&x!='N'){输入错误!请重输:cin>>x;}if(x=='y'||x=='Y'){Member*p,*s[30];ElemTypename;inttag;inti=2,j;s[1]=m;请输入标识符、名字:cin>>tag>>name;p=newMember;p->name=name;p->tag=tag;p->lch=p->rch=NULL;s[i]=p;j=i/2;if((i%2)==0)s[j]->lch=p;elses[j]->rch=p;i++;标识符、名字:cin>>tag>>name;}}录入成功!}elseif(order==2){:..cin>>m->name;m->tag=0;m->lch=m->rch=NULL;请输入新会员所属社团的名字:cin>>name;FindLeague(root,name,isfind,p);if(isfind==false)没有找到该社团!else{while(p->lch!=NULL&&p->rch!=NULL)p=p->lch;if(p->lch==NULL)p->lch=m;elsep->rch=m;插入会员成功!}}else}voidLeagueManage::Statistic(Member*p){if(p!=NULL){if(p->tag==0){Statistic(p->lch);Statistic(p->rch);}else{inti=0;社团:,旗下会员有:Display(p->lch,i);Display(p->rch,i);共计:人Statistic(p->lch);Statistic(p->rch);}}}voidLeagueManage::DeleteNode(){:..intorder;inti=0;stringname;charyn;Member*p=root,*q=NULL,*n=root;Member*m;boolisfind=false;********二、删除会员****3、退出请输入查询方式:cin>>order;while(order!=1&&order!=2&&order!=3){输入错误,请重输:cin>>order;}if(order==1){请输入要删除的社团:cin>>name;FindAlter(name,isfind,p,q,m,n);if(isfind==false)没有该社团!else{社团:,旗下会员有:Display(m->lch,i);Display(m->rch,i);是不是删除该社团(y/n)cin>>yn;if(yn=='y'||yn=='Y'){if(m==root){Destroy(root);root=NULL;}else{if(n->lch==m){Destroy(m);n->lch=NULL;}else{Destroy(m);n->rch=NULL;}}:..}}}elseif(order==2){请输入要删除的会员名字:cin>>name;FindAlter(name,isfind,p,q,m,n);if(isfind==false)没有该会员!else{是不是删除该会员(y/n)cin>>yn;if(yn=='y'||yn=='Y')DeleteMember(root,m,n);}}else}voidLeagueManage::DeleteMember(Member*t,Member*p,Member*q){//删除会员boolb=1;Member*s,*m;if(p->lch==NULL)s=p->rch;elseif(p->rch==NULL)s=p->lch;else{m=p;s=p->rch;while(s->lch!=NULL){m=s;s=s->lch;}if(m==p)m->rch=s->rch;elsem->lch=s->rch;p->name=s->name;p->tag=s->tag;:..deletes;b=0;}if(b==1){if(p==root)t=s;elseif(q->lch==p)q->lch=s;elseq->rch=s;deletep;}}voidLeagueManage::FindAlter(stringname,bool&isfind,Member*p,Member*q,Member*&m,Member*&n){//找双亲,用于删除和插入if(p!=NULL){if(p->name==name){isfind=true;m=p;n=q;}else{q=p;FindAlter(name,isfind,p->lch,q,m,n);FindAlter(name,isfind,p->rch,q,m,n);}}}voidLeagueManage::Display(Member*p,int&i){//遍历输出if(p!=NULL&&p->tag==0){i++;Display(p->lch,i);Display(p->rch,i);}}voidLeagueManage::Destroy(Member*p){//删除所有节点if(p!=NULL){Destroy(p->lch);Destroy(p->rch);deletep;:..}}voidFace(){********一、创建****二、查询****3、修改****4、插入****五、统计****六、删除****0、退出}intmain(){LeagueManagelm;intorder=-1;while(order!=0){Face();请选择操作:cin>>order;while(order!=0&&order!=1&&order!=2&&order!=3&&order!=4&&order!=5&&order!=6){输入错误,请重输:cin>>order;}switch(order){case1:();创建成功!break;case2:();break;case3:();break;case4:();break;case5:();:..break;case6:();break;}}return0;}