学生成绩管理系统

#ifndef STUDENT_H
#define STUDENT_H
#include<string> 
using namespace std;

class Student
{
public:
    int num;  //公用数据成员用于记录类成员的编号
    string name;//公用数据成员用于记录类成员的姓名
    string sex;//公用数据成员用于记录类成员的性别 
    string clas;//公用数据成员用于记录类成员的班级 
    int age;//公用数据成员用于记录类成员的年龄 
public:
    Student(int n=0,string nm="",string s="",string  cl="",int a=0):num(n),name(nm),sex(s),age(a),clas(cl){};
    virtual void Input(){};
    virtual void Output(){};
    int GetNum(){return num;}//公有数据成员函数用于获得成员编号
    string GetName(){return name;}//公有数据成员函数用于获得成员姓名
};

#endif

#ifndef PUPIL_H
#define PUPIL_H
#include<string>
#include"Student.h"
#include<iostream>
#include<iomanip>

using namespace std;

class Pupil:public Student
{
    public:
    float Chinese;//公有数据成员用于记录小学生的语文成绩
    float Math;//公有数据成员用于记录类成员的数学成绩
    float English;//英语成绩 
    float Sum;//总分 
    float Adv;//平均分 
    int choice2;//公有数据成员用于选择类成员的性别
public:
    Pupil(int n=0,string nm="",string s="男",string  cl="",int a=0,float l=0.0,float z=0.0,float e=0.0,float c=0.0,float d=0.0)
        :Student(n,nm,s,cl,a),Chinese(l),Math(z),English(e),Sum(c),Adv(d){};
    void Input()//成员函数用于输入成员信息
    {
        cout<<"请输入学号"<<endl;
        cin>>num;
        cout<<"请输入姓名"<<endl;
        cin>>name;
        cout<<"请输入性别";
        cout<<"(1.男  2.女)"<<endl;
        cout<<"请输入你的选择"<<endl;
        cin>>choice2;
        switch(choice2)
        {
        case 1:sex="男";break;
        case 2:sex="女";break;
        default:cout<<"输入错误。"<<endl;break;
        }
        cout<<"请输入年龄"<<endl;
        cin>>age;
        cout<<"请输入班级"<<endl;
        cin>>clas;
        cout<<"请输入语文成绩"<<endl;
        cin>>Chinese;
        cout<<"请输入数学成绩"<<endl;
        cin>>Math;
        cout<<"请输入英语成绩"<<endl;
        cin>>English;
        Sum=Math+English+Chinese;
        Adv=Sum/3;
    }
    void Output()//成员函数用于输出成员信息
    {
        cout<<setw(10)<<num
            <<setw(10)<<name
            <<setw(10)<<sex
            <<setw(10)<<age
            <<setw(10)<<clas
            <<setw(10)<<Chinese
            <<setw(10)<<Math
            <<setw(10)<<English
            <<setw(10)<<Sum
            <<setw(10)<<Adv
            <<endl;
    }
};

#endif

#ifndef MIDDLE_H
#define MIDDLE_H
#include<string>
#include"Student.h"
#include<iostream>
#include<iomanip>//setw()

using namespace std;

class Middle:virtual public Student//避免二义性 
{
public:    
    float Chinese;//公有数据成员用于记录中学生的语文成绩
    float Math;//公有数据成员用于记录类成员的数学成绩
    float geography;//公有数据成员用于记录类成员的地理成绩
    float history;//公有数据成员用于记录类成员的历史成绩
    float English;//公有数据成员用于记录类成员的英语成绩
    float Sum;//公有数据成员用于记录类成员的成绩总分 
    float Adv;//公有数据成员用于记录类成员的成绩平均分 
    int choice2;//公有数据成员用于选择类成员的性别
public:
    Middle(int n=0,string nm="",string s="男",string  cl="",int a=0,float ge=0.0,float hi=0.0,float ad=0.0,float l=0.0,float z=0.0,float c=0.0,float d=0.0)
        :Student(n,nm,s,cl,a),geography(ge),history(hi),English(ad),Chinese(l),Math(z),Sum(c),Adv(d){};
    void Input()//成员函数用于输入成员信息
    {
        cout<<"请输入学号"<<endl;
        cin>>num;
        cout<<"请输入姓名"<<endl;
        cin>>name;
        cout<<"请输入性别";
        cout<<"(1.男  2.女)"<<endl;
        cout<<"请输入你的选择"<<endl;
        cin>>choice2;
        switch(choice2)
        {
        case 1:sex="男";break;
        case 2:sex="女";break;
        default:cout<<"输入错误。"<<endl;break;
        }    
        cout<<"请输入年龄"<<endl;
        cin>>age;
        cout<<"请输入班级"<<endl;
        cin>>clas;
        cout<<"请输入语文成绩"<<endl;
        cin>>Chinese;
        cout<<"请输入数学成绩"<<endl;
        cin>>Math;
        cout<<"请输入地理成绩"<<endl;
        cin>>geography;
        cout<<"请输入历史成绩"<<endl;
        cin>>history;
        cout<<"输入英语成绩"<<endl;
        cin>>English;
        Sum=English+history+geography+Chinese+Math;
        Adv=Sum/5;
        
    }
    void Output()//成员函数用于输出成员信息
    {
        cout<<setw(10)<<num
            <<setw(10)<<name
            <<setw(10)<<sex
            <<setw(10)<<age
            <<setw(10)<<clas
            <<setw(10)<<Chinese
            <<setw(10)<<Math
            <<setw(10)<<geography
            <<setw(10)<<history
            <<setw(10)<<English
            <<setw(10)<<Sum
            <<setw(10)<<Adv
            <<endl;
    }
};

