C++實(shí)現(xiàn)學(xué)生選課系統(tǒng)的思路與詳細(xì)過(guò)程
一、項(xiàng)目要求
(1)學(xué)生有自己的 ID、姓名 、年級(jí) 、選課信息等;
(2)學(xué)生可以進(jìn)行對(duì)已選課程的增刪改查;
(3)每個(gè)課程有自己的學(xué)分,授課老師等;
二、模塊分析
分析:
我們首要的首要的任務(wù)就是先對(duì)模塊進(jìn)行劃分;從項(xiàng)目的要求出發(fā);該系統(tǒng)可以大致分為兩大類(lèi);
課程類(lèi)(用來(lái)保存每門(mén)課程的信息,例如編號(hào),名稱(chēng),學(xué)分,授課教師);
學(xué)生類(lèi)(用來(lái)保存每個(gè)學(xué)生的信息;例如編號(hào),名字,性別。年級(jí),分?jǐn)?shù));
對(duì)于這兩個(gè)類(lèi)來(lái)說(shuō);他們擁有相同的一點(diǎn);就是編號(hào)和名稱(chēng);所以可以脫出一個(gè)類(lèi)用其他兩個(gè)類(lèi)來(lái)繼承它;
設(shè)計(jì)思路
首先思考:打造一個(gè)火車(chē)那就先建造每一節(jié)車(chē)廂 ;而車(chē)廂就像是一個(gè)貨物清單;用c++的類(lèi)來(lái)實(shí)現(xiàn);當(dāng)一個(gè)車(chē)廂建造出來(lái)之后;最后就是用工具將它連接起來(lái);
對(duì)項(xiàng)目分析:
(1)首先設(shè)計(jì)兩個(gè)火車(chē),一個(gè)是課程的;一個(gè)是學(xué)生的;
(2)每個(gè)火車(chē)都有自己的屬性和成員;
(3)學(xué)生火車(chē)可以操作課程火車(chē);


