C++課程設計之學生成績管理系統
本文實例為大傢分享瞭C++學生成績管理系統的具體代碼,供大傢參考,具體內容如下
/*要求:設立程序管理學生如下信息:學生學號、姓名、班級,語文、數學、英語成績。 至少要有10名以上學生。 能夠實現根據以下關鍵字查詢:學生姓名 、學號、班級、課程名稱。 能夠實現按照單科成績、總成績、平均成績、學號排序。 能夠實現學生信息的插入、刪除和修改。 能夠查詢每個課程的最高分、最低分及相應學生姓名、班級和學號。 能夠查詢每個班級某門課程的優秀率(90分及以上)、不及格率,並進行排序。*/ #include<iostream> #include<iomanip> #include<string> using namespace std; class student { int num; char name[20]; char class1[20]; double chinese; double math; double english; double youxiu;//優秀率 double bujige;//不及格率 double sum;//總成績 double aver1;//平均成績 public: void set() { cout<<"\t學生學號:"; cin>>num; cout<<"\t學生姓名:"; cin>>name; cout<<"\t學生班級:"; cin>>class1; cout<<"\t語文成績:"; cin>>chinese; cout<<"\t英語成績:"; cin>>english; cout<<"\t數學成績:"; cin>>math; } void show() { cout<<"該學生的學號:"<<num<<endl; cout<<"該學生的姓名:"<<name<<endl; cout<<"該學生的班級:"<<class1<<endl; cout<<"該學生的語文成績:"<<chinese<<endl; cout<<"該學生的數學成績:"<<math<<endl; cout<<"該學生的英語成績:"<<english<<endl; } double ad(){return sum=chinese+english+math;} double aver() { aver1=(chinese+english+math)/3; return aver1; } friend void show(); friend void search(); friend void change(); friend void add(); friend void paixu(); friend void del(); }; void input(); void show(); void search(); void change(); void add(); void paixu(); void del(); student s[100]; int n=0; int main() { int select; while(1) { system("cls"); cout<<"\t ******************歡迎使用******************\n"; cout<<"\t **************學生成績管理系統**************\n"; cout<<"\t *------------------------------------------*\n"; cout<<"\t * 1——錄入學生信息 *\n"; cout<<"\t * 2——顯示學生信息 *\n"; cout<<"\t * 3——查詢學生信息 *\n"; cout<<"\t * 4——修改學生信息 *\n"; cout<<"\t * 5——添加學生信息 *\n"; cout<<"\t * 6——排序學生信息 *\n"; cout<<"\t * 7——刪除學生信息 *\n"; cout<<"\t * 0——退出 *\n"; cout<<"\t *------------------------------------------*\n"; cout<<"\t 你要輸入的編號是(0--7):"; cin>>select; if(select==0) break; switch(select){ case 1: input(); //調用input函數錄入數據 system("pause"); break; case 2: show(); //調用show函數顯示學生信息 system("pause"); break; case 3: search(); //調用search函數查詢學生信息 system("pause"); break; case 4: change(); //調用change函數修改學生信息 system("pause"); break; case 5: add(); //調用add函數添加學生信息 system("pause"); break; case 6: paixu(); //調用add函數添加學生信息 system("pause"); break; case 7: del(); // 調用del函數刪除學生信息 system("pause"); break; system("pause"); default: cout<<"沒有此選項,請重新選擇!"<<endl; } } return 0; } void input() //錄入學生信息的函數 { char sel; do { n++; cout<<"\t請輸入第"<<n<<"個學生信息:\t"<<endl; s[n].set(); cout<<"是否要繼續錄入學生信息(Y/N):"; cin>>sel; }while(sel=='Y' || sel=='y' ); } void show() { cout<<left; //設置輸出左對齊 cout<<setw(10)<<"學生學號" <<setw(10)<<"學生姓名" <<setw(13)<<"學生班級" <<setw(12)<<"語文成績" <<setw(12)<<"數學成績" <<setw(12)<<"英語成績" <<endl; for(int i=1;i<=n;i++) { cout<<setw(10)<<s[i].num <<setw(10)<<s[i].name <<setw(13)<<s[i].class1 <<setw(12)<<s[i].chinese <<setw(12)<<s[i].math <<setw(12)<<s[i].english<<endl; } cout<<endl; } void search()//查詢 { int a,b,i;char c[20]; cout<<"請選擇查詢方式:"<<endl; cout<<"按學生姓名查詢請按1"<<endl; cout<<"按學生學號查詢請按2"<<endl; cin>>a; switch(a) { case 1: {char sel; do{ cout<<"請輸入你要查的學生的姓名:"<<endl; cin>>c; for(i=1;i<=n;i++) if(strcmp(s[i].name,c)==0) {cout<<"你要查的學生信息為:"<<endl; cout<<"學生學號:"<<s[i].num<<endl<<"學生姓名:" <<s[i].name<<endl<<"學生班級:" <<s[i].class1<<endl<<"語文成績:" <<s[i].chinese<<endl<<"數學成績:" <<s[i].math<<endl<<"英語成績:" <<s[i].english<<endl; break; } else if(strcmp(s[i].name,c)!=0&&i==n) {cout<<"沒有這個學生!"<<endl;break;} cout<<"是否要繼續查詢學生信息(Y/N):"; cin>>sel; }while(sel=='Y' || sel=='y' ); break; } case 2: { char sel; do{ cout<<"請輸入你要查的學生的學號:"<<endl; cin>>b; for(i=1;i<=n;i++) if(s[i].num==b) { cout<<"你要查的學生信息為:"<<endl; cout<<"學生學號:"<<s[i].num<<endl<<"學生姓名:" <<s[i].name<<endl<<"學生班級:" <<s[i].class1<<endl<<"語文成績:" <<s[i].chinese<<endl<<"數學成績:" <<s[i].math<<endl<<"英語成績:" <<s[i].english<<endl; break; } else if(s[i].num!=b&&i==n) {cout<<"沒有這個學生!請核對後再輸入!"<<endl;break;} cout<<"是否要繼續查詢學生信息(Y/N):"; cin>>sel; }while(sel=='Y' || sel=='y' ); break;} default: cout<<"您的輸入有誤!"<<endl; } } void change() { { char sel; int d,i,e,f,g=0; do{ cout<<"請輸入你要修改的學生的學號:"<<endl; cin>>d; for(i=1;i<=n;i++) if(s[i].num==d) { cout<<"你要修改的學生信息為:"<<endl; cout<<"學生學號:"<<s[i].num<<endl<<"學生姓名:" <<s[i].name<<endl<<"學生班級:" <<s[i].class1<<endl<<"語文成績:" <<s[i].chinese<<endl<<"數學成績:" <<s[i].math<<endl<<"英語成績:" <<s[i].english<<endl; e=1; break; } else if(s[i].num!=d&&i==n) {cout<<"沒有這個學生!請核對後再輸入!"<<endl; e=0;break;} while(e==1) { {cout<<"請輸入該學生要修改的信息對應的數字:"<<endl; cout<<"學生學號:1" <<'\t'<<"學生姓名:2" <<'\t'<<"學生班級:3" <<'\t'<<"語文成績:4" <<'\t'<<"數學成績:5" <<'\t'<<"英語成績:6"<<endl; } cin>>f; switch(f) {case 1:cout<<"\t新的學生學號為:"; cin>>s[i].num;break; case 2:cout<<"\t新的學生姓名為:"; cin>>s[i].name;break; case 3:cout<<"\t新的學生班級為:"; cin>>s[i].class1;break; case 4:cout<<"\t新的語文成績為:"; cin>>s[i].chinese;break; case 5:cout<<"\t新的數學成績為:"; cin>>s[i].math;break; case 6:cout<<"\t新的英語成績為:"; cin>>s[i].english;break; default:cout<<"您的輸入有誤,請重新輸入!"; cin>>f;} e=0; g=1; } if(g==1) { cout<<"修改成功!";} cout<<"是否要繼續修改學生信息(Y/N):"; cin>>sel; }while(sel=='Y' || sel=='y' ); } } void add() { char sel; do { n++; cout<<"\n請輸入第"<< n <<"個學生信息:\n"; cout<<"\t學生學號:"; cin>>s[n].num; cout<<"\t學生姓名:"; cin>>s[n].name; cout<<"\t學生班級:"; cin>>s[n].class1; cout<<"\t語文成績:"; cin>>s[n].chinese; cout<<"\t數學成績:"; cin>>s[n].math; cout<<"\t英語成績:"; cin>>s[n].english; cout<<"是否要繼續添加學生信息(Y/N):"; cin>>sel; }while(sel=='Y' || sel=='y' ); } void paixu() { int a; cout<<"請選擇排序方式:"<<endl; cout<<"1.按學號排序;"<<endl <<"2.按總成績排序;"<<endl <<"3.按平均成績排序;"<<endl; cin>>a; switch(a) { case 1: {int t=0; for(int i=0;i<n-1;i++) for(int j=0;j<n-i;j++) if(s[j].num>s[j+1].num) { t=s[j].num; s[j].num=s[j+1].num; s[j+1].num=t;} cout<<"按學號排序結果:"<<endl; cout<<left; //設置輸出左對齊 cout<<setw(10)<<"學生學號" <<setw(10)<<"學生姓名" <<setw(13)<<"學生班級" <<setw(12)<<"語文成績" <<setw(12)<<"數學成績" <<setw(12)<<"英語成績" <<endl; for(i=1;i<=n;i++) { cout<<setw(10)<<s[i].num <<setw(10)<<s[i].name <<setw(13)<<s[i].class1 <<setw(12)<<s[i].chinese <<setw(12)<<s[i].math <<setw(12)<<s[i].english<<endl;} } break; /* case 2: {double t; for(int i=0;i<n-1;i++) { for(int j=0;j>n-i-1;j++) { if(s[j].sum>s[j+1].sum) t=s[j].sum; s[j].sum=s[j+1].sum; s[j+1].sum=t; } } cout<<"按總成績排序結果:"<<endl; for(i=1;i<=n;i++) cout<<"學號:"<<s[i].num<<"\t"<<"姓名:"<<s[i].name<<"\t"<<"班級:"<<s[i].class1<<"\t" <<"語文成績:"<<s[i].chinese<<"\t"<<"數學成績:"<<s[i].math<<"\t"<<"英語成績"<<s[i].english<<"\t總成績"<<s[i]sum<<endl; cout<<endl; } break;*/ /* case 3: int t; for(int i=0;i<n-1;i++) { for(int j=0;j>n-1-i;j++) { if(s[j].aver()>s[j+1].aver()) t=s[j].aver(); s[j].aver()=s[j+1].aver(); s[j+1].aver()=t; } } cout<<"按平均成績排序結果:"<<endl; for(i=0;i<n;i++) cout<<"學號:"<<s[i].num<<"\t"<<"姓名:"<<s[i].name<<"\t"<<"班級:"<<s[i].class1<<"\t" <<"語文成績:"<<s[i].chinese<<"\t"<<"數學成績:"<<s[i].math<<"英語成績"<<s[i].english<<endl; cout<<endl; } break ; */ default: {cout<<"您的輸入有誤!請重新輸入!"<<endl; cin>>a;} } } void del() { int j,i,k;char c[10],sel,y; do{ cout<<"請輸入你要刪除的學生的姓名:"<<endl; cin>>c; for(i=1;i<=n;i++) if(strcmp(s[i].name,c)==0) {cout<<"你要刪除的學生信息為:"<<endl; cout<<"學生學號:"<<s[i].num<<endl <<"學生姓名:"<<s[i].name<<endl <<"學生班級:"<<s[i].class1<<endl <<"語文成績:"<<s[i].chinese<<endl <<"數學成績:"<<s[i].math<<endl <<"英語成績:"<<s[i].english<<endl; cout<<"確認刪除?(y/n):"; cin>>y; if(y=='Y'||y=='y') { for(j=i;j<=n+1;j++) { s[j]=s[j+1]; } k=1; } else cout<<"刪除失敗!"<<endl; break; } else if(strcmp(s[i].name,c)!=0&&i==n) {cout<<"沒有這個學生!請核對後再輸入!"<<endl; k=0;break;} while(k==1) { if(y=='Y'||y=='y') cout<<"刪除成功!"; n--; k=0; } cout<<"是否要繼續刪除學生信息(Y/N):"; cin>>sel; }while(sel=='Y' || sel=='y' ); }
效果圖:
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。