#endif

#ifndef PUP_MANAGE_H
#define PUP_MANAGE_H
#include<string>
#include"Pupil.h"
//const int TMAX=50;

class Pup_Manage 
{
    Pupil Mid[50];   //TMAX为常量,为数组中可存储的中学生记录的最大数;
    int top;            //top表示当前系统中存储的记录个数;
public:
    Pup_Manage(){top=0;} //初始时记录的个数为0,所以设置top=0;
    void Add();          //实现该类记录的添加;
    void Show();         //实现该类所有记录的显示; 
    void Search();       //实现该类记录的查询;
    void Edit();         //实现该类记录的修改;
    void Delete();       //实现该类记录的删除;
    void Total();        //实现该类记录的统计;
    void Save();         //将该类记录保存到文件;
    void Read();         //可从文件中将记录读取到该类的数组中;
    void Sort();         //排序 
};

#endif

#ifndef MID_MANAGE_H
#define MID_MANAGE_H
#include<string>
#include"Middle.h"

class Mid_Manage : public Student
{
    Middle Mid[50];   //TMAX为常量,为数组中可存储的教师记录的最大数;
    int top;             //top表示当前系统中存储的记录个数;
public:
    Mid_Manage(){top=0;} //初始时记录的个数为0,所以设置top=0;
    void Add();          //实现该类记录的添加;
    void Show();         //实现该类所有记录的显示; 
    void Search();       //实现该类记录的查询;
    void Edit();         //实现该类记录的修改;
    void Delete();       //实现 该类记录的删除;
    void Total();        //实现该类记录的统计;  
    void Save();         //将该类记录保存到文件;
    void Read();         //可从文件中将记录读取到该类的数组中;
    void Sort();         //排序 
};

#endif

#ifndef COLLEGE_MANAGE_H
#define COLLEGE_MANAGE_H
#include<string>
#include"College.h"
#include<iomanip>

class College_Manage //: public Student
{
    College Mid[50];   //TMAX为常量,为数组中可存储的中学生记录的最大数;
    int top;             //top表示当前系统中存储的记录个数;
public:
    College_Manage(){top=0;} //初始时记录的个数为0,所以设置top=0;
    void Add();          //实现该类记录的添加;
    void Show();         //实现该类所有记录的显示; 
    void Search();       //实现该类记录的查询;
    void Edit();         //实现该类记录的修改;
    void Delete();       //实现该类记录的删除;
    void Total();        //实现该类记录的统计;
    void Save();         //将该类记录保存到文件;
    void Read();         //可从文件中将记录读取到该类的数组中;
    void Sort(); 
};

#endif

#include "Pup_Manage.h"
#include<fstream>


