保定網(wǎng)站建設(shè)方法能打開(kāi)各種網(wǎng)站的瀏覽器下載
某班有最多不超過(guò)30人(具體人數(shù)由鍵盤輸入)參加某門課程的考試,參考前面章節(jié)的“學(xué)生成績(jī)管理系統(tǒng)V1.0”,用一維數(shù)組和函數(shù)指針作函數(shù)參數(shù)編程實(shí)現(xiàn)如下菜單驅(qū)動(dòng)的學(xué)生成績(jī)管理系統(tǒng),其中每位同學(xué)的學(xué)號(hào)和成績(jī)等數(shù)據(jù)可以通過(guò)不同數(shù)組的同一下標(biāo)來(lái)關(guān)聯(lián):
(1)錄入每個(gè)學(xué)生的學(xué)號(hào)和考試成績(jī);
(2)計(jì)算課程的總分和平均分;
(3)按成績(jī)由高到低排出名次表;
(4)按成績(jī)由低到高排出名次表;
(5)按學(xué)號(hào)由小到大排出成績(jī)表;
(6)按學(xué)號(hào)查詢學(xué)生排名及其考試成績(jī);
(7)按優(yōu)秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)5個(gè)類別,統(tǒng)計(jì)每個(gè)類別的人數(shù)以及所占的百分比;
(8)輸出每個(gè)學(xué)生的學(xué)號(hào)、考試成績(jī)。
這里只用函數(shù)指針來(lái)做函數(shù)參數(shù)。
#include <iostream>
#include <iomanip>
using namespace std;
void input(int*, float*,int*);
void caculate(float*,int*);
void sort_in_descending_order_by_score(int*, float* ,int*);
void sort_in_ascending_order_by_score(int*, float*, int*);
void sort_in_ascending_order_by_number(int* ,float* ,int*);
void search(int* ,float* ,int*);
void statistic(float* ,int *);
int main()
{int n;cout << "Input student number(n<30):";cin >> n;int choice;int xvehao[30];float score[30];int* p1 = &n, * p2 = xvehao;float *p3 = score;while (1){cout << endl;cout << "Management for Students' scores" << endl;cout << "1.Input record" << endl;cout << "2.Caculate total and average score of course" << endl;cout << "3.Sort in descending order by score" << endl;cout << "4.Sort in ascending order by score" << endl;cout << "5.Sort in ascending order by number" << endl;cout << "6.Search by number" << endl;cout << "7.Statistic analysis" << endl;cout << "8.List record" << endl;cout << "0.Exit" << endl;cout << "Please Input your choice:";cin >> choice;if (choice == 1)input(p2, p3, p1);else if (choice == 2)caculate(p3, p1);else if (choice == 3)sort_in_descending_order_by_score(p2, p3, p1);else if (choice == 4)sort_in_ascending_order_by_score(p2, p3, p1);else if (choice == 5)sort_in_ascending_order_by_number(p2, p3, p1);else if (choice == 6)search(p2, p3, p1);else if (choice == 7)statistic(p3, p1);else if (choice == 8)sort_in_ascending_order_by_number(p2, p3, p1);else if (choice == 0)break;else{cout << "Please input any number from 0 to 8!"<<endl; continue;}}return 0;
}
void input(int *p2, float *p3,int *p1)
{int i;cout << "Input student's ID, name and score:" << endl;for (i = 1; i <= *p1; i++){cin >> *(p2+i) >> *(p3+i);}}
void caculate(float *p3, int *p1)
{float sum=0,aver;int i;for (i = 1; i <= *p1; i++){sum += *(p3+i);}aver = sum / *p1;cout << "sum=" << sum << " , aver=" << fixed << setprecision(2) << aver;cout << endl;
}
void sort_in_descending_order_by_score(int *p2, float *p3, int *p1)
{int i, j,k;for (i = 1; i <= *p1; i++){k = i;for (j = i+1; j <= *p1 ; j++){if (*(p3+k) < *(p3+j))k = j;}int x = *(p2+i), y = *(p3+i);*(p2 + i) = *(p2 + k); *(p3 + i) = *(p3 + k);*(p2 + k) = x; *(p3 + k) = y;}for (i = 1; i <= *p1; i++){cout << *(p2+i) << " " << *(p3+i) << endl;}
}
void sort_in_ascending_order_by_score(int*p2, float*p3, int*p1)
{int i, j, k;for (i = 1; i <= *p1; i++){k = i;for (j = i + 1; j <= *p1; j++){if (*(p3 + k) > *(p3 + j))k = j;}int x = *(p2 + i), y = *(p3 + i);*(p2 + i) = *(p2 + k); *(p3 + i) = *(p3 + k);*(p2 + k) = x; *(p3 + k) = y;}for (i = 1; i <= *p1; i++){cout << *(p2 + i) << " " << *(p3 + i) << endl;}
}
void sort_in_ascending_order_by_number(int *p2, float *p3, int *p1)
{int i, j,k;for (i = 1; i <= *p1; i++){k = i;for (j = i + 1; j <= *p1; j++){if (*(p2+j) < *(p2+k))k = j;}int x = *(p2+i), y = *(p3+i);*(p2 + i) = *(p2 + k); *(p3 + i) = *(p3 + k);*(p2 + k) = x; *(p3 + k) = y;}for (i = 1; i <= *p1; i++){cout << *(p2 + i) << " " << *(p3 + i) << endl;}
}
void search(int *p2, float *p3, int *p1)
{int number;cin >> number;int i,k;for (i = 1; i <= *p1; i++){if (*(p2+i) == number){cout << *(p2 + i) << " " << *(p3 + i) <<endl;k = 1;break;}else k = 0;}if (k == 0)cout << "Can't find this student!"<<endl;
}
void statistic(float *p3, int *p1)
{int i;int A = 0, B = 0, C = 0, D = 0, E = 0, F = 0;for (i = 1; i <= *p1; i++){if (*(p3+i) == 100)A++;else if (*(p3 + i) >= 90 && *(p3 + i) <= 99)B++;else if (*(p3 + i) >= 80 && *(p3 + i) <= 89)C++;else if (*(p3 + i) >= 70 && *(p3 + i) <= 79)D++;else if (*(p3 + i) >= 60 && *(p3 + i) <= 69)E++;else F++;}cout << "<60 " << F<< " " <<fixed<<setprecision(2)<< ((float)F / *p1) * 100 << "%" << endl;cout << "60-69 " << E<< " " << fixed << setprecision(2) << ((float)E / *p1) * 100 << "%" << endl;cout << "70-79 " << D<< " " << fixed << setprecision(2) << ((float)D / *p1) * 100 << "%" << endl;cout << "80-89 " << C<< " " << fixed << setprecision(2) << ((float)C / *p1) *100<< "%"<<endl;cout << "90-99 " << B<< " " << fixed << setprecision(2) << ((float)B / *p1) * 100 << "%" << endl;cout << "100 " << A<< " " << fixed << setprecision(2) << ((float)A / *p1) * 100 << "%" << endl;
}