當前位置:首頁 » 成績查詢 » c語言查詢成績代碼

c語言查詢成績代碼

發布時間: 2021-02-10 11:25:12

學生成績管理系統C語言代碼


如果你的題目不是考試而是希望能夠得到這個功能來應用的話,請使用EXCEL!
他能解決你的一切問題!
呵呵

❷ C語言編程—學生成績查詢系統!緊急!!!

這個是我自己做的類式的,你可以按自己的要求改下·不難的和你的差不多,給分哦

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>
#define N 10
/*****定義結構體*****/
typedef struct students /*標記為students*/
{
char num[10]; /*學生學號*/
char name[10]; /*學生姓名*/
int age; /*年齡*/
char sex[10]; /*性別*/
float cyy; /*C語言成績*/
float computer; /*計算機成績*/
float english; /*英語成績*/
float pj; /*平均成績*/
}STU;
STU temp;
void sort(STU students[],int n); //排序
void save(STU students[] ,int n);//導出
int Locate(STU students[],int n);//查詢
/*--------------顯示菜單--------------------*/
char displaymenu()
{
char k;
system("cls");
printf(" 學生成績管理 \n");
printf("-----------------------------------應用菜單-------------------------------------\n");
printf(" 1 輸入學生成績\n\n");
printf(" 2 輸出學生成績\n\n");
printf(" 3 查詢學生成績\n\n");
printf(" 4 修改學生成績\n\n");
printf(" 5 查看成績排序\n\n");
printf(" 6 查看成績統計\n\n");
printf(" 7 保存數據\n\n");
printf(" 8 讀取數據\n\n");
printf(" 9 退出系統\n\n");
printf(" 請選擇你想進行的操作:");

k=getchar();

return k;

}
/*****定義輸出函數*****/

