梦独吟 2019-10-23 20:01 采纳率: 100%
浏览 379
已结题

这个简单的学生信息系统调试时怎么不能进行查询成绩!!求大佬教教我!!!谢谢

这个简单的学生信息系统调试时怎么不能进行查询成绩!!求大佬教教我!!!谢谢

代码如下:


#include<iostream>
#include<iomanip>
#include<cstring>
using namespace std;
struct student
{
    char name[20];//姓名
    double sum;//总分和平均分
    double MT, EN, PH;//各科成绩
    long num;//学号
};
int readscore(student stu[])
{
    int count=0;//人数
    cout.setf(ios::right);
    cout << "名字" << setw(5);
    cout << "学号" << setw(5);
    cout << "数学" << setw(5);
    cout << "英语" << setw(5);
    cout << "物理" << setw(5);
    cout << endl;
    for (int i = 0; i < 30; i++)
    {
        cin >> stu[i].name >> stu[i].num >> stu[i].MT >> stu[i].EN >> stu[i].PH;
        if (stu[i].MT <= 0)
            break;
        count++;
    }return count;
}
int getsum(student stu[],int n)
{
    double Sum = 0;
    for (int i = 0; i < n; i++)
    {
        stu[i].sum = 0;
        stu[i].sum = stu[i].MT + stu[i].EN + stu[i].PH;
        Sum = stu[i].sum;

    }return Sum;
}
void mppx(student stu[], int n)
{
    for (int m = n-1; m >0; m--)
    {
        int max = 0;

        char name[20];//姓名

        long num = 0;//学号

        double mt = 0;//数学

        double en = 0;//英语

        double ph = 0;//物理

        for (int i = 0; i < m; i++)//排序
        {
            if (stu[i].sum <stu[i + 1].sum)
            {
                strcpy_s(name, stu[i].name);

                strcpy_s(stu[i].name, stu[i + 1].name);

                strcpy_s(stu[i + 1].name, name);

                num = stu[i].num;

                stu[i].num = stu[i + 1].num;

                stu[i + 1].num = num;

                mt = stu[i].MT;

                stu[i].MT = stu[i + 1].MT;

                stu[i + 1].MT = mt;
                en = stu[i].EN;
                stu[i].EN = stu[i + 1].EN;

                stu[i + 1].EN = en;

                ph = stu[i].PH;

                stu[i].PH = stu[i + 1].PH;

                stu[i + 1].PH = ph;

                max = stu[i].sum;

                stu[i].sum = stu[i + 1].sum;

                stu[i + 1].sum = max;
            }
        }
    }
    cout.setf(ios::left);

    cout << "总成绩表:" << endl;

    cout << "排名" << setw(5);

    cout << "姓名" << setw(5);

    cout << "学号" << setw(5);

    cout << "总分" << setw(5);

    cout << "高数" << setw(5);

    cout << "英语" << setw(5);

    cout << "物理" << setw(5);

    cout << "平均分" << endl;
    for (int j = 0; j < n; j++)
    {
        cout.setf(ios::left);
        cout << j + 1 << setw(5);
        cout << stu[j].name << setw(5);
        cout << stu[j].num << setw(5);
        cout << stu[j].sum << setw(5);
        cout << stu[j].MT << setw(5);
        cout << stu[j].EN << setw(5);
        cout << stu[j].PH << setw(5);
        cout << stu[j].sum / 3 << endl;
    }
}
int find(student stu[], int n)//查询成绩

{

    int a = 0, b = 0;

    long num;

    cin >> num;

    for (int j = 0; j < n; j++)

    {

        if (num == stu[j].num)

        {
            b++;
            a++;
        }

    }

    if (b != 0)

    {

        cout.setf(ios::left);

        cout << "排名" << setw(5);

        cout << "姓名" << setw(5);

        cout << "学号" << setw(5);

        cout << "总分" << setw(5);

        cout << "高数" << setw(5);

        cout << "英语" << setw(5);

        cout << "物理" << setw(5);

        cout << "平均分" << endl;

    }

    for (int i = 0; i < n; i++)

    {

        if (num == stu[i].num)

        {

            cout.setf(ios::left);

            cout << i + 1 << setw(5);

            cout << stu[i].name << setw(5);

            cout << stu[i].num << setw(5);

            cout << stu[i].sum << setw(5);

            cout << stu[i].MT << setw(5);

            cout << stu[i].EN << setw(5);

            cout << stu[i].PH << setw(5);

            cout << stu[i].sum / 3 << endl;

        }

    }

    if (a == 0)

    {

        cout << "查无此人!请重新输入:";

        return -1;

    }
}

int main()
{
    student stu[30];
    double a;
    a = readscore(stu);
    cout << "===============================================" << endl; getsum(stu, a);
    for (int i = 0; i < a; i++)

    {

        cout.setf(ios::left);

        cout << "姓名" << stu[i].name << setw(5);

        cout << "数学" << stu[i].MT << setw(5);

        cout << "英语" << stu[i].EN << setw(5);

        cout << "物理" << stu[i].PH << endl;

    }

    cout << "总人数:" << a << endl;

    cout << "***********************************************" << endl; mppx(stu, a);

    cout << "***********************************************" << endl;
    cout << "请输入要查找的学号:"<<endl;
    find(stu, a);
    cout << endl;
    return 0;

}
  • 写回答

1条回答 默认 最新

  • threenewbee 2019-10-24 00:15
    关注
    cout << "请输入要查找的学号:"<<endl;
    这句话之后的代码,我都没看到你有让用户输入要查找学号的逻辑。能查找就见鬼了。
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?