学生成绩管理系统C语言版.docx
《学生成绩管理系统C语言版.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C语言版.docx(18页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统C语言版
#include/*常用的标准输入输出函数*/
#include/*access函数原型包含*/
#include/*exit函数原型包含*/
#include/*strcmp函数原型包含*/
#include
#include
#include
#defineN100/*最多的学生人数*/
structstudent/*学生结构体定义*/
{
charclas[15];/*班级*/
charno[13];/*学号,最多为12位*/
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[]);
voidmain()
{
intchoice=1;
system("COLOR2f");
printf("~~~~~~~~~~~~~~~~~学生信息管理系统~~~~~~~~~~~~~~~~\n");
printf("********\n");
printf("***欢迎进入***\n");
printf("**\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
init();
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("选择错误,请重新选择!
");
}
}
}
//1)输出学生成绩(公共函数)
voidoutput()/*输出学生数据*/
{
inti,j;
for(i=0;i{
printf("班级姓名学号性别地址电话\n");
printf("%s%s%s%s%s%s\n",stu[i].clas,stu[i].name,stu[i].no,stu[i].sex,stu[i].addr,stu[i].phone);
printf("\n");
printf("C语言大学物理网页设计高数英语\n");
for(j=0;j<5;j++)
printf("%-12.f",stu[i].score[j]);
printf("\n");
printf("\n");
}
}
//2)系统初始化代码
voidinit()
{
if(access("stu[i].dat",0))/*判断文件是否存在*/
newfile();/*不存在创建新的数据文件*/
else
read1();/*若存在,从文件中读取数据*/
}
//3)创立新的数据文件
voidnewfile()/*从键盘输入学生成绩并保存到文件中*/
{
inti;
FILE*fp;
if((fp=fopen("F:
\\stu.dat","wb"))==NULL)/*创建二进制文件*/
{
printf("文件创建失败!
请重新运行程序。
\n");
exit(0);/*终止程序运行*/
}
printf("请输入学生人数:
");
scanf("%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=0;/*num为数据文件实际存储成绩人数*/
fp=fopen("stu.dat","r");
if(fp==NULL)/*文件不存在*/
{
printf("文件打开失败!
请重新运行程序。
\n");
exit(0);/*终止程序运行*/
}
while(!
feof(fp))
{
fread(&stu[num],1,sizeof(structstudent),fp);
num++;
}
num--;
fclose(fp);
printf("现在共有%d个学生成绩,初始数据为:
\n",num);
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;
default:
printf("选择错误,请重新选择!
\n");
}
}
//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++;
printf("现在共有%d个学生成绩,数据为:
\n",num);
output();
}
//7)按学号查找
intfind(charsno[])
{
inti;
for(i=0;iif(strcmp(stu[i].no,sno)==0)/*判断两个字符串相等*/
returni;/*查找成功*/
return-1;/*查找失败*/
}
//删除学生信息
voiddelete1()
{
charcno[13];
inti,j;
printf("请输入要删除的学号:
\n");
ge