欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實(shí)現(xiàn)學(xué)生選課系統(tǒng)的思路與詳細(xì)過程

 更新時間:2023年01月10日 14:15:36   作者:小小圓臉  
C語言是在國內(nèi)外廣泛使用的一種計(jì)算機(jī)語言,下面這篇文章主要給大家介紹了關(guān)于C++實(shí)現(xiàn)學(xué)生選課系統(tǒng)的思路與詳細(xì)過程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、項(xiàng)目要求

(1)學(xué)生有自己的 ID、姓名 、年級 、選課信息等;

(2)學(xué)生可以進(jìn)行對已選課程的增刪改查;

(3)每個課程有自己的學(xué)分,授課老師等;

二、模塊分析

分析:

我們首要的首要的任務(wù)就是先對模塊進(jìn)行劃分;從項(xiàng)目的要求出發(fā);該系統(tǒng)可以大致分為兩大類;

課程類(用來保存每門課程的信息,例如編號,名稱,學(xué)分,授課教師);

學(xué)生類(用來保存每個學(xué)生的信息;例如編號,名字,性別。年級,分?jǐn)?shù));

對于這兩個類來說;他們擁有相同的一點(diǎn);就是編號和名稱;所以可以脫出一個類用其他兩個類來繼承它;

設(shè)計(jì)思路

首先思考:打造一個火車那就先建造每一節(jié)車廂 ;而車廂就像是一個貨物清單;用c++的類來實(shí)現(xiàn);當(dāng)一個車廂建造出來之后;最后就是用工具將它連接起來;

對項(xiàng)目分析:

(1)首先設(shè)計(jì)兩個火車,一個是課程的;一個是學(xué)生的;

(2)每個火車都有自己的屬性和成員;

(3)學(xué)生火車可以操作課程火車;

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP5bCP5ZyG6IS4,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP5bCP5ZyG6IS4,size_20,color_FFFFFF,t_70,g_se,x_16

類實(shí)現(xiàn):(也就是每一節(jié)車廂的模板)

1)基類(信息類)

目的:保存學(xué)生和課程共有的屬性也就是,編號和名稱;

class info
{
protected:
	long number;//編號
	string name;//名稱
public:
	info() {}
	info(long num, string name) :number(num), name(name) {}
};

2)課程類;(公有繼承信息類)

class course : public info//課程類
{
private:
	int credit;//學(xué)分
	string teachername;//授課教師
public:
	course() {}
	course(long num, string name, int cre, string tea) : info(num, name)
	{
		credit = cre;
		teachername = tea;
	}
	course(const course& c1)
	{
		number = c1.number;
		name = c1.name;
		credit = c1.credit;
		teachername = c1.teachername;
	}
	static void print();//輸出數(shù)據(jù)
	static void get();//獲取數(shù)據(jù)
	static void add();//增加數(shù)據(jù)
	static void del();//刪除數(shù)據(jù)
	static void edit();//修改數(shù)據(jù)
	static int ishave(long si);//查詢是否有該課程
};

3)學(xué)生類(公有繼承信息類)

class student : public info//學(xué)生類
{
private:
	string sex;//性別
	string grade;//年級
	long scredit;
public:
	vector<course> havec;//查詢學(xué)生選課信息
	student() {}
	student(long num, string name, string se, string gra, long scr) : info(num, name)
	{
		sex = se;
		grade = gra;
		scredit = scr;
	}
	static void print();//輸出數(shù)據(jù)
	static void get();//獲取數(shù)據(jù)
	static void add();//增加數(shù)據(jù)
	static void del();//刪除數(shù)據(jù)
	static void edit();//修改數(shù)據(jù)
	static int ishave(long si);//查詢是否有該學(xué)生
	static void addcourse();// 為學(xué)生添加課程
	static void delcourse();//為學(xué)生刪除課程
	static int ishavec(long si);//查詢該學(xué)生是否有該課程
};

函數(shù)實(shí)現(xiàn)

1) void print();向屏幕輸出課程信息

void course::print()
{
	system("cls");
 
	for (int i = 0; i < c.size(); i++)
	{
		cout << "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" << endl;
		cout << endl << "課程編號:" << c[i].number << "   課程名稱:" << c[i].name << "   課程學(xué)分:" \
			<< c[i].credit << "   授課老師:" << c[i].teachername << endl;
	}
 
	cout << "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" << endl;
	cprintorget();
}

2)void get();指定課程的信息,用課程編號獲取

void course::get()//獲得課程信息
{
	system("cls");
	long k = 1, kk;
 
	cout << "*************請輸入要查詢的課程編號**************" << endl;
	
	cin >> kk;
	if (ishave(kk))
	{
		for (size_t i = 0; i < c.size(); i++)
			if (c[i].number == kk)
			{
				cout << endl << "課程編號:" << c[i].number << "   課程名稱:" << c[i].name << "   課程學(xué)分:" \
					<< c[i].credit << "   授課老師:" << c[i].teachername << endl;
				break;
			}
	}
	else
	{
		cout << "*************沒有該課程******************" << endl;
	
	}
	cprintorget();
}

