当前位置:首页 » 编程语言 » 成绩管理系统c语言报告

成绩管理系统c语言报告

发布时间: 2023-08-03 05:15:48

Ⅰ 学生成绩记录薄 c语言 课程设计报告

C语言程序设计报告

课题名称:学生成绩管理

1 系统概述:

本程序为一个学生成绩管理系统,对学生的成绩进行管理,学生的信息包括学号,姓名,学期,三门课程的成绩,输入这些信息,本程序可以自动计算总成绩,可以按高分到低分进行排名,并对输入信息的人数进行汇总.

2 数据结构设计:

(1)结构体;

(2)数组的设计:运用指针代替数组,使用指针来建立线性表,使程序更加简洁,可读性更强.

3 各函数的设计:

函数原型:void InitList(SqLinkList &L);

功能: 创建一个空的线性链表;

入口参数:L为要创建的线性链表;

出口参数:创建链表的L.head为空,L.length为0;

返回值: 无;

函数原型:void EmptyLinkList(SqLinkList &L);

功能: 清空整个线性链表;

入口参数:L为要清空的链表名称;

出口参数:若清空成功则链表长度L.length为0;

返回值: 无;

函数原型:int ScanE(ElemType &e);

功能: 输入学生信息;

入口参数:e为要输入信息的学生名称;

出口参数:e.num保存学号,e.name保存姓名,e.team保存所在学期,e.s1,e.s2,e.s3分别保存三门课程的成绩;

返回值: 输入合法返回1,否则返回0;

错误处理:若学号、姓名等输入不合法会有提示及重输;

函数原型:Status SqLinkListAppend(SqLinkList &L,ElemType e);

功能: 追加一个结点到线性链表中;

入口参数:e为所追加的结点名称,L为e所追加到的线性链表的名称;

出口参数:若追加成功,则e为头结点,链表长度L.length增1;

返回值: 若追加成功返回1;

函数原型:Link SearchNode(SqLinkList L,int NUM);

功能: 查找学号为NUM的学生;

入口参数:查找的链表名称L,学号NUM;

出口参数:若找到结点指针p指向该结点,否则指向空结点;

返回值: 结点指针p;

函数原型:void SearchTeam(SqLinkList L,int team);

功能: 查找学期为team的所有记录并输出其信息;

入口参数:查找的链表名称L,要查找的学期team;

出口参数:无;

返回值: 无;

函数原型:void SearchUnpass(SqLinkList L,float s1,float s2,float s3);

功能: 查找所有有挂科记录的学生并输出其信息;

入口参数:查找的链表名称L,要查找的各门学科成绩s1,s2,s3;

出口参数:无;

返回值: 无;

函数原型:void SqLinkListSearch(SqLinkList L);

功能: 对链表进行分类查找;

入口参数:要查找的链表名称L;

出口参数:无;

返回值: 无;

函数原型: void inputData(SqLinkList &L);

功能: 输入数据,并追加一个结点;

入口参数: L为要追加结点的链表名称;

出口参数: 无;

返回值: 无;

函数原型:void SqLinkListTraverse(SqLinkList L);

功能: 输出链表中所有学生成绩列表;

入口参数:L为要输出信息的链表名称;

出口参数:无;

返回值: 无;

函数原型:void PrintE(ElemType e);

功能: 输出一个结点的所有信息;

入口参数:要输出的结点名称e;

出口参数:无;

返回值: 无;

4 使用程序的说明:

本程序为一个学生成绩管理系统。对学生的成绩信息进行管理,学生的信息包括学号、姓名、学期、三门课程的成绩、平均成绩、名次。本管理系统实现学生的学号、姓名、学期、每门课程的成绩的录入,并自动按平均分排名,使用时按屏幕上的提示,输入使用代码.如下图所示:

例如:输入代码数字”1”,程序执行”输入学生成绩或已存在的学生成绩进行修改”这条小程序.输入学生个人信息后,如下图所示:

如此分别输入相应的程序代码,就执行相应的程序段.

如下的程序是按学号进行成绩排名:

当输入”6”时,执行相应的程序,即汇总一共输入学生的人数:

5 总结和体会:

通过对C语言学习,尤其是这学期本班开展C语言双语教学,体会到学习难的同时,也真正了解到C语言作为一门高级的计算机语言的强大功能,特别是在当今实际生活,生产,办公,信息管理等方面的强大作用. 这次合作我们遇到了许多的困难。时间的紧迫,知识的不足,给我很大的压力。最终我还是还是完成了任务。团结就是力量是我这次最真切的感受。

6 程序代码:

void InitList(SqLinkList &L) {

// 构造一个空的线性表L;

L.head = 0; //头指针为空;

L.length = 0; //长度初始为0;

}

void EmptyLinkList(SqLinkList &L){

//入口参数为整个线性表的数据,功能为清空线性表;

Node *p;

if(!L.head)printf("系统中不存在记录。\n");

//头指针为空时没有学生录入;

else {

while (L.head){

//每个循环将下一结点赋值给头指针,并释放本结点空间,直至线性表清空;

p=L.head;

L.head=p->next;

free(p);

} //end while;

L.length=0; //长度为0;

printf("该管理系统学生信息已清空。\n");

}//end else;

}

int ScanE(ElemType &e){

//输入一个学生的成绩数据结点。返回0为无效结点数据,1为有效结点数据;

printf("\n学号:");

scanf("%d",&e.num);

if(e.num==0){

//学号为0输入不合法,重新输入;

printf("学号输入不合法.\n");

return 0;

}

printf("\n姓名:");

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

printf("\n学期:");

scanf("%d",&e.team);

while(e.team>12){

//系统只记录小于12的学期数;

printf("输入的学期不能大于12,请重新输入:");

scanf("%d",&e.team);

}

printf("\n成绩A:");

scanf("%f",&e.s1);

printf("\n成绩B:");

scanf("%f",&e.s2);

printf("\n成绩C:");

scanf("%f",&e.s3);

return OK;

}

