c++课程设计

//学生类:#ifndef H_STUDENT_H_NNN
#define H_STUDENT_H_NNN
#include<iostream>
#include<string.h>
#include<string>
using namespace std;
class Student{
        protected:
             string  name;
             string sex;
             string phone;
             string  id;
             long num;
             int x,y,z,AA;
     public:
       virtual void dispaly()
       {cout<<name<<sex<<phone<<num<<x<<y<<z<<AA<<endl;}
       Student(string sname,string ssex,string sphone,long snum,int sx,int sy,int sz)
       { name=sname;
         sex=ssex;
         phone=sphone;
         num=snum;
         x=sx;
         y=sy;
         z=sz;
       }
       Student() {}
       ~Student() {}
       
};
#endif
//本科生#ifndef H_COLLEGE_H_NNN
#define H_COLLEGE_H_NNN
#include"Student.h"
#include<iostream>
#include<string.h>
#include<string>
using namespace std;
class College:public Student{
       protected:
     string id;
     public:
     College  *next;
     string subject;
     void display();
     friend ostream& operator<<(ostream&,const College&);
     friend istream& operator>>(istream&,College&);
     College () {}
     ~College() {}
   College(string sname,string ssex,string sphone,string ssubject,long snum,int sx,int sy,int sz ):Student( sname, ssex, sphone, snum,sx, sy, sz)
   { id="undergraduate";
    subject=ssubject;
   }
   College(College &a):Student( a.name, a.sex, a.phone, a.num,a.x, a.y, a.z)
   {  this->id=a.id;
       this->subject=a.subject; 
   }
   
