学籍管理系统Word格式.docx

上传人:b****8 文档编号:22392125 上传时间:2023-02-03 格式:DOCX 页数:18 大小:18.48KB
下载 相关 举报
学籍管理系统Word格式.docx_第1页
第1页 / 共18页
学籍管理系统Word格式.docx_第2页
第2页 / 共18页
学籍管理系统Word格式.docx_第3页
第3页 / 共18页
学籍管理系统Word格式.docx_第4页
第4页 / 共18页
学籍管理系统Word格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

学籍管理系统Word格式.docx

《学籍管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《学籍管理系统Word格式.docx(18页珍藏版)》请在冰豆网上搜索。

学籍管理系统Word格式.docx

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->

break;

}

p1=p1->

}

linkDelete(intnid)

{//删除结点,成功则返回true

Node*p;

if(head==NULL)//链表为空的情况

returnfalse;

if(head->

id==nid){//删除的为第一个结点的情况

head=head->

returntrue;

}

p=head;

while(p->

next)

{//删除的为第二个及以后结点的情况

if((p->

id==nid)

{

p->

next=(p->

returntrue;

p=p->

returnfalse;

linkClear()

{//清空链表

linkView()

{//显示链表数据

Node*p=head;

cout<

<

setw(10)<

"

学号"

setw(8)<

姓名"

英语"

setw(8)

<

数学"

C++"

总分"

平均分"

等级"

endl;

while(p)

{

(p->

sum)=(p->

english)+(p->

math)+(p->

c);

//计算总分

average)=((p->

c))/3;

//计算平均成绩

linkGrade(p);

cout<

p->

id<

name<

english

<

math<

c<

sum<

average<

grade<

}

linkGrade(Node*p1)

{//计算等级

while(p1)

if(p1->

average>

=90&

&

p1->

=100)

p1->

grade="

优"

;

elseif(p1->

=80&

90)

良好"

=70&

80)

中等"

=60&

=70)

合格"

else

不合格"

p1=p1->

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->

p3->

=100)

a+=1;

elseif(p3->

b+=1;

c+=1;

70)

d+=1;

e+=1;

asum+=p3->

sum;

aaverage+=p3->

average;

p3=p3->

f=a+b+c+d+e;

averagesum=asum/f;

paverage=aaverage/f;

|-------------------------------------------------------|"

|总人数:

f<

|优人数:

a<

|"

优秀率:

"

a*100/f<

%"

|良好的人数:

b<

良好率:

b*100/f<

|中等的人数:

中等率:

c*100/f<

|所有合格人数:

a+b+c+d<

合格率:

(a+b+c+d)*100/f<

|不合格数:

e<

不合格率:

e*100/f<

|总分的平均分:

averagesum<

所有科目的平均分:

paverage<

Node*Link:

linkFind(intnid)

{//查找id值为nid的结点,返回该结点的指针

//没找到符合条件的结点的话,返回的指针值为NULL

if(p->

id==nid)

break;

p=p->

returnp;

getHead()

returnhead;

//classLink结束

//类Student,用于包装Link类及菜单操作

classStudent

Linkslink;

//Link对象成员

boolk;

//记录数据是否被修改

Student();

voidstudentClear();

voidstudentInsert();

voidstudentDelete();

voidstudentFind();

voidstudentView();

voidstudentLoad();

voidstudentSave();

voidstudentAverageTotle();

//按平均分数统计等级

voidExit();

//退出程序

voidshowMenu();

//显示菜单

voidshowTip();

//显示操作提示

voiddoMenu(charn);

//执行相应菜单项功能

Student:

Student()

//调用成员对象的构造函数

studentLoad();

//从文件中读取数据,创建链表

k=false;

//设置数据被修改

voidStudent:

studentClear()

{//清空学生记录

slink.linkClear();

成功清空学生记录!

studentInsert()

{//插入学生记录

Node*p=newNode();

请输入学号:

cin>

>

id;

请输入姓名:

name;

slink.linkFind(p->

{//判断学号是否存在

slink.linkInsert(p);

k=true;

{cout<

学号为"

的学生已存在,插入失败!

return;

请输入成绩:

英语:

english;

数学:

math;

C++:

c;

(p->

//计算平均成绩

studentDelete()

{//删除学生记录

inti;

if(slink.linkIsEmpty())//链表为空的情况

没有学生记录!

else

cin>

i;

if(slink.linkDelete(i))

cout<

成功删除学号为"

i<

的学生记录!

k=true;

没有找到学号为"

的学生!

studentFind()

{//查找某学号的学生记录

intn;

请输入要查找的学号:

n;

p=slink.linkFind(n);

//获得找到的结点的指针

if(p)

{//指针值不为NULL时

(p->

slink.linkGrade(p);

setw(6)<

<

average

else//指针值为NULL时

n<

studentView()

{//显示所有学生的记录

if(slink.linkIsEmpty())

slink.linkView();

studentLoad()

{//从文件中读入数据,创建链表

intnid;

ifstreaminfile("

data.txt"

infile)

cerr<

错误:

数据文件不能打开!

\n"

while(infile>

nid)

{//读取学号,直到读空

p=newNode();

id=nid;

infile>

name>

english>

math>

c>

sum>

grade;

//读取姓名

slink.linkInsert(p);

infile.close();

//关闭文件

studentSave()

{//将数据保存到文件

Node*p=slink.getHead();

ofstreamoutfile("

outfile)

while(p)

outfile<

'

'

english<

k=false;

保存成功!

studentAverageTotle()

slink.linkAverageTotle();

Exit()

chars='

Y'

if(k)

{//判断数据是否修改

数据已经改变,是否保存?

(y/n):

s;

if(s=='

y'

||s=='

studentSave();

已安全退出,"

system("

pause"

exit(0);

showMenu()

|------------------------------------------------|"

|学生信息管理系统|"

|1.清空:

清除所有学生数据|"

|2.添加:

插入一条学生数据|"

|3.删除:

删除指定学生数据|"

|4.查找:

查找指定学生数据|"

|5.显示:

显示所有学生数据|"

|6.保存:

保存所有学生数据|"

|7.统计:

按学生平均分统计|"

|0.退出:

安全的退出本系统|"

endl<

showTip()

-------------------操作完成---------------------"

-----------------选择0-7继续-------------------"

请选择:

doMenu(charn)

switch(n)

ca

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

当前位置:首页 > 高等教育 > 院校资料

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

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