Status SqLinkListAppend(SqLinkList &L,ElemType e){

//追加一个结点到线性表中;

Node *p;

p=SearchNode(L,e.num);

//查找学号为e.num的记录并将其地址赋给指针p;

if (p==0){

//若不存在添加学号相同的结点,追加一个结点;

p=(Node *)malloc(sizeof(Node));

if (!p) return ERROR;

memcpy(&(p->data),&e,sizeof(ElemType));

p->next=L.head ;

L.head=p;

//追加的一个结点为首结点;

L.length++; //表长度加1;

}

else { //如果该学号记录已存在,则进行修改操作;

memcpy(&(p->data),&e,sizeof(ElemType));

printf("该学生记录已经存在,已完成修改操作。\n");

}

return OK;

}

Link SearchNode(SqLinkList L,int NUM){

//查找学生记录,该学生的学号为NUM;

Node *p;

p=L.head; //p先指在头结点;

while (p&& p->data.num !=NUM ) p=p->next;

//如果该学生的学号不为NUM则查找下一个结点;

return p;

}

void SearchTeam(SqLinkList L,int team){

//按学期查找并输出所有该学期存在的记录;

Node *p;

p=L.head;

int n,sum=0;

//sum记录该学期的学生总人数;

printf("请输入您要查询的学生的学期:");

scanf("%d",&n);

printf("\n学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩\n");

while(p&&p->next){

//如果p结点和它的下一结点不为空,且该结点的学期等于要查找学期,则格式输出所有该学期学生信息;

if(p->data.team==n){

PrintE(p->data);

sum++;

//查找到一个该学期的学生记录计数加1;

}

p=p->next;

//转向下一结点;

} //end while;

if(p->data.team==n){

//如果p的下一结点为空,且本结点学期为n,则格式输出该结点信息;

sum++;

PrintE(p->data);

}

if(sum==0)printf("没有这学期的记录。\n");

if(sum)printf("该学期共有%d人的记录.\n",sum);

}

void SearchUnpass(SqLinkList L,float s1,float s2,float s3){

//查找并输出有挂科的学生信息;

Node *p;

p=L.head;

int sum=0;

//sum计数挂科总人数,初始为0;

printf("以下是有一门以上不及格科目的学生的成绩:\n");

printf("\n学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩\n");

while(p&&p->next){

//如果p及其下一结点为真,且该结点有一门以上科目分数低于60则输出该结点成绩并使sum计数加1;

if((p->data.s1<60)||(p->data.s2<60)||(p->data.s3<60))

{

PrintE(p->data);

sum++;

} //end if;

p=p->next;

//转到下一结点;

} //end while;

if((p->data.s1<60)||(p->data.s2<60)||(p->data.s3<60)){

//查看最后一个结点,若有挂科,sum加1并格式输出结点信息;

sum++;

PrintE(p->data);

}

if(sum==0)printf("没有不及格的记录。\n");

if(sum)printf("共有%d人的挂科记录.\n",sum);

}

void SqLinkListSearch(SqLinkList L){

//分类查找学生记录;

Node *p;

p=L.head;

int n,reg; //reg为查询方式的指令;

printf("1--按学号查询\n2--按学期查询\n3--挂科学生信息列表\n");

printf("请您输入查询方式:");

scanf("%d",®);

if(L.length){

if(reg>3)printf("对不起没有您要求的选项。\n");

//若reg>3则输入不合法;

else if(reg==1){

//reg==1按学号查询;

printf("请输入您要查询的学生的学号:");

scanf("%d",&n);

while(p&&p->next&& p->data.num !=n) p=p->next;

//当p和他下一结点为真时且结点数据不为要查找数据时转向下一结点;

if(p->data.num==n){

//找到所要查询结点,格式输出;

printf("\n学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩\n");

PrintE(p->data);

}

else printf("没有您要查找的学号。\n");

} //end reg==1 if ;

else if(reg==2)SearchTeam(L,p->data.team);

//reg==2,调用SearchTeam函数按学期查询并输出;

else if(reg==3)SearchUnpass(L,p->data.s1,p->data.s2,p->data.s3);

//reg==3,调用SearchUnpass函数,输出全部有挂科记录的学生信息;

}//end if;

else printf("系统中无记录.\n");

}

void inputData(SqLinkList &L){

//请求输入学生成绩,则追加一个结点并输入;

ElemType e;

if (ScanE(e)) SqLinkListAppend(L,e); //输入数据,追加一个结点;

}

void SqLinkListTraverse(SqLinkList L){

//所有学生信息列表输出;

Node *p;

char c;

p=L.head;

if(p) //非空表;

{

printf("\n学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩\n");

for (p=L.head ;p;p=p->next )PrintE(p->data);

//从第一个结点开始输出所有信息直到结点为空;

}

else printf("系统中无记录。\n");

//空表;

c=getchar();

}

void PrintE(ElemType e){

//输出各科成绩和平均成绩;

printf("%d\t%s\t%d\t%f\t%f\t%f\t%f\n",e.num,e.name,e.team,e.s1,e.s2,e.s3,(e.s1+e.s2+e.s3)/3);

//格式输出学生的学号、姓名、学期、A、B、C三门成绩以及平均成绩;

}

Ⅱ 用C语言设计一个学生成绩管理系统

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

#include <stdlib.h>
#defineMAX1000

/*定义学生成绩信息结构*/
struct stu
{

char id[8];
char name[8];


(2)成绩管理系统c语言报告扩展阅读:

short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)

long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)

long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)

signed:修饰整型数据,有符号数据类型。(C89标准新增)

unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)

restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。(C99标准新增)

复杂类型关键字

struct:结构体声明。(K&R时期引入)

union:联合体声明。(K&R时期引入)

enum:枚举声明。(C89标准新增)

typedef:声明类型别名。(K&R时期引入)

sizeof:得到特定类型或特定类型变量的大小。(K&R时期引入)

inline:内联函数用于取代宏定义,会在任何调用它的地方展开。(C99标准新增)

Ⅲ 怎样用C语言写学生成绩管理系统

