学生成绩管理系统c++

 #include<iostream.h>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<fstream.h>
#include<stdlib.h>
struct sstudent
{
 char namber[15];
 char name[10];
 float math;
 float chinese;
 float eglish;
 float computer;
 double pingjun;
 float hscore;
 sstudent *next;
};
class cstudent
{
 sstudent *head;
 sstudent *ss1;
 sstudent *ss2;
 sstudent *h1; 
 int i;
public:
 sstudent *h2;
 cstudent()
 {
  head=0;
  ss1=0;
  ss2=0;
  h1=0;
  h2=0;
 }
 double pj(sstudent *p1)
 {
  double a;
  a=(p1->math+p1->chinese+p1->eglish+p1->computer)/4;
  return a;
 }

 float hs(sstudent *p1)
 {
  float a=p1->math;
  if(a>=p1->chinese);
  else
   a=p1->chinese;
  if(a>=p1->eglish);
  else
   a=p1->eglish;
  if(a>=p1->computer);
  else
   a=p1->computer;
  return a;
 }

 void look1(sstudent *h1)
 {
  printf("学号         姓名      数学     语文     英语     计算机   平均        最好分");
  cout<<endl;
  printf("%-13s%-10s%-8f %-8f %-8f %-8f %-10lf %-8f/n",h1->namber,h1->name,h1->math,h1->chinese,h1->eglish,h1->computer,h1->pingjun,h1->hscore);
 }

 void look2()
 {
  int a=1;
  sstudent *p1=head;
  do
  {
   if(p1==0) a=0;
   else
   {
    look1(p1);
    p1=p1->next;
   }
  }
  while(a==1);
 }

 


 void built()
 {
  int a=0;
  do
  {
  ss1=new sstudent;
  ss1->next=0;
  if(head==0)
  {
   head=ss1;
   ss2=ss1;
  }
  else
  {
   ss2->next=ss1;
   ss2=ss1;
  }
  cout<<"输入学号:"<<endl;
  cin>>ss1->namber;
  cout<<"输入姓名:"<<endl;
  cin>>ss1->name;
  cout<<"输入数学成绩:"<<endl;
  cin>>ss1->math;
        cout<<"输入语文成绩:"<<endl;
  cin>>ss1->chinese;
     cout<<"输入英语成绩:"<<endl;
  cin>>ss1->eglish;
        cout<<"输入计算机成绩:"<<endl;
  cin>>ss1->computer;
  ss1->pingjun=pj(ss1);
  ss1->hscore=hs(ss1);
  cout<<"继续输入1,否则输入0;"<<endl;
  cin>>a;
  }
  while(a==1);
 }

 void save()
 {
  ofstream fout;
  sstudent *p=head;
  fout.open("c:student.txt",ios::out|ios::binary);
  if(!fout)
  {
   cout<<"Error:can't open student.txt!";
   exit(1);
  }
  while(fout&&p!=0)
  {
   fout.write((char*)&*p,sizeof(sstudent));
   p=p->next;
  }
  fout.close();
 }

 void o()
 {
  ifstream fin;
  sstudent *p1=0;
  sstudent *p2=0;
  fin.open ("c:student.txt",ios::in|ios::binary);
  if(!fin)
  {
   cout<<"Error:can't open student.txt!";
   exit(1);
  }
  p1=new sstudent;
  p2=p1;
  head=p1;
  fin.read ((char*)&*p1,sizeof(sstudent));
  while(fin&&p1->next!=0)
  {
   p1=new sstudent;
   p2->next=p1;
   p2=p1;
   fin.read ((char*)&*p1,sizeof(sstudent));
  }
  fin.close();
  look2();
 }


 void xx()
 {
  sstudent *p2,*p1=head;
     p2=new sstudent;
  int c=0,i;
  double sum[6]={0};
  while(p1!=0)
  {
   sum[0]=p1->math+sum[0];
            sum[1]=p1->chinese+sum[1];
            sum[2]=p1->eglish+sum[2];
      sum[3]=p1->computer+sum[3];
            sum[4]=p1->pingjun+sum[4];
            sum[5]=p1->hscore+sum[5];
   p1=p1->next;
   c++;
  }
  for(i=0;i<4;i++)
  p2->namber[i]='0';
        p2->namber[i+1]='/0';
  for(i=0;i<4;i++)
  p2->name[i]='0';
  p2->name[i+1]='/0';
        p2->math=(float)sum[0]/c;
  p2->chinese=(float)sum[1]/c;
  p2->eglish=(float)sum[2]/c;
  p2->computer=(float)sum[3]/c;
  p2->pingjun=(float)sum[4]/c;
  p2->hscore=(float)sum[5]/c;
        look1(p2);
 }

 


