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