用C语言学生成绩数据库排序功能设计,[c语言学生成绩管理系统]C语言学生成绩管理系统实验报告...

这篇博客介绍了一个使用C语言编写的学生成绩管理系统,包括成绩录入、排序和打印功能。系统允许用户录入最多30名学生的数学、英语和物理成绩,然后根据总分进行排序,并打印出包含名次、学生编号、各科分数和总分的名次表。此外,还展示了程序的流程图和部分源代码。
摘要由CSDN通过智能技术生成

篇一 : C语言学生成绩管理系统实验报告

278860_0.jpg

实 验 四:结构体(6学时) 实验目的:

1.更加灵活的使用数组作为函数参数;

2.初步掌握开发一个小型实用系统的基本方法;

3.初步掌握书写程序设计开发文档的能力。(]

实验内容:

程序一:学生成绩管理系统

某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。

(1)计算每个学生的总分;

(2)按总分成绩由高到低排出成绩的名次;

(3)打印出名次表,包括名次、学生编号、各科分数、总分;

要求程序运行后先打印出一个菜单,提示用户选择:成绩录入、成绩排序、打印(成绩查找等),在选择某项功能后执行相应的操作。 小组分工情况

一 需求分析

I设计一个学生成绩管理系统至少具有以下功能:

(1)菜单功能:采用文本菜单界面。

(2)计算每个学生总分功能:可以显示出通讯录里的姓名、电话号码等详细信息。

(3)成绩排序功能:按总分成绩由高到低排出成绩的名次。

(4)打印名次表功能:打印出名次表,包括名次、学生编号、各科分数、总分。

II数据库结构

c语言学生成绩管理系统 C语言学生成绩管理系统实验报告

278860_1.jpg

struct student{ int num; int mt; int en; int ph;

int sum;}stu[30];

二 总体设计(visio)

框架结构图(系统的功能结构图)

c语言学生成绩管理系统 C语言学生成绩管理系统实验报告

三、详细设计

(流程图!!!)

四、程序源代码

#include

#include

int n; int a[30][6];

int luru()

{int i=0,bianhao,MT,EN,PH;

printf("please input bianhao MT EN PH\n");

scanf("%d%d%d%d",&bianhao,&MT,&EN,&PH); while(bianhao!=-1)

{a[i][0]=bianhao;

a[i][1]=MT;

a[i][2]=EN;

a[i][3]=PH;

a[i][4]=MT+EN+PH;

scanf("%d%d%d%d",&bianhao,&MT,&EN,&PH); i++;

}

n=i;

}

paixu( )