void printheader() /*格式化輸出表頭*/
{
printf("\n\n************************學生成績管理系統****************************\n\n\n");
printf("| 學號 | 姓名 | 年齡 | 性別 | C語言成績 |計算機成績 | 英語成績| 平均成績 | \n");
}
void printdata(STU pp) /*格式化輸出表中數據*/
{
STU* p;
p=&pp;
printf("| %-5s| %-5s | %-4d| %-4s| %-6.0f| %-6.0f| %-5.0f| %-6.0f|\n",p->num,p->name,p->age,p->sex,p->cyy,p->computer,p->english,p->pj);
}
/*****添加學生信息*****/
int add(STU students[] ,int *n)
{
int i=0;
system("cls");
printf(" \n");
printf(" 請輸入學生信息 \n");
printf(" 退出請在學生號處輸入:0 \n");
printf("請輸入學生學號:\n ");
scanf("%s",students[i].num);
while(strcmp(students[i].num,"0") )//當輸入的學號為0時結束輸入
{
printf("請輸入學生姓名:\n ");
scanf("%s",students[i].name);
printf("****************\n\n\n");
printf("請輸入學生年齡:\n ");
scanf("%d",&students[i].age);
printf("****************\n\n\n");
printf("請輸入學生性別:\n");
scanf("%s",students[i].sex);
printf("****************\n\n\n");
printf("請輸入C語言成績:\n ");
scanf("%f",&students[i].cyy);
printf("****************\n\n\n");
printf("請輸入計算機成績:\n ");
scanf("%f",&students[i].computer);
printf("****************\n\n\n");
printf("請輸入英語成績:\n ");
scanf("%f",&students[i].english);
printf("****************\n\n\n");
students[i].pj=(students[i].cyy+students[i].computer+students[i].english)/3;
printf("學生平均成績: %-8.0f\n",students[i].pj);
i++;
printf("****************\n\n\n");
printf("請輸入學生學號:\n ");
scanf("%s",students[i].num);
}
*n=i;
save(students ,i);
return i;
}
/*****查詢學生信息函數*****/
int Locate(STU students[],int n)
{
int k,m=-1;
char num[10],name[20];
int i=0;
system("cls");
printf(" 退出請輸入:0 \n");
printf("請選擇以什麼方式查詢:1).按學生學號查詢 2).按學生姓名查詢 \n");
scanf("%d",&k);
if(k==1)
{
printf("請輸入你要查詢的學生學號:\n");
scanf("%s",num);
while(i<n)
{
if(strcmp(students[i].num,num)==0) /*若找到學號*/
{
printf(">>學生學號:%s\n*學生姓名:%s\n*學生年齡:%d\n*學生性別:%s\n>C語言成績:%-8.0f\n>計算機成績:%-8.0f\n>>英語成績:%-8.0f\n>>平均成績:%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,students[i].pj);
m=i;
getchar();
break;
}
i++;
}
if(i>=n)
printf("沒有所找學生信息\n");
getchar();
}
else if(k==2)
{
printf("請輸入你要查詢的學生姓名:\n");
scanf("%s",name);
while(i<n)
{
if(strcmp(students[i].name,name)==0) /*若找到姓名*/
{ printf("學生學號:%s\n學生姓名:%s\n學生年齡:%d\n學生性別:%s\n學生C語言成績:%-8.0f\n計算機成績:%-8.0f\n英語成績:%-8.0f\n平均成績:%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,students[i].pj);
m=i;
getchar();
break;
}
i++;
}
if(i>=n)
printf("沒有所找學生信息\n");
}
return m;/*返回一個根m便於修改學生信息*/
getchar();
}
/*****顯示函數*****/
void input(STU students[],int n)
{
int i;
system("cls"); //清屏
if(n==0) /*表示沒有學生信息記錄*/
{
printf("\n沒有學生記錄!\n");
}
printf("\n\n");
printheader(); /*輸出表格頭部*/
i=0;
while(i<n) /*逐條輸出數組中存儲的學生信息*/
{
printdata(students[i]);
i++;
}
getchar();
}
/*****修改子程序*****/
void Modify(STU students[],int n)
{
int i;
if(n<=0)
{
system("cls");
printf(" \n退出請輸入:0 \n");
printf("\n----------not found!----------\n");
getchar();
return ;
}
system("cls");
printf("修改學生信息");
input(students,n);
i=Locate(students,n); /*查詢到該數組元素,並返回下標值*/
if(i!=-1) /*若i!=-1,表明已經找到該數組元素*/
{
printf("請輸入新的學生信息: \n");
printf(" 學號: ");
scanf("%s",students[i].num);
printf(" 姓名: ");
scanf("%s",students[i].name);
printf(" 年齡: ");
scanf("%d",&students[i].age);
printf(" 性別: ");
scanf("%s",students[i].sex);
printf(" C語言: ");
scanf("%f",&students[i].cyy);
printf(" 英語: ");
scanf("%f",&students[i].english);
printf(" 計算機: ");
scanf("%f",&students[i].computer);
students[i].pj=(students[i].cyy+students[i].english+students[i].computer)/3;
printf("平均成績: %-9.0f\n",students[i].pj);
save(students ,n);
printf("\n-------------修改成功!-------------\n");

}
else
printf("not found!\n");
getchar();
}
/*****學生成績排序子程序*****/
void sort(STU students[],int n)
{
int i,j,a,b,c,d,e,f,k;
float p;
printf(" \n退出請輸入:0 \n");
printf("成績排序方式選擇: 1.按C語言 2.按英語 3.按平均 \n ");
scanf("%d",&k);

if(k==1) /*用選擇法對C語言排序*/
{
for(i=0; i<n; i++)
for(j=0;j<n-1;j++)
{

if(students[i].english<students[j+1].english)
{
temp=students[i];
students[i]=students[j+1];
students[j+1]=temp;
}

}

}
else if(k==2)/*英語用冒泡法*/
{
for(a=0; a<n-1; a++)
{
c=a;
for(b=a+1; b<n; b++)
if(students[b].cyy>students[c].cyy)
c=b;
if (c!=a)
{
temp=students[a];
students[a]=students[c];
students[c]=temp;
}
}
}
if(k==3) /*平均成績用插入法*/
{
for(d=1;d<n;d++)
{
p=students[d].pj;
for(e=0;e<d;e++)
if(students[e].pj<p)
break;
if(e==d)
continue;
for(f=d;f>e;f--)
students[f]=students[f-1];
students[e]=temp;
}
}
input(students,n); /*顯示排序後的所有記錄*/
save(students ,n);
printf("\n 排序完成!\n");
}

/*****統計學生分數在各等級的人數子程序*****/
void Tongji(STU students[],int n)
{
int count6085=0,count85=0,count60=0;
int i=0;
system("cls");
printf(" \n退出請輸入:0 \n");
input(students,n);
i=0;
while(i<n)
{
if(students[i].pj>85) {count85++;i=i+1;continue;} /*平均成績=>85*/
if(students[i].pj>=60&&students[i].pj<=85) {count6085++;i=i+1;continue;} /*60<平均成績<85*/
if(students[i].pj<60) {count60++;i=i+1;continue;} /*平均成績<60*/
}
printf("\n************統計結果************\n\n");
printf("平均成績高於85分的人數:%d \n",count85);
printf(" \n");
printf("平均成績在65分和80分之間的人數:%d \n",count6085);
printf(" \n");
printf("平均成績低於60分的人數:%d \n",count60);
printf(" \n");
printf("\n\n**********統計結束**********");
getchar();
}
/*****導出或保存數據*****/
void save(STU students[],int n)
{
FILE* fp;
int i=0;
fp=fopen("students","wb+");/*以讀寫方式打開創建一個二進制文件*/
if(fp==NULL) /*打開文件失敗*/
{
printf("\n*******打開文件錯誤!*******\n");
return ;
}
for(i=0;i<n;i++)
{
if(fwrite(&students[i],sizeof(STU),1,fp)==1)/*每次寫一條記錄或一個結構數組元素至文件*/
{
continue;
}
else
{
break;
}
}
if(i>0)
{
getchar();
printf("\n\n*共導出%d個學生信息*\n",i);
getchar();
}
else
{
system("cls");
printf("**沒有信息導出*\n");
getchar();
}
fclose(fp); /*關閉此文件*/
}
/*****導入數據*****/
void Read(STU students[],int * n)
{
FILE* fp;
int i=0;
fp=fopen("students","rb");/*以只讀方式打開一個已有的二進制文件*/
if(fp==NULL) /*打開文件失敗*/
{
printf("\n********打開文件錯誤!********\n");
exit(0);

}
for(i=0;i<N;i++)
{
if(fread(&students[i],sizeof(STU),1,fp)==1)/*每次讀一條記錄或一個結構數組元素至文件*/
continue;
else
break;
}
*n=i;
if(i>0)
{
printf("\n\n************共導入:%d 個學生信息 ************\n",i);
getchar();

}
else
{ system("cls");
printf("************沒有信息導入!************\n");
getchar();

}
getchar();
fclose(fp); /*關閉此文件*/
}

/*****主函數*****/
void main()
{
STU students[N];
int n;
char s1[3],s2[3]={"1"};
int i,k;
printf("\n\n");
printf("******************************************************\n");
printf("^ < 歡迎使用本軟體> ^\n\n");
printf("^ <版本 : oooo> ^\n\n\n");
printf("^ <姓名>:盧景光 <班級>: 09623 <學號>:34 ^\n");
printf("^ ^\n");
printf("******************************************************\n");
printf("\n\n");
for(i=0;i<3;i++)
{
printf("\n請輸入密碼:");
gets(s1);

if(strcmp(s1,s2)==0)
break;
else
printf("\n>密碼錯誤,請重新輸入");
}
if(i>2)
{
printf("\n您已連續3次輸錯,系統將退出!\n");
exit(0);
}
else
{
while(1)
{
k=displaymenu();
switch(k)
{
case '1' : add(students,&n); break;
case '2' : Read(students,&n);input(students,n) ;break;
case '3' : Read(students,&n);Locate(students,n);break;
case '4' : Read(students,&n);Modify(students,n);;break;
case '5' : Read(students,&n);sort(students,n);break;
case '6' : Read(students,&n);Tongji(students,n); break;
case '7' : save(students,n) ;break;
case '8' : Read(students,&n);break;
case '9' : system("cls");
printf("\n **********謝謝您的使用**********\n");exit(0);break;
default : printf("\n\n輸入錯誤,輸入必須是0~9之間的一個數字!請重新輸入\n");getchar();getchar();
}
}
}
}

❸ 求C語言學生成績管理系統代碼。要能用的。

#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#define N 3
typedef struct z1
{
char no[11];
char name[15];
int score[N];
float sum;
float average;
int order;
struct z1 *next;
}STUDENT;
STUDENT *init();
STUDENT *create();
STUDENT *del(STUDENT *h);
void print(STUDENT *h);
void search1(STUDENT *h);
void search2(STUDENT *h);
STUDENT *insert(STUDENT *h);
void sort(STUDENT *h);
void save(STUDENT *h);
void tongji(STUDENT *h);
int menu_select();
STUDENT *load();
void inputs(char *prompt,char *s,int count);
STUDENT *load();
main()
{
int i;
STUDENT *head;
head=init();
for(;;)
{
switch(menu_select())
{
case 0:head=init();break;
case 1:head=create();break;
case 2:head=insert(head);break;
case 3:save(head);break;
case 4:print(head);break;
case 5:search1(head);break;
case 6:head=del(head);break;
case 7:sort(head);break;
case 8:tongji(head);break;
case 9:search2(head);break;
case 10:exit(0);
}
}
}
int menu_select()
{
char *menu[]={"************菜單************",
"0. 初始化鏈表",
"1. 輸入學生成績",
"2. 插入學生成績",
"3. 保存學生記錄",
"4. 顯示學生記錄",
"5. 按學號查找學生信息",
"6. 刪除指定學號的學生信息",
"7. 按某一門課對學生成績排序",
"8. 統計某門課程的學生成績",
"9. 按姓名查找學生信息",
"10. 退出系統"};
char s[3];
int c,i;
for(i=0;i<=11;i++)
printf(" %s\n",menu[i]);
do
{
printf("\n請選擇0~10中的某一個選項\n");
scanf("%s",s);
c=atoi(s);
}while(c<0||c>10);
return c;
}
STUDENT *init()
{
return NULL;
}
STUDENT *create()
{
int i;int s;
STUDENT *h=NULL,*info;
for(;;)
{
info=(STUDENT *)malloc(sizeof(STUDENT));
if(!info)
{
printf("\n內存不足");
return NULL;
}
inputs("輸入學號:",info->no,11);
if(info->no[0]=='@')break;
inputs("輸入姓名:",info->name,15);
printf("開始輸入%d門課的成績\n",N);
s=0;
for(i=0;i<N;i++)
{
do{
printf("第%d門分數:",i+1);
scanf("%d",&info->score[i]);
if(info->score[i]>100||info->score[i]<0)
printf("輸入成績錯誤,請重新輸入:\n");
}while(info->score[i]>100||info->score[i]<0);
s=s+info->score[i];
}
info->sum=s;
info->average=(float)s/N;
info->order=0;
info->next=h;
h=info;
}
return h;
}
void inputs(char *prompt,char *s,int count)
{
char p[255];
do
{
printf(prompt);
scanf("%s",p);
if(strlen(p)>count)
printf("\n太長了!\n");
}while(strlen(p)>count);
strcpy(s,p);
}
void print(STUDENT *h)
{
int i=0;
STUDENT *p;
p=h;
printf("\n\n\n***********************學生***********************\n");
printf("|序號|學號 | 姓名 | 語文 | 英語 |數學 | 總分 |平均分 |名次 |\n");
printf("|---|-------|--------|----|----|----|------|------|---|\n");
while(p!=NULL)
{
i++;
printf("|%3d |%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",i,p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
p=p->next;
}
printf("***********************end***********************\n");
}
STUDENT *del(STUDENT *h)
{
STUDENT *p,*q;
char s[11];
printf("請輸入要刪除的學生的學號\n");
scanf("%s",s);
q=p=h;
while(strcmp(p->no,s)&&p!=NULL)
{
q=p;
p=p->next;
}
if(p==NULL)
printf("\n鏈表中沒有學號為%s的學生\n",s);
else
{
printf("\n\n\n***********************找到了***********************\n");
printf("|學號 | 姓名 | 語文 | 英語 | 數學 | 總分 | 平均分 | 名次 |\n");
printf("|----------|----------|----|----|----|------|------|---|\n");
printf("|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
printf("***********************end***********************\n");
printf("請按任意鍵刪除\n");
getchar();
if(p==h)
h=p->next;
else q->next=p->next;
free(p);
printf("\n已經刪除學號為%s的學生\n",s);
printf("不要忘了保存數據\n");
}
return h;
}
void search1(STUDENT *h)
{
STUDENT *p;
char s[11];
printf("請輸入你要查找的同學的學號\n");
scanf("%s",s);
p=h;
while(strcmp(p->no,s)&&p!=NULL)
p=p->next;
if(p==NULL)
printf("'n沒有學號為%s的學生\n",s);
else
{
printf("\n\n\n***********************找到了***********************\n");
printf("|學號 | 姓名 | 語文 | 英語 | 數學 | 總分 | 平均分 | 名次 |\n");
printf("|----------|-----------|----|----|----|------|------|---|\n");
printf("|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
printf("***********************end***********************\n");
}
}
void search2(STUDENT *h)
{
STUDENT *p;
char s[11];
printf("請輸入你要查找的同學的姓名\n");
scanf("%s",s);
p=h;
while(strcmp(p->name,s)&&p!=NULL)
p=p->next;
if(p==NULL)
printf("\n沒有姓名為%s的學生\n",s);
else
{
printf("\n\n\n***********************找到了***********************\n");
printf("|學號 | 姓名 | 語文 | 英語 | 數學 | 總分 | 平均分 | 名次 |\n");
printf("|----------|-----------|----|----|----|------|------|---|\n");
printf("|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
printf("***********************end***********************\n");
}
}
STUDENT *insert(STUDENT *h)
{
STUDENT *p,*q,*info;
char s[11];
int s1,i;
printf("請輸入插入點的學生學號\n");
scanf("%s",s);
printf("\n請輸入新的學生信息\n");
info=(STUDENT *)malloc(sizeof(STUDENT));
if(!info)
{
printf("\n內存不足!");
return NULL;
}
inputs("輸入學號:",info->no,11);
inputs("輸入姓名:",info->name,15);
printf("請輸入%d門課的分數\n",N);
s1=0;
for(i=0;i<N;i++)
{
do{
printf("分數%d",i+1);
scanf("%d",&info->score[i]);
if(info->score[i]>100||info->score[i]<0)
printf("輸入數據有誤,請重新輸入\n");
}while(info->score[i]>100||info->score[i]<0);
s1=s1+info->score[i];
}
info->sum=s1;
info->average=(float)s1/N;
info->order=0;
info->next=NULL;
p=h;
q=h;
while(strcmp(p->no,s)&&p!=NULL)
{q=p;p=p->next;}
if(p==NULL)
if(p==h)
h=info;
else q->next=info;
else
if(p==h)
{
info->next=p;
h=info;
}
else
{
info->next=p;
q->next=info;
}
printf("\n已經插入了%s這個學生\n",info->name);
printf("----不要忘了存檔啊--\n");
return(h);
}
void save(STUDENT *h)
{
FILE *fp;
STUDENT *p;
char outfile[10];
printf("請輸入保存文件的文件名,例如 c:\\f1\\te.txt:\n");
scanf("%s",outfile);
if((fp=fopen(outfile,"wb"))==NULL)
{
printf("不能打開文件\n");
exit(1);
}
printf("\n正在保存......\n");
p=h;
while(p!=NULL)
{
fwrite(p,sizeof(STUDENT),1,fp);
p=p->next;
}
fclose(fp);
printf("------保存成功!!!------\n");
}
void sort(STUDENT *h)
{
int i=0,j;
STUDENT *p,*q,*t,*h1;
printf("請輸入要按哪門課程的編號來排序:(0.語文 1.數學 2.英語)\n");
scanf("%d",&j);
h1=h->next;
h->next=NULL;
while(h1!=NULL)
{
t=h1;
h1=h1->next;
p=h;
q=h;
while(t->score[j]<p->score[j]&&p!=NULL)
{
q=p;
p=p->next;
}
if(p==q)
{
t->next=p;
h=t;
}
else
{
t->next=p;
q->next=t;
}
}
p=h;
while(p!=NULL)
{
i++;
p->order=i;
p=p->next;
}
print(h);
printf("排序成功!!!\n");
}
void tongji(STUDENT *h)
{
STUDENT *p;
int a,b,i;
printf("請輸入課程編號\n");
scanf("%d",&i);
printf("請輸入分數段:\n");
scanf("%d,%d",&a,&b);
p=h;
while(p!=NULL)
{
printf("\n\n\n***********************找到了***********************\n");
if(p->score[i]>=a&&p->score[i]<=b)
{
printf("|學號 | 姓名 | 語文 | 英語 | 數學 | 總分 | 平均分 | 名次 |\n");
printf("|--------|---------|----|----|----|------|------|---|\n");
printf("|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
}
p=p->next;
}
printf("***********************end***********************\n");
}

你可以改一下。希望對你有用

❹ 用c語言寫一個成績查詢的程序

//分數序列如:2\1,3\2.5\3,8\5.13\8,21\13.......的前20項之和。
#include//直接看這一組數列有什麼規律,很容易發現,從2/1開始,後一版組的分母權為前一組的一個分子
//後一項的分子為前一項的分母分子之和,如果用An表示分母,Bn表示分子,則有遞推工式,B(n+1)=An::A(n+1)=An+Bn知道這個就很好辦了
float
getMe(int
n)//這個函數就是求第n項的那個數的值
{
float
An=2.0;float
Bn=1.0;
float
temp;
while(--n)
{
temp=Bn;
Bn=An;
An=An+temp;
}
return(An/Bn);}
void
main()
{
int
n;
float
theSum=0.0;
printf("請輸入你想要求的前n項的和:");
scanf("%d",&n);
for(;n>0;n--)
{
theSum=theSum+getMe(n);
}
printf("%f",theSum);
}

❺ C語言學生成績管理系統代碼 急!!!!!!

參考
#include "stdio.h"

/*定義學生結構體*/

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);

}

/*主程序*/

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();

break;

}

IO_WriteInfo();

}

}

❻ C語言學生成績管理系統代碼

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

//外部函數聲明
void menu();
void line();

/* 定義全局變數其中n代表學生人數,ave[5]代表每科成績的平均分,high[5]每科成績的最高分,
min[5]代表每科成績的最低分,student_ave[100]代表每個學生五門成績的平均分*/
int n,i,j;
float ave[5]={0},high[5]={0},min[5]={0},student_ave[100];

//定義全局結構體
struct student
{
long int num; //學生學號
char name[20]; //學生姓名
float score[5]; //學生成績
}stu[100];

//主函數開始
int main()
{
void enter(); //enter:輸入學生成績函數(這是函數聲明)
void export(); //export:輸出學生成績函數(這是函數聲明)
void stat(); //stat:學生成績統計函數(這是函數聲明)
void rank(); //rank:學生成績排名函數(這是函數聲明)
void query(); //query:學生成績查詢函數(這是函數聲明)

//定義內部變數

//界面框架
menu();
printf(" 學生成績管理信息系統\n");
printf(">>請根據以下提示命令字元進行操作!\n");
printf("q:退出 a:成績輸入 p:成績輸出 s:成績統計 w:成績排名 t:成績查詢\n");
menu();

//函數調用,選擇成績管理方式
printf("請選擇成績管理方式>>");
while(1)
{
char c;
printf(">>\n");
scanf("%c",&c);
if (c=='q') printf("這是退出學生成績管理信息系統函數\n>>\n");break;
switch(c)
{
case'a':enter();break;
case'p':export(); break;
case's':stat();break;
case'v':rank();break;
case't':query();break;
default:("命令無效,請重新輸入!\n");
}
}
return 0;
}
//主函數部分結束

//定義函數
void menu()
{
printf("*******************************************************************************\n");
}

//定義下劃線函數
void line()
{
printf("--------------------------------------------------------------------------------\n");
}

//定義學生成績輸入函數開始
void enter()
{
menu();
printf("學生成績輸入\n請按以下格式進行數據輸入\n");
printf("請輸入學生學號姓名>>");
printf(" 學號 學生姓名\n");
printf("請輸入學生成績 >> ");
printf(" A成績 B成績 C成績 D成績 E成績\n");
printf("例如\n請輸入學生學號姓名>>");
printf("2012060402,張三\n");
printf("請輸入學生成績 >> ");
printf("95.5,97.0,89.0,92.0,85.0\n");
menu();
//輸入學生成績格式備注

printf("\n請輸入學生人數 >> ");
scanf("%d",&n);

//用for循環輸入學生成績
for(i=0;i<n;i++)
{
printf("請輸入學生學號姓名>>");
scanf("%ld,%s",&stu[i].num,stu[i].name);
printf("請輸入學生成績 >> ");
scanf("%f",&stu[i].score[0]);
scanf("%f",&stu[i].score[1]);
scanf("%f",&stu[i].score[2]);
scanf("%f",&stu[i].score[3]);
scanf("%f\n",&stu[i].score[4]);
getchar();
student_ave[i]=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3]+stu[i].score[4])/5;

//用for循環計算每科成績z總分
for(j=0;j<5;j++)
{
ave[j]=ave[j]+stu[i].score[j];
}

//用for循環得出每科成績最高分
for(j=0;j<5;j++)
{
if(high[j]<=stu[i].score[j])
{
high[j]=stu[i].score[j];
}
}

//用for循環得出每科成績最低分
for(j=0;j<5;j++)
{
if(i==0)
{
min[j]=stu[i].score[j];
}
if(min[j]>=stu[i].score[j])
{
min[j]=stu[i].score[j];
}
}

}
//學生成績輸入完成

//用for循環計算每科成績平均分
for(j=0;j<5;j++)
{
ave[j]=ave[j]/n;
}
getchar();
menu();
printf("\n");
}
//定義學生成績輸入函數結束