3)void add();增加一個課程的信息

void course::add()
{
	system("cls");
	long k = 1; course c1;
	cout << "$        請輸入要添加的課程編號:      $" << endl;
	cin >> c1.number;
	while (ishave(c1.number))
	{
 
		system("cls");
	
		cout << "***************************************" <<endl;
		cout << "        該課程已添加,請重新輸入:       " << endl;
		cout << "              (按0退出)               " << endl;
		cout << "***************************************" << endl;
		cin >> k;
		if (k == 0)
		{
			cinfo();
			break;
		}
		else c1.number = k;
 
	}
	if (k != 0)
	{
		
		cout << "$           請輸入課程名稱:           &" << endl;
		cin >> c1.name;
		cout << "****************************************" << endl;
		cout << "            請輸入課程學(xué)分:             " << endl;
		cout << "****************************************" << endl;
		cin >> c1.credit;
		cout << "****************************************" << endl;
		cout << "          請輸入授課老師名稱:            " << endl;
		cout << "****************************************" << endl;
		cin >> c1.teachername;
		system("cls");
		c.push_back(c1);
		cinfo();
	}
}

4)void del() ; 刪除某個課程信息(老師)

void course::del()//老師刪除課程信息
{
	system("cls");
	long k = 1, kk;
	cout << "***************請輸入要刪除的課程編號****************" << endl;
	cin >> kk;
	if (ishave(kk))
	{
		for (auto p = c.begin(); p != c.end();)
		{
			if (p->number == kk)
			{
				p = c.erase(p);
				break;
			}
			else
				++p;
		}
		cout << "***************成功刪除該課程********************" << endl;
		
}
	else
	{
		
		cout << "****************你還沒有添加該課程****************" << endl;
	}
}

5)void edit();修改課程信息(老師)

void course::edit()//老師修改課程信息
{
	system("cls");
	long k = 1, kk;
	cout << "       請輸入要修改課程的課程編號:     " << endl;
	cin >> kk;
	if (ishave(kk))
	{
		for (size_t i = 0; i < c.size(); i++)
		{
			if (c[i].number == kk)
			{
				system("cls");
				cout << "          請重新輸入課程名稱:           " << endl;
				cin >> c[i].name;
				cout << "          請重新輸入課程學(xué)分:           " << endl;
				cin >> c[i].credit;
				cout << "         請重新輸入授課老師名稱:         " << endl;
				cin >> c[i].teachername;
				cout << "              修改成功。                 " << endl;
				break;
			}
		}
	}
	else
	{
		cout << "              沒有該課程 。             " << endl;
 
	}
 
}

6)void ishave(long si);查詢是否有該課程

int course::ishave(long si)//查詢是否有該課程
{
	for (size_t i = 0; i < c.size(); i++)
		if (c[i].number == si)
			return true;
	return false;
}

7)void print();打印學(xué)生的信息

void student::print()//打印所有學(xué)生信息
{
	long sumk = 0;
	system("cls");
	for (int i = 0; i < s.size(); i++)
	{
		sumk = 0;
		cout << "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" << endl;
		cout << endl << "學(xué)生學(xué)號:" << s[i].number << "   姓名:" << s[i].name << "   性別:" \
			<< s[i].sex << "   年級:" << s[i].grade << endl << endl\
			<< "學(xué)生已選課程:" << endl;
		if (s[i].havec.size() == 0)
		{
			cout << "無" << endl;
			continue;
		}
		else
		{
			for (int k = 0; k < s[i].havec.size(); k++)
			{
				cout << endl << "課程編號:" << s[i].havec[k].number << "   課程名稱:" << s[i].havec[k].name << "   課程學(xué)分:" \
					<< s[i].havec[k].credit << "   授課老師:" << s[i].havec[k].teachername << endl;
				sumk = sumk + s[i].havec[k].credit;
 
			}
			cout << endl << "該學(xué)生本學(xué)期共有" << s[i].scredit << "學(xué)分,已選" << s[i].havec.size() << "門,共" << sumk << "學(xué)分。" << endl;
		}
	}cout << "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" << endl;
	sprintorget();
}

8)void get();獲取學(xué)生的信息

