當前位置:首頁 » 考試成績 » C語言讀寫學生成績信息

C語言讀寫學生成績信息

發布時間: 2020-12-25 18:33:57

Ⅰ 用c語言,求學生成績

#include<stdio.h>
#include<stdlib.h>
/*定義全局變數*/
int num;
struct student
{
l name[20];
charong id;
char sex[10];
int math;
int english;
int c_program;
int total;
}stu[41];
/*主菜單*/
void page_title()
{
printf("※※※※※※※※計算機系學生成績管理※※※※※※※※\n");
printf(" 1、請錄入學生成績記錄\n");
printf(" 2、請顯示學生成績記錄\n");
printf(" 3、請修改學生成績記錄\n");
printf(" 4、請刪除學生成績記錄\n");
printf(" 5、請按學號查詢學生成績記錄\n");
printf(" 6、請按學號顯示學生成績記錄\n");
printf(" 7、請按總成績遞減輸出\n");
printf(" 8、請保存\n");
printf(" 0、請退出\n");
}
/*main()
{
system("cls");
pape_title();
}*/
void student_new()//1、錄入學生成績
{
int i;
printf("請輸入學生個數<1-41>:");
scanf("%d",&num);
printf("*****************************************************\n");
printf("學號 姓名 性別 數學 英語 C語言\n");
printf("*****************************************************\n");
for(i=0;i<num;i++)//num個學生
{
scanf("%ld%s%s%d%d%d",&stu[i].id,&stu[i].name,&stu[i].sex,&stu[i].math,&stu[i].english,&stu[i].c_program);
stu[i].total=stu[i].math+stu[i].english+stu[i].c_program;
printf("-----------------------------------------------------\n");
}
}

void show()//2、顯示學生成績
{
int i;
printf("*******************************************************\n");
printf("學號 姓名 性別 數學 英語 C語言 總成績\n");
printf("*******************************************************\n");
for(i=0;i<num;i++)
{
printf("%ld\t%s\t%s\t%d\t%d\t%d\t%d\t\n",stu[i].id,stu[i].name,stu[i].sex,stu[i].math,stu[i].english,stu[i].c_program,stu[i].total);
printf("-------------------------------------------------------\n");
}
}

void student_edit()//3、修改學生信息
{
int i,n;
long stunum;
printf("請輸入要修改的學號:");
scanf("%d",&stunum);
printf("==============以下選項可供選擇===============\n");
printf(" 1、請修改學號\n");
printf(" 2、請修改姓名\n");
printf(" 3、請修改性別\n");
printf(" 4、請修改數學成績\n");
printf(" 5、請修改英語成績\n");
printf(" 6、請修改c語言成績\n");
printf("請輸入要修改的選項:");
scanf("%d",&n);
for(i=0;i<num;i++)
{
if(stu[i].id==stunum)//查找
{

if(n==1)
{
printf("請修改學號:\n");
scanf("%ld",&stu[i].id);
}
if(n==2)
{
printf("請修改姓名:\n");
scanf("%s",&stu[i].name);
}
if(n==3)
{
printf("請修改性別:\n");
scanf("%s",&stu[i].sex);
}
if(n==4)
{
printf("請修改數學成績:\n");
scanf("%d",&stu[i].math);
}
if(n==5)
{
printf("請修改英語成績:\n");
scanf("%d",&stu[i].english);
}
if(n==6)
{
printf("請修改c語言成績:\n");
scanf("%d",&stu[i].c_program);
}
stu[i].total=stu[i].math+stu[i].english+stu[i].c_program;//求總成績
break;
}
if(i==num)
printf("該生信息不存在!");
}
}

void student_del()//*4、刪除一個學生的學號(把後面的數<i+1>往前移,把要刪除的那個數擠掉)【修改與之相似】
{
int i,j,t;
long stunum;
printf("請輸入您要刪除的學號:");
scanf("%d",&stunum);
for(i=0;i<num;i++)
{
if(stu[i].id==stunum)//查找
{
printf("確認要刪除該生信息!\n");
printf("輸入的數為0,其他則退出\n");
scanf("%d",&t);
if(t==0)
{
for(j=i+1;j<num;j++)//刪除
{
stu[j-1]=stu[j];
}
num--;//退學,減少了一個人
break;
}
}
}
if(i==num)
printf("該學生信息不存在\n");
}

void sore_search()//5、按學號查詢學生成績
{
int i=0;
long stunum;//定義學號
printf("請輸入您要查找的學號:");
scanf("%d",&stunum);//輸入要查找到的學號
for(i=0;i<num;i++)
{
if(stu[i].id==stunum)//輸入的學號和所有學生的學號比較,即查找
{
printf("*******************************************************\n");
printf("學號 姓名 性別 數學 英語 C語言 總成績\n");
printf("*******************************************************\n");
printf("%ld\t%s\t%s\t%d\t%d\t%d\t%d\t\n",stu[i].id,stu[i].name,stu[i].sex,stu[i].math,stu[i].english,stu[i].c_program,stu[i].total);
printf("-------------------------------------------------------\n");
break;//找到後馬上停止
}
}
if(i==num)//說明for都執行了一遍,for語句里沒有num;
printf("該生信息不存在");
}

void score_sort()//7、按總成績遞減排序
{
int i,j;
struct student t;
for(i=0;i<=num-2;i++)//輪數//
{
for(j=0;j<=num-2;j++)//相鄰兩個數進行比較
{
if(stu[j].total<stu[j+1].total)
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
}
}
}