程序如下: #includex0dx0avoid main()x0dx0a{x0dx0a float student[100][7];x0dx0a//student[][0]存放学号,student[][1]到student[][4]存放四门成绩,x0dx0a//student[][5]存放总分,student[][6]存放平均分,student[][7]存放排名x0dx0a int n,i,j,k,p,t,count,flag;x0dx0a int a[100],b[100],c[100];x0dx0a//a[]存放排序后的下标,b[]存放总分(备份),c[]存放排名的数据x0dx0a printf("输入学生的个数:\n");x0dx0a scanf("%d",&n);x0dx0a for(i=0;i<=n-1;i++)x0dx0a {x0dx0a printf("输入第%d个学生的学号:",i+1);x0dx0a scanf("%f",&student[i][0]);x0dx0a for(j=0,student[i][5]=0;j<=3;j++)x0dx0a {x0dx0a printf("输入第%d个学生的第%d门成绩:",i+1,j+1);x0dx0a scanf("%f",&student[i][j+1]);x0dx0a student[i][5]+=student[i][j+1]; //计算总分x0dx0a }x0dx0a b[i]=student[i][5]; //把总分再赋给b[]数组,以后排序用x0dx0a student[i][6]=student[i][5]/4; //计算平均分x0dx0a }x0dx0a x0dx0a for(i=0;i<=n-2;i++) //对数组b[](即总分)进行排序x0dx0a for(j=0;j<=n-2-i;j++)x0dx0a {x0dx0a if(b[j]b[i+1])x0dx0a {x0dx0a c[i]=count;x0dx0a count++;x0dx0a }x0dx0a }x0dx0a printf("\n以下是统计结果:\n");x0dx0a printf("学号 s[1] s[2] s[3] s[4] 总分 平均分 排名\n");x0dx0a for(i=0;i<=n-1;i++)x0dx0a {x0dx0a printf("%.0f\t%.0f\t%.0f\t%.0f\t%.0f\t%.0f\t%f\t%d\n",student[a[i]][0],student[a[i]][1],student[a[i]][2],student[a[i]][3],student[a[i]][4],student[a[i]][5],student[a[i]][6],c[i]);x0dx0a }x0dx0a} 有疑问提出