   friend class Clas;
} ;
#endif
//研究生类:#ifndef H_GRADUATE_H_NNN
#define H_GRADUATE_H_NNN
#include"Student.h"
class Graduate:public Student{
      protected:
        string  id;
        public:
        Graduate  *next;
        string  subject;
       void display();
     Graduate () {}
     ~Graduate() {}
      friend ostream& operator<<(ostream&,const Graduate&);
      friend istream& operator>>(istream&,Graduate&);
   Graduate(string sname,string ssex,string sphone,string ssubject,long snum,int sx,int sy,int sz ):Student( sname, ssex, sphone, snum,sx, sy, sz)
   { id="graduate";
    subject=ssubject;
   }
   Graduate(Graduate &a):Student( a.name, a.sex, a.phone, a.num,a.x, a.y, a.z)
   {  this->id=a.id;
       this->subject=a.subject; 
   }
   friend class Clas;
};
#endif
//管理学生信息类:#ifndef H_CLASS_H_NNN
#define H_CLASS_H_NNN
#include<iostream>
#include"College.h"
#include"Graduate.h"
#include<string.h>
#include<string>
using namespace std;
class Clas{ 
      private:
        College *Col;
        Graduate *Gra;
        static string password;
        public:
          Clas()
          {  Col=0;
             Gra=0;
             sload();
          }
          ~Clas()
          {    College *p;
               p=Col;
               while(p)
               { p=p->next;
                 delete Col;
                 Col=p;
                }
                Col=0;
                Graduate *p1;
               p1=Gra;
               while(p1)
               { p1=p1->next;
                 delete Gra;
                 Gra=p1;
                }
                Gra=0;
          }
        string getpassword()
        {return password;}
        void menuselect();//菜单
        void sadd(); //添加 
        void sremove(); // 删除 
        void samend(); // 修改 
        void ssearch(); // 查询 
        void staxis();  // 排序 
        void ssave(); //保存 
        void  sload();//读取 
        //排序函数 
        void pxh();
        void psx();
        void pyw();
        void pyy();
        void pAA();
       
};
#endif
//本科生类.cpp
#include"College.h"
#include"Student.h"
#include<string.h>
#include<string>
#include<iostream>
using namespace std;
void College::display()
{cout<<"学位"<<id<<"姓名"<<name<<"性别"<<sex<<"学号"<<num<<"专业"<<subject<<"数学"<<x<<"计算机 "<<y<<" 英语"<<z<<"总分"<<AA<<endl;}
istream& operator>>(istream& in,College& right)
{in>>right.name>>right.sex>>right.phone>>right.subject>>right.num>>right.x>>right.y>>right.z;
 return in;
}
ostream& operator<<(ostream& out,const College& right)
{  cout<<"学历  "<<"姓名  "<<" 性别 "<<"专业  "<<"学号  "<<" 数学成绩 "<<" 计算机成绩 "<<"英语成绩  "<<"总成绩"<<endl; 
 out<<right.id<<"  "<<right.name<<"  "<<right.sex<<"  "<<right.subject<<" "<<right.num<<"  "<<right.x<<"  "<<right.y<<"  "<<right.z<<"  "<<right.AA<<endl;
 return out;
}
//研究生类.cpp
#include"Graduate.h"
#include"Student.h"
#include<string.h>
#include<string>
#include<iostream>
using namespace std;
void Graduate::display()
{cout<<"学位"<<id<<"姓名"<<name<<"性别"<<sex<<"学号"<<num<<"专业"<<subject<<"数学"<<x<<"计算机 "<<y<<" 英语"<<z<<"总分"<<AA<<endl;}
 istream& operator>>(istream& in,Graduate& right)
{in>>right.name>>right.sex>>right.phone>>right.subject>>right.num>>right.x>>right.y>>right.z;
 return in;
}
ostream& operator<<(ostream& out,const Graduate& right)
{out<<right.id<<" "<<right.name<<" "<<right.sex<<" "<<right.subject<<" "<<right.num<<" "<<right.x<<" "<<right.y<<" "<<right.z<<""<<right.AA<<endl;
 return out;
}
//学生信息管理类.cpp
#include"Clas.h"
#include<iostream>
#include<string.h>
#include<string>
#include<fstream>
#include<iomanip>
using namespace std;
//增加学生信息 
string Clas::password="123456";
void Clas::sadd()
{ system("cls");
  cout<<"\n** 增加学生的信息**\n"<<endl;
  cout<<"请输入增加学生信息的类型"<<endl;
  cout<<"1.增加本科生的信息"<<endl;
  cout<<"2.增加研究生的信息"<<endl;
  cout<<"3.返回"<<endl;
  char c;cin>>c;
  cout<<"请输入数据\n"<<endl;
  if(c=='3') return ;
  string sname,ssex,sphone,ssubject;
  long snum;
  int sx,sy,sz;
  cout<<"姓名"<<"  "<<"性别"<<"  "<<"电话"<<"  "<<"专业"<<" "<<"学号 "<<" 数学成绩"<<" "<<"计算机成绩"<<"  "<<"英语成绩"<<endl;  
  //cin>>sname>>ssex>>sphone>>ssubject>>snum>>sx>>sy>>sz;
  if(c=='1') {  College d,*q;
                cin>>d;
                q=new College(d);
                q->AA=d.x+d.y+d.z ;
             //q=new College(sname,ssex,sphone,ssubject,snum,sx,sy,sz);
              //q->AA=sx+sy+sz;
              q->next=0;
              if(Col)
              { College *t;
                t=Col;
               if(t->num==snum)
               { cout<<"学号已经存在,请重新输入"<<endl;
                return;
               }
               while(t->next)
               {  if(t->num==snum)
                 { cout<<"学号已经存在,请重新输入"<<endl;
                   return;
                 }
                 t=t->next;
                }
                t->next=q;
               }
               else Col=q;
            cout<<"输入完毕!"<<endl;return;   
    }
     else if(c=='2'){
              Graduate *q,d;
               cin>>d;
               q=new Graduate(d);
              //q=new Graduate(sname,ssex,sphone,ssubject,snum,sx,sy,sz);
              q->AA=d.x+d.y+d.z;
              q->next=0;
              if(Gra)
              { Graduate *t;
                t=Gra;
               if(t->num==snum)
               { cout<<"学号已经存在,请重新输入"<<endl;
                return;
               }
               while(t->next)
               {  if(t->num==snum)
                 { cout<<"学号已经存在,请重新输入"<<endl;
                   return;
                 }
                 t=t->next;
               }
                t->next=q; 
               }
               else Gra=q;
            cout<<"输入完毕!"<<endl;return;   
    }
     
    
} 
//删除学生信息 
void Clas::sremove()
{ system("cls");
  cout<<"\n** 删除学生的信息**\n"<<endl;
  int num1;
  cout<<"请输入要删除学生的学号"<<endl;
  cin>>num1;
  cout<<"请输入要删除学生信息的类型"<<endl;
  cout<<"1.删除本科生的信息"<<endl;
  cout<<"2.删除研究生的信息"<<endl;
  cout<<"3.返回"<<endl;
  char c;cin>>c;
  if(c=='3') return ;
  if(c=='1') {   College *p1,*p2;
                 p1=Col;
                 while(p1)
                 { if(p1->num==num1)
                     break;
                     else{ p2=p1;
                           p1=p1->next;
                          }
                 }
                 if(p1!=NULL)
                 { p1->display();
                   cout<<"确定要删除吗?[Y/N]"<<endl;
                   char ch;cin>>ch;
                   if(toupper(ch)!='Y') return;
                   if(p1==Col)
                   { Col=p1->next;
                     delete p1;
                    }
                    else { p2->next=p1->next;
                            delete p1;
                         }
         cout<<"找到学号为"<<num1<<"的本科生,并删除\n ";
                    
                    }
                 else cout<<"没有找到要删除本科生的信息\n";
             }
  else if(c=='2') {   Graduate *p1,*p2;
                 p1=Gra;
                 while(p1)
                 { if(p1->num==num1)
                     break;
                     else{ p2=p1;
                           p1=p1->next;
                          }
                 }
                 if(p1!=NULL)
                 { p1->display();
                   cout<<"确定要删除吗?[Y/N]"<<endl;
                   char ch;cin>>ch;
                   if(toupper(ch)!='Y') return;
                   if(p1==Gra)
                   { Gra=p1->next;
                     delete p1;
                    }
                    else { p2->next=p1->next;
                            delete p1;
                         }
                    cout<<"找到学号为"<<num1<<"的研究生的信息,并删除\n ";
                    }
                 else cout<<"没有找到要删除研究生的信息\n";
             }
     
       cout<<"删除完毕!"<<endl;
       return;
} 
void Clas::samend()
{ system("cls");
  cout<<"\n** 修改学生的信息**\n"<<endl;
  int num1;
  cout<<"请输入要修改学生的学号"<<endl;
  cin>>num1;
  cout<<"请输入要修改学生信息的类型"<<endl;
  cout<<"1.修改本科生的信息"<<endl;
  cout<<"2.修改研究生的信息"<<endl;
  cout<<"3.返回"<<endl;
  char c;cin>>c;
  if(c=='1') {  College *p1,*p2;
              p1=Col;
               while(p1)
               { if(p1->num==num1) break;
                  else { p2=p1;
                        p1=p1->next;
                       }
               } 
           if(p1!=NULL)
           {  cout<<"学号是"<<num1<<"本科生的信息"<<endl;
              cout<<"姓名"<<p1->name<<"性别"<<p1->sex<<"电话"<<p1->phone<<"专业"<<p1->subject<<"数学"<<p1->x<<"计算机 "<<p1->y<<"英语 "<<p1->z<<endl;
              cout<<"请输入要修改的信息,姓名,学号,数学,计算机,英语成绩"<<endl;
              cin>>p1->name>>p1->num>>p1->x>>p1->y>>p1->z;
              p1->AA=p1->x+p1->y+p1->z;
              cout<<"修改成功"<<endl;
           } 
           else{  cout<<"未找到\n";}
          
        } 
        if(c=='2') {  Graduate *p1,*p2;
              p1=Gra;
               while(p1)
               { if(p1->num==num1) break;
                  else { p2=p1;
                        p1=p1->next;
                       }
               } 
           if(p1!=NULL)
           {  cout<<"学号是"<<num1<<"研究生的信息"<<endl;
              cout<<"姓名"<<p1->name<<"性别"<<p1->sex<<"电话"<<p1->phone<<"专业"<<p1->subject<<"数学 "<<p1->x<<"计算机 "<<p1->y<<"英语 "<<p1->z<<endl;
              cout<<"请输入要修改的信息,姓名,学号,数学,计算机,英语成绩"<<endl;
              cin>>p1->name>>p1->num>>p1->x>>p1->y>>p1->z;
              p1->AA=p1->x+p1->y+p1->z;
              cout<<"修改成功"<<endl;
           } 
           else{  cout<<"未找到\n";}
        } 
   if(c=='3')return;
}
void Clas::ssearch()
{  system("cls");
  cout<<"\n** 查找学生的信息**\n"<<endl;
  cout<<"请输入查找学生信息的类型"<<endl;
  cout<<"1.查找本科生的信息"<<endl;
  cout<<"2.查找研究生的信息"<<endl;
  cout<<"3.返回"<<endl;
  char c;cin>>c;
  if(c=='3')return;
  cout<<"输入查询方式"<<endl;
  cout<<"1.按学号查询"<<endl;
  cout<<"2.按姓名查找"<<endl;
  cout<<"3.返回"<<endl; 
  char ch;cin>>ch;
  switch(ch)
  {  case '1':
          {if(c=='1'){  College *p1,*p2;
                        p1=Col;
                     long num1;
           cout<<"请输入要查询的学号"<<endl;
           cin>>num1;
           while(p1)
           { if(p1->num==num1)
                break;
             else{ p2=p1;
                   p1=p1->next;
                 }
           }
           if(p1!=NULL)
           {  cout<<"学号为"<<num1<<"本科生的信息"<<endl; 
             cout<<"姓名"<<p1->name<<"性别"<<p1->sex<<"电话"<<p1->phone<<"专业"<<p1->subject<<"数学 "<<p1->x<<"计算机 "<<p1->y<<"英语 "<<p1->z<<endl;
              cout<<"查询完毕。。。。"<<endl;
            }
            else cout<<"没有查找到!"<<endl;
          }
          if(c=='2')
          {   Graduate *p1,*p2;
                    p1=Gra;
                     long num1;
           cout<<"请输入要查询的学号"<<endl;
           cin>>num1;
           while(p1)
           { if(p1->num==num1)
                break;
             else{ p2=p1;
                   p1=p1->next;
                 }
           }
           if(p1!=NULL)
           {  cout<<"学号为"<<num1<<"研究生的信息"<<endl; 
             cout<<"姓名"<<p1->name<<"性别"<<p1->sex<<"电话"<<p1->phone<<"专业"<<p1->subject<<"数学 "<<p1->x<<"计算机 "<<p1->y<<"英语 "<<p1->z<<endl;
              cout<<"查询完毕。。。。"<<endl;
           }
            else cout<<"没有查找到!"<<endl;
          }
          break;
     }
  case '2':
       {  if(c=='1'){  College *p1,*p2;
                        p1=Col;
                     string sname;
           cout<<"请输入要查询的姓名"<<endl;
           cin>>sname;
           while(p1)
           { if(p1->name==sname)
                break;
             else{ p2=p1;
                   p1=p1->next;
                 }
           }
           if(p1!=NULL)
           {  cout<<"姓名为"<<sname<<"本科生的信息"<<endl; 
             cout<<"学号"<<p1->num<<"性别"<<p1->sex<<"电话"<<p1->phone<<"专业"<<p1->subject<<"数学 "<<p1->x<<"计算机 "<<p1->y<<"英语 "<<p1->z<<endl;
              cout<<"查询完毕。。。。"<<endl;
            }
            else cout<<"没有查找到!"<<endl;
          }
          if(c=='2')
          {   Graduate *p1,*p2;
                        p1=Gra;
                     string sname;
           cout<<"请输入要查询的姓名"<<endl;
           cin>>sname;
           while(p1)
           { if(p1->name==sname)
                break;
             else{ p2=p1;
                   p1=p1->next;
                 }
           }
           if(p1!=NULL)
           {  cout<<"姓名为"<<sname<<"研究生的信息"<<endl; 
             cout<<"学号"<<p1->num<<"性别"<<p1->sex<<"电话"<<p1->phone<<"专业"<<p1->subject<<"数学 "<<p1->x<<"计算机 "<<p1->y<<"英语 "<<p1->z<<endl;
              cout<<"查询完毕。。。。"<<endl;
           }
            else cout<<"没有查找到!"<<endl;
          }
          break;
          } 
          case '3':return;     
   }
}
// 按学号进行排序 
  void Clas::pxh()
  {  system("cls");
  cout<<"\n** 按学号对学生的信息进行排序**\n"<<endl;
  cout<<"选择排序类型"<<endl;
  cout<<"1.对本科生进行排序"<<endl;
  cout<<"2.对研究生进行排序"<<endl;
  cout<<"3.返回"<<endl; 
  char ch;cin>>ch;
  if(ch=='3')return;
  if(ch=='1'){
      College *p1,*p2;
      p1=Col;
  if(!p1) {cout<<"还没有存入信息,请存入信息后再进行操作。。。。\n";return;} 
      int n=1,i;
     while(p1->next)
     {  n++;p1=p1->next;}
     cout<<"共有"<<n<<"条信息。。。"<<endl;
     p1=Col;
     for( i=1;i<n;++i)
     {  p1=Col;
        if(p1->num>p1->next->num)
        {  p2=p1->next;
           p1->next=p1->next->next;
           p2->next=p1;
           Col=p2;
        }
        p1=Col;
        while(p1->next->next)
        { p2=p1;
          p1=p1->next;
          if(p1->num>p1->next->num)
          { p2->next=p1->next;
            p1->next=p1->next->next;
            p2->next->next=p1;
            p1=p2->next;
           }
         }
        }
        p1=Col;
        do{   College d;
               d=*p1;
             //p1->display();
             cout<<d;
            p1=p1->next;
          }while(p1);
         }
  else if(ch=='2'){  Graduate *p1,*p2;
     p1=Gra;
     if(!p1) {cout<<"还没有存入信息,请存入信息后再进行操作。。。。\n";return;} 
     int n=1,i;
     while(p1->next)
     {  n++;p1=p1->next;}
     cout<<"共有"<<n<<"条信息。。。"<<endl;
     p1=Gra;
     for( i=1;i<n;++i)
     {  p1=Gra;
        if(p1->num>p1->next->num)
        {  p2=p1->next;
           p1->next=p1->next->next;
           p2->next=p1;
           Gra=p2;
        }
        p1=Gra;
        while(p1->next->next)
        { p2=p1;
          p1=p1->next;
          if(p1->num>p1->next->num)
          { p2->next=p1->next;
            p1->next=p1->next->next;
            p2->next->next=p1;
            p1=p2->next;
           }
         }
        }
        p1=Gra;
        do{  
            p1->display();
            p1=p1->next;
          }while(p1);
       }
       cout<<"排序完毕.....\n";return;
}
 //按数学成绩进行排序 
  void Clas::psx()
{   system("cls");
  cout<<"\n** 按成绩对学生的信息进行排序**\n"<<endl;
  cout<<"选择排序类型"<<endl;
  cout<<"1.对本科生进行排序"<<endl;
  cout<<"2.对研究生进行排序"<<endl;
  cout<<"3.返回"<<endl; 
  char ch;cin>>ch;
  if(ch=='3')return;
  if(ch=='1'){
      College *p1,*p2;
      p1=Col;
  if(!p1) {cout<<"还没有存入信息,请存入信息后再进行操作。。。。\n";return;} 
      int n=1,i;
     while(p1->next)
     {  n++;p1=p1->next;}
     cout<<"共有"<<n<<"条信息。。。"<<endl;
     p1=Col;
     for( i=1;i<n;++i)
     {  p1=Col;
        if(p1->x>p1->next->x)
        {  p2=p1->next;
           p1->next=p1->next->next;
           p2->next=p1;
           Col=p2;
        }
        p1=Col;
        while(p1->next->next)
        { p2=p1;
          p1=p1->next;
          if(p1->x>p1->next->x)
          { p2->next=p1->next;
            p1->next=p1->next->next;
            p2->next->next=p1;
            p1=p2->next;
           }
         }
        }
        p1=Col;
        do{ 
             p1->display();
            p1=p1->next;
          }while(p1);
         }
  else if(ch=='2'){  Graduate *p1,*p2;
     p1=Gra;
     if(!p1) {cout<<"还没有存入信息,请存入信息后再进行操作。。。。\n";return;} 
     int n=1,i;
     while(p1->next)
     {  n++;p1=p1->next;}
     cout<<"共有"<<n<<"条信息。。。"<<endl;
     p1=Gra;
     for( i=1;i<n;++i)
     {  p1=Gra;
        if(p1->x>p1->next->x)
        {  p2=p1->next;
           p1->next=p1->next->next;
           p2->next=p1;
           Gra=p2;
        }
        p1=Gra;
        while(p1->next->next)
        { p2=p1;
          p1=p1->next;
          if(p1->x>p1->next->x)
          { p2->next=p1->next;
            p1->next=p1->next->next;
            p2->next->next=p1;
            p1=p2->next;
           }
         }
        }
        p1=Gra;
        do{ 
             p1->display();
            p1=p1->next;
          }while(p1);
       }
       cout<<"排序完毕.....\n";return;
     }