void student::get()//獲取學(xué)生信息
{
	system("cls");
	long k = 1, kk, sumk = 0;
	cout << "          請輸入要查詢的學(xué)生學(xué)號:       " << endl;
	cin >> kk;
	system("cls");
	if (ishave(kk))
	{
		for (size_t i = 0; i < s.size(); i++)
			if (s[i].number == kk)
			{
				cout << "************************************************** << endl;
				cout << endl << "學(xué)生學(xué)號:" << s[i].number << "   姓名:" << s[i].name << "   性別:" \
					<< s[i].sex << "   年級:" << s[i].grade << endl << endl\
					<< "學(xué)生已選課程:" << endl;
				if (s[i].havec.size() == 0)
				{
					cout << "無" << endl;
					continue;
				}
				else
				{
					for (int k = 0; k < s[i].havec.size(); k++)
					{
						cout << endl << "課程編號:" << s[i].havec[k].number << "   課程名稱:" << s[i].havec[k].name << "   課程學(xué)分:" \
							<< s[i].havec[k].credit << "   授課老師:" << s[i].havec[k].teachername << endl;
						sumk = sumk + s[i].havec[k].credit;
					}
					cout << endl << "該學(xué)生本學(xué)期共有" << s[i].scredit << "學(xué)分,已選" << s[i].havec.size() << "門,共" << sumk << "學(xué)分。" << endl;
					cout << "************************************************" << endl;
				}
			}
	}
	else
	{
		cout << "              沒有該學(xué)生。            " << endl;
	}
	sprintorget();
}

9)void add();添加學(xué)生的信息

void student::add()//添加學(xué)生信息
{
	system("cls");
	long k = 1; student s1;
	cout << "          請輸入要添加的學(xué)生學(xué)號:        " << endl;
	cin >> s1.number;
	while (ishave(s1.number))
	{
 
		system("cls");
		cout << "       該學(xué)生已添加,請重新輸入:       " << endl;
		cout << "             (按0退出)               " << endl;
		cin >> k;
		if (k == 0)
		{
			sinfo();
			break;
		}
		else s1.number = k;
 
	}
	if (k != 0)
	{
		cout << "             請輸入學(xué)生姓名:            " << endl;
		cin >> s1.name; 
		cout << "             請輸入學(xué)生性別:             " << endl;
		cin >> s1.sex;
		cout << "             請輸入學(xué)生年級:            " << endl;
		cin >> s1.grade; 
		system("cls");
		s.push_back(s1);
		sinfo();
	}
}

效果展示

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP5bCP5ZyG6IS4,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP5bCP5ZyG6IS4,size_20,color_FFFFFF,t_70,g_se,x_16

源代碼:

#if 1
#include <iostream>
#include<string.h>
#include <windows.h>
#include <vector>
#include<algorithm>
#include <string>
using namespace std;
using std::vector;
int Menu();
void cinfo();
void cprintorget();
void sinfo();
void sprintorget();
char password[16] = "1234";
 
class info//信息類
{
protected:
	long number;//編號
	string name;//名稱
public:
	info() {}
	info(long num, string name) :number(num), name(name) {}
};
 
class course : public info//課程類
{
protected:
	int credit;//學(xué)分
	string teachername;//授課教師
public:
	course() {}
	course(long num, string name, int cre, string tea) : info(num, name)
	{
		credit = cre;
		teachername = tea;
	}
	course(const course& c1)
	{
		number = c1.number;
		name = c1.name;
		credit = c1.credit;
		teachername = c1.teachername;
	}
	static void print();//輸出數(shù)據(jù)
	static void get();//獲取數(shù)據(jù)
	static void add();//增加數(shù)據(jù)
	static void del();//刪除數(shù)據(jù)
	static void edit();//修改數(shù)據(jù)
	static int ishave(long si);//查詢是否有該課程
	friend class student;
};
vector<course> c;
 
class student : public info//學(xué)生類
{
	
protected:
	string sex;//性別
	string grade;//年級
	long scredit;
public:
	vector<course> havec;//查詢學(xué)生選課信息
	student() {}
	student(long num, string name, string se, string gra, long scr) : info(num, name)
	{
		sex = se;
		grade = gra;
		scredit = scr;
	}
	static void print();//輸出數(shù)據(jù)
	static void get();//獲取數(shù)據(jù)
	static void add();//增加數(shù)據(jù)
	static void del();//刪除數(shù)據(jù)
	static void edit();//修改數(shù)據(jù)
	static int ishave(long si);//查詢是否有該學(xué)生
	static void addcourse();// 為學(xué)生添加課程
	static void delcourse();//為學(xué)生刪除課程
	static int ishavec(long si);//查詢該學(xué)生是否有該課程
};
vector<student> s;
 
 
void course::print()//打印所以課程信息 
{
	system("cls");
 
	for (int i = 0; i < c.size(); i++)
	{
		cout << endl << "課程編號:" << c[i].number << "   課程名稱:" << c[i].name << "   課程學(xué)分:" \
			<< c[i].credit << "   授課老師:" << c[i].teachername << endl;
	}
 
	cprintorget();
}
 
void course::get()//獲得課程信息
{
	system("cls");
	long k = 1, kk;
	
	cout << "        請輸入要查詢的課程編號:      " << endl;
	cin >> kk;
	if (ishave(kk))
	{
		for (size_t i = 0; i < c.size(); i++)
			if (c[i].number == kk)
			{
				cout << endl << "課程編號:" << c[i].number << "   課程名稱:" << c[i].name << "   課程學(xué)分:" \
					<< c[i].credit << "   授課老師:" << c[i].teachername << endl;
				break;
			}
	}
	else
	{	
		cout << "              沒有該課程 。           " << endl;
	}
	cprintorget();
}
 