Ⅳ C语言课程设计报告(题目:学生成绩管理系统)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 35
char name;
int inth;
struct date
{
int year;
char month;
char day;
};
struct student
{
char no[9];
char name[9];
char sex[3];
struct date birthday;
int score[4];
};
int menu()
{

int code;

printf(" 菜单\n");

printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");

printf("┃ 0.退出 ┃\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("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");

printf("选择代码(0,1,2,3,4,5,6,7,8): ");

scanf("%d",&code);

return code;

}

/* 建立学生信息数组 */

void readsi(struct student stud[],int *n)

{

FILE*fp;

int i;

if((fp=fopen("studf.txt","r"))==NULL)

{

printf("不能打开studf.txt文件!\n");

exit(1);

}

for(i=0;!feof(fp);i++)

{

(*n)++;

if(*n>N)

{

printf("最多处理35位学生信息!\n");

return;

}

fscanf(fp,"%s %s %s %d %d %d %d %d %d",stud[i].no,stud[i].name,stud[i].sex,&stud[i].birthday.year,&stud[i].birthday.month,&stud[i].birthday.day,&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);
// fscanf从一个流中执行格式化输入
stud[i].score[3]=stud[i].score[0]+stud[i].score[1]+stud[i].score[2];

}

fclose(fp);

}

/* 显示学生信息 */

void printsi(struct student *pstud,int n)

{

int i,k=0;

printf(" 学号 姓名 性别 年 月 日 数学 英语 C 总分\n");

printf("┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉\n");

printf("==================================================================\n");

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

{

printf("%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5d\n",pstud[i].no,pstud[i].name,pstud[i].sex,pstud[i].birthday.year,pstud[i].birthday.month,pstud[i].birthday.day,

pstud[i].score[0],pstud[i].score[1],pstud[i].score[2],pstud[i].score[3]);

k++;

if(k%20==0)

scanf("%*c");

}

}

/* 按学号排序—简单比较排序法*/

void csort_no(struct student *pstud,int n)

{

struct student temp;

int i,j;

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

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

if(strcmp(pstud[i].no,pstud[j].no)>0)

{

temp=pstud[i];

pstud[i]=pstud[j];

pstud[j]=temp;

}

}

/* 显示学生信息表*/

void printtable(struct student *pstud,int n)

{

int i,k=0;struct student studA[N];

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

studA[i]=pstud[i];

csort_no(studA,n);

printf("\n\n");

printf(" 学生信息表\n");

printf(" ==================\n\n");

printf("┏━━━━┳━━━━┳━━━┳━━━━━━┳━━━┳━━━┳━━━┳━━━┓\n");

printf("┃学号 ┃姓名 ┃ 性别 ┃ 年 月 日 ┃ 数学 ┃ 英语 ┃ C ┃ 总分 ┃\n");

printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");

printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");

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

{

printf("┃%-8s┃%-8s┃ %-2s ┃ %4d %2d %2d ┃ %4d ┃ %4d ┃ %4d ┃ %4d ┃\n",studA[i].no,studA[i].name,studA[i].sex,studA[i].birthday.year,studA[i].birthday.month,studA[i].birthday.day,studA[i].score[0],studA[i].score[1],studA[i].score[2],studA[i].score[3]);

if(i==n-1)

printf("┗━━━━┻━━━━┻━━━┻━━━━━━┻━━━┻━━━┻━━━┻━━━┛\n");

else

printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");

k++;

if(k%20==0)

scanf("%*c");

}

}

/* 查各课程平均分数 */

void find_ave(struct student *pstud,int n)

{

static summath=0,sumenglish=0,sumC=0,score=0;int i;struct student studA[N];

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

studA[i]=pstud[i];

csort_no(studA,n);

printf(" 各课程平均分数 \n ");

printf("————————————————————————————\n");

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

{

summath=summath+pstud[i].score[0];

sumenglish=sumenglish+pstud[i].score[1];

sumC=sumC+pstud[i].score[2];

score=score+pstud[i].score[3];

}

printf("数学平均分数:%4d\n",summath/n);

printf("英语平均分数:%4d\n",sumenglish/n);

printf("c平均分数:%4d\n",sumC/n);

printf("总分平均分数:%5d\n",score/n);

}

/* 查男女学生人数 */

void find_pnum(struct student *pstud,int n)

{

int i,j=0,k=0;

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

{

if(strcmp(pstud[i].sex,"男")==0)

j++;

else

k++;

}

printf("男学生人数为%d人",j);

printf("女学生人数为%d人",k);

}

/* 按总分递减选择排序(应用指针数组)*/

void ssort(struct student *ptscore[],int n)

{

struct student *temp;

int i,j;

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

for(j=0;j<n-i-1;j++)

if(ptscore[j]->score[3]<ptscore[j+1]->score[3])

{

temp=ptscore[j];

ptscore[j]=ptscore[j+1];

ptscore[j+1]=temp;

}

}

/* 按学号查学生信息和平均分数(顺序查找)*/

void ssrch_no(struct student *pstud[],int n)

{

int i=0,j=0;char no[9];

printf("请输入要查找的学生学号:");

scanf("%s",&no);

printf("\n");

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

{

if(strcmp(no,pstud[i]->no)==0)

printf("已找到学号为%-8s的学生\n学号:%-8s\n姓名:%-8s\n性别:%-2s\n%4d年%2d月%2d日\n数学:%4d\n英语:%4d\nc:%4d\n总分%4d\n平均分数为:%4d\n",pstud[i]->no,pstud[i]->no,pstud[i]->name,pstud[i]->sex,pstud[i]->birthday.year,pstud[i]->birthday.month,pstud[i]->birthday.day,pstud[i]->score[0],pstud[i]->score[1],pstud[i]->score[2],pstud[i]->score[3],pstud[i]->score[3]/3);

else

j++;

}

if(j==6)

printf("未找到学号为%-8s的学生\n",no);

}

/* 按姓名查找的学生信息和平均分数(折半查找)*/

void bsrch_name(struct student *pname[],int n)

{
int bsrch(struct student *pname[],int n,char *name);
char name[9];int i;

printf("请输入要查找的学生姓名:");

scanf("%s",name);

i=bsrch(pname,n,name);

if(i!=-1)

printf("已找到该学生,学生信息:%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5d\n",

pname[i]->no,pname[i]->name,pname[i]->sex,

pname[i]->birthday.year,pname[i]->birthday.month,

pname[i]->birthday.day,

pname[i]->score[0],pname[i]->score[1],pname[i]->score[2],

pname[i]->score[3]);

else

printf("%d没有找到该学生资料!\n",name);

for(;;)

{ i=i-1;

if(strcmp(name,pname[i]->name)==0) printf("已找到该学生,学生信息:%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5d\n",

pname[i]->no,pname[i]->name,pname[i]->sex,

pname[i]->birthday.year,pname[i]->birthday.month,

pname[i]->birthday.day,

pname[i]->score[0],pname[i]->score[1],pname[i]->score[2],

pname[i]->score[3]);

else

break;

}

i=bsrch(pname,n,name);

for(;;)

{i=i+1;

if(strcmp(name,pname[i]->name)==0) printf("已找到该学生,学生信息:%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5d\n",

pname[i]->no,pname[i]->name,pname[i]->sex,

pname[i]->birthday.year,pname[i]->birthday.month,

pname[i]->birthday.day,

pname[i]->score[0],pname[i]->score[1],pname[i]->score[2],

pname[i]->score[3]);

else

break;

}

}

int bsrch(struct student *pname[],int n,char *name)

{

int lower=0,upper=n-1,mid;

if(strcmp(name,pname[lower]->name)==0) return lower;

else if(strcmp(name,pname[upper]->name)==0) return upper;

else

while(lower<=upper)

{

mid=(lower+upper)/2;

if(strcmp(name,pname[mid]->name)==0)

return mid;

else if(strcmp(name,pname[mid]->name)>0)

lower=mid+1;

else

upper=mid-1;

}

return -1;

}

/* 按姓名递增冒泡排序(应用指针数组) */

void bsort(struct student *pname[],int n)

{

struct student *temp;

int i,j;

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

for(j=0;j<n-i-1;j++)

if(strcmp(pname[j]->name,pname[j+1]->name)>0)

{

temp=pname[j];

pname[j]=pname[j+1];

pname[j+1]=temp;

}

}

/* 按总分名次查找的学生信息和平均分数 */

void printf_ptscore(struct student *ptscore[],int n,int inth)

{

printf("请输入要查找总分名次:");

scanf("%d",&inth);

inth--;

if(inth>n)

{

printf("未找到总分名次为%5d的学生",inth);

}

else

printf("已找到总分名次为%5d的学生\n学号:%-8s\n姓名:%-8s\n性别:%-2s\n%4d年%2d月%2d日\n数学:%4d\n英语:%4d\nc:%4d\n总分%5d\n平均分数为:%4d",inth+1,ptscore[inth]->no,ptscore[inth]->name,ptscore[inth]->sex,ptscore[inth]->birthday.year,ptscore[inth]->birthday.month,ptscore[inth]->birthday.day,ptscore[inth]->score[0],ptscore[inth]->score[1],ptscore[inth]->score[2],ptscore[inth]->score[3],ptscore[inth]->score[3]/3);

}

/*显示姓名排序后的学生信息*/

void printsi_p1(struct student *parray[],int n)

{

int i,k=0;

printf(" 按姓名排序后的学生信息\n\n");

printf("学号 姓名 性别 年 月 日 数学 英语 C 总分\n");

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

printf("=====================================================\n");

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

{

printf("%-8s%-8s%-2s%4d %2d %2d %4d %4d %4d %5d\n",

parray[i]->no,parray[i]->name,parray[i]->sex,

parray[i]->birthday.year,parray[i]->birthday.month,parray[i]->birthday.day,

parray[i]->score[0],parray[i]->score[1],parray[i]->score[2],parray[i]->score[3]);

k++;

if(k%20==0)

scanf("%*c");

}

}

/* 显示按总分排序后的学生信息 */

void printsi_p2(struct student *ptscore[],int n)

{

int i,k=0;

printf("\n\n");

printf(" 按总分排序后的学生信息表\n");

printf(" ==================\n\n");

printf("┏━━━━┳━━━━┳━━━┳━━━━━━┳━━━┳━━━┳━━━┳━━━┓\n");

printf("┃学号 ┃姓名 ┃ 性别 ┃ 年 月 日 ┃ 数学 ┃ 英语 ┃ C ┃ 总分 ┃\n");

printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");

printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");

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

{

printf("┃%-8s┃%-8s┃ %-2s ┃ %4d %2d %2d ┃ %4d ┃ %4d ┃ %4d ┃ %4d ┃\n",ptscore[i]->no,ptscore[i]->name,ptscore[i]->sex,ptscore[i]->birthday.year,ptscore[i]->birthday.month,ptscore[i]->birthday.day,ptscore[i]->score[0],ptscore[i]->score[1],ptscore[i]->score[2],ptscore[i]->score[3]);

if(i==n-1)

printf("┗━━━━┻━━━━┻━━━┻━━━━━━┻━━━┻━━━┻━━━┻━━━┛\n");

else

printf("┣━━━━╋━━━━╋━━━╋━━━━━━╋━━━╋━━━╋━━━╋━━━┫\n");

k++;

if(k%20==0)

scanf("%*c");

}

}
#include<stdio.h>

#include<stdlib.h>

#include<string.h>
#define N 35
void main()

{

static struct student stud[N];

struct student *pstud[N];

struct student *pname[N];

struct student *ptscore[N];

int code,inth=0;

int n=0,i;

readsi(stud,&n);

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

pstud[i]=&stud[i];

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

pname[i]=&stud[i];

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

ptscore[i]=&stud[i];

bsort(pname,n);

ssort(ptscore,n);

printf("\n 学生信息:\n");

printsi(stud,n);

printf("\n 按<Enter>,进入菜单:\n");

scanf("%*c");

while(1)

{

code=menu();

switch(code)

{

case 0: /* 退出 */

exit(1);

case 1: /* 显示学生信息 */

printsi(stud,n);

scanf("%*2c");break;

case 2: /* 显示按姓名排序后的学生信息 */

printsi_p1(pname,n);

scanf("%*2c");break;

case 3: /* 显示按总分排序后的学生信息 */

printsi_p2(ptscore,n);

scanf("%*2c");break;

case 4: /* 按学号查找学生信息和平均分数 */

ssrch_no(pstud,n);

scanf("%*2c");break;

case 5: /* 按姓名查找学生信息和平均分数 */

bsrch_name(pname,n);

scanf("%*2c");break;

case 6: /* 查各门课的平均分数 */

find_ave(stud,n);

scanf("%*2c");break;

case 7: /* 查男女人数 */

find_pnum(stud,n);

scanf("%*2c");break;

case 8: /* 显示学生信息表 */

printtable(stud,n);

scanf("%*2c");break;

}

}

}

Ⅳ 怎样用C语言写学生成绩管理系统

程序如下: #include<stdio.h>
void main()
{
float student[100][7];
//student[][0]存放学号,student[][1]到student[][4]存放四门成绩,
//student[][5]存放总分,student[][6]存放平均分,student[][7]存放排名
int n,i,j,k,p,t,count,flag;
int a[100],b[100],c[100];
//a[]存放排序后的下标,b[]存放总分(备份),c[]存放排名的数据
printf("输入学生的个数:\n");
scanf("%d",&n);
for(i=0;i<=n-1;i++)
{
printf("输入第%d个学生的学号:",i+1);
scanf("%f",&student[i][0]);
for(j=0,student[i][5]=0;j<=3;j++)
{
printf("输入第%d个学生的第%d门成绩:",i+1,j+1);
scanf("%f",&student[i][j+1]);
student[i][5]+=student[i][j+1]; //计算总分
}
b[i]=student[i][5]; //把总分再赋给b[]数组,以后排序用
student[i][6]=student[i][5]/4; //计算平均分
}

for(i=0;i<=n-2;i++) //对数组b[](即总分)进行排序
for(j=0;j<=n-2-i;j++)
{
if(b[j]<b[j+1])
{
t=b[j];
b[j]=b[j+1];
b[j+1]=t;
}
}
for(i=0,k=0;i<=n-1;i++)//用数组a[]取得排序后总分的下标
{
for(j=0,flag=0;j<=n-1;j++)
{
if(b[i]==student[j][5])
{
if(0==k) //如果数组a[]中有零个元素,就把j直接赋给a[]
{
a[k]=j;
k++;
flag=1;
}
else //如果数组a[]中有元素了,则判断
{
for(p=0;p<=k-1;p++)
if(a[p]!=j)
{
a[k]=j;
k++;
flag=1;
break;
}
}
}
if(1==flag)
break;
}
}
for(count=1,i=0;i<=n-1;i++) //对c[](排名)进行处理
{
if(b[i]==b[i+1])
{
c[i]=count;
}
else
if(b[i]>b[i+1])
{
c[i]=count;
count++;
}
}
printf("\n以下是统计结果:\n");
printf("学号 s[1] s[2] s[3] s[4] 总分 平均分 排名\n");
for(i=0;i<=n-1;i++)
{
printf("%.0f\t%.0f\t%.0f\t%.0f\t%.0f\t%.0f\t%f\t%d\n",student[a[i]][0],student[a[i]][1],student[a[i]][2],student[a[i]][3],student[a[i]][4],student[a[i]][5],student[a[i]][6],c[i]);
}
} 有疑问提出

Ⅵ C语言 学生成绩管理系统

我找的一个代码!试一下:

c语言学生成绩管理系统

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int shoudsave=0; /* */
struct student
{
char num[10];/* 学号 */
char name[20];
char sex[4];
int cgrade;
int mgrade;
int egrade;
int totle;
int ave;
char neartime[10];/* 最近更新时间 */
};

typedef struct node
{
struct student data;
struct node *next;
}Node,*Link;

void menu()
{
printf("********************************************************************************");
printf("\t1登记学生资料\t\t\t\t\t2删除学生资料\n");
printf("\t3查询学生资料\t\t\t\t\t4修改学生资料\n");
printf("\t5保存学生资料\t\t\t\t\t0退出系统\n");
printf("********************************************************************************\n");
}

void printstart()
{
printf("-----------------------------------------------------------------------\n");
}
void Wrong()
{
printf("\n=====>提示:输入错误!\n");
}

void Nofind()
{
printf("\n=====>提示:没有找到该学生!\n");
}

void printc() /* 本函数用于输出中文 */
{
printf(" 学号\t 姓名 性别 英语成绩 数学成绩 C语言成绩 总分 平均分\n");
}

void printe(Node *p)/* 本函数用于输出英文 */
{
printf("%-12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p->data.num,p->data.name,p->data.sex,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.ave);
}

Node* Locate(Link l,char findmess[],char nameornum[]) /* 该函数用于定位连表中符合要求的接点,并返回该指针 */
{
Node *r;
if(strcmp(nameornum,"num")==0) /* 按学号查询 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.num,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0) /* 按姓名查询 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.name,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}

void Add(Link l) /* 增加学生 */
{
Node *p,*r,*s;
char num[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /* 将指针置于最末尾 */
while(1)
{
printf("请你输入学号(以'0'返回上一级菜单:)");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!\n",num);
printstart();
printc();
printe(s);
printstart();
printf("\n");
return;
}
s=s->next;
}

p=(Node *)malloc(sizeof(Node));

strcpy(p->data.num,num);
printf("请你输入姓名:");
scanf("%s",p->data.name);
getchar();
printf("请你输入性别:");
scanf("%s",p->data.sex);
getchar();
printf("请你输入c语言成绩:");
scanf("%d",&p->data.cgrade);
getchar();
printf("请你输入数学成绩:");
scanf("%d",&p->data.mgrade);
getchar();
printf("请你输入英语成绩:");
scanf("%d",&p->data.egrade);
getchar();
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle / 3;
/* 信息输入已经完成 */
p->next=NULL;
r->next=p;
r=p;
shoudsave=1;

}
}

void Qur(Link l) /* 查询学生 */
{
int sel;
char findmess[20];
Node *p;

if(!l->next)
{
printf("\n=====>提示:没有资料可以查询!\n");
return;

}
printf("\n=====>1按学号查找\n=====>2按姓名查找\n");
scanf("%d",&sel);
if(sel==1)/* 学号 */
{
printf("请你输入要查找的学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("\t\t\t\t查找结果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else if(sel==2) /* 姓名 */
{
printf("请你输入要查找的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
printf("\t\t\t\t查找结果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else
Wrong();

}

void Del(Link l) /* 删除 */
{
int sel;
Node *p,*r;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:没有资料可以删除!\n");
return;
}
printf("\n=====>1按学号删除\n=====>2按姓名删除\n");
scanf("%d",&sel);
if(sel==1)
{
printf("请你输入要删除的学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:该学生已经成功删除!\n");
shoudsave=1;
}
else
Nofind();
}
else if(sel==2)
{
printf("请你输入要删除的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:该学生已经成功删除!\n");
shoudsave=1;
}
else
Nofind();
}
else
Wrong();
}

void Modify(Link l)
{
Node *p;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:没有资料可以修改!\n");
return;
}
printf("请你输入要修改的学生学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("请你输入新学号(原来是%s):",p->data.num);
scanf("%s",p->data.num);
printf("请你输入新姓名(原来是%s):",p->data.name);
scanf("%s",p->data.name);
getchar();
printf("请你输入新性别(原来是%s):",p->data.sex);
scanf("%s",p->data.sex);
printf("请你输入新的c语言成绩(原来是%d分):",p->data.cgrade);
scanf("%d",&p->data.cgrade);
getchar();
printf("请你输入新的数学成绩(原来是%d分):",p->data.mgrade);
scanf("%d",&p->data.mgrade);
getchar();
printf("请你输入新的英语成绩(原来是%d分):",p->data.egrade);
scanf("%d",&p->data.egrade);
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle/3;
printf("\n=====>提示:资料修改成功!\n");
shoudsave=1;
}
else
Nofind();

}

void Disp(Link l)
{
int count=0;
Node *p;
p=l->next;

if(!p)
{
printf("\n=====>提示:没有资料可以显示!\n");
return;
}
printf("\t\t\t\t显示结果\n");
printstart();
printc();
printf("\n");
while(p)
{
printe(p);
p=p->next;
}
printstart();
printf("\n");
}

void Tongji(Link l)
{
Node *pm,*pe,*pc,*pt,*pa; /* 用于指向分数最高的接点 */
Node *r=l->next;
if(!r)
{
printf("\n=====>提示:没有资料可以统计!\n");
return ;
}
pm=pe=pc=pt=pa=r;
while(r!=NULL)
{
if(r->data.cgrade>=pc->data.cgrade)
pc=r;
if(r->data.mgrade>=pm->data.mgrade)
pm=r;
if(r->data.egrade>=pe->data.egrade)
pe=r;
if(r->data.totle>=pt->data.totle)
pt=r;
if(r->data.ave>=pa->data.ave)
pa=r;

r=r->next;
}
printf("------------------------------统计结果--------------------------------\n");
printf("总分最高者:\t%s %d分\n",pt->data.name,pt->data.totle);
printf("平均分最高者:\t%s %d分\n",pa->data.name,pa->data.ave);

printf("英语最高者:\t%s %d分\n",pe->data.name,pe->data.egrade);
printf("数学最高者:\t%s %d分\n",pm->data.name,pm->data.mgrade);
printf("c语言最高者:\t%s %d分\n",pc->data.name,pc->data.cgrade);
printstart();
}

void Sort(Link l)
{
Link ll;
Node *p,*rr,*s;

ll=(Link)malloc(sizeof(Node)); /* 用于做新的连表 */
ll->next=NULL;

if(l->next==NULL)
{
printf("\n=====>提示:没有资料可以排序!\n");
return ;
}
p=l->next;
while(p)
{
s=(Node*)malloc(sizeof(Node)); /* 新建接点用于保存信息 */
s->data=p->data;
s->next=NULL;

rr=ll;
while(rr->next!=NULL && rr->next->data.totle>=p->data.totle)
rr=rr->next;
if(rr->next==NULL)
rr->next=s;
else
{
s->next=rr->next;
rr->next=s;
}
p=p->next;
}
free(l);
l->next=ll->next;
printf("\n=====>提示:排序已经完成!\n");
}

void Save(Link l)
{
FILE* fp;
Node *p;
int flag=1,count=0;
fp=fopen("c:\\student","wb");
if(fp==NULL)
{
printf("\n=====>提示:重新打开文件时发生错误!\n");
exit(1);
}
p=l->next;

while(p)
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("\n=====>提示:文件保存成功.(有%d条记录已经保存.)\n",count);
shoudsave=0;
}
fclose(fp);
}

void main()
{
Link l;/* 连表 */
FILE *fp; /* 文件指针 */
int sel;
char ch;
char jian;

int count=0;
Node *p,*r;
printf("\t\t\t\t学生成绩管理系统\n\t\t\t\t-------福建农业职业学院计应0501 黄欢(32号)\n");
l=(Node*)malloc(sizeof(Node));
l->next=NULL;
r=l;

fp=fopen("C:\\student","rb");
if(fp==NULL)
{
printf("\n=====>提示:文件还不存在,是否创建?(y/n)\n");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("C:\\student","wb");
else
exit(0);
}
printf("\n=====>提示:文件已经打开,正在导入记录......\n");

while(!feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp)) /* 将文件的内容放入接点中 */
{
p->next=NULL;
r->next=p;
r=p; /* 将该接点挂入连中 */
count++;
}
}

fclose(fp); /* 关闭文件 */
printf("\n=====>提示:记录导入完毕,共导入%d条记录.\n",count);

while(1)
{
menu();
printf("请你选择操作:");
scanf("%d",&sel);

if(sel==0)
{
if(shoudsave==1)
{ getchar();
printf("\n=====>提示:资料已经改动,是否将改动保存到文件中(y/n)?\n");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(l);
}
printf("\n=====>提示:你已经退出系统,再见!\n");
break;
}
switch(sel)
{
case 1:Add(l);break; /* 增加学生 */
case 2:Del(l);break;/* 删除学生 */
case 3:Qur(l);break;/* 查询学生 */
case 4:Modify(l);break;/* 修改学生 */
case 5:Save(l);break;/* 保存学生 */
case 9:printf("\t\t\t==========帮助信息==========\n");break;
default: Wrong();getchar();break;
}
}
}
/* */

