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

这是一个基于二叉树实现的学生成绩管理程序,包括插入、查找、删除和计算平均成绩的功能。程序定义了学生节点类`stunode`和二叉树类`stutree`,并提供了相应的成员函数来操作二叉树。通过输入学生的ID、姓名和三门成绩,可以创建、打印、查找、插入和删除学生信息,并能计算整个成绩表的平均成绩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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;
       currnode=NULL;
       parent=NULL;
}
void stutree::deletetree(stunode* temp)
{
    if(temp!=NULL)
    {
       deletetree(temp->returnleft()); 
       deletetree(temp->returnright());
       delete temp;       
   }
}
stutree::~stutree(void)
{
         deletetree(root);
}
void stutree::creattree(stunode *node)         //创建二叉树
{
&

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值