//按计算机成绩进行排序 
void Clas::pyw()
{ system("cls");
  cout<<"\n** 按计算机成绩对学生的信息进行排序**\n"<<endl;
  cout<<"选择排序类型"<<endl;
  cout<<"1.对本科生进行排序"<<endl;
  cout<<"2.对研究生进行排序"<<endl;
  cout<<"3.返回"<<endl; 
  char ch;cin>>ch;
  if(ch=='3')return;
  if(ch=='1'){
      College *p1,*p2;
      p1=Col;
  if(!p1) {cout<<"还没有存入信息,请存入信息后再进行操作。。。。\n";return;} 
      int n=1,i;
     while(p1->next)
     {  n++;p1=p1->next;}
     cout<<"共有"<<n<<"条信息。。。"<<endl;
     p1=Col;
     for( i=1;i<n;++i)
     {  p1=Col;
        if(p1->y>p1->next->y)
        {  p2=p1->next;
           p1->next=p1->next->next;
           p2->next=p1;
           Col=p2;
        }
        p1=Col;
        while(p1->next->next)
        { p2=p1;
          p1=p1->next;
          if(p1->y>p1->next->y)
          { p2->next=p1->next;
            p1->next=p1->next->next;
            p2->next->next=p1;
            p1=p2->next;
           }
         }
        }
        p1=Col;
        do{  
             p1->display();
            p1=p1->next;
          }while(p1);
         }
  else if(ch=='2'){  Graduate *p1,*p2;
     p1=Gra;
     if(!p1) {cout<<"还没有存入信息,请存入信息后再进行操作。。。。\n";return;} 
     int n=1,i;
     while(p1->next)
     {  n++;p1=p1->next;}
     cout<<"共有"<<n<<"条信息。。。"<<endl;
     p1=Gra;
     for( i=1;i<n;++i)
     {  p1=Gra;
        if(p1->y>p1->next->y)
        {  p2=p1->next;
           p1->next=p1->next->next;
           p2->next=p1;
           Gra=p2;
        }
        p1=Gra;
        while(p1->next->next)
        { p2=p1;
          p1=p1->next;
          if(p1->y>p1->next->y)
          { p2->next=p1->next;
            p1->next=p1->next->next;
            p2->next->next=p1;
            p1=p2->next;
           }
         }
        }
        p1=Gra;
        do{ 
             p1->display();
            p1=p1->next;
          }while(p1);
       }
       cout<<"排序完毕.....\n";return;
     } 