/*
学生成绩管理程序
编制一个统计学生考试分数的管理程序。
设学生成绩已以一个学生一个记录的形式存储在文件中,
每位学生记录包含的信息有:姓名,学号和各门功课的成绩。
程序具有以下几项功能:求出各门课程的总分,平均分,按姓名,
按学号寻找其记录并显示,浏览全部学生成绩和按总分由高到低显示学生信息等。
*/

#include <stdio.h>
#define SWN 3 /* 课程数 */
#define NAMELEN 20 /* 姓名最大字符数 */
#define CODELEN 10 /* 学号最大字符数 */
#define FNAMELEN 80 /* 文件名最大字符数 */
#define BUFLEN 80 /* 缓冲区最大字符数 */
/* 课程名称表 */
char schoolwork[SWN][NAMELEN+1] = {"Chinese","Mathematic","English"};
struct record
{
char name[NAMELEN+1]; /* 姓名 */
char code[CODELEN+1]; /* 学号 */
int marks[SWN]; /* 各课程成绩 */
int total; /* 总分 */
}stu;

struct node
{
char name[NAMELEN+1]; /* 姓名 */
char code[CODELEN+1]; /* 学号 */
int marks[SWN]; /* 各课程成绩 */
int total; /* 总分 */
struct node *next; /* 后续表元指针 */
}*head; /* 链表首指针 */