void course::add()
{
	system("cls");
	long k = 1; course c1;
	cout << "        請輸入要添加的課程編號:      " << endl;
	cin >> c1.number;
	while (ishave(c1.number))
	{
 
		system("cls");
		cout << "┃      該課程已添加,請重新輸入:      ┃" << endl;
		cout << "┃             (按0退出)              ┃" << endl;
		cin >> k;
		if (k == 0)
		{
			cinfo();
			break;
		}
		else c1.number = k;
 
	}
	if (k != 0)
	{
		cout << "           請輸入課程名稱:            " << endl;
		cin >> c1.name;
		cout << "           請輸入課程學(xué)分:           " << endl;
		cin >> c1.credit;
		cout << "          請輸入授課老師名稱:         " << endl;
		cin >> c1.teachername;
		system("cls");
		c.push_back(c1);
		cinfo();
	}
}
 
void course::del()//老師刪除課程信息
{
	system("cls");
	long k = 1, kk;
	cout << "         請輸入要刪除的課程編號:       " << endl;
	cin >> kk;
	if (ishave(kk))
	{
		for (auto p = c.begin(); p != c.end();)
		{
			if (p->number == kk)
			{
				p = c.erase(p);
				break;
			}
			else
				++p;
		}
		cout << "            成功刪除該課程。          " << endl;
	}
	else
	{
		cout << "          你還沒有添加該課程 。        " << endl;
	}
}
 
void course::edit()//老師修改課程信息
{
	system("cls");
	long k = 1, kk;
	cout << "      請輸入要修改課程的課程編號:    " << endl;
	cin >> kk;
	if (ishave(kk))
	{
		for (size_t i = 0; i < c.size(); i++)
		{
			if (c[i].number == kk)
			{
				system("cls");
				
				cout << "         請重新輸入課程名稱:         " << endl;
				cin >> c[i].name;
				cout << "         請重新輸入課程學(xué)分:         " << endl;
				cin >> c[i].credit;
				cout << "       請重新輸入授課老師名稱:       " << endl;
				cin >> c[i].teachername;
				cout << "              修改成功。              " << endl;
				break;
			}
		}
	}
	else
	{
		cout << "              沒有該課程 。           " << endl;
	}
 
}
 
int course::ishave(long si)//查詢是否有該課程
{
	for (size_t i = 0; i < c.size(); i++)
		if (c[i].number == si)
			return true;
	return false;
}
void student::print()//打印所有學(xué)生信息
{
	long sumk = 0;
	system("cls");
	for (int i = 0; i < s.size(); i++)
	{
		sumk = 0;
		cout << endl << "學(xué)生學(xué)號:" << s[i].number << "   姓名:" << s[i].name << "   性別:" \
			<< s[i].sex << "   年級:" << s[i].grade << endl << endl\
			<< "學(xué)生已選課程:" << endl;
		if (s[i].havec.size() == 0)
		{
			cout << "無" << endl;
			continue;
		}
		else
		{
			for (int k = 0; k < s[i].havec.size(); k++)
			{
				cout << endl << "課程編號:" << s[i].havec[k].number << "   課程名稱:" << s[i].havec[k].name << "   課程學(xué)分:" \
					<< s[i].havec[k].credit << "   授課老師:" << s[i].havec[k].teachername << endl;
				sumk = sumk + s[i].havec[k].credit;
 
			}
			cout << endl << "該學(xué)生本學(xué)期共有" << s[i].scredit << "學(xué)分,已選" << s[i].havec.size() << "門,共" << sumk << "學(xué)分。" << endl;
		}
	}
	sprintorget();
}
 
void student::get()//獲取學(xué)生信息
{
	system("cls");
	long k = 1, kk, sumk = 0;
	cout << "        請輸入要查詢的學(xué)生學(xué)號:      " << endl;
	cin >> kk;
	system("cls");
	if (ishave(kk))
	{
		for (size_t i = 0; i < s.size(); i++)
			if (s[i].number == kk)
			{
				cout << endl << "學(xué)生學(xué)號:" << s[i].number << "   姓名:" << s[i].name << "   性別:" \
					<< s[i].sex << "   年級:" << s[i].grade << endl << endl\
					<< "學(xué)生已選課程:" << endl;
				if (s[i].havec.size() == 0)
				{
					cout << "無" << endl;
					continue;
				}
				else
				{
					for (int k = 0; k < s[i].havec.size(); k++)
					{
						cout << endl << "課程編號:" << s[i].havec[k].number << "   課程名稱:" << s[i].havec[k].name << "   課程學(xué)分:" \
							<< s[i].havec[k].credit << "   授課老師:" << s[i].havec[k].teachername << endl;
						sumk = sumk + s[i].havec[k].credit;
 
					}
					cout << endl << "該學(xué)生本學(xué)期共有" << s[i].scredit << "學(xué)分,已選" << s[i].havec.size() << "門,共" << sumk << "學(xué)分。" << endl;
				}
			}
	}
	else
	{
		cout << "              沒有該學(xué)生。            " << endl;
	}
	sprintorget();
}
 