//按英语成绩进行排序 
void Clas::pyy()
{   system("cls");
  cout<<"\n** 按英语成绩对学生的信息进行排序**\n"<<endl;
  cout<<"选择排序类型"<<endl;
  cout<<"1.对本科生进行排序"<<endl;
  cout<<"2.对研究生进行排序"<<endl;
  cout<<"3.返回"<<endl; 
  char ch;cin>>ch;
  if(ch=='3')return;
  if(ch=='1'){
      College *p1,*p2;
      p1=Col;
  if(!p1) {cout<<"还没有存入信息,请存入信息后再进行操作。。。。\n";return;} 
      int n=1,i;
     while(p1->next)
     {  n++;p1=p1->next;}
     cout<<"共有"<<n<<"条信息。。。"<<endl;
     p1=Col;
     for( i=1;i<n;++i)
     {  p1=Col;
        if(p1->z>p1->next->z)
        {  p2=p1->next;
           p1->next=p1->next->next;
           p2->next=p1;
           Col=p2;
        }
        p1=Col;
        while(p1->next->next)
        { p2=p1;
          p1=p1->next;
          if(p1->z>p1->next->z)
          { p2->next=p1->next;
            p1->next=p1->next->next;
            p2->next->next=p1;
            p1=p2->next;
           }
         }
        }
        p1=Col;
        do{ 
             p1->display();
            p1=p1->next;
          }while(p1);
         }
  else if(ch=='2'){  Graduate *p1,*p2;
     p1=Gra;
     if(!p1) {cout<<"还没有存入信息,请存入信息后再进行操作。。。。\n";return;} 
     int n=1,i;
     while(p1->next)
     {  n++;p1=p1->next;}
     cout<<"共有"<<n<<"条信息。。。"<<endl;
     p1=Gra;
     for( i=1;i<n;++i)
     {  p1=Gra;
        if(p1->z>p1->next->z)
        {  p2=p1->next;
           p1->next=p1->next->next;
           p2->next=p1;
           Gra=p2;
        }
        p1=Gra;
        while(p1->next->next)
        { p2=p1;
          p1=p1->next;
          if(p1->z>p1->next->z)
          { p2->next=p1->next;
            p1->next=p1->next->next;
            p2->next->next=p1;
            p1=p2->next;
           }
         }
        }
        p1=Gra;
        do{ 
             p1->display();
            p1=p1->next;
          }while(p1);
       }
       cout<<"排序完毕.....\n";return;
     }
     //按总成绩进行排序 