//定義學生成績輸出函數開始
void export()
{
int i;
printf(" 學號 姓名 成績A 成績B 成績C 成績D 成績E\n");
for(i=0;i<n;i++)
{
printf("%9ld %15s %7.1f %7.1f %7.1f %7.1f %7.1f\n",stu[i].num,stu[i].name,
stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);

}
menu();
}
//定義學生成績輸出函數結束

//定義學生成績統計函數開始
void stat()
{
printf("各科平均成績如下!\n");
line();
printf("\n");
printf(" 成績A 成績B 成績C 成績D 成績E\n");

//這是每科成績平均分
for(i=0;i<5;i++)
{
printf(" %6.1f ",ave[i]);
}
printf("\n");
printf("\n");

//只是每科成績的最高分
printf("各科最高分如下!\n");
line();
printf("\n");
printf(" 成績A 成績B 成績C 成績D 成績E\n");
for(j=0;j<5;j++)
{
printf(" %6.1f ",high[j]);
}
printf("\n");
printf("\n");

//這是每科成績最低分
printf("各科最低分如下!\n");
line();
printf("\n");
printf(" 成績A 成績B 成績C 成績D 成績E\n");
for(i=0;i<5;i++)
{

printf(" %6.1f ",min[i]);
}
printf("\n");
printf("\n");
}
//定義學生成績統計函數結束

