當前位置:首頁 » 考試成績 » 按班級學期查找學生成績

按班級學期查找學生成績

發布時間: 2021-01-03 08:41:04

Ⅰ 現有一個班級,共10人,本學期共學習三門課程,設計一個學生成績管理系統,要求如下:

/*
現有一個班級,共10人,本學期共學習三門課程,設計一個學生成績管理系統,要求如下:
1、完成三門課程成績輸入;或單門課程錄入、或同時錄入三門課
2、完成成績排序:按單科成績排序、按平均分排序
3、完成成績統計:按單科分段統計人數、按平均分分段統計(60分以下,60-79分,80以上)
4、用結構體完成學生姓名和成績的輸入
5、完成成績查詢:單科查詢、平均分查詢、按姓名查詢、分段查詢等;
6、完成獎學金統計:三門課均高於90分,一等獎學金;三門課均高於80分,二等獎學金,統計獲獎學金人數
7、完成成績輸出:按單科輸出、輸出所有成績、按平均分由高到低輸出,輸出獎學金名單等
*/
#include <stdio.h>
#include <string.h>
#define N 1
struct student //定義結構變數體
{
char name[10];
int english,math,computer;
float avg;
}std[N];

void input();
void sort();
void count();
void inquire();
void scholarship_inq();
void output();
int main()
{
int flag;
printf(" 學生成績管理系統\n");

while(1)
{
if(std[0].name[0]!='\0') //檢測是否存有數據
printf("1.信息錄入(已輸入數據)\n");
else printf("1.信息錄入(未輸入數據)\n");
printf("2.成績排序\n");
printf("3.成績統計\n");
printf("4.成績查詢\n");
printf("5.獎學金統計\n");
printf("6.成績輸出\n");
printf("7.退出\n");
printf("請選擇:\n");
scanf("%d",&flag);
switch(flag)
{
case 0:
return 0;
break;
case 1:
input();
break;
case 2:
sort();
break;
case 3:
count();
break;
case 4:
inquire();
break;
case 5:
scholarship_inq();
break;
case 6:
output();
break;
case 7:
exit();
break;
default:
printf("輸入錯誤,請重新輸入!\n");
}
}
return 0;
}

/*1、完成三門課程成績輸入;或單門課程錄入、或同時錄入三門課*/
void input()
{
int i;
for(i=0;i<N;i++)
{
printf("請輸入第%d個學生的姓名:\n",i+1);
scanf("%s",std[i].name);
printf("請輸入第%d個學生的三科成績,空格分隔,如xx xx xx:\n",i+1);
scanf("%d%d%d",&std[i].english,&std[i].math,&std[i].computer);
std[i].avg=(std[i].english+std[i].math+std[i].computer)/3.0; //求平均值
}
}

/*2、完成成績排序:按單科成績排序、按平均分排序*/
void sort() //排序
{
int flag,i,j,key=0;
struct student t;
while(1)
{
d: printf("1.按單科成績排序\n");
printf("2.按平均分排序\n");
printf("3.返回\n");
printf("請選擇:\n");
scanf("%d",&flag);
switch(flag)
{
case 3:
return ;
case 1:
{
printf("請選擇:1.english,2.math,3.computer,4.other:返回\n");
scanf("%d",&key);
if (1==key)
{
for (i=0;i<N-1;i++)
for (j=0;j<N-1;j++)
{
if (std[i].english>std[i+1].english)
{
t=std[i];std[i]=std[i+1];std[i+1]=t;
}
}
for (i=0;i<N;i++)
{
printf("%s的english成績為:%d\n",std[i].name,std[i].english);
printf("%s的math成績為:%d\n",std[i].name,std[i].math);
printf("%s的computer成績為:%d\n",std[i].name,std[i].computer);
}
printf("排序結束\n\n");
}
if (2==key)
{
for(i=0;i<N-1;i++)
{
for(j=0;j<N-1;j++)
{
if(std[i].math>std[i+1].math)
{
t=std[i];std[i]=std[i+1];std[i+1]=t;
}
}
for (i=0;i<N;i++)
{
printf("%s的english成績為:%d\n",std[i].name,std[i].english);
printf("%s的math成績為:%d\n",std[i].name,std[i].math);
printf("%s的computer成績為:%d\n",std[i].name,std[i].computer);
}
printf("排序結束\n\n");
}
}
if (3==key)
{
for (i=0;i<N-1;i++)
for (j=0;j<N-1;j++)
{
if (std[i].computer>std[i+1].computer)
{
t=std[i];std[i]=std[i+1];std[i+1]=t;
}
}
for(i=0;i<N;i++)
{
printf("%s的english成績為:%d\n",std[i].name,std[i].english);
printf("%s的math成績為:%d\n",std[i].name,std[i].math);
printf("%s的computer成績為:%d\n",std[i].name,std[i].computer);
}
printf("排序結束\n\n");
}
else break;
if (4==key)
{
goto d;
}
break;
}
case 2:
{
{
for(i=0;i<N-1;i++)
{
for(j=0;j<N-1;j++)
{
if(std[i].avg>std[i+1].avg)
{
t=std[i];std[i]=std[i+1];std[i+1]=t;
}
}
}
}
for(i=0;i<N;i++)
{
printf("%s的english成績為:%d\n",std[i].name,std[i].english);
printf("%s的math成績為:%d\n",std[i].name,std[i].math);
printf("%s的computer成績為:%d\n",std[i].name,std[i].computer);
printf("%s的平均成績為:%f\n",std[i].name,std[i].avg);
}
printf("排序結束\n\n");
}
}
}
}

