学生成绩管理系统 C课程设计综述.docx
《学生成绩管理系统 C课程设计综述.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统 C课程设计综述.docx(24页珍藏版)》请在冰点文库上搜索。
学生成绩管理系统C课程设计综述
C语言课程设计报告
专业:
学号:
姓名:
提交日期:
【设计目的】
目前,各类学校的在校生人数在不断增加,而且不同专业的学生选修课,实验课,考试课分别占的比重不同,依靠传统的方式管理学生成绩信息给日常的管理工作带来诸多不便,而计算机信息技术的发展为学生成绩管理注入了新的生机。
……………………………………..
【设计内容】
1、录入学生成绩系统
2、闪现删除功能,即输入学号删除相应的记录。
3、实现查找功能,即输入学号,查询该学生成绩的相关信息。
4、实现修正功能,即输入学号,修改相应信息。
5、指定位置插入学生成绩信息,即输入要插入的位置,将新的信息插到制定位置。
6、学生成绩排名,即按照总成绩进行由高到低排名。
7、统计保存的学生信息数。
………………………………….
【实验环境】
1.硬件环境电脑戴尔灵越i55000处理器intel(R)core(tm)i5-4210UCPU@1.70GHz2.40GHz内存4.00G
2.软件环境WINDOWS10下Codeblack编译
【设计中使用函数说明】
设计中使用的函数有main函数,自己定义的有输入函数in.输出函数show.排序函数order.删除函数del.修改函数modify.菜单函数menu.插入函数insert.统计函数total.查找函数search等。
【测试结果】
【设计总结】
该设计为C语言成绩管理系统,可以对系统内的学生成绩进行新建、添加、删除、排序、查询等操作。
可以在面板中输入数字来进行想要的操作。
该设计以团队形式进行,既发挥了团队内各人员所长,又是各人在C语言方面的一次锻炼,同时也是对团队的一次考验。
团队内同伴要相互体谅,相互帮忙,不能因为一点琐事就吵嘴,同伴间的相互体谅和信任是最重要的。
这次的程序设计,用到的不仅仅是书本上的知识,一些个函数或是一些结构都需要自己查看有关书籍来完成,能编写几个小程序并不表示就学会了编程,而是要灵活的运用来编写不同的程序。
C语言知识很有意思,我还要再更加努力的学习。
【参考文献】
《学通C语言的24堂课》互联网,XX等
【源程序清单】
#include/*引用头文件*/
#include
#include
#include
#include
#defineLENsizeof(structstudent)
#defineFORMAT"%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf\n"
#defineDATAstu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sum
floatFelec,Fexpe,Frequ;
structstudent/*定义学生成绩结构体*/
{
intnum;/*学号*/
charname[15];/*姓名*/
doubleelec;/*选修课*/
doubleexpe;/*实验课*/
doublerequ;/*必修课*/
doublesum;/*总分*/
};
structstudentstu[50];/*定义结构体数组*/
voidin();/*录入学生成绩信息*/
voidshow();/*显示学生信息*/
voidorder();/*按总分排序*/
voiddel();/*删除学生成绩信息*/
voidmodify();/*修改学生成绩信息*/
voidmenu();/*主菜单*/
voidinsert();/*插入学生信息*/
voidtotal();/*计算总人数*/
voidsearch();/*查找学生信息*/
intmain()/*主函数*/
{
intn;
menu();
scanf("%d",&n);/*输入选择功能的编号*/
while(n)
{
switch(n)
{
case1:
in();
break;
case2:
search();
break;
case3:
del();
break;
case4:
modify();
break;
case5:
insert();
break;
case6:
order();
break;
case7:
total();
break;
default:
break;
}
getch();
menu();/*执行完功能再次显示菜单界面*/
scanf("%d",&n);
}
}
voidin()/*录入学生信息*/
{
inti,m=0;/*m是记录的条数*/
charch[2];
FILE*fp;/*定义文件指针*/
if((fp=fopen("data","ab+"))==NULL)/*打开指定文件*/
{
printf("cannotopen\n");
return;
}
while(!
feof(fp))
{
if(fread(&stu[m],LEN,1,fp)==1)
m++;/*统计当前记录条数*/
}
fclose(fp);
if(m==0)
printf("Norecord!
\n");
else
{
system("cls");
show();/*调用show函数,显示原有信息*/
}
if((fp=fopen("data","wb"))==NULL)
{
printf("cannotopen\n");
return;
}
for(i=0;ifwrite(&stu[i],LEN,1,fp);/*向指定的磁盘文件写入信息*/
printf("pleaseinput(y/n):
");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
printf("pleaseinputpercentum:
");
printf("\nelective:
");
scanf("%f",&Felec);
printf("\nexperiment:
");
scanf("%f",&Fexpe);
printf("\nrequiredcourse:
");
scanf("%f",&Frequ);
}
while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要录入新信息*/
{
printf("number:
");
scanf("%d",&stu[m].num);/*输入学生学号*/
for(i=0;iif(stu[i].num==stu[m].num)
{
printf("thenumberisexisting,pressanytocontinue!
");
getch();
fclose(fp);
return;
}
printf("name:
");
scanf("%s",stu[m].name);/*输入学生姓名*/
printf("elective:
");
scanf("%lf",&stu[m].elec);/*输入选修课成绩*/
printf("experiment:
");
scanf("%lf",&stu[m].expe);/*输入实验课成绩*/
printf("requiredcourse:
");
scanf("%lf",&stu[m].requ);/*输入必修课成绩*/
stu[m].sum=stu[m].elec*Felec+stu[m].expe*Fexpe+stu[m].requ*Frequ;/*计算出总成绩*/
if(fwrite(&stu[m],LEN,1,fp)!
=1)/*将新录入的信息写入指定的磁盘文件*/
{
printf("cannotsave!
");
getch();
}
else
{
printf("%ssaved!
\n",stu[m].name);
m++;
}
printf("continue?
(y/n):
");/*询问是否继续*/
scanf("%s",ch);
}
fclose(fp);
printf("OK!
\n");
}
voidshow()
{
FILE*fp;
inti,m=0;
fp=fopen("data","ab+");
while(!
feof(fp))
{
if(fread(&stu[m],LEN,1,fp)==1)
m++;
}
fclose(fp);
printf("numbernameelectiveexperimentrequiredsum\t\n");
for(i=0;i{
printf(FORMAT,DATA);/*将信息按指定格式打印*/
}
}
voidmenu()/*自定义函数实现菜单功能*/
{
system("cls");
printf("\n\n\n\n\n");
printf("\t\t|-------------------学生成绩管理系统---------------|\n");
printf("\t\t|\t0.退出|\n");
printf("\t\t|\t1.输入|\n");
printf("\t\t|\t2.查询|\n");
printf("\t\t|\t3.删除|\n");
printf("\t\t|\t4.修改|\n");
printf("\t\t|\t5.插入|\n");
printf("\t\t|\t6.排序|\n");
printf("\t\t|\t7.学生人数|\n");
printf("\t\t|--------------------------------------------------|\n\n");
printf("\t\t\t选择(0-7):
");
}
voidorder()/*自定义排序函数*/
{
FILE*fp;
structstudentt;
inti=0,j=0,m=0;
if((fp=fopen("data","ab+"))==NULL)
{
printf("cannotopen!
\n");
return;
}
while(!
feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("norecord!
\n");
return;
}
for(i=0;ifor(j=i+1;jif(stu[i].sum{
t=stu[i];
stu[i]=stu[j];
stu[j]=t;
}
if((fp=fopen("data","wb"))==NULL)
{
printf("cannotopen\n");
return;
}
for(i=0;iif(fwrite(&stu[i],LEN,1,fp)!
=1)
{
printf("%scannotsave!
\n");
getch();
}
fclose(fp);
printf("savesuccessfully\n");
}
voiddel()/*自定义删除函数*/
{
FILE*fp;
intsnum,i,j,m=0;
charch[2];
if((fp=fopen("data","ab+"))==NULL)
{
printf("cannotopen\n");
return;
}
while(!
feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("norecord!
\n");
return;
}
printf("pleaseinputthenumber:
");
scanf("%d",&snum);
for(i=0;iif(snum==stu[i].num)
break;
if(i==m)
{
printf("cannotfind");
getchar();
return;
}
printf("findthestudent,delete?
(y/n)");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要进行删除*/
{
for(j=i;jstu[j]=stu[j+1];/*将后一个记录移到前一个记录的位置*/
m--;/*记录的总个数减1*/
printf("deletesuccessfully!
\n");
}
if((fp=fopen("data","wb"))==NULL)
{
printf("cannotopen\n");
return;
}
for(j=0;jif(fwrite(&stu[j],LEN,1,fp)!
=1)
{
printf("cannotsave!
\n");
getch();
}
fclose(fp);
}
voidsearch()/*自定义查找函数*/
{
FILE*fp;
intsnum,i,m=0;
charch[2];
if((fp=fopen("data","ab+"))==NULL)
{
printf("cannotopen\n");
return;
}
while(!
feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("norecord!
\n");
return;
}
printf("pleaseinputthenumber:
");
scanf("%d",&snum);
for(i=0;iif(snum==stu[i].num)/*查找输入的学号是否在记录中*/
{
printf("findthestudent,show?
(y/n)");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
printf("numbernameelectiveexperimentrequiredsum\t\n");
printf(FORMAT,DATA);/*将查找出的结果按指定格式输出*/
break;
}
else
return;
}
if(i==m)
printf("cannotfindthestudent!
\n");/*未找到要查找的信息*/
}
voidmodify()/*自定义修改函数*/
{
FILE*fp;
inti,j,m=0,snum;
if((fp=fopen("data","ab+"))==NULL)
{
printf("cannotopen\n");
return;
}
while(!
feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
if(m==0)
{
printf("norecord!
\n");
fclose(fp);
return;
}
printf("pleaseinputthenumberofthestudentwhichdoyouwanttomodify!
\n");
scanf("%d",&snum);
for(i=0;iif(snum==stu[i].num)/*检索记录中是否有要修改的信息*/
break;
if(i{
printf("findthestudent!
youcanmodify!
\n");
printf("pleaseinputpercentum:
");
printf("\nelective:
");
scanf("%f",&Felec);
printf("\nexperiment:
");
scanf("%f",&Fexpe);
printf("\nrequiredcourse:
");
scanf("%f",&Frequ);
printf("name:
\n");
scanf("%s",stu[i].name);/*输入名字*/
printf("\nelective:
");
scanf("%lf",&stu[i].elec);/*输入选修课成绩*/
printf("\nexperiment:
");
scanf("%lf",&stu[i].expe);/*输入实验课成绩*/
printf("\nrequiredcourse:
");
scanf("%lf",&stu[i].requ);/*输入必修课成绩*/
stu[i].sum=stu[i].elec*Felec+stu[i].expe*Fexpe+stu[i].requ*Frequ;
}
else
{
printf("cannotfind!
");
getchar();
return;
}
if((fp=fopen("data","wb"))==NULL)
{
printf("cannotopen\n");
return;
}
for(j=0;jif(fwrite(&stu[j],LEN,1,fp)!
=1)
{
printf("cannotsave!
");
getch();
}
fclose(fp);
}
voidinsert()/*自定义插入函数*/
{
FILE*fp;
inti,j,k,m=0,snum;
if((fp=fopen("data","ab+"))==NULL)
{
printf("cannotopen\n");
return;
}
while(!
feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
if(m==0)
{
printf("norecord!
\n");
fclose(fp);
return;
}
printf("pleaseinputpositionwheredoyouwanttoinsert!
(inputthenumber)\n");
scanf("%d",&snum);/*输入要插入的位置*/
for(i=0;iif(snum==stu[i].num)
break;
for(j=m-1;j>i;j--)
stu[j+1]=stu[j];/*从最后一条记录开始均向后移一位*/
printf("nowpleaseinputthenewinformation.\n");
printf("number:
");
scanf("%d",&stu[i+1].num);
for(k=0;kif(stu[k].num==stu[i+1].num&&k!
=i+1)
{
printf("thenumberisexisting,pressanytocontinue!
");
getch();
fclose(fp);
return;
}
printf("pleaseinputpercentum:
");
printf("\nelective:
");
scanf("%f",&Felec);
printf("\nexperiment:
");
scanf("%f",&Fexpe);
printf("\nrequiredcourse:
");
scanf("%f",&Frequ);
printf("name:
\n");
scanf("%s",stu[i+1].name);
printf("\nelective:
");
scanf("%lf",&stu[i+1].elec);
printf("\nexperiment:
");
scanf("%lf",&stu[i+1].expe);
printf("\nrequiredcourse:
");
scanf("%lf",&stu[i+1].requ);
stu[i