//定義學生成績排名函數開始
void rank()
{
int k=1,z;
float t=0;
float student_high[100]={0};
printf("學生成績排名如下:\n\n");
line();
printf("\n");
printf("名次 學號 姓名 成績A 成績B 成績C 成績D 成績E 平均分 \n");

//把每個學生五門課的成績按從大到小的順序排列並存在數組student_high[]中去
for(i=0;i<n;i++)
{
student_high[i]=student_ave[i];
}
for(j=0;j<n;j++)
{
for(i=0;i<n-j;i++)
{
if(student_high[i]<=student_high[i+1])
{
t=student_high[i+1];
student_high[i+1]=student_high[i];
student_high[i]=t;
}
}
}

//按成績排名輸出學生成績信息
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(student_high[i]==student_high[i+1])
{
i++;
}
if(student_high[i]==student_ave[j])
{
printf("%d %ld %15s %7.1f %7.1f %7.1f %7.1f %7.1f %7.1f\n",k,stu[j].num,stu[j].name,
stu[j].score[0],stu[j].score[1],stu[j].score[2],stu[j].score[3],stu[j].score[4],student_ave[j]);
for(z=j+1;z<n;z++)
{
if(student_high[i]==student_ave[z])
{
k++;
}
}

}
}
k++;
}