void Pup_Manage::Add()//函数的实现进行添加功能
{
    if(top>=50)  
    {
        cout<<"用户已满"<<endl;
        return;
    }
    Pupil t;
    cout<<"输入新添加的学生的信息"<<endl;
    t.Input();
    for(int i=0;i<top;i++)
        if (t.GetNum()==Mid[i].GetNum())
        {
        cout<<"该编号的学生已存在"<<endl;
        return;
        }
    Mid[top]=t;
    top=top+1;
    cout<<"添加成功!"<<endl;
}
void Pup_Manage::Show()//显示功能:可显示当前系统中所有记录,每条记录占据一行。
{
    if(top==0)
    {
        cout<<"无数据!"<<endl;
        return;
    }
    cout<<setw(10)<<"编号"
        <<setw(10)<<"姓名"
        <<setw(10)<<"性别"
        <<setw(10)<<"年龄"
        <<setw(10)<<"班级" 
        <<setw(10)<<"语文"
        <<setw(10)<<"数学"
        <<setw(10)<<"英语"
        <<setw(10)<<"总分"
        <<setw(10)<<"平均分"
        <<endl;
    for(int i=0;i<top;i++)
        Mid[i].Output();
}
void Pup_Manage::Sort()
{
    
    cout<<"1  按总分排序    2  语文成绩排序    3  数学成绩排序    4  英语成绩排序      "<<endl;
    int choice;
    cout<<"请输入你的选择"<<endl;
    cin>>choice;
    switch(choice)
    {
        case 1:
        {//选择排序 
            Pupil temp;        
            int i,j,k;
            for(i=0;i<top-1;i++)
            {
                k=i;
                for(j=i+1;j<top;j++)
                if(Mid[j].Sum>Mid[k].Sum)
                    k=j;
                 if(k!=i)
                 { 
                    temp=Mid[i];
                    Mid[i]=Mid[k];
                    Mid[k]=temp;
                } 
            }
                    Show(); break;
        }
        case 2:
        {
            Pupil temp;                
            int i,j,k;
            for(i=0;i<top-1;i++)
            {
                k=i;
                for(j=i+1;j<top;j++)
                if(Mid[j].Chinese>Mid[k].Chinese)
                    k=j;
                 if(k!=i)
                 { 
                    temp=Mid[i];
                    Mid[i]=Mid[k];
                    Mid[k]=temp;
                 } 
            }
                Show(); break;
        } 
        case 3:
        {
            Pupil temp;                
            int i,j,k;
            for(i=0;i<top-1;i++)
            {
                k=i;
                for(j=i+1;j<top;j++)
                if(Mid[j].Math>Mid[k].Math)
                    k=j;
                 if(k!=i)
                 { 
                    temp=Mid[i];
                    Mid[i]=Mid[k];
                    Mid[k]=temp;
                 } 
            }
                Show(); break;
        }
        case 4:
        {
            Pupil temp;                
            int i,j,k;
            for(i=0;i<top-1;i++)
            {
                k=i;
                for(j=i+1;j<top;j++)
                if(Mid[j].English>Mid[k].English)
                    k=j;
                 if(k!=i)
                 { 
                    temp=Mid[i];
                    Mid[i]=Mid[k];
                    Mid[k]=temp;
                 } 
            }
                Show(); break;
        }
    }
} 
void Pup_Manage::Search()//查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
{
    
    if(top==0)
    {
        cout<<"当前系统中没有存储记录"<<endl;
        return;
    }
    int choice;
    cout<<"请选择查找方式:1.按编号查找 2.按姓名查找."<<endl;
    cin>>choice;
    switch(choice)
    {
    case 1:{
        cout<<"请输入要查找的编号:"<<endl;
        int num;
        cin>>num;
        for(int i=0;i<top;i++)
        {
            if(Mid[i].GetNum()==num) 
            {
                Mid[i].Output();
                return;
            }
            
        }
        cout<<"查无此人!"<<endl;
           }break;
    case 2:{
        cout<<"请输入要查找的姓名"<<endl;
        string name;
        cin>>name;
        for(int i=0;i<top;i++)
        {
            if(Mid[i].GetName()==name) 
            {
                Mid[i].Output();
            }
            
        }
        for( int i=0;i<top;i++)
            if(Mid[i].GetName()==name)
                return;
            cout<<"查无此人!"<<endl;
           }break;
    default :cout<<"无此选项!请重试!"<<endl;break;
    }
}
void Pup_Manage::Edit()
{
    if(top==0)
    {
        cout<<"当前系统中没有存储记录!"<<endl;
        return;
    }
    int num;
    cout<<"请输入要查找的学生编号:"<<endl;
    cin>>num;
    for(int i=0;i<top;i++)
    {
        if(Mid[i].GetNum()==num)
        {
            cout<<"请对这位小学生的信息进行修改:"<<endl;
            Mid[i].Input();
            cout<<"修改成功"<<endl;return;
        }
    }
     cout<<"查无此人"<<endl;
}
void Pup_Manage::Delete()//删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示"记录为空!"并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。
{
        if(top==0) 
        {
            cout<<"当前系统中没有存储记录!"<<endl;
            return;
        }
    cout<<"1、按编号查找删除       2、按姓名查找删除"<<endl;
    int choice;
    cin>>choice; 
    switch(choice)
    {
        case 1:
            {
                cout<<"请输入编号:";
                int num;
                cin>>num;
                for(int i=0;i<top;i++)
                {
                     if(num==Mid[i].num)
                     {
                         cout<<"是否确认删除?     1、是    2、否  "<<endl;
                         int choice;
                         cin>>choice;
                         switch(choice)
                         {
                         case 1:
                             {
                                 for(int j=i;j<top-1;j++)
                                    Mid[j]=Mid[j+1];
                                  cout<<"删除成功!"<<endl;
                                  top--;
                             };break;
                         case 2:return;
                         default:cout<<"无此项,失败!"<<endl;break;
                         }return;
                     }    
                             
                } 
                 cout<<"无此人!"<<endl;

            } ;break;
        case 2:                
            {
                cout<<"请输入姓名:";
                string name;
                cin>>name;
                for(int i=0;i<top;i++)
                {
                     if(name==Mid[i].name)
                     {
                             cout<<"是否确认删除?     1、是    2、否  "<<endl;
                         int choice;
                         cin>>choice;
                         switch(choice)
                         {
                         case 1:
                             {
                                 for(int j=i;j<top-1;j++)
                                 Mid[j]=Mid[j+1];
                                  cout<<"删除成功!"<<endl;
                                  top--;
                             };break; 
                         case 2:return;
                         default:cout<<"无此项,失败!"<<endl;break;
                         }return;
                     }                  
                }
                cout<<"无此人!"<<endl;
            };  break;
    default:cout<<"没有此项,失败:"<<endl;break;
    }
}
void Pup_Manage::Total()//统计功能:能根据多种参数进行人员的统计。例如,统计类中人员数量以及总数,或者统计男、女员工的数量,不同部门员工数量等。

