7enkd 2022-09-19 21:11 采纳率: 50%
浏览 18
已结题

请教一下这个问题,怎样取消只能识别小写字母的限制

请教一下。
编了一个成绩管理系统的程序,在选择功能的时候只能识别小写字母,怎样让他不再区分大小写。
也就是说当我输入A的时候也可以实现a的功能。在选择是否继续某功能时也是一样的问题。
因为内容长度限制我只贴了一部分代码。
代码删的太多,你们复制上去会报错。
我放了个图片,应该能表达清楚我的问题。

img

#include <iostream>
#include <string>
#include<fstream>
#include<iomanip>
#include<ctype.h>
using namespace std;
struct score//各门功课结构体
{
    float m_DataStructurescore;
    float m_Englishscore;
    float m_Mathscore;
    float m_PE;
    float m_Probability;
};
struct student//学生结构体
{
    string number;
    string name;
    string sex;
    score Grade; //5 门课程
    float average; //学生的各门课程的平均分
};
int amount = 0; //记录学生实际个数
int const Q = 80;//预设学生人数
student* stud = new student[Q]; //预设存储学生的空间 结构体数
void InputScore();//录入学生信息
void DisplayMainMenu();//显示菜单
void SearchByName();//查询
void SearchByNumber();//查询
void EditByName();//修改
void EditByNumber();//修改
void Delete();//删除学生信息
void ShowStudentInfo();//显示学生信息
void Insert();//添加记录
void extendsSpace();//空间扩充 以原空间 75%扩
int main()
{
    char x;
    bool flag2 = 0;
    DisplayMainMenu(); //显示菜单
    do
    {
        do
        {
            cin >> x; //选择菜单的功能号
            if ((x >= 'a' && x <= 'z'))flag2 = 1;
            else
            {
                cout << "指令错误!!!!!!!!!!" << endl;
                cout << " 请选择相应的数字进行操作: " << endl;
            }
        } while (flag2 == 0);
        switch (x) //根据菜单选项,执行相应的功能
        {
        case 'a':
            cout << "******************************现在进行学生信息录入******************************\n";
            InputScore();
            cout << "输入的学生信息为:" << endl;
            ShowStudentInfo();
            cout << "********************************************************************************\n";
            DisplayMainMenu(); break;
        case 'b':
        {
            char z;
            cout << "******************************现在进行学生信息查询******************************\n";
            cout << "请选择查询方式:" << endl;
            cout << "(0)--按姓名查询; (1)--按学号查询;" << endl;
            cin >> z;
            while (z != '0' && z != '1')
            {
                cout << "指令错误(请选择(0)或者(1))!!!!!!!" << endl;
                cout << "请选择查询方式:(0)--按姓名查询; (1)--按学号查询;";
                cin >> z;
            }
            switch (z)
            {
            case '0':SearchByName(); break;//按姓名查询
            case '1':SearchByNumber(); break;//按学号查询
            }
            cout << "********************************************************************************\n";
            DisplayMainMenu();
            break;
        }
        case 'c':
        {char p;
        cout << "******************************现在进行学生信息修改******************************\n";
        cout << "请选择修改方式:(0)--按姓名修改; (1)--按学号修改;" << endl;
        cin >> p;
        while (p != '0' && p != '1')
        {
            cout << "指令错误(请选择(0)或者(1))!!!!!!!" << endl;
            cout << "请选择修改方式:(0)--按姓名修改; (1)--按学号修改;" << endl;
            cin >> p;
        }
        switch (p)
        {
        case '0': EditByName(); break;//按姓名修改
        case '1': EditByNumber(); break;//按学号修改
        }
        cout << "********************************************************************************\n";
        DisplayMainMenu();
        break;
        }
        case 'd':
            cout << "******************************现在进行学生信息删除******************************\n";
            Delete();//删除
            ShowStudentInfo();
            cout << "********************************************************************************\n";
            DisplayMainMenu();
            break;
        case 'e':
            cout << "******************************现在进行显示学生信息******************************\n";
            ShowStudentInfo(); //显示数据
            cout << "********************************************************************************\n";
            DisplayMainMenu();
            break;
        case 'f':
            cout << "******************************现在进行保存学生信息******************************\n";
            save();//保存学生信息
            cout << "********************************************************************************\n";
            DisplayMainMenu();
            break;
        case 'g':
            cout << "******************************现在进行读取学生信息******************************\n";
            FreadFile();
            cout << "********************************************************************************\n";
            DisplayMainMenu();
            break;
        case 'h':
            cout << "******************************现在进行统计学生信息******************************\n";
            Statistics();//统计学生信息
            cout << "********************************************************************************\n";
            DisplayMainMenu();
            break;
        case 'i':
        {
            char a;
            cout << "******************************现在进行排序******************************\n";
            cout << "请选择排序方式:" << endl;
            cout << "1 按数据结构成绩排序 " << endl;
            cout << "2 按英语成绩排序 " << endl;
            cout << "3 按数学成绩排序 " << endl;
            cout << "4 按体育成绩排序 " << endl;
            cout << "5 按概率成绩排序 " << endl;
            cout << "6 按平均分排序 " << endl;
            cin >> a;
            while (a < '1' || a>'6')
            {
                cout << "指令错误(请选择(1-6))!!!!!!!" << endl;
                cout << "1 按数据结构成绩排序 " << endl;
                cout << "2 按英语成绩排序 " << endl;
                cout << "3 按数学成绩排序 " << endl;
                cout << "4 按体育成绩排序 " << endl;
                cout << "5 按概率成绩排序 " << endl;
                cout << "6 按平均分排序 " << endl;
                cin >> a;
            }
            switch (a)
            {
            case '1': Sort_DataStructrue(); break;// 按数据结构成绩排序
            case '2': Sort_English(); break;//按英语成绩排序
            case '3': Sort_Math(); break;//按数学成绩排序
            case '4': Sort_PE(); break;//按体育成绩排序
            case '5': Sort_Probability(); break;//按概率成绩排序
            case '6': Sort_Average(); break;//按平均分排序
            }
            cout << "********************************************************************************\n";
            DisplayMainMenu();
            break;
        }
        case 'j':
            cout << "********************************************************************************\n";
            cout << " 您已退出学生成绩管理系统, 谢谢您的使用! \n";
            cout << "********************************************************************************\n";
            cout << endl;
            exit(0);
            break;
        case 'k':
            cout << "********************************************************************************\n";
            cout << "*****************************现在进行插入学生信息*******************************\n";
            Insert();
            cout << "********************************************************************************\n";
            DisplayMainMenu();
            break;
        }
    } while (flag2 == 1);
    return 0;
}
void DisplayMainMenu()//显示菜单
{
    cout << "\t\t ---------------------------------------------- \n";
    cout << "\t\t|****************学生成绩管理系统************|\n";
    cout << "\t\t|*------------------------------------------*|\n";
    cout << "\t\t|* a.录入学生信息 b.查询学生信息 *|\n";
    cout << "\t\t|* *|\n";
    cout << "\t\t|* c.修改学生信息 d.删除学生信息 *|\n";
    cout << "\t\t|* *|\n";
    cout << "\t\t|* e.显示学生信息 f.保存学生信息 *|\n";
    cout << "\t\t|* *|\n";
    cout << "\t\t|* g.读文件 h.统计学生信息 *|\n";
    cout << "\t\t|* *|\n";
    cout << "\t\t|* i.排序 k.插入学生信息 *|\n";
    cout << "\t\t|* *|\n";
    cout << "\t\t|* j.退出本软件 *|\n";
    cout << "\t\t|********************************************|\n";
    cout << "\t\t ----------------------------------------------\n";
}
void ShowStudentInfo()//显示学生信息
{
    cout << " 学号 姓名 性别 数据结构 英语 数学 体育 概率 平均分" << endl;
    int i = 0;
    while (i < amount) {
        cout << setw(8) << stud[i].number;
        cout << setw(8) << stud[i].name;
        cout << setw(5) << stud[i].sex;
        cout << setw(10) << stud[i].Grade.m_DataStructurescore;
        cout << setw(12) << stud[i].Grade.m_Englishscore;
        cout << setw(8) << stud[i].Grade.m_Mathscore;
        cout << setw(8) << stud[i].Grade.m_PE;
        cout << setw(7) << stud[i].Grade.m_Probability;
        cout << setw(9) << stud[i].average;
        cout << endl;
        i++;
    }
}
void extendsSpace()//空间扩充
{
    student* st = new student[amount];
    for (int i = 0; i < amount; i++)
        st[i] = stud[i];
    stud = new student[amount + amount * 0.75];
    for (int i = 0; i < amount; i++)
        stud[i] = st[i];
    delete[]st;
}
void InputScore()//录入学生数据
{
    amount = 0;
    char c = ' ';
    int i = 0;
    do
    {
        cout << "请输入学号:(8 位)" << setw(4);
        cin >> stud[i].number;
        cout << "请输入姓名: " << setw(4);
        cin >> stud[i].name;
        cout << "请输入性别:" << setw(2);
        cin >> stud[i].sex;
        cout << "请输入数据结构成绩:" << setw(3);
        cin >> stud[i].Grade.m_DataStructurescore;
        cout << "请输入英语成绩: " << setw(3);
        cin >> stud[i].Grade.m_Englishscore;
        cout << "请输入数学成绩: " << setw(3);
        cin >> stud[i].Grade.m_Mathscore;
        cout << "请输入体育成绩: " << setw(3);
        cin >> stud[i].Grade.m_PE;
        cout << "请输入概率成绩: " << setw(3);
        cin >> stud[i].Grade.m_Probability;
        stud[i].average = 0.2 * (stud[i].Grade.m_DataStructurescore + stud[i].Grade.m_Englishscore +
            stud[i].Grade.m_Mathscore + stud[i].Grade.m_PE + stud[i].Grade.m_Probability);
        amount++;
        if (amount >= Q) extendsSpace();
        cout << "数据信息录入成功,想继续录入吗?(y/n)";
        cin >> c;
        while (c != 'y' && c != 'n')
        {
            cout << "指令错误<请输入 y/n!>!!!!!!" << endl;
            cout << "数据信息录入成功,想继续录入吗(y/n)";
            cin >> c;
        }
        i++;
    } while (c == 'y');
    cout << "输入了" << amount << "个学生的信息." << endl;
}
void SearchByName()//按姓名查询
{
    char c = ' ';
    string name;
    int i;
    do
    {
        bool flag = 0;
        cout << "请输入您要查询的学生姓名:" << endl;
        cin >> name;
        for (i = 0; i < amount; i++)
        {
            if (name == stud[i].name)
            {
                flag = 1;
                cout << "您要查询的学生是:" << stud[i].name << endl;
                cout << " 学号 姓名 性别 数据结构 英语 数学 体育 概率 平均分" << endl;
                cout << setw(8) << stud[i].number;
                cout << setw(8) << stud[i].name;
                cout << setw(5) << stud[i].sex;
                cout << setw(10) << stud[i].Grade.m_DataStructurescore;
                cout << setw(12) << stud[i].Grade.m_Englishscore;
                cout << setw(8) << stud[i].Grade.m_Mathscore;
                cout << setw(8) << stud[i].Grade.m_PE;
                cout << setw(7) << stud[i].Grade.m_Probability;
                cout << setw(9) << stud[i].average;
                cout << endl;
                break;
            }
        }//for
        if (flag == 1)
        {
            cout << "您想继续查询吗?(y/n)" << endl;
            cin >> c;
            while (c != 'y' && c != 'n')
            {
                cout << "指令错误!!!!!<请输入 y/n!!!!!!>" << endl;
                cin >> c;
            }
        }
        if (flag == 0)
        {
            cout << "对不起!您要查询的学生不存在!!!!!!!" << endl;
            cout << "您想继续查询吗?(y/n)" << endl;
            cin >> c;
            while (c != 'y' && c != 'n')
            {
                cout << "指令错误!!!!!<请输入 y/n!!!!!!>" << endl;
                cin >> c;
            }
        }
    } while (c == 'y');
}
void SearchByNumber() //按学号查询
{
    char c = ' ';
    string no;
    int i;
    do
    {
        i = 0;
        bool flag = 0;
        cout << "请输入您要查询的学生学号:" << endl;
        cin >> no;
        for (int i2 = 1; i2 <= amount; i2++)
        {
            if (no == stud[i].number)
            {
                flag = 1;
                cout << "您要查询的学生是:" << stud[i].name << endl;
                cout << " 学号 姓名 性别 数据结构 英语 数学 体育 概率 平均分" << endl;
                cout << setw(8) << stud[i].number;
                cout << setw(8) << stud[i].name;
                cout << setw(5) << stud[i].sex;
                cout << setw(10) << stud[i].Grade.m_DataStructurescore;
                cout << setw(12) << stud[i].Grade.m_Englishscore;
                cout << setw(8) << stud[i].Grade.m_Mathscore;
                cout << setw(8) << stud[i].Grade.m_PE;
                cout << setw(7) << stud[i].Grade.m_Probability;
                cout << setw(9) << stud[i].average;
                cout << endl;
                break;
            }
        }//for
        if (flag == 1)
        {
            cout << "您想继续查询吗?(y/n)" << endl;
            cin >> c;
            while (c != 'y' && c != 'n')
            {
                cout << "指令错误!!!!!<请输入 y/n!!!!!!>" << endl;
                cin >> c;
            }
        }
        if (flag == 0)
        {
            cout << "对不起!您要查询的学生不存在!!!!!!!" << endl;
            cout << "您想继续查询吗?(y/n)" << endl;
            cin >> c;
            while (c != 'y' && c != 'n')
            {
                cout << "指令错误!!!!!<请输入 y/n!!!!!!>" << endl;
                cin >> c;
            }
        }
    } while (c == 'y');
}
void EditByName()//修改学生数据,按姓名修改
{
    string name; char c = ' ';
    do
    {
        bool flag = 0;
        int i = 0;
        score Grade;
        cout << "请输入您要修改的学生的姓名:" << endl;
        cin >> name;
        do
        {
            if (name == stud[i].name)
            {
                flag = 1;
                cout << "请输入新的数据结构成绩:" << endl;
                cin >> Grade.m_DataStructurescore;
                stud[i].Grade.m_DataStructurescore = Grade.m_DataStructurescore;
                cout << "请输入新的英语成绩:" << endl;
                cin >> Grade.m_Englishscore;
                stud[i].Grade.m_Englishscore = Grade.m_Englishscore;
                cout << "请输入新的数学成绩:" << endl;
                cin >> Grade.m_Mathscore;
                stud[i].Grade.m_Mathscore = Grade.m_Mathscore;
                cout << "请输入新的体育成绩:" << endl;
                cin >> Grade.m_PE;
                stud[i].Grade.m_PE = Grade.m_PE;
                cout << "请输入新的概率成绩:" << endl;
                cin >> Grade.m_Probability;
                stud[i].Grade.m_Probability = Grade.m_Probability;
                stud[i].average = 0.2 * (stud[i].Grade.m_DataStructurescore + stud[i].Grade.m_Englishscore +
                    stud[i].Grade.m_Mathscore + stud[i].Grade.m_PE + stud[i].Grade.m_Probability);
                cout << " 学号 姓名 性别 数据结构 英语 数学 体育 概率 平均分" << endl;
                cout << setw(8) << stud[i].number;
                cout << setw(8) << stud[i].name;
                cout << setw(5) << stud[i].sex;
                cout << setw(10) << stud[i].Grade.m_DataStructurescore;
                cout << setw(12) << stud[i].Grade.m_Englishscore;
                cout << setw(8) << stud[i].Grade.m_Mathscore;
                cout << setw(8) << stud[i].Grade.m_PE;
                cout << setw(7) << stud[i].Grade.m_Probability;
                cout << setw(9) << stud[i].average;
                cout << endl;
                cout << ".......数据修改成功!\n";
                break;
            }
            i++;
        } while (i < amount);
        if (flag == 0)
            cout << "对不起,您要修改的学生不存在!请重新输入!!!!!!" << endl;
        cout << "想继续修改吗?(y/n)" << endl;
        cin >> c;
        while (c != 'y' && c != 'n')
        {
            cout << "指令错误<请输入 y/n!>!!!!!!!" << endl;
            cout << "您想继续修改吗?(y/n)" << endl;
            cin >> c;
        }
    } while (c == 'y');
}
void EditByNumber()//修改学生数据,按学号修改
{
    string number;
    char c = ' ';
    do
    {
        bool flag = 0;
        int i = 0;
        score Grade;
        cout << "请输入您要修改的学生的学号:" << endl;
        cin >> number;
        do
        {
            if (number == stud[i].number)
            {
                flag = 1;
                cout << "请输入新的数据结构成绩:" << endl;
                cin >> Grade.m_DataStructurescore;
                stud[i].Grade.m_DataStructurescore = Grade.m_DataStructurescore;
                cout << "请输入新的英语成绩:" << endl;
                cin >> Grade.m_Englishscore;
                stud[i].Grade.m_Englishscore = Grade.m_Englishscore;
                cout << "请输入新的数学成绩:" << endl;
                cin >> Grade.m_Mathscore;
                stud[i].Grade.m_Mathscore = Grade.m_Mathscore;
                cout << "请输入新的体育成绩:" << endl;
                cin >> Grade.m_PE;
                stud[i].Grade.m_PE = Grade.m_PE;
                cout << "请输入新的概率成绩:" << endl;
                cin >> Grade.m_Probability;
                stud[i].Grade.m_Probability = Grade.m_Probability;
                stud[i].average = 0.2 * (stud[i].Grade.m_DataStructurescore + stud[i].Grade.m_Englishscore +
                    stud[i].Grade.m_Mathscore + stud[i].Grade.m_PE + stud[i].Grade.m_Probability);
                cout << " 学号 姓名 性别 数据结构 英语 数学 体育 概率 平均分" << endl;
                cout << setw(8) << stud[i].number;
                cout << setw(8) << stud[i].name;
                cout << setw(5) << stud[i].sex;
                cout << setw(10) << stud[i].Grade.m_DataStructurescore;
                cout << setw(12) << stud[i].Grade.m_Englishscore;
                cout << setw(8) << stud[i].Grade.m_Mathscore;
                cout << setw(8) << stud[i].Grade.m_PE;
                cout << setw(7) << stud[i].Grade.m_Probability;
                cout << setw(9) << stud[i].average;
                cout << endl;
                cout << ".......数据修改成功!\n";
                break;
            }
            i++;
        } while (i < amount);
        if (flag == 0)
            cout << "对不起,您要修改的学生不存在!请重新输入!!!!!!" << endl;
        cout << "想继续修改吗?(y/n)" << endl;
        cin >> c;
        while (c != 'y' && c != 'n')
        {
            cout << "指令错误<请输入 y/n!>!!!!!!!" << endl;
            cout << "您想继续修改吗?(y/n)" << endl;
            cin >> c;
        }
    } while (c == 'y');
}
void Delete()//删除学生信息
{
    char c = ' ';
    string no;
    int j, i = 0;
    do
    {
        bool flag = 0;
        cout << "请输入您要删除的学生的学号:" << endl;
        cin >> no;
        while (stud[i].number != no)i++;
        if (i < amount)//查找成功
        {
            flag = 1;
            for (j = i; j < amount - 1; j++)
                stud[j] = stud[j + 1]; //通过移位删除 i 位置的学生信息
            amount--;
            cout << ".......删除成功!!!!!!" << endl;
        }
        if (flag == 0)
        {
            cout << "对不起!!!您要删除的学生不存在!!!!!" << endl;
            cout << "您想继续删除吗?(y/n)" << endl;
            cin >> c;
            while (c != 'y' && c != 'n')
            {
                cout << "指令错误!!!<请输入 y/n!!>" << endl;
                cin >> c;
            }
        }
    } while (c == 'y');
}
void Insert() //尾部加入
{
    char c = ' ';
    do
    {
        cout << "请输入学号:(8 位)" << setw(4);
        cin >> stud[amount].number;
        cout << "请输入姓名: " << setw(4);
        cin >> stud[amount].name;
        cout << "请输入性别:" << setw(1);
        cin >> stud[amount].sex;
        cout << "请输入数据结构成绩:" << setw(3);
        cin >> stud[amount].Grade.m_DataStructurescore;
        cout << "请输入英语成绩: " << setw(3);
        cin >> stud[amount].Grade.m_Englishscore;
        cout << "请输入数学成绩: " << setw(3);
        cin >> stud[amount].Grade.m_Mathscore;
        cout << "请输入体育成绩: " << setw(3);
        cin >> stud[amount].Grade.m_PE;
        cout << "请输入概率成绩: " << setw(3);
        cin >> stud[amount].Grade.m_Probability;
        stud[amount].average = 0.2 * (stud[amount].Grade.m_DataStructurescore + stud[amount].Grade.m_Englishscore
            + stud[amount].Grade.m_Mathscore + stud[amount].Grade.m_PE + stud[amount].Grade.m_Probability);
        amount++;
        if (amount >= Q)extendsSpace(); //超过预设空间,则动态增加
        cout << "数据信息插入成功,想继续插入吗?(y/n)";
        cin >> c;
        while (c != 'y' && c != 'n')
        {
            cout << "指令错误<请输入 y/n!>!!!!!!" << endl;
            cout << "数据信息插入成功,想继续插入吗(y/n)";
            cin >> c;
        }
    } while (c == 'y');
}
  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-09-19 21:32
    关注

    你可以在输入完字符后,立即进行字符转换,将大写转换为小写。这样后续代码都不需要改。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月29日
  • 已采纳回答 9月21日
  • 修改了问题 9月19日
  • 创建了问题 9月19日

悬赏问题

  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