當前位置:編程學習大全網 - 編程語言 - Java編程名稱

Java編程名稱

/*

學生成績管理計劃

編寫壹個管理程序來統計學生的考試成績。

假設學生成績已經以壹個學生壹條記錄的形式存儲在檔案中。

每個學生的記錄包含姓名、學號、各門課程成績等信息。

該程序具有以下功能:查找每門課程的總分,平均分,根據名稱、

根據學號查找其記錄並顯示,瀏覽所有學生的成績並根據總分從高到低顯示學生信息。

*/

# include & ltstdio.h & gt

# define n3/*課程數量*/

# definenamelen20/*名稱中的最大字符數*/

# #定義代碼EN 10/*/*學生編號的最大字符數*/

# define fnamelen 80/*文件名的最大字符數*/

# definebullen80/*緩沖區中的最大字符數*/

/*課程名稱列表*/

char課業[SWN][NAMELEN+1] = { "語文"、"數學"、"英語" };

結構記錄

{

charname[name len+1];/*姓名*/

char code[CODELEN+1];/*學生ID */

int marks[SWN];/*各門課程的成績*/

int total/*總分*/

}斯圖;

結構節點

{

charname[name len+1];/*姓名*/

char code[CODELEN+1];/*學生ID */

int marks[SWN];/*各門課程的成績*/

int total/*總分*/

structnode * next/*後續表格元素指針*/

} *頭;/*鏈表頭指針*/

int total[SWN];/*每門課程的總成績*/

FILE * stfpt/*文件指針*/

char stuff[fname len];/*文件名*/

/*從指定文件中讀取記錄*/

int readrecord(FILE *fpt,struct record *rpt)

{

char buf[buf len];

int I;

if(fscanf(fpt," %s ",buf)!=1)

返回0;/*文件結尾*/

strncpy(RPT-& gt;name,buf,name len);

fscanf(fpt," %s ",buf);

strncpy(RPT-& gt;code,buf,CODELEN);

for(I = 0;我& ltSWN;i++)

fscanf(fpt," %d ",& ampRPT->;marks[I]);

for(RPT-& gt;total=0,I = 0;我& ltSWN;i++)

RPT->;total+= RPT-& gt;標記[I];

返回1;

}

/*將記錄寫入指定文件*/

writerecord(FILE *fpt,struct record *rpt)

{

int I;

fprintf(fpt," %s\n ",RPT-& gt;姓名);

fprintf(fpt," %s\n ",RPT-& gt;碼);

for(I = 0;我& ltSWN;i++)

fprintf(fpt," %d\n ",RPT-& gt;marks[I]);

返回;

}

/*顯示學生記錄*/

displaystu(結構記錄*報告)

{

int I;

printf(" \ n名稱:%s\n ",RPT-& gt;姓名);

printf("Code : %s\n ",RPT-& gt;碼);

printf(" Marks:\ n ");

for(I = 0;我& ltSWN;i++)

printf(" %-15s : %4d\n ",schoolwork[i],RPT-& gt;marks[I]);

printf("總計:%4d\n ",RPT-& gt;合計);

}

/*計算各科總分*/

int totalmark(char *fname)