void save()//8、保存(通過代碼來控制文件,在C盤中)
{
int i;
FILE *fp=fopen("c:\\score.txt","w+");//FILE(一定要大寫):文件類型 *FP代表指針 .txt代表記事本文件 w+:既可以保存,又可以寫
if(fp==NULL)//fp文件若為空
{
printf("文件打開失敗");
exit(1);
}
for(i=0;i<num;i++)
fprintf(fp,"%ld\t%s\t%s\t%d\t%d\t%d\t%d\t\n",stu[i].id,stu[i].name,stu[i].sex,stu[i].math,stu[i].english,stu[i].c_program,stu[i].total);
fclose(fp);//fprintf:保存,fp:保存到fp文件中,fclose:關閉fp文件
}
void load()//1、載入文件函數
{
int i;
int n;//n:記錄數
FILE *fp=fopen("c:\\score.txt","r");//r->read的標志 fopen的功能是打開文件
if(fp==NULL)
{
printf("文件打開失敗");
exit(1);
}
printf("請輸入記錄數:");
scanf("%d",&n);
num=n;//把讀到的n的個數賦給num
for(i=0;i<num;i++)
{
fscanf(fp,"%ld\t%s\t%s\t%d\t%d\t%d\t%d\t\n",&stu[i].id,&stu[i].name,&stu[i].sex,&stu[i].math,&stu[i].english,&stu[i].c_program,&stu[i].total);
}//fscanf:從文件中讀取數據
fclose(fp);//關閉fp文件
}

main()
{
int select;//選擇選項
int flag=1;//退出標志
int user,admin;
printf("★◎★◎★◎====歡迎使用學生信息管理系統!====★◎★◎★◎\n");
printf("========請輸入您的賬號和密碼:========\n");
scanf("%d,%d",&user,&admin);
if(user==123&&admin==123)
{
system("cls");//清屏
page_title();
while(flag!=0)//只要flag!=0,就一直循環
{
printf("請輸出選項:");
scanf("%d",&select);
switch(select)
{
case 1:student_new();break;
case 2:show();break;//顯示
case 3:student_edit();show();break;//修改
case 4:student_del();show();break;
case 5:sore_search();break;
case 6:load();show();break;
case 7:score_sort();show();break;
case 8:save();show();break;
case 0:flag=0;break;
default:break;

}
}
}
else printf("對不起,您輸入的密碼不正確!");
}

Ⅱ 編制一個C語言成績記錄簿,每個學生信息包括:學號、姓名、C語言成績。 具體功能看問題補充

//某班級學生C語言第一次正考的成績存於數據文件score.dat中,記錄了學生學號、姓名和考試成績,bk.dat文件中記錄了補考學生的學號、姓名和補考成績,編寫程序以鏈式存儲結構實現以下要求:
//1、對該班級按成績降序排序並統計成績平均分及每個分數段的人數,結果寫入到result.dat中。
//2、再根據補考成績修改原成績,修改成績後仍按成績降序寫在result.dat的後面。成績修改原則:
//1)補考成績大於等於60,原成績以60分記;2)補考成績小於60,取兩次成績中最高值記。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#defineMAX50
typedefstruct{
intxh;//學生學號、姓名和考試成績
charna[MAX];
floatcj;
}datatype;

typedefstructNode{
datatypedata;
structNode*next;
}Seqlist;voidprint(Seqlist*l);
voidinitList(Seqlist*lp);/*置一個空表*/
voidcreateList(Seqlist*lp,charstrname[]);/*建立成績順序表*/
voidsave(Seqlist*lp,charstrname[]);/*保存學生順序表到指定文件*/
voidsort_cj(Seqlist*lp);/*降序排序*/
voidaverage(Seqlist*lp);/*算平均分並寫入文件*/
voidbandscore(Seqlist*lp);/*劃分分數段及寫入*/
voidchangescore(Seqlist*lp,Seqlist*bk);/*修改成績*/

intmain()
{
Seqlistlp,bk;
initList(&lp);initList(&bk);
createList(&lp,"score.dat");
createList(&bk,"bk.dat");
sort_cj(&lp);
save(&lp,"result.dat");
average(&lp);
bandscore(&lp);
changescore(&lp,&bk);
sort_cj(&lp);
save(&lp,"result.dat");
return0;
}

/*置一個空表*/
voidinitList(Seqlist*lp)
{
lp->next=0;
lp->data.xh=0;
lp->data.na[0]='';
lp->data.cj=0;
}

voidprint(Seqlist*l){
Seqlist*p=l->next;
while(p)
{
printf("%d%s%f ",p->data.xh,p->data.na,p->data.cj);
p=p->next;
}
}
/*建立成績順序表*/
voidcreateList(Seqlist*lp,charstrname[])
{
FILE*fp;
intxh;
floatcj;
Seqlist*p,*tail=lp;
if((fp=fopen(strname,"rb"))==NULL)
{
printf("fileopenerror ");
exit(0);
}
while(!feof(fp))
{
p=(Seqlist*)malloc(sizeof(Seqlist));
fscanf(fp,"%d%s%f",&p->data.xh,p->data.na,&p->data.cj);
tail->next=p;
tail=p;


}tail->next=NULL;
print(lp);
fclose(fp);
}

/*降序排序*/
voidsort_cj(Seqlist*head)
{
Seqlist*tail=NULL;
while(tail!=head->next)
{
Seqlist*pre=head;
Seqlist*cur=pre->next;
while(cur!=tail&&cur->next!=tail)
{
if(cur->data.cj<cur->next->data.cj)
{
//交換當前節點和後一個節點
pre->next=cur->next;
cur->next=cur->next->next;
pre->next->next=cur;
}
pre=pre->next;
cur=pre->next;
}
tail=cur;
}
}

