c语言程序设计之学生成绩管理系统精华版.docx
《c语言程序设计之学生成绩管理系统精华版.docx》由会员分享,可在线阅读,更多相关《c语言程序设计之学生成绩管理系统精华版.docx(20页珍藏版)》请在冰点文库上搜索。
c语言程序设计之学生成绩管理系统精华版
//111.cpp:
定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include
#include
#include
#defineALs->s[i].kaoshi*0.7+Ls->s[i].pingshi*0.3
#defineBLs->s[i].kaoshi1*0.7+Ls->s[i].pingshi1*0.3
#defineMAX1000
#include
BOOLSetConsoleColor(WORDwAttributes)
{
HANDLEhConsole=GetStdHandle(STD_OUTPUT_HANDLE);
if(hConsole==INVALID_HANDLE_VALUE)
returnFALSE;
returnSetConsoleTextAttribute(hConsole,wAttributes);
}//使用色彩
typedefstruct
{
charname[20];
intnum;
intclasses;
intage;
charsex[10];
intbianhao;
charmingcheng[20];
intxuefen;
intkaoshi;
intpingshi;
intbianhao1;
charmingcheng1[20];
intxuefen1;
intkaoshi1;
intpingshi1;
}student;
typedefstruct
{
students[MAX];
intlength;
}Lstudent;
voidwelcome()/*界面函数*/
{
SetConsoleColor(FOREGROUND_RED);
printf("◢▇▇▇▇▇▇▇▇▇▇▇▇◣\n");
printf("▇欢迎进入成绩管理系统▇\n");
printf("◥▇▇▇▇▇▇▇▇▇▇▇▇◤\n");
printf("\n");
SetConsoleColor(FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
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("◥▇▇▇▇9.存储信息▇▇▇▇◤\n");
printf("◥▇▇▇10.退出成绩管理系统▇▇▇◤\n");
printf("◥▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇◤\n");
}
voidread(Lstudent*Ls,FILE*fp)
{
system("cls");
if((fp=fopen("scoresystem.txt","rt+"))==NULL)
{
printf("无法打开此文件\n");
printf("请按回车键返回主界面");
getchar();
}
else
{
while(!
feof(fp))
putchar(getc(fp));
printf("按回车键返回主界面");
getchar();
getchar();
}
fclose(fp);
}
voidinput(Lstudent*Ls)/*输入学生的成绩*/
{intn;
inti;
system("cls");
printf("请输入学生数:
");
scanf("%d",&n);
Ls->length=n;
for(i=0;i{
printf("输入第%d个学生的数据:
\n",i+1);
printf("姓名:
");
scanf("%s",&Ls->s[i].name);
printf("学号:
");
scanf("%d",&Ls->s[i].num);
printf("班级:
");
scanf("%d",&Ls->s[i].classes);
printf("年龄:
");
scanf("%d",&Ls->s[i].age);
printf("性别:
");
scanf("%s",&Ls->s[i].sex);
printf("课程编号:
");
scanf("%d",&Ls->s[i].bianhao);
printf("课程名称:
");
scanf("%s",&Ls->s[i].mingcheng);
printf("学分:
");
scanf("%d",&Ls->s[i].xuefen);
printf("考试成绩:
");
scanf("%d",&Ls->s[i].kaoshi);
printf("平时成绩:
");
scanf("%d",&Ls->s[i].pingshi);
printf("课程编号:
");
scanf("%d",&Ls->s[i].bianhao1);
printf("课程名称:
");
scanf("%s",&Ls->s[i].mingcheng1);
printf("学分:
");
scanf("%d",&Ls->s[i].xuefen1);
printf("考试成绩:
");
scanf("%d",&Ls->s[i].kaoshi1);
printf("平时成绩:
");
scanf("%d",&Ls->s[i].pingshi1);
}
printf("录入成绩完成,请按回车键返回主界面");
getchar();
getchar();
}
voidoutput(Lstudent*Ls)/*输出学生的成绩信息*/
{
inti;
system("cls");
for(i=0;ilength;i++)
{
printf("┏━━━┳━━━┳━━━┳━━━┳━━━┳\n");
printf("┃姓名┃学号┃班级┃年龄┃性别┃\n");
printf("┣━━━╋━━━╋━━━╋━━━╋━━━╋\n");
printf("┃%-6.6s┃%-4d┃%-4d┃%-4d┃%-6.6s┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].classes,Ls->s[i].age,Ls->s[i].sex);
printf("┣━━━╋━━━╋━━━╋━━━╋━━━┫\n");
printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");
printf("┃课程1编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");
printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");
printf("┃%-4d┃%-6.6s┃%-4d┃%-4d┃%-4d┃%-4.1f┃\n",Ls->s[i].bianhao,Ls->s[i].mingcheng,Ls->s[i].xuefen,Ls->s[i].kaoshi,Ls->s[i].pingshi,A);
printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");
printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");
printf("┃课程2编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");
printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");
printf("┃%-4d┃%-6.6s┃%-4d┃%-4d┃%-4d┃%-4.1f┃\n",Ls->s[i].bianhao1,Ls->s[i].mingcheng1,Ls->s[i].xuefen1,Ls->s[i].kaoshi1,Ls->s[i].pingshi1,B);
printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");
printf("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");
}
printf("请按回车键回到主界面");
getchar();
getchar();
}
voidinsert(Lstudent*Ls)/*插入学生成绩信息*/
{
intn,i,l;
system("cls");
l=Ls->length;
printf("请输入要插入的学生数:
");
scanf("%d",&n);
for(i=0;i{
printf("请输入插入第%d个学生的数据:
\n",i+1);
printf("姓名:
");
scanf("%s",&Ls->s[i+1].name);
printf("学号:
");
scanf("%d",&Ls->s[i+1].num);
printf("班级:
");
scanf("%d",&Ls->s[i+1].classes);
printf("年龄:
");
scanf("%d",&Ls->s[i+1].age);
printf("性别:
");
scanf("%s",&Ls->s[i+1].sex);
printf("课程编号:
");
scanf("%d",&Ls->s[i+1].bianhao);
printf("课程名称:
");
scanf("%s",&Ls->s[i+1].mingcheng);
printf("学分:
");
scanf("%d",&Ls->s[i+1].xuefen);
printf("考试成绩:
");
scanf("%d",&Ls->s[i+1].kaoshi);
printf("平时成绩:
");
scanf("%d",&Ls->s[i+1].pingshi);
printf("课程编号:
");
scanf("%d",&Ls->s[i+1].bianhao1);
printf("课程名称:
");
scanf("%s",&Ls->s[i+1].mingcheng1);
printf("学分:
");
scanf("%d",&Ls->s[i+1].xuefen1);
printf("考试成绩:
");
scanf("%d",&Ls->s[i+1].kaoshi1);
printf("平时成绩:
");
scanf("%d",&Ls->s[i+1].pingshi1);
}
Ls->length+=n;
printf("插入成绩完成,请按回车键返回主界面");
getchar();
getchar();
}
voiddelet(Lstudent*Ls)/*按学号删除*/
{
inti=0,j,x;
system("cls");
printf("请输入要删除的学生的学号:
");
scanf("%d",&x);
while((ilength)&&(Ls->s[i].num!
=x))
i++;
if(ilength)
{
for(j=i;jlength;j++)
Ls->s[j]=Ls->s[j+1];
Ls->length--;
printf("已成功删除");
}
else
printf("对不起,无此学生成绩,无法删除\n");
printf("请按回车键返回主界面");
getchar();
getchar();
}
voidsearch(Lstudent*Ls)/*按学号查找*/
{
inti=0,x;
system("cls");
printf("请输入要查找学生的学号:
");
scanf("%d",&x);
while((ilength)&&(Ls->s[i].num!
=x))
i++;
if(ilength)
{
printf("┏━━━┳━━━┳━━━┳━━━┳━━━┳\n");
printf("┃姓名┃学号┃班级┃年龄┃性别┃\n");
printf("┣━━━╋━━━╋━━━╋━━━╋━━━╋\n");
printf("┃%-6.6s┃%-4d┃%-4d┃%-4d┃%-6.6s┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].classes,Ls->s[i].age,Ls->s[i].sex);
printf("┣━━━╋━━━╋━━━╋━━━╋━━━┫\n");
printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");
printf("┃课程1编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");
printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");
printf("┃%-4d┃%-6.6s┃%-4d┃%-4d┃%-4d┃%-4.1f┃\n",Ls->s[i].bianhao,Ls->s[i].mingcheng,Ls->s[i].xuefen,Ls->s[i].kaoshi,Ls->s[i].pingshi,A);
printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");
printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");
printf("┃课程2编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");
printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");
printf("┃%-4d┃%-6.6s┃%-4d┃%-4d┃%-4d┃%-4.1f┃\n",Ls->s[i].bianhao1,Ls->s[i].mingcheng1,Ls->s[i].xuefen1,Ls->s[i].kaoshi1,Ls->s[i].pingshi1,B);
printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");
printf("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");
}
else
printf("未找到此学生\n");
printf("请按回车键回到主界面");
getchar();
getchar();
}
voidsave(Lstudent*Ls,FILE*fp)/*将学生成绩信息存储在文件scoresystem.txt中*/
{
inti;
system("cls");
if((fp=fopen("scoresystem.txt","wt+"))==NULL)
printf("无法打开此文件\n");
else
for(i=0;ilength;i++)
{fprintf(fp,"┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━┳\n");
fprintf(fp,"┃姓名┃学号┃班级┃年龄┃性别┃\n");
fprintf(fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━╋\n");
fprintf(fp,"┃%-6.6s┃%-4d┃%-4d┃%-4d┃%-6.6s┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].classes,Ls->s[i].age,Ls->s[i].sex);
fprintf(fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━┫\n");
fprintf(fp,"┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");
fprintf(fp,"┃课程1编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");
fprintf(fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");
fprintf(fp,"┃%-4d┃%-6.6s┃%-4d┃%-4d┃%-4d┃%-4.1f┃\n",Ls->s[i].bianhao,Ls->s[i].mingcheng,Ls->s[i].xuefen,Ls->s[i].kaoshi,Ls->s[i].pingshi,A);
fprintf(fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");
fprintf(fp,"┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");
fprintf(fp,"┃课程2编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");
fprintf(fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");
fprintf(fp,"┃%-4d┃%-6.6s┃%-4d┃%-4d┃%-4d┃%-4.1f┃\n",Ls->s[i].bianhao1,Ls->s[i].mingcheng1,Ls->s[i].xuefen1,Ls->s[i].kaoshi1,Ls->s[i].pingshi1,B);
fprintf(fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");
fprintf(fp,"☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");
}//注中括号在循环语句中的使用
printf("信息已存储在名为“scoresystem.txt的文件中”,按回车键返回主界面");
fclose(fp);
getchar();
getchar();
}
voidaver(Lstudent*Ls)//计算平均分并排序
{
inti=0,n,j,k;
floata[20],t;
for(i=0;ilength;i++)//逐个赋值,千万不能少
{
a[i]=(A+B)/2;
}
system("cls");
for(k=0;klength;k++)//此处为冒泡排序法
for(j=1;jlength;j++)
for(i=0;ilength-j;i++)
if(a[i]{t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("┏━━━┳━━━┳━━━━┳\n");
printf("┃名次┃姓名┃平均分┃\n");
printf("┣━━━╋━━━╋━━━━╋\n");
for(i=0;ilength;i++)//已输入学生长度为Ls->length
{printf("┃%-4d┃%-6.6s┃%-4.1f┃\n",i+1,Ls->s[i].name,a[i]);
printf("┣━━━╋━━━╋━━━━╋\n");//注意有调用顺序问题
}
getchar();
getchar();
}
voidnopass(Lstudent*Ls)//?
列出不及格学生清单(学号、姓名、不及格的课程和成绩)
{intn;
system("cls");
inti;
printf("不及格学生信息\n");
for(i=0;ilength;i++)
{
if(A<60)
{printf("┏━━━┳━━━━━┳━━━┳━━━━┳\n");
printf("┃姓名┃学号┃课程┃考试成绩┃\n");
printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n");
printf("┃%-6.6s┃%-4d┃%-6.6s┃%-4.1f┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].mingcheng,A);
printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n");}
if(B<60)
{printf("┏━━━┳━━━━━┳━━━┳━━━━┳\n");
printf("┃姓名┃学号┃课程┃考试成绩┃\n");
printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n");
printf("┃%-6.6s┃%-4d┃%-6.6s┃%-4.1f┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].mingcheng1,B);}
printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n");
}
printf("请按回车键回到主界面");
getchar();
getchar();
}
voidchange(Lstudent*Ls)//修改成绩
{
inti=0,n;
printf("请输入要修改的学号:
");
scanf("%d",&n);
if(Ls->s[i].num==n)
{
printf("\n请输入学生姓名:
");
fflush(stdin);
scanf("%s",&Ls->s[i].name);
printf("\n请输入学生班级:
");
fflush(stdin);
scanf("%s",&Ls->s[i].classes);
printf("\n请输入学生年龄:
");
fflush(stdin);
scanf("%d",&Ls->s[i].age);
printf("\n请输入学生性别:
");
fflush(stdin);
scanf("%s",&Ls->s[i].sex);
printf("\n请输入课程1编号:
");
fflush(stdin);
scanf("%d",&Ls->s[i].bianhao);
printf("\n请输入课程名称:
");