{

FILE * fp

結構記錄;

int count,I;

if((fp=fopen(fname," r))= = NULL)

{

printf("無法打開文件%s.\n ",fname);

返回0;

}

for(I = 0;我& ltSWN;i++)

total[I]= 0;

count = 0;

while(readrecord(fp,& amps)!=0)

{

for(I = 0;我& ltSWN;i++)

total[I]+= s . marks[I];

count++;

}

fclose(FP);

返回計數;/*返回記錄的數量*/

}

/*列表顯示學生信息*/

void liststu(char *fname)

{

FILE * fp

結構記錄;

if((fp=fopen(fname," r))= = NULL)

{

printf("無法打開文件%s.\n ",fname);

返回;

}

while(readrecord(fp,& amps)!=0)

{

display stu(& amp;s);

printf("\n按ENTER鍵繼續...\ n ");

while(getchar()!= ' \ n ');

}

fclose(FP);

返回;

}

/*構造鏈表*/

結構節點*生成列表(char *fname)

{

FILE * fp

結構記錄;

結構節點*p,*u,*v,* h;

int I;

if((fp=fopen(fname," r))= = NULL)

{

printf("無法打開文件%s.\n ",fname);

返回NULL

}

h =空;

p=(結構節點*)malloc(sizeof(結構節點));

while(readrecord(fp,(struct record *)p)!=0)

{

v = h;

而(v & amp& ampp->;總計& lt= v->;總計)

{

u = v;

v = v-& gt;接下來;

}

如果(v==h)

h = p;

其他

u-& gt;next = p;

p->;next = v;

p=(結構節點*)malloc(sizeof(結構節點));

}

免費(p);

fclose(FP);

返回h;

}

/*按順序顯示鏈表中的每個表格元素*/

void顯示列表(結構節點*h)

{

而(h!=空)

{

display stu((struct record *)h);

printf("\n按ENTER鍵繼續...\ n ");

while(getchar()!= ' \ n ');

h = h-& gt;接下來;

}

返回;

}

/*按學生姓名查找學生記錄*/

int retrievebyn(char *fname,char *key)

{

FILE * fp

int c;

結構記錄;

if((fp=fopen(fname," r))= = NULL)

{

printf("無法打開文件%s.\n ",fname);

返回0;

}

c = 0;

while(readrecord(fp,& amps)!=0)

{

if(strcmp(s.name,key)==0)

{

display stu(& amp;s);

c++;

}

}

fclose(FP);

如果(c==0)

printf("學生%s不在文件%s中,\n ",key,fname);

返回1;

}

/*按學號查找學生記錄*/

int retrievebyc(char *fname,char *key)

{

FILE * fp

int c;

結構記錄;

if((fp=fopen(fname," r))= = NULL)

{

printf("無法打開文件%s.\n ",fname);

返回0;

}

c = 0;

while(readrecord(fp,& amps)!=0)

{

if(strcmp(s.code,key)==0)

{

display stu(& amp;s);

c++;

打破;

}

}

fclose(FP);

如果(c==0)

printf("學生%s不在文件%s中,\n ",key,fname);

返回1;

}

主()

{

int i,j,n;

char c;

char buf[buf len];

FILE * fp

結構記錄;

clr SCR();

printf("請輸入學生成績記錄文件的名稱:");

scanf("%s ",stuff);

if((FP = fopen(stuff," r))= = NULL)

{

printf("文件%s不存在,您想創建它嗎?(是/否)”,填充);

getchar();

c = getchar();

if(c=='Y'||c=='y ')

{

FP = fopen(stuff," w ");

printf("請輸入要寫入文件的記錄號:");

scanf("%d ",& ampn);

for(I = 0;我& ltn;i++)

{

printf("輸入學生姓名:");

scanf("%s ",& amps . name);

printf("輸入學生的代碼:");

scanf("%s ",& amp美國代碼);

for(j = 0;j & ltSWN;j++)

{

printf("輸入%s標記: ",課業[j]);

scanf("%d ",& amps . marks[j]);

}

寫記錄(FP & amp;s);

}

fclose(FP);

}

}

fclose(FP);

getchar();

/* clrscr();*/

puts("現在您可以輸入壹個命令來管理記錄。");

puts("m:分數的平均值。");

puts("t:總分數。");

puts("n:按學生姓名搜索記錄。");

puts("c:按學生代碼搜索記錄。");

puts("l:列出所有記錄。");

puts("s:按總數對記錄進行排序和列出。");

puts("q:不幹了!");

while(1)

{

puts("請輸入命令:");

scanf(" %c ",& ampc);/*輸入選擇命令*/

if(c=='q'||c=='Q ')

{

puts("\n感謝您的使用。");

打破;/* q,結束程序運行*/

}

開關(c)

{

案例“m”:/*計算平均分*/

案例“M”:

if((n = total mark(stuff))= = 0)

{

puts("錯誤!");

打破;

}

printf(" \ n ");

for(I = 0;我& ltSWN;i++)

printf("%-15s的平均值為:%.2f.\n ",課業[i],(浮點)合計[I]/n);

打破;

案例' t': /*計算總分*/

案例“T”:

if((n = total mark(stuff))= = 0)

{

puts("錯誤!");

打破;

}

printf(" \ n ");

for(I = 0;我& ltSWN;i++)

printf("%-15s的總分是:%d.\n ",課業[i],總分[I]);

打破;

案例“n”:/*按學生姓名查找記錄*/

案例“N”:

printf("請輸入您要搜索的學生姓名:");

scanf("%s ",buf);

retrieve byn(stuff,buf);

打破;

案例“c”:/*按學生ID查找記錄*/

案例“C”:

printf("請輸入您要搜索的學生代碼:");

scanf("%s ",buf);

retrievebyc(stuf,buf);

打破;

案例“l”:/*列出所有學生記錄*/

案例“L”:

list stu(stuff);

打破;

案例':/*按總分降序顯示*/

案例:

if((head = makelist(stuff))!=空)

displaylist(表頭);

打破;

默認:break

}

}

}

  • 上一篇:編程錯誤a;前方是什麽
  • 下一篇:實現python文本寫入word
  • copyright 2024編程學習大全網