/*保存學生順序表到文件(追加)*/
voidsave(Seqlist*l,charstrname[])
{
FILE*fp;
Seqlist*lp=l->next;
inti;
if((fp=fopen(strname,"ab"))==NULL)
{
printf("fileopenerror ");
exit(0);
}
while(lp){
fprintf(fp,"%d%s%.2f ",lp->data.xh,lp->data.na,lp->data.cj);
lp=lp->next;
}
fprintf(fp," ");
fclose(fp);
}

/*算平均分並寫入文件*/
voidaverage(Seqlist*l)
{
FILE*fp;
inti,num=0;
Seqlist*lp=l->next;
floats=0,a;
while(lp){
num++;
s+=lp->data.cj;
lp=lp->next;
}
if(num)
a=s/num;
if((fp=fopen("result.dat","ab"))==NULL){
printf("fileopenerror ");
exit(0);
}
fprintf(fp,"平均分為%.2f ",a);
fprintf(fp," ");
fclose(fp);
}

/*分數段及寫入*/
voidbandscore(Seqlist*l)
{
FILE*fp;
if((fp=fopen("result.dat","ab"))==NULL){
printf("fileopenerror ");
exit(0);
}
Seqlist*lp=l->next;
inti,a=0,q=0,w=0,e=0,r=0,t=0,y=0;
while(lp){

a=lp->data.cj/10;
lp=lp->next;
switch(a)
{
case10:q++;break;
case9:w++;break;
case8:e++;break;
case7:r++;break;
case6:t++;break;
default:y++;break;
}
}
fprintf(fp,"成績為100有%d人 ",q);
fprintf(fp,"成績為90~99有%d人 ",w);
fprintf(fp,"成績為80~89有%d人 ",e);
fprintf(fp,"成績為70~79有%d人 ",r);
fprintf(fp,"成績為60~69有%d人 ",t);
fprintf(fp,"不及格的有%d人 ",y);
fprintf(fp," ");
fclose(fp);
}


/*修改成績*/
voidchangescore(Seqlist*lp,Seqlist*bk)
{
inti,j;
Seqlist*la=lp->next,*lb=bk->next;
while(lb){
while(la){
if(lb->data.xh==la->data.xh)
{
if(lb->data.cj>=60)
la->data.cj=60;
elseif(lb->data.cj>la->data.cj)
la->data.cj=lb->data.cj;
break;
}
la=la->next;
}
lb=lb->next;
}
print(lp);
}

Ⅲ C語言編程:學生成績管理系統設計 學生成績信息包括:學號,姓名,語文成績、數學成績、英語成績。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXN 100 //一個班最多的人數
#define MAXM 10 //最多課程門數
char subject[MAXM][12]; //保存所有課程名稱
char number[MAXN][10]; //保存全班學號
char name[MAXN][20]; //保存全班姓名
float score[MAXN][MAXM]; //保存全班所有課程成績
float sum[MAXN]; //保存全班總成績
int n,m; //n,m保存全班實際人數和課程數

void input();
void search();

void sort();
void save();
void load();
void print();
void main()
{
//歡迎首界面
char a,b;
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf(" \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3\n");
printf(" \3 \3\n");
printf(" \3 \3\n");
printf(" \3 ¥歡迎進入電子科技大學成都學院學生管理系統¥ \3\n");
printf(" \3 \3\n");
printf(" \3 \2\2 welcome to uestc...\2\2 \3\n");
printf(" \3 \3\n");
printf(" \3 \3 \4 \5 \6 \6 \5 \4 \3 \3\n");
printf(" \3 \3\n");
printf(" \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3\n");
printf("\n");
printf("\n");
printf(" 請按回車鍵進入下一界面\n");
printf(" ------------------------\n");
do
{
scanf("%c",&a);
if(a!=10)
{
printf(" 您輸入有誤,請重新輸入,謝謝!!!\n");
scanf("%c",&b);
}
b=a;
}
while(b!=10);
system("cls");
//功能選擇界面
int select;
while(1)
{
system("cls");
printf(" ***********歡迎進入電子科技大學成都學院學生管理系統***********\n");
printf("\n");
printf("\n");
printf(" 1.學生成績新建\n");
printf(" 2.學生成績查詢\n");
printf(" 3.學生成績插入\n");
printf(" 4.學生成績修改\n");
printf(" 5.學生成績刪除\n");
printf(" 6.學生成績排名\n");
printf(" 7.學生成績保存\n");
printf(" 8.學生成績讀取\n");
printf(" 9.學生成績報表列印\n");
printf(" 0.退出系統\n");
printf("\n");
printf("\n");
printf("\n 請輸入您的選擇編號,回車鍵確定:\n");
printf(" ------------------------------------------------------------------\n");
scanf("%d",&select);
switch(select)
{
case 1:input();break;
case 2:search();break;

case 6:sort();break;
case 7:save();break;
case 8:load();break;
case 9:print();break;
case 0:printf(" 謝謝您的使用。\n");

}
}
}