類(lèi)實(shí)現(xiàn):(也就是每一節(jié)車(chē)廂的模板)
1)基類(lèi)(信息類(lèi))
目的:保存學(xué)生和課程共有的屬性也就是,編號(hào)和名稱(chēng);
class info
{
protected:
long number;//編號(hào)
string name;//名稱(chēng)
public:
info() {}
info(long num, string name) :number(num), name(name) {}
};2)課程類(lèi);(公有繼承信息類(lèi))
class course : public info//課程類(lèi)
{
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);//查詢(xún)是否有該課程
};3)學(xué)生類(lèi)(公有繼承信息類(lèi))
class student : public info//學(xué)生類(lèi)
{
private:
string sex;//性別
string grade;//年級(jí)
long scredit;
public:
vector<course> havec;//查詢(xún)學(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);//查詢(xún)是否有該學(xué)生
static void addcourse();// 為學(xué)生添加課程
static void delcourse();//為學(xué)生刪除課程
static int ishavec(long si);//查詢(xún)?cè)搶W(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 << "課程編號(hào):" << c[i].number << " 課程名稱(chēng):" << c[i].name << " 課程學(xué)分:" \
<< c[i].credit << " 授課老師:" << c[i].teachername << endl;
}
cout << "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" << endl;
cprintorget();
}2)void get();指定課程的信息,用課程編號(hào)獲取
void course::get()//獲得課程信息
{
system("cls");
long k = 1, kk;
cout << "*************請(qǐng)輸入要查詢(xún)的課程編號(hào)**************" << endl;
cin >> kk;
if (ishave(kk))
{
for (size_t i = 0; i < c.size(); i++)
if (c[i].number == kk)
{
cout << endl << "課程編號(hào):" << c[i].number << " 課程名稱(chēng):" << c[i].name << " 課程學(xué)分:" \
<< c[i].credit << " 授課老師:" << c[i].teachername << endl;
break;
}
}
else
{
cout << "*************沒(méi)有該課程******************" << endl;
}
cprintorget();
}3)void add();增加一個(gè)課程的信息
void course::add()
{
system("cls");
long k = 1; course c1;
cout << "$ 請(qǐng)輸入要添加的課程編號(hào): $" << endl;
cin >> c1.number;
while (ishave(c1.number))
{
system("cls");
cout << "***************************************" <<endl;
cout << " 該課程已添加,請(qǐng)重新輸入: " << endl;
cout << " (按0退出) " << endl;
cout << "***************************************" << endl;
cin >> k;
if (k == 0)
{
cinfo();
break;
}
else c1.number = k;
}
if (k != 0)
{
cout << "$ 請(qǐng)輸入課程名稱(chēng): &" << endl;
cin >> c1.name;
cout << "****************************************" << endl;
cout << " 請(qǐng)輸入課程學(xué)分: " << endl;
cout << "****************************************" << endl;
cin >> c1.credit;
cout << "****************************************" << endl;
cout << " 請(qǐng)輸入授課老師名稱(chēng): " << endl;
cout << "****************************************" << endl;
cin >> c1.teachername;
system("cls");
c.push_back(c1);
cinfo();
}
}4)void del() ; 刪除某個(gè)課程信息(老師)
void course::del()//老師刪除課程信息
{
system("cls");
long k = 1, kk;
cout << "***************請(qǐng)輸入要?jiǎng)h除的課程編號(hào)****************" << 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 << "****************你還沒(méi)有添加該課程****************" << endl;
}
}5)void edit();修改課程信息(老師)
void course::edit()//老師修改課程信息
{
system("cls");
long k = 1, kk;
cout << " 請(qǐng)輸入要修改課程的課程編號(hào): " << endl;
cin >> kk;
if (ishave(kk))
{
for (size_t i = 0; i < c.size(); i++)
{
if (c[i].number == kk)
{
system("cls");
cout << " 請(qǐng)重新輸入課程名稱(chēng): " << endl;
cin >> c[i].name;
cout << " 請(qǐng)重新輸入課程學(xué)分: " << endl;
cin >> c[i].credit;
cout << " 請(qǐng)重新輸入授課老師名稱(chēng): " << endl;
cin >> c[i].teachername;
cout << " 修改成功。 " << endl;
break;
}
}
}
else
{
cout << " 沒(méi)有該課程 。 " << endl;
}
}6)void ishave(long si);查詢(xún)是否有該課程
int course::ishave(long si)//查詢(xún)是否有該課程
{
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é)號(hào):" << s[i].number << " 姓名:" << s[i].name << " 性別:" \
<< s[i].sex << " 年級(jí):" << s[i].grade << endl << endl\
<< "學(xué)生已選課程:" << endl;
if (s[i].havec.size() == 0)
{
cout << "無(wú)" << endl;
continue;
}
else
{
for (int k = 0; k < s[i].havec.size(); k++)
{
cout << endl << "課程編號(hào):" << s[i].havec[k].number << " 課程名稱(chēng):" << 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() << "門(mén),共" << sumk << "學(xué)分。" << endl;
}
}cout << "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" << endl;
sprintorget();
}8)void get();獲取學(xué)生的信息
void student::get()//獲取學(xué)生信息
{
system("cls");
long k = 1, kk, sumk = 0;
cout << " 請(qǐng)輸入要查詢(xún)的學(xué)生學(xué)號(hào): " << 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é)號(hào):" << s[i].number << " 姓名:" << s[i].name << " 性別:" \
<< s[i].sex << " 年級(jí):" << s[i].grade << endl << endl\
<< "學(xué)生已選課程:" << endl;
if (s[i].havec.size() == 0)
{
cout << "無(wú)" << endl;
continue;
}
else
{
for (int k = 0; k < s[i].havec.size(); k++)
{
cout << endl << "課程編號(hào):" << s[i].havec[k].number << " 課程名稱(chēng):" << 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() << "門(mén),共" << sumk << "學(xué)分。" << endl;
cout << "************************************************" << endl;
}
}
}
else
{
cout << " 沒(méi)有該學(xué)生。 " << endl;
}
sprintorget();
}9)void add();添加學(xué)生的信息
void student::add()//添加學(xué)生信息
{
system("cls");
long k = 1; student s1;
cout << " 請(qǐng)輸入要添加的學(xué)生學(xué)號(hào): " << endl;
cin >> s1.number;
while (ishave(s1.number))
{
system("cls");
cout << " 該學(xué)生已添加,請(qǐng)重新輸入: " << endl;
cout << " (按0退出) " << endl;
cin >> k;
if (k == 0)
{
sinfo();
break;
}
else s1.number = k;
}
if (k != 0)
{
cout << " 請(qǐng)輸入學(xué)生姓名: " << endl;
cin >> s1.name;
cout << " 請(qǐng)輸入學(xué)生性別: " << endl;
cin >> s1.sex;
cout << " 請(qǐng)輸入學(xué)生年級(jí): " << endl;
cin >> s1.grade;
system("cls");
s.push_back(s1);
sinfo();
}
}效果展示


