zoukankan      html  css  js  c++  java
  • 全班成绩录入系统

    #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);
    }
    

  • 相关阅读:
    Google File System(中文翻译)
    Hadoop学习之路一 Single Node Setup
    大数据建模比赛--金融市场板块划分和轮动规律研究.
    华中建模-人脸识别
    计算循环队列的元素个数
    低价租用高性能GPU进行深度学习
    vscode+PyQt+QtDesigner
    mask_rcnn(Keras+TensorFlow)环境搭建_新手向(毕业设计使用,亲测可用)
    博客园美化
    Task1 赛题理解
  • 原文地址:https://www.cnblogs.com/zztong/p/6695299.html
Copyright © 2011-2022 走看看