C語(yǔ)言代碼實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)
某班有最多不超過(guò) 30 人(具體人數(shù)由鍵盤輸人)參加期未考試,考試科目 最多不超過(guò) 6 門(具體門數(shù)由鍵盤輸入,但不少于 3 門),學(xué)生成績(jī)管理系統(tǒng)是一 個(gè)非常實(shí)用的程序,如果能夠把用戶輸入數(shù)據(jù)存盤,下次運(yùn)行時(shí)讀出,就更有用 了。增加文件讀寫的功能,即編程實(shí)現(xiàn)如下菜單驅(qū)動(dòng)的學(xué)生成績(jī)管理系統(tǒng):
(1) 錄入每個(gè)學(xué)生的學(xué)號(hào)、姓名和各科考試成績(jī)。
(2) 計(jì)算每門課程的總分和平均分。
(3) 計(jì)算每個(gè)學(xué)生的總分和平均分。
(4) 按每個(gè)學(xué)生的總分由高到低排出名次表。
(5) 按學(xué)號(hào)由小到大排出成績(jī)表。
(6) 按姓名的字典順序排出成績(jī)表。
(7) 按學(xué)號(hào)查詢學(xué)生排名及其考試成績(jī)。
(8) 按姓名查詢學(xué)生排名及其考試成績(jī)。
(9) 按優(yōu)秀(90-100 分)、良好(80-89 分)、中等(70-79 分)、及格(60-69 分)、 不及格(0-59 分)5 個(gè)類別,對(duì)每門課程分別統(tǒng)計(jì)每個(gè)類別的人數(shù)以及所占的百 分比。
(10)輸出每個(gè)學(xué)生的學(xué)號(hào)、姓名、各科考試成績(jī)、總分、平均分以及每門課 程的總分和平均分。
代碼如下:
#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);//學(xué)號(hào)排序
void function6(AVA stu[],AVA t,int n);//姓名排序
void function7(AVA stu[],AVA t,int n,int w);//學(xué)號(hào)查找
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[]);//輸出學(xué)生信息
void function11(AVA stu[],int n,int a);//存進(jìn)文件里面
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(" ? ? ? ? ? ? ? ? ? ? ? ? ? ?學(xué)生信息管理系統(tǒng) ? ? ? ? ? ? ? ? ? ? ? ? ? \n");
? ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n");
? ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n");
? ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n");
? ? printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |\n");
? ? printf("- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -\n");
}
void menu1()
{
? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 信息輸入 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n");
? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 學(xué)課成績(jī) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n");
? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 學(xué)生成績(jī) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n");
? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 總分排序 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n");
? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 學(xué)號(hào)排序 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n");
? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 姓名排序 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n");
? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 學(xué)號(hào)查詢 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n");
? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 姓名查詢 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n");
? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 數(shù)據(jù)分析 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n");
? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 信息輸出 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n");
? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 數(shù)據(jù)存檔 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\n");
}
void menu2()
{
? ? printf("_ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? _\n");
? ? printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |\n");
? ? printf("-> ? ? ? ? ? ? ? ? ? ? ? ? ? ? 功能代號(hào) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<-\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("如果檔案中沒(méi)有存有足夠的學(xué)科數(shù),則可能提取亂碼\n");
? ? printf("如果文件中沒(méi)有數(shù)據(jù)則會(huì)顯示無(wú)法打開(kāi)\n");
? ? exchange( stu,n,n3);
? ? case1( stu,n,n3);
}
//中轉(zhuǎn)函數(shù),菜單與功能的橋梁
void basic(AVA stu[])
{
? ? menu();
? ? printf("若無(wú)學(xué)生信息檔案需要先錄入\n");
? ? printf("<1-錄入><2-讀檔><3-退出>\n");
? ? int n,n1,n3;
? ? do
? ? {
? ? ? ? scanf("%d",&n1);
? ? ? ? if(3<n1||n1<1)
? ? ? ? {
? ? ? ? ? ? printf("數(shù)據(jù)輸入錯(cuò)誤,請(qǐng)重新輸入\n");
? ? ? ? }
? ? }while(3<n1||n1<1);
? ? ?printf("輸入學(xué)生數(shù)量\n");
? ? do
? ? {
? ? ? ? scanf("%d",&n);
? ? ? ? if(30<n||n<1)
? ? ? ? {
? ? ? ? ? ? printf("數(shù)據(jù)輸入錯(cuò)誤,請(qǐng)重新輸入<1-30>\n");
? ? ? ? }
? ? }while(30<n||n<1);
? ? printf("輸入學(xué)科數(shù)量\n");
? ? ?do
? ? {
? ? ? ? scanf("%d",&n3);
? ? ? ? if(6<n3||n3<3)
? ? ? ? {
? ? ? ? ? ? printf("數(shù)據(jù)輸入錯(cuò)誤,請(qǐng)重新輸入<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("請(qǐng)輸入你想選擇的功能\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("計(jì)算完成,是否打???<1 or 0>\n");
? ? ? ? ? ? scanf("%d",&f);
? ? ? ? ? ? if(f==1)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? for(i = 0; i < n; i ++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("第%d個(gè)同學(xué)的總分為:%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("輸入你想查詢的學(xué)號(hào)\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個(gè)學(xué)生信息\n",i+1); ? ? ? ? ? ? ? ? ? ? //
? ? ? ? printf("學(xué)號(hào):\n");
? ? ? ? scanf("%d",&stu[i].no);
? ? ? ? printf("姓名:\n");
? ? ? ? scanf("%s",stu[i].name);
? ? ? ? printf("姓名拼音簡(jiǎn)寫\n");
? ? ? ? scanf("%s",stu[i].name1);
? ? ? ? printf("分別輸入%d門學(xué)課成績(jī)\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("請(qǐng)及時(shí)拷貝文件,否則會(huì)造成數(shù)據(jù)丟失\n");
? ? ?fp = fopen("總分排序.txt","w");
? ? ?if(fp==NULL)
? ? ?{
? ? ? ? ?printf("打開(kāi)失敗\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)//學(xué)號(hào)排序
{
? ? printf("學(xué)號(hào)排序\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,"學(xué)號(hào)為:");
? ? ?printf("正在生成文件\n");
? ? ?printf("請(qǐng)及時(shí)拷貝文件,否則會(huì)造成數(shù)據(jù)丟失\n");
? ? ?fp = fopen("學(xué)號(hào)排序.txt","w");
? ? ?if(fp==NULL)
? ? ?{
? ? ? ? ?printf("打開(kāi)失敗\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("請(qǐng)及時(shí)拷貝文件,否則會(huì)造成數(shù)據(jù)丟失\n");
? ? ?fp = fopen("姓名排序.txt","w");
? ? ?if(fp==NULL)
? ? ?{
? ? ? ? ?printf("打開(kāi)失敗\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)//學(xué)號(hào)查找
{
? ? ?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("學(xué)號(hào)為:%d\n",stu[i].no);
? ? ? ? ? ? ? printf("姓名為:%s\n",stu[i].name);
? ? ? ? ? ? ? printf("成績(jī)?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("學(xué)號(hào)為:%d\n",stu[i].no);
? ? ? ? ? ? ? printf("姓名為:%s\n",stu[i].name);
? ? ? ? ? ? ? printf("成績(jī)?yōu)?%d\n",stu[i].all);
? ? ? ? ? ? ? printf("排名為:%d\n",m);
? ? ? ? ? ? ? break;
? ? ? ? ? }
? ? ? }
}
void function9(AVA stu[],int n,int a)//數(shù)據(jù)分析
{
? ? printf("請(qǐng)?jiān)谖募A中查看\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("打開(kāi)失敗\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[])//輸出學(xué)生信息
{
? ? for(i = 0; i < n; i ++)
? {
? ? ? ?printf("學(xué)號(hào):%d\n",stu[i].no);
? ? ? ?printf("姓名:%s\n",stu[i].name);
? ? ? ?printf("總分:%d\n",stu[i].all);
? ? ? ?printf("平均分:%d\n",stu[i].lave);
? ? ? ?printf("每科分?jǐn)?shù)為:");
? ? ? ?for(j = 0; j < a; j ++)
? ? ? ?{
? ? ? ? ? ?printf("%d ",stu[i].cj[j]);
? ? ? ?}
? ? ? ?printf("\n");
? ? ? ?printf("\n");
? ? ? ?printf("\n");
? ? ? ?printf("\n");
? ? ? ?}
? ? printf("學(xué)科平均分為:\n");
? ?for(j = 0; j < a; j ++)
? ? {
? ? printf("第%d學(xué)科平均分為:%d\n",j+1,b1[j]);
? ? }
? ? printf("學(xué)科總分:\n");
? ? for(j = 0; j < a; j ++)
? ? {
? ? printf("第%d學(xué)科總分為:%d\n",j+1,b2[j]);
? ? }
}
void function11(AVA stu[],int n,int a)//存進(jìn)文件中
{
? ? FILE *fp;
? ? fp = fopen("學(xué)生信息存檔.txt","a");
? ? if(fp==NULL)
? ? {
? ? ? ? printf("無(wú)法打開(kāi)\n");
? ? ? ? exit(0);
? ? }
? ? char name[30];
? ? char name1[30];
? ? char name2[30];
? ? strcpy(name,"每科成績(jī):");
? ? strcpy(name1,"總平均成績(jī):");
? ? strcpy(name2,"總成績(jī):");
? ? 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("學(xué)號(hào).txt","a");
? fpk2 = fopen("姓名.txt","a");
? fpk3 = fopen("姓名簡(jiǎn)稱.txt","a");
? fpk4 = fopen("學(xué)科1.txt","a");
? fpk5 = fopen("學(xué)科2.txt","a");
? fpk6 = fopen("學(xué)科3.txt","a");
? fpk7 = fopen("學(xué)科4.txt","a");
? fpk8 = fopen("學(xué)科5.txt","a");
? fpk9 = fopen("學(xué)科6.txt","a");
? if(fpk1==NULL||fpk2==NULL||fpk3==NULL||fpk4==NULL||fpk5==NULL||fpk6==NULL||fpk7==NULL||fpk8==NULL||fpk9==NULL)
? {
? ? ? printf("無(wú)法打開(kāi)\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學(xué)生b學(xué)科
{
? ?FILE *fpk1,*fpk2,*fpk3,*fpk4,*fpk5,*fpk6,*fpk7,*fpk8,*fpk9;
? ? fpk1 = fopen("學(xué)號(hào).txt","r");
? ? fpk2 = fopen("姓名.txt","r");
? ? fpk3 = fopen("姓名簡(jiǎn)稱.txt","r");
? ? fpk4 = fopen("學(xué)科1.txt","r");
? ? fpk5 = fopen("學(xué)科2.txt","r");
? ? fpk6 = fopen("學(xué)科3.txt","r");
? ? fpk7 = fopen("學(xué)科4.txt","r");
? ? fpk8 = fopen("學(xué)科5.txt","r");
? ? fpk9 = fopen("學(xué)科6.txt","r");
? ? if(fpk1==NULL||fpk2==NULL||fpk3==NULL||fpk4==NULL||fpk5==NULL||fpk6==NULL||fpk7==NULL||fpk8==NULL||fpk9==NULL)
? {
? ? ? printf("無(wú)法打開(kāi)\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");
}以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
DSP中浮點(diǎn)轉(zhuǎn)定點(diǎn)運(yùn)算--舉例及編程中的心得
本文主要講解DSP浮點(diǎn)轉(zhuǎn)定點(diǎn)運(yùn)算舉例及編程中的心得 ,具有參考價(jià)值,需要的朋友可以參考一下。2016-06-06
C語(yǔ)言大小端字節(jié)序存儲(chǔ)模式深入解讀
我們知道,當(dāng)編譯器執(zhí)行 “創(chuàng)建變量” 這一代碼時(shí),會(huì)在內(nèi)存中開(kāi)辟空間相應(yīng)的空間來(lái)存儲(chǔ)變量值。而對(duì)于整型變量而言,變量值又是以二進(jìn)制補(bǔ)碼的形式存放的2022-09-09
C語(yǔ)言實(shí)現(xiàn)掃雷小游戲簡(jiǎn)單版
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)掃雷小游戲簡(jiǎn)單版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
C語(yǔ)言實(shí)現(xiàn)靜態(tài)順序表的實(shí)例詳解
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)靜態(tài)順序表的實(shí)例詳解的相關(guān)資料,這里提供是幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下2017-08-08
教你用c++從頭開(kāi)始實(shí)現(xiàn)決策樹(shù)
從頭實(shí)現(xiàn)一個(gè)分類決策樹(shù)分類器似乎是一個(gè)適當(dāng)?shù)奶魬?zhàn)。這已經(jīng)被證明是一個(gè)測(cè)試但有益的學(xué)習(xí)旅程,我想分享一些我在這個(gè)過(guò)程中的主要經(jīng)驗(yàn),對(duì)c++實(shí)現(xiàn)決策樹(shù)相關(guān)知識(shí)感興趣的朋友一起看看吧2021-05-05