/*3、完成成績統計:按單科分段統計人數、按平均分分段統計(60分以下,60-79分,80以上)*/
void count()
{
int flag,i,sum1=0,sum2=0,sum3=0,key;
while(1)
{
s: printf("1.按單科分段統計人數\n");
printf("2.按平均分分段統計\n");
printf("3.返回\n");
printf("請輸入:\n");
scanf("%d",&flag);
switch (flag)
{
case 3:
return;
case 1:
{
printf("請選擇:1.english,2.math,3.computer,4.other:返回\n");
scanf("%d",&key);
if (1==key)
{
sum1=0,sum2=0,sum3=0;
for (i=0;i<N;i++)
{
if (std[i].english<60)
sum1++;
else if ((std[i].english>=60) && (std[i].english<80))
sum2++;
else if (std[i].english>=80)
sum3++;
}
printf("english科目統計結果:60分以下%d人,60-79分%d人,80以上%d人\n",sum1,sum2,sum3);
for (i=0;i<N;i++)
{
printf("%s的english成績為:%d\n",std[i].name,std[i].english);
}
}
if (2==key)
{
sum1=0,sum2=0,sum3=0;
for(i=0;i<N;i++)
{
if (std[i].math<60)
sum1++;
else if ((std[i].math>=60) && (std[i].math<80))
sum2++;
else if(std[i].math>=80 )
sum3++;
}
printf("math科目統計結果:60分以下%d人,60-79分%d人,80以上%d人\n",sum1,sum2,sum3);
}
if (3==key)
{
sum1=0,sum2=0,sum3=0;
for(i=0;i<N;i++)
{
if (std[i].computer<60)
sum1++;
else if ((std[i].computer>=60) && (std[i].computer<80))
sum2++;
else if (std[i].computer>=80)
sum3++;
}
printf("computer科目統計結果:60分以下%d人,60-79分%d人,80以上%d人\n",sum1,sum2,sum3);
}
else break;
if (4==key)
goto s;
break;
}
case 2:
{ sum1=0,sum2=0,sum3=0;
for(i=0;i<N;i++)
{
if (std[i].avg<60)
sum1++;
else if ((std[i].avg>=60) && (std[i].avg<80))
sum2++;
else if (std[i].avg>=80 )
sum3++;
}
printf("平均分統計結果:60分以下%d人,60-79分%d人,80以上%d人\n",sum1,sum2,sum3);
}
}
}

}

/*完成成績查詢:單科查詢、平均分查詢、按姓名查詢、分段查詢等;*/
void inquire()
{
int flag,i,key;
char str[10];
while(1)
{
f: printf("1.單科查詢\n");
printf("2.平均分查詢\n");
printf("3.按姓名查詢\n");
printf("4.分段查詢\n");
printf("5.返回\n");
printf("請選擇:\n");
scanf("%d",&flag);
switch(flag)
{
case 5:
return;
break;
case 1 :
{
printf("請選擇:1.english,2.math,3.computer,4.other:返回\n");
scanf("%d",&key);
if (1==key)
for(i=0;i<N;i++)
printf("%s的english成績為:%d\n",std[i].name,std[i].english);
if (2==key)
for(i=0;i<N;i++)
printf("%s的math成績為:%d\n",std[i].name,std[i].math);
if (3==key)
for(i=0;i<N;i++)
printf("%s的computer成績為:%d\n",std[i].name,std[i].computer);
if (4==key)
goto f;
break;
}
case 2 :
{
for(i=0;i<N;i++)
printf("%s的平均分成績為:%f\n",std[i].name,std[i].avg);
break;
}
case 3 :
{
printf("要查詢的姓名\n");
scanf("%s",str);
for (i=0;i<N;i++)
if (strcmp(std[i].name,str)==0)
{
printf("%s的english,math,computer的成績分別為%d,%d,%d\n",std[i].name,std[i].english,std[i].math,std[i].computer);
break;
}
printf("沒有找到這個名字,請重新選擇\n");
break;
}
case 4 :
{
printf("輸入查詢分段,1:<60分以下,2:60-79分,3:80以上,other:返回\n");
scanf("%d",&key);
if (1==key)
for(i=0;i<N;i++)
{
if(std[i].english<60)
printf("%s的english成績為:%d\n",std[i].name,std[i].english);
if(std[i].math<60)
printf("%s的math成績為:%d\n",std[i].name,std[i].math);
if(std[i].computer<60)
printf("%s的computer成績為:%d\n",std[i].name,std[i].computer);
}
if (2==key)
for(i=0;i<N;i++)
{
if(std[i].english>=60 && std[i].english<80)
printf("%s的english成績為:%d\n",std[i].name,std[i].english);
if(std[i].math>=60 && std[i].math<80)
printf("%s的math成績為:%d\n",std[i].name,std[i].math);
if(std[i].computer>=60 && std[i].computer<80)
printf("%s的computer成績為:%d\n",std[i].name,std[i].computer);
}
if(3==key)
for(i=0;i<N;i++)
{
if(std[i].english>80)
printf("%s的english成績為:%d\n",std[i].name,std[i].english);
if(std[i].math>80)
printf("%s的math成績為:%d\n",std[i].name,std[i].math);
if(std[i].computer>80)
printf("%s的computer成績為:%d\n",std[i].name,std[i].computer);
}
if (4==key)
goto f;
}
}
}
}