void Clas::pAA()
{  system("cls");
  cout<<"\n** 按总成绩对学生的信息进行排序**\n"<<endl;
  cout<<"选择排序类型"<<endl;
  cout<<"1.对本科生进行排序"<<endl;
  cout<<"2.对研究生进行排序"<<endl;
  cout<<"3.返回"<<endl; 
  char ch;cin>>ch;
  if(ch=='3')return;
  if(ch=='1'){
      College *p1,*p2;
      p1=Col;
  if(!p1) {cout<<"还没有存入信息,请存入信息后再进行操作。。。。\n";return;} 
      int n=1,i;
     while(p1->next)
     {  n++;p1=p1->next;}
     cout<<"共有"<<n<<"条信息。。。"<<endl;
     p1=Col;
     for( i=1;i<n;++i)
     {  p1=Col;
        if(p1->AA>p1->next->AA)
        {  p2=p1->next;
           p1->next=p1->next->next;
           p2->next=p1;
           Col=p2;
        }
        p1=Col;
        while(p1->next->next)
        { p2=p1;
          p1=p1->next;
          if(p1->AA>p1->next->AA)
          { p2->next=p1->next;
            p1->next=p1->next->next;
            p2->next->next=p1;
            p1=p2->next;
           }
         }
        }
        p1=Col;
        do{ 
             p1->display();
            p1=p1->next;
          }while(p1);
         }
  else if(ch=='2'){  Graduate *p1,*p2;
     p1=Gra;
     if(!p1) {cout<<"还没有存入信息,请存入信息后再进行操作。。。。\n";return;} 
     int n=1,i;
     while(p1->next)
     {  n++;p1=p1->next;}
     cout<<"共有"<<n<<"条信息。。。"<<endl;
     p1=Gra;
     for( i=1;i<n;++i)
     {  p1=Gra;
        if(p1->AA>p1->next->AA)
        {  p2=p1->next;
           p1->next=p1->next->next;
           p2->next=p1;
           Gra=p2;
        }
        p1=Gra;
        while(p1->next->next)
        { p2=p1;
          p1=p1->next;
          if(p1->AA>p1->next->AA)
          { p2->next=p1->next;
            p1->next=p1->next->next;
            p2->next->next=p1;
            p1=p2->next;
           }
         }
        }
        p1=Gra;
        do{ 
             p1->display();
            p1=p1->next;
          }while(p1);
       }
       cout<<"排序完毕.....\n";return;
     }
   