void student::add()//添加學(xué)生信息
{
	system("cls");
	long k = 1; student s1;
	cout << "        請輸入要添加的學(xué)生學(xué)號:      " << endl;
	cin >> s1.number;
	while (ishave(s1.number))
	{
		system("cls");
		cout << "┃      該學(xué)生已添加,請重新輸入:      ┃" << endl;
		cout << "┃             (按0退出)              ┃" << endl;
		cin >> k;
		if (k == 0)
		{
			sinfo();
			break;
		}
		else s1.number = k;
 
	}
	if (k != 0)
	{
		cout << "           請輸入學(xué)生姓名:           " << endl;
		cin >> s1.name;
		cout << "           請輸入學(xué)生性別:           " << endl;
		cin >> s1.sex;
		cout << "           請輸入學(xué)生年級:           " << endl;
		cin >> s1.grade;
		system("cls");
		s.push_back(s1);
		sinfo();
	}
}
 
void student::del()    //刪除學(xué)生信息
{
	system("cls");
	long k = 1, kk;
	cout << "        請輸入要刪除的學(xué)生學(xué)號:      " << endl;
	cin >> kk;
	if (ishave(kk))
	{
		for (auto p = s.begin(); p != s.end();)
		{
			if (p->number == kk)
			{
				p = s.erase(p);
				break;
			}
			else
				++p;
		}
		cout << "            成功刪除該學(xué)生:          " << endl;
 
	}
	else
	{
		cout << "          你還沒有添加該學(xué)生 。       " << endl;
		
	}
}
 
void student::edit()//修改學(xué)生信息
{
	system("cls");
	long k = 1, kk;
	cout << "        請輸入要修改學(xué)生的學(xué)號:      " << endl;
	cin >> kk;
	if (ishave(kk))
	{
		for (size_t i = 0; i < s.size(); i++)
		{
			if (s[i].number == kk)
			{
				system("cls");	
				cout << "         請重新輸入學(xué)生姓名:         " << endl;
				cin >> s[i].name;
				cout << "         請重新輸入學(xué)生性別:         " << endl;
				cin >> s[i].sex;
				cout << "         請重新輸入學(xué)生年級:         " << endl;
				cin >> s[i].grade;
				cout << "              修改成功。              " << endl;
				break;
			}
		}
	}
	else
	{
		cout <<  "             沒有該學(xué)生。            " << endl;
	}
}
 
void student::addcourse()//添加課程
{
	system("cls");
	long k = 1, kk, sumk = 0, sk;
	cout << "           請輸入學(xué)生的學(xué)號:         " << endl;
	cin >> kk;
	if (ishave(kk))
	{
		for (size_t i = 0; i < s.size(); i++)
		{
			if (s[i].number == kk)
			{
			
				cout << endl << "學(xué)生學(xué)號:" << s[i].number << "   姓名:" << s[i].name << "   性別:" \
					<< s[i].sex << "   年級:" << s[i].grade << endl << endl\
					<< "學(xué)生已選課程:" << endl;
				if (s[i].havec.size() == 0)
				{
					cout << "無" << endl;
 
				}
				else
				{
					for (int k = 0; k < s[i].havec.size(); k++)
					{
						cout << endl << "課程編號:" << s[i].havec[k].number << "   課程名稱:" << s[i].havec[k].name << "   課程學(xué)分:" \
							<< s[i].havec[k].credit << "   授課老師:" << s[i].havec[k].teachername << endl;
						sumk = sumk + s[i].havec[k].credit;
 
					}
					cout << endl << "該學(xué)生本學(xué)期共有" << s[i].scredit << "學(xué)分,已選" << s[i].havec.size() << "門,共" << sumk << "學(xué)分。" << endl;
				
				}
				
				cout << "          請輸入要添加的課程:        " << endl;
				cin >> sk;
				for (size_t k = 0; k < s[i].havec.size(); k++)
					if (s[i].havec[k].number == sk)
					{
						cout << "         已有該課程,無法添加。       " << endl;	
					}
					else
					{
						if (course::ishave(sk))
						{
							course c1;
							for (size_t jk = 0; jk < c.size(); jk++)
							{
								if (c[jk].number == sk)
								{
									c1.number = c[jk].number;
									c1.name = c[jk].name;
									c1.credit = c[jk].credit;
									c1.teachername = c[jk].teachername;
								}
							}
							sumk = sumk + c1.credit;
							if (sumk > s[i].scredit)
							{
								cout << "┃          學(xué)分不足,無法添加。        ┃" << endl;
							}
							else
							{
								s[i].havec.push_back(c1);		
								cout << "┃               添加成功。             ┃" << endl;
								break;
							}
 
 
						}
						else
						{
							cout << "┃           系統(tǒng)內(nèi)沒有該課程 。        ┃" << endl;
						}
					}
 
			}
		}
	}
	else
	{
		cout << "              沒有該學(xué)生。            " << endl;
	}
}
 