line();
printf("\n");
}
//定義學生成績排名函數結束

//定義學生成績查詢函數開始
void query()
{
//查詢成績格式
char c2,shu_name[20]; //c2代表查詢成績控制字元。shu_name[]代表輸入查詢姓名,shu_num代表輸入查詢學號
int shu_num;
menu();
printf("學生成績查詢\n請按以下方式查詢\na:按學生姓名查詢 b:按學生學號查詢 q:退出\n");
menu();
printf("\n\n");

//選擇查詢方式
while(c2!='q')
{
printf("請選擇查詢成績方式>>");
scanf("%c",&c2);
getchar();

//按姓名查詢成績
if(c2=='a')
{
line();
printf("請輸入學生姓名>>");
scanf("%s",shu_name);
getchar();
for(i=0;i<n;i++)
{
if(strcmp(shu_name,stu[i].name)==0)
{
printf(" 學號 姓名 成績A 成績B 成績C 成績D 成績E\n");
printf("%ld %15s %7.1f %7.1f %7.1f %7.1f %7.1f\n",stu[i].num,stu[i].name,
stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);
}
else if(shu_name!=stu[i].name&&i==(n-1))
{
printf("無此學生成績\n");
}

}
line();
printf("\n");
}

//按學號查詢成績
else if(c2=='b')
{
line();
printf("請輸入學生學號>>");
scanf("%d",&shu_num);
getchar();
for(i=0;i<n;i++)
{
if(shu_num==stu[i].num)
{
printf(" 學號 姓名 成績A 成績B 成績C 成績D 成績E\n");
printf("%ld %15s %7.1f %7.1f %7.1f %7.1f %7.1f\n",stu[i].num,stu[i].name,
stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);
}
else if(shu_num!=stu[i].num&&i==(n-1))
{
printf("無此學生成績\n");
}
}
line();
printf("\n");
}

}
line();
printf("\n\n");
}
//定義學生成績查詢函數結束