{
    cout<<"1  按人数统计    2  按性别统计   3 总分   4平均分 "<<endl;
    int choice;
    cout<<"请输入你的选择"<<endl;
    cin>>choice;
    switch(choice)
    {
    case 1:cout<<"学生人数为:"<<top<<endl;break;
    case 2:
        {
            int a=0,b=0;
            for(int i=0;i<top;i++)    
            {
                if(Mid[i].sex=="男") a++;
                if(Mid[i].sex=="女") b++;
            }
            cout<<"男学生人数为"<<a<<endl;
            cout<<"女学生数为"<<b<<endl;
        }break;
        
    case 3:
    {
            for(int i=0;i<top;i++)    
            {
                cout<<"学号   "<<Mid[i].num<<"   总分   "<<Mid[i].Sum<<endl; 
            }                
    } break;
    case 4:
    {
        for(int i=0;i<top;i++)    
            {
                cout<<"学号   "<<Mid[i].num<<"   平均分   "<<Mid[i].Adv<<endl; 
            }                
    } break;
    
    default:cout<<"输入错误。请重新输入"<<endl;break;
    }
}
void Pup_Manage::Save()//保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。
{
    ofstream out("D:\\ying1.txt",ios::out);//打开一个文件用于输出 
    if(!out)
    {
        cout<<"打开失败!"<<endl;
        return;
    }
    cout<<"打开成功!"<<endl;
    for(int i=0;i<top;i++)
    {
        out<<Mid[i].num<<" "
           <<Mid[i].name<<" "
           <<Mid[i].sex<<" "
           <<Mid[i].age<<" "
           <<Mid[i].clas<<" "
           <<Mid[i].Chinese<<" "
           <<Mid[i].Math<<" " 
           <<Mid[i].English<<" "
           <<Mid[i].Sum<<" "
           <<Mid[i].Adv<<" "
           <<endl;
    }
    cout<<"写入成功!"<<endl;
    out.close();
}
void Pup_Manage::Read()//读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。
{
    ifstream in("D:\\ying1.txt",ios::in);//打开一个文件用于输入 
    if(!in)
    {
        cout<<"打开失败!"<<endl;
        return;
    }
    int i=0;
    while(in>>Mid[i].num
            >>Mid[i].name
            >>Mid[i].sex
            >>Mid[i].age
            >>Mid[i].clas 
            >>Mid[i].Chinese
            >>Mid[i].Math
            >>Mid[i].English
            >>Mid[i].Sum
            >>Mid[i].Adv)
    {
        Mid[i].Output();
        i++;
        top++;
    }
    in.close();
};

#include "Mid_Manage.h"
#include<fstream>
 
void Mid_Manage::Add()
{
    if(top>=50)  
    {
        cout<<"用户已满"<<endl;
        return;
    }
    Middle t;
    cout<<"输入新添加的学生的信息"<<endl;
    t.Input();
    for(int i=0;i<top;i++)
        if (t.GetNum()==Mid[i].GetNum())
        {
            cout<<"该编号的学生已存在"<<endl;
            return;
        }
    Mid[top]=t;
    top=top+1;
    cout<<"添加成功!"<<endl;
}
void Mid_Manage::Show()
{
    if(top==0)
    {
        cout<<"无数据!"<<endl;
        return;
    }
    cout<<setw(10)<<"编号"
        <<setw(10)<<"姓名"
        <<setw(10)<<"性别"
        <<setw(10)<<"年龄"
        <<setw(10)<<"班级" 
        <<setw(10)<<"语文"
        <<setw(10)<<"数学"
        <<setw(10)<<"地理"
        <<setw(10)<<"历史"
        <<setw(10)<<"英语"
        <<setw(10)<<"总分"
        <<setw(10)<<"平均分"
        <<endl;
    for(int i=0;i<top;i++)
        Mid[i].Output();
}


