使用C++实现学生管理系统

来源:互联网 发布:网络租用合同范本 编辑:程序博客网 时间:2024/05/18 19:42

我在前面的博客中分别使用C语言的动态数组和链表实现了学生成绩管理系统,最近正好在学习C++,于是我便使用C++实现了学生成绩管理系统,算法和前面的C语言的动态数组实现的学生成绩管理系统差不多,只是在动态内存分配上使用了C++的New,而C语言中使用的是malloc,在排序中使用了插入排序

我的使用C语言实现的学生成绩管理系统:http://blog.csdn.net/u010105970/article/details/17752193

使用链表实现的学生成绩管理系统:http://blog.csdn.net/u010105970/article/details/25058379

插入排序:http://blog.csdn.net/u010105970/article/details/25464535

首先定义一个Student类

class Student//学生类{public:~Student();//析构函数    void InputStudent(void);//输入学生信息    void OutputStudent(void);//输出学生信息    void DeleteStudent(void);//删除学生信息    void SearchStudent(void);//查找学生信息    void ChangeStudent(void);//修改学生信息    void ScortByChinese(void);//对学生的语文成绩排序    void ScortByMath(void);  //对学生的数学成绩排序    void ScortByEnglish(void);//对学生的英语成绩排序    void ScortByTotal(void);//对学生的总分排序 private:    Student *St;     //学生类指针    int Size;       //学生的人数        string Name;    //姓名    int Age;        //年龄    int No;         //学号    float Score[3];//三科的成绩    float Total;  //总分    float Ave;   //平均分};


然后通过各个成员函数操作Student类,算法和C语言的差不多我就不多解释


程序的全部代码

