zoukankan      html  css  js  c++  java
  • 使用C++实现学生管理系统

    我在前面的博客中分别使用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<<"================================================================================
    "<<endl;  
        cout<<"================================================================================
    "<<endl;  
        cout<<"*************************欢迎使用学生成绩管理系统*******************************
    "<<endl;  
        cout<<"-----------------------------------------------------------------制作人:梅沙小子
    "<<endl;  
        cout<<"********************************************************************************
    "<<endl;  
        cout<<"================================================================================
    "<<endl;  
        
        cout<<"请按随意将进入学生管理系统:"<<endl;  
        getchar();  
        system("cls");  
      
        cout<<"================================================================================
    
    ";  
        cout<<"------------------------ 请选择要操作的命令:-----------------------------------
    
    ";  
        cout<<"-------------------------- 1 输入学生信息--------------------------------------
    
    ";  
        cout<<"-------------------------- 2 输出学生信息--------------------------------------
    
    ";  
        cout<<"-------------------------- 3 删除学生信息--------------------------------------
    
    ";  
        cout<<"-------------------------- 4 查找学生信息--------------------------------------
    
    ";  
        cout<<"-------------------------- 5 改动学生信息--------------------------------------
    
    ";  
        cout<<"-------------------------- 6 将学生的语文成绩按从大到小排----------------------
    
    ";  
        cout<<"-------------------------- 7 将学生的数学成绩按从大到小排----------------------
    
    ";  
        cout<<"-------------------------- 8 将学生的英语成绩按从大到小排----------------------
    
    ";  
        cout<<"-------------------------- 9 将学生的总成绩按从大到小排------------------------
    
    ";  
        cout<<"================================================================================
    
    ";  
        
        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");  
    } 
    



  • 相关阅读:
    redis 一主二从三哨兵
    java 调用axis2 webservice
    oracle 自增ID
    yum安装命令的使用方法
    SLES 10安装Oracle10gR2笔记
    信息系统集成资质等级评定条件(暂行)
    ionic imgBase64
    IOS 断点下载
    IOS JSON
    citrix更换vcenter后所需改动几张表
  • 原文地址:https://www.cnblogs.com/llguanli/p/7002412.html
Copyright © 2011-2022 走看看