一、設(shè)計(jì)目標(biāo):
學(xué)生成績(jī)管理系統(tǒng)
利用結(jié)構(gòu)體、排序查找算法以及模塊化程序設(shè)計(jì)實(shí)現(xiàn)如下菜單驅(qū)動(dòng)的學(xué)生成績(jī)管理系統(tǒng):
1)?首次批量輸入每個(gè)學(xué)生的學(xué)號(hào)、姓名、和各科考試成績(jī)。
2)?增添一個(gè)新學(xué)生的信息。
3)?增添一門新的學(xué)科的信息。
4)?按學(xué)生姓名或?qū)W號(hào)查詢、修改、刪除學(xué)生信息。
5)?計(jì)算每門課程的總分和平均分。
6)?計(jì)算每個(gè)學(xué)生的總分、平均分以及排名。
7)?按總分從高到低(從低到高)排名并輸出。
8)?按學(xué)號(hào)大小排名并輸出。
9)?按學(xué)生姓名首字母排名并輸出。
10)?按優(yōu)秀(90-100分)、良好(80-90分)、中等(70-80分)、及格(60-70分)、不及格(0-60分)5個(gè)類別,對(duì)每門課程分別統(tǒng)計(jì)每個(gè)類別的人數(shù)以及所占百分比。
11)?輸出每個(gè)學(xué)生的學(xué)號(hào)、姓名、各科考試成績(jī)。
12)?將每個(gè)學(xué)生的成績(jī)寫入文件。
13)?從文件讀取學(xué)生成績(jī)并顯示。
二、設(shè)計(jì)思路
本程序主要采用了、for循環(huán)完成錄入、排序以及成績(jī)篩選、函數(shù)、switch實(shí)現(xiàn)功能選擇等方法。
??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?程序流程圖文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-491959.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-491959.html
三.代碼部分
/*
Student scores mangement system V1.0
C Programming Final-examination
Written by Charles
2022.5.27 - 6.7
*/
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<string.h>
int n = 0, course = 0; //The number of students; The number of courses
struct student
{
char id[18]; //student id
char name[10]; //student name
float score[6]; //student score
float sum; //student sum score
float ave_stu; //student course average course
} stu[30], temp;
void welcome(); //The start page
void inputinfo(); //Input student`s information
void addinfo(); //Add student`s information
void deleteinfo(); //Delete student`s information
void changeinfo(); //Change student`s information
void searchinfo(); //Search student`s information
void infocount(); //Information count
void quitapp(); //Quit the application
void output(char name[]); //Output the information
void outtxt(); //Output text
void showinfo(char str[4]); //Show student`s information on display
int findstu(char a[2]); //Find student`s information
void ave(); //Course average score
void sum(); //Course sum score
void max_(); //Each courses` highest score
void htl(); //High score to low score
void lth(); //Low score to high score
void full(); //Full student information
void eachcour(); //Each student`s new score
void namesort(); //Studet`s name sort
void idsort(); //student`s id sort
void presents(); //Each courses` each scores` present
void readfile(); //Readfile
void save(); //Save the information
int main() // main
{
int choice = 0, re;
begin: welcome();
scanf("%d", & choice);
switch(choice)
{
case 0 : inputinfo(); //Input student information
break;
case 1 : addinfo(); //Add student information
break;
case 2 : deleteinfo(); //Delete student information
break;
case 3 : changeinfo(); //Change student information
break;
case 4 : searchinfo(); //Search student information
break;
case 5 : infocount(); //Information count
break;
case 6 : outtxt(); //Output txt
break;
case 7 : readfile();
showinfo("全班信息"); //Show classmates information
break;
case 8 : quitapp(); //Quit the application
break;
}
printf("-------------------------------------\n");
printf(" 操作成功,是否繼續(xù)操作 \n");
printf("-------------------------------------\n");
printf(" 是:1 否:0 \n");
scanf("%d", &re);
switch(re)
{
case 1: goto begin;
break;
case 0: quitapp();
break;
}
return 0;
}
void welcome() // The start page
{
system("cls");
printf("-------------------------------------\n");
printf(" 學(xué)生成績(jī)管理系統(tǒng) \n");
printf("-------------------------------------\n");
printf("請(qǐng)輸入數(shù)字序列號(hào),選擇您要執(zhí)行的操作\n");
printf("0.錄入學(xué)生信息\n");
printf("1.添加學(xué)生信息\n");
printf("2.刪除學(xué)生信息\n");
printf("3.修改學(xué)生信息\n");
printf("4.查詢學(xué)生信息\n");
printf("5.成績(jī)分析\n");
printf("6.輸出全班同學(xué)信息\n");
printf("7.顯示全班同學(xué)信息\n");
printf("8.退出學(xué)生管理系統(tǒng)\n");
printf("-------------------------------------\n");
}
void inputinfo() // Input students` information
{
int i, j, re;
system("cls");
printf("-------------------------------------\n");
printf(" 0.學(xué)生信息錄入 \n");
printf("-------------------------------------\n");
printf("輸入學(xué)生個(gè)數(shù):\n");
scanf("%d", &n);
printf("輸入考試科目個(gè)數(shù):\n");
scanf("%d", &course);
printf("輸入學(xué)生信息:\n");
printf("(eg:XXXXXXX(學(xué)號(hào)) XXXXXXXXX(姓名) XXX XXX XXX XXX(各科成績(jī)) )\n");
for(i = 0; i < n; i++)
{
for(j = 0; j < 18; j++)
{
scanf("%c", &stu[i].id[j]);
if(stu[i].id[j] == ' ')
{
stu[i].id[j] = '\0';
break;
}
}
for(j = 0; j < 10; j++)
{
scanf("%c", &stu[i].name[j]);
if(stu[i].name[j] == ' ')
{
stu[i].name[j] = '\0';
break;
}
}
stu[i].sum = 0;
for(j = 0; j < course; j++)
{
scanf("%f", &stu[i].score[j]);
stu[i].sum = stu[i].sum + stu[i].score[j];
}
stu[i].ave_stu = stu[i].sum / course;
}
save();
}
void addinfo() // Add students` information
{
int j, choice;
readfile();
system("cls");
printf("-------------------------------------\n");
printf(" 1.學(xué)生信息增添 \n");
printf("-------------------------------------\n");
printf(" 請(qǐng)輸入需要添加學(xué)生信息的類型:\n");
printf("一個(gè)新的學(xué)生(1) 一門新的科目(2)\n");
printf("-------------------------------------\n");
scanf("%d", &choice);
switch(choice)
{
case 1 : full();
break;
case 2 : eachcour();
break;
}
save();
printf("-------------------------------------\n");
printf(" 是否輸出數(shù)據(jù):是(1) 否(0)\n");
printf("-------------------------------------\n");
scanf("%d", &choice);
switch(choice)
{
case 1 : output("學(xué)生成績(jī)表.txt");
break;
case 0 : break;
}
}
void deleteinfo() // Delete information from the file
{
int s, i, j, choise;
char name[30] = {'\0'};
readfile();
system("cls");
printf("-------------------------------------\n");
printf(" 2.學(xué)生信息刪除 \n");
printf("-------------------------------------\n");
s = findstu("刪除");
strcpy(name, stu[s].name);
printf("-------------------------------------\n");
printf(" 是否將%s的信息刪除:是(1) 否(0) \n", name);
printf("-------------------------------------\n");
scanf("%d", &choise);
switch(choise)
{
case 1 : for(i = s;i < n - 1; i++)
{
stu[i] = stu[i + 1];
}
n--;
save();
printf("-------------------------------------\n");
printf(" 已將%s的信息刪除\n", name);
printf("-------------------------------------\n");
printf(" 是否輸出數(shù)據(jù):是(1) 否(0)\n");
printf("-------------------------------------\n");
scanf("%d", &choise);
switch(choise)
{
case 1 : output("學(xué)生成績(jī)表.txt");
break;
case 0 : break;
}
case 0 : break;
}
}
void changeinfo() // Change the information from the file
{
int i, j, s, choice;
char change[30] = {'\0'};
float ch = 0.00;
readfile();
system("cls");
printf("-------------------------------------\n");
printf(" 3.學(xué)生信息修改 \n");
printf("-------------------------------------\n");
s = findstu("修改");
printf("-------------------------------------\n");
printf("請(qǐng)選擇需要修改%s的信息選項(xiàng):\n", stu[s].name);
printf("學(xué)號(hào)(1), 姓名(2),成績(jī)(3)\n");
printf("-------------------------------------\n");
scanf("%d", &choice);
switch(choice)
{
case 1:printf("請(qǐng)輸入新的學(xué)號(hào):\n");
scanf("%s", &stu[s].id);
printf("-------------------------------------\n");
printf(" 已成功修改%s同學(xué)學(xué)號(hào)\n", stu[s].name);
printf("-------------------------------------\n");
break;
case 2:printf("請(qǐng)輸入修改后的姓名:\n");
scanf("%s", &stu[s].name);
printf("-------------------------------------\n");
printf(" 已成功修改%s同學(xué)姓名\n", stu[s].name);
printf("-------------------------------------\n");
break;
case 3:printf("請(qǐng)輸入想要修改的科目位號(hào):(eg:科目一:1)\n");
scanf("%d", &choice);
printf("請(qǐng)輸入修改后科目%d的分?jǐn)?shù):\n", choice);
stu[s].sum = stu[s].sum - stu[s].score[choice - 1];
scanf("%f", &stu[s].score[choice - 1]);
stu[s].sum = stu[s].sum + stu[s].score[choice - 1];
stu[s].ave_stu = stu[s].sum / course;
}
save();
printf("-------------------------------------\n");
printf(" 是否輸出數(shù)據(jù):是(1) 否(0)\n");
printf("-------------------------------------\n");
scanf("%d", &choice);
switch(choice)
{
case 1 : output("學(xué)生成績(jī)表.txt");
break;
case 0 : break;
}
}
void searchinfo() // Search information
{
int i, j;
readfile();
system("cls");
printf("-------------------------------------\n");
printf(" 4.學(xué)生信息查詢 \n");
printf("-------------------------------------\n");
i = findstu("查詢");
printf("-------------------------------------\n");
printf("總排名 學(xué)號(hào) 姓名");
for(j = 1; j < course; j++)
{
printf("%5d ", j);
}
printf("%5d", course);
printf(" 總分 平均分\n");
printf("-------------------------------------\n");
printf("\n%3d、", i + 1);
printf(" %10s ", stu[i].id);
printf("%10s ", stu[i].name);
for(j = 0; j < course; j++)
{
printf("%5.2f ", stu[i].score[j]);
}
printf("%5.2f %5.2f\n", stu[i].sum, stu[i].ave_stu);
}
void infocount() // Information count
{
system("cls");
readfile();
printf("-------------------------------------\n");
printf(" 5.學(xué)生成績(jī)分析 \n");
printf("-------------------------------------\n");
int i, j, n, m, choice;
printf("選擇您需要的信息:(請(qǐng)輸入數(shù)字)\n");
printf("1. 各個(gè)學(xué)科的成績(jī)總和\n");
printf("2. 各個(gè)學(xué)科的平均分\n");
printf("3. 各個(gè)學(xué)科的最高分\n");
printf("4. 將成績(jī)從低到高排序\n");
printf("5. 將成績(jī)從高到低排序\n");
printf("6. 各科各個(gè)分?jǐn)?shù)段組成占比\n");
printf("-------------------------------------\n");
scanf("%d", &choice);
switch(choice)
{
case 1 : sum();
break;
case 2 : ave();
break;
case 3 : max_();
break;
case 4 : lth();
break;
case 5 : htl();
break;
case 6 : presents();
break;
}
if(choice == 4 || choice == 5)
{
printf("-------------------------------------\n");
printf(" 是否顯示信息:是(1) 否(0)\n");
printf("-------------------------------------\n");
scanf("%d", &n);
switch(n)
{
case 1 : switch(choice)
{
case 4 : showinfo("從低到高");
break;
case 5 : showinfo("從高到低");
break;
}
case 0 : break;
}
printf("-------------------------------------\n");
printf(" 是否輸出數(shù)據(jù):是(1) 否(0)\n");
printf("-------------------------------------\n");
scanf("%d", &n);
switch(n)
{
case 1 : switch(choice)
{
case 4 : output("從低到高排序的成績(jī)單.txt");
break;
case 5 : output("從高到低排序的成績(jī)單.txt");
break;
}
case 0 : break;
}
}
}
void outtxt() // Output information
{
int choice;
readfile();
system("cls");
printf("-------------------------------------\n");
printf(" 6.學(xué)生信息輸出 \n");
printf("-------------------------------------\n");
printf("請(qǐng)輸入輸出模式:(填寫數(shù)字)\n");
printf("1.成績(jī)從高到低\n");
printf("2.成績(jī)從低到高\(yùn)n");
printf("3.按姓名首字母排序\n");
printf("4.按學(xué)號(hào)大小排序\n");
printf("-------------------------------------\n");
scanf("%d", &choice);
switch(choice)
{
case 1 : htl();
output("從高到低排序的成績(jī)單.txt");
break;
case 2 : lth();
output("從低到高排序的成績(jī)單.txt");
break;
case 3 : namesort();
output("按名稱首字母排序的成績(jī)單.txt");
break;
case 4 : idsort();
output("按學(xué)號(hào)排序的成績(jī)單.txt");
break;
}
}
void quitapp() // Quitapp
{
system("cls");
printf("\n\n\n\n-------------------------------------\n");
printf(" 歡迎下次使用( ̄︶ ̄)↗ \n") ;
printf("-------------------------------------\n\n\n\n");
system("pause");
exit(0);
}
void full() // Add a new student
{
int j;
printf("(eg:XXXXXXX(學(xué)號(hào)) XXXXXXXXX(姓名) XXX XXX XXX XXX(各科成績(jī)) )\n");
printf("注意:當(dāng)前可以輸入的科目個(gè)數(shù)數(shù)為%d\n", course);
for(j = 0; j < 18; j++)
{
scanf("%c", &stu[n].id[j]);
if(stu[n].id[j] == ' ')
{
stu[n].id[j] = '\0';
break;
}
}
for(j = 0; j < 10; j++)
{
scanf("%c", &stu[n].name[j]);
if(stu[n].name[j] == ' ')
{
stu[n].name[j] = '\0';
break;
}
}
stu[n].sum = 0;
for(j = 0; j < course; j++)
{
scanf("%f", &stu[n].score[j]);
stu[n].sum = stu[n].sum + stu[n].score[j];
stu[n].ave_stu = stu[n].sum / course;
}
n++;
printf("-------------------------------------\n");
printf(" 已將該同學(xué)信息增加到程序中 \n");
printf("-------------------------------------\n");
}
void eachcour() // Add a new course
{
printf("-------------------------------------\n");
printf(" 請(qǐng)?jiān)诔霈F(xiàn)的名字后面填寫\n 該同學(xué)的新增科目的成績(jī)\n");
printf("-------------------------------------\n");
int i;
for(i = 0; i < n;i++)
{
printf("%s ", stu[i].name);
scanf("%f", &stu[i].score[course]);
stu[i].sum = stu[i].sum + stu[i].score[course];
stu[i].ave_stu = stu[i].sum / (course + 1);
}
course++;
}
void showinfo(char str[4]) // Show student information
{
int i, j;
printf("-------------------------------------\n");
printf(" 學(xué)生成績(jī)信息顯示 \n");
printf("-------------------------------------\n");
printf("當(dāng)前顯示模式為%s\n", str);
printf("總排名 學(xué)號(hào) 姓名");
for(j = 1; j < course; j++)
{
printf("%6d ", j);
}
printf("%6d", course);
printf(" 總分 平均分\n");
printf("-------------------------------------\n");
for(i = 0;i < n;i++)
{
printf("\n%3d、", i + 1);
printf(" %10s ", stu[i].id);
printf("%10s ", stu[i].name);
for(j = 0; j < course; j++)
{
printf("%-7.2f ", stu[i].score[j]);
}
printf("%-7.2f %-7.2f\n", stu[i].sum, stu[i].ave_stu);
}
}
int findstu(char a[2]) //Find student information
{
int i, j, choise = 0, t = 0;
char ex[30] = {'\0'};
printf("-------------------------------------\n");
printf(" 請(qǐng)選擇查詢類型:學(xué)號(hào)(1);姓名(2)\n");
printf("-------------------------------------\n");
scanf("%d", &choise);
if(choise == 1)
{
again: printf("-------------------------------------\n");
printf(" 請(qǐng)輸入需要%s學(xué)生信息的學(xué)號(hào)\n", a);
printf("-------------------------------------\n");
scanf("%s", ex);
for(i = 0;i < n;i++)
{
if(strcmp(ex, stu[i].id) == 0)
{
break;
}
}
if(i == n)
{
printf("-------------------------------------\n");
printf(" 輸入學(xué)生信息有誤或不存在,請(qǐng)重新輸入\n");
goto again;
}
else
{
return i;
}
}
else if(choise == 2)
{
printf("-------------------------------------\n");
printf(" 請(qǐng)輸入需要%s學(xué)生信息的姓名\n", a);
printf("-------------------------------------\n");
scanf("%s", ex);
for(i = 0;i < n;i++)
{
if(strcmp(ex, stu[i].name) == 0)
{
break;
}
}
if(i == n)
{
printf("-------------------------------------\n");
printf(" 輸入學(xué)生信息有誤或不存在,請(qǐng)重新輸入\n");
goto again;
}
else
{
return i;
}
}
}
void ave() //Each courses` average score
{
printf("-------------------------------------\n");
printf(" 各個(gè)學(xué)科的平均分為\n");
printf("-------------------------------------\n");
int i, j;
float sum[6] = {0};
for(i = 0; i < course; i++)
{
for(j = 0;j < n;j++)
{
sum[i] = sum[i] + stu[j].score [i];
}
}
for(i = 0; i < course; i++)
{
printf("%d.科目%d:%.2f\n", i + 1, i + 1, sum[i] / n);
}
}
void sum() // Each courses` sum
{
printf("-------------------------------------\n");
printf(" 各個(gè)學(xué)科的成績(jī)總和為\n");
printf("-------------------------------------\n");
int i, j;
float sum[6] = {0};
for(i = 0; i < course; i++)
{
for(j = 0;j < n;j++)
{
sum[i] = sum[i] + stu[j].score [i];
}
}
for(i = 0; i < course; i++)
{
printf("%d.科目%d:%.2f\n", i + 1, i + 1, sum[i] );
}
}
void max_() // Each courses` maxscore
{
printf("-------------------------------------\n");
printf(" 各科最高分如下:\n");
printf("-------------------------------------\n");
int i, j, max = 0;
float t;
for(i = 0; i < course;i++)
{
max = 0;
t = stu[0].score[i];
for(j = 0; j < n; j++)
{
if(t < stu[j].score[i])
{
t = stu[j].score[i];
max = j;
}
}
printf("%d.科目%d的最高分是:%s %.2f\n", i + 1, i + 1, stu[max].name, stu[max].score[i]);
}
}
void htl() //High to low
{
int i, j;
float a[6];
char t[30];
for(i = 0; i < n;i++)
{
for(j = 0; j < n - i; j++)
{
if(stu[j].sum < stu[j + 1].sum )
{
temp = stu[j + 1];
stu[j + 1] = stu[j];
stu[j] = temp;
}
}
}
for(i = 0;i < n;i++)
{
for(j = 0; j < n - i - 1;j++)
{
if (strcmp(stu[j].name, stu[j + 1].name) > 0 && stu[j].sum == stu[j + 1].sum)
{
temp = stu[j + 1];
stu[j + 1] = stu[j];
stu[j] = temp;
}
}
}
}
void lth() //Low to high
{
int i, j;
float a[6];
char t[30];
for(i = 0; i < n;i++)
{
for(j = 0; j < n - i - 1; j++)
{
if(stu[j].sum > stu[j + 1].sum )
{
temp = stu[j + 1];
stu[j + 1] = stu[j];
stu[j] = temp;
}
}
}
for(i = 0;i < n;i++)
{
for(j = 0; j < n - i - 1;j++)
{
if (strcmp(stu[j].name, stu[j + 1].name) > 0 && stu[j].sum == stu[j + 1].sum)
{
temp = stu[j + 1];
stu[j + 1] = stu[j];
stu[j] = temp;
}
}
}
}
void idsort()
{
int i, j;
for(i = 0;i < n;i++)
{
for(j = 0; j < n - i - 1;j++)
{
if (strcmp(stu[j].id, stu[j + 1].id) > 0 )
{
temp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}
}
void namesort() // The first name sort
{
int i, j;
for(i = 0;i < n;i++)
{
for(j = 0; j < n - i - 1;j++)
{
if (strcmp(stu[j].name, stu[j + 1].name) > 0 )
{
temp = stu[j + 1];
stu[j + 1] = stu[j];
stu[j] = temp;
}
}
}
}
void output(char name[]) // Save information to file
{
int i, j;
FILE *fp;
fopen_s(&fp, name, "wt+");
fprintf(fp, "———————————學(xué)生成績(jī)表——————————————\n");
fprintf(fp, "總排名 學(xué)號(hào) 姓名");
for(j = 1; j < course; j++)
{
fprintf(fp, "%9d ", j);
}
fprintf(fp, "%9d", course);
fprintf(fp, " 總分 平均分\n");
fprintf(fp, "——————————————————————————————\n");
for(i = 0; i < n; i++)
{
fprintf(fp, "\n%3d、", i + 1);
fprintf(fp, " %10s ", stu[i].id);
fprintf(fp, "%10s ", stu[i].name);
for(j = 0; j < course; j++)
{
fprintf(fp, "%7.2f ", stu[i].score[j]);
}
fprintf(fp, "%7.2f %7.2f\n", stu[i].sum, stu[i].ave_stu);
}
fclose(fp);
printf("-------------------------------------\n");
printf("已將文件存入%s\n", name);
printf("-------------------------------------\n");
}
void presents() // Each course earch present
{
int i, j, nine, eight, seven, six, fail, t;
for(i = 0;i < course; i++)
{
t = 0;
nine = 0;
eight = 0;
seven = 0;
six = 0;
fail = 0;
for(j = 0;j < course;j++)
{
if(stu[j].score[i] > 100.00)
{
t = 1;
break;
}
}
for(j = 0;j < n; j++)
{
if(t == 1)
{
stu[j].score[i] = stu[j].score[i] / 1.50;
}
if(stu[j].score[i] <= 100.00 && stu[j].score[i] >= 90.00)
{
nine++;
}
else if(stu[j].score[i] < 90.00 && stu[j].score[i] >= 80.00)
{
eight++;
}
else if(stu[j].score[i] < 80.00 && stu[j].score[i] >= 70.00)
{
seven++;
}
else if(stu[j].score[i] < 70.00 && stu[j].score[i] >= 60.00)
{
six++;
}
else if(stu[j].score[i] < 60.00)
{
fail++;
}
}
printf("-------------------------------------\n");
printf("%d、科目%d輸出結(jié)果如下:\n", i + 1, i + 1);
printf("90-100:優(yōu)秀的人數(shù)為%3d 占比為%.2f\n", nine, nine / (float)n);
printf("80-90: 良好的人數(shù)為%3d 占比為%.2f\n", eight, eight / (float)n);
printf("70-80: 一般的人數(shù)為%3d 占比為%.2f\n", seven, seven / (float)n);
printf("60-70: 及格的人數(shù)為%3d 占比為%.2f\n", six, six / (float)n);
printf("0-60: 不及格的人數(shù)為%3d 占比為%.2f\n", fail, fail / (float)n);
printf("-------------------------------------\n");
}
}
void save() // Save information to file
{
int i, j;
htl();
for(i = 0; i < n; i++)
{
if(stu[i].id[0] == '\n')
{
for(j = 0;j < 18;j++)
{
stu[i].id[j] = stu[i].id[j + 1];
}
}
}
FILE *fp;
fopen_s(&fp, "內(nèi)部文件.txt", "wt+");
fprintf(fp, "%d %d\n", n, course);
for(i = 0; i < n; i++)
{
fprintf(fp, "%s %s ", stu[i].id, stu[i].name);
for(j = 0; j < course;j++)
{
fprintf(fp, "%.2f ", stu[i].score[j]);
}
fprintf(fp, "%.2f ", stu[i].sum);
fprintf(fp, "%.2f\n", stu[i].ave_stu);
}
fclose(fp);
}
void readfile() // Read file information
{
FILE *fpp;
fopen_s(&fpp, "內(nèi)部文件.txt", "r+");
int i, j;
char t;
while (!feof(fpp))
{
fscanf_s(fpp, "%d%d", &n, &course);
fscanf_s(fpp, "%c", &t);
for(i = 0;i < n;i++)
{
for(j = 0; j < 18; j++)
{
fscanf_s(fpp, "%c", &stu[i].id[j]);
if(stu[i].id[j] == ' ')
{
stu[i].id[j] = '\0';
break;
}
}
for(j = 0; j < 10; j++)
{
fscanf_s(fpp, "%c", &stu[i].name[j]);
if(stu[i].name[j] == ' ')
{
stu[i].name[j] = '\0';
break;
}
}
for(j = 0; j < course; j++)
{
fscanf_s(fpp, "%f", &stu[i].score[j]);
}
fscanf_s(fpp, "%f", &stu[i].sum);
fscanf_s(fpp, "%f\n", &stu[i].ave_stu);
}
}
for(i = 0; i < n; i++)
{
if(stu[i].id[0] == '\n')
{
for(j = 0;j < 18;j++)
{
stu[i].id[j] = stu[i].id[j + 1];
}
}
}
fclose(fpp);
}
到了這里,關(guān)于學(xué)生成績(jī)管理系統(tǒng)(C語(yǔ)言)(數(shù)組結(jié)構(gòu)體)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!