void Clas::staxis()
{ system("cls");
  char c;
  cout<<"请选择以何种方式排序:"<<endl;
  cout<<"1......以学号方式排序"<<endl;
  cout<<"2......以数学成绩排序"<<endl;
  cout<<"3......以计算机成绩排序"<<endl;
  cout<<"4......以英语成绩排序"<<endl;
  cout<<"5......以总分排序"<<endl;
  cout<<"6......返回"<<endl;
  cout<<".......请选择(1-6)"<<endl;
  cin>>c;
  switch(c)
  { case '1':pxh();break;
    case '2':psx();break;
    case '3':pyw();break;
    case '4':pyy();break;
    case '5':pAA();break;
    case '6':return;
  }
}
void Clas::ssave()
{ system("cls");
  char c;
  cout<<"\n保存学生信息(将要覆盖原来的文件),是否继续?[Y/N]: ";cin>>c;
  if(toupper(c)!='Y') return;
  cout<<"选择保存类型"<<endl;
  cout<<"1.对本科生的信息进行保存"<<endl;
  cout<<"2.对研究生的信息进行保存"<<endl;
  cout<<"3.返回"<<endl; 
  char ch;cin>>ch;
  if(ch=='3') return;
  if(ch=='1'){
   College *p=Col;
  if(!p) {cout<<"还没有信息哦。。请输入信息后在进行保存。。\n";return;}
  cout<<"下面开始保存本科生的信息"<<endl;
  ofstream cfile("c:\\cdate.txt",ios_base::binary);
 
  while(p)
  {     p->display();
    cfile<<p->name<<"\t"<<p->sex<<"\t"<<p->phone<<"\t"<<p->subject<<"\t"<<p->num<<"\t"<<p->x<<"\t"<<p->y<<"\t"<<p->z;
      cfile<<endl;
      p=p->next;
  }
  cfile.close();
  cout<<"本科生信息保存完毕......"<<endl;
 }
  if(ch=='2'){
  Graduate *p1=Gra;
   if(!p1) {cout<<"还没有信息哦。。请输入信息后在进行保存。。\n";return;}
   cout<<"下面开始保存研究生的信息"<<endl;
   ofstream gfile("c:\\gdate.txt",ios_base::binary);    
    
   while(p1)
   {      p1->display();
       gfile<<p1->name<<"\t"<<p1->sex<<"\t"<<p1->phone<<"\t"<<p1->subject<<"\t"<<p1->num<<"\t"<<p1->x<<"\t"<<p1->y<<"\t"<<p1->z;
       p1=p1->next;
   }
  gfile.close();
  cout<<"研究生信息保存完毕......"<<endl;
}
}
void Clas::sload()
{  College *p;
   p=Col;
   while(p)
   {   Col=p->next;
       delete p;
       p=Col;
   }
   Graduate *p1;
   p1=Gra;
   while(p1)
   { Gra=p1->next;
     delete p1;
     p1=Gra;
   }
    ifstream cfile("c:\\cdate.txt",ios_base::binary);
    ifstream gfile("c:\\gdate.txt",ios_base::binary);
    cout<<"加入本科生信息。。。\n" ;
    string ssubject,sname,sphone,ssex;
    int sx,sy,sz;
    long snum;
    cfile>>sname>>ssex>>sphone>>ssubject>>snum>>sx>>sy>>sz;
    while(cfile.good())
    { College *s;
     s=Col;
     s=new College(sname,ssex,sphone,ssubject,snum,sx,sy,sz);
     s->display();
     s->next=0;
     s->AA=sx+sy+sz;
     if(Col)
     {  College *s1;
        s1=Col;
        while(s1->next)
        { s1=s1->next;}
        s1->next=s;
     }
     else { Col=s;}
     cfile>>sname>>ssex>>sphone>>ssubject>>snum>>sx>>sy>>sz;
    }
    cfile.close();
    cout<<"本科生信息加入完毕。。。\n";
    cout<<"加入研究生信息。。。。\n" ;
    gfile>>sname>>ssex>>sphone>>ssubject>>snum>>sx>>sy>>sz;
    while(gfile.good())
    { Graduate *s;
     s=Gra;
     s=new Graduate(sname,ssex,sphone,ssubject,snum,sx,sy,sz);
     s->display();
     s->next=0;
     s->AA=sx+sy+sz;
     if(Gra)
     {  Graduate  *s1;
         s1=Gra;
        while(s1->next)
        { s1=s1->next;}
           s1->next=s;
        }
     else { Gra=s;}
    gfile>>sname>>ssex>>sphone>>ssubject>>snum>>sx>>sy>>sz;
    }
    gfile.close();
    cout<<"研究生信息加入完毕。。。\n";
}
void Clas::menuselect()
{   while(true)                    
   {char c;
   cout<<"\n\t\t\t\t高校学生信息管理系统 \n";
   cout<<"\t\t\t**********************************\n";
   cout<<"\t\t\t*******10级+计科(1)班******\n";
   cout<<"\t\t\t1..........增加学生信息...........\n";
   cout<<"\t\t\t2...........删除学生信息..........\n";
   cout<<"\t\t\t3...........修改学生信息..........\n";
   cout<<"\t\t\t4...........查询学生信息..........\n";
   cout<<"\t\t\t5................排序.............\n";
   cout<<"\t\t\t6............保存信息.............\n";
   cout<<"\t\t\t7.............读取信息............\n";
   cout<<"\t\t\t8.................退出............\n";
   cout<<"\t\t\t**********************************\n";
   cout<<"\t\t\t\t请选择(1-8):";
   cin>>c;
   switch(c)
   { case '1': sadd();break;
     case '2': sremove();break;
     case '3': samend();break;
     case '4': ssearch();break;
     case '5': staxis();break;
     case '6': ssave();break;
     case '7': sload();break;
     case '8':  exit(0);
   } 
}
}
//主函数:
#include<iostream>
#include<string.h>
#include<string>
#include<fstream>
#include<iomanip>
#include"College.h"
#include"Student.h"
#include"Graduate.h"
#include"Clas.h"
#include<windows.h>
using namespace std;
int main()
{   SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN);
     cout<<"\n\t\t\t\t请输入密码(*^__^*) \n" ;
    string ss;
    cin>>ss;
    Clas a;
    if(ss==a.getpassword()) a.menuselect();
    else exit(1);
    return 0;
 }

 


       






 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值