数据结构课程设计.docx

上传人:b****8 文档编号:27955130 上传时间:2023-07-06 格式:DOCX 页数:13 大小:50.49KB
下载 相关 举报
数据结构课程设计.docx_第1页
第1页 / 共13页
数据结构课程设计.docx_第2页
第2页 / 共13页
数据结构课程设计.docx_第3页
第3页 / 共13页
数据结构课程设计.docx_第4页
第4页 / 共13页
数据结构课程设计.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数据结构课程设计.docx

《数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计.docx(13页珍藏版)》请在冰豆网上搜索。

数据结构课程设计.docx

数据结构课程设计

目录

1.开发背景2

2.系统分析2

2.2可行性分析3

3.系统设计3

3.1系统设计思路3

3.2程序功能结构4

4.运算结果9

4.总结12

 

1.开发背景

家谱管理系统是查询家谱信息必不可少的一部分,利用家谱管理系统可以清楚的查询到家族成员的详细信息。

该家谱管理系统是通过树来实现的。

本程序具有插入、查找等功能,可以实现存放家谱中各成员的信息。

程序的操作界面简洁美观,易于操作。

本程序运用了函数、循环、树等知识来进行设计,实现系统和数据结构设计。

2.系统分析

输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容:

1).姓名、配偶、第几代

2).实现数据的存盘和读盘。

3).显示第n代所有人的信息。

4).按照姓名查询,输出成员信息。

5).输入两人姓名,确定其关系。

6).某成员添加孩子。

7).删除某成员(若其还有后代,则一并删除)。

8).修改某成员信息。

2.2可行性分析

(1)技术可行性

【根据需求和目前学习的技术分析是否可以开发该系统】

 

3.系统设计

3.1系统设计思路

本程序要求模块化管理,本程序的主要功能是:

创建主程序模块菜单选择模块树操作模块数据:

创建各相关数据,例如创建家谱信息。

添加数据:

增加家谱成员孩子信息。

查询信息:

按照姓名来查询成员信息。

退出系统:

程序编译结束后退出系统

3.2程序功能结构

本程序首先定义了结构体,定义如下:

 

源代码:

#include

#include

#include

#include

typedefstructpnode

{

charmale[10];

charfemale[10];

intn;

structpnode*fchild,*brother;

}pnode,*ptree;

voidcreatfamily(ptree,FILE);

voidpreorder(ptreep);

voidshow(ptreep);

