C語(yǔ)言實(shí)現(xiàn)班級(jí)成績(jī)管理系統(tǒng)
C語(yǔ)言課程設(shè)計(jì)——班級(jí)成績(jī)管理系統(tǒng),供大家參考,具體內(nèi)容如下
題目:
對(duì)一個(gè)有N個(gè)學(xué)生的班級(jí),每個(gè)學(xué)生有M門課程。該系統(tǒng)實(shí)現(xiàn)對(duì)班級(jí)成績(jī)的錄入、顯示、修改、排序、保存等操作的管理。功能
要求:
(1)本系統(tǒng)采用一個(gè)結(jié)構(gòu)體數(shù)組,每個(gè)數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:學(xué)號(hào)、姓名、M門課程名稱。
(2)本系統(tǒng)顯示這樣的菜單:
請(qǐng)選擇系統(tǒng)功能項(xiàng):
a、成績(jī)錄入
b、成績(jī)顯示
c、成績(jī)保存
d、成績(jī)排序
e、成績(jī)修改(要求先輸入密碼)
f、成績(jī)統(tǒng)計(jì)
1)顯示每門課程成績(jī)最高的學(xué)生的基本信息
2)顯示每門課程的平均成績(jī)
3)顯示超過(guò)某門課程平均成績(jī)的學(xué)生人數(shù)
g、退出系統(tǒng)
1)執(zhí)行一個(gè)具體的功能之后,程序?qū)⒅匦嘛@示菜單。
2)將學(xué)生成績(jī)保存到文件中。
代碼:
#include<vector> #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #include<string> using namespace std; typedef struct Student{ int ID; /*學(xué)生學(xué)號(hào)*/ char name[15]; /*學(xué)生姓名*/ vector<double> subject; /*因未知課程數(shù)量,所以課程數(shù)量采用動(dòng)態(tài)數(shù)組vector*/ double sum; /*學(xué)生各科成績(jī)總分*/ }Student; struct Rule{ /*排序規(guī)則*/ bool operator()(const Student &stu1,const Student &stu2)const { if(stu1.sum!=stu2.sum) /*總分不相等按照總分從大到小排序*/ return stu1.sum>stu2.sum; return stu1.ID>stu2.ID; /*總分相等按照學(xué)號(hào)從大到小排序*/ } }; int N,M,i,j; /*N為學(xué)生人數(shù),M為課程數(shù)量*/ double score; /*臨時(shí)變量*/ Student temp; /*臨時(shí)變量*/ vector<Student> Stu; /*本課設(shè)采用動(dòng)態(tài)數(shù)組vector,防止浪費(fèi)內(nèi)存空間*/ bool condition=true; /*系統(tǒng)運(yùn)行狀態(tài)*/ char choice; /*用于輸入來(lái)選擇功能*/ /*---------------------------------------------a.成績(jī)錄入---------------------------------------------*/ void InsertScore(){ cout<<"請(qǐng)輸入班級(jí)學(xué)生數(shù)量和課程數(shù)量:"; cin>>N>>M; cout<<endl<<"現(xiàn)在請(qǐng)依次輸入每個(gè)學(xué)生的學(xué)號(hào)、姓名和"<<M<<"門課程的成績(jī):"<<endl<<endl; for(i=0;i<N;++i){ cin>>temp.ID>>temp.name; for(j=0;j<M;++j){ cin>>score; temp.subject.push_back(score); } Stu.push_back(temp); /*------------------------------這一行很重要------------------------------*/ /*------------------------------這一行很重要------------------------------*/ vector<double>().swap(temp.subject); /*------------------------------這一行很重要------------------------------*/ /*------------------------------這一行很重要------------------------------*/ } cout<<endl<<"成績(jī)錄入成功!"<<endl; } /*---------------------------------------------b.成績(jī)顯示---------------------------------------------*/ void ShowScore(){ cout<<"學(xué)號(hào)\t\t"<<"姓名\t\t"; for(i=0;i<M;++i) cout<<"課程"<<i+1<<"\t"; cout<<endl; for(i=0;i<N;++i){ cout<<Stu[i].ID<<"\t"<<Stu[i].name<<"\t"; for(int j=0;j<M;++j) cout<<Stu[i].subject[j]<<"\t"; cout<<endl; } } /*---------------------------------------------c.成績(jī)保存---------------------------------------------*/ void SaveScore(){ FILE *fp; if((fp=fopen("stu.dat","wb"))==NULL){ cout<<"文件打開(kāi)錯(cuò)誤"; return; } for(i=0;i<N;++i){ if(fwrite(&Stu[i],sizeof(Student),1,fp)!=1) cout<<"寫入錯(cuò)誤!"<<endl; } fclose(fp); cout<<"成績(jī)保存成功!"<<endl; } /*---------------------------------------------d.成績(jī)排序---------------------------------------------*/ void SortScore(){ for(i=0;i<N;++i){ /*計(jì)算每個(gè)人的總成績(jī)*/ Stu[i].sum=0; for(j=0;j<M;++j) Stu[i].sum+=Stu[i].subject[j]; } sort(Stu.begin(),Stu.end(),Rule()); /*使用排序函數(shù)排序*/ cout<<"成績(jī)排序成功!"<<endl; } /*---------------------------------------------e.成績(jī)修改---------------------------------------------*/ void ModifyScore(){ string password; int id,no; cout<<"請(qǐng)輸入密碼開(kāi)啟成績(jī)修改權(quán)限:"; cin>>password; /*------------------------------密碼輸入錯(cuò)誤------------------------------*/ while(password!="GUXUNMEI"){ cout<<endl<<"密碼錯(cuò)誤,請(qǐng)重新輸入,若輸入Q則中止進(jìn)入成績(jī)修改功能:"; cin>>password; if(password=="Q") return; } /*------------------------------密碼輸入正確------------------------------*/ cout<<endl<<"成功進(jìn)入成績(jī)修改功能,若學(xué)號(hào)輸入-1則退出成績(jī)修改功能!"<<endl; while(1){ cout<<endl<<"請(qǐng)輸入需要修改成績(jī)的學(xué)生的學(xué)號(hào),第幾門課程以及修改后的分?jǐn)?shù):"; cin>>id; if(id==-1){ cout<<endl<<"已成功退出成績(jī)修改功能!"<<endl; return; } cin>>no>>score; if(no>M){ /*課程不存在*/ cout<<endl<<"不存在此課程!"<<endl; continue; } for(i=0;i<N;++i){ if(Stu[i].ID==id){ Stu[i].subject[no-1]=score; break; } } if(i==N){ /*學(xué)生不存在*/ cout<<endl<<"不存在此學(xué)生!"<<endl; continue; } cout<<endl<<"修改成功!"<<endl; } } /*---------------------------------------------f.成績(jī)統(tǒng)計(jì)---------------------------------------------*/ void CountScore(){ int maxn[M],count[M]; double k,average[M]; memset(maxn,0,sizeof(maxn)); /*--------------------顯示每門課程成績(jī)最高的學(xué)生的基本信息--------------------*/ for(i=0;i<N;++i){ for(j=0;j<M;++j){ if(Stu[i].subject[j]>Stu[i].subject[maxn[j]]) maxn[j]=i; } } for(i=0;i<M;++i){ cout<<"課程"<<i+1<<"成績(jī)最高分學(xué)生信息:"<<Stu[i].ID<<"\t"<<Stu[i].name<<"\t"; for(j=0;j<M;++j) cout<<Stu[i].subject[j]<<"\t"; cout<<endl; } cout<<endl; /*---------------------------顯示每門課程的平均成績(jī)---------------------------*/ for(j=0;j<M;++j){ k=0; for(i=0;i<N;++i) k+=Stu[i].subject[j]; average[j]=k/N; cout<<"課程"<<j+1<<"的平均成績(jī)?yōu)椋?<<average[j]<<endl; } cout<<endl; /*---------------------顯示超過(guò)某門課程平均成績(jī)的學(xué)生人數(shù)---------------------*/ for(j=0;j<M;++j){ count[j]=0; for(i=0;i<N;++i){ if(Stu[i].subject[j]>average[j]) ++count[j]; } cout<<"超過(guò)課程"<<j+1<<"平均成績(jī)的學(xué)生人數(shù)為:"<<count[j]<<endl; } } /*---------------------------------------------g.退出系統(tǒng)---------------------------------------------*/ void ExitSystem(){ condition=false; /*全局變量condition控制程序運(yùn)行*/ cout<<"已退出班級(jí)成績(jī)管理系統(tǒng)"<<endl; } int main() { while(condition){ /*-----------------------------------系統(tǒng)菜單-----------------------------------*/ cout<<" "<<endl; cout<<"-------------------------系統(tǒng)菜單-------------------------"<<endl; cout<<" "<<endl; cout<<" 請(qǐng)選擇系統(tǒng)功能項(xiàng): "<<endl; cout<<" a.成績(jī)錄入 "<<endl; cout<<" b.成績(jī)顯示 "<<endl; cout<<" c.成績(jī)保存 "<<endl; cout<<" d.成績(jī)排序 "<<endl; cout<<" e.成績(jī)修改 "<<endl; cout<<" f.成績(jī)統(tǒng)計(jì) "<<endl; cout<<" g.退出系統(tǒng) "<<endl; cout<<" "<<endl; cout<<"----------------------------------------------------------"<<endl; cout<<" "<<endl; /*-----------------------------------選擇系統(tǒng)功能項(xiàng)-----------------------------------*/ cout<<"請(qǐng)輸入選項(xiàng):"; cin>>choice; cout<<endl; switch(choice){ case 'a':InsertScore(); break; case 'b':ShowScore(); break; case 'c':SaveScore(); break; case 'd':SortScore(); break; case 'e':ModifyScore(); break; case 'f':CountScore(); break; case 'g':ExitSystem(); break; default:cout<<"不存在此項(xiàng)功能!"<<endl; } } return 0; }
關(guān)于管理系統(tǒng)的更多內(nèi)容請(qǐng)點(diǎn)擊《管理系統(tǒng)專題》進(jìn)行學(xué)習(xí)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語(yǔ)言編寫學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生信息管理系統(tǒng)C語(yǔ)言版
- 學(xué)生成績(jī)管理系統(tǒng)C語(yǔ)言代碼實(shí)現(xiàn)
- C語(yǔ)言利用結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)
- C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單學(xué)生管理系統(tǒng)
- C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源代碼
- C語(yǔ)言學(xué)生管理系統(tǒng)源碼分享
- C語(yǔ)言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(單鏈表)
- C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)
- C語(yǔ)言實(shí)現(xiàn)班級(jí)學(xué)生管理系統(tǒng)
相關(guān)文章
學(xué)好C++必須做到的50條 絕對(duì)經(jīng)典!
學(xué)好C++必須做到的50條,絕對(duì)經(jīng)典!想要學(xué)好C++的朋友一定要認(rèn)真閱讀本文,更要做到以下50條2016-09-09c++遞歸實(shí)現(xiàn)n皇后問(wèn)題代碼(八皇后問(wèn)題)
c++遞歸實(shí)現(xiàn)n皇后問(wèn)題代碼分享,大家參考使用吧2013-12-12C++中獲取UTC時(shí)間精確到微秒的實(shí)現(xiàn)代碼
本篇文章是對(duì)C++中獲取UTC時(shí)間精確到微秒的實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C語(yǔ)言中自動(dòng)隱式轉(zhuǎn)換與類型強(qiáng)制轉(zhuǎn)換實(shí)例分析
這篇文章主要介紹了C語(yǔ)言中自動(dòng)隱式轉(zhuǎn)換與類型強(qiáng)制轉(zhuǎn)換實(shí)例分析,需要的朋友可以參考下2014-07-07