//輸入成績模塊
void input()
{
system("cls");
int i,j;
printf(" ***********新建學生成績信息***********\n");
printf("\n");
printf("\n");
printf("\n 請輸入全班人數:");
scanf("%d",&n);
printf("\n 請輸入課程門數:");
scanf("%d",&m);
printf("\n 請輸入%d門課程名稱\n",m);
for(j=0;j<m;j++)
{
printf("\n 第%d門課程名稱:",j+1);
scanf("%s",subject[j]);
}
printf("\n 第%d個學生數據\n",n);
for(i=0;i<n;i++)
{
printf("\n 請輸入第%d個人的數據\n",i+1);
printf("\n 學號:");
scanf("%s",number[i]);
printf("\n 姓名:");
scanf("%s",name[i]);
printf("\n %d門課程的成績:\n",m);
sum[i]=0;

//邊輸入邊統計總成績
for(j=0;j<m;j++)
{
printf(" %s成績:",subject[j]);
scanf(" %f成績",&score[i][j]);
sum[i]=sum[i]+score[i][j];
}
}
}

//查詢成績模塊
void search()
{
system("cls");
int j;
int search1();
int search2();
int select,index;
printf("\n ***********查詢學生成績信息***********\n");
while(1)
{
printf("\n 1.按學號查詢\n");
printf(" 2.按姓名查詢\n");
printf(" 0.返回\n");
printf("\n 請輸入您的選擇編號:");
printf("\n ---------------------------------------\n");
scanf("%d",&select);
switch(select)
{
case 1:index=search1(); break;
case 2:index=search2();break;
case 0:return;
}
if(index!=-1)
{
printf("\n 學號 :%s\n",number[index]);
printf("\n 姓名 :%s\n",name[index]);
for(j=0;j<m;j++)
{
printf("\n %s成績 :",subject[j]);
printf("%.2f\n",score[index][j]);
}
printf("\n 總成績 :%.2f\n",sum[index]);
printf("\n 平均成績:%.2f\n",sum[index]/m);
printf("\n 您還可以繼續查詢其他學生成績信息:\n");
}
else printf("\n 沒有這個同學。\n");
}
}

//按學號查詢模塊
int search1()
{
system("cls");
int i;
char s_number[10];
printf(" 請輸入要查詢的學號:\n");
scanf("%s",s_number);
printf(" 該同學的信息如下:\n");
for(i=0;i<n;i++)
if(strcmp(number[i],s_number)==0)
break;
if(i<n)
return i;
else return -1;
}

//按姓名查詢模塊
int search2()
{
system("cls");
int i;
char s_name[10];
printf(" 請輸入要查詢的姓名:");
scanf("%s",s_name);
for(i=0;i<n;i++)
if(strcmp(name[i],s_name)==0)
break;
if(i<n)
return i;
else return -1;
}

//排名模塊
void sort()
{
system("cls");
void sort1();
void sort2();
void sort3();
int select;
while(1)
{
printf(" ***********學生成績排名信息***********\n");
printf("\n 1.按學號排名\n");
printf(" 2.按姓名排名\n");
printf(" 3.按總成績排名\n");
printf(" 0.返回\n");
printf("\n 請輸入您的選擇編號:\n");
printf(" --------------------------------------\n");
scanf("%d",&select);
switch(select)
{
case 1:sort1();break;
case 2:sort2();break;
case 3:sort();break;
case 0:return;
}
}
}

//按學號排名模塊
void sort1()
{
system("cls");
int i,j,k;
char x_number[10];
char x_name[20];
float x;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(number[i],number[k])<0)
k=j;
if (k!=i)
{
strcpy(x_number,number[i]);
strcpy(number[i],number[k]);
strcpy(number[k],x_number);
strcpy(x_name,name[i]);
strcpy(name[i],name[k]);
strcpy(name[k],x_name);
for(j=0;j<m;j++)
{
x=score[i][j];
score[i][j]=score[k][j];
score[k][j]=x;
}
x=sum[i];sum[i]=sum[k];sum[k]=x;
}
}
printf("排序完畢.\n");
}

//按姓名排名模塊
void sort2()
{
system("cls");
int i,j,k;
char x_number[10];
char x_name[20];
float x;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[j],name[k])<0)
k=j;
if(k!=i)
{
strcpy(x_number,number[i]);
strcpy(number[i],number[k]);
strcpy(number[k],x_number);
strcpy(name[i],name[k]);
strcpy(name[k],x_name);
for(j=0;j<m;j++)
{
x=score[i][j];
score[i][j]=score[k][j];
score[k][j]=x;
}
x=sum[i];sum[i]=sum[k];sum[k]=x;
}
}
printf("排序完畢.\n");
}

//按總成績排名模塊
void sort3()
{
system("cls");
int i,j,k;
char x_number[10];
char x_name[20];
float x;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(sum[j]<sum[k])
k=j;
if(k!=i)
{
strcpy(x_number,number[i]);
strcpy(number[i],number[k]);
strcpy(number[k],x_number);
strcpy(x_name,name[i]);
strcpy(name[i],name[k]);
strcpy(name[k],x_name);
for(j=0;j<m;j++)
{
x=score[i][j];
score[i][j]=score[k][j];
score[k][j]=x;
}
x=sum[i];sum[i]=sum[k];sum[k]=x;
}
}
printf("排序完畢.\n");
}

//保存成績模塊
void save()
{
system("cls");
FILE *fp;
char filename[20];
int i,j;
printf(" 請輸入文件名: ");
scanf("%s",filename);
if((fp=fopen(filename, "w"))==NULL)
{
printf(" 打開文件失敗.\n");
return;
}
fprintf(fp, "%d %d",n,m);
for(j=0;j<m;j++)
fprintf(fp, "%s",subject[j]);
for(i=0;i<n;i++)
{
fprintf(fp, "%s %s",number[i],name[i]);
for(j=0;j<m;j++)
fprintf(fp, "%5.1f",score[i][j]);
}
fclose(fp);
printf(" 保存完畢.\n");
}

