當前位置:股票大全官網 - 資訊咨詢 - 學生信息管理系統的設計

學生信息管理系統的設計

這個程序要求妳有壹個gradeInfo.txt文件來存儲學生信息,最後的輸出數據也寫在這裏。如果需要在其他文件中輸出,只需在輸出中更改函數的文件名。下面這個程序是我之前的C++作業,功能比妳問的多,我有評論。希望能給lz壹些參考。C++作業做起來還是很有意思的,希望lz去做。

# include & ltiostream & gt

使用STD::CIN;

使用STD::cout;

使用STD::cerr;

使用STD::endl;

使用STD::IOs;

# include & ltfstream & gt

使用STD::of stream;

使用STD::if stream;

使用STD::fstream;

# include & lt字符串& gt

使用STD::string;

# include & ltiomanip & gt

使用STD::setw;

int enter choice();

void searchGrade(string names[],string ID[],int Chinese[],int Math[],int Eng[],int row);

void changeGrade(string names[],string ID[],int Chinese[],int Math[],int Eng[],int row);

void deleteGrade(字符串名稱[],字符串ID[],int Chinese[],int Math[],int Eng[],int & amp排);

void addGrade(字符串名稱[],字符串ID[],int Chinese[],int Math[],int Eng[],int & amp排);

int getRow(if stream & amp;InP);

void getID(if stream & amp;inp,字符串名稱[],字符串ID[],int中文[],int數學[],int工程[]);

void countGrade(string names[],string ID[],int Chinese[],int Math[],int Eng[],int row);

void saveResult(字符串名稱[],字符串ID[],int中文[],int數學[],int工程[],int行);

void showGrade(string names[],string ID[],int Chinese[],int Math[],int Eng[],int row);

void averGrade(int Chinese[],int Math[],int Eng[],int row);

int main()

{

ifstream infile(" grade info . txt ");

如果(!infile){

cerr & lt& lt打開文件時出錯,gradeInfo.txt不存在< & ltendl

退出(1);}

int row = getRow(infile);

infile . close();//確保當前學生人數為第行。

ifstream infile 2(" grade info . txt ");

//為多達60名學生提供績效管理。是根據目前合理的班數來確定的。可以根據需要進行更改。

字符串名稱[60];//學生姓名

字符串ID[60];//學生ID

int中文[60];//語言成績

int Math[60];//數學成績

int Eng[60];//英語成績

getID(infile2,names,ID,中文,數學,英語);//從文件中讀取學生信息。

infile 2 . close();

int部分;//它的值表示用戶選擇的模塊。

//系統的主菜單。用戶選擇要執行的操作。

而(部分!=4){

cout & lt& lt" \n **歡迎使用學生信息管理系統* * " & lt& lt恩德爾

& lt& lt“-”& lt;& lt恩德爾

& lt& lt"請選擇您要執行的操作"

& lt& lt" 1-學生成績信息維護"

& lt& lt“2-學生成績信息查詢”

& lt& lt“3-學生成績統計”

& lt& lt“4-退出系統”

& lt& lt“-”& lt;& ltendl

CIN & gt;& gt部分;

if (part==1){

int選擇;//用戶在信息維護模塊中選擇的執行功能。

while((choice=enterChoice())!=4){

開關(選擇){

案例1:

addGrade(姓名、ID、中文、數學、英語、行);

打破;

案例二:

deleteGrade(姓名、ID、中文、數學、英語、行);

打破;

案例三:

changeGrade(姓名、ID、中文、數學、英語、row);

打破;

默認值:

cerr & lt& lt“您的選擇不正確”< & ltendl

打破;

}

}

}

if (part==2){

cout & lt& lt"請選擇:"

& lt& lt" 1-按學號或姓名查詢"

& lt& lt“2-查看所有學生信息”

int allOrPart

CIN & gt;& gtallOrPart

if (allOrPart==1)

searchGrade(姓名、ID、中文、數學、英語、row);

if (allOrPart==2)

showGrade(姓名、ID、中文、數學、英語、row);

}

if (part==3){

cout & lt& lt"請選擇:"

& lt& lt" 1-查詢單個科目分數中的學生分布情況"

& lt& lt“2-計算單壹科目的平均分”

int averOrPart

CIN & gt;& gtaverOrPart

if (averOrPart==2)

averGrade(語文、數學、英語、行);

if (averOrPart==1)

countGrade(姓名、ID、中文、數學、英語、row);

}

}

返回0;

}

//該函數用於獲取當前系統中存儲的學生人數信息。

int getRow(if stream & amp;inp)

{

int row = 0;

字符串a,名稱,ID;

int標記;

inp & gt& gta & gt& gta & gt& gta & gt& gta & gt& gta;//跳過第壹行的目錄結構。

while(inp){

inp & gt& gt名稱& gt& gtID & gt& gt馬克& gt& gt馬克& gt& gt馬克;

row++;

}

返回行-1;

}

//此函數用於將文本文檔中的數據讀入內存,供用戶在終端上操作。

void getID(if stream & amp;inp,字符串名稱[],字符串ID[],int中文[],int數學[],int工程[])