int total[SWN]; /* 各课程总分 */
FILE *stfpt; /* 文件指针 */
char stuf[FNAMELEN]; /* 文件名 */

/* 从指定文件读入一个记录 */
int readrecord(FILE *fpt,struct record *rpt)
{
char buf[BUFLEN];
int i;
if(fscanf(fpt,"%s",buf)!=1)
return 0; /* 文件结束 */
strncpy(rpt->name,buf,NAMELEN);
fscanf(fpt,"%s",buf);
strncpy(rpt->code,buf,CODELEN);
for(i=0;i<SWN;i++)
fscanf(fpt,"%d",&rpt->marks[i]);
for(rpt->total=0,i=0;i<SWN;i++)
rpt->total+=rpt->marks[i];
return 1;
}
/* 对指定文件写入一个记录 */
writerecord(FILE *fpt,struct record *rpt)
{
int i;
fprintf(fpt,"%s\n",rpt->name);
fprintf(fpt,"%s\n",rpt->code);
for(i=0;i<SWN;i++)
fprintf(fpt,"%d\n",rpt->marks[i]);
return ;
}

/* 显示学生记录 */
displaystu(struct record *rpt)
{
int i;
printf("\nName : %s\n",rpt->name);
printf("Code : %s\n",rpt->code);
printf("Marks :\n");
for(i=0;i<SWN;i++)
printf(" %-15s : %4d\n",schoolwork[i],rpt->marks[i]);
printf("Total : %4d\n",rpt->total);
}