// 提取成績模塊
void load( )
{
system("cls");
FILE * fp;
char filename[20];
int i,j;
printf (" 請輸入文件名:");
scanf("%s",filename);
if ((fp=fopen(filename,"r"))==NULL)
{
printf(" 文件不存在.\n");
return;
}
fscanf(fp,"%d%d",&n,&m);
for(j=0;j<m;j++)
fscanf(fp,"%s",subject[j]);
for(i=0;i<n;i++)
{
fscanf(fp,"%s%s",number[i],name[i]);
sum[i]=0;
for(j=0;j<m;j++)
{
fscanf(fp,"%f",&score[i][j]);
sum[i]=sum[i]+score[i][j];
}
}
fclose(fp);
printf(" 提取完畢.\n");
}

//列印成績報表模塊
void print()
{
system("cls");
void print1();
void print2();
int select;
printf(" ***********列印學生成績信息***********\n");
printf("\n");
printf("\n");
printf(" 1.屏幕顯示報表\n");
printf(" 2.列印機列印報表\n");
printf(" 0.返回\n");
printf("\n 請輸入您的選擇編號:");
printf("\n --------------------------------------\n");
scanf("%d",&select);
switch(select)
{
case 1:print1();break;
case 2:print2();break;
case 0:return;
}
}

// 屏幕顯示報表模塊
void print1()
{
system("cls");
int i,j;
printf(" 成績總表\n");
printf(" 學號姓名:");
for (j=0;j<m;j++)
printf("%10s",subject[j]);
printf(" 總成績平均成績\n");
for (i=0;i<n;i++)
{
printf("%8s %8s",number[i],name[i]);
for (j=0;j<m;j++)
printf("%6.1f",score[i][j]);
printf("%6.1f %6.2f\n",sum[i],sum[i]/m);
}
printf(" 顯示完畢.\n");
}

// 列印機列印報表模塊
void print2( )
{
system("cls");
FILE * fp;
int i,j;
printf(" 請准備好列印機,按任意鍵繼續…\n");
scanf("% * c");
if ((fp=fopen("prn","w"))==NULL)
{
printf(" 列印機沒有準備好.\n");
return;
}
fprintf(fp," 成績總表\n");
fprintf(fp," 學號姓名\n");
for (j=0;j<m;j++ )
fprintf(fp,"%10s",subject[j]);
fprintf(fp," 總成績平均成績\n");
for(i=0;i<n;i++)
{
fprintf(fp,"%6.1f",score[i][j]);
fprintf(fp,"%8s %8s",number[i],name[i]);

for (j=0;j<m;j++)
fprintf(fp,"%6.1f %6.2f\n",sum[i],sum[i]/m);
}
fclose(fp);
printf(" 列印完畢.\n");
}

Ⅳ 如何用C語言編寫一個學生的成績表

用結抄構數組最好了。
#include<stdio.h>
struct
student
{
long
num;
char
name[20];
char
tel[20];
char
add[40];
};
void
main()
{
struct
student
stu[50];
int
i;
for(i=0;i<=49;i++)
{
scanf("%ld",&stu[i].num);
……
……
……
}
}
差不多就是這么個模式

Ⅳ 用c語言編寫輸入一學生成績,和相應優秀,良好,不及格信息

#include<stdio.h>
#include<stdlib.h>
#include"windows.h"

intmain(intargc,char*argv[])
{
intcj;
do{
system("cls");
printf("請輸入成績:");
scanf("%d",&cj);
if(cj>0&&cj<101)
{
if(cj>=90&&cj<=100)
printf(" 優秀 ");
elseif(cj>=70&&cj<=89)
printf(" 良好 ");
elseif(cj>=60&&cj<=69)
printf(" 及格 ");
elseif(cj>=0&&cj<=59)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|_RED);
printf(" 不及格 ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN);
}
}
else
{
printf(" error ");
}
printf(" 如果要繼續請按y ");
fflush(stdin);
cj=_getch();
}
while(cj=='y');
return0;
}

Ⅵ 用C語言做一個學生成績管理系統 輸入學生人數,錄入學生成績

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
using namespace std;

/*定義學生結構體*/

struct Student

{

char ID[20];

char Name[20];

float Mark1;

float Mark2;

float Mark3;

float Average;

};

/*聲明學生數組及學生數量*/

struct Student students[1000];

int num=0;

/*求平均值*/

float Avg(struct Student stu)

{

return (stu.Mark1+stu.Mark2+stu.Mark3)/3;

}

/*通過學號返回數組下標*/

int Student_SearchByIndex(char id[])

{

int i;

for (i=0;i<num;i++)

{

if (strcmp(students[i].ID,id)==0)

{

return i;

}

}

return -1;

}

/*通過姓名返回數組下標*/

int Student_SearchByName(char name[])

{

int i;

for (i=0;i<num;i++)

{

if (strcmp(students[i].Name,name)==0)

{

return i;

}

}

return -1;

}

/*顯示單條學生記錄*/

void Student_DisplaySingle(int index)

{

printf("%10s%10s%8s%8s%8s%10s\n","學號","姓名","成績","成績","成績","平均成績");

printf("-------------------------------------------------------------\n");

printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[index].ID,students[index].Name,

students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);

}

/*插入學生信息*/

void Student_Insert()