{

字符串a;

inp & gt& gta & gt& gta & gt& gta & gt& gta & gt& gta;//跳過第壹行的目錄結構。

int I = 0;

while(inp){

inp & gt& gt姓名[I]& gt;& gtID[I]& gt;& gt中文[I]& gt;& gtmath[I]& gt;& gteng[I];

i++;

}

}

//該功能實現了學生成績信息維護模塊的子菜單。

int enterChoice()

{

cout & lt& lt"請輸入您想執行的操作"

& lt& lt" | 1-添加學生信息| "

& lt& lt" | 2-刪除學生信息| "

& lt& lt" | 3-修改學生信息| "

& lt& lt" | 4-返回到上壹級| "

int選擇;

CIN & gt;& gt選擇;

回歸選擇;

}

//該函數為用戶提供學生成績的查詢功能,可以使用學生姓名,也可以使用學號。

void searchGrade(字符串名稱[],字符串ID[],整數中文[],整數數學[],整數工程[],整數行)

{

字符串searchGoal

cout & lt& lt" \ n請輸入學生ID或姓名"

CIN & gt;& gtsearchGoal

布爾發現;

for(int j = 0;j & lt排;j++){

if(names[j]= = search goal | | ID[j]= = search goal){

cout & lt& lt"查詢結果"

& lt& lt“姓名、學號、語文、數學、英語”< & lt恩德爾

& lt& ltsetw(6)& lt;& ltnames[j]& lt;& ltsetw(6)& lt;& ltID[j]& lt;& ltsetw(6)& lt;& lt中文[j]& lt;& ltsetw(6)& lt;& ltmath[j]& lt;& ltsetw(6)& lt;& lteng[j]& lt;& ltendl

發現=真;

打破;

}

}

如果(發現!=真)

cout & lt& lt“搜索到的學生成績不存在”< & ltendl

}

//該功能可以刪除系統中存儲的學生信息記錄。

void deleteGrade(字符串名稱[],字符串ID[],int Chinese[],int Math[],int Eng[],int & amp行)

{

cout & lt& lt" \ n請輸入您要刪除其信息的學生的姓名或學號"

字符串delName

CIN & gt;& gtdelName

布爾發現;

for(int j = 0;j & lt排;j++){

if(names[j]= = delName | | ID[j]= = delName){

發現=真;

names[j]= " \ 0 ";

ID[j]= " \ 0 ";

中文[j]=-1;

math[j]=-1;

eng[j]=-1;

saveResult(姓名、ID、中文、數學、英語、行);

cout & lt& lt"學生信息已被成功刪除"

}

}

如果(發現!=真)

cout & lt& lt"要刪除的學生信息不存在"

}

//這個函數可以將新的學生信息寫入壹個文本文件。

void addGrade(字符串名稱[],字符串ID[],int Chinese[],int Math[],int Eng[],int & amp行)

{

字符串newID

cout & lt& lt"請首先輸入學生ID:"

//所以通過學號來判斷要添加的信息是否重復。

CIN & gt;& gtnewID

布爾存在;

for(int j = 0;j & lt排;j++)

if(newID==ID[j]){

cout & lt& lt"學生信息已經存在"

存在=真;

打破;}

如果(存在!=真){

cout & lt& lt\ n請再次輸入學生姓名和三個年級,用空格鍵分隔。endl

ID[row]= newID;

CIN & gt;& gtnames[row]& gt;& gt中文[row]& gt;& gtmath[row]& gt;& gteng[row];

row++;

saveResult(姓名、ID、中文、數學、英語、行);

cout & lt& lt"學生信息添加成功"

}

}

//該功能可以更改學生的各種信息。

void changeGrade(字符串名稱[],字符串ID[],整數中文[],整數數學[],整數工程[],整數行)

{

字符串changeGoal

cout & lt& lt" \ n請輸入您要更改其信息的學生的姓名或學號:";

CIN & gt;& gt改變目標;

布爾發現;

int changeNum//用戶修改內容的選項

for(int j = 0;j & lt排;j++){

if(names[j]= = change goal | | ID[j]= = change goal){

發現=真;

cout & lt& lt"這個學生的原始信息是:"

& lt& lt“姓名、學號、語文、數學、英語”< & lt恩德爾

& lt& ltsetw(6)& lt;& ltnames[j]& lt;& ltsetw(6)& lt;& ltID[j]

& lt& ltsetw(6)& lt;& lt中文[j]& lt;& ltsetw(6)& lt;& lt數學[j]

& lt& ltsetw(6)& lt;& lteng[j]& lt;& lt恩德爾

& lt& lt"請選擇:"

& lt& lt" 1-修改學生姓名"

& lt& lt" 2-修改學生ID "

& lt& lt“3-修改語文成績”

& lt& lt“4-修改數學分數”

& lt& lt“5-修改英語成績”

CIN & gt;& gtchangeNum

cout & lt& lt"請輸入修改的內容:";

開關(changeNum){

案例1:

CIN & gt;& gt姓名[j];

打破;

案例二:

CIN & gt;& gtID[j];

打破;

案例三:

CIN & gt;& gt中文[j];

打破;

案例4:

CIN & gt;& gtmath[j];

打破;

案例5:

CIN & gt;& gteng[j];

打破;

}

saveResult(姓名、ID、中文、數學、英語、行);

cout & lt& lt" \ n修改成功!"& lt& lt恩德爾

& lt& lt"修改後的學生信息是:"

& lt& lt“姓名、學號、語文、數學、英語”< & lt恩德爾

& lt& ltsetw(6)& lt;& ltnames[j]& lt;& ltsetw(6)& lt;& ltID[j]

& lt& ltsetw(6)& lt;& lt中文[j]& lt;& ltsetw(6)& lt;& lt數學[j]

& lt& ltsetw(6)& lt;& lteng[j]& lt;& ltendl

}

}

如果(發現!=真)

cout & lt& lt"要修改的學生信息不存在"

}