intMenu(){

system("colorIf");

system("modecon:

cols=76lines=35");

inti;

printf("***************欢迎使用余氏家谱管理系统***************\n\n");

printf("请选择:

\n");

printf("\n");

printf("1.读取一个家庭关系\n");

printf("\n");

printf("2.显示一个家庭关系\n");

printf("\n");

printf("3.查找成员\n");

printf("\n");

printf("4.添加新成员\n");

printf("\n");

printf("5.修改成员\n");

printf("\n");

printf("6.保存\n");

printf("\n");

printf("7.退出系统\n\n\n");

printf("\n");

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

printf("输出1~6之间的数字选择相应功能:

");

scanf("%d",&i);

returni;

}

ptreecreatfamily(FILE*fp)

{

if(!

feof(fp))

{

ptreep;

p=(ptree)malloc(sizeof(pnode));

charfname[10],mname[10];

inti;

fscanf(fp,"%s%s%d\n",fname,mname,&i);

if(strcmp(fname,"n")==0)&&(strcmp(mname,"n")==0)&&(i==0))

{

p=NULL;

returnp;

}

else

{

strcpy(p->male,fname);

strcpy(p->female,mname);

p->n=i;

printf("读取成功\n");

P->fchild=creatfamily(fp);

p->brother=creatfamily(fp);

returnp;

}

}

}

voidPreOrder(ptreep)

{

if(p)

{

show(p);

PreOrder(p->fchild);

PreOrder(p->brother);

}

}

voidshow(ptreep)

{

printf("名字配偶第几代\n");

printf("%2s%6s%d\n",p->male,p->female,p->n);

}

voidsearch(ptreep,charname[])

{

if(p)

{

if(strcmp(p->male,name)==0)

{

show(p);

getchar();

getchar();

}

search(p->fchild,name);

search(p->brother,name);

}

}

voidadd(ptreep,charname[])

{

charfname[10],mname[10];

inti;

if(p)

{

if(strcmp(p->male,name)==0)

{

printf("名字配偶第几代\n");

scanf("%s%s%d",fname,mname,&i);

p->fchild=(ptree)malloc(sizeof(pnode));

strcpy(p->fchild->male,fname);

strcpy(p->fchild->female,mname);

p->fchild->n=i;

p->fchild->fchild=NULL;

p->fchild->brother=NULL;

}

add(p->fchild,name);

add(p->brother,name);

}

}

voidgai(ptreep,charname[])

{

charfname[10],mname[10];

inti;

if(p)

{

if(strcmp(p->male,name)==0)

{

printf("名字配偶第几代\n");

scanf("%s%s%d",fname,mname,&i);

strcpy(p->male,fname);

strpy(P->female,mname);

p->n=i;

}

gai(p->fchild,name);

gai(p->brother,name);

}

}

voidsave(ptreep,FILE*stream);

{

if(p)

{

fprintf(stream,"%s%s%d",p->male,p->female,p->n);

save(p->child,stream);

save(p->brother,stream);

}

else

{

charout[20]="nn0";

fprintf(stream,"%s\n",out);

}

}

intmain()

{

intstatus;

charname[10];

ptreep;

FILE*fp=fopen("lmx.txt","r+");

while

(1){

status=Menu();

switch(status)

{

case1;

p=creatfamily(fp);

getchar();

getchar();

break;

case2;

PreOrder(p);

getchar();

getchar();

break;

case3;

printf("请输入要搜索的名字\n");

scanf("%s",name);

search(p,name);

break;

case4;

printf("请输入要孩子的人\n");

scanf("%s",name);

add(p,name);

break;

case5;

printf("请输入要修改的人\n");

scanf("%s",name);

gai(p,name);

break;

case6;

save(p,fp);

getchar();

getchar();

break;

case7;

printf("\n感谢使用本系统\n");

fclose(fp);

fclose(fp);

exit(0);//如果选择5,则退出循环系统终止程序

break;

default;

printf("\n您选择有误\n");

getchar();

}

}

 

4.运算结果

 

1.主菜单

 

2.显示家谱信息

 

3.显示家谱中第n代人的信息

 

4.按姓名查找某人并输出相应信息

 

 

5.为家谱成员添加孩子信息

 

6.修改家谱中成员的信息

 

 

4.总结

通过这次的课程设计,我明白了,代码编写能力的提高不是一天两天的事,而是一个日积月累的过程。

当老师说道,你还仅仅写了一个开头而已?

那时候,就发现,平常的自己所缺乏的吃苦耐劳的精神。

所以,我在不断地编写调试,在提出问题解决问题的过程中慢慢提升。

所以,要多编程多提问多思考,在其中体味努力的甘甜味道。

我也明白了,在今后的时间里更加努力地学习。

在这个课程设计里我做了对家谱管理的系统分析。

我从网上下载好了需要的资料,通过取其精华去其糟粕,本来是想把系统整合的很完美,可是由于c语言基础不扎实,没能完成。

也向同学和学长学姐请教,只能做到现在这个地步。

通过这次课程设计,我对这个树的操作有了深刻的了解,对C语言也有了更深刻的了解。

关于树我听课时最认真的一段课了,通过之前下载好的资料,我也试着去整合一些好的地方,不过未能完成。

通过本次的项目我意识到自己知识的匮乏。

在之后的日子里会好好的补习知识。

希望在下次的项目中可以做的好点。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1