void Mid_Manage::Sort()
{
    
    cout<<"1  按总分排序    2  语文成绩排序    3  数学成绩排序    4  英语成绩排序    5  地理成绩排序    6  历史成绩排序      "<<endl;
    int choice;
    cout<<"请输入你的选择"<<endl;
    cin>>choice;
    switch(choice)
    {
        case 1:
        {
            Middle temp;                
            int i,j,k;
            for(i=0;i<top-1;i++)
            {
                k=i;
                for(j=i+1;j<top;j++)
                if(Mid[j].Sum>Mid[k].Sum)
                    k=j;
                 if(k!=i)
                 {
                    temp=Mid[i];
                    Mid[i]=Mid[k];
                    Mid[k]=temp;
                }
            }
                        Show(); break;
        }
        case 2:
        {
            Middle temp;                
            int i,j,k;
            for(i=0;i<top-1;i++)
            {
                k=i;
                for(j=i+1;j<top;j++)
                if(Mid[j].Chinese>Mid[k].Chinese)
                    k=j;
                 if(k!=i)
                 {
                 
                    temp=Mid[i];
                    Mid[i]=Mid[k];
                    Mid[k]=temp;
                }
            }
                    Show(); break;
        }
        case 3:
        {
            Middle temp;                
            int i,j,k;
            for(i=0;i<top-1;i++)
            {
                k=i;
                for(j=i+1;j<top;j++)
                if(Mid[j].Math>Mid[k].Math)
                    k=j;
                 if(k!=i)
                 {
                 
                    temp=Mid[i];
                    Mid[i]=Mid[k];
                    Mid[k]=temp;
                }
            }
                    Show(); break;
        }
        case 4:
        {
            Middle temp;                
            int i,j,k;
            for(i=0;i<top-1;i++)
            {
                k=i;
                for(j=i+1;j<top;j++)
                if(Mid[j].English>Mid[k].English)
                    k=j;
                 if(k!=i)
                 {
                 
                    temp=Mid[i];
                    Mid[i]=Mid[k];
                    Mid[k]=temp;
                }
            }
                    Show(); break;
        }
        case 5:
        {
            Middle temp;                
            int i,j,k;
            for(i=0;i<top-1;i++)
            {
                k=i;
                for(j=i+1;j<top;j++)
                if(Mid[j].geography>Mid[k].geography)
                    k=j;
                 if(k!=i)
                 {
                 
                    temp=Mid[i];
                    Mid[i]=Mid[k];
                    Mid[k]=temp;
                }
            }
                    Show(); break;
        }
        case 6:
        {
            Middle temp;                
            int i,j,k;
            for(i=0;i<top-1;i++)
            {
                k=i;
                for(j=i+1;j<top;j++)
                if(Mid[j].history>Mid[k].history)
                    k=j;
                 if(k!=i)
                 {
                 
                    temp=Mid[i];
                    Mid[i]=Mid[k];
                    Mid[k]=temp;
                }
            }
                    Show(); break;
           } 
    }
} 
void Mid_Manage::Search()
{    int i;
    if(top==0)
    {
        cout<<"当前系统中没有存储记录"<<endl;
        return;
    }
    int choice;
    cout<<"请选择查找方式:1.按编号查找 2.按姓名查找."<<endl;
    cin>>choice;
    switch(choice)
    {
    case 1:{
        cout<<"请输入要查找的编号:"<<endl;
        int num;
        cin>>num;
        for(int i=0;i<top;i++)
        {
            if(Mid[i].GetNum()==num) 
            {
                Mid[i].Output();
                return;
            }
        }
        cout<<"查无此人!"<<endl;
           }break;
    case 2:{
        cout<<"请输入要查找的姓名"<<endl;
        string name;
        cin>>name;
        for(int i=0;i<top;i++)
        {
            if(Mid[i].GetName()==name) 
            {
                Mid[i].Output();
            }
        }
        for(int i=0;i<top;i++)
            if(Mid[i].GetName()==name)
                return;
            cout<<"查无此人!"<<endl;
           }break;
    default :cout<<"无此选项!请重试!"<<endl;break;
    }
}
void Mid_Manage::Edit()
{
    if(top==0)
    {
        cout<<"当前系统中没有存储记录!"<<endl;
        return;
    }
    int num;
    cout<<"请输入要查找的学生编号:"<<endl;
    cin>>num;
    for(int i=0;i<top;i++)
    {
        if(Mid[i].GetNum()==num)
        {
            cout<<"请对这位中学生的信息进行修改:"<<endl;
            Mid[i].Input();
            cout<<"修改成功"<<endl;return;
        }
    }
         cout<<"查无此人"<<endl;
}
void Mid_Manage::Delete()
{
        if(top==0) 
        {
            cout<<"当前系统中没有存储记录!"<<endl;
            return;
        }
    cout<<"1、按编号查找删除          2、按姓名查找删除"<<endl;
    int choice;
    cin>>choice; 
    switch(choice)
    {
        case 1:
            {
                cout<<"请输入编号:";
                int num;
                cin>>num;
                for(int i=0;i<top;i++)
                {
                     if(num==Mid[i].num)
                     {
                         cout<<"是否确认删除?     1、是    2、否  "<<endl;
                         int choice;
                         cin>>choice;
                         switch(choice)
                         {
                         case 1:
                             {
                                 for(int j=i;j<top-1;j++)
                                    Mid[j]=Mid[j+1];
                                  cout<<"删除成功!"<<endl;
                                  top--;
                             };break;
                         case 2:return;
                         default:cout<<"无此项,失败!"<<endl;break;
                         }return;
                     }    
                             
                } 
                 cout<<"无此人!"<<endl;

            } ;break;
        case 2:
            {
                cout<<"请输入姓名:";
                string name;
                cin>>name;
                for(int i=0;i<top;i++)
                {
                     if(name==Mid[i].name)
                     {
                             cout<<"是否确认删除?     1、是    2、否  "<<endl;
                         int choice;
                         cin>>choice;
                         switch(choice)
                         {
                         case 1:
                             {
                                 for(int j=i;j<top-1;j++)
                                 Mid[j]=Mid[j+1];
                                  cout<<"删除成功!"<<endl;
                                  top--;
                             };break;
                         case 2:return;
                         default:cout<<"无此项,失败!"<<endl;break;
                         }return;
                     }                  
                }
                cout<<"无此人!"<<endl;
            };  break;
    default:cout<<"没有此项,失败:"<<endl;break;
    }
}
void Mid_Manage::Total()
{
    cout<<"1 按人数统计   2 总分   3平均分"<<endl;
    int choice;
    cout<<"请输入你的选择"<<endl;
    cin>>choice;
    switch(choice)
    {
    case 1:cout<<"中学生人数为:"<<top<<endl;break;
    case 2:
    {
            for(int i=0;i<top;i++)    
            {
                cout<<"学号   "<<Mid[i].num<<"   总分   "<<Mid[i].Sum<<endl; 
            }                
    } break;
    case 3:
    {
        for(int i=0;i<top;i++)    
            {
                cout<<"学号   "<<Mid[i].num<<"   平均分   " <<Mid[i].Adv<<endl; 
            }                
    } break;
    default:cout<<"输入错误。请重新输入"<<endl;break;
    }
}
void Mid_Manage::Save()
{
    ofstream out("D:\\ying2.txt",ios::out); 
    if(!out)
    {
        cout<<"打开失败!"<<endl;
        return;
    }
    cout<<"打开成功!"<<endl;
    for(int i=0;i<top;i++)
    {        
        out<<Mid[i].num<<" "               
           <<Mid[i].name<<" "
           <<Mid[i].sex<<" "
           <<Mid[i].age<<" "
           <<Mid[i].clas<<" "
           <<Mid[i].Chinese<<" "
           <<Mid[i].Math<<" "
           <<Mid[i].geography<<" "
           <<Mid[i].history<<" "
           <<Mid[i].English<<" "
           <<Mid[i].Sum<<" "
           <<Mid[i].Adv<<" "
           <<endl;
    }
    cout<<"写入成功!"<<endl;
    out.close();
}
void Mid_Manage::Read()
{
    ifstream in("D:\\ying2.txt",ios::in);
    if(!in)
    {
        cout<<"打开失败!"<<endl;
        return;
    }
    int i=0;
    while(in>>Mid[i].num
            >>Mid[i].name
            >>Mid[i].sex
            >>Mid[i].age
            >>Mid[i].clas
            >>Mid[i].Chinese
            >>Mid[i].Math
            >>Mid[i].geography
            >>Mid[i].history
            >>Mid[i].English
            >>Mid[i].Sum
            >>Mid[i].Adv)
    {
        Mid[i].Output();
        i++;
        top++;
    }
    in.close();
};