{

while(1)

{

printf("請輸入學號:");

scanf("%s",&students[num].ID);

getchar();

printf("請輸入姓名:");

scanf("%s",&students[num].Name);

getchar();

printf("請輸入成績:");

scanf("%f",&students[num].Mark1);

getchar();

printf("請輸入成績:");

scanf("%f",&students[num].Mark2);

getchar();

printf("請輸入成績:");

scanf("%f",&students[num].Mark3);

getchar();

students[num].Average=Avg(students[num]);

num++;

printf("是否繼續?(y/n)");

if (getchar()=='n')

{

break;

}

}

}

/*修改學生信息*/

void Student_Modify()

{

//float mark1,mark2,mark3;

while(1)

{

char id[20];

int index;

printf("請輸入要修改的學生的學號:");

scanf("%s",&id);

getchar();

index=Student_SearchByIndex(id);

if (index==-1)

{

printf("學生不存在!\n");

}

else

{

printf("你要修改的學生信息為:\n");

Student_DisplaySingle(index);

printf("-- 請輸入新值--\n");

printf("請輸入學號:");

scanf("%s",&students[index].ID);

getchar();

printf("請輸入姓名:");

scanf("%s",&students[index].Name);

getchar();

printf("請輸入成績:");

scanf("%f",&students[index].Mark1);

getchar();

printf("請輸入成績:");

scanf("%f",&students[index].Mark2);

getchar();

printf("請輸入成績:");

scanf("%f",&students[index].Mark3);

getchar();

students[index].Average=Avg(students[index]);

}

printf("是否繼續?(y/n)");

if (getchar()=='n')

{

break;

}

}

}

/*刪除學生信息*/

void Student_Delete()

{

int i;

while(1)

{

char id[20];

int index;

printf("請輸入要刪除的學生的學號:");

scanf("%s",&id);

getchar();

index=Student_SearchByIndex(id);

if (index==-1)

{

printf("學生不存在!\n");

}

else

{

printf("你要刪除的學生信息為:\n");

Student_DisplaySingle(index);

printf("是否真的要刪除?(y/n)");

if (getchar()=='y')

{

for (i=index;i<num-1;i++)

{

students[i]=students[i+1];//把後邊的對象都向前移動

}

num--;

}

getchar();

}

printf("是否繼續?(y/n)");

if (getchar()=='n')

{

break;

}

}

}

/*按姓名查詢*/

void Student_Select()

{

while(1)

{

char name[20];

int index;

printf("請輸入要查詢的學生的姓名:");

scanf("%s",&name);

getchar();

index=Student_SearchByName(name);

if (index==-1)

{

printf("學生不存在!\n");

}

else

{

printf("你要查詢的學生信息為:\n");

Student_DisplaySingle(index);

}

printf("是否繼續?(y/n)");

if (getchar()=='n')

{

break;

}

}

}

/*按平均值排序*/

void Student_SortByAverage()

{

int i,j;

struct Student tmp;

for (i=0;i<num;i++)

{

for (j=1;j<num-i;j++)

{

if (students[j-1].Average<students[j].Average)

{

tmp=students[j-1];

students[j-1]=students[j];

students[j]=tmp;

}

}

}

}

/*顯示學生信息*/

void Student_Display()

{

int i;

printf("%10s%10s%8s%8s%8s%10s\n","學號","姓名","成績","成績","成績","平均成績");

printf("-------------------------------------------------------------\n");

for (i=0;i<num;i++)

{

printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[i].ID,students[i].Name,

students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);

}

}

/*將學生信息從文件讀出*/

void IO_ReadInfo()

{

FILE *fp;

int i;

if ((fp=fopen("Database.txt","rb"))==NULL)

{

printf("不能打開文件!\n");

return;

}

if (fread(&num,sizeof(int),1,fp)!=1)

{

num=-1;

}

else

{

for(i=0;i<num;i++)

{

fread(&students[i],sizeof(struct Student),1,fp);

}

}

fclose(fp);

}

/*將學生信息寫入文件*/

void IO_WriteInfo()

{

FILE *fp;

int i;

if ((fp=fopen("Database.txt","wb"))==NULL)

{

printf("不能打開文件!\n");

return;

}

if (fwrite(&num,sizeof(int),1,fp)!=1)

{

printf("寫入文件錯誤!\n");

}

for (i=0;i<num;i++)

{

if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1)

{

printf("寫入文件錯誤!\n");

}

}

fclose(fp);

}

/*主程序*/

void main()

{

int choice;

IO_ReadInfo();

while(1)

{

/*主菜單*/

printf("\n------ 學生成績管理系統------\n");

printf("1. 增加學生記錄\n");

printf("2. 修改學生記錄\n");

printf("3. 刪除學生記錄\n");

printf("4. 按姓名查詢學生記錄\n");

printf("5. 按平均成績排序\n");

printf("6. 退出\n");

printf("請選擇(1-6):");

scanf("%d",&choice);

getchar();

switch(choice)

{

case 1:

Student_Insert();

break;

case 2:

Student_Modify();

break;

case 3:

Student_Delete();

break;

case 4:

Student_Select();

break;

case 5:

Student_SortByAverage();

Student_Display();

break;

case 6:

exit(0);

break;

}

IO_WriteInfo();

}

}

Ⅶ 編制一個c語言成績記錄簿,每個學生信息包括:學號,姓名,c語言成績.

// 包含必須的頭文件
#include<stdio.h> #include<stdlib.h> #include<string.h>