/* 计算各单科总分 */
int totalmark(char *fname)
{
FILE *fp;
struct record s;
int count,i;
if((fp=fopen(fname,"r"))==NULL)
{
printf("Can't open file %s.\n",fname);
return 0;
}
for(i=0;i<SWN;i++)
total[i]=0;
count=0;
while(readrecord(fp,&s)!=0)
{
for(i=0;i<SWN;i++)
total[i]+=s.marks[i];
count++;
}
fclose(fp);
return count; /* 返回记录数 */
}

/* 列表显示学生信息 */
void liststu(char *fname)
{
FILE *fp;
struct record s;
if((fp=fopen(fname,"r"))==NULL)
{
printf("Can't open file %s.\n",fname);
return ;
}
while(readrecord(fp,&s)!=0)
{
displaystu(&s);
printf("\n Press ENTER to continue...\n");
while(getchar()!='\n');
}
fclose(fp);
return;
}

/* 构造链表 */
struct node *makelist(char *fname)
{
FILE *fp;
struct record s;
struct node *p,*u,*v,*h;
int i;
if((fp=fopen(fname,"r"))==NULL)
{
printf("Can't open file %s.\n",fname);
return NULL;
}
h=NULL;
p=(struct node *)malloc(sizeof(struct node));
while(readrecord(fp,(struct record *)p)!=0)
{
v=h;
while(v&&p->total<=v->total)
{
u=v;
v=v->next;
}
if(v==h)
h=p;
else
u->next=p;
p->next=v;
p=(struct node *)malloc(sizeof(struct node));
}
free(p);
fclose(fp);
return h;
}