/*完成獎學金統計:三門課均高於90分,一等獎學金;三門課均高於80分,二等獎學金,統計獲獎學金人數*/
void scholarship_inq()
{
int i,sum1=0,sum2=0;
for (i=0;i<N;i++)
{
if (std[i].english>=90 && std[i].math>=90 && std[i].computer>=90)
sum1++;
if (std[i].english>=80 && std[i].english<90)
if(std[i].math>=80 && std[i].math<90)
if (std[i].computer>=80 && std[i].computer<90)
sum2++;
}
printf("獲得一等獎學金人數是:%d,獲得二等獎學金人數是:%d,獎學金總數是:%d\n",sum1,sum2,sum1+sum2);
}

/*完成成績輸出:按單科輸出、輸出所有成績、按平均分由高到低輸出,輸出獎學金名單等*/
void output()
{
int flag,i,j,key;
struct student t;
char str[10];
while(1)
{
L: printf("1.按單科輸出\n");
printf("2.輸出所有成績\n");
printf("3.按平均分由高到低輸出\n");
printf("4.輸出獎學金名單\n");
printf("5.返回\n");
printf("請輸入:\n");
scanf("%d",&flag);
switch(flag)
{
case 5:
return ;
case 1:
{
printf("請選擇:1.english,2.math,3.computer,4.other:返回\n");
scanf("%d",&key);
if (1==key)
for(i=0;i<N;i++)
printf("%s的english成績為:%d\n",std[i].name,std[i].english);
if (2==key)
for(i=0;i<N;i++)
printf("%s的math成績為:%d\n",std[i].name,std[i].math);
if (3==key)
for(i=0;i<N;i++)
printf("%s的computer成績為:%d\n",std[i].name,std[i].computer);
if (4==key)
goto L;
break;
}
case 2:
{
for (i=0;i<N;i++)
printf("%s的english,math,compouter成績分別為:%d,%d,%d\n",std[i].name,std[i].english,std[i].math,std[i].computer);
break;
}
case 3:
{
for (i=0;i<N-1;i++)
for (j=0;j<N-1;j++)
{
if (std[i].avg>std[i+1].avg)
{
t=std[i];std[i]=std[i+1];std[i+1]=t;
}
}

for(i=0;i<N;i++)
{
printf("%f\n",std[i].name,std[i].avg);
break;
}
}
case 4:
{
printf("獲得獎學金的有:\n");
for(i=0;i<N;i++)
{
if (std[i].english>=80 && std[i].math>=80 && std[i].computer>=80) //統計獎學金人數
printf("%s\t",std[i].name);
break;
}
}
}
}
}

Ⅱ c語言寫成績管理系統,如何實現按班級和學期查詢學生信息

