C语言课程设计学生成绩管理系统完美运行代码.docx

上传人:b****6 文档编号:3640303 上传时间:2022-11-24 格式:DOCX 页数:21 大小:18.91KB
下载 相关 举报
C语言课程设计学生成绩管理系统完美运行代码.docx_第1页
第1页 / 共21页
C语言课程设计学生成绩管理系统完美运行代码.docx_第2页
第2页 / 共21页
C语言课程设计学生成绩管理系统完美运行代码.docx_第3页
第3页 / 共21页
C语言课程设计学生成绩管理系统完美运行代码.docx_第4页
第4页 / 共21页
C语言课程设计学生成绩管理系统完美运行代码.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C语言课程设计学生成绩管理系统完美运行代码.docx

《C语言课程设计学生成绩管理系统完美运行代码.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生成绩管理系统完美运行代码.docx(21页珍藏版)》请在冰豆网上搜索。

C语言课程设计学生成绩管理系统完美运行代码.docx

C语言课程设计学生成绩管理系统完美运行代码

//所包含的头文件

#include

#include

#include//标准库函数

#include//字符操作函数

#include//控制台输入输出函数

//定义系统中所需要用到的结构体类型

struct_birthday

{

intyear;

intmonth;

intday;

};

struct_score

{

floatenglish;

floatmath;

floatmcu;

floattotal;

};

typedefstruct_birthdayBirthday;

typedefstruct_scoreScore;

struct_student

{

charno[15];

charname[20];

charsex[10];

Birthdaybirth;

Scoresco;

};

typedefstruct_studentStudent;

//函数说明

voidMenu();

voidRun();

voidInti();

voidPrint(Student*p);

voidPrintTablHeader();

voidPrintAll(Student*a,intn);

intSearchByNo(Student*a,intn,charno[]);

voidSearchByname(Student*a,intn,charname[]);

voidSortByTotal(Student*a,intn);

voidSortByMcu(Student*a,intn);

voidSortByMath(Student*a,intn);

voidSortByEnglish(Student*a,intn);

voidSort(Student*a,intn,intcourse);

intDeleteByNo(Student*a,intn,charno[]);

voidsave(Student*a,intn);

voidenglish(Studentstu[],intn);

voidmath(Studentstu[],intn);

voidmcu(Studentstu[],intn);

voidenglishaver(Studentstu[],intn);

voidmathaver(Studentstu[],intn);

voidmcuaver(Studentstu[],intn);

voidtotalaver(Studentstu[],intn);

intload(Studentt[]);

//符号常量和变量说明

#defineN100//学生最大人数

intlength=0;//学生实际人数

intitem;

charch;

#defineENGLISH0//英语课程

#defineMATH1//数学课程

#defineMCU2//计算机课程

#defineTOTAL3//总分

Studentstu[N]=//学生结构体数组,全局变量

{

{"10","王安","男",{1991,2,14},{15,55,31}},

{"11","张羽","女",{1992,9,22},{92,83,58}},

{"12","李明","男",{1992,2,18},{60,65,72}},

{"13","李江","男",{1992,12,14},{100,50,78}},

{"14","李楠","男",{1992,6,29},{90,52,76}},

{"15","张萍","女",{1991,8,9},{57,78,92}},

{"16","李文","女",{1992,10,4},{100,80,60}},

{"17","张雨","女",{1991,12,14},{60,90,80}}

};

//6.2主函数及各功能函数

voidInit()