/* 顺序显示链表各表元 */
void displaylist(struct node *h)
{
while(h!=NULL)
{
displaystu((struct record *)h);
printf("\n Press ENTER to continue...\n");
while(getchar()!='\n');
h=h->next;
}
return;
}
/* 按学生姓名查找学生记录 */
int retrievebyn(char *fname, char *key)
{
FILE *fp;
int c;
struct record s;
if((fp=fopen(fname,"r"))==NULL)
{
printf("Can't open file %s.\n",fname);
return 0;
}
c=0;
while(readrecord(fp,&s)!=0)
{
if(strcmp(s.name,key)==0)
{
displaystu(&s);
c++;
}
}
fclose(fp);
if(c==0)
printf("The student %s is not in the file %s.\n",key,fname);
return 1;
}

/* 按学生学号查找学生记录 */
int retrievebyc(char *fname, char *key)
{
FILE *fp;
int c;
struct record s;
if((fp=fopen(fname,"r"))==NULL)
{
printf("Can't open file %s.\n",fname);
return 0;
}
c=0;
while(readrecord(fp,&s)!=0)
{
if(strcmp(s.code,key)==0)
{
displaystu(&s);
c++;
break;
}
}
fclose(fp);
if(c==0)
printf("The student %s is not in the file %s.\n",key,fname);
return 1;
}

main()
{
int i,j,n;
char c;
char buf[BUFLEN];
FILE *fp;
struct record s;
clrscr();
printf("Please input the students marks record file's name: ");
scanf("%s",stuf);
if((fp=fopen(stuf,"r"))==NULL)
{
printf("The file %s doesn't exit, do you want to creat it? (Y/N) ",stuf);
getchar();
c=getchar();
if(c=='Y'||c=='y')
{
fp=fopen(stuf,"w");
printf("Please input the record number you want to write to the file: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Input the student's name: ");
scanf("%s",&s.name);
printf("Input the student's code: ");
scanf("%s",&s.code);
for(j=0;j<SWN;j++)
{
printf("Input the %s mark: ",schoolwork[j]);
scanf("%d",&s.marks[j]);
}
writerecord(fp,&s);
}
fclose(fp);
}
}
fclose(fp);
getchar();
/*clrscr();*/
puts("Now you can input a command to manage the records.");
puts("m : mean of the marks.");
puts("t : total of the marks.");
puts("n : search record by student's name.");
puts("c : search record by student's code.");
puts("l : list all the records.");
puts("s : sort and list the records by the total.");
puts("q : quit!");
while(1)
{
puts("Please input command:");
scanf(" %c",&c); /* 输入选择命令 */
if(c=='q'||c=='Q')
{
puts("\n Thank you for your using.");
break; /* q,结束程序运行 */
}
switch(c)
{
case 'm': /* 计算平均分 */
case 'M':
if((n=totalmark(stuf))==0)
{
puts("Error!");
break;
}
printf("\n");
for(i=0;i<SWN;i++)
printf("%-15s's average is: %.2f.\n",schoolwork[i],(float)total[i]/n);
break;
case 't': /* 计算总分 */
case 'T':
if((n=totalmark(stuf))==0)
{
puts("Error!");
break;
}
printf("\n");
for(i=0;i<SWN;i++)
printf("%-15s's total mark is: %d.\n",schoolwork[i],total[i]);
break;
case 'n': /* 按学生的姓名寻找记录 */
case 'N':
printf("Please input the student's name you want to search: ");
scanf("%s",buf);
retrievebyn(stuf,buf);
break;
case 'c': /* 按学生的学号寻找记录 */
case 'C':
printf("Please input the student's code you want to search: ");
scanf("%s",buf);
retrievebyc(stuf,buf);
break;
case 'l': /* 列出所有学生记录 */
case 'L':
liststu(stuf);
break;
case 's': /* 按总分从高到低排列显示 */
case 'S':
if((head=makelist(stuf))!=NULL)
displaylist(head);
break;
default: break;
}
}
}

Ⅶ C语言程序设计学生成绩管理系统

给你把核心大约写一下吧你再具体修改一下
sum(中间成绩求和数据)=o
for(i=0;i<5;i++)
{sum=科目数组名[i][0]+sum<br>}
sum/5=平均成绩
sum1=0
for(i=0;i<5;i++)
{
for(j=0;j<50;j++)
{科目数组名[i][j]+sum1=sum1;
}
sum1/50=平均成绩
输出
}
至于找出学生和课程,你找出2维数组里的最大值,也是for循环也能完成,然后看他所在的行列,就能得出相应的学生和课程了、

热点内容
2016空间加密怎么进 发布:2025-02-07 01:41:30 浏览:382
网络数据服务器是什么 发布:2025-02-07 01:23:42 浏览:473
多服务器ip白名单 发布:2025-02-07 01:23:41 浏览:372
优酷上传视频的格式 发布:2025-02-07 01:18:51 浏览:880
租虚拟服务器有什么用 发布:2025-02-07 01:17:55 浏览:4
视频脚本策划 发布:2025-02-07 01:15:37 浏览:566
外文免费数据库 发布:2025-02-07 01:12:26 浏览:194
第一滴血ftp 发布:2025-02-07 01:12:24 浏览:424
仿草料源码 发布:2025-02-07 01:08:31 浏览:532
python多线程map 发布:2025-02-07 01:04:37 浏览:463