{ int i,j,t,k;

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

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

if(a[i][4]

for(k=0;k<6;k++)

{t=a[i][k];a[i][k]=a[j][k];a[j][k]=t;}

shuchu(a);

}

shuchu( )

{int i,j;

printf("\t\tbianhao MT EN PH zf mingci\n"); for(i=0;i

{a[i][5]=i+1;

printf("\t\t");

for(j=0;j<6;j++)

printf("%5d",a[i][j]);

printf("\n");

}

}

chazhao( )

c语言学生成绩管理系统 C语言学生成绩管理系统实验报告

{int i,j,bianhao;

printf("please bianhao:");

scanf("%d",&bianhao);

printf("\t\tbianhao MT EN PH zf mingci\n"); printf("\t\t");

for(i=0;i

{ if(a[i][0]==bianhao)

{ for(j=0;j<6;j++)

printf("%5d",a[i][j]);

break;

}

}

printf("\n");

}

void main()

{int k=1,*p;

system("cls");

while(k!=-1)

{ printf("\n\n\n");

printf("\t\tStudent achievement management system\n"); printf("\n");

printf("\t\t*************************************\n"); printf("\t\t\t1:chengji luru\n");

printf("\t\t\t2:chengji paixu\n");

printf("\t\t\t3:chengji chazhao\n");

printf("\t\t\t0:tuichu\n");

printf("\t\t*************************************\n"); printf("please select:");

scanf("%d",&k);

switch(k)

{case 1:luru();break;

case 2:paixu();break;

case 3:chazhao();break;

case 0:return;

}

}

}

/*某班期末考试科目为数学(MT)、英

语(EN)和物理(PH),有最多不超过30人参加考试。(]

(1)计算每个学生的总分;

(2)按总分成绩由高到低排出成绩的名次;

(3)打印出名次表,包括名次、学生编号、各科分数、总分;

c语言学生成绩管理系统 C语言学生成绩管理系统实验报告

要求程序运行后先打印出一个菜单,提示用户选择:成绩录入、成绩排序、成绩查找,在选择某项功能后执行相应的操作。()

*/

#include

#include

typedef struct student

{int num;

int mt;

int en;

int ph;

int sum;

}st; st stu[30];int n;

void main()

{ int x;

void zongfen(st stu[],int n);

void paixu(st stu[] ,int n);

void dayin(st stu[],int n);

void input();

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

printf("1.input\n");

printf("2. zongfen\n");

printf("3 paixu\n");

printf("4.dayin\n");

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

printf("please select:(1--4)");

scanf("%d",&x);

while(x>0){

switch(x)

{case 1: input(); break;

case 2: zongfen(stu,n);break;

case 3: paixu(stu,n); break;

case 4:dayin(stu,n); break;

}

printf("please select:(1--4)");

scanf("%d",&x);

}

}

void input(){

int i;

printf("请输入学生人数:(n<=30)\n");

scanf("%d",&n);

c语言学生成绩管理系统 C语言学生成绩管理系统实验报告

for(i=0;i

{printf("请输入。(]。。成绩");

scanf("%d%d%d%d",&stu[i].num,&stu[i].mt,&stu[i].en,&stu[i].ph);

}

/*for(i=0;i

{stu[i].sum=stu[i].mt+stu[i].en+stu[i].ph;

printf("学生%d的总成绩为%d\n",stu[i].num,stu[i].sum);}*/

}

void zongfen(st stu[],int n)

{int i;

for(i=0;i

{stu[i].sum=stu[i].mt+stu[i].en+stu[i].ph;

printf("学生%d的总成绩为%d\n",stu[i].num,stu[i].sum);}

}

void paixu(st stu[] ,int n)

{ int i,j; st temp;

for(i=0;i

for(j=0;j

if(stu[i].sum>stu[i+1].sum)

{temp=stu[i];

stu[i]=stu[i+1];

stu[i+1]=temp;

}

for(i=0;i

printf("%d,%d,%d,%d,%d\n",stu[i].num,stu[i].sum,stu[i].mt,stu[i].en,stu[i].ph);

}

void dayin(st stu[],int n)

{void paixu(st stu[] ,int n);

int i;

paixu(stu,n);

for(i=0;i

printf("第%d名,%d,%d,%d,%d,%d\n",i+1,stu[i].num,stu[i].sum,stu[i].mt,stu[i].en,stu[i].ph);

}

/*某班期末考试科目为数学(MT)、英

c语言学生成绩管理系统 C语言学生成绩管理系统实验报告

语(EN)和物理(PH),有最多不超过30人参加考试。(]

(1)计算每个学生的总分;

(2)按总分成绩由高到低排出成绩的名次;

(3)打印出名次表,包括名次、学生编号、各科分数、总分;

要求程序运行后先打印出一个菜单,提示用户选择:成绩录入、成绩排序、成绩查找,在选择某项功能后执行相应的操作。

*/

#include

#include

typedef struct student

{int num;

int mt;

int en;

int ph;

int sum;

}st; st stu[30];int n;

void main()

{ int x;

void zongfen(st stu[],int n);

void paixu(st stu[] ,int n);

void dayin(st stu[],int n);

void input();

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

printf("1.input\n");

printf("2. zongfen\n");

printf("3 paixu\n");

printf("4.dayin\n");

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

printf("please select:(1--4)");

scanf("%d",&x);

while(x>0){

switch(x)

{case 1: input(); break;

case 2: zongfen(stu,n);break;

case 3: paixu(stu,n); break;

case 4:dayin(stu,n); break;

}

printf("please select:(1--4)");

scanf("%d",&x);

}

}

c语言学生成绩管理系统 C语言学生成绩管理系统实验报告

void input(){

int i;

printf("请输入学生人数:(n<=30)\n");

scanf("%d",&n);

for(i=0;i

{printf("请输入。[)。。成绩");

scanf("%d%d%d%d",&stu[i].num,&stu[i].mt,&stu[i].en,&stu[i].ph);

}

/*for(i=0;i

{stu[i].sum=stu[i].mt+stu[i].en+stu[i].ph;

printf("学生%d的总成绩为%d\n",stu[i].num,stu[i].sum);}*/

}

void zongfen(st stu[],int n)

{int i;

for(i=0;i

{stu[i].sum=stu[i].mt+stu[i].en+stu[i].ph;

printf("学生%d的总成绩为%d\n",stu[i].num,stu[i].sum);}

}

void paixu(st stu[] ,int n)

{ int i,j; st temp;

for(i=0;i

for(j=0;j

if(stu[i].sum>stu[i+1].sum)

{temp=stu[i];

stu[i]=stu[i+1];

stu[i+1]=temp;

}

for(i=0;i

printf("%d,%d,%d,%d,%d\n",stu[i].num,stu[i].sum,stu[i].mt,stu[i].en,stu[i].ph);

}

void dayin(st stu[],int n)

{void paixu(st stu[] ,int n);

int i;

paixu(stu,n);

for(i=0;i

printf("第%d名,%d,%d,%d,%d,%d\n",i+1,stu[i].num,stu[i].sum,stu[i].mt,stu[i].en,stu[i].ph);

篇二 : C语言学生成绩管理系统源代码

程序代码:#include#include#include#define SIZE 3 /*定义常量SIZE便于以后的修改*/struct student /*定义一个结构体数组存放学生的信息*/{ int number; /*学号*/ char name[20];/*名字*/ char xueyuan[20];/*学院*/ int cla;/*班级*/ int score[3];/*分数*/ int sum;/*总分*/ int average;/*平均分*/}stu[SIZE]; void menu();/*调用菜单函数*/void write();/*读入信息*/void save(int x);/*保存stud.dat文件函数*/void SaveOneStudent(int i);/*保存一个学生信息*/void SaveAllStudent(int n);/*保存全部学生信息*/void inturn (struct student c[]);/*用于对学生的信息按学号排序的函数*/void save2();/*将排序后的信息存入student.dat文件中*/int AddStudent(int n);/*增加学生信息*/void InputOnestudent(int i);/*输入一个同学信息*/int DelStudent(int n);/*删除学生信息*/void ModifyStudent(int n);/*修改学生信息*/void OutputOneStudent(int i);/*查询一个学生信息*/void SearchMenu(int n);/*查询学生信息操作*/void SearchNumber(int n);/*按学号查询学生信息*/void SearchName(int n);/*按姓名查询学生信息*/void SearchXueyuan(int n);/*按所在学院查询学生信息*/void SearchCla(int n);/*按所在班级查询学生信息*/void tongji();/*学生信息统计操作*/void tongji2();/*统计不及格率操作*/void zfsc();/*总分排序操作*/void avecz();/*按平均分统计人数操作*/void avecz();/*按平均分统计人数操作*/void search();/*查找最高成绩操作*/void tongji2();/*统计不及格率操作*/void read();/*读取student.dat文件文件中学生的信息*/ /*主函数************************************************************************************/void main(){ int n=SIZE; int choice;/*用户选择变量*/ printf("*******************************************************************************\n"); printf("* *\n"); printf("* Hwadee &学生成绩文件管理& Hwadee *\n"); printf("* *\n"); printf("*******************************************************************************\n\n\n"); printf("******************************●●欢迎使用●●*********************************"); while (1) { menu();/*调用菜单函数形成操作界面*/ printf("请选择:"); scanf("%d", &choice); if ( choice==0 ) { printf("\t\t\t\t谢谢使用!!!"); break; } switch(choice) /*多重选择实现功能不同的功能*/ { case 1: write(); inturn(stu); save(SIZE); break; case 2: AddStudent(n); break; case 3: DelStudent(n); break; case 4: ModifyStudent(n); break; case 5: SearchMenu(n); break; case 6: tongji(); break; case 0: printf("\n谢谢使用!再见!\n"); default: printf("\n按键错误!请重新选择!\n"); }/*结束switch*/ }/*结束while*/} 部分程序清单/*菜单函数*************************************************************************************/void menu(){ printf("************请输入所需操作***********\n");/*选择功能菜单*/ printf("*************************************\n"); printf("1.学生成绩写入及排序\n"); printf("2.增加学生信息\n"); printf("3.删除学生信息\n"); printf("4.修改学生信息\n"); printf("5.查询学生信息\n"); printf("6.学生成绩统计操作\n"); printf("0.退出系统\n"); printf("**************************************\n");} /*写入函数*************************************************************************************/void write(){ int i;/*计数变量*/ for(i=0;im[j].number) { temp=m[i]; m[i]=m[j]; m[j]=temp; } } printf("\n排序后的学生信息:\n\n"); for (i=0;i0&&x<6) { switch(x) { case 1: zfsc();break;/*选择按总分排序操作*/ case 2: avecz();break;/*选择按平均分统计人数操作*/ case 3: search();break;/*选择按查找最高成绩操作*/ case 4: tongji();break;/*选择按统计部及格率操作*/ case 0: printf("谢谢使用!再见!\n"); return;/*选择退出操作*/ default: printf("输入错误!请重新输入\n");/*提示错误信息*/ } }} /*总分排序操作*************************************************************************************/void zfsc(){ FILE *wj,*fp; int i,j; struct student temp; if((fp=fopen("student.dat","wb"))==NULL) { printf("文件打开失败!\n"); exit(1); } for(i=0;i59&&stu[i].average<70) { m=i;/*找到平均分69~69学生,并用m记下其下标*/ OutputOneStudent(m); k++;/*k为平均分60~69分人数*/ } printf(" 平均分60~69分的同学信息输出结束\n"); printf("共%d人\n",k); printf(" **********************************************************"); } printf("平均分70~79分的同学有:\n"); for(i=0;i69&&stu[i].average<80) { m=i;/*找到平均分70~79学生,并用m记下其下标*/ OutputOneStudent(m); k++;/*k为平均分70~79分人数*/ } printf(" 平均分70~79分的同学信息输出结束\n"); printf("共%d人\n",k); printf(" **********************************************************"); } printf("平均分80~89分的同学有:\n"); for(i=0;i79&&stu[i].average<90) { m=i;/*找到平均分80~89学生,并用m记下其下标*/ OutputOneStudent(m); k++;/*k为平均分80~89分人数*/ } printf(" 平均分80~89分的同学信息输出结束\n"); printf("共%d人\n",k); printf(" **********************************************************"); } printf("平均分90~100分的同学有:\n"); for(i=0;i89&&stu[i].average<=100) { m=i;/*找到平均分90~100学生,并用m记下其下标*/ OutputOneStudent(m); k++;/*k为平均分90~100分人数*/ } printf(" 平均分90~100分的同学信息输出结束\n"); printf("共%d人\n",k); printf(" **********************************************************"); }} /*查找最高成绩操作****************************************************************************/void search(){ int i=0,x,k=0; printf("********************输入查找选项**********************\n");/*选择功能菜单*/ printf(" 查找高数成绩最高学生请按:1\n"); printf(" 查找英语成绩最高学生请按:2\n"); printf(" 查找C语言成绩最高学生请按:3\n"); scanf("%d",&x);/*用户选择变量*/ if(x==1) { for(i=0;istu[k].score[0]) i=k; } printf("高数成绩最高学生信息如下:\n"); OutputOneStudent(k); printf(" 输出结束\n"); printf(" **********************************************************"); } if(x==2) { for(i=0;istu[k].score[1]) i=k; } printf("英语成绩最高学生信息如下:\n"); OutputOneStudent(k); printf(" 输出结束\n"); printf(" **********************************************************"); } if(x==3) { for(i=0;istu[k].score[2]) i=k; } printf("C语言成绩最高学生信息如下:\n"); OutputOneStudent(k); printf(" 输出结束\n"); printf(" **********************************************************"); }} /*统计不及格率操作*****************************************************************************/void tongji2(){ int x,i,k; printf("********************输入统计选项**********************\n"); /*选择功能菜单*/ printf("统计高数成绩不及格率请按:1\n"); printf("统计英语成绩不及格率请按:2\n"); printf("统计C语言成绩不及格率请按:3\n"); scanf("%d",&x);/*用户选择变量 */ if(x==1) { for(i=0;i

扩展:c语言管理系统源代码 / 学生成绩管理系统代码 /

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值