很基礎的學生資訊管理系統(僅用於記錄自學)
#include<stdio.h>
#include<Windows.h>
#define N 100
int i, n;
void Readscore(int number[], float mathscore[], float chscore[]);//錄入函式
int Addscore(int number[], float mathscore[], float chscore[]);//計算總分和平均分
void Swap(int number[], float mathscore[], float chscore[]);//由低到高排序同學成績
void Static(int number[], float mathscore[], float chscore[]);//統計優秀同學個數
main()
{
int c;
printf("\t學生成績管理系統V2.0\n\n");
printf("\t1-錄入每個學生的學號和考試成績\n");
printf("\t2-計算每個學生的總分和平均分\n");
printf("\t3-按成績由低到高排序\n");
printf("\t4-統計優秀(90~100分)同學的個數\n");
printf("\t0-結束使用\n");
HAN:
{
printf("\t請選擇想要使用的功能\n\n");
scanf_s("%d", &c);
}
int * number = (int *)malloc(sizeof(int)*c);
float * mathscore = (float *)malloc(sizeof(float)*c);
float * chscore = (float *)malloc(sizeof(float)*c);
switch (c)
{
case 1:
Readscore(number, mathscore, chscore);
goto HAN;
case 2:
Readscore(number, mathscore, chscore);
Addscore(number, mathscore, chscore);
goto HAN;
case 3:
Swap(number, mathscore, chscore);
goto HAN;
case 4:
Static(number, mathscore, chscore);
goto HAN;
case 0:
printf("感謝使用!!!\n");
default:
printf("輸入錯誤!!!\n");
goto HAN;
}
system("pause");
return 0;
}
//錄入每個學生的學號和考試成績
void Readscore(int number[], float mathscore[], float chscore[])
{
int i = 0;
printf("請問有多少名同學?");
scanf_s("%d", &n);
for (i = 0; i < n; ++i)
{
printf("請輸入第%d個同學的學號:", i + 1);
scanf_s("%d", &number[i]);
printf("請輸入第%d個同學的數學成績:", i + 1);
scanf_s("%f", &mathscore[i]);
printf("請輸入第%d個同學的語文成績:", i + 1);
scanf_s("%f", &chscore[i]);
}
return;
}
//求總分和平均分
int Addscore(int number[], float mathscore[], float chscore[])
{
int i;
float add, avrg;
for (i = 0; i < n; ++i)
{
add = mathscore[i] + chscore[i];
avrg = add / n;
printf("學號為%d的學生的\n總分為:%f,平均分為:%f\n", number[i], add, avrg);
}
return 0;
}
//由低到高排序學生成績
void Swap(int number[], float mathscore[], float chscore[])
{
float temp1, add[N];
int i, j, n, temp2;
printf("請問有多少名同學?");
scanf_s("%d", &n);
for (i = 0; i < n; ++i)
{
printf("請輸入第%d個同學的學號:", i + 1);
scanf_s("%d", &number[i]);
printf("請輸入第%d個同學的數學成績:", i + 1);
scanf_s("%f", &mathscore[i]);
printf("請輸入第%d個同學的語文成績:", i + 1);
scanf_s("%f", &chscore[i]);
add[i] = mathscore[i] + chscore[i];
}
for (i = 0; i < n - 1; ++i)
{
for (j = 0; j < n - 1 - i; ++j)
if (add[j] > add[j + 1])
{
temp1 = add[j];
add[j] = add[j + 1];
add[j + 1] = temp1;
temp2 = number[j];
number[j] = number[j + 1];
number[j + 1] = temp2;
}
}
printf("由低到高排序後:\n");
for (i = 0; i < n; ++i)
printf("學號為:%d\n成績為:%f\n", number[i], add[i]);
return;
}
//統計優秀分數(90~100)同學的個數
void Static(int number[], float mathscore[], float chscore[])
{
char ch;
int i, j, p, q;
printf("請問有多少名同學?");
scanf_s("%d", &n);
printf("請選擇查詢的科目:");
scanf_s(" %c", &ch, 1);
switch (ch)
{
case 'm':
for (i = 0, p = 0; i < n; ++i)
{
printf("請輸入第%d個同學的數學成績:", i + 1);
scanf_s("%f", &mathscore[i]);
if (mathscore[i] >= 90 && mathscore[i] <= 100)
p++;
}
printf("數學成績為優秀的同學人數為:%d\n", p);
break;
case 'c':
for (j = 0, q = 0; j < n; ++j)
{
printf("請輸入第%d個同學的語文成績:", j + 1);
scanf_s("%f", &chscore[j]);
if (chscore[j] >= 90 && chscore[j] <= 100)
q++;
}
printf("語文成績為優秀的同學人數為:%d\n", q);
break;
default:
printf("輸入錯誤!!!\n");
}
return;
}