// 定義課程的結構體
struct course {
int num; //課程編號
char name[20]; // 課程名字
int result; // 學生的成績
float credit; // 學分
};
// 定義成績記錄簿的結構體,每個學生修了4門課
struct scorelist { int num; //學號
char name[10]; //學生姓名
struct course subject[4]; //課程相關的數據。意思是一個學生修了4門課
};
int n=0; // n用來存儲一共有多少個學生
struct scorelist score[200]; //初始化成績記錄簿,上限為200條學生成績
// 查詢課程的函數
void queryclass() { int number,i,j,max=0,count=0; float average;//平均分
float pass=0; //及格人數
printf("*********請輸入要查詢的課程編號:"); scanf("%d",&number);
// 遍歷所有的學生,列印每個學生修的課程成績 for(i=0;i<n;i++) // 遍歷所有學生
{ for(j=0;j<4;j++) // 遍歷當前學生所修的4門課 {
if(score[i].subject[j].num==number) // 如果符合此條件,說明當前條目即為用戶查詢的課程 {
printf("學號:%d 姓名:%s %s:%d\n",score[i].num,score[i].name,score[i].subject[j].name,score[i].subject[j].result);
if(score[i].subject[j].result>=60) pass++; max+=score[i].subject[j].result; count++; } } }
if(count!=0) {
average=(float)max/count; pass=pass/count;
printf("平均分:%f\n",average);
printf("及格率:%.2f%c\n\n",pass*100,37); } }
// 查詢學生信息 void querystudent() { char xm[10]; int i,flag=0,j,a,xh;
printf("*********請輸入要查詢的項目: 1.學號 2.姓名;"); scanf("%d",&a);
if(a==1) scanf("%d",&xh); else scanf("%s",xm);
// 根據用戶輸入判定用戶是根據學號還是姓名查詢 switch(a) {
// 根據學號查詢
case 1:
// 遍歷查找用戶所輸入的學號
for(i=0;i<n;i++) if(score[i].num==xh){ j=i;flag=1;} if(flag==0) printf("*****抱歉沒有找到.******"); // 沒有找到,跳出 else //找到了用戶輸入的學號,列印 { printf("學號:%d 姓名: %s\n",score[j].num,score[j].name); printf("**課程編號 課程名稱 課程成績 課程學分**\n"); for(i=0;i<4;i++)
{printf("%d %s %d %5.2f\n",score[j].subject[i].num, score[j].subject[i].name,score[j].subject[i].result,score[j].subject[i].credit); } } break;
// 根據姓名查詢 case 2:
// 遍歷查找用戶輸入的姓名 for(i=0;i<n;i++) if(strcmp(score[i].name,xm)==0) {j=i;flag=1; } if(!flag) printf("*****抱歉沒有找到.******"); else // 找到了用戶輸入的學生姓名,列印 { printf("學號:%d 姓名: %s\n",score[j].num,score[j].name); printf("課程編號 課程名稱 課程成績 課程學分\n"); for(i=0;i<4;i++) {
printf("%d %s %d %f\n",score[j].subject[i].num, score[j].subject[i].name,score[j].subject[i].result,score[j].subject[i].credit); } } break;
default:printf("****輸入錯誤!!****"); } }
// 刪除一條學生記錄 void del() { char xm[10];

printf("****請輸入姓名: "); scanf("%s",score[n].name);ch=getchar(); for(i=0;i<4;i++)
{ printf("***請輸入第%d門的課程編號 : ",i+1); scanf("%d",&score[n].subject[i].num);
printf("***請輸入第%d門的課程名稱 : ",i+1); scanf("%s",score[n].subject[i].name);
printf("***請輸入第%d門的課程成績 : ",i+1); scanf("%d",&score[n].subject[i].result);
printf("***請輸入第%d門的課程學分 : ",i+1); scanf("%f",&score[n].subject[i].credit); } n++;
printf("\n1、繼續添加 2、退出[ ]\b\b"); scanf("%d",&choice); if(choice==2) break; } }
// 寫入文件 void writefile() { FILE *fp; int i;
fp=fopen("score_list","wb");//以寫二進制的模式打開文件
//遍歷所有記錄,並把每一個結構體對象以二進制形式寫入文件 for(i=0;i<=n-1;i++)
fwrite(&score[i],sizeof(struct scorelist),1,fp); printf(" !!!文件已保存為scorelist\n\n"); fclose(fp); //關閉文件 }
// 讀文件,並初始化學生成績數組 void readfile()
{ struct scorelist add; FILE *fp; n=0; fp=fopen("score_list","rb"); // 以讀取二進制文件的模式打開文件 fread(&add,sizeof(struct scorelist),1,fp); // 讀取一個結構體長度的數據並把它付給add對象。
// 持續讀取文件,初始化新的add對象,並把它加到score的數組中去 while(!feof(fp)){ score[n]=add;n++;

fread(&add,sizeof(struct scorelist),1,fp); } printf(" !!! 文件scorelist已讀取\n"); fclose(fp); // 關閉文件 }
// 主程序入口 main() { int a; struct scorelist add; FILE *fp;
// 如果沒有score_list這個文件,創建它 if((fp=fopen("score_list","rb"))==NULL) fp=fopen("score_list","wb");
else{ // 如果有score_list這個文件,那麼將其中的數據讀取到全局的score數組。參考readfile() fread(&add,sizeof(struct scorelist),1,fp); while(!feof(fp)){ score[n]=add;n++;
fread(&add,sizeof(struct scorelist),1,fp); } }
fclose(fp);
// 程序一直讀取用戶輸入並解析,然後調用不同的函數進行處理,並返回結果。 while(1) {
printf("********************************************************************************");
printf("\t\t 歡迎 Welcome to\n");
printf("\n\t\t\t 使用成績記錄簿系統1.0\n");
printf("****right歸山東超峰所有********************在此鳴謝 網路知道 老師****************\n")
printf("*************************************MENU***************************************"); printf("\n"); printf(" 成績記錄簿\n"); printf("** ****1.添加\n"); printf("** *****2.刪除\n"); printf("** *****3.查學生成績\n"); printf("** *****4.查班成績表(附加功能@顯示平均分和及格率@)\n"); printf("** *****5.寫入文件\n"); printf("** *****6.讀取文件\n");
printf("** *****0.退出\n"); printf("\n\t\t輸入你的選擇Enter your choice(0--6):"); scanf("%d",&a); getchar(); switch(a) {
case 1:append();break; case 2:del();break; case 3:querystudent();break; case 4:queryclass();break; case 5:writefile();break; case 6:writefile();readfile();break; case 0:writefile();exit(0);break; default:printf("*********錯!請再輸入一遍********"); } }
}

