1、树的孩子兄弟存储法求树的高度宽度结点数叶子数树的孩子兄弟存储法求树的高度、宽度、结点数、叶子数摘 要C是一种通用的程序设计语言,C语言在很多方面继承和发展了以往许多高级程序设计语言的成功经验和特色,具有书写格式自由、数据类型丰富、语句功能强大、执行速度快和存储控制能力强等优点。学生信息管理系统设计是关于对学生各种信息管理来设计的一个系统。整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成学生信息管理的全过程,包括创建学生信息、查找学生信息、修改学生信息、插入学生信息、删除学生信息、按平均分或者总分排序、统计学生信息等工作。本课程主要介绍了本课题的开发背景,所要完成的功能和开发的
2、过程。重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法。关键词:学生管理系统,C语言,数据结构,Wintc1课题背景介绍1.1 课题背景随着网络技术的迅速发展,各种行业纷纷应用网络技术操作和管理。当然学校是一个很大的管理系统,随着学生的大量增加,其管理难度也越来越大,如何对学生的个人信息进行更好的管理,这就是我们研究这个课题的目的。在计算机迅速发展的今天,将计算机这一信息处理器应用于学生的个人信息管理已是势必所然,而且这也将学生信息管理带来前所未有的改变。采用计算机对学生的信息管理是信息科学化和现代化的重要标志,它也给各大高校带来了明显的社会效益。主要体现在:极大地提高了管理工
3、作人员的工作效率,大大地减少了以往的资料室所存在的各种弊端,同时也加强和规范学习对于学生信息的管理。为了能够更好的来实现对学生信息的管理,通过对学生信息管理日常工作的详细调查,搜集了大量的资料,从系统结构的组织,功能的实现,技术的要求以及可行性等多方面进行考虑,认为本课题是一个适应现今学校学生个人信息管理需求的计算机信息管理系统,具有一定的实际开发价值和使用价值。1.2 目的本课题运用C语言进行开发,C语言能够简单的进行编译一些程序,来实现对一些问题的解决。它虽然比较简单的处理一些问题,但却有更高的效率。它能够被大多数用户所接受,因为它能够呈现出清晰的界面,是人们能够很好的理解。能在一些方面给
4、人们更好的服务,成为人们的好帮手。经过这一个学期对数据结构的学习,我们都学到了不少东西,可能有些学的还不够理想,但无论如何这些知识都为我们的下一步学习打下了坚实的基础。做这么一个课程设计,一方面是为了检查我们一个学期以来的学习成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。2需求分析随着学校规模的发展扩大,学校要向着大型化,规模化发展,而对于学生信息管理系统有关的信息随之增加。在这种情况下单靠人工来处理学生的信息不但显得大不从心,而且极容易出错。因此,需要开发学生管理系统,该系统可以实现由计算机代替人工执行一系列复杂而繁琐的操作,使得
5、学校管理人员可以轻松快捷的完成学生信息管理的任务。2.1 数据需求分析本系统的主要是使用算法设计利用孩子兄弟存储求树的结点数、叶子数、高度、宽度、树的度。2.2 功能需求分析本系统主要实现对学生成绩信息进行管理,需要实现以下几个方面的管理功能:(1)创建树(2)求树的结点数。(3)求树的高度。(4)求树的叶子树。(5)求树的宽度。3系统总体设计3.1 系统模块划分本系统主要是对树的孩子兄弟存储法求树的各项运算。整个系统分为以下几3.2 系统模块结构图根据系统功能设计,对应的系统模块结构图如图1所示:图1 系统模块结构图4系统详细设计通过对该系统设计的了解与讨论,同时也为了广大使用者的方便与快捷
6、。我们最后设计了这样的一个界面。首先要让使用者明白怎样使用此系统。这就需要通过界面来给他们一个清晰而明白的空间。而我们设计的这个界面恰好符合了这一要求。通过调用界面函数来使使用者能够很方便的进行查询、插入等操作。4.1创建孩子兄弟存储法定义树的结构体Typedef struct node Char data; Struct CSNode *lchild, *rchild;BiNode,*BiTree;4.2计算结点数 利用二叉链表的存储法求树的结点个数。int count(BiNode *t) int num1,num2; if(t=NULL) return 0; else num1=coun
7、t(t-lchild); num2=count(t-rchild); return (num1+num2+1); 4.3计算树的高度 /*求树的高度*/int height(CSTree t) int ldeep,rdeep; if(t=NULL) return 0; t=t-lchild; if(t=NULL) return 1; else ldeep=height(t-lchild); rdeep=height(t-rchild); return (ldeeprdeep)?(ldeep+2):(rdeep+2); 4.4计算树的叶子数 /*计算树的叶子数*/int leafCount(BT
8、Node) int num1,num2; if(t=NULL) return 0; else if(t-lchild=NULL) return 1; else t=t-lchild; num1=leafCount(t-lchild); num2=leafcount(t-rchild); return (num1+num2+1); 4.5计算树的宽度 int Width(BiTree T) int static n100;/向量存放各层结点数 int static i=1;/控制层数 int static max=0;/最大宽度 if(T) if(i=1) /若是访问根结点 ni+; /第1层加
9、1 i+; /到第2层 if(T-lchild)/若有左孩子则该层加1 ni+; if(T-rchild)/若有右孩子则该层加1 ni+; else /访问子树结点 i+; /下一层结点数 if(T-lchild) ni+; if(T-rchild) ni+; if(maxlchild);/遍历左子树 i-; /往上退一层 Width(T-rchild);/遍历右子树 return max; 总 结本设计实现的功能:成绩信息录入、成绩信息的管理等。并达到操作过程中的直观、方便、实用、安全等要求。系统采用模块化程序设计的方法,既便于系统功能的组合和修改,又便于未参与系统开发的技术维护人员补充和维护。本系统经过测试,证明其运行是稳定、可靠的。但在系统设计中也也遇到很多的问题,并且本系统的功能还需要不断的完善和改进,在以后空闲时间里逐一进行完善,使系统功能更加完善,使本软件能够更好的为大中型企业服务,创造更大的社会价值。参考文献1 谭浩强.C程序设计M.北京:清华大学出版社. 2005.2 严蔚敏. 数据结构(C语言版) M. 北京:清华大学出版社. 2008.3 陈雁.数据结构 M.北京:高等教育出版社,2004. 4 张磊.C程序设计教程.北京:中国铁道出版社.2007.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1