用鏈表來做,這樣可以方便實現增刪查找這些功能,
不過你只問「如何實現按班級和學期查詢學生信息」,
這個簡單,假設你定義了一個結構體數組,並且數組里已經保存了各個學生的信息,需要實現查找功能,
首先用printf()提示「請輸入要查找的班級和學期」接著用scanf()接收放到兩個變數里比如(int a1,a2),
然後,。。額,好像不對,你要查的是一個班級的全部成績,並且還是分學期的?
好吧,我還以為你要查某個同學的成績,既然這樣,就改一下:
假設你定義了一個結構體二維數組aa[3][10],
結構體里有{int banji //班級 名字和各種成績}
這個數組的第一行元素 代表第一個學期的學生成績 第二行元素 代表第二個學期的學生成績(這個理解吧?)
這樣學生的信息就有了,就可以查找了
你就判斷if(a1 == aa[a2-1][0]) //a2-1是學期 因為下標從0開始 就減1 如果是這個班級就執行下去
{for(i=0;i<10;i++)
printf("%d %s %d %d %d\n",aa[a2-1][i].banji, aa[a2-1][i].名字, aa[a2-1][i].各種成績);
}

思路就是這樣了,具體怎麼寫就要靠你自己咯。

我又想了想,好像還不是很妥當。既然要從班級判斷,就要有很多班級,那麼你就定義幾個二維數組 每一個代表一個班級的各個學期的成績
這樣就直接用switch語句了 switch(a1)
{
case aa[a2-1][0].banji :
for(i=0;i<10;i++)
printf("%d %s %d %d %d\n",aa[a2-1][i].banji, aa[a2-1][i].名字, aa[a2-1][i].各種成績);break;
case bb[a2-1][0].banji :
for(i=0;i<10;i++)
printf("%d %s %d %d %d\n",bb[a2-1][i].banji, bb[a2-1][i].名字, bb[a2-1][i].各種成績);break;
case cc[a2-1][0].banji :
for(i=0;i<10;i++)
printf("%d %s %d %d %d\n",cc[a2-1][i].banji, cc[a2-1][i].名字, cc[a2-1][i].各種成績);break;
}

學期可以直接用做下標,所以沒必要判斷
應該就是這樣了。

Ⅲ excel中怎麼根據班級名稱在全校學生花名冊中查找出相應班級的學生姓名並依次自動填充到成績表中

從全校名單中分離各班級,透視表無疑更方便。

Ⅳ 跪求!!!急急急!!!!學生成績信息包括:學期,學號,班別,姓名,3門課程成績(語文、數學、英語)等。

#include<stdio.h>
#define N 3
void f1(int k,int c,int e,int q,int b[],char string[][30],int d[],int zong[],float per[])//b 班級 string 姓名 fen 總得分
{
printf("班級 姓名 學號 課程名稱 考試時間 總得分\n");
for(k=0;k<N;k++)
printf("%d %s NO.>%d C語言 6月6日 %d\n",b[k],string+k,k+1,zong[k]);
for(c=0;c<N;c++) //循環求各分數段人數
{
if(0<=zong[c]&&zong[c]<=49)
d[0]+=1;
if(50<=zong[c]&&zong[c]<=59)
d[1]+=1;
if(60<=zong[c]&&zong[c]<=69)
d[2]+=1;
if(70<=zong[c]&&zong[c]<=79)
d[3]+=1;
if(80<=zong[c]&&zong[c]<=89)
d[4]+=1;
if(90<=zong[c]&&zong[c]<=100)
d[5]+=1;
}
printf(" 0~49 50~59 60~69 70~79 80~89 90~100\n");
printf("人數 %d %d %d %d %d %d\n",d[0],d[1],d[2],d[3],d[4],d[5]); //d 輸出各分數段人數
for(e=0;e<6;e++)
per[e]=(float)d[e]/N;
printf("百分比 %.2f %.2f %.2f %.2f %.2f %.2f\n",per[0],per[1],per[2],per[3],per[4],per[5]); //per 輸出各分數段百分比
}
void main()
{
int i,x,j,l,m,r,a[N],yi[N],er[N],san[N],sum[N],n[6]={0,0,0,0,0,0};
float pp[N];
char name[N][30];
printf("請按學號依次輸入學生信息\n");
printf("班級 姓名 第一題 第二題 第三題\n");
for(i=0;i<N;i++)
scanf("%d%s%d%d%d",&a[i],name[i],&yi[i],&er[i],&san[i]);
for(x=0;x<N;x++)
sum[x]=yi[x]+er[x]+san[x];
f1(j,l,m,r,a,name,n,sum,pp);
}
望採納,謝謝

Ⅳ 學生成績管理1.能按學期,班級完成對學生成績的錄入,修改(C語言不要C++

你自己看著修改就可以了,大部分功能已經實現

Ⅵ c++題,學生成績管理系統設計,學生成績信息包括:學期,學號,班別,姓名,四門課程成績(語文、

小case 我幫你

Ⅶ 哪個計算機高手幫我編個程序,關於學生成績管理系統設計 1.主要功能: (1)能按學期、按班級完成對學生成

自己修改,我以前做的
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
char num[10];
char name[10];
int score[5];/*score[0]存數學成績score[1]語文成績score[2]英語成績score[3]總分score[4]平均分*/
struct node *next;
}student;/*學生成績結構體*/
/*初始化結構體*/
student *init(student *t)
{
t=(student *)malloc(sizeof(student));
t->next=NULL;
t->score[4]=t->score[3]=t->score[0]=t->score[1]=t->score[2]=0;
return t;
}
/*保存數據*/
void save(student *stu)
{
FILE *fp;
if((fp=fopen( "score1","w"))==NULL)/*為輸出打開文件score1*/
{
printf("cannot open file\n");exit(0);
}
stu=stu->next;
while(stu!=NULL)
{
if(fwrite(stu,sizeof(student),1,fp)!=1)
printf("file write error\n");
stu=stu->next;
}
fclose(fp);
}
/*讀取數據*/
student * load(student *stu)
{
FILE *fp;student *p,*r;r=stu;
if((fp=fopen("score1","r"))==NULL)/*為輸入打開文件score1*/
return stu;
do
{ p=(student *)malloc(sizeof(student));
p->next=NULL;
if((fread(p,sizeof(student),1,fp)!=1)){fclose(fp);return stu;};
r->next=p;
r=r->next;
}while(1);

}
/*輸出一個特定的學生的成績*/
void output1(student *t)
{ int k;
printf("%s\t%s\t",t->num,t->name);
for(k=0;k<5;k++)
printf("%d\t",t->score[k]);
printf("\n");
}
/*輸出全體學生的成績*/
void output(student *stu)
{
stu=stu->next;
printf("學號\t姓名\t數學\t語文\t英語\t總分\t平均分\n");
while(stu!=NULL)
{
output1(stu);
stu=stu->next;
}

}
/*將stu後插在t中*/
student * charu(student *stu,student *t)
{student *p;int k;
p=(student *)malloc(sizeof(student));
strcpy(p->num,stu->num);
strcpy(p->name,stu->name);
for(k=0;k<5;k++)
p->score[k]=stu->score[k];
p->next=t->next;
t->next=p;
return p;
}
/*按成績排序*/
void paixu(student *stu,int i)
{
student *t,*p,*r;
int j,k;p=stu;
printf("輸入0按數學成績\n");
printf("輸入1按語文成績\n");
printf("輸入2按英語成績\n");
printf("輸入3按總分\n");
printf("輸入4按平均分\n");
do
{
scanf("%d",&j);
if(j<0&&j>4) printf("輸入錯誤請重新輸入\n");
else break;
}while(1);
t=init(t);
r=t;
stu=stu->next;
if(t->next==NULL)
r=charu(stu,t);/*在排序好的鏈表t中插入第一個節點*/
if(i==0)/*按升序排序*/
while(stu->next!=NULL)
{
stu=stu->next;
if(r->score[j]>stu->score[j]) r=t;/*如果待插入的score[j]<當前的score[j],指針r回溯*/
while(r->next->score[j]<stu->score[j]&&r->next!=NULL)
r=r->next;/*找到比待插入的score[j]大的指針r->next*/
r=charu(stu,r);/*在r後面插入stu*/
}
else
while(stu->next!=NULL)
{
stu=stu->next;

if(r->score[j]<stu->score[j]) r=t;
while(r->next->score[j]>stu->score[j]&&r->next!=NULL)
r=r->next;
r=charu(stu,r);
}
output(t);
}
/*排序菜單*/
void output2(student *stu)
{ int i;
output(stu);
printf("輸入 0 升序\n");
printf("輸入 1 降序\n");
printf("輸入其他任意字元退出\n");
scanf("%d",&i);
if(i==0||i==1)
paixu(stu,i);
printf("輸入任意字元結束\n");
getch();

}
/*查找學生號為num是否存在*/
student * findnum(char *num,student *t,int *i)
{
*i=1;
if(t->next==NULL)
return t;
else
{
*i=strcmp(t->next->num,num);
while(*i<0)/*t->next->num<num時查找下一個*/
{
t=t->next;
if(t->next==NULL)
return t;
*i=strcmp(t->next->num,num);
}
}
return t;/*t->next->num>=num時返回,此時i>=0*/
}
/*插入一個學生信息*/
student * insertstu(char *num,student *stu,char *name)
{ student *p,*t;int *i,j;i=&j;
t=findnum(num,stu,i);/*查找該學號是否存在*/
if(j!=0)/*該學號不存在,則插入*/
{
p=init(p);
strcpy(p->num,num);
strcpy(p->name,name);
p->next=t->next;
t->next=p;
return stu;
}
else
{printf("已有此學號\n學號\t姓名\n%s\t%s\n",t->next->num,t->next->name);return stu;}
}
/*錄入新學生信息*/
void base(student *stu)
{
char num[10],name[20];
printf("輸入e結束輸入新學生的信息\n");
printf("num(不超過10個數)\tname(不超過10個字)\n");
scanf("%s",num);
do
{
printf("\t\t\t");
scanf("%s",name);
stu=insertstu(num,stu,name);/*插入一個學生信息*/
scanf("%s",num);
}while(num[0]!='e');
output(stu);
printf("輸入任意字元退出\n");
getch();
}
/*增加修改一門課程成績*/
void zengjia(student *t,int i)
{
t->score[3]-=t->score[i];/*總分減去第i門課的成績*/
scanf("%d",&(t->score[i]));/*輸入第i門課的成績*/
t->score[3]+=t->score[i];/*總分加上第i門課的成績*/
}
void deletegrade(student *t,int i)
{
t->score[3]-=t->score[i];/*總分減去第i門課的成績*/
t->score[i]=0;/*第i門課的成績歸零*/
}
/*修改成績*/
void altergrade(student *stu)
{
int j,*i;student *t;char a,*num;
i=&j;
printf("0 修改數學成績\n");
printf("1 修改語文成績\n");
printf("2 修改英語成績\n");
printf("3 刪除數學成績\n");
printf("4 修改語文成績\n");
printf("5 修改英語成績\n");
printf("輸入 e 結束操作\n");
a=getch();
printf("學號\t成績\n");
scanf("%s",num);
while(num[0]!='e')
{
t=findnum(num,stu,i);/*按學生號查找學生信息*/
if(j==0)/*學生號存在*/
{
t=t->next;
switch(a)
{
case '0':
zengjia(t,0);
break;
case '1':
zengjia(t,1);
break;
case '2':
zengjia(t,2);
break;
case '3':
deletegrade(t,0);
break;
case '4':
deletegrade(t,1);
break;
case '5':
deletegrade(t,2);
break;
default:break;
}
t->score[4]=t->score[3]/3;
}
else
printf("無此學號\n");
scanf("%s",num);
}
output(stu);
printf("輸入任意字元結束\n");
getch();
}
/*第i科成績錄入*/
student gradeenter(student *stu,int i)
{
student *t;t=stu;
t=t->next;
printf("學號\t該科成績\n");
while(t!=NULL)
{
printf("%s\t",t->num);
if(t->score[i]==0)/*如果學號為t->num的同學該科成績沒有*/
{
scanf("%d",&t->score[i]);
t->score[3]+=t->score[i];/*學號為t->num的總分*/
t->score[4]=t->score[3]/3;/*學號為t->num的平均分*/
}
else
printf("%d\n",t->score[i]);
t=t->next;/*錄入下一個同學的該科成績*/

}
printf("該科全部輸入完成\n輸入任意字元結束\n");
getch();
}
/*成績錄入菜單*/
void entergrade(student *stu)
{
int i;
printf("0 錄入數學成績\n");
printf("1 錄入語文成績\n");
printf("2 錄入英語成績\n");
scanf("%d",&i);
switch(i)
{
case 0:gradeenter(stu,i);break;
case 1:gradeenter(stu,i);break;
case 2:gradeenter(stu,i);break;
default:printf("輸入錯誤請輸入相應操作的題號\n");
}

}
/*按學生號查找學生*/
void chaxun(student *stu)
{
char *num;int j,k,*i;student *t;i=&j;
printf("輸入要查詢的學生學號\n");
scanf("%s",num);
t=findnum(num,stu,i);/*查找學生號為num是否存在*/
if(j==0)/*該學生號存在*/
{
t=t->next;
printf("查詢結果為\n");
printf("學號\t姓名\t數學\t語文\t英語\t總分\t平均分\n");
output1(t);/*輸出此學生信息*/
}
else
printf("查無此號\n");
printf("輸入任意字元結束\n");
getch();
}
/*統計全班人數和平均分*/
void tongji(student *stu)
{
int total=0,score=0;
stu=stu->next;
while(stu!=NULL)
{
score+=stu->score[3];
stu=stu->next;
total++;
}
score=score/total;
printf("班級總人數為:%d平均分為:%d\n輸入任意字元退出\n",total,score);
getch();
}
/*按分數段查詢*/
void fenshuan(student *stu)
{
int i,min,max,j;
printf("輸入0按數學分數段\n");
printf("輸入1按語文分數段\n");
printf("輸入2按英語分數段\n");
printf("輸入3按總分分數段\n");
printf("輸入4按平均分分數段\n");
scanf("%d",&i);
printf("輸入分數段上限:");
scanf("%d",max);
printf("\n輸入分數段下限:");
scanf("%d",min);
if(max<min)
{j=max;max=min;min=j;}
stu=stu->next;
printf("學號\t姓名\t數學\t語文\t英語\t總分\t平均分\n");
while(stu!=NULL)
{
if(min<=stu->score[i]&&stu->score[i]<=max)/*將分數段內的同學信息輸出*/
output1(stu);
stu=stu->next;
}

}
void main()
{
char a='8';
student *stu;
stu=init(stu);/*初始化stu*/
stu=load(stu);/*讀取score1的數據*/
while(a!='7')
{
clrscr();
printf("************************************************************\n");
printf(" 學生成績管理系統\n");
printf(" -------made in china\n");
printf(" \t0 錄入學生基本信息\n");
printf(" \t1 修改或刪除學生成績\n");
printf(" \t2 錄入學生成績\n");
printf(" \t3 顯示指定學生的信息\n");
printf(" \t4 輸出指定分數段的學生信息\n");
printf(" \t5 輸出班級總人數和平均分\n");
printf(" \t6 輸出全體學生的信息\n");
printf(" \t7 退出\n");
printf("*************************************************************\n");
a=getch();
switch(a)
{
case'0':base(stu);break;
case'1':altergrade(stu);break;
case'2':entergrade(stu);break;
case'3':chaxun(stu);break;
case'4':fenshuan(stu);break;
case'5':tongji(stu);break;
case'6':output2(stu);break;
case'7':break;
default:printf("i am sorry to hear that you enter the wrong num\n");
printf("按任意鍵重新輸入\n");getch();continue;
}
}
save(stu);/*將數據保存在score1中*/
printf("歡迎再次使用學生成績管理系統........請按任意鍵退出.......");
getch();
}

Ⅷ 學生成績管理 (1) 能按學期、按班級完成對學生成績的錄入、修改 (2) 能按班級統計學生的成績,

我剛在網上搜了一個,正巧,我們做的是同一個,不過我搜的要求跟你們的有點不一樣,我下了專個EXE文件,直接就可以屬運行了,全中文界面,不過修改不了,一改就錯,就算你把某個字刪了再按原來的打上去,一樣錯,不知道是什麼原因.

你不是軟體專業的吧,對這個要求應該不高,老師應該很容易讓你們過的,要是不嫌棄,就用我下的去矇混一下,看看可以過關不,
同是天涯淪落人
我在你網路空間留個郵箱地址給你,就這樣了,不用我的也沒關系,我也是為了矇混過關而已

Ⅸ C語言程序設計 班級學生成績管理系統

#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <conio.h>

#define ADDRFILE "c:\\addrlist.txt"

typedef struct tagLinkedList
{
char name[30];
char tel[30];
char addr[100];

struct tagLinkedList *prev;
struct tagLinkedLIst *next;
}ADDR;

ADDR *g_pAddrHead = NULL;
ADDR *g_pFind;
int g_bSaved = 1;

void get_addrlist(void);
int add_list(const ADDR *addr);
int find_list(const char *name);
void SetHeadPosition(void);
void SetTailPosition(void);

void Add_addr(void);
void Find_addr(void);
void Modify_addr(void);
void Delete_addr(void);
void Print_addr(void);
void Save_addr(void);
void Remove_addr(void);

void main(void)
{

int ch;

get_addrlist();

puts("通訊錄程序 Version 1.0");

while(1)
{
printf("\n[1]新增 [2]搜索 [3]修改 [4]刪除 [5]輸出 [S]儲存 [Q]退出");

ch = getch();

switch(ch)
{
case '1': Add_addr();break;
case '2': Find_addr();break;
case '3': Modify_addr();break;
case '4': Delete_addr();break;
case '5': Print_addr();break;
case 's':
case 'S': Save_addr();break;
case 'q':
case 'Q':
if(g_bSaved == 0)
{
printf("\n\n修改後的數據需要儲存嗎?(y/n)?");
ch = getchar();
if(ch == 'Y' || ch == 'y') Save_addr();
}

Remove_addr(); exit(1);
default : printf("\n\n 請按1~5或S/Q健.\n\n");break;
}
}
}

void get_addrlist(void)
{
ADDR addr;
FILE *fp;

fp = fopen(ADDRFILE,"rb");

if(fp == NULL)
{
perror("open file error;");
return;
}

while(!feof(fp))
{
fread(&addr,1,sizeof(ADDR),fp);

if(ferror(fp))
{
fclose(fp);
perror("file read error;");
return;
}

if(feof(fp))break;

if(add_list(&addr) == 0)
{
printf(".\n");
}
}

fclose(fp);
}

int add_list(const ADDR *addr)
{
ADDR *plocal,*pn = g_pAddrHead;

SetHeadPosition();

if(g_pAddrHead == NULL)
{
plocal = malloc(sizeof(ADDR));
memset(plocal,0,sizeof(ADDR));

if(plocal == NULL)
{
return 0;
}

g_pAddrHead = plocal;
g_pAddrHead->prev = NULL;
g_pAddrHead->next = NULL;
}
else
{
plocal = malloc(sizeof(ADDR));
memset(plocal,0,sizeof(ADDR));

if(plocal == NULL)
{
return 0;
}

while(pn->next)
{
pn = pn->next;
}

pn->next = plocal;
plocal->prev = pn;
plocal->next = NULL;

}

strcpy(plocal->name,addr->name);
strcpy(plocal->tel,addr->tel);
strcpy(plocal->addr,addr->addr);

return 1;
}

int find_list(const char *name)
{
ADDR *plocal;

SetHeadPosition();

plocal = g_pAddrHead;

while(plocal)
{
if(strstr(plocal->name,name))
{
g_pFind = plocal;
return 1;
}
plocal = plocal->next;
}

return 0;
}

void SetHeadPosition(void)
{
if(g_pAddrHead == NULL) return;

while(g_pAddrHead->prev)
{
g_pAddrHead = g_pAddrHead->prev;
}
}

void SetTailPosition(void)
{
if(g_pAddrHead == NULL) return;

while(g_pAddrHead->next)
{
g_pAddrHead = g_pAddrHead->next;
}
}

void Remove_addr(void)
{
ADDR *plocal;

if(g_pAddrHead == NULL) return;

SetHeadPosition();

while(g_pAddrHead)
{
plocal = g_pAddrHead->next;

free(g_pAddrHead);

g_pAddrHead = plocal;
}

g_pAddrHead = NULL;

}

void Add_addr(void)
{
ADDR addr;

memset(&addr,0,sizeof(ADDR));

printf("\n\nName: ");gets(addr.name);
if(strlen(addr.name) == 0) return;

printf("TEL: ");gets(addr.tel);
printf("ADDR: ");gets(addr.addr);

if(find_list(addr.name) == 1)
{
printf("\n已經存在的姓名.\n\n");
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
return;
}

if(add_list(&addr))
{
g_bSaved = 0;
printf("\n儲存完畢.\n\n");
}
}

void Find_addr(void)
{
char buff[100] ={0,};
ADDR *plocal;

printf("\n\n請輸入要查找的姓名/電話/地址.\n");
printf("姓名/電話/地址 :");gets(buff);

if(strlen(buff) == 0) return;

SetHeadPosition();

plocal = g_pAddrHead;
g_pFind = NULL;

while(plocal)
{
if(strstr(plocal->name,buff))
{
g_pFind = plocal;
break;
}

if(strstr(plocal->tel,buff))
{
g_pFind = plocal;
break;
}

if(strstr(plocal->addr,buff))
{
g_pFind = plocal;
break;
}
plocal = plocal->next;
}

if(g_pFind)
{
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
}
else
{
printf("\n\n搜索不到要找的%s.\n\n",buff);
}
}

void Modify_addr(void)
{
char name[100] = {0,};
ADDR addr;

while(1)
{
printf("\n\n要修改的姓名: ");gets(name);

if(strlen(name) == 0) return;

if(find_list(name) == 0)
{
puts("輸入的姓名不存在.");
continue;
}
break;
}

printf("\n%s的通訊錄如下:\n\n",name);
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);

printf("\n輸入要修改的姓名/電話/地址.\n\n");

printf("NAME: ");gets(addr.name);
printf("TEL : ");gets(addr.tel);
printf("ADDR: ");gets(addr.addr);

if(strlen(addr.name)==0) strcpy(addr.name,name);

strcpy(g_pFind->name,addr.name);
strcpy(g_pFind->tel,addr.tel);
strcpy(g_pFind->addr,addr.addr);

g_bSaved = 0;

printf("%s的通訊錄修改成功.\n",name);
}

void Delete_addr(void)
{
char name[100] ={0,};
ADDR *plocal;
int ch;

while(1)
{
printf("\n\n要刪除的姓名: ");gets(name);

if(strlen(name)==0) return;

if(find_list(name) == 0)
{
puts("要刪除的通訊錄不存在.");
continue;
}
break;
}

puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);

printf("確定要刪除%s的通訊錄嗎(y/n)?",name);
ch = getch();
fflush(stdin);

if(ch == 'Y'||ch == 'y')
{
if(g_pFind->prev == NULL)
{
if(g_pFind->next == NULL)
{
free(g_pFind);
g_pAddrHead = NULL;
}
else
{
plocal = g_pFind->next;
free(g_pFind);
plocal->prev =NULL;
g_pAddrHead = plocal;
}
}
else if(g_pFind->next == NULL)
{
plocal = g_pFind->prev;
free(g_pFind);
plocal->next =NULL;
g_pAddrHead = plocal;
}
else
{
plocal = g_pFind->prev;
plocal->next = g_pFind->next;

plocal = g_pFind->next;
plocal->prev = g_pFind->prev;

free(g_pFind);
g_pAddrHead = plocal;
}

g_bSaved = 0;
printf("\n\n刪除完畢.\n\n");
}
}