void student::delcourse()//刪除課程 
{
	system("cls");
	long k = 1, kk, sumk = 0, sk;
	cout << "           請輸入學(xué)生的學(xué)號:         " << endl;
	cin >> kk;
	if (ishave(kk))
	{
		for (size_t i = 0; i < s.size(); i++)
		{
			if (s[i].number == kk)
			{
				cout << endl << "學(xué)生學(xué)號:" << s[i].number << "   姓名:" << s[i].name << "   性別:" \
					<< s[i].sex << "   年級:" << s[i].grade << endl << endl\
					<< "學(xué)生已選課程:" << endl;
				if (s[i].havec.size() == 0)
				{
					cout << "無" << endl;
					continue;
				}
				else
				{
					for (int k = 0; k < s[i].havec.size(); k++)
					{
						cout << endl << "課程編號:" << s[i].havec[k].number << "   課程名稱:" << s[i].havec[k].name << "   課程學(xué)分:" \
							<< s[i].havec[k].credit << "   授課老師:" << s[i].havec[k].teachername << endl;
						sumk = sumk + s[i].havec[k].credit;
 
					}
					cout << endl << "該學(xué)生本學(xué)期共有" << s[i].scredit << "學(xué)分,已選" << s[i].havec.size() << "門,共" << sumk << "學(xué)分。" << endl;
				}
				cout << "          請輸入要刪除的課程:        " << endl;
				cin >> sk;
				for (auto p = s[i].havec.begin(); p != s[i].havec.end();)
				{
					if (p->number == sk)
					{
						p = s[i].havec.erase(p);
						break;
					}
					else
						++p;
				}
				cout << "               刪除成功。             " << endl;
			}
		}
	}
	else
	{
		cout << "              沒有該學(xué)生。            " << endl;
 
	}
}
 
int student::ishave(long si)
{
	for (size_t i = 0; i < s.size(); i++)
		if (s[i].number == si)
			return true;
	return false;
}
 
void cprintorget()//查詢或展示課程信息
{
	cout << endl;
	cout << "      **學(xué)生選課信息管理系統(tǒng)**   " << endl;
	cout << "      ┏━━━━━━━━━━━━━━━━━━━━━┓   " << endl;
	cout << "      ┃ 請選擇功能:        ┃   " << endl;
	cout << "      ┃ 1.查詢課程信息      ┃  " << endl;
	cout << "      ┃ 2.展示課程信息      ┃  " << endl;
	cout << "      ┃ 3.回到上一頁        ┃  " << endl;
	cout << "      ┗━━━━━━━━━━━━━━━━━━━━━┛   " << endl;
	cout << "      請輸入序號(1~3)進(jìn)入系統(tǒng)操作:  " << endl;
	cout << endl;
	int ii, k = 1;
	cin >> ii;
	while (k)
	{
		if (ii > 3 || ii < 1)
		{
			cout << "輸入錯誤,請重新輸入數(shù)字1~3。" << endl;
			cin >> ii;
		}
 
		else
			k = 0;
	}
	system("cls");
	switch (ii)
	{
	case 1: course::get(); break;
	case 2: course::print(); break;
	case 3:cinfo(); break;
	}
}
 
void cinfo()//學(xué)生選課信息
{
	system("cls");
	cout << endl;
	cout << "      **學(xué)生選課信息管理系統(tǒng)**   " << endl;
	cout << "      ┏━━━━━━━━━━━━━━━━━━━━━┓   " << endl;
	cout << "      ┃ 請選擇功能:        ┃   " << endl;
	cout << "      ┃ 1.查詢課程信息      ┃  " << endl;
	cout << "      ┃ 2.錄入課程信息      ┃  " << endl;
	cout << "      ┃ 3.刪除課程信息      ┃  " << endl;
	cout << "      ┃ 4.修改課程信息      ┃  " << endl;
	cout << "      ┃ 5.回到主菜單        ┃  " << endl;
	cout << "      ┗━━━━━━━━━━━━━━━━━━━━━┛   " << endl;
	cout << "      請輸入序號(1~5)進(jìn)入系統(tǒng)操作:  " << endl;
	cout << endl;
 
	int ii, k = 1;
	cin >> ii;
	while (k)
	{
		if (ii > 5 || ii < 1)
		{
			cout << "輸入錯誤,請重新輸入數(shù)字1~5。" << endl;
			cin >> ii;
		}
 
		else
			k = 0;
	}
	system("cls");
	switch (ii)
	{
	case 1: cprintorget(); break;
	case 2:course::add(); break;
	case 3:course::del(); break;
	case 4:course::edit(); break;
	case 5:Menu(); break;
	}
}
 
