自写的学生信息管理系统

来源:互联网 发布:好看的戒指知乎 编辑:程序博客网 时间:2024/05/22 03:08
#include <iostream>#include <iomanip>#include <string>#include <vector>using namespace std;const int NUM = 30;const int CLASS_PRO = 5;enum name_pro {chinese, matchs, english, physics, chemistry};//课程//单个学生信息class stq{public:stq(){}stq(int num, string name, string name_class, double a, double b,double c, double d, double e){this->num = num;this->name = name;this->name_class = name_class;sum[chinese] = a;sum[matchs] = b;sum[english] = c;sum[physics] = d;sum[chemistry] = e;}int getnum(){return num;}//返回学号string getname(){return name;}//返回名字string getname_class(){return name_class;}//返回班级double getsum(int sn){return sum[sn];}//返回单课程成绩int getgsum()//返回总成绩{double gsum = 0;for (int i = 0; i < CLASS_PRO; ++i){gsum += sum[i];}return gsum;}int getpsum()//返回平均成绩{return getgsum() / CLASS_PRO;}void output()//输出学生信息{cout << num << "\t" << name << "\t" << name_class << "\t";for (int i = 0; i < CLASS_PRO; ++i){cout << sum[i] << "\t";}}private:int num;//学号string name;//姓名string name_class;//班级double sum[CLASS_PRO];//成绩};class str{public:    str()//构造函数{}    void entry()//录入菜单{double sum[CLASS_PRO];cout << "请输入学生信息以及成绩!\n";cout << "学号:";int a;cin >> a;cout <<"姓名:";string b;cin >> b;cout << "成绩:\n";cout << "语文:";cin >> sum[0];cout << "数学:";cin >> sum[1];cout << "英语:";cin >> sum[2];cout << "物理:";cin >> sum[3];cout << "化学:";cin >> sum[4];cout <<"班级:";string d;cin >> d;        stq student(a, b, d, sum[0], sum[1], sum[2], sum[3], sum[4]);bum.push_back(student);}    void check()//查询菜单{    cout << "\n" << "--------------------\n"     << "查询-菜单:\n" << "【1】.学号\t"     << "\t【2】.课程\t" << "\t【0】.主菜单\n";    int o;    cin >> o;    switch (o){    case 0: win_main(); break;    case 1: check_num(); break;    case 2: check_pro(); break;    default:    cout << "无效指令!\n";    cin >> o;    break;}}    void check_num()//按学号查询{cout << "\n";    cout << "【1】.查询该学生成绩\t【2】.查询该学生平均成绩\n【0】.返回主菜单\n";    int a;    cin >> a;switch (a){case 0: win_main(); break;case 1: check_student_sum(); break;case 2: check_student_psum(); break;}}void check_student_sum()//查询该学生全部成绩{cout << "请输入学号:\n";int n;cin >> n;cout << "-------------------------学生信息------------------------\n";cout << "学号\t" << "姓名\t" << "班级\t" << "语文\t" <<"数学\t" << "英语\t" << "物理\t" << "化学\t" << endl;bum[n - 1].output();cout << "\n【1】.返回上一级\t【2】.主菜单\n";int o;cin >> o;switch (o){case 1: check_num(); break;case 2: win_main(); break;}}void check_student_psum()//查询平均成绩{cout << "请输入学号:\n";int n;cin >> n;cout << "-------------------------学生信息------------------------\n";cout << bum[n - 1].getname() << "学生的平均成绩:" << bum[n - 1].getpsum() << endl;cout << "【1】.返回上一级\t【2】.主菜单\n";int o;cin >> o;switch (o){case 1: check_num(); break;case 2: win_main(); break;}}void check_pro()//按课程查询{cout << "\n";    cout << "【1】.查询该课程平均成绩\t【2】.查询该课程及格率\n";cout << "【3】.查询该课程最低成绩\t【4】.查询该课程最高成绩\n【0】.返回主菜单\n";    int a;    cin >> a;switch (a){case 0: win_main(); break;case 1: check_pro_psum(); break;case 2: check_pro_gsum(); break;case 3: check_pro_min(); break;case 4: check_pro_max(); break;}}void check_pro_psum()//该科目平均成绩{cout << "\n请输入查询科目:\n";cout << "【0】.语文\t【1】.数学\t【2】.英语\t【3】.物理\t【4】.化学\n";int n;cin >> n;double sum_all = 0;        for (int i = 0; i != bum.size(); ++i)sum_all += bum[i].getsum(n);double sum_p = sum_all / bum.size();switch (n){case 0: {cout << "语文平均分为:" << sum_p << endl;}break;case 1: {cout << "数学平均分为:" << sum_p << endl;}break;case 2: {cout << "英语平均分为:" << sum_p << endl;}break;case 3: {cout << "物理平均分为:" << sum_p << endl;}break;case 4: {cout << "化学平均分为:" << sum_p << endl;}break;default:cout << "无效指令!" << endl;cin >> n;break;}        cout << "【1】.返回上一级\t【2】.主菜单\n";int o;cin >> o;switch (o){case 1: check_pro(); break;case 2: win_main(); break;}}void check_pro_gsum()//该课程及格率{cout << "\n请输入查询科目:\n";cout << "【0】.语文\t【1】.数学\t【2】.英语\t【3】.物理\t【4】.化学\n";int n;cin >> n;double sum_all = 0;        for (int i = 0; i != bum.size(); ++i){if (bum[i].getsum(n) > 60)++sum_all;}double sum_p = sum_all / bum.size();cout << fixed << setprecision(4);switch (n){case 0: {cout << "语文及格率为:" << sum_p << endl;}break;case 1: {cout << "数学及格率为:" << sum_p << endl;}break;case 2: {cout << "英语及格率为:" << sum_p << endl;}break;case 3: {cout << "物理及格率为:" << sum_p << endl;}break;case 4: {cout << "化学及格率为:" << sum_p << endl;}break;default:cout << "无效指令!" << endl;cin >> n;break;}cout << "【1】.返回上一级\t【2】.主菜单\n";int o;cin >> o;switch (o){case 1: check_pro(); break;case 2: win_main(); break;}}void check_pro_min()//该课程最低成绩{cout << "\n请输入查询科目:\n";cout << "【0】.语文\t【1】.数学\t【2】.英语\t【3】.物理\t【4】.化学\n";int n;cin >> n;double min = bum[0].getsum(n);for (int i = 0; i != bum.size(); ++i){if (min > bum[i].getsum(n))min = bum[i].getsum(n);}switch (n){case 0: {cout << "语文最低成绩为:" << min << endl;}break;case 1: {cout << "数学最低成绩为:" << min << endl;}break;case 2: {cout << "英语最低成绩为:" << min << endl;}break;case 3: {cout << "物理最低成绩为:" << min << endl;}break;case 4: {cout << "化学最低成绩为:" << min << endl;}break;default:cout << "无效指令!" << endl;cin >> n;break;}}void check_pro_max()//该课程最高成绩{cout << "\n请输入查询科目:\n";cout << "【0】.语文\t【1】.数学\t【2】.英语\t【3】.物理\t【4】.化学\n";int n;cin >> n;double max = bum[0].getsum(n);for (int i = 0; i != bum.size(); ++i){if (max < bum[i].getsum(n))max = bum[i].getsum(n);}switch (n){case 0: {cout << "语文最高成绩为:" << max << endl;}break;case 1: {cout << "数学最高成绩为:" << max << endl;}break;case 2: {cout << "英语最高成绩为:" << max << endl;}break;case 3: {cout << "物理最高成绩为:" << max << endl;}break;case 4: {cout << "化学最高成绩为:" << max << endl;}break;default:cout << "无效指令!" << endl;cin >> n;break;}cout << "【1】.返回上一级\t【2】.主菜单\n";int o;cin >> o;switch (o){case 1: check_pro(); break;case 2: win_main(); break;}}void win_main()//主菜单{cout << "\n" << "--------------------\n"     << "******系统菜单******\n"     << "【1】.录入\t【2】.查询\t【0】.退出" << endl;    int p;    cin >> p;    switch (p){    case 0: return;    case 1: entry(); break;    case 2: check(); break;    default:     cout << "无效指令!\n";    cin >> p;    break;}}    void win()//登陆界面{    cout << "**学生成绩管理系统**\n" << "请输入密码:";    string pwd;    cin >> pwd;    while (pwd != "123"){    cout << "输入指令错误!请重新输入!\n";    cin >> pwd;}    while (1){win_main();}}private:vector<stq> bum;};int main(){str s;s.win();return 0;}