一个简单的学生成绩管理程序(二叉树实现)

#include<iostream>
#include<string>
struct feng                                   //记录分数
{
 int pshuxue;
 int penglish;
 int pchinese;
 int count;
}total;
class stunode                               //子节点
{
 private:
 int   id;
 string name;
 int   shuxue;
 int   english;
 int   chinese;  
 stunode  *left;                     //左节点
 stunode  *right;    //右节点
 public:
 stunode(void);    //构造函数
 stunode(int sid,string sname,int sshuxue,int senglish,int schinese); 
 ~stunode(void);
 void insertleft(stunode* newnode); 
 void insertright(stunode* newnode);
 stunode* returnleft(void);
 stunode* returnright(void);
 int  getid(void);
 void setname(string nwname)
 {name=nwname;}
 void setshuxue(int ssx){shuxue=ssx;}
 void setenglish(int se){english=se;}
 void setchinese(int sc){chinese=sc;}
 friend void printnode(stunode* head);   //打印学生分数
 friend void pingchengji(stunode* head); //计算平均成绩
};
stunode::stunode(void)
{
        left=NULL;
 right=NULL;
}
stunode::stunode(int sid,string sname,int sshuxue,int senglish,int schinese)
{
 id=sid;
 name=sname;
 shuxue=sshuxue;
 english=senglish;
 chinese=schinese;
 left=NULL;
 right=NULL;
}
stunode::~stunode(void)
{
        left=NULL;
 right=NULL;
}
void stunode::insertleft(stunode* newnode)
{
           left=newnode;   
}
void stunode::insertright(stunode* newnode)
{
    right=newnode;
}
stunode* stunode::returnleft(void)
{
 return left;
}
stunode* stunode::returnright(void)
{
  return right;
}
int stunode::getid(void)
{
 return id;
}
void printnode(stunode *head)
{
 cout<<head->id<<"  "<<head->name<<"  "<<head->shuxue<<"  "<<head->english<<"  "<<head->chinese<<endl;
}
void pingchengji(stunode *head)
{
 total.pshuxue=total.pshuxue+head->shuxue;
 total.penglish=total.penglish+head->english;
 total.pchinese=total.pchinese+head->chinese;
 total.count=total.count+1;
}
class stutree              //二叉树类
{
 private:
 stunode *root,*newnode,*currnode,*parent;
 void print(stunode* temp);
 void zonghe(stunode* temp);
 int  ischild(stunode* pnode,stunode* childnode);  
 stunode* findnode(const int rid,stunode*& parentnode);
 public:
 stutree(void);
 void creattree(stunode *node);
 void prints(void);
 stunode* findnode(const int rid);
 void insertnode(stunode* temp);
 void pingjun(void);
 stunode* deletenode(int did);
 void deletetree(stunode* temp);
 ~stutree(void);
 
};
stutree::stutree(void)
{
       root=NULL;
       newnode=NULL;
   

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值