//該功能可以統計某壹科目、某壹分數段的學生分布情況,包括學生姓名、學號、年級以及該分數段的人數。

void countGrade(字符串名稱[],字符串ID[],整數中文[],整數數學[],整數工程[],整數行)

{

字符串主題;

int低,高;

int count result = 0;

cout & lt& lt\ n請輸入要查詢的課程名稱和分數段,用空格分隔,如英語60 70

CIN & gt;& gt主題& gt& gt低& gt& gt高;

cout & lt& lt主題& lt& lt“成就在”

for(int I = 0;我& lt排;i++){

If (subject== "中文" &;& amp中文[I]& gt;=低& amp& amp中文[I]& lt;=高){

count result++;

cout & lt& ltsetw(7)& lt;& lt姓名[I]& lt;& ltsetw(7)& lt;& lt"學生編號"

& lt& ltsetw(5)& lt;& ltID[I]& lt;& ltsetw(7)& lt;& lt“分數”

& lt& ltsetw(7)& lt;& lt中文[I]& lt;& ltendl

}

If (subject== "數學" &;& ampmath[I]& gt;=低& amp& ampmath[I]& lt;=高){

count result++;

cout & lt& ltsetw(7)& lt;& lt姓名[I]& lt;& ltsetw(7)& lt;& lt"學生編號"

& lt& ltsetw(5)& lt;& ltID[I]& lt;& ltsetw(7)& lt;& lt“分數”

& lt& ltsetw(7)& lt;& ltmath[I]& lt;& ltendl

}

if(subject = = " English " &;& ampeng[I]& gt;=低& amp& ampeng[I]& lt;=高){

count result++;

cout & lt& ltsetw(7)& lt;& lt姓名[I]& lt;& ltsetw(7)& lt;& lt"學生編號"

& lt& ltsetw(5)& lt;& ltID[I]& lt;& ltsetw(7)& lt;& lt“分數”

& lt& ltsetw(7)& lt;& lteng[I]& lt;& ltendl

}

}

cout & lt& lt" \ n * * * " & lt& ltcountResult & lt& lt“人”

}

//該函數可以將內存中學生信息數據的更改保存到壹個文本文件中。

void saveResult(字符串名稱[],字符串ID[],整數中文[],整數數學[],整數工程[],整數行)

{

of stream outfile(" grade info . txt ");

outfile & lt& lt“姓名、學號、語文、數學、英語”< & ltendl

for(int n = 0;n & lt排;n++){

if (names[n]!="\0")

outfile & lt& ltsetw(7)& lt;& lt名稱[n]& lt;& ltsetw(6)& lt;& ltID[n]

& lt& ltsetw(7)& lt;& lt中文[n]& lt;& ltsetw(7)& lt;& lt數學

& lt& ltsetw(7)& lt;& lteng[n]& lt;& ltendl

}

}

//顯示當前系統中記錄的所有學生信息。

void showGrade(字符串名稱[],字符串ID[],整數中文[],整數數學[],整數工程[],整數行)

{

for(int n = 0;n & lt排;n++){

if (names[n]!="\0")

cout & lt& ltsetw(7)& lt;& lt名稱[n]& lt;& ltsetw(6)& lt;& ltID[n]

& lt& ltsetw(7)& lt;& lt中文[n]& lt;& ltsetw(7)& lt;& lt數學

& lt& ltsetw(7)& lt;& lteng[n]& lt;& ltendl

}

}

//計算單科平均分

void average(int Chinese[],int Math[],int Eng[],int row)

{

cout & lt& lt"請選擇您要計算平均分的帳戶:"

& lt& lt" 1-中文"

& lt& lt“2-數學”< & lt恩德爾

& lt& lt“3-英語”

int主題;

CIN & gt;& gt主體;

int sum = 0;

for(int n = 0;n & lt排;n++){

if (Eng[n]!=-1)

{

if (subject==1)

sum+=中文[n];

if (subject==2)

sum+= Math[n];

if (subject==3)

sum+= Eng[n];

}

else row = row-1;

}

雙倍averGrade

averGrade = static _ cast & ltdouble & gt(sum)/static _ cast & lt;double & gt(排);

cout & lt& lt"這個科目的平均分數是:"

}