Ⅷ C語言程序設計 從文件中讀取學生成績按要求處理後按文件輸出

#include"stdio.h"
#include<stdlib.h>
structstu{//定義一個個人信息結構體
charstuid[13],name[20],g[3];//ID號、姓名、性別
intscore;//成績
};
intmain(intargc,char*argv[]){
FILE*fp,*fq;//讀文件指針fp和創建文件指針fq
structstu*p,t;//結構體指針p和變數t
inti,j,k,n,a,b,c,d;//abcd為四級變數
fq=fopen("stu2.txt","w");//創建一個寫文件stu2.txt
//打開讀文件stu1.txt並判斷讀寫文件是否打開成功
if(!fq||(fp=fopen("stu1.txt","r"))==NULL){
printf("Openthefilefailure,exit... ");//不成功則提示並退出
return0;
}
//檢測一下文件中存儲了多少個學生的信息並記入變數n
for(n=0;fscanf(fp,"%s%s%s%d",t.stuid,t.name,t.g,&t.score),!feof(fp);n++);
if((p=(structstu*)malloc(sizeof(t)*n))==NULL){//按n大小動態申請內存空間
printf("Applicationmemoryfailure,exit... ");//申請失敗則提示退出
return0;
}
rewind(fp);//讀文件指針恢復到文件開頭
for(a=b=c=d=i=0;i<n;i++){//讀取n個學生信息並依次存入動態數組中
fscanf(fp,"%s%s%s%d",p[i].stuid,p[i].name,p[i].g,&p[i].score);
if(p[i].score>=90&&p[i].score<=100)//同時按成績級別分別統計人數
a++;
elseif(p[i].score>=80&&p[i].score<=89)
b++;
elseif(p[i].score>=70&&p[i].score<=79)
c++;
else
d++;
}
fclose(fp);//讀取完畢關閉文件
//向文件輸出級別結果
fprintf(fq,"優:%g良:%g中:%g差:%g ",a/(n+0.0),b/(n+0.0),c/(n+0.0),d/(n+0.0));
//同時輸出到屏幕以便檢查
printf("優:%g良:%g中:%g差:%g ",a/(n+0.0),b/(n+0.0),c/(n+0.0),d/(n+0.0));//不想屏顯則刪除此行
for(i=0;i<n;i++){//對n個學生按成績降序排序並輸出到文件及屏幕
for(k=i,j=k+1;j<n;j++)
if(p[k].score<p[j].score)
k=j;
if(i!=k)
t=p[k],p[k]=p[i],p[i]=t;
//輸出到文件
fprintf(fq,"%s%s%s%d ",p[i].stuid,p[i].name,p[i].g,p[i].score);
//輸出么屏幕
printf("%s %s %s %d ",p[i].stuid,p[i].name,p[i].g,p[i].score);//不想屏顯則刪除此行
}
free(p);//釋放所申請的內在空間
fclose(fq);//關閉寫文件
return0;
}

運行結果:

註:文件都在當前目錄下

Ⅸ 用c語言編寫一個學生成績管理:輸入學員的信息,包括姓名學號三門課程的成績,計算出總分,實現插入功能

#include float a_stu[4],a_cour[3];//定義兩個全局數組,用來表示學生平均成績和各科平均成績 int a[4][3]={78,78,99,90,89,96,77,91,90,92,79,89}; int main() { void aver_stu(void); void aver_cour(void); void fangcha(void); aver_stu(); aver_cour(); int i,j,m,p,q; m=a[0][0]; for(i=0;i<4;i++) for(j=0;jm) {m=a[i][j]; p=i,q=j; } printf("分數最高是%d分,該學生是第%d個學生 ,其課程是第%d門\n",m,p+1,q+1); fangcha(); return 0; } // void aver_stu(void) { int i,j; float sum1; for(i=0;i<4;i++) {for(j=0,sum1=0;j<3;j++)//每算完一位學生的平均成績後,要重新使sum=0才能計算下一位,所以在第二個for語句sum值要歸0 sum1+=a[i][j]; a_stu[i]=sum1/3; } printf("四位學生的平均成績為:\n"); for(i=0;i<4;i++) printf("%f\n",a_stu[i]); } // void aver_cour(void) {int i,j; float sum2; for(i=0;i<3;i++) { for(j=0,sum2=0;j<4;j++) {sum2+=a[j][i]; a_cour[i]=sum2/4;} } printf("三門課的平均成績為:\n"); for(i=0;i<3;i++) printf("%f\n",a_cour[i]); } // void fangcha(void) {float sum3=0,sum4=0,h; int i; for(i=0;i<4;i++) {sum3+=a_stu[i]*a_stu[i]; sum4+=a_stu[i];} h=sum3/4-(sum4/4)*(sum4/4); printf("平均分方差為:%f\n",h); }

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919