void sprintorget()//查詢或展示學(xué)生信息
{
	cout << endl;
	cout << "      **學(xué)生選課信息管理系統(tǒng)**   " << endl;
	cout << "      ┏━━━━━━━━━━━━━━━━━━━━━┓   " << endl;
	cout << "      ┃ 請選擇功能:        ┃   " << endl;
	cout << "      ┃ 1.查詢學(xué)生信息      ┃  " << endl;
	cout << "      ┃ 2.展示學(xué)生信息      ┃  " << endl;
	cout << "      ┃ 3.回到上一頁        ┃  " << endl;
	cout << "      ┗━━━━━━━━━━━━━━━━━━━━━┛   " << endl;
	cout << "      請輸入序號(1~3)進(jìn)入系統(tǒng)操作:  " << endl;
	cout << endl;
	int ii, k = 1;
	cin >> ii;
	while (k)
	{
		if (ii > 3 || ii < 1)
		{
			cout << "輸入錯誤,請重新輸入數(shù)字1~3。" << endl;
			cin >> ii;
		}
 
		else
			k = 0;
	}
	system("cls");
	switch (ii)
	{
	case 1: student::get(); break;
	case 2: student::print(); break;
	case 3:sinfo(); break;
	}
}
 
void sinfo()
{
	system("cls");
	cout << endl;
	cout << "      **學(xué)生選課信息管理系統(tǒng)**   " << endl;
	cout << "      ┏━━━━━━━━━━━━━━━━━━━━━┓   " << endl;
	cout << "      ┃ 請選擇功能:        ┃   " << endl;
	cout << "      ┃ 1.查詢學(xué)生信息      ┃  " << endl;
	cout << "      ┃ 2.錄入學(xué)生信息      ┃  " << endl;
	cout << "      ┃ 3.刪除學(xué)生信息      ┃  " << endl;
	cout << "      ┃ 4.修改學(xué)生信息      ┃  " << endl;
	cout << "      ┃ 5.為學(xué)生添加課程    ┃  " << endl;
	cout << "      ┃ 6.為學(xué)生刪除課程    ┃  " << endl;
	cout << "      ┃ 7.回到主菜單        ┃  " << endl;
	cout << "      ┗━━━━━━━━━━━━━━━━━━━━━┛   " << endl;
	cout << "      請輸入序號(1~7)進(jìn)入系統(tǒng)操作:  " << endl;
	cout << endl;
 
	int ii, k = 1;
	cin >> ii;
	while (k)
	{
		if (ii > 7 || ii < 1)
		{
			cout << "輸入錯誤,請重新輸入數(shù)字1~7。" << endl;
			cin >> ii;
		}
 
		else
			k = 0;
	}
	system("cls");
	switch (ii)
	{
	case 1: sprintorget(); break;
	case 2:student::add(); break;
	case 3:student::del(); break;
	case 4:student::edit(); break;
	case 5:student::addcourse(); break;
	case 6:student::delcourse(); break;
	case 7:Menu(); break;
	}
}
 
void login()//登錄界面
{
	cout << "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" << endl;
	cout << "┃                                      ┃" << endl;
	cout << "┃歡迎您使用學(xué)生選課信息管理系統(tǒng)管理端!┃" << endl;
	cout << "┃                                      ┃" << endl;
	cout << "┃    請輸入密碼:(默認(rèn)密碼:1234)    ┃" << endl;
	cout << "┃                                      ┃" << endl;
	cout << "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" << endl;
	int k = 0;
	char input[16];
	cin >> input;
	while (strcmp(password, input) != 0)
	{
		cout << "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" << endl;
		cout << "┃                                      ┃" << endl;
		cout << "┃        密碼錯誤,請重新輸入。        ┃" << endl;
		cout << "┃                                      ┃" << endl;
		cout << "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" << endl;
		cin >> input;
		k++;
 
		if (k > 3)
		{
			cout << "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" << endl;
			cout << "┃                                      ┃" << endl;
			cout << "┃    輸入錯誤超過5次,暫停操作5秒。    ┃" << endl;
			cout << "┃                                      ┃" << endl;
			cout << "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" << endl;
			Sleep(5000);
			k = 0;
			system("cls");
			cout << "             請重新輸入。             " << endl;
			cin >> input;
		}
	}
 
	if (strcmp(password, input) == 0)
	{
		system("cls");
		cout << "          登錄成功,歡迎您 !         " << endl;
	}
}
 