❼ 誰會學生成績查詢系統,麻煩發代碼過來!!要C語言的

#include<iostream.h>
#include <fstream.h>
#include<iomanip.h>

#include<string.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LEN sizeof(Student)

typedef struct student //定義學生結點
{
int num;
char name[20];
int score[4];
int sum;
struct student *next;
}Student;
int n;

Student *cinn(); //成績錄入函數
Student *sort_1(Student *head,int); //選擇排序 函數
void sort_2(Student *head); // //求當前高分及均分函數
void print(Student *head); //列印出當前成績
Student *sort_all(Student *head); //學生成績統計排序入口函數
void find(Student *head); //查詢函數
Student *add_new(Student *head); //增加新學生信息函數
void deletee(Student *q,Student *p); //刪除學生信息
void update(Student *p); //更新學生信息

void deletee(Student *q,Student *p)
{ q->next=p->next;
delete p;
}

void update(Student *p)
{
printf("\n請重新錄入該生信息\n");
printf("\n請輸入該學生的學號\n");
scanf("%d",&p->num);
printf("請輸入該學生的語文成績\n:");
scanf("%d",&p->score[0]);
printf("請輸入該學生的數學成績\n:");
scanf("%d",&p->score[1]);
printf("請輸入該學生的英語成績\n:");
scanf("%d",&p->score[2]);
printf("請輸入該學生的計算機成績\n:");
scanf("%d",&p->score[3]);
p->sum=p->score[0]+p->score[1]+p->score[2]+p->score[3];
}

Student *cinn()
{
int flag; //暫存學號變數
Student *head,*p1,*p2;
n=0;
head=(Student *)malloc(LEN);
p2=head;
printf("\n請輸入第%d名學生的學號,學號為0表示結束輸入:",n+1);
scanf("%d",&flag);
while(getchar()!='\n');
for(;flag;)
{
n++;
p1=(Student *)malloc(LEN);
p1->num=flag;
printf("請輸入第%d名學生的姓名:",n);
scanf("%s",p1->name);

printf("請輸入第%d名學生的語文成績:",n);
scanf("%d",&p1->score[0]);
printf("請輸入第%d名學生的數學成績:",n);
scanf("%d",&p1->score[1]);
printf("請輸入第%d名學生的英語成績:",n);
scanf("%d",&p1->score[2]);
printf("請輸入第%d名學生的計算機成績:",n);
scanf("%d",&p1->score[3]);
p1->sum=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3];
p2->next=p1;
p2=p1;
printf("\n請輸入第%d名學生的學號,沒有此學生則輸入0表示結束:",n+1);
scanf("%d",&flag);
}
p2->next=NULL;
printf("\n\n");
return head;
}

Student *sort_all(Student *head) //學生成績統計排序入口函數
{
int choose;
for(;;)
{
printf("\n\t\t# # # # # 學生成績統計排序 # # # #\n");
printf("\t\t#\t1.按學生學號排序\t #\n");
printf("\t\t#\t2.按學生總分排序\t #\n");
printf("\t\t#\t3.按學生語文成績排序\t #\n");
printf("\t\t#\t4.按學生數學成績排序\t #\n");
printf("\t\t#\t5.按學生英語成績排序\t #\n");
printf("\t\t#\t6.按學生計算機成績排序\t #\n");
printf("\t\t#\t7.單科高分及均分\t #\n");
printf("\t\t#\t8.顯示當前學生成績\t #\n");
printf("\t\t#\t0.返回上一級菜單\t #\n");
printf("\t\t# # # # # 由張駿友情提供# # # # #\n\n");
printf("請輸入你要執行的操作:");
scanf("%d",&choose);
while(getchar()!='\n');
switch(choose)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:head=sort_1(head,choose);break; //調用排序函數
case 7:print(head);sort_2(head);break;
case 8:print(head);break;
case 0:return head;
default: printf("\n\n您的輸入有誤!請重新輸入:\n\n");break;
}
}
}

Student *sort_1(Student *head,int choose) //選擇排序 函數
{
Student *p1,*p2=head->next,*pm,*px; //p2從第一個學生結點開始
Student mid;
if (!p2) return head; //判斷鏈表是否為空
for(p1=p2;p1->next!=NULL;p1=p1->next)
{
pm=p1;
for(p2=p1->next;p2!=NULL;p2=p2->next)
switch(choose)
{
case 1:if (pm->num>p2->num) pm=p2;break; //按學號從小到達排序
case 2:if (pm->sum<p2->sum) pm=p2;break; //按總分從大到小排序
case 3:if (pm->score[0]<p2->score[0]) pm=p2;break;//按單科從大到小排序
case 4:if (pm->score[1]<p2->score[1]) pm=p2;break;
case 5:if (pm->score[2]<p2->score[2]) pm=p2;break;
case 6:if (pm->score[3]<p2->score[3]) pm=p2;break;
}
if (pm!=p1)
{
mid=*pm; //交換兩個節點的內容
*pm=*p1;
*p1=mid;
px=pm->next;//交換兩個節點的順序
pm->next=p1->next;
p1->next=px;
}
}
printf("\n排序後的成績表為:\n");
print(head); //列印出當前學生成績報表
return head;
}

void sort_2(Student *head) //求當前高分及均分函數
{
Student *p=head->next; //從當前第一個學生開始
int max_1,max_2,max_3,max_4,min_1,min_2,min_3,min_4;
int max_sum,min_sum;
int sum_1=0,sum_2=0,sum_3=0,sum_4=0; //總分
float aver_1,aver_2,aver_3,aver_4,aver_sum; //平均分
if (!p) return;
max_1=min_1=p->score[0];max_2=min_2=p->score[1]; //賦初值
max_3=min_3=p->score[2];max_2=min_2=p->score[3];
max_sum=min_sum=p->sum;
for(;p;p=p->next)
{
if (max_1<p->score[0]) max_1=p->score[0]; //求各科最大最小值
else if (min_1>p->score[0]) min_1=p->score[0];
if (max_2<p->score[1]) max_2=p->score[1];
else if (min_2>p->score[1]) min_2=p->score[1];
if (max_3<p->score[2]) max_3=p->score[2];
else if (min_3>p->score[2]) min_3=p->score[2];
if (max_4<p->score[3]) max_4=p->score[3];
else if (min_4>p->score[3]) min_4=p->score[3];
if (max_sum<p->sum) max_sum=p->sum;
else if (min_sum>p->sum) min_sum=p->sum;
sum_1+=p->score[0];sum_2+=p->score[1];sum_3+=p->score[2];sum_4+=p->score[3];
} //求各科總分 平均分
aver_1=1.0*sum_1/n;aver_2=1.0*sum_2/n;aver_3=1.0*sum_3/n;aver_4=1.0*sum_4/n;
aver_sum=aver_1+aver_2+aver_3+aver_4; //求總分的平均分
printf("總共%d名學生,具體數據為:\n",n);
printf("語文最高分為%d,最低分為%d,平均分為%.2f\n",max_1,min_1,aver_1);
printf("數學最高分為%d,最低分為%d,平均分為%.2f\n",max_2,min_2,aver_2);
printf("英語最高分為%d,最低分為%d,平均分為%.2f\n",max_3,min_3,aver_3);
printf("計算機最高分為%d,最低分為%d,平均分為%.2f\n",max_4,min_4,aver_4);
printf("總分最高分為%d,最低分位%d,平均分為%.2f\n",
max_sum,min_sum,aver_sum);
}

void find(Student *head) //查找對應信息的學生
{
Student *p,*q;
int choose,fnum;
char tem[20];
if (n==0) {printf("\n當前系統沒有任何學生數據,您就別費勁了!\n ");return;}
for(;;)
{
printf("\n請輸入您要查詢學生的方式:\n\n");
printf("1、按學號查詢;2、按姓名查詢;0、我不查詢了。\n\n");
printf("請選擇:");
scanf("%d",&choose);
while(getchar()!='\n');
if (choose==1)
{
printf("\n請輸入你要查詢的學生的學號,輸入0退出學號查詢:");
scanf("%d",&fnum);
for(;fnum;)
{
for(p=head->next;p!=NULL&&p->num!=fnum;p=p->next);

if (!p)
{
printf("\n\n找不到你要查詢的學號,請重新輸入,輸入0表示結束:");
scanf("%d",&fnum);
}
else if (p->num==fnum)
{for(q=head->next;q->next!=p;q=q->next);

printf("\n學號為%d學生的數據為:\n",p->num);
printf("學號\t姓名\t語文成績 數學成績 英語成績 計算機\
成績 總分\n");
printf("%d\t%s\t %d %d %d %d \
%d\n",p->num,
p->name,p->score[0],p->score[1],p->score[2],p->score[3],
p->sum);

printf("\n\n請選擇後續操作 1.修改該學生信息 2.刪除該學生信息 輸入0退出學號查詢\n");

int choosel;
scanf("%d",&choosel);
for(;choosel;)
{
if(choosel==1)
{
update(p);
printf("\n\n請繼續選擇後續操作:1.再次修改 2.刪除該生 0表示退出");
scanf("%d",&choosel);
}
else if(choosel==2)
{deletee(q,p);
printf("\n\n請繼續選擇後續操作:0表示退出");
scanf("%d",&choosel);
}
}

printf("\n\n請輸入你還要查詢的學生的學號,輸入0表示不按學\
號查詢了:");
scanf("%d",&fnum);
}
}
}
else if (choose==2)
{
printf("\n請輸入你要查詢的學生的姓名,輸入0退出姓名查詢:");
scanf("%s",tem);
for(;strcmp(tem,"0");)
{
for(p=head->next;p!=NULL&&strcmp(p->name,tem);p=p->next);
if (!p)
{
printf("\n\n找不到你要查詢的姓名,請重新輸入,輸入0表\
示結束:");
scanf("%s",tem);
}
else if (!strcmp(p->name,tem))
{for(q=head->next;q->next!=p;q=q->next);
printf("\n姓名為%s學生的數據為:\n",p->name);
printf("學號\t姓名\t語文成績 數學成績 英語成績 \
計算機成績 總分\n");
printf("%d\t%s\t %d %d %d \
%d %d\n",
p->num,p->name,p->score[0],p->score[1],p->score[2],
p->score[3],p->sum);

printf("\n\n請選擇後續操作 1.修改該學生信息 2.刪除該學生信息 輸入0退出學號查詢\n");

int choosel;
scanf("%d",&choosel);
for(;choosel;)
{
if(choosel==1)
{
update(p);
printf("\n\n請繼續選擇後續操作:1.再次修改 2.刪除該生 0表示退出");
scanf("%d",&choosel);
}
else if(choosel==2)
{deletee(q,p);
printf("\n\n請繼續選擇後續操作:0表示退出");
scanf("%d",&choosel);

}
}

printf("\n\n請輸入你還要查詢的學生的姓名,輸入0表\
示不按姓名查詢了:");
scanf("%s",tem);
}
}
}
else if (choose==0) {printf("\n你選擇了不查詢!\n");break;}
else {printf("\n你以其他方式選擇了不查詢!\n");break;}
}
}

