学籍管理系统.docx
- 文档编号:9256044
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:18
- 大小:18.48KB
学籍管理系统.docx
《学籍管理系统.docx》由会员分享,可在线阅读,更多相关《学籍管理系统.docx(18页珍藏版)》请在冰豆网上搜索。
学籍管理系统
#include
#include
#include
#include
#include
usingnamespacestd;
//结点类,用于存放学生的各种数据
classNode
{
public:
intid;//学号
stringname;//姓名
stringgrade;//等级
doubleenglish;//英语
doublemath;//数学
doublec;//C++
doublesum;//总分
doubleaverage;
Node*next;//指向下一结点的指针
Node(intnid=0,stringnname="noname",//构造函数,初始化变量
doublee=0,doublem=0,doublecl=0,
doubles=0,doublea=0,stringg="ng");
};
Node:
:
Node(intnid,stringnname,doublee,doublem,doublecl,doubles,doublea,stringg)
{
id=nid;
name=nname;
next=NULL;
english=e;
math=m;
c=cl;
sum=s;
average=a;
grade=g;
}
//classNode结束
//Link类,把数据以链表的形式存储,链表的每个结点为一个Node对象
classLink
{
private:
Node*head;//链表的头指针,为Node对象类型的指
public:
Link();//构造函数,初始化变量
boollinkIsEmpty();//判断链表是否为空
voidlinkInsert(Node*newnode);//向链表中插入新的结点
boollinkDelete(intnid);//从链表中删除的结点
voidlinkClear();//清空链表中数据
voidlinkView();//查看链表中数据
voidlinkGrade(Node*p1);//计算等级
voidlinkAverageTotle();//按平均分统计
Node*linkFind(intnid);//在链表中查找id为nid结点,返回指向该结点的指针
Node*getHead();//获取头指针
};
Link:
:
Link()
{//构造函数,初始化链表为空
head=NULL;
}
boolLink:
:
linkIsEmpty()
{//判断链表是否为空,空则返回true
return(head==NULL);
}
voidLink:
:
linkInsert(Node*newnode)
{//按id值从小到大的顺序,插入新的结点
Node*p1;
if(!
head)//链表为空的情况
head=newnode;
else
if((head->id)>(newnode->id))
{//插入到第一个结点的情况
newnode->next=head;
head=newnode;
}
else
{//插入到第二个及以后情况
p1=head;
while
(1)
{
if(!
(p1->next))
{
p1->next=newnode;
break;
}
else
if((p1->next)->id>newnode->id)
{
newnode->next=p1->next;
p1->next=newnode;
break;
}
p1=p1->next;
}
}
}
boolLink:
:
linkDelete(intnid)
{//删除结点,成功则返回true
Node*p;
if(head==NULL)//链表为空的情况
returnfalse;
if(head->id==nid){//删除的为第一个结点的情况
head=head->next;
returntrue;
}
p=head;
while(p->next)
{//删除的为第二个及以后结点的情况
if((p->next)->id==nid)
{
p->next=(p->next)->next;
returntrue;
}
p=p->next;
}
returnfalse;
}
voidLink:
:
linkClear()
{//清空链表
head=NULL;
}
voidLink:
:
linkView()
{//显示链表数据
Node*p=head;
cout< <<"数学"< while(p) { (p->sum)=(p->english)+(p->math)+(p->c);//计算总分 (p->average)=((p->english)+(p->math)+(p->c))/3;//计算平均成绩 linkGrade(p);//计算等级 cout< < < p=p->next; } } voidLink: : linkGrade(Node*p1) {//计算等级 while(p1) { if(p1->average>=90&&p1->average<=100) p1->grade="优"; elseif(p1->average>=80&&p1->average<90) p1->grade="良好"; elseif(p1->average>=70&&p1->average<80) p1->grade="中等"; elseif(p1->average>=60&&p1->average<=70) p1->grade="合格"; else p1->grade="不合格"; p1=p1->next; } } voidLink: : linkAverageTotle() {//按学生平均分统计 inta=0,b=0,c=0,d=0,e=0,f=0; doubleaveragesum=0,asum=0,aaverage=0,paverage=0; Node*p3=head; while(p3) { if(p3->average>=90&&p3->average<=100) a+=1; elseif(p3->average>=80&&p3->average<90) b+=1; elseif(p3->average>=70&&p3->average<80) c+=1; elseif(p3->average>=60&&p3->average<70) d+=1; else e+=1; asum+=p3->sum; aaverage+=p3->average; p3=p3->next; } f=a+b+c+d+e; averagesum=asum/f; paverage=aaverage/f; cout<<"|-------------------------------------------------------|"< cout<<"|总人数: "< cout<<"|-------------------------------------------------------|"< cout<<"|优人数: "<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学籍 管理 系统