void changepassword()//修改密碼
{
	int kk = 1;
	char p1[16], p2[16];
	while (kk) {
		system("cls");
		cout << "            請輸入新密碼:            " << endl;
		cin >> p1;
		cout << "           請重新輸入密碼:           " << endl;
		cin >> p2;
		if (strcmp(p1, p2) != 0)
		{
			cout << "  兩次輸入的密碼不一致 ,請重新輸入。 " << endl;
		}
		else
		{
			system("cls");
			cout << "       更改密碼成功,請重新登錄。     " << endl;
			strcpy_s(password, p1);
			kk = 0;
			login();
		}
	}
}
 
 
int Menu()//菜單
{
	while (1)
	{
		cout << endl;
		cout << "      **學(xué)生選課信息管理系統(tǒng)**   " << endl;
		cout << "      ┏━━━━━━━━━━━━━━━━━━━━━┓   " << endl;
		cout << "      ┃ 請選擇功能:        ┃   " << endl;
		cout << "      ┃ 1.課程信息管理      ┃  " << endl;
		cout << "      ┃ 2.學(xué)生信息管理      ┃  " << endl;
		cout << "      ┃ 3.修改密碼          ┃  " << endl;
		cout << "      ┃ 4.注銷              ┃  " << endl;
		cout << "      ┃ 5.退出系統(tǒng)          ┃  " << endl;
		cout << "      ┗━━━━━━━━━━━━━━━━━━━━━┛   " << endl;
		cout << "      請輸入序號(1~5)進(jìn)入系統(tǒng)操作:  " << endl;
		cout << endl;
 
		int ii, k = 1;
		cin >> ii;
		while (k)
		{
			if (ii > 5 || ii < 1)
			{
				cout << "輸入錯誤,請重新輸入數(shù)字1~5。" << endl;
				cin >> ii;
			}
 
			else
				k = 0;
		}
 
		switch (ii)
		{
		case 1: cinfo(); break;
		case 2: sinfo(); break;
		case 3:
		{
			changepassword();
			login();
			break;
		}
		case 4:
		{
			system("cls");
			cout << "┃         注銷成功,請重新登錄。       ┃" << endl;
			login();
		}
		break;
		case 5: return 0;
			break;
		}
	}
}
//*****************************************************//
 
int main()
{
	
	return 0;
}
#endif

總結(jié)

到此這篇關(guān)于C++實(shí)現(xiàn)學(xué)生選課系統(tǒng)的思路與詳細(xì)過程的文章就介紹到這了,更多相關(guān)C++學(xué)生選課系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解C++函數(shù)類型與重載函數(shù)

    詳解C++函數(shù)類型與重載函數(shù)

    這篇文章主要為大家介紹了C++函數(shù)類型與重載函數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • c++拷貝構(gòu)造函數(shù)防篡改示例

    c++拷貝構(gòu)造函數(shù)防篡改示例

    這篇文章主要介紹了拷貝構(gòu)造函數(shù)防篡改示例,需要的朋友可以參考下
    2014-04-04
  • C++深入了解模板的使用

    C++深入了解模板的使用

    這篇文章主要介紹了C++中模板(Template)的詳解及其作用介紹,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Qt QImage和QPixmap使用與區(qū)別

    Qt QImage和QPixmap使用與區(qū)別

    Qt中QImage類封裝了對于一般圖像像素級的操作,圖像顯示則使用QPixmap,本文主要介紹了Qt QImage和QPixmap使用與區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • C++ clock()解析如何使用時鐘計(jì)時的應(yīng)用

    C++ clock()解析如何使用時鐘計(jì)時的應(yīng)用

    本篇文章是對c++中的clock()函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • C++ const的各種用法詳解

    C++ const的各種用法詳解

    const名叫常量限定符,用來限定特定變量,以通知編譯器該變量是不可修改的。習(xí)慣性的使用const,可以避免在函數(shù)中對某些不應(yīng)修改的變量造成可能的改動。本文主要談?wù)刢onst的用法,感興趣的同學(xué)可以參考閱讀
    2023-04-04
  • C語言函數(shù)的基本使用和遞歸詳解

    C語言函數(shù)的基本使用和遞歸詳解

    一個函數(shù)在它的函數(shù)體內(nèi)調(diào)用它自身稱為遞歸調(diào)用。這種函數(shù)稱為遞歸函數(shù)。C語言允許函數(shù)的遞歸調(diào)用。在遞歸調(diào)用中,主調(diào)函數(shù)又是被調(diào)函數(shù)。執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身,每調(diào)用一次就進(jìn)入新的一層
    2021-09-09
  • C語言字符串替換空格實(shí)例詳解

    C語言字符串替換空格實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了C語言字符串替換空格實(shí)例,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 一文帶你深入了解C++中音頻PCM數(shù)據(jù)

    一文帶你深入了解C++中音頻PCM數(shù)據(jù)

    PCM(Pulse Code Modulation)也被稱為脈沖編碼調(diào)制,是數(shù)字通信的編碼方式之一。這篇文章主要和大家聊聊C++中音頻PCM數(shù)據(jù)的相關(guān)操作,需要的可以參考一下
    2023-02-02
  • 解析c語言switch中break語句的具體作用

    解析c語言switch中break語句的具體作用

    以下是對c語言switch中break語句的作用進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-07-07

最新評論