源代碼:
#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//信息類(lèi)
{
protected:
long number;//編號(hào)
string name;//名稱(chēng)
public:
info() {}
info(long num, string name) :number(num), name(name) {}
};
class course : public info//課程類(lèi)
{
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);//查詢(xún)是否有該課程
friend class student;
};
vector<course> c;
class student : public info//學(xué)生類(lèi)
{
protected:
string sex;//性別
string grade;//年級(jí)
long scredit;
public:
vector<course> havec;//查詢(xún)學(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);//查詢(xún)是否有該學(xué)生
static void addcourse();// 為學(xué)生添加課程
static void delcourse();//為學(xué)生刪除課程
static int ishavec(long si);//查詢(xún)?cè)搶W(xué)生是否有該課程
};
vector<student> s;
void course::print()//打印所以課程信息
{
system("cls");
for (int i = 0; i < c.size(); i++)
{
cout << endl << "課程編號(hào):" << c[i].number << " 課程名稱(chēng):" << c[i].name << " 課程學(xué)分:" \
<< c[i].credit << " 授課老師:" << c[i].teachername << endl;
}
cprintorget();
}
void course::get()//獲得課程信息
{
system("cls");
long k = 1, kk;
cout << " 請(qǐng)輸入要查詢(xún)的課程編號(hào): " << endl;
cin >> kk;
if (ishave(kk))
{
for (size_t i = 0; i < c.size(); i++)
if (c[i].number == kk)
{
cout << endl << "課程編號(hào):" << c[i].number << " 課程名稱(chēng):" << c[i].name << " 課程學(xué)分:" \
<< c[i].credit << " 授課老師:" << c[i].teachername << endl;
break;
}
}
else
{
cout << " 沒(méi)有該課程 。 " << endl;
}
cprintorget();
}
void course::add()
{
system("cls");
long k = 1; course c1;
cout << " 請(qǐng)輸入要添加的課程編號(hào): " << endl;
cin >> c1.number;
while (ishave(c1.number))
{
system("cls");
cout << "┃ 該課程已添加,請(qǐng)重新輸入: ┃" << endl;
cout << "┃ (按0退出) ┃" << endl;
cin >> k;
if (k == 0)
{
cinfo();
break;
}
else c1.number = k;
}
if (k != 0)
{
cout << " 請(qǐng)輸入課程名稱(chēng): " << endl;
cin >> c1.name;
cout << " 請(qǐng)輸入課程學(xué)分: " << endl;
cin >> c1.credit;
cout << " 請(qǐng)輸入授課老師名稱(chēng): " << endl;
cin >> c1.teachername;
system("cls");
c.push_back(c1);
cinfo();
}
}
void course::del()//老師刪除課程信息
{
system("cls");
long k = 1, kk;
cout << " 請(qǐng)輸入要?jiǎng)h除的課程編號(hào): " << 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 << " 你還沒(méi)有添加該課程 。 " << endl;
}
}
void course::edit()//老師修改課程信息
{
system("cls");
long k = 1, kk;
cout << " 請(qǐng)輸入要修改課程的課程編號(hào): " << endl;
cin >> kk;
if (ishave(kk))
{
for (size_t i = 0; i < c.size(); i++)
{
if (c[i].number == kk)
{
system("cls");
cout << " 請(qǐng)重新輸入課程名稱(chēng): " << endl;
cin >> c[i].name;
cout << " 請(qǐng)重新輸入課程學(xué)分: " << endl;
cin >> c[i].credit;
cout << " 請(qǐng)重新輸入授課老師名稱(chēng): " << endl;
cin >> c[i].teachername;
cout << " 修改成功。 " << endl;
break;
}
}
}
else
{
cout << " 沒(méi)有該課程 。 " << endl;
}
}
int course::ishave(long si)//查詢(xún)是否有該課程
{
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é)號(hào):" << s[i].number << " 姓名:" << s[i].name << " 性別:" \
<< s[i].sex << " 年級(jí):" << s[i].grade << endl << endl\
<< "學(xué)生已選課程:" << endl;
if (s[i].havec.size() == 0)
{
cout << "無(wú)" << endl;
continue;
}
else
{
for (int k = 0; k < s[i].havec.size(); k++)
{
cout << endl << "課程編號(hào):" << s[i].havec[k].number << " 課程名稱(chēng):" << 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() << "門(mén),共" << sumk << "學(xué)分。" << endl;
}
}
sprintorget();
}
void student::get()//獲取學(xué)生信息
{
system("cls");
long k = 1, kk, sumk = 0;
cout << " 請(qǐng)輸入要查詢(xún)的學(xué)生學(xué)號(hào): " << 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é)號(hào):" << s[i].number << " 姓名:" << s[i].name << " 性別:" \
<< s[i].sex << " 年級(jí):" << s[i].grade << endl << endl\
<< "學(xué)生已選課程:" << endl;
if (s[i].havec.size() == 0)
{
cout << "無(wú)" << endl;
continue;
}
else
{
for (int k = 0; k < s[i].havec.size(); k++)
{
cout << endl << "課程編號(hào):" << s[i].havec[k].number << " 課程名稱(chēng):" << 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() << "門(mén),共" << sumk << "學(xué)分。" << endl;
}
}
}
else
{
cout << " 沒(méi)有該學(xué)生。 " << endl;
}
sprintorget();
}
void student::add()//添加學(xué)生信息
{
system("cls");
long k = 1; student s1;
cout << " 請(qǐng)輸入要添加的學(xué)生學(xué)號(hào): " << endl;
cin >> s1.number;
while (ishave(s1.number))
{
system("cls");
cout << "┃ 該學(xué)生已添加,請(qǐng)重新輸入: ┃" << endl;
cout << "┃ (按0退出) ┃" << endl;
cin >> k;
if (k == 0)
{
sinfo();
break;
}
else s1.number = k;
}
if (k != 0)
{
cout << " 請(qǐng)輸入學(xué)生姓名: " << endl;
cin >> s1.name;
cout << " 請(qǐng)輸入學(xué)生性別: " << endl;
cin >> s1.sex;
cout << " 請(qǐng)輸入學(xué)生年級(jí): " << endl;
cin >> s1.grade;
system("cls");
s.push_back(s1);
sinfo();
}
}
void student::del() //刪除學(xué)生信息
{
system("cls");
long k = 1, kk;
cout << " 請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào): " << 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 << " 你還沒(méi)有添加該學(xué)生 。 " << endl;
}
}
void student::edit()//修改學(xué)生信息
{
system("cls");
long k = 1, kk;
cout << " 請(qǐng)輸入要修改學(xué)生的學(xué)號(hào): " << endl;
cin >> kk;
if (ishave(kk))
{
for (size_t i = 0; i < s.size(); i++)
{
if (s[i].number == kk)
{
system("cls");
cout << " 請(qǐng)重新輸入學(xué)生姓名: " << endl;
cin >> s[i].name;
cout << " 請(qǐng)重新輸入學(xué)生性別: " << endl;
cin >> s[i].sex;
cout << " 請(qǐng)重新輸入學(xué)生年級(jí): " << endl;
cin >> s[i].grade;
cout << " 修改成功。 " << endl;
break;
}
}
}
else
{
cout << " 沒(méi)有該學(xué)生。 " << endl;
}
}
void student::addcourse()//添加課程
{
system("cls");
long k = 1, kk, sumk = 0, sk;
cout << " 請(qǐng)輸入學(xué)生的學(xué)號(hào): " << endl;
cin >> kk;
if (ishave(kk))
{
for (size_t i = 0; i < s.size(); i++)
{
if (s[i].number == kk)
{
cout << endl << "學(xué)生學(xué)號(hào):" << s[i].number << " 姓名:" << s[i].name << " 性別:" \
<< s[i].sex << " 年級(jí):" << s[i].grade << endl << endl\
<< "學(xué)生已選課程:" << endl;
if (s[i].havec.size() == 0)
{
cout << "無(wú)" << endl;
}
else
{
for (int k = 0; k < s[i].havec.size(); k++)
{
cout << endl << "課程編號(hào):" << s[i].havec[k].number << " 課程名稱(chēng):" << 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() << "門(mén),共" << sumk << "學(xué)分。" << endl;
}
cout << " 請(qǐng)輸入要添加的課程: " << endl;
cin >> sk;
for (size_t k = 0; k < s[i].havec.size(); k++)
if (s[i].havec[k].number == sk)
{
cout << " 已有該課程,無(wú)法添加。 " << 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é)分不足,無(wú)法添加。 ┃" << endl;
}
else
{
s[i].havec.push_back(c1);
cout << "┃ 添加成功。 ┃" << endl;
break;
}
}
else
{
cout << "┃ 系統(tǒng)內(nèi)沒(méi)有該課程 。 ┃" << endl;
}
}
}
}
}
else
{
cout << " 沒(méi)有該學(xué)生。 " << endl;
}
}
void student::delcourse()//刪除課程
{
system("cls");
long k = 1, kk, sumk = 0, sk;
cout << " 請(qǐng)輸入學(xué)生的學(xué)號(hào): " << endl;
cin >> kk;
if (ishave(kk))
{
for (size_t i = 0; i < s.size(); i++)
{
if (s[i].number == kk)
{
cout << endl << "學(xué)生學(xué)號(hào):" << s[i].number << " 姓名:" << s[i].name << " 性別:" \
<< s[i].sex << " 年級(jí):" << s[i].grade << endl << endl\
<< "學(xué)生已選課程:" << endl;
if (s[i].havec.size() == 0)
{
cout << "無(wú)" << endl;
continue;
}
else
{
for (int k = 0; k < s[i].havec.size(); k++)
{
cout << endl << "課程編號(hào):" << s[i].havec[k].number << " 課程名稱(chēng):" << 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() << "門(mén),共" << sumk << "學(xué)分。" << endl;
}
cout << " 請(qǐng)輸入要?jiǎng)h除的課程: " << 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 << " 沒(méi)有該學(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()//查詢(xún)或展示課程信息
{
cout << endl;
cout << " **學(xué)生選課信息管理系統(tǒng)** " << endl;
cout << " ┏━━━━━━━━━━━━━━━━━━━━━┓ " << endl;
cout << " ┃ 請(qǐng)選擇功能: ┃ " << endl;
cout << " ┃ 1.查詢(xún)課程信息 ┃ " << endl;
cout << " ┃ 2.展示課程信息 ┃ " << endl;
cout << " ┃ 3.回到上一頁(yè) ┃ " << endl;
cout << " ┗━━━━━━━━━━━━━━━━━━━━━┛ " << endl;
cout << " 請(qǐng)輸入序號(hào)(1~3)進(jìn)入系統(tǒng)操作: " << endl;
cout << endl;
int ii, k = 1;
cin >> ii;
while (k)
{
if (ii > 3 || ii < 1)
{
cout << "輸入錯(cuò)誤,請(qǐng)重新輸入數(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 << " ┃ 請(qǐng)選擇功能: ┃ " << endl;
cout << " ┃ 1.查詢(xún)課程信息 ┃ " << endl;
cout << " ┃ 2.錄入課程信息 ┃ " << endl;
cout << " ┃ 3.刪除課程信息 ┃ " << endl;
cout << " ┃ 4.修改課程信息 ┃ " << endl;
cout << " ┃ 5.回到主菜單 ┃ " << endl;
cout << " ┗━━━━━━━━━━━━━━━━━━━━━┛ " << endl;
cout << " 請(qǐng)輸入序號(hào)(1~5)進(jìn)入系統(tǒng)操作: " << endl;
cout << endl;
int ii, k = 1;
cin >> ii;
while (k)
{
if (ii > 5 || ii < 1)
{
cout << "輸入錯(cuò)誤,請(qǐng)重新輸入數(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()//查詢(xún)或展示學(xué)生信息
{
cout << endl;
cout << " **學(xué)生選課信息管理系統(tǒng)** " << endl;
cout << " ┏━━━━━━━━━━━━━━━━━━━━━┓ " << endl;
cout << " ┃ 請(qǐng)選擇功能: ┃ " << endl;
cout << " ┃ 1.查詢(xún)學(xué)生信息 ┃ " << endl;
cout << " ┃ 2.展示學(xué)生信息 ┃ " << endl;
cout << " ┃ 3.回到上一頁(yè) ┃ " << endl;
cout << " ┗━━━━━━━━━━━━━━━━━━━━━┛ " << endl;
cout << " 請(qǐng)輸入序號(hào)(1~3)進(jìn)入系統(tǒng)操作: " << endl;
cout << endl;
int ii, k = 1;
cin >> ii;
while (k)
{
if (ii > 3 || ii < 1)
{
cout << "輸入錯(cuò)誤,請(qǐng)重新輸入數(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 << " ┃ 請(qǐng)選擇功能: ┃ " << endl;
cout << " ┃ 1.查詢(xún)學(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 << " 請(qǐng)輸入序號(hào)(1~7)進(jìn)入系統(tǒng)操作: " << endl;
cout << endl;
int ii, k = 1;
cin >> ii;
while (k)
{
if (ii > 7 || ii < 1)
{
cout << "輸入錯(cuò)誤,請(qǐng)重新輸入數(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 << "┃ 請(qǐng)輸入密碼:(默認(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 << "┃ 密碼錯(cuò)誤,請(qǐng)重新輸入。 ┃" << endl;
cout << "┃ ┃" << endl;
cout << "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" << endl;
cin >> input;
k++;
if (k > 3)
{
cout << "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" << endl;
cout << "┃ ┃" << endl;
cout << "┃ 輸入錯(cuò)誤超過(guò)5次,暫停操作5秒。 ┃" << endl;
cout << "┃ ┃" << endl;
cout << "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" << endl;
Sleep(5000);
k = 0;
system("cls");
cout << " 請(qǐng)重新輸入。 " << 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 << " 請(qǐng)輸入新密碼: " << endl;
cin >> p1;
cout << " 請(qǐng)重新輸入密碼: " << endl;
cin >> p2;
if (strcmp(p1, p2) != 0)
{
cout << " 兩次輸入的密碼不一致 ,請(qǐng)重新輸入。 " << endl;
}
else
{
system("cls");
cout << " 更改密碼成功,請(qǐng)重新登錄。 " << endl;
strcpy_s(password, p1);
kk = 0;
login();
}
}
}
int Menu()//菜單
{
while (1)
{
cout << endl;
cout << " **學(xué)生選課信息管理系統(tǒng)** " << endl;
cout << " ┏━━━━━━━━━━━━━━━━━━━━━┓ " << endl;
cout << " ┃ 請(qǐng)選擇功能: ┃ " << endl;
cout << " ┃ 1.課程信息管理 ┃ " << endl;
cout << " ┃ 2.學(xué)生信息管理 ┃ " << endl;
cout << " ┃ 3.修改密碼 ┃ " << endl;
cout << " ┃ 4.注銷(xiāo) ┃ " << endl;
cout << " ┃ 5.退出系統(tǒng) ┃ " << endl;
cout << " ┗━━━━━━━━━━━━━━━━━━━━━┛ " << endl;
cout << " 請(qǐng)輸入序號(hào)(1~5)進(jìn)入系統(tǒng)操作: " << endl;
cout << endl;
int ii, k = 1;
cin >> ii;
while (k)
{
if (ii > 5 || ii < 1)
{
cout << "輸入錯(cuò)誤,請(qǐng)重新輸入數(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 << "┃ 注銷(xiāo)成功,請(qǐng)重新登錄。 ┃" << 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ò)程的文章就介紹到這了,更多相關(guān)C++學(xué)生選課系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++ clock()解析如何使用時(shí)鐘計(jì)時(shí)的應(yīng)用
本篇文章是對(duì)c++中的clock()函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
解析c語(yǔ)言switch中break語(yǔ)句的具體作用
以下是對(duì)c語(yǔ)言switch中break語(yǔ)句的作用進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下2013-07-07