#include "College_Manage.h"
#include<fstream>


void College_Manage::Add()
{
    if(top>=50)  
    {
        cout<<"用户已满"<<endl;
        return;
    }
    College t;
    cout<<"输入新添加的学生的信息"<<endl;
    t.Input();
    for(int i=0;i<top;i++)
        if (t.GetNum()==Mid[i].GetNum())
        {
        cout<<"该编号的学生已存在"<<endl;
        return;
        }
    Mid[top]=t;
    top=top+1;
    cout<<"添加成功!"<<endl;
}
void College_Manage::Show()
{
    if(top==0)
    {
        cout<<"无数据!"<<endl;
        return;
    }
    cout<<setw(10)<<"编号"
        <<setw(10)<<"姓名"
        <<setw(10)<<"性别"
        <<setw(10)<<"年龄"
        <<setw(10)<<"班级" 
        <<setw(10)<<"专业"
        <<setw(10)<<"英语"
        <<setw(10)<<"程序设计"
        <<setw(10)<<"高等数学"
        <<setw(10)<<"总分"
        <<setw(10)<<"平均分"
        <<endl;
    for(int i=0;i<top;i++)
        Mid[i].Output();
}
void College_Manage::Search()
{
    int i;
    if(top==0)
    {
        cout<<"当前系统中没有存储记录"<<endl;
        return;
    }
    int choice;
    cout<<"请选择查找方式:1.按编号查找 2.按姓名查找"<<endl;
    cin>>choice;
    switch(choice)
    {
    case 1:{
        cout<<"请输入要查找的编号:"<<endl;
        int num;
        cin>>num;
        for(int i=0;i<top;i++)
        {
            if(Mid[i].GetNum()==num) 
            {
                Mid[i].Output();
                return;
            }
        }
        cout<<"查无此人!"<<endl;
           }break;
    case 2:{
        cout<<"请输入要查找的姓名"<<endl;
        string name;
        cin>>name;
        for(int i=0;i<top;i++)
        {
            if(Mid[i].GetName()==name) 
            {
                Mid[i].Output();
            }
        }
        for( int i=0;i<top;i++)
            if(Mid[i].GetName()==name)  
                return;
            cout<<"查无此人!"<<endl;
           }break;
    default :cout<<"无此选项!请重试!"<<endl;break;
    } 
}
void College_Manage::Delete()
{
        if(top==0) 
        {
            cout<<"当前系统中没有存储记录!"<<endl;
            return;
        }
    cout<<"1、按编号查找删除    2.按姓名查找删除   "<<endl;
    int choice;
    cin>>choice; 
    switch(choice)
    {
        case 1:
            {
                cout<<"请输入编号:";
                int num;
                cin>>num;
                for(int i=0;i<top;i++)
                {
                     if(num==Mid[i].num)
                     {
                         cout<<"是否确认删除?     1、是    2、否  "<<endl;
                         int choice;
                         cin>>choice;
                         switch(choice)
                         {
                         case 1:
                             {
                                 for(int j=i;j<top-1;j++)
                                    Mid[j]=Mid[j+1];
                                  cout<<"删除成功!"<<endl;
                                  top--;
                             }break;
                             
                        
                             
                        cout<<"无此人!"<<endl;
                         case 2:return;
                         default:cout<<"无此项,失败!"<<endl;break;
                         }return;
                     }            
                } 
                 

            } ;break;
        case 2:
            {cout<<"请输入姓名:";
                string name;
                cin>>name;
                for(int i=0;i<top;i++)
                {
                     if(name==Mid[i].name)
                     {
                             cout<<"是否确认删除?     1、是    2、否  "<<endl;
                         int choice;
                         cin>>choice;
                         switch(choice)
                         {
                         case 1:
                             {
                                 for(int j=i;j<top-1;j++)
                                 Mid[j]=Mid[j+1];
                                  cout<<"删除成功!"<<endl;
                                  top--;
                             };break;
                         case 2:return;
                         default:cout<<"无此项,失败!"<<endl;break;
                         }return;
                     }                  
                }
                cout<<"无此人!"<<endl;
            };  break;
    default:cout<<"没有此项,失败:"<<endl;break;
    }
}
void College_Manage::Edit()
{
    if(top==0)
    {
        cout<<"当前系统中没有存储记录!"<<endl;
        return;
    }
    int num;
    cout<<"请输入要查找的学生编号:"<<endl;
    cin>>num;
    for(int i=0;i<top;i++)
    {
        if(Mid[i].GetNum()==num)
        {
            cout<<"请对这位中学生的信息进行修改:"<<endl;
            Mid[i].Input();
            cout<<"修改成功"<<endl;return;
        }
    }
         cout<<"查无此人"<<endl;
}
void College_Manage::Total()
{
    cout<<"1  按人数统计   2 总分   3平均分  "<<endl;
    int choice;
    cout<<"请输入你的选择"<<endl;
    cin>>choice;
    switch(choice)
    {
    case 1:cout<<"大学生人数为:"<<top<<endl;break;
    
    case 2:
    {
            for(int i=0;i<top;i++)    
            {
                cout<<"学号   "<<Mid[i].num<<"   总分   "<<Mid[i].Sum<<endl; 
            }                
    } break;
    case 3:
    {
        for(int i=0;i<top;i++)    
            {
                cout<<"学号   "<<Mid[i].num<<"   平均分   "<<Mid[i].Adv<<endl; 
            }                
    } break;
    default:cout<<"输入错误。请重新输入"<<endl;break;
    }
}

