数据结构课与算法课程课程设计高校社团管理设计二叉树的应用附全代码Word格式文档下载.docx
《数据结构课与算法课程课程设计高校社团管理设计二叉树的应用附全代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构课与算法课程课程设计高校社团管理设计二叉树的应用附全代码Word格式文档下载.docx(35页珍藏版)》请在冰豆网上搜索。
![数据结构课与算法课程课程设计高校社团管理设计二叉树的应用附全代码Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-2/6/55589c07-567d-4032-ada0-1e303f0a3df4/55589c07-567d-4032-ada0-1e303f0a3df41.gif)
用C/C++语言编程实现上述内容,并按数学与运算机学院对课程设计说明书规范化要求,写出课程设计说明书,并提交下列材料:
1)课程设计说明书打印稿一份
2)课程设计说明书电子稿一份;
3)源程序电子文档一份。
四、主要技术线路提示
社团管理部门、社团和社团成员组成了完整的二叉树,二叉树选用二叉链表作为存储结构。
五、进度安排
按教学计划规定,数据结构与算法课程设计为2周,其进度及时刻大致分派如下:
序号
设计内容
天数
1
分析问题,给出数学模型,选择数据结构
2
设计算法,给出算法描述
3
给出源程序清单
4
编辑、编译、调试源程序
5
编写课程设计报告
总计
10
六、推荐参考资料
[1]严蔚敏,吴伟民.数据结构.清华大学出版社出版。
[2]严蔚敏,吴伟民.数据结构题集(C语言版).清华大学出版社.2003年5月。
[3]唐策善,李龙澎.数据结构(作C语言描述).高等教育出版社.2001年9月
[4]朱战立.数据结构(C++语言描述)(第二版本).高等出版社出版.2004年4月
[5]胡学钢.数据结构(C语言版).高等教育出版社.2004年8月
指导教师签名日期年月日
系主任审核日期年月日
摘要
随着运算机的普及,运算机的应用愈来愈普遍,多用于复杂事物的管理。
该说明书主如果对高校社团管理系统进行描述,准确清楚的论述了本系统的功能。
本次课程设计实现了对社团和会员的录入、查询、修改、插入、统计、删除等功能,功能详细全面。
关键词:
社团;
功能;
管理;
引言
数据结构是运算机存储、组织数据的方式。
数据结构是指彼此之间存在一种或多种特定关系的数据元素的集合。
通常情形下,精心选择的数据结构能够带来更高的运行或存储效率。
数据结构往往同高效的检索算法和索引技术有关。
课程设计是实践性教学中的一个重要环节,它是以课程为基础能够涉及和课程相关的方方面面,是一门独立于课程之外的特殊课程。
课程设计是让同窗们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。
1需求分析
任务与分析
应考考虑树中结点如何表示社团和成员
ruanjian
测试数据
a
yingyu
f
e
d
c
b
图1-1测试数据
2概要设计
ADT描述
ADTLeagueManage{
数据对象:
D{具有相同特征的数据元素的有限集合;
}
数据关系:
R={H};
R如D为空,则R也为空,LeagueManage为空二叉树。
不然D不为空,则R={H},H详细描述如下:
1.D中存在唯一的称之为跟root的节点,它在关系H下无前驱;
2.若D-{root}不为空,则D-{root}={D1,Dr},切D1,Dr互不相交;
3.(D1,{H1})和(Dr,{Hr})都是二叉树,别离是跟root的左子树和右子树。
大体操作:
Face():
选择用户要执行的操作;
CreatBTree():
创建社团,录入会员;
Find():
查找社团和会员;
Alter():
修改社团和会员;
Insert():
插入社团和会员;
Statistic(Member*):
统计社团中的成员数;
DeleteNode():
删除社团和会员
程序模块结构
图1-2程序模块结构图
2.2.1结构体概念
structMember{
ElemTypename;
inttag;
Member*lch;
Member*rch;
};
各功能模块
Face():
3 详细设计
结构体概念
ElemTypename;
inttag;
Member*lch;
Member*rch;
初始化
LeagueManage(){
root=NULL;
插入操作
插入社团:
if(order==1){
charx;
cout<
<
"
请输入新社团的名字:
;
cin>
>
m->
name;
m->
tag=1;
lch=m->
rch=NULL;
while(p->
lch!
=NULL&
&
p->
rch!
=NULL)
p=p->
lch;
if(p->
lch==NULL)
p->
lch=m;
else
rch=m;
插入社团成功!
endl;
是不是为新的社团录入会员(y/n):
x;
while(x!
='
y'
x!
Y'
n'
N'
){
输入错误!
请重输:
}
if(x=='
||x=='
Member*p,*s[30];
inti=2,j;
s[1]=m;
请输入标识符、名字:
tag>
while("
0"
)){
p=newMember;
name=name;
tag=tag;
lch=p->
s[i]=p;
j=i/2;
if((i%2)==0)
s[j]->
lch=p;
rch=p;
i++;
标识符、名字:
录入成功!
system("
pause"
);
cls"
插入会员:
elseif(order==2){
请输入新会员的名字:
tag=0;
请输入新会员所属社团的名字:
FindLeague(root,name,isfind,p);
if(isfind==false)
没有找到该社团!
else{
插入会员成功!
创建
voidLeagueManage:
:
CreatBTree(){
展企业管理信息化工作的步骤[J].企业管理.2002.(11).12~15
[2]朱战立.数据结构(C++语言描述)(第二版本).高等出版社出版.2004年4月
[3]王立柱.C/C++与数据结构.北京:
清华大学出版社,2002
[4]顾元刚.数据结构简明教程.南京:
东南大学出版社等,2003
[5]郭福顺,王晓芬,李莲治《数据结构》(修订本),大连理工大学出版社,1997
[6][美]MarkAllenWeiss,数据结构与算法分析——C语言描述(英文版•第2版),人民邮电出版社,
[7]李春葆著,数据结构教程,清华大学出版社,
所有代码:
#include<
iostream>
string>
usingnamespacestd;
typedefstringElemType;
structMember{
//姓名
//标识符,tag=0表示是会员,tage=1表示是社团
classLeagueManage{
private:
Member*root;
public:
LeagueManage(){root=NULL;
~LeagueManage(){
Destroy(root);
root=NULL;
voidCreatBTree();
//成立以二叉链存储的社团
voidFind();
//输入社团名称或社团中团员姓名查询
voidAlter();
//修改
voidInsert();
//插入
voidStatistic(){Statistic(root);
}//统计每一个社团中的成员数
voidDeleteNode();
//删除
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&
//遍历输出
CreatBTree(){//创建
inttag=0;
inti=1,j;
请依照二叉树的层序,自上而下自左至右顺序输入数据。
标识符0:
会员1:
社团,输入会员名为0时结束录入。
if(i==1)
while(tag==0){
输入错误,请先创建一个社团!
请从头输如:
root=p;
Find(){//查找
intorder=-1;
inti=0;
Member*m=NULL;
ElemTypee;
boolisfind=false;
stringname;
*****************************"
****一、查询社团****"
****二、查询会员****"
****3、退出****"
请输入查询方式:
order;
while(order!
=1&
order!
=2&
=3){
输入错误,请重输:
请输入社团名字:
FindLeague(root,name,isfind,m);
if(!
isfind)
未找到该社团!
社团:
name<
,旗下会员有:
Display(m->
lch,i);
rch,i);
请输入会员名字:
FindMember(root,name,isfind,e,m);
未找到该会员!
FindLeague(Member*p,stringname,bool&
isfind,Member*&
m){//查找社团
if(p!
=NULL){
tag==0){
FindLeague(p->
lch,name,isfind,m);
rch,name,isfind,m);
elseif(p->
name)){
elseif(!
(p->
isfind=true;
m=p;
FindMember(Member*p,stringname,bool&
isfind,ElemTypee,Member*&
m){//查找会员
tag==1){
e=p->
FindMember(p->
lch,name,isfind,e,m);
rch,name,isfind,e,m);
会员姓名:
,所属社团:
e<
Alter(){//修改
****一、修改社团****"
****二、修改会员****"
请输入修改方式:
\n请输入要修改的社团名字:
修改成功!
请输入要修改的会员名字:
Insert(){
intorder;
Member*m=newMember;
Member*p=root;
****一、插入社团****"
****二、插入会员****"
请输入插入方式:
pause