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