标题:大神能不能帮我加两个功能吗? 这是学生成绩管理 加个学生信息排序 和 学 ...
只看楼主
lwc8212349
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-10-12
结帖率:0
 问题点数:0 回复次数:1 
大神能不能帮我加两个功能吗? 这是学生成绩管理 加个学生信息排序 和 学生信息插入这两个功能
#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 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::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;
    }
}

int main()
{
    cout<<"系统说明描述====================================================================\n\n";
    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<<"================================================================================\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.ScortByTotal();  
                st.OutputStudent();
            }  
            break;
            case 7://退出
  
              exit(0);  
  
              break;  
            default:  
            break;  
        }  
    }  
  
    system("pause");  
}
搜索更多相关主题的帖子: 学生 学生信息 void Score cout 
2018-01-17 14:24
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
得分:0 
看你用的是 C++,给你一点参考
C++ 的 algorithm 库里面有两个函数,sort() 和 qsort(),具体可以百度一下,可以按照自己类里面的某一项或者多项元素进行排序,排序的规则需要自己写
两个函数都在 std 里
排序属于数据结构,如果你是大一的话,可能没学过,可以用别人写好的函数,以后有了数据结构的基础,可以试着自己写
不想用别人写好的,可以去网上搜一下简单选择排序或者冒泡排序,这两个在排序里相对简单
你说的插入,我猜应该是在某个位置插入吧?最后一个位置直接插入应该是很简单的
那就是把某个位置的所有元素都往后移动一个,从最后一个开始往前,循环(数据结构里的顺序表)
移动之后再在那个位置插入即可

[此贴子已经被作者于2018-1-17 18:18编辑过]

2018-01-17 18:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484297-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.334483 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved