用c语言编写一个成绩管理系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:(1)主菜单学生成绩管理系统 1、成绩录入 2、成绩查询 3、成绩统计 4、退出(2)各菜单项功能① 成绩录入:输入学生的学号、姓名及三门课的成绩;② 成绩查询:(至少一种查询方式)。 v 按学号查询学生记录。 v 查询不及格学生的记录。③成绩统计: v 计算学生的平均分; v 根据学生的平均分高低,对学生的数据进行排序后输出; v 对学生单科成绩排序,输出学生姓名与该科成绩;④退出系统:退出整个系统(即主菜单)。(3)结构体数组:

#define N 30 struct student {int num; /* 定义学号*/

char name[20]; /* 定义姓名*/

float score[3]; /* 定义存贮三门课成绩的数组*/

float average; /* 定义平均成绩*/

};struct student stu[N]; /* 定义结构体数组,存贮多个学生的记录*/

. #include

#include

#include

struct student

{ int num; char name[20];

float score[4];

float average;

}

stu[10000];

long t,max;

bool unpass[1000];

FILE *fstu=fopen("stud.dat","at+");

int init()

{

int no,i;

float s[4],ave;

char nam[20];

while (!feof(fstu))

{

fscanf(fstu,"%d",&no);

fscanf(fstu,"%s",nam);

fscanf(fstu,"%f%f%f%f",&s[1],&s[2],&s[3],&ave);

if (no>max)

max=no;

stu[no].num=no;

strcpy(stu[no].name,nam);

unpass[no]=false; f

or (i=1;i<=3;i++)

{

stu[no].score[i]=s[i];

if (s[i]<60)

unpass[no]=true;

}

stu[no].average=ave;

}

}

int stuinsert()

{

int no,i;

float s[3],sum;

char nam[20],cha;

loop:printf("请输入学生的学号、姓名及三门课的成绩\n"); scanf("%d",&no); scanf("%s",nam);

scanf("%f%f%f/n",&s[1],&s[2],&s[3]);

if (no>max)

max=no;

stu[no].num=no;

sum=0.0;

strcpy(stu[no].name,nam);

unpass[no]=false;

for (i=1;i<=3;i++)

{

stu[no].score[i]=s[i];

sum=sum+s[i];

if (s[i]<60)

unpass[no]=true;

}

stu[no].average=sum/3.0;

fprintf(fstu,"\n");

fprintf(fstu,"%d %s %f %f %f %f\n",stu[no].num,stu[no].name,stu[no].score[1],stu[no].s core[2],stu[no].score[3],stu[no].average);

}

int find(int x)

{

long i,no;

switch (x)

{

case 1:printf("请输入学号:");

scanf("%d",&no);

printf("%d %s %f %f %f %f\n",stu[no].num,stu[no].name,stu[no].score[1], stu[no].scor e[2],stu[no].score[3],stu[no].average);

break;

case 2:for (i=1;i<=max;i++) if (unpass[i]) printf("%d %s %f %f %f %f\n",stu[i].num,st u[i].name,stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].average);

break;

}

}

int sort(int x)

{

extern int headprint(int x);

student so[1000];

int i,j,k,n;

switch (x)

{

case 1:for (i=1;i<=max;i++) if (stu[i].num==i) printf("%d %s %f\n",i,stu[i].name,stu[i].av erage);

break;

case 2:n=0;

for (i=1;i<=max;i++)

{

j=1; if (stu[i].num==i)

while ((so[j].average>stu[i].average)&&(j<=n))

j++; n++;

for (k=n;k>=j;k--) so[k]=so[k-1]; so[j]=stu[i];

}

for (i=1;i<=n;i++)

相关文档
最新文档