 int book()
 {
     h1=0;
     h2=0;
  char m[15];
  int a=0;
  cout<<"输入学号:"<<endl;
  cin>>m;
  do
  {
   if(h1==0)
   {
    if(head->next==0)
    {
     if(!strcmp(head->namber,m))
     {
      h2=head;
      a=1;
     }
     else
      a=2;
    }
    else
    {
        h1=head;
        h2=head->next;
        if(!strcmp(head->namber,m))
        {
       h2=head;
       a=1;
        }
        else ;
    }
   }
   else
   {
    if(!strcmp(h2->namber,m))
     a=1;
    else
    {
     if(h2->next==0)
      a=2;
     else
     {
      h1=h2;
      h2=h2->next;
     }
    }
   }
  }
  while(a==0);
  return a;
 } 
    
 
 void paixu()
 {
  sstudent *p1=head;
  sstudent *p2=head;
  sstudent *p3=head;
  sstudent *p4=head->next;
  sstudent *p5=0;
  do
  {
   if(p2==head)
   {
    if(p4!=0)
    {
     if(p2->pingjun-p4->pingjun==0||p2->pingjun-p4->pingjun>0)
     {
      p3=p3->next;
      p4=p4->next;
     }
     else
      {
      if(p2==p3)
      {
       head=p4;
       p5=p4->next;
       p4->next=p2;
       p2->next=p5;
       p1=head;
       p2=head;
       p3=head;
       p4=p3->next;
                            p3=p3->next;
          p4=p4->next;
      }
      else
      {
       head=p4;
          p5=p4->next;
          p4->next=p2->next;
          p2->next=p5;
          p3->next=p2;
       p1=head;
       p2=head;
                            p4=p3->next;
          p3=p3->next;
          p4=p4->next;
      }
      }
    }
     else
     {
      if(p2==p3)
       p2=p2->next;
      else
      {
     p2=p2->next;
     p3=p2;
     p4=p2->next;
      }
     }
   }
   else
   {
    if(p4!=0)
    {
     if(p2->pingjun-p4->pingjun==0||p2->pingjun-p4->pingjun>0)
     {
      p3=p3->next;
      p4=p4->next;
     }
     else
     {
                        if(p2->next==p4)
      {
       p1->next=p4;
       p5=p4->next;
       p4->next=p2;
       p2->next=p5;
       p2=p1->next;
       p3=p2;
       p4=p3->next;
                            p3=p3->next;
          p4=p4->next;
      }
      else
      {
      p5=p4->next;
      p4->next=p2->next;
      p2->next=p5;
                        p1->next=p4;
      p3->next=p2;
      p2=p1->next;
                        p4=p3->next;
      p3=p3->next;
      p4=p4->next;
      }
     }
    }
    else
    {
     if(p2==p3)
      p2=p2->next;
     else
     {
     p2=p2->next;
     p1=p1->next;
                    p3=p2;
     p4=p2->next;
     }
    }
   }
  }
  while(p2!=0);
  ss1=p3;
  ss2=p3;
  look2();
 }
 void brek()
  {
      int a;
   char s[4]="1";
   char ai[20]={0};
   char b[8][20]={{"学号"},{"姓名"},{"数学"},{"语文"},{"英语"},{"计算机"},{"平均成绩"},{"最好成级"}};
   a=book();
   if(a==2)
   {
    cout<<"无此项"<<endl;
    return;
   }
   look1(h2);
   cout<<"删除该项输入1,否则,输入许修改的项."<<endl;
    cin>>ai;
   if(!strcmp(ai,s))
   {
    if(head->next==0)
    {
                    delete head;
     head=0;
    }
    else
    {
        if(h2==head)
     {
       head=head->next;
                      delete h2;
     }
     else
     {
           if(h2->next==0)
        {
                         h1->next=h2->next;
          delete h2;
          ss1=h1;
          ss2=h1;
        }
           else
        {
           h1->next=h2->next;
        delete h2;
        }
     }
    }
    look2();
   }
   else
   {
    for(i=0;strcmp(b[i],ai)&& i!=8;i++);
    if(i==8);
    else
    {
    cout<<"输入新数据"<<endl;
    switch(i)
    {
    case 0:
     cin>>h2->namber;break;
    case 1:
     {
               cin>>h2->name;break;
     }
    case 2:
     {
                     cin>>h2->math;break;
     }
    case 3:
     {
               cin>>h2->chinese;break;
     }
    case 4:
     {
               cin>>h2->eglish;break;
     }
    case 5:
     {
              cin>>h2->computer;break;
     }
    case 6:
     {
              cin>>h2->pingjun;break;
     }
    case 7:
     {
              cin>>h2->hscore;break;
     }
    }
    h2->pingjun=pj(h2);
    h2->hscore=hs(h2);
   look1(h2);
    }
   }
  }
 };
 
 
 void main()
  {
   int u,x=0;
   int v=0;
   cstudent cs;
   do
   {
   cout<<"添加1,搜索2,输出3,删除或修改4,排序5,平均成绩6,保存7,打开文件8,推出9"<<endl;
   cin>>u;
   switch (u)
   {
   case 1: cs.built();break;
   case 2:
    {
     x=cs.book();
     if(x==1)
     {
          cs.look1(cs.h2);break;
     }
     else
     {
      cout<<"无此信息"<<endl;break;
     }
    }
   case 3:cs.look2();break;
   case 4:cs.brek();break;
   case 5:cs.paixu();break;
   case 6:cs.xx();break;
   case 7:cs.save ();break;
   case 8:cs.o();break;
   case 9:v=1;break;
   }
   }
   while(v!=1);
  }

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值