学生成绩管理系统C语言版.docx
《学生成绩管理系统C语言版.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C语言版.docx(18页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统C语言版
/*常用的标准输入输出函数*/
/*access函数原型包含*/
/*exit函数原型包含*/
/*strcmp函数原型包含*/
/*最多的学生人数*/
#include
#include#include
#include#include#include#include#defineN100
structstudent
{
charclas[15];
charno[13];
charname[20];
charsex[8];
charaddr[30];
charphone[15];
floatscore[5];
floatave;
}stu[N];
intnum;
voidinit();
voidweihu();
voidtongji();
voidtongji1();
voidtongji2();
voidsort1();
voidfind1();
voidsave();
voidnewfile();
voidread1();
voidnewfile();
voidnew1();
voiddelete1();
voidmodify。
;
voidsortscore();
intfindname(charcname[]);
/*学生结构体定义*/
/*班级*/
/*学号,最多为12位*/
/*姓名*/
/*性别*/
/*地址*/
/*电话*/
/*存储五门课成绩*/
/*平均分*/
voidmain()
{
intchoice=1;
system("COLOR2f');
printf("^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*printf(”****
printf("printf(”
\n”);init();
学生信息管理系统
欢迎进入!
!
!
\n");
****\n");
***\n");
*\n");
while(choice!
=5)
{
system("COLOR1F");
printf(”
*******************************\n")・
printf(”
**
**\n");
printf(”
**
王采单
**\n");
printf(”
**
1:
学生成绩维护
**\n");
printf(”
**
2:
学生成绩统计
**\n");
printf(”
**
3:
学生成绩排序
**\n");
printf(”
**
4:
学生成绩查询
**\n");
printf(”
**
5:
退出
**\n");
printf(”
**
**\n");
printf("
*******************************\n");
printf("
请选择:
");
scanf("%d",&choice);switch(choice)
{
case1:
weihu();break;
case2:
tongji();break;
case3:
sort1();break;
case4:
find1();break;
case5:
save();
printf("谢谢使用本系统!
!
\n");break;
default:
printf("选择错误,请重新选择rj;
}
}}
〃1)输出学生成绩(公共函数)
printf("文件创建失败!
请重新运行程序。
\n");exit(O);/*终止程序运行*/
}
printf("请输入学生人数:
");
seanf("%d",&num);
for(i=0;i{
printf("班级:
");
getchar();
gets(stu[i].clas);
printf("姓名:
");
gets(stu[i].name);
printf("请输入第%d位学生的学号:
",i+1);
gets(stu[i].no);printf("性别:
”);
gets(stu[i].sex);
printf("地址:
");
gets(stu[i].addr);
printf("电话:
");
gets(stu[i].phone);
printf("C语言:
");
scanf("%f",&stu[i].score[0]);
printf("大学物理:
");
scanf("%f",&stu[i].score[1]);
printf("网页设计:
");
scanf("%f",&stu[i].score[2]);
printf("高数:
");
scanf("%f",&stu[i].score[3]);
printf("英语:
");
scanf("%f",&stu[i].score[4]);
fwrite(&stu,sizeof(stu),1,fp);
printf("请输入下一条学生信息\n");/*把第i+1名学生成绩写入文件
*/
}
fclose(fp);
printf("你刚刚输入的数据共有%d个学生成绩。
详细数据为:
\n”,num);
output();
}
//4)从数据文件中读取成绩
voidread1()
{
FILE*fp;
/*num为数据文件实际存储成绩人数*/
num=0;
fp=fopen("stu.dat","r");
if(fp==NULL)/*文件不存在*/
{
printf(”文件打开失败!
请重新运行程序。
\n");
exit(O);/*终止程序运行*/
}
while(!
feof(fp))
{
fread(&stu[num],1,sizeof(structstudent),fp);
num++;
}num--;
fclose(fp);
\n",num);
/*输出读取结果*/
printf("现在共有%d个学生成绩,初始数据为:
output();
}
〃5)学生成绩维护
voidweihu()
{
intchoice1;
system("COLOR2F");
printf(”
*******************************************\n");
printf(”
**
**\n");
printf(”
**
学生成绩维护子菜单
**\n");
printf(”
**
1新增
**\n");
printf(”
**
2•删除(按学号)
**\n");
printf(”
**
3•修改
**\n");
printf(”
**
**\n");
printf(”
********************************************\n");
printf(”
请选择");
scanf("%d",&choice1);
switch(choice1)
{
case1:
new1();break;
case2:
delete1();break;
case3:
modify();break;
请重新选择!
\n");
default:
printf("选择错误,
}
〃6)新增一个学生成绩
voidnew1()
{
printf("请输入班级:
”);
getchar();
gets(stu[num].clas);
printf("请输入学号:
”);gets(stu[num].no);
printf("姓名:
");gets(stu[num].name);printf("性别:
");
gets(stu[num].sex);
printf("地址:
");gets(stu[num].addr);
printf("电话:
”);gets(stu[num].phone);printf("C语言:
");
scanf("%f',&stu[num].score[0]);printf("大学物理:
");
scanf("%f",&stu[num].score[1]);printf("网页设计:
”);
scanf("%f",&stu[num].score[2]);printf("高数:
");
scanf("%f",&stu[num].score[3]);
printf("英语:
");
scanf("%f",&stu[num].score[4]);
num++;
\n",num);
/*判断两个字符串相等*/
printf("现在共有%d个学生成绩,数据为:
output();
}
〃7)按学号查找
intfind(charsno[])
{
inti;
for(i=0;iif(strcmp(stu[i].no,sno)==0)
}
〃删除学生信息
voiddelete1()
{
charcno[13];
inti,j;
printf("请输入要删除的学号:
\n");getchar();
gets(cno);
i=find(cno);
if(i==-1)
{
printf(”不存在该学号!
!
!
!
\n");
}
else
{
for(j=i;j\n",num);
num--;
printf("删除后还有%d个学生成绩,数据为:
output();
}
}
//修改学生信息
voidmodify()
{
charcno[13];
inti,j;
printf("请输入要修改学生的学号:
\n");
getchar();
gets(cno);
i=find(cno);printf("班级:
");gets(stu[i].clas);printf("姓名:
");gets(stu[i].name);printf("性别:
");gets(stu[i].sex);printf("地址:
");gets(stu[i].addr);printf("电话:
”);gets(stu[i].phone);printf("C语言:
");scanf("%f",&stu[i].score[0]);printf("大学物理:
");scanf("%f",&stu[i].score[1]);
printf(”网页设计:
”);scanf("%f",&stu[i].score[2]);printf(”高数:
");
scanf("%f",&stu[i].score[3]);printf("英语:
");
scanf("%f',&stu[i].score[4]);printf("修改后为:
\n");
printf("%s\t%s\t%s\t%s\t%s\t%s\t\n",stu[i].clas,stu[i].name,stu[i].no,stu[i].sex,stu[i].addr,stu[i].phone);
printf("C语言大学物理网页设计高数英语\n");for(j=0;j<5;j++)
printf("%-12.f",stu[i].score[j]);
printf("\n");
}
〃10)统计
voidtongji()
{
intchoice2;
system("COLOR3F");
printf(”
***
***\n");
printf(”
***
统计子菜单
***\n");
printf(”
'k'k'k
1.计算每门课程平均分
***\n");
printf(”
'k'k'k
2.计算每个学生平均分
***\n");
printf(”
'k'k'k
***\n");
printf(”
*************************************************
**\n");
printf(”
*************************************************
**\n");
printf(”
请选择:
");
scanf("%d",&choice2);if(choice2==1)
tongji1();
elseif(choice2==2)
tongji2();
else
printf("选择错误,请重新选择!
\n");
}
〃11)计算每个学生平均分
voidtongji1()
{
inti,j;
floatsum;
floatavec[5];/*存储每门课程的平均分*/
for(j=0;j<5;j++)
{
sum=0;
for(i=0;isum+=stu[i].score[j];
avec[j]=sum/num;
}
printf("各门课平均分:
\n");
printf("C语言大学物理网页设计高数英语\n");
for(i=0;i<5;i++)
printf("%-10.2f",avec[i]);
printf("\n");
}
//12)计算每个人的平均分
voidtongji2()
{
inti,j;
floatsum;
for(j=0;j{
sum=0;
for(i=0;i<5;i++)
sum+=stu[j].score[i];
stu[j].ave=sum/5;
printf("第%d个人的平均分:
%.2f\n",j+1,stu[j].ave);
}
}
〃13)排序
voidsort1()
{
intchoice3;
system("COLOR6F");
printf(”
*****************************************\n");
printf(”
\n");
printf(”
*****
排序子菜单
*****\n")・
printf(”
*****
*****\n")・
printf(”
*****
1.按成绩
*****\n");
printf(”
\n");
printf(”
*****************************************\n");
printf(”
请选择:
\n");
scanf("%d",&choice3);
if("choice3==1")
sortscore();
else
printf("选择错误,请重新选择!
\n");
}
〃14)按学生平均分排序
voidsortscore()/*按平均成绩从高到低冒泡法排序*/
{
inti,j;
structstudenttemp;
tongji2();/*先计算每个学生的平均分*/
for(i=0;i<=num_2;i++)
{
for(j=0;jif(stu[j].ave{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
for(i=0;iprintf("%.2f",stu[i].score[1]);
printf("排序后的学生成绩为:
\n");output();
}
〃15)查找
voidfind1()
{
intchoice4;
charcno[13],cname[20];
inti,j;system("COLOR5F");
printf("输入要查找学生的学号:
");getchar();
gets(cno);
puts(cno);
i=find(cno);
}
elseif(choice4==2)
{
printf("请输入要查找学生的姓名:
”);
getchar();
gets(cname);
i=findname(cname);
}
else
{
printf("选择错误,请重新选择!
\n");
return;
}
if(i==-1)
printf("要查找的学生不存在。
\n");
else
{
printf("查找到的学生信息为:
\n");
printf("班级\t姓名\t学号\t性别\t地址\t电话\t\n");
printf("%s\t%s\t%s\t%s\t%s\t%s\t\n",stu[i].clas,stu[i].name,stu[i].no,stu
}
/*将修改过的学生成绩重新写回到数据文
〃17)保存文件voidsave()
件中*/
{
inti;
FILE*fp;
if((fp=fopen("stu.dat","wb"))==NULL)/*创建二进制文件*/
{
printf("文件创建失败!
请重新运行程序。
\n");
exit(O);/*终止程序运行*/
}
for(i=0;ifwrite(&stu[i],1,sizeof(structstudent),fp);
/*把第i+1个学生成绩写入文件*/
fclose(fp);
}