void College_Manage::Sort()
{
    
    cout<<"1  按总分排序    2  英语成绩排序    3  程序设计成绩排序    4  高等数学成绩排序 "<<endl;
    int choice;
    cout<<"请输入你的选择"<<endl;
    cin>>choice;
    switch(choice)
    {
        case 1:
        {
            College temp;                
            int i,j,k;
            for(i=0;i<top;i++)
            {
                k=i;
                for(j=i+1;j<top;j++)
                if(Mid[j].Sum>Mid[k].Sum)
                    k=j;
                 if(k!=i)
                 {
                 
                    temp=Mid[i];
                    Mid[i]=Mid[k];
                    Mid[k]=temp;
                 }
            }
            
                    Show(); break;
        }
        case 2:
        {
            College temp;                
            int i,j,k;
            for(i=0;i<top;i++)
            {
                k=i;
                for(j=i+1;j<top;j++)
                if(Mid[j].English>Mid[k].English)
                    k=j;
                 if(k!=i)
                 {
                    temp=Mid[i];
                    Mid[i]=Mid[k];
                    Mid[k]=temp;
                 }
            }
                    Show(); break;
        }
        case 3:
        {
            College temp;                
            int i,j,k;
            for(i=0;i<top;i++)
            {
                k=i;
                for(j=i+1;j<top;j++)
                if(Mid[j].program>Mid[k].program)
                    k=j;
                 if(k!=i)
                 {
                    temp=Mid[i];
                    Mid[i]=Mid[k];
                    Mid[k]=temp;
                 }
            }
                    Show(); break;
        }
        case 4:
        {
            College temp;                
            int i,j,k;
            for(i=0;i<top;i++)
            {
                k=i;
                for(j=i+1;j<top;j++)
                if(Mid[j].Gmath>Mid[k].Gmath)
                    k=j;
                 if(k!=i)
                 {
                    temp=Mid[i];
                    Mid[i]=Mid[k];
                    Mid[k]=temp;
                 }
            }
                    Show(); break;
        }
    }
} 