void Print_addr(void)
{
int count = 1;
ADDR *plocal;

SetHeadPosition();

if(g_pAddrHead == NULL)
{
printf("\n\n無任何數據\n");
return;
}

plocal = g_pAddrHead;
while(plocal->prev)
{
plocal=plocal->prev;
}

printf("\n\n");

while(plocal)
{
printf("NO.%d\n",count++);
puts(plocal->name);
puts(plocal->tel);
printf("%s\n\n",plocal->addr);

printf("請按任意一健(結束:q)\n\n");
getch();
if(getch() == 'q')return;

plocal=plocal->next;
}
}

void Save_addr(void)
{
ADDR *plocal, *pn;
FILE *fp;

if(g_pAddrHead == NULL) return;

fp = fopen(ADDRFILE,"w+b");

if(fp == NULL)
{
perror("file open error;");
return;
}

SetHeadPosition();

plocal = g_pAddrHead;

while(plocal)
{
pn = plocal->next;

plocal = pn;
}

printf("\n所有數據已經儲存完畢.");
g_bSaved = 1;

fclose(fp);
}

Ⅹ 學生成績管理 學生信息包括:學號,姓名,班級、學期、成績等 編寫一個學生成績管理系統,使之能提

可以建立班級檔案,每年換一次但舊的檔案不可丟,要留在學校,這樣等學生們長大了也可以看到他們的在在校表現,

熱點內容
武漢大學學生會輔導員寄語 發布: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