您的位置:首页 > 编程语言 > C语言/C++

全班成绩录入系统

2016-04-21 12:52 344 查看
#include<fstream>
#include<string>
#include<iomanip>
using namespace std;
typedef struct node
{
string stunum,stuname;
int math,english,computer;
int averagescore;
node *next;
}*ptrn;
int length(ptrn &e)
{
int count=0;
ptrn te;
te=e;
while(1)
{
if(te==0)
{
break;
}
else
{
count++;
te=te->next;
}
}
return count;
}
void averagescorerank(ptrn &e)
{
for(int i=0;i<length(e);i++)
{
ptrn temm;
temm=e;
for(int j=0;j<length(e)-i-1;j++)
{
if(temm->averagescore<temm->next->averagescore)
{
string tem,temp;
int temath,temen,temco,temaverage;
tem=temm->next->stunum;
temp=temm->next->stuname;
temath=temm->next->math;
temen=temm->next->english;
temco=temm->next->computer;
temaverage=temm->next->averagescore;
temm->next->stunum=temm->stunum;
temm->next->stuname=temm->stuname;
temm->next->math=temm->math;
temm->next->english=temm->english;
temm->next->computer=temm->computer;
temm->next->averagescore=temm->averagescore;
temm->stunum=tem;
temm->stuname=temp;
temm->math=temath;
temm->english=temen;
temm->computer=temco;
temm->averagescore=temaverage;
}
temm=temm->next;
}
}
}
void mathrank(ptrn &e)
{

for(int i=0;i<length(e);i++)
{
ptrn temm;
temm=e;
for(int j=0;j<length(e)-i-1;j++)
{
if(temm->math<temm->next->math)
{
string tem,temp;
int temath,temen,temco,temaverage;
tem=temm->next->stunum;
temp=temm->next->stuname;
temath=temm->next->math;
temen=temm->next->english;
temco=temm->next->computer;
temaverage=temm->next->averagescore;
temm->next->stunum=temm->stunum;
temm->next->stuname=temm->stuname;
temm->next->math=temm->math;
temm->next->english=temm->english;
temm->next->computer=temm->computer;
temm->next->averagescore=temm->averagescore;
temm->stunum=tem;
temm->stuname=temp;
temm->math=temath;
temm->english=temen;
temm->computer=temco;
temm->averagescore=temaverage;
}
temm=temm->next;
}

}
}
void enlishrank(ptrn &e)
{
for(int i=0;i<length(e);i++)
{
ptrn temm;
temm=e;
for(int j=0;j<length(e)-i-1;j++)
{
if(temm->english<temm->next->english)
{
string tem,temp;
int temath,temen,temco,temaverage;
tem=temm->next->stunum;
temp=temm->next->stuname;
temath=temm->next->math;
temen=temm->next->english;
temco=temm->next->computer;
temaverage=temm->next->averagescore;
temm->next->stunum=temm->stunum;
temm->next->stuname=temm->stuname;
temm->next->math=temm->math;
temm->next->english=temm->english;
temm->next->computer=temm->computer;
temm->next->averagescore=temm->averagescore;
temm->stunum=tem;
temm->stuname=temp;
temm->math=temath;
temm->english=temen;
temm->computer=temco;
temm->averagescore=temaverage;
}
temm=temm->next;
}
}
}
void computerrank(ptrn &e)
{
for(int i=0;i<length(e);i++)
{
ptrn temm;
temm=e;
for(int j=0;j<length(e)-i-1;j++)
{
if(temm->computer<temm->next->computer)
{
string tem,temp;
int temath,temen,temco,temaverage;
tem=temm->next->stunum;
temp=temm->next->stuname;
temath=temm->next->math;
temen=temm->next->english;
temco=temm->next->computer;
temaverage=temm->next->averagescore;
temm->next->stunum=temm->stunum;
temm->next->stuname=temm->stuname;
temm->next->math=temm->math;
temm->next->english=temm->english;
temm->next->computer=temm->computer;
temm->next->averagescore=temm->averagescore;
temm->stunum=tem;
temm->stuname=temp;
temm->math=temath;
temm->english=temen;
temm->computer=temco;
temm->averagescore=temaverage;
}
temm=temm->next;
}
}
}
void section(ptrn &e)
{
ptrn tem;
tem=e;
int ms6=0,ms6_9=0,ms7_9=0,ms8_9=0,ms9=0,es6=0,es6_9=0,es7_9=0,es8_9=0,es9=0,cs6=0,cs6_9=0,cs7_9=0,cs8_9=0,cs9=0;
while(1)
{
if(tem!=0)
{
if(tem->math<60)ms6++;
if(tem->math>=60&&tem->math<=69)ms6_9++;
if(tem->math>=70&&tem->math<=79)ms7_9++;
if(tem->math>=80&&tem->math<=89)ms8_9++;
if(tem->math>=90)ms9++;
if(tem->english<60)es6++;
if(tem->english>=60&&tem->english<=69)es6_9++;
if(tem->english>=70&&tem->english<=79)es7_9++;
if(tem->english>=80&&tem->english<=89)es8_9++;
if(tem->english>=90)es9++;
if(tem->computer<60)cs6++;
if(tem->computer>=60&&tem->computer<=69)cs6_9++;
if(tem->computer>=70&&tem->computer<=79)cs7_9++;
if(tem->computer>=80&&tem->computer<=89)cs8_9++;
if(tem->computer>=90)cs9++;
tem=tem->next;
}
else
break;
}
cout<<std::left<<setw(20)<<"数学不及格人数为   :"<<std::right<<setw(5)<<ms6<<endl;
cout<<std::left<<setw(20)<<"60-69人数为        :"<<std::right<<setw(5)<<ms6_9<<endl;
cout<<std::left<<setw(20)<<"70-79人数为        :"<<std::right<<setw(5)<<ms7_9<<endl;
cout<<std::left<<setw(20)<<"80-89人数为        :"<<std::right<<setw(5)<<ms8_9<<endl;
cout<<std::left<<setw(20)<<"90以上人数为       :"<<std::right<<setw(5)<<ms9<<endl;
cout<<std::left<<setw(20)<<"英语不及格人数为   :"<<std::right<<setw(5)<<es6<<endl;
cout<<std::left<<setw(20)<<"60-69人数为        :"<<std::right<<setw(5)<<es6_9<<endl;
cout<<std::left<<setw(20)<<"70-79人数为        :"<<std::right<<setw(5)<<es7_9<<endl;
cout<<std::left<<setw(20)<<"80-89人数为        :"<<std::right<<setw(5)<<es8_9<<endl;
cout<<std::left<<setw(20)<<"90以上人数为       :"<<std::right<<setw(5)<<es9<<endl;
cout<<std::left<<setw(20)<<"计算机不及格人数为 :"<<std::right<<setw(5)<<cs6<<endl;
cout<<std::left<<setw(20)<<"60-69人数为        :"<<std::right<<setw(5)<<cs6_9<<endl;
cout<<std::left<<setw(20)<<"70-79人数为        :"<<std::right<<setw(5)<<cs7_9<<endl;
cout<<std::left<<setw(20)<<"80-89人数为        :"<<std::right<<setw(5)<<cs8_9<<endl;
cout<<std::left<<setw(20)<<"90以上人数为       :"<<std::right<<setw(5)<<cs9<<endl;
}
void serch(ptrn &e)
{
cout<<"             |       (1)学号查询         |"<<endl;
cout<<"             |       (2)姓名查询         |"<<endl;
cout<<"             |         请输入序号        |"<<endl;
cout<<"_______________________________________________________"<<endl;
int m;
cin>>m;
if(m==1)
{
cout<<"                  请输入学号"<<endl;
string ch1;
cin>>ch1;
ptrn temn;
temn=e;
while(1)
{
if(temn!=0&&temn->stunum==ch1)
{
cout<<"                    所查学生的信息如下"<<endl;
cout<<std::left<<setw(10)<<"学号"<<std::right<<setw(10)<<"姓--名"<<std::right<<setw(10)<<"数学"<<std::right<<setw(10)<<"英语"<<std::right<<setw(10)<<"计算机"<<endl;
cout<<std::left<<setw(10)<<temn->stunum<<std::right<<setw(10)<<temn->stuname<<std::right<<setw(10)<<temn->math<<std::right<<setw(10)<<temn->english<<std::right<<setw(10)<<temn->computer<<endl;break;
}
else if(temn!=0)
{
temn=temn->next;
}
else
{
break;
}

}
cout<<"______________________________________________________________"<<endl;
}
else
{
cout<<"                 请输入姓名"<<endl;
string ch2;
cin>>ch2;
ptrn temn;
temn=e;
while(1)
{
if(temn!=0&&temn->stuname==ch2)
{
cout<<"                所查学生的信息如下"<<endl;
cout<<std::left<<setw(10)<<"学号"<<std::right<<setw(10)<<"姓--名"<<std::right<<setw(10)<<"数学"<<std::right<<setw(10)<<"英语"<<std::right<<setw(10)<<"计算机"<<endl;
cout<<std::left<<setw(10)<<temn->stunum<<std::right<<setw(10)<<temn->stuname<<std::right<<setw(10)<<temn->math<<std::right<<setw(10)<<temn->english<<std::right<<setw(10)<<temn->computer<<endl;
break;
}
else if(temn!=0)
{
temn=temn->next;
}
else
{
break;
}

}
cout<<"______________________________________________________________"<<endl;
}
}
void main()
{

ptrn head,tem,newnode;
string stunum,stuname,math,english,computer;
ifstream inf("input.dat");
head=0;
int time=0,mathaverage=0,enaverage=0,coaverage=0,mathtop,entop,cotop,mathmin,enmin,comin;
while(!inf.eof())//*********************************************************
{

if(time==0)
{
time=1;                                                      //跳过文件第一行
ptrn newnode1=new node;
inf>>stunum>>stuname>>math>>english>>computer;
continue;
}//***********************************************************************
newnode=new node;
inf>>stunum>>stuname>>math>>english>>computer;
newnode->stunum=stunum;newnode->stuname=stuname;
newnode->math=atoi(math.c_str());//*****************************
newnode->english=atoi(english.c_str());                 //将字符串转换为数字
newnode->computer=atoi(computer.c_str());//********************
newnode->averagescore=(newnode->math+newnode->english+newnode->computer)/3;
if(head==0)
{
head=newnode;
tem=head;
}
else
{
tem->next=newnode;
tem=newnode;
}
}
if(head)tem->next=0;
inf.close();
ofstream ouf("averagerank.dat");
averagescorerank(head);
ouf<<"                  按照平均成绩排名由高到低为"<<endl;
ptrn tem1;
tem1=head;
while(1)
{
if(tem1!=0)
{
ouf<<tem1->stunum<<"     "<<tem1->stuname<<"     "<<tem1->averagescore<<endl;
tem1=tem1->next;
}
else
break;
}
ouf.close();
ofstream ouf1("mathrank.dat");
mathrank(head);
ouf1<<"                 按照数学成绩排名由高到低为"<<endl;
ptrn tem2;
tem2=head;
mathtop=head->math;
while(1)
{
if(tem2!=0)
{
ouf1<<tem2->stunum<<"  "<<tem2->stuname<<"  "<<tem2->math<<endl;
mathaverage+=tem2->math;
if(tem2->next==0)
{
mathmin=tem2->math;
}
tem2=tem2->next;
}
else
{
mathaverage=mathaverage/length(head);break;
}

}
ouf1.close();
ofstream ouf2("englishrank.dat");
enlishrank(head);
ouf2<<"                 按照英语成绩排名由高到低为"<<endl;
ptrn tem3;
tem3=head;
entop=head->english;
while(1)
{
if(tem3!=0)
{
ouf2<<tem3->stunum<<"  "<<tem3->stuname<<"  "<<tem3->english<<endl;
enaverage+=tem3->english;
if(tem3->next==0)
{
enmin=tem3->english;
}
tem3=tem3->next;
}
else
{
enaverage=enaverage/length(head);
break;
}
}
ouf2.close();
ofstream ouf3("computerrank.dat");
computerrank(head);
ouf3<<"                   按照计算机成绩排名由高到低为"<<endl;
ptrn tem4;
tem4=head;
cotop=head->computer;
while(1)
{
if(tem4!=0)
{
ouf3<<tem4->stunum<<"  "<<tem4->stuname<<"  "<<tem4->computer<<endl;
coaverage+=tem4->computer;
if(tem4->next==0)
{
comin=tem4->computer;
}
tem4=tem4->next;
}
else
{
coaverage=coaverage/length(head);
break;
}
}
ouf3.close();
cout<<std::left<<setw(20)<<"数学平均分为  :"<<std::right<<setw(5)<<mathaverage<<endl;
cout<<std::left<<setw(20)<<"英语平均分为  :"<<std::right<<setw(5)<<enaverage<<endl;
cout<<std::left<<setw(20)<<"计算机平均分为:"<<std::right<<setw(5)<<coaverage<<endl;
cout<<std::left<<setw(20)<<"数学最高分为  :"<<std::right<<setw(5)<<mathtop<<endl;
cout<<std::left<<setw(20)<<"英语最高分为  :"<<std::right<<setw(5)<<entop<<endl;
cout<<std::left<<setw(20)<<"计算机最高分为:"<<std::right<<setw(5)<<cotop<<endl;
section(head);
serch(head);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息