自寫的學生信息管理系統

#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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章