Student *add_new(Student *head) //添加新的學生信息
{
Student *p;
int flag;
printf("\n\n請輸入你要新加入學生的學號,學號為0表示結束輸入:");
scanf("%d",&flag);
while(getchar()!='\n');
for(;flag;)
{
p=(Student *)malloc(LEN);
p->num=flag;
printf("請輸入新加入學生的姓名:",n);
scanf("%s",p->name);
printf("請輸入新加入學生的語文成績:",n);
scanf("%d",&p->score[0]);
printf("請輸入新加入學生的數學成績:",n);
scanf("%d",&p->score[1]);
printf("請輸入新加入學生的英語成績:",n);
scanf("%d",&p->score[2]);
printf("請輸入第%d名學生的計算機成績:",n);
scanf("%d",&p->score[3]);
p->sum=p->score[0]+p->score[1]+p->score[2]+p->score[3];
p->next=head->next;
head->next=p;
n++;
printf("\n請輸入還要加入學生的學號,沒有此學生則輸入0表示結束:");
scanf("%d",&flag);
}
head=sort_1(head,1);
printf("加入後的成績表為:\n");
print(head);
return head;
}

void print(Student *head) //列印出當前的成績
{
Student *p=head->next;
if (!p) {printf("\n\n此系統目前沒有任何學生數據!\n\n\n");return;}
printf("此系統目前共計學生%d名:\n",n);
printf("**************************學生成績統計一覽************************\
*****\n");
printf("學號\t姓名\t語文成績 數學成績 英語成績 計算機成績 總分\n");
for(;p;p=p->next)
printf("%d\t%s\t %d %d %d %d %d\n",
p->num,p->name,
p->score[0],p->score[1],p->score[2],p->score[3],
p->sum=p->score[0]+p->score[1]+p->score[2]+p->score[3]);
printf("************************此軟體由張駿友情提供*************************\
*\n\n");
}

void stuconserve(Student *head) //將內容保留至文件,文件名為outfile2_3
{
Student *p;
fstream outfile("outfile2_3.txt",ios::out|ios::app);
if(!outfile)
{
cout<<"文件不能打開"<<endl;
abort();
}
//fprintf(outfile2_3.txt," 學號 姓名 性別 語文 數學 外語\n");
p=head->next;
while(p)
{outfile<<setw(5)<<p->num<<setw(15)<<p->name
<<setw(5)<<p->score[0]<<setw(5)<<p->score[1]<<setw(5)<<p->score[2]<<setw(5)<<p->score[3]<<endl;
p=p->next;
}
outfile.close();
}

int main()
{
Student *head;
int choose,i;

head=(Student *)malloc(LEN);
head->next=NULL;
for(;;)
{
printf("\n\t\t* * * * * 學生成績管理系統 * * * *\n");
printf("\t\t*\t1.學生數據鍵盤錄入\t *\n");
printf("\t\t*\t2.學生數據統計排序\t *\n");
printf("\t\t*\t3.查詢修改刪除學生數據\t *\n");
printf("\t\t*\t4.插入學生數據\t\t *\n");
printf("\t\t*\t5.顯示當前成績表\t *\n");
printf("\t\t*\t0.保存退出成績管理系統\t *\n");
printf("\t\t* * * * * 由張駿友情提供* * * * *\n\n");
printf("\n請輸入你要執行的操作:");
scanf("%d",&choose);
while(getchar()!='\n');
switch(choose)
{
case 1:printf("\n\t\t\t\t****注意****");
printf("\n\n 此選項將會建立新的學生數據系統 ,原來的數據將\
不再存在,你確信要刪除原來的數據並建立新的數據系統么?\n\n");
printf("1、建立新的數據系統;0、放棄建立新的數據系統。\n\n");
printf("請選擇:");
scanf("%d",&i);
if (i==1) {head=cinn();print(head);break;}
else if (i==0)
{
printf("\n你選擇了放棄建立新的數據系統!\n");
break;
}
else {
printf("\n你做出別的選擇,當作放棄建立!\n");
break;
}

case 2:head=sort_all(head);break;
case 3:find(head);break;
case 4:head=add_new(head);
case 5:print(head);break;
case 0: stuconserve(head); system("pause");return 0;
default: printf("\n\n您的輸入有誤!請重新輸入:\n\n");break;
}
}

}

❽ C語言 學生考試成績統計管理代碼

都是一些比較小的錯誤。看注釋

#include<stdio.h>
#defineN50//學生人數
#defineM3//課程門數
voidInput(intscore[][M+3],intn)/*這里最後去掉一個分號*/
{
inti,j,sum;
printf("InputNumberand%dscore: ",M);
for(i=0;i<n;i++)
{
=0;
printf("%d:",i+1);
for(j=0;j<=M;j++)
{
scanf_s("%d",&score[i][j]);
if(j!=0)
sum+=score[i][j];
}
score[i][M+1]=sum;
score[i][M+2]=sum/M;
}
}
voidOutput(intscore[][M+3],intn)/*參數間的逗號要用半形的,不能用全形字元*/
{
inti,j;
printf(" Number ");
for(i=0;i<M;i++)
printf("sub%d ",i+1);
printf("Total Average ");
printf("----------------------------------------- ");
for(i=0;i<n;i++)
{
for(j=0;j<M+3;j++)
printf("%d ",score[i][j]);
printf(" ");
}
}
voidSort(inta[][M+3],intn)/*參數間的逗號要用半形的,不能用全形字元*/
{
inti,j,k,t;
for(i=1;i<n;i++)
{
for(j=0;j<n-i;j++)
if(a[j][M+2]<a[j+1][M+2])/*前面少一個]*/
{
for(k=0;k<M+3;k++)
{
t=a[j][k];
a[j][k]=a[j+1][k];
a[j+1][k]=t;
}
}
}
}
voidmain()
{
intscore[N][M+3],n;
printf("?");
scanf_s("%d",&n);
Input(score,n);
Output(score,n);
Sort(score,n);
Output(score,n);
}
熱點內容
武漢大學學生會輔導員寄語 發布: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