{

inti;

length=8;

for(i=0;i

{

stu[i].sco.total=stu[i].sco.english+stu[i].sco.math+stu[i].sco.mcu;

}

}

voidMenu()

{

printf("==================欢迎登录学生成绩管理系统==============\n");

printf("************************************\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("*9--保存学生信息文件*\n");

printf("*10--读入学生信息文件*\n");

printf("*11--查询不及格学生信息*\n");

printf("*12--查询平均成绩*\n");

printf("*0--退出*\n");

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

printf("请选择:

");

}

voidPrint(Student*p)

{

printf("%s\t%s\t%s\t%d-%d-%d\t%3.1f\t%3.1f\t%3.1f\t%3.1f",

p->no,p->name,p->sex,

p->birth.year,p->birth.month,p->birth.day,

p->sco.english,p->sco.math,p->sco.mcu,p->sco.total);

}

voidPrintTablHeader()

{

printf("学号\t姓名\t性别\t生日\t\t英语\t数学\t计算机\t总分\n");

}

voidPrintAll(Student*a,intn)

{

inti;

printf("目前学生总人数为:

%d\n",length);

PrintTablHeader();

for(i=0;i

{Print(&a[i]);//调用Printf函数输出第i个学生信息

printf("\n");

}

}

intSearchByNo(Student*a,intn,charno[])//按学号查找学生成绩信息

{

intp=-1;

inti;

for(i=0;i

{

if(strcmp(a[i].no,no)==0)

{

p=i;

break;

}

}

returnp;

}

voidSearchByname(Student*a,intn,charname[])//按姓名查找学生成绩信息

{

inti;

intflag=0;

PrintTablHeader();

for(i=0;i

{

if(strcmp(a[i].name,name)==0)

{

flag=1;

Print(&a[i]);

printf("\n");

}

}

if(flag==0)printf("查询失败!

");

}

voidSortByEnglish(Student*a,intn)//根据英语成绩进行排序

{

inti,j;//循环变量

floatmaxval;//用于临时保存最大值

intmaxpos;//用于临时保存最大值的下标

Studenttemp;//临时变量

//总共需要N-1次选择和交换

for(i=0;i

{

maxval=a[i].sco.english;

maxpos=i;

//在无序区寻找最大值

for(j=i;j

{

if(a[j].sco.english>maxval)

{

maxval=a[j].sco.english;

maxpos=j;

}

}

if(maxpos!

=-1)

{

temp=a[maxpos];

a[maxpos]=a[i];

a[i]=temp;

}

}

}

voidSortByMath(Student*a,intn)//根据数学成绩进行排序

{

inti,j;//循环变量

floatmaxval;//用于临时保存最大值

intmaxpos;//用于临时保存最大值的下标

Studenttemp;//临时变量

//总共需要N-1次选择和交换

for(i=0;i

{

maxval=a[i].sco.math;

maxpos=i;

//在无序区寻找最大值

for(j=i;j

{

if(a[j].sco.math>maxval)

{

maxval=a[j].sco.math;

maxpos=j;

}

}

if(maxpos!

=i)

{

temp=a[maxpos];

a[maxpos]=a[i];

a[i]=temp;

}

}

}

voidSortByMcu(Student*a,intn)//根据计算机成绩进行排序

{

inti,j;//循环变量

floatmaxval;//用于临时保存最大值

intmaxpos;//用于临时保存最大值的下标

Studenttemp;//临时变量

//总共需要N-1次选择和交换

for(i=0;i

{

maxval=a[i].sco.mcu;

maxpos=i;

//在无序区寻找最大值

for(j=i;j

{

if(a[j].sco.mcu>maxval)

{

maxval=a[j].sco.mcu;

maxpos=j;

}

}

if(maxpos!

=-1)

{

temp=a[maxpos];

a[maxpos]=a[i];

a[i]=temp;

}

}

}

voidSortByTotal(Student*a,intn)//根据学生总成绩进行排序

{

inti,j;//循环变量

floatmaxval;//用于临时保存最大值

intmaxpos;//用于临时保存最大值的下标

Studenttemp;//临时变量

//总共需要N-1次选择和交换

for(i=0;i

{

maxval=a[i].sco.total;

maxpos=i;

//在无序区寻找最大值

for(j=i;j

{

if(a[j].sco.total>maxval)

{

maxval=a[j].sco.total;

maxpos=j;

}

}

if(maxpos!

=-1)

{

temp=a[maxpos];

a[maxpos]=a[i];

a[i]=temp;

}

}

}

voidenglish(Studentstu[],intn)//查询英语成绩不及格学生信息

{

inti=0;

for(i=0;i

{

if(stu[i].sco.english<60)

printf("\t学生证号:

%-15s姓名:

%-15s英语分数:

%-15g\n\n",stu[i].no,stu[i].name,stu[i].sco.english);

}

}

voidmath(Studentstu[],intn)//查询数学成绩不及格学生信息

{

inti=0;

for(i=0;i

{

if(stu[i].sco.math<60)

printf("\t学生证号:

%-15s姓名:

%-15s数学分数:

%-15g\n\n",stu[i].no,stu[i].name,stu[i].sco.math);

}

}

voidmcu(Studentstu[],intn)//查询计算机成绩不及格学生信息

{

inti=0;

for(i=0;i

{

if(stu[i].sco.mcu<60)

printf("\t学生证号:

%-15s姓名:

%-15s计算机分数:

%-15g\n\n",stu[i].no,stu[i].name,stu[i].sco.mcu);

}

}

voidSort(Student*a,intn,intcourse)

{

switch(course)

{

caseENGLISH:

SortByEnglish(a,n);

break;

caseMATH:

SortByMath(a,n);

break;

caseMCU:

SortByMcu(a,n);

break;

caseTOTAL:

SortByTotal(a,n);

break;

default:

SortByTotal(a,n);

break;

}

}

/*增加学生信息*/

intAppend(Student*a,intn)

{

intpos;

if(n>=N)

{

returnn;

}

while

(1)

{

printf("请输入学号:

");

scanf("%s",&a[n].no);

pos=SearchByNo(a,n,a[n].no);

if(pos!

=-1)printf("学号已经存在,请重新输入!

\n");

elsebreak;

}

printf("请输入姓名:

");

scanf("%s",&a[n].name);

printf("请输入性别:

");

scanf("%s",&a[n].sex);

printf("请输入出生年份:

");

scanf("%d",&a[n].birth.year);

printf("请输入出生月份:

");

scanf("%d",&a[n].birth.month);

printf("请输入出生日期:

");

scanf("%d",&a[n].birth.day);

printf("请输入英语成绩:

");

scanf("%f",&a[n].sco.english);

printf("请输入数学成绩:

");

scanf("%f",&a[n].sco.math);

printf("请输入计算机成绩:

");

scanf("%f",&a[n].sco.mcu);

a[n].sco.total=a[n].sco.english+a[n].sco.math+a[n].sco.mcu;

n++;

returnn;

}

intDeleteByNo(Student*a,intn,charno[])

{

intpos=SearchByNo(a,n,no);

inti;

if(pos==-1)

{

printf("学号不存在,请重新输入!

\n");

returnn;//减少学生人数,并返回该值

}

if(pos==n-1)

{

n--;

returnn;

}

for(i=pos;i

{

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

}

n--;

returnn;//减少学生人数,并返回该值

}

/*修改函数*/

intModifyByNo(Student*a,intn,charno[])

{

intpos=SearchByNo(a,n,no);

intp;

charsno[15];

if(pos==-1)

{

printf("该学生不存在!

\n");

returnn;

}

while

(1)

{

printf("请输入学号:

");

scanf("%s",&sno);

p=SearchByNo(a,n,sno);

if(p==-1||p==pos)//两种情况,1.下表不存在2.不修改下表

{

strcpy(a[pos].no,sno);

break;

}

elseprintf("学生学号已存在,请重新输入!

");

}

printf("请输入姓名:

");

scanf("%s",&a[pos].name);

printf("请输入性别:

");

scanf("%s",&a[pos].sex);

printf("请输入出生年份:

");

scanf("%d",&a[pos].birth.year);

printf("请输入出生月份:

");

scanf("%d",&a[pos].birth.month);

printf("请输入出生日期:

");

scanf("%d",&a[pos].birth.day);

printf("请输入英语成绩:

");

scanf("%f",&a[pos].sco.english);

printf("请输入数学成绩:

");

scanf("%f",&a[pos].sco.math);

printf("请输入计算机成绩:

");

scanf("%f",&a[pos].sco.mcu);

returnn;

}

voidsave(Student*a,intn)//保存函数

{

inti;

FILE*fp;

if((fp=fopen("studentinformation.txt","wb"))==NULL)

{

printf("不能打开文件!

\n");

exit

(1);

}

printf("\n保存文件\n");

fprintf(fp,"%d",n);//将记录数写入文件

fprintf(fp,"\r\n");//将换行符号写入文件

for(i=0;i

{fprintf(fp,"%s\t%s\t%s\t%d-%d-%d\t%3.1f\t%3.1f\t%3.1f\t%3.1f",a[i].no,a[i].name,a[i].sex,a[i].birth.year,a[i].birth.month,a[i].birth.day,a[i].sco.english,a[i].sco.math,a[i].sco.mcu,a[i].sco.total);//写入记录

fprintf(fp,"\r\n");//将换行符号写入文件

}

fclose(fp);

printf("成功保存文件!

\n");

}

//**************文件的读入*****************//

intload(Studentt[])

{

inti,n;

FILE*fp;

if((fp=fopen("studentinformation.txt","rb+"))==NULL)//打开文件

{

printf("不能打开文件!

\n");

exit

(1);

}

fscanf(fp,"%d",&n);//读入记录数

for(i=0;i

{fread(fp,"%s\t%s\t%s\t%d%d%d\t%3.1f\t%f\t%f\t%f",t[i].no,t[i].name,t[i].sex,&t[i].birth.year,&t[i].birth.month,&t[i].birth.day,&t[i].sco.english,&t[i].sco.math,&t[i].sco.mcu,&t[i].sco.total);//读入记录

}

fclose(fp);

printf("成功读入记录!

");

returnn;

}

voidenglishaver(Studentstu[],intn)//英语平均成绩

{

inti;

doubleaver1,sum1=0;

for(i=0;i

{

sum1+=stu[i].sco.english;

}

aver1=1.0*sum1/n;

printf("英语平均分:

%.2f\n\n",aver1);

}

voidmathaver(Studentstu[],intn)//数学平均成绩

{

inti;

doubleaver1,sum1=0;

for(i=0;i

{

sum1=sum1+stu[i].sco.math;

}

aver1=sum1/n;

printf("数学平均分:

%.2f\n\n",aver1);

}

voidmcuaver(Studentstu[],intn)//计算机平均成绩

{

inti;

doubleaver1,sum1=0;

for(i=0;i

{

sum1+=stu[i].sco.mcu;

}

aver1=1.0*sum1/n;

printf("计算机平均分:

%.2f\n\n",aver1);

}

voidtotalaver(Studentstu[],intn)//总平均成绩

{

inti;

doubleaver1,sum;

for(i=0;i

{

sum=stu[i].sco.mcu+stu[i].sco.english+stu[i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1