C語言代碼實現(xiàn)學生成績管理系統(tǒng)
某班有最多不超過 30 人(具體人數(shù)由鍵盤輸人)參加期未考試,考試科目 最多不超過 6 門(具體門數(shù)由鍵盤輸入,但不少于 3 門),學生成績管理系統(tǒng)是一 個非常實用的程序,如果能夠把用戶輸入數(shù)據(jù)存盤,下次運行時讀出,就更有用 了。增加文件讀寫的功能,即編程實現(xiàn)如下菜單驅(qū)動的學生成績管理系統(tǒng):
(1) 錄入每個學生的學號、姓名和各科考試成績。
(2) 計算每門課程的總分和平均分。
(3) 計算每個學生的總分和平均分。
(4) 按每個學生的總分由高到低排出名次表。
(5) 按學號由小到大排出成績表。
(6) 按姓名的字典順序排出成績表。
(7) 按學號查詢學生排名及其考試成績。
(8) 按姓名查詢學生排名及其考試成績。
(9) 按優(yōu)秀(90-100 分)、良好(80-89 分)、中等(70-79 分)、及格(60-69 分)、 不及格(0-59 分)5 個類別,對每門課程分別統(tǒng)計每個類別的人數(shù)以及所占的百 分比。
(10)輸出每個學生的學號、姓名、各科考試成績、總分、平均分以及每門課 程的總分和平均分。
代碼如下:
#include<stdio.h> #include<string.h> #include<stdlib.h> const int N = 40; int i,j; typedef struct ?control { ? ? int no; ? ? char name[20]; ? ? char name1[20]; ? ? int cj[7]; ? ? int all; ? ? int lave; } AVA; // ------------------------函數(shù) void menu(); void menu1(); void menu2(); void menu4(AVA stu[],int n,int n3); //------------------------- //-------------------------鏈接菜單與功能的函數(shù) void basic(AVA stu[]); //------------------------ //-------------------------信息錄入函數(shù) void keyboard(AVA stu[],int n,int n2); //------------------------功能函數(shù)調(diào)用總函數(shù) void case1(AVA stu[],int n,int a); //======================== //------------------------功能函數(shù) void function4(AVA stu[],AVA t,int n);//總分排序 void function5(AVA stu[],AVA t,int n);//學號排序 void function6(AVA stu[],AVA t,int n);//姓名排序 void function7(AVA stu[],AVA t,int n,int w);//學號查找 void function8(AVA stu[],AVA t,int n,char s[]);//姓名查找 void function9(AVA stu[],int n,int a);//數(shù)據(jù)分析 void function10(AVA stu[],int n,int a,int b1[],int b2[]);//輸出學生信息 void function11(AVA stu[],int n,int a);//存進文件里面 void exchange(AVA stu[],int a,int b);//讀檔函數(shù) //------------------------- int main() { ? ? AVA ?stu[N]; ? ?for(i = 0; i < 30; i ++) ? ?{ ? ? ? ?stu[i].all = 0; ? ? ? ?stu[i].lave = 0; ? ?} ? basic(stu); ? return 0; } void menu() { ? ? ?printf("_ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? _\n"); ? ? printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |\n"); ? ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n"); ? ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n"); ? ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ?學生信息管理系統(tǒng) ? ? ? ? ? ? ? ? ? ? ? ? ? \n"); ? ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n"); ? ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n"); ? ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n"); ? ? printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |\n"); ? ? printf("- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -\n"); } void menu1() { ? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 信息輸入 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n"); ? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 學課成績 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n"); ? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 學生成績 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n"); ? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 總分排序 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n"); ? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 學號排序 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n"); ? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 姓名排序 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n"); ? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 學號查詢 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n"); ? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 姓名查詢 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n"); ? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 數(shù)據(jù)分析 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n"); ? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 信息輸出 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n"); ? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 數(shù)據(jù)存檔 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n"); } void menu2() { ? ? printf("_ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? _\n"); ? ? printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |\n"); ? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 功能代號 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n"); ? ? printf("-> ? ? ? ? ? ? ? ?<1><2><3><4><5><6><7><8><9><10><11> ? ? ? ? ? ? ? ?<-\n"); ? ? printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |\n"); ? ? printf("- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -\n"); } void menu4(AVA stu[],int n,int n3)//讀檔函數(shù)總調(diào)用 { ? ? printf("如果檔案中沒有存有足夠的學科數(shù),則可能提取亂碼\n"); ? ? printf("如果文件中沒有數(shù)據(jù)則會顯示無法打開\n"); ? ? exchange( stu,n,n3); ? ? case1( stu,n,n3); } //中轉(zhuǎn)函數(shù),菜單與功能的橋梁 void basic(AVA stu[]) { ? ? menu(); ? ? printf("若無學生信息檔案需要先錄入\n"); ? ? printf("<1-錄入><2-讀檔><3-退出>\n"); ? ? int n,n1,n3; ? ? do ? ? { ? ? ? ? scanf("%d",&n1); ? ? ? ? if(3<n1||n1<1) ? ? ? ? { ? ? ? ? ? ? printf("數(shù)據(jù)輸入錯誤,請重新輸入\n"); ? ? ? ? } ? ? }while(3<n1||n1<1); ? ? ?printf("輸入學生數(shù)量\n"); ? ? do ? ? { ? ? ? ? scanf("%d",&n); ? ? ? ? if(30<n||n<1) ? ? ? ? { ? ? ? ? ? ? printf("數(shù)據(jù)輸入錯誤,請重新輸入<1-30>\n"); ? ? ? ? } ? ? }while(30<n||n<1); ? ? printf("輸入學科數(shù)量\n"); ? ? ?do ? ? { ? ? ? ? scanf("%d",&n3); ? ? ? ? if(6<n3||n3<3) ? ? ? ? { ? ? ? ? ? ? printf("數(shù)據(jù)輸入錯誤,請重新輸入<3-6>\n"); ? ? ? ? } ? ? }while(6<n3||n3<3); ? ? if(n1==1) { ?keyboard( stu,n,n3); ? ?case1( stu, n,n3); } ? ? else if(n1==2) ?menu4(stu,n,n3); ? ? else ? ? { ? ? ? ? printf("歡迎再次使用\n"); ? ? ? ? exit(0); ? ? } } //=========================功能函數(shù)調(diào)用的函數(shù) void case1(AVA stu[],int n,int a) { ? ? AVA t; ? ? ? ? ?for(i = 0; i < n; i ++) ? ? { ? ? ? ? for(j = 0; j < a; j ++) ? ? ? ? { ? ? ? ? ? ? stu[i].all+=stu[i].cj[j]; ? ? ? ? } ? ? ? ? stu[i].lave = stu[i].all/a; ? ? } ? ? ?int x[10]={0},y[10]={0}; ? ? ? for(j = 0; j < a;j ++) ? ? { ? ? ? ?for(i = 0; i < n; i ++) ? ? ? ? { ? ? ? ? ? ? y[j]+=stu[i].cj[j]; ? ? ? ? } ? ? } ? ? for(i = 0; i < a; i ++) ? ? { ? ? ? ? x[i] = y[i]/n; ? ? } ? ? menu1(); ? ? menu2(); ? ? printf("數(shù)據(jù)錄入成功\n"); ? ? printf("請輸入你想選擇的功能\n"); ? ? int n2; ? ? while(scanf("%d",&n2)&&n2!=0) ? ? { ? ? ? ? if(n2==2) ? ? ? ? { ? ? ? ? ? ? for(i = 0; i < a; i ++) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ?printf("第%d門總分為:%d,平均分為:%d\n",i+1,y[i],x[i]); ? ? ? ? ? ? } ? ? ? ? ? ? menu1(); ? ? ? ? ? ? menu2(); ? ? ? ? ? ? printf("完成\n"); ? ? ? ? } ? ? ? ? else if(n2==3) ? ? ? ? { ? ? ? ? ? ? int f; ? ? ? ? ? ? printf("計算完成,是否打???<1 or 0>\n"); ? ? ? ? ? ? scanf("%d",&f); ? ? ? ? ? ? if(f==1) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? for(i = 0; i < n; i ++) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("第%d個同學的總分為:%d,平均分為:%d\n",i+1,stu[i].all,stu[i].lave); ? ? ? ? ? ? } ? ? ? ? ? ? printf("打印完成\n"); ? ? ? ? ? ? menu2(); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? else ? ? ? ? ? ? { ? ? ? ? ? ? ? ? menu1(); ? ? ? ? ? ? ? ? menu2(); ? ? ? ? ? ? } ? ? ? ? ? ? ?printf("完成\n"); ? ? ? ? } ? ? ? ? else if(n2==4) ? ? ? ? { ? ? ? ? ? ? function4( stu, t, n); ? ? ? ? ? ? menu1(); ? ? ? ? ? ? menu2(); ? ? ? ? ? ? printf("完成\n"); ? ? ? ? } ? ? ? ? else if(n2==5) ? ? ? ? { ? ? ? ? ? ? function5( stu, t, n); ? ? ? ? ? ? menu1(); ? ? ? ? ? ? menu2(); ? ? ? ? ? ? printf("完成\n"); ? ? ? ? } ? ? ? ? else if(n2==6) ? ? ? ? { ? ? ? ? ? ? function6( stu, t, n); ? ? ? ? ? ? menu1(); ? ? ? ? ? ? menu2(); ? ? ? ? ? ? printf("完成\n"); ? ? ? ? } ? ? ? ? else if(n2==7) ? ? ? ? { ? ? ? ? ? ? int w; ? ? ? ? ? ? printf("輸入你想查詢的學號\n"); ? ? ? ? ? ? scanf("%d",&w); ? ? ? ? ? ? function7( stu, t, n, w); ? ? ? ? ? ? menu1(); ? ? ? ? ? ? menu2(); ? ? ? ? ? ? printf("完成\n"); ? ? ? ? } ? ? ? ? else if(n2==8) ? ? ? ? { ? ? ? ? ? ? char s[30]; ? ? ? ? ? ? printf("輸入你想查詢的名字\n"); ? ? ? ? ? ? scanf("%s",s); ? ? ? ? ? ? function8(stu,t, n,s); ? ? ? ? ? ? ?menu1(); ? ? ? ? ? ? ?menu2(); ? ? ? ? ? ? printf("完成\n"); ? ? ? ? } ? ? ? ? else if(n2==9) ? ? ? ? { ? ? ? ? ? ? function9( stu, n, a); ? ? ? ? ? ? menu1(); ? ? ? ? ? ? menu2(); ? ? ? ? ? ? printf("完成\n"); ? ? ? ? } ? ? ? ? else if(n2==10) ? ? ? ? { ? ? ? ? ? ? function10( stu, n, a, x, y); ? ? ? ? ? ? menu1(); ? ? ? ? ? ?menu2(); ? ? ? ? ? ?printf("完成\n"); ? ? ? ? } ? ? ? ? else if(n2==11) ? ? ? ? { ? ? ? ? ? ? function11( stu, n, a); ? ? ? ? ? ? menu1(); ? ? ? ? ? ? menu2(); ? ? ? ? ? ? printf("完成\n"); ? ? ? ? } ? ? ? ? else ?menu2(); ? ? } } //=========================信息錄入函數(shù) void keyboard(AVA stu[],int n,int n2) { ? ? ? ? ?for(i = 0; i < n; i ++) ? ? { ? ? ? ? printf("正在輸入%d個學生信息\n",i+1); ? ? ? ? ? ? ? ? ? ? // ? ? ? ? printf("學號:\n"); ? ? ? ? scanf("%d",&stu[i].no); ? ? ? ? printf("姓名:\n"); ? ? ? ? scanf("%s",stu[i].name); ? ? ? ? printf("姓名拼音簡寫\n"); ? ? ? ? scanf("%s",stu[i].name1); ? ? ? ? printf("分別輸入%d門學課成績\n",n2); ? ? ? ? for(j = 0; j < n2; j ++) ? ? ? ? { ? ? ? ? ? ? scanf("%d",&stu[i].cj[j]); ? ? ? ? } ? ? } } void function4(AVA stu[],AVA t,int n)//總分排序 { ? ? printf("總分排序\n"); ? ? FILE *fp; ? ? for(i = 0; i < n-1;i ++) ? ? ? for(j = 0; j < n-1-i;j++) ? ? ? { ? ? ? ? ?if(stu[j].all<stu[j+1].all) ? ? ? ? ?{ ? ? ? ? ? ? ?t = stu[j]; ? ? ? ? ? ? ?stu[j] = stu[j+1]; ? ? ? ? ? ? ?stu[j+1] = t; ? ? ? ? ?} ? ? ? } ? ? ?printf("正在生成文件\n"); ? ? ?printf("請及時拷貝文件,否則會造成數(shù)據(jù)丟失\n"); ? ? ?fp = fopen("總分排序.txt","w"); ? ? ?if(fp==NULL) ? ? ?{ ? ? ? ? ?printf("打開失敗\n"); ? ? ? ? ?exit(0); ? ? ?} ? ? ?for(i = 0; i < n;i ++) ? ? ?{ ? ? ? ? ?fprintf(fp,"%s %d\n",stu[i].name,stu[i].all); ? ? ?} ? ? ?fclose(fp); } void function5(AVA stu[],AVA t,int n)//學號排序 { ? ? printf("學號排序\n"); ? ? FILE *fp; ? ? for(i = 0; i < n-1;i ++) ? ? ? for(j = 0; j < n-1-i;j++) ? ? ? { ? ? ? ? ?if(stu[j].no<stu[j+1].no) ? ? ? ? ?{ ? ? ? ? ? ? ?t = stu[j]; ? ? ? ? ? ? ?stu[j] = stu[j+1]; ? ? ? ? ? ? ?stu[j+1] = t; ? ? ? ? ?} ? ? ? } ? ? ?char name[N]; ? ? ?strcpy(name,"學號為:"); ? ? ?printf("正在生成文件\n"); ? ? ?printf("請及時拷貝文件,否則會造成數(shù)據(jù)丟失\n"); ? ? ?fp = fopen("學號排序.txt","w"); ? ? ?if(fp==NULL) ? ? ?{ ? ? ? ? ?printf("打開失敗\n"); ? ? ? ? ?exit(0); ? ? ?} ? ? ?for(i = 0; i < n;i ++) ? ? ?{ ? ? ? ? ?fprintf(fp,"%s%d\n",name,stu[i].no); ? ? ? ? ?fprintf(fp,"%s%d\n",stu[i].name,stu[i].all); ? ? ?} ? ? ?fclose(fp); } void function6(AVA stu[],AVA t,int n)//姓氏排序 { ? ? printf("姓名排序\n"); ? ? FILE *fp; ? ? for(i = 0; i < n-1;i ++) ? ? ? for(j = 0; j < n-1-i;j++) ? ? ? { ? ? ? ? ?if(stu[j].name1[0]>stu[j+1].name1[0]) ? ? ? ? ?{ ? ? ? ? ? ? ?t = stu[j]; ? ? ? ? ? ? ?stu[j] = stu[j+1]; ? ? ? ? ? ? ?stu[j+1] = t; ? ? ? ? ?} ? ? ? } ? ? ?printf("正在生成文件\n"); ? ? ?printf("請及時拷貝文件,否則會造成數(shù)據(jù)丟失\n"); ? ? ?fp = fopen("姓名排序.txt","w"); ? ? ?if(fp==NULL) ? ? ?{ ? ? ? ? ?printf("打開失敗\n"); ? ? ? ? ?exit(0); ? ? ?} ? ? ?for(i = 0; i < n;i ++) ? ? ?{ ? ? ? ? ?fprintf(fp,"%s%d\n",stu[i].name,stu[i].all); ? ? ?} ? ? ?fclose(fp); } void function7(AVA stu[],AVA t,int n,int w)//學號查找 { ? ? ?int m = 0; ? ? ?for(i = 0; i < n-1;i ++) ? ? ? for(j = 0; j < n-1-i;j++) ? ? ? { ? ? ? ? ?if(stu[j].all<stu[j+1].all) ? ? ? ? ?{ ? ? ? ? ? ? ?t = stu[j]; ? ? ? ? ? ? ?stu[j] = stu[j+1]; ? ? ? ? ? ? ?stu[j+1] = t; ? ? ? ? ?} ? ? ? } ? ? ? for(i = 0; i <n; i ++) ? ? ? { ? ? ? ? ? m++; ? ? ? ? ? if(stu[i].no==w) ? ? ? ? ? { ? ? ? ? ? ? ? printf("學號為:%d\n",stu[i].no); ? ? ? ? ? ? ? printf("姓名為:%s\n",stu[i].name); ? ? ? ? ? ? ? printf("成績?yōu)?%d\n",stu[i].all); ? ? ? ? ? ? ? printf("排名為:%d\n",m); ? ? ? ? ? ? ? break; ? ? ? ? ? } ? ? ? } } void function8(AVA stu[],AVA t,int n,char s[])//姓名查找 { ? ? ?int m = 0; ? ? ?for(i = 0; i < n-1;i ++) ? ? ? for(j = 0; j < n-1-i;j++) ? ? ? { ? ? ? ? ?if(stu[j].all<stu[j+1].all) ? ? ? ? ?{ ? ? ? ? ? ? ?t = stu[j]; ? ? ? ? ? ? ?stu[j] = stu[j+1]; ? ? ? ? ? ? ?stu[j+1] = t; ? ? ? ? ?} ? ? ? } ? ? ? for(i = 0; i <n; i ++) ? ? ? { ? ? ? ? ? m++; ? ? ? ? ? if(strcmp(stu[i].name,s)==0) ? ? ? ? ? { ? ? ? ? ? ? ? printf("學號為:%d\n",stu[i].no); ? ? ? ? ? ? ? printf("姓名為:%s\n",stu[i].name); ? ? ? ? ? ? ? printf("成績?yōu)?%d\n",stu[i].all); ? ? ? ? ? ? ? printf("排名為:%d\n",m); ? ? ? ? ? ? ? break; ? ? ? ? ? } ? ? ? } } void function9(AVA stu[],int n,int a)//數(shù)據(jù)分析 { ? ? printf("請在文件夾中查看\n"); ? ? for(i = 0; i < a; i++) ? ? { ? ? ? ? double k1=0,k2=0,k3=0,k4=0,k5=0; ? ? ? ? ?for( j = 0; j < n; j ++) ? ? { ? ? ? ? if(stu[j].cj[i]>=90) ?k1++; ? ? ? ? else if(stu[j].cj[i]>=80&&stu[j].cj[i]<=89) k2++; ? ? ? ? else if(stu[j].cj[i]>=70&&stu[j].cj[i]<=79) k3++; ? ? ? ? else if(stu[j].cj[i]>=60&&stu[j].cj[i]<=69) ?k4++; ? ? ? ? else if(stu[j].cj[i]<=59) ?k5++; ? ? } ? ? ? FILE *fp; ? ? ? fp = fopen("數(shù)據(jù)分析.txt","a"); ? ? ? if(fp==NULL) ? ? ? { ? ? ? ? printf("打開失敗\n"); ? ? ? ? exit(0); ? ? ? } ? ? ? char s[20]; ? ? ? strcpy(s,"subject"); ? ? ? s[7] = '0'+i; ? ? ? s[8] = '\0'; ? ? ? char name1[20]; ? ? ? char name2[20]; ? ? ? char name3[20]; ? ? ? char name4[20]; ? ? ? char name5[20]; ? ? ? strcpy(name1,"優(yōu):%"); ? ? ? strcpy(name2,"良好:%"); ? ? ? strcpy(name3,"中等:%"); ? ? ? strcpy(name4,"及格:%"); ? ? ? strcpy(name5,"不及格:%"); ? ? ? fprintf(fp,"\n%s\n",s); ? ? ? fprintf(fp,"%s%.2f\n",name1,(k1*100)/n); ? ? ? fprintf(fp,"%s%.2f\n",name2,(k2*100)/n); ? ? ? fprintf(fp,"%s%.2f\n",name3,(k3*100)/n); ? ? ? fprintf(fp,"%s%.2f\n",name4,(k4*100)/n); ? ? ? fprintf(fp,"%s%.2f\n",name5,(k5*100)/n); ? ? ?k1=0,k2=0,k3=0,k4=0,k5=0; ? ? ?fclose(fp); ? ? } } void function10(AVA stu[],int n,int a,int b1[],int b2[])//輸出學生信息 { ? ? for(i = 0; i < n; i ++) ? { ? ? ? ?printf("學號:%d\n",stu[i].no); ? ? ? ?printf("姓名:%s\n",stu[i].name); ? ? ? ?printf("總分:%d\n",stu[i].all); ? ? ? ?printf("平均分:%d\n",stu[i].lave); ? ? ? ?printf("每科分數(shù)為:"); ? ? ? ?for(j = 0; j < a; j ++) ? ? ? ?{ ? ? ? ? ? ?printf("%d ",stu[i].cj[j]); ? ? ? ?} ? ? ? ?printf("\n"); ? ? ? ?printf("\n"); ? ? ? ?printf("\n"); ? ? ? ?printf("\n"); ? ? ? ?} ? ? printf("學科平均分為:\n"); ? ?for(j = 0; j < a; j ++) ? ? { ? ? printf("第%d學科平均分為:%d\n",j+1,b1[j]); ? ? } ? ? printf("學科總分:\n"); ? ? for(j = 0; j < a; j ++) ? ? { ? ? printf("第%d學科總分為:%d\n",j+1,b2[j]); ? ? } } void function11(AVA stu[],int n,int a)//存進文件中 { ? ? FILE *fp; ? ? fp = fopen("學生信息存檔.txt","a"); ? ? if(fp==NULL) ? ? { ? ? ? ? printf("無法打開\n"); ? ? ? ? exit(0); ? ? } ? ? char name[30]; ? ? char name1[30]; ? ? char name2[30]; ? ? strcpy(name,"每科成績:"); ? ? strcpy(name1,"總平均成績:"); ? ? strcpy(name2,"總成績:"); ? ? for(i = 0; i < n; i ++) ? ? { ? ? ? ? fprintf(fp,"\n%d %s\n",stu[i].no,stu[i].name); ? ? ? ? fprintf(fp,"%s %d\n",name2,stu[i].all); ? ? ? ? fprintf(fp,"%s %d\n",name1,stu[i].lave); ? ? ? ? fprintf(fp,"%s\n",name); ? ? ? ? for(j = 0; j < a;j ++) ? ? ? ? { ? ? ? ? ? ? fprintf(fp,"%d ",stu[i].cj[j]); ? ? ? ? } ? ? } ? fclose(fp); ? FILE *fpk1,*fpk2,*fpk3,*fpk4,*fpk5,*fpk6,*fpk7,*fpk8,*fpk9; ? fpk1 = fopen("學號.txt","a"); ? fpk2 = fopen("姓名.txt","a"); ? fpk3 = fopen("姓名簡稱.txt","a"); ? fpk4 = fopen("學科1.txt","a"); ? fpk5 = fopen("學科2.txt","a"); ? fpk6 = fopen("學科3.txt","a"); ? fpk7 = fopen("學科4.txt","a"); ? fpk8 = fopen("學科5.txt","a"); ? fpk9 = fopen("學科6.txt","a"); ? if(fpk1==NULL||fpk2==NULL||fpk3==NULL||fpk4==NULL||fpk5==NULL||fpk6==NULL||fpk7==NULL||fpk8==NULL||fpk9==NULL) ? { ? ? ? printf("無法打開\n"); ? ? ? exit(0); ? } ? for(i = 0; i < n; i ++) ? { ? ? ? fprintf(fpk1,"%d\n",stu[i].no); ? ? ? fprintf(fpk2,"%s\n",stu[i].name); ? ? ? fprintf(fpk3,"%s\n",stu[i].name1); ? ? ? fprintf(fpk4,"%d\n",stu[i].cj[0]); ? ? ? fprintf(fpk5,"%d\n",stu[i].cj[1]); ? ? ? fprintf(fpk6,"%d\n",stu[i].cj[2]); ? ? ? if(a==4||a==5||a==6) ? ? ? { ? ? ? ? ? fprintf(fpk7,"%d\n",stu[i].cj[3]); ? ? ? } ? ? ? if(a==5||a==6) ? ? ? { ? ? ? ? ? fprintf(fpk8,"%d\n",stu[i].cj[4]); ? ? ? } ? ? ? if(a==6) ? ? ? ? { ? ? ? ? fprintf(fpk9,"%d\n",stu[i].cj[5]); ? ? ? ? } ? } ? ?fclose(fpk1); ? ?fclose(fpk2); ? ?fclose(fpk3); ? ?fclose(fpk4); ? ?fclose(fpk5); ? ?fclose(fpk6); ? ?fclose(fpk7); ? ?fclose(fpk8); ? ?fclose(fpk9); } void exchange(AVA stu[],int a,int b)//讀檔函數(shù) a學生b學科 { ? ?FILE *fpk1,*fpk2,*fpk3,*fpk4,*fpk5,*fpk6,*fpk7,*fpk8,*fpk9; ? ? fpk1 = fopen("學號.txt","r"); ? ? fpk2 = fopen("姓名.txt","r"); ? ? fpk3 = fopen("姓名簡稱.txt","r"); ? ? fpk4 = fopen("學科1.txt","r"); ? ? fpk5 = fopen("學科2.txt","r"); ? ? fpk6 = fopen("學科3.txt","r"); ? ? fpk7 = fopen("學科4.txt","r"); ? ? fpk8 = fopen("學科5.txt","r"); ? ? fpk9 = fopen("學科6.txt","r"); ? ? if(fpk1==NULL||fpk2==NULL||fpk3==NULL||fpk4==NULL||fpk5==NULL||fpk6==NULL||fpk7==NULL||fpk8==NULL||fpk9==NULL) ? { ? ? ? printf("無法打開\n"); ? ? ? exit(0); ? } ? i = 0; ? char s1[N],s2[N],s3[N],s4[N],s5[N],s6[N],s7[N],s8[N],s9[N]; ? ?while(fgets(s1,40,fpk1)!=NULL) ? ?{ ? ? ? ?int w; ? ? ? ?w = strlen(s1); ? ? ? ?if(w==2) ? ? ? ?{ ? ? ? ? ? ?stu[i].no = s1[0]-'0'; ? ? ? ?} ? ? ? ?else if(w==3) ? ? ? ?{ ? ? ? ? ? ?stu[i].no=(s1[0]-'0')*10+s1[1]-'0'; ? ? ? ?} ? ? ? ?i++; ? ? ? ?if(i==a) break; ? ?} ? ?i=0; ? ?while(fgets(s2,40,fpk2)!=NULL) ? ?{ ? ? ? ?strcpy(stu[i].name,s2); ? ? ? ?i++; ? ? ? ?if(i==a)break; ? ?} ? ?i=0; ? ? while(fgets(s3,40,fpk3)!=NULL) ? ?{ ? ? ? ?strcpy(stu[i].name1,s3); ? ? ? ?i++; ? ? ? ?if(i==a)break; ? ?} ? ? ? ? i = 0; ? ?while(fgets(s4,40,fpk4)!=NULL) ? ?{ ? ? ? ?int w; ? ? ? ?w = strlen(s4); ? ? ? ?if(w==2) ? ? ? ?{ ? ? ? ? ? stu[i].cj[0] = s4[0]-'0'; ? ? ? ?} ? ? ? ?else if(w==3) ? ? ? ?{ ? ? ? ? ? ? stu[i].cj[0]=(s4[0]-'0')*10+s4[1]-'0'; ? ? ? ?} ? ? ? ?i++; ? ? ? ?if(i==a) break; ? ?} ? ? i = 0; ? ?while(fgets(s5,40,fpk5)!=NULL) ? ?{ ? ? ? ?int w; ? ? ? ?w = strlen(s5); ? ? ? ?if(w==2) ? ? ? ?{ ? ? ? ? ? ? stu[i].cj[1] = s5[0]-'0'; ? ? ? ?} ? ? ? ?else if(w==3) ? ? ? ?{ ? ? ? ? ? stu[i].cj[1]=(s5[0]-'0')*10+s5[1]-'0'; ? ? ? ?} ? ? ? ?i++; ? ? ? ?if(i==a) break; ? ?} ? ? i = 0; ? ?while(fgets(s6,40,fpk6)!=NULL) ? ?{ ? ? ? ?int w; ? ? ? ?w = strlen(s6); ? ? ? ?if(w==2) ? ? ? ?{ ? ? ? ? ? ?stu[i].cj[2] = s6[0]-'0'; ? ? ? ?} ? ? ? ?else if(w==3) ? ? ? ?{ ? ? ? ? ? ?stu[i].cj[2]=(s6[0]-'0')*10+s6[1]-'0'; ? ? ? ?} ? ? ? ?i++; ? ? ? ?if(i==a) break; ? ?} ? ? if(b==4||b==5||b==6) ? ? { ? ? ? ? ? i = 0; ? ?while(fgets(s7,40,fpk7)!=NULL) ? ?{ ? ? ? ?int w; ? ? ? ?w = strlen(s7); ? ? ? ?if(w==2) ? ? ? ?{ ? ? ? ? ? ?stu[i].cj[3] = s7[0]-'0'; ? ? ? ?} ? ? ? ?else if(w==3) ? ? ? ?{ ? ? ? ? ? ?stu[i].cj[3]=(s7[0]-'0')*10+s7[1]-'0'; ? ? ? ?} ? ? ? ?i++; ? ? ? ?if(i==a) break; ? ?} ? ? } ? ? ?if(b==5||b==6) ? ? ?{ ? ? ? ? ? i = 0; ? ?while(fgets(s8,40,fpk8)!=NULL) ? ?{ ? ? ? ?int w; ? ? ? ?w = strlen(s8); ? ? ? ?if(w==2) ? ? ? ?{ ? ? ? ? ? ? stu[i].cj[4] = s8[0]-'0'; ? ? ? ?} ? ? ? ?else if(w==3) ? ? ? ?{ ? ? ? ? ? stu[i].cj[4]=(s8[0]-'0')*10+s8[1]-'0'; ? ? ? ?} ? ? ? ?i++; ? ? ? ?if(i==a) break; ? ?} ? ? ?} ? ? if(b==6) ? ? { ? ? ? ? ?i = 0; ? ?while(fgets(s9,40,fpk9)!=NULL) ? ?{ ? ? ? ?int w; ? ? ? ?w = strlen(s9); ? ? ? ?if(w==2) ? ? ? ?{ ? ? ? ? ? ?stu[i].cj[5] = s9[0]-'0'; ? ? ? ?} ? ? ? ?else if(w==3) ? ? ? ?{ ? ? ? ? ? ?stu[i].cj[5]=(s9[0]-'0')*10+s9[1]-'0'; ? ? ? ?} ? ? ? ?i++; ? ? ? ?if(i==a) break; ? ?} ? ? } ? ?fclose(fpk1); ? ?fclose(fpk2); ? ?fclose(fpk3); ? ?fclose(fpk4); ? ?fclose(fpk5); ? ?fclose(fpk6); ? ?fclose(fpk7); ? ?fclose(fpk8); ? ?fclose(fpk9); ? ?printf("讀檔完成\n"); }
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Qt實現(xiàn)SqlRelationalTable關(guān)聯(lián)表組件
在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點介紹SqlRelationalTable關(guān)聯(lián)表組件的常用方法及靈活運用,感興趣的可以了解一下2023-12-12C++的template模板中class與typename關(guān)鍵字的區(qū)別分析
這篇文章中我們來談一談C++的template模板中class與typename關(guān)鍵字的區(qū)別分析,同時會講到嵌套從屬名稱時的一些注意點,需要的朋友可以參考下2016-06-06C++中typedef 及其與struct的結(jié)合使用
這篇文章主要介紹了C++中typedef 及其與struct的結(jié)合使用,需要的朋友可以參考下2014-02-02