void College_Manage::Save()
{
    ofstream out("D:\\ying3.txt",ios::out);
    if(!out)
    {
        cout<<"打开失败!"<<endl;
        return;
    }
    cout<<"打开成功!"<<endl;
    for(int i=0;i<top;i++)
    {
        out<<Mid[i].num<<" "
           <<Mid[i].name<<" "
           <<Mid[i].sex<<" "
           <<Mid[i].age<<" "
           <<Mid[i].clas<<" "
           <<Mid[i].speciailty<<" "
           <<Mid[i].English<<" "
           <<Mid[i].program<<" "
           <<Mid[i].Gmath<<" "
           <<Mid[i].Sum<<" "
           <<Mid[i].Adv<<" "
           <<endl;       
    }
    cout<<"写入成功!"<<endl;
    out.close();
}
void College_Manage::Read()
{
    ifstream in("D:\\ying3.txt",ios::in);
    if(!in)
    {
        cout<<"打开失败!"<<endl;
        return;
    }
    int i=0;
    while(in>>Mid[i].num
            >>Mid[i].name
            >>Mid[i].sex
            >>Mid[i].age
            >>Mid[i].clas
            >>Mid[i].speciailty
            >>Mid[i].English
            >>Mid[i].program
            >>Mid[i].Gmath
            >>Mid[i].Sum
            >>Mid[i].Adv
          )
            
    {
        Mid[i].Output();
        i++;
        top++;
    }
    in.close();
}; 

#include <iostream>
#include<string>

#include"Pup_Manage.h"
#include"Mid_Manage.h"
#include"College_Manage.h"
void PupMenu();
void MidMenu();
void CollegeMenu();
int main()
{
    
    int choice;
    
    do{ 
        cout<<"                             主菜单"<<endl; 
        cout<<"     1.小学生管理  2.中学生管理  3.大学生管理   0.退出系统          "<<endl; 
        cout<<"\n请输入您的选择:";
        cin>>choice;
        switch(choice)
        {
            case 1:PupMenu();break;
            case 2:MidMenu();break;
            case 3:CollegeMenu();break;
            case 0:cout<<"\n您已安全退出系统."<<endl;break;
            default:cout<<"\n没有此选项.请重选."<<endl;break;
        }
    }while(choice!=0);

    cout<<"\n                      欢迎您下次再使用本系统!"<<endl;
    return 0;
}
void PupMenu()//小学生函数主界面的定义
{
    Pup_Manage t;
    int choice;
    do 
    {
        cout<<"                                   小学生主菜单"<<endl;
        cout<<"  1.添加  2.查找  3.修改  4.删除  5.显示  6.保存  7.读取  8.统计  9.排序  0.退出 "<<endl;
        cout<<"\n输入您操作的选项:";
        cin>>choice;
        switch(choice)
        {
            case 1:t.Add();break;
            case 2:t.Search();break;    
            case 3:t.Edit();break;
            case 4:t.Delete();break;
            case 5:t.Show();break;
            case 6:t.Save();break;
            case 7:t.Read();break;
            case 8:t.Total();break;
            case 9:t.Sort();break;    
            case 0:cout<<"退出成功!"<<endl;break;
            default:cout<<"无此选项!请重试!"<<endl;break;
        }
    }while(choice!=0);
}
void MidMenu()//中学生函数主界面的定义
{    
    Mid_Manage t;
    int choice;
    do
    {
        cout<<"                                中学生主菜单"  <<endl;
        cout<<"  1.添加  2.查找  3.修改  4.删除  5.显示  6.保存  7.读取  8.统计  9.排序  0.退出 "<<endl;
        cout<<"\n输入您操作的选项:";
        cin>>choice;
        switch(choice)
        {
            case 1:t.Add();break;
            case 2:t.Search();break;    
            case 3:t.Edit();break;
            case 4:t.Delete();break;
            case 5:t.Show();break;
            case 6:t.Save();break;
            case 7:t.Read();break;
            case 8:t.Total();break;
            case 9:t.Sort();break;            
            case 0:cout<<"退出成功!"<<endl;break;
            default:cout<<"无此选项!请重试!"<<endl;break;
        }
    }while(choice!=0);
}
void CollegeMenu()//大学生主界面的定义
{
    College_Manage t;
    int choice;
    do
    {
        cout<<"                               大学生主菜单"<<endl; 
        cout<<"  1.添加  2.查找  3.修改  4.删除  5.显示  6.保存  7.读取  8.统计  9.排序  0.退出 "<<endl;
        cout<<"\n输入您操作的选项:";
        cin>>choice;
        switch(choice)
        {
            case 1:t.Add();break;
            case 2:t.Search();break;    
            case 3:t.Edit();break;
            case 4:t.Delete();break;
            case 5:t.Show();break;
            case 6:t.Save();break;
            case 7:t.Read();break;
            case 8:t.Total();break;
            case 9:t.Sort();break;
            case 0:cout<<"退出成功!"<<endl;break;
            default:cout<<"无此选项!请重试!"<<endl;break;
        }
    }while(choice!=0);
}                       

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值