#include <iostream>#include <cstdlib>#include <string>using namespace std;class Student//学生类{public:~Student();//析构函数    void InputStudent(void);//输入学生信息    void OutputStudent(void);//输出学生信息    void DeleteStudent(void);//删除学生信息    void SearchStudent(void);//查找学生信息    void ChangeStudent(void);//修改学生信息    void ScortByChinese(void);//对学生的语文成绩排序    void ScortByMath(void);  //对学生的数学成绩排序    void ScortByEnglish(void);//对学生的英语成绩排序    void ScortByTotal(void);//对学生的总分排序 private:    Student *St;     //学生类指针    int Size;       //学生的人数        string Name;    //姓名    int Age;        //年龄    int No;         //学号    float Score[3];//三科的成绩    float Total;  //总分    float Ave;   //平均分};//析构函数Student::~Student(){delete(St);}//输入学生的信息void Student::InputStudent(void){    int len;//学生的人数    cout<<"请输入学生的人数:";    cin>>len;    system("cls");    Size = len;    St = new Student[Size];    for(int i=0; i<len; i++)    {        cout<<"请输入第"<<i+1<<"个学生的姓名:";        cin>>St[i].Name;        cout<<"请输入第"<<i+1<<"个学生的年龄:";        cin>>St[i].Age;        cout<<"请输入第"<<i+1<<"个学生的学号:";        cin>>St[i].No;        cout<<"请输入第"<<i+1<<"个学生的语文成绩:";        cin>>St[i].Score[0];        cout<<"请输入第"<<i+1<<"个学生的数学成绩:";        cin>>St[i].Score[1];        cout<<"请输入第"<<i+1<<"个学生的英语成绩:";        cin>>St[i].Score[2];        St[i].Total = St[i].Score[0] + St[i].Score[1] + St[i].Score[2];        St[i].Ave = St[i].Total / 3.0f;        system("cls");    }}//输出学生的信息void Student::OutputStudent(void){    cout<<"姓名  年龄   学号   语文   数学  英语  总分  平均分"<<endl;    for(int i=0; i<Size; i++)    {        cout<<St[i].Name<<"  "<<St[i].Age<<"  "<<St[i].No<<"  "<<St[i].Score[0]<<"  "<<St[i].Score[1]<<"  "<<St[i].Score[2]<<"  "               <<St[i].Score[2]<<"  "<<St[i].Total<<"  "<<St[i].Ave<<endl;    }}void Student::DeleteStudent(void)//删除学生信息{    string str;    cout<<"请输入你需要删除的学生的姓名:";    cin>>str;    int num;//标记姓名相等时的下标    //寻找姓名相等时的下标    for(int i=0; i<Size; i++)    {        //当姓名相等时        if(str == St[i].Name)        {            num = i;        }    }    //将后面的学生向前移    for(int j=num+1; j<Size; j++)    {        St[j-1] = St[j];    }    Size -= 1;//学生人数减少一个 }void Student::SearchStudent(void)//查找学生信息{    string name;    cout<<"请输入你需要查找的学生的姓名:";    cin>>name;    int i;    for(i=0; i<Size; i++)    {        if(name == St[i].Name)        {            break;        }    }    cout<<St[i].Name<<" "<<St[i].Age<<" "<<St[i].No<<" "<<St[i].Score[0]<<" "<<St[i].Score[1]<<" "           <<St[i].Score[2]<<" "<<St[i].Total<<" "<<St[i].Ave<<endl;}void Student::ChangeStudent(void)//修改学生信息{     string name;    cout<<"请输入你需要修改的学生的姓名:";    cin>>name;    int i;    for(i=0; i<Size; i++)    {        if(name == St[i].Name)        {            break;        }    }        cout<<"修改前学生的信息:"<<endl;      cout<<St[i].Name<<" "<<St[i].Age<<" "<<St[i].No<<"  "<<St[i].Score[0]<<" "<<St[i].Score[1]<<" "           <<St[i].Score[2]<<" "<<St[i].Total<<" "<<St[i].Ave<<endl<<endl;    cout<<"请输入学生的姓名:";    cin>>St[i].Name;    cout<<"请输入学生的年龄:";    cin>>St[i].Age;    cout<<"请输入第个学生的学号:";    cin>>St[i].No;    cout<<"请输入学生的语文成绩:";    cin>>St[i].Score[0];    cout<<"请输入学生的数学成绩:";    cin>>St[i].Score[1];    cout<<"请输入第学生的英语成绩:";    cin>>St[i].Score[2];    St[i].Total = St[i].Score[0] + St[i].Score[1] + St[i].Score[2];    St[i].Ave = St[i].Total / 3.0f;}void Student::ScortByChinese(void)//对学生的语文成绩排序{    //提供插入数组中的数据    for(int i=1; i<Size; i++)    {        int j = i-1;        //插入数组中的数据        Student temp = St[i];        while(temp.Score[0] > St[j].Score[0] && j>=0)        {            St[j+1]  = St[j];j--;        }        St[++j] = temp;    }}void Student::ScortByMath(void)//对学生的数学成绩排序{//提供插入数组中的数据    for(int i=1; i<Size; i++)    {        int j = i-1;        //插入数组中的数据        Student temp = St[i];        while(temp.Score[1] > St[j].Score[1] && j>=0)        {            St[j+1]  = St[j];j--;        }        St[++j] = temp;    }}void Student::ScortByEnglish(void)//对学生的英语成绩排序{//提供插入数组中的数据    for(int i=1; i<Size; i++)    {        int j = i-1;        //插入数组中的数据        Student temp = St[i];        while(temp.Score[2] > St[j].Score[2] && j>=0)        {            St[j+1]  = St[j];j--;        }        St[++j] = temp;    }}void Student::ScortByTotal(void)//对学生的总分排序{//提供插入数组中的数据    for(int i=1; i<Size; i++)    {        int j = i-1;        //插入数组中的数据        Student temp = St[i];        while(temp.Total  > St[j].Total && j>=0)        {            St[j+1]  = St[j];j--;        }        St[++j] = temp;    }}void main(){    cout<<"================================================================================\n"<<endl;      cout<<"================================================================================\n"<<endl;      cout<<"*************************欢迎使用学生成绩管理系统*******************************\n"<<endl;      cout<<"-----------------------------------------------------------------制作人:梅沙小子\n"<<endl;      cout<<"********************************************************************************\n"<<endl;      cout<<"================================================================================\n"<<endl;          cout<<"请按任意将进入学生管理系统:"<<endl;      getchar();      system("cls");        cout<<"================================================================================\n\n";      cout<<"------------------------ 请选择要操作的命令:-----------------------------------\n\n";      cout<<"-------------------------- 1 输入学生信息--------------------------------------\n\n";      cout<<"-------------------------- 2 输出学生信息--------------------------------------\n\n";      cout<<"-------------------------- 3 删除学生信息--------------------------------------\n\n";      cout<<"-------------------------- 4 查找学生信息--------------------------------------\n\n";      cout<<"-------------------------- 5 修改学生信息--------------------------------------\n\n";      cout<<"-------------------------- 6 将学生的语文成绩按从大到小排----------------------\n\n";      cout<<"-------------------------- 7 将学生的数学成绩按从大到小排----------------------\n\n";      cout<<"-------------------------- 8 将学生的英语成绩按从大到小排----------------------\n\n";      cout<<"-------------------------- 9 将学生的总成绩按从大到小排------------------------\n\n";      cout<<"================================================================================\n\n";          int Item;//操作命令    Student st;//学生对象    while(1)     {          cout<<"请选择操作命令:";          cin>>Item;          system("cls");//清屏           switch(Item)          {              case 1://输入学生信息              {                  st.InputStudent();              }              break;                case 2://输出学生信息              {                  st.OutputStudent();              }              break;              case 3://删除学生信息              {                  st.DeleteStudent();             }              break;                case 4://查找学生信息              {                  st.SearchStudent();              }              break;                case 5://修改学生信息              {                 st.ChangeStudent();               }                          break;               case 6://对学生的语文成绩排序              {                  st.ScortByChinese();                 st.OutputStudent();              }              break;                case 7://对学生的数学成绩排序              {                  st.ScortByMath();                  st.OutputStudent();              }              break;                case 8://对学生的英语成绩排序              {                  st.ScortByEnglish();                  st.OutputStudent();              }              break;                case 9://对学生的总分排序              {                  st.ScortByTotal();                  st.OutputStudent();            }              break;              default:              break;          }      }        system("pause");  } 



0 0
原创粉丝点击