c语言学生成绩管理整理.docx
《c语言学生成绩管理整理.docx》由会员分享,可在线阅读,更多相关《c语言学生成绩管理整理.docx(17页珍藏版)》请在冰豆网上搜索。
c语言学生成绩管理整理
c语言课程设计_学生成绩管理系统3
课程设计的内容:
1、每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩。
2、输入功能:
可以一次完成若干条记录的输入。
3、显示功能:
完成全部学生记录的显示。
4、查找功能:
完成按姓名查找学生记录,并显示。
5、排序功能:
按学生平均成绩进行排序。
6、插入功能:
按平均成绩高低插入一条学生记录。
7、将学生记录存在文件score中。
8、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!
课程设计的要求:
1、用C语言实现系统;
2、利用结构体数组实现学生成绩的数据结构设计;
3、系统具有增加,查询,插入,排序等基本功能;
4、系统的各个功能模块要求用函数的形式实现;
5、完成设计任务并书写课程设计报告。
6、将学生成绩信息存在文件中。
#include /*暂停函数*/
#include /*I/O函数*/
#include /*其它说明*/
#include /*字符串操作函数*/
#define M1000
intN=0。
/*记录已经存在的记录条数*/
intH=0。
structstudent /*定义数据结构*/
{charnumber[8]。
charname[16]。
floatscore[3]。
floataverage。
}stud[M],temp。
/*以下是函数声明*/
voidload(void)。
/*读入记录*/
voidinorder(structstudentstud[])。
/*排列记录*/
voidinsert(structstudentstud[])。
/*插入记录*/
voidsave(structstudentstud[])。
/*保存记录*/
voidprint(structstudentstud[])。
/*显示记录*/
voidsearch(structstudentstud[])。
/*查找记录*/
voidenter(structstudentstud[])。
/*输入记录*/
voiddel(void)。
/*删除记录*/
voidchange(void)。
/*改变记录*/
voidquit(void)。
/*退出系统*/
intflag(structstudentstud[])。
/*返回值为0或1*/
intmenu(void)。
/*菜单*/
main() /*主函数*/
{/*以下printf语句为打印欢迎界面语句*/
printf("\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t\t!
!
!
!
!
\n")。
printf(" w weeeeeee l ccccccc ooooo mmmmmmmmm eeeeeee !
!
!
!
\n")。
printf(" w w we e l c o o m m m e e !
!
!
\n")。
printf(" w ww w eeeeee l c o om m m eeeeeee !
!
\n")。
printf(" ww ww e l c o o m m m e !
\n")。
printf(" w w eeeeeee llllllccccccc ooooo m m m eeeeeee \n")。
printf("\t\t\t\t\t\t\t\t\t\b0")。
sleep
(1)。
printf("\n\n\n\n\n\t\t\t\t\t\t\t\t -----pan")。
sleep
(1)。
load()。
/*调用读入记录函数*/
for(。
。
) /*无限循环*/
{switch(menu()) /*调用主菜单函数,返回值整数作开关语句的条件*/
{case1:
enter(stud)。
break。
/*输入记录*/
case2:
print(stud)。
break。
/*显示要看的一页的记录*/
case3:
search(stud)。
break。
/*查找记录*/
case4:
inorder(stud)。
break。
/*排序*/
case5:
insert(stud)。
break。
/*插入记录*/
case6:
save(stud)。
break。
/*保存文件*/
case7:
change()。
break。
/*改变记录*/
case8:
del()。
break。
/*删除记录*/
case9:
quit()。
/*如菜单返回值为9程序结束*/
}
}
}
/*输入数据函数*/
voidenter(structstudentstud[])
{intn=0,i,j,k,c。
charb[4]。
floatsum。
printf("Howmanystudent'srecorddoyouwanttoenter?
n= ?
\b\b\b")。
scanf("%d",&n)。
/*输入一次要输入记录数*/
for(i=0。
i)
{sum=0。
/*统记三科总分*/
printf("Inputthe%dthstudent'snumber",N+1)。
scanf("%s",stud[N].number)。
/*输入学号*/
/*以下if-else语句判断所输记录是否存在*/
if(flag(stud)) /*调用返回值为0或1函数,判断所输入的学号是否已经存在,存在就执行if语句*/
{
printf("Therecordhasexist.\n")。
printf("Inputagain.")。
getch()。
}
else
{printf("Inputthe%dthstudent'sname",N+1)。
scanf("%s",stud[N].name)。
/*输入姓名*/
for(j=0。
j<3。
j++)
{do
{
printf("Inputthe%dthstudent'sscore(%d)",N+1,j+1)。
/*打印提示*/
scanf("%s",b)。
/*输入分数*/
stud[N].score[j]=atof(b)。
/*将字符串强制转换成实型,得值赋给stud[N].score[j]*/
if(stud[N].score[j]<=0||stud[N].score[j]>100) /*判断分数是否在0-100之间*/
{
k=1。
/*分数不在0-100之间时k值为1*/
printf("Errorinput!
!
!
\n")。
printf("Inputagain...\n")。
/*打印出错提示*/
}
else
k=0。
/*分数在0-100之间时k值为0*/
}while(k)。
/*由k值决定是否要循环*/
sum+=stud[N].score[j]。
/*统记三科总分*/
}
stud[N].average=sum/3.0。
/*平均分*/
printf("\nEntersuccess!
!
!
\n")。
printf("\nPressanykeytoreturn.")。
getch()。
N++。
/*记录数加1*/
i++。
H=1。
}
clrscr()。
/*清屏*/
}
clrscr()。
/*清屏*/
}
/*显示记录函数*/
voidprint(structstudentstud[])
{inti=0,k,max,maxb,n,flag='y'。
charm[6]。
/*以下if-else为判断文件中是否有记录*/
if(N==0)
{
printf("Therearenotrecord.\n")。
printf("Pressanykeytoreturn.")。
/*当N为0时(即没有记录)打印没有记录提示*/
getch()。
}
else
while(flag!
='n')
{maxb=0。
i=0。
/*以下分页输出记录*/
do
{if(N%10!
=0)
{printf("\n\t\tThereare%dpagesinall.",N/10+1)。
printf("\n\t\tWhichpagedoyouwanttosee?
")。
}