学生成绩管理系统开发实验.docx

上传人:b****1 文档编号:2432774 上传时间:2022-10-29 格式:DOCX 页数:14 大小:20.62KB
下载 相关 举报
学生成绩管理系统开发实验.docx_第1页
第1页 / 共14页
学生成绩管理系统开发实验.docx_第2页
第2页 / 共14页
学生成绩管理系统开发实验.docx_第3页
第3页 / 共14页
学生成绩管理系统开发实验.docx_第4页
第4页 / 共14页
学生成绩管理系统开发实验.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统开发实验.docx

《学生成绩管理系统开发实验.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统开发实验.docx(14页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统开发实验.docx

学生成绩管理系统开发实验

“学生成绩管理系统”开发

——实验报告

(一)实验目的

1.学习c程序设计、算法选择和设计,以及数据类型的选择和数据结构的设计;

2.加深对程序设计方法的理解,并运用c程序解决较复杂的问题;

3.培养团队协作的精神。

(二)实验内容和要求

1.实验内容:

①开发一个小型的软件系统,以学生成绩管理为背景,系统具有常用的学生成绩管理功能,程序能够运行并演示所有的功能。

②学生成绩管理系统的基本功能:

成绩输入、查询、打印成绩单、统计分析。

③系统约束:

系统能够处理n(0

④根据课堂讨论结果,每小组自行定义各自的系统功能、设计和实现方法,并形成书面文档。

2.实验要求:

①输入成绩:

任课教师通过键盘输入学生成绩,每门的学生成绩由三部分组成:

平时成绩、期中成绩和期末成绩。

②查询指定学生的成绩;查询指定课程的成绩。

③打印个人和班级成绩单:

在显示屏上输出个人成绩单和班级成绩单。

④成绩排名:

按成绩分类输出成绩单。

⑤成绩分析报告:

至少包含平时成绩、最高成绩、最低成绩、按分数段输入成绩。

⑥用文件存储成绩基础数据:

基础数据包含:

学生姓名、学号、课程名称、平时成绩、期中成绩、期末成绩。

(3)成员分工

(四)主要仪器设备

仪器:

计算机

实验环境:

Windows:

XP/7/8Devc++

(五)源代码及注释:

#include

#include

#include

structstudent

{//储存学生信息

intid;

doubleusual,mid,final,score,gpa;

charname[20];

}st[10000];

voidsave(charc[],intn,structstudentst[])

{//将学生信息保存到文件中

inti;

FILE*fp;

if(!

(fp=fopen(c,"wb")))//打开或创建文件名为c的文件

{//若打开失败

printf("\t抱歉,无法建立该文件。

请重试!

\n");

return;

}

for(i=0;i

fwrite(&st[i],sizeof(structstudent),1,fp);

fclose(fp);

}

intcomp(constvoid*a,constvoid*b)

{//qsort中的比较函数

if(((structstudent*)a)->score!

=((structstudent*)b)->score)//成绩不同时比较成绩

return((structstudent*)b)->score-((structstudent*)a)->score;

return((structstudent*)a)->id-((structstudent*)b)->id;//成绩相同时比较学号

}

intfind(charc[])

{//打开相应文件,提取学生信息

FILE*fp;

inti;

if(!

(fp=fopen(c,"rb")))//打开名为c的文件

{//若名为c的文件不存在

printf("无法查询到该课程!

\n");

return-1;

}

rewind(fp);

for(i=0;!

feof(fp);++i)//文件存在,读取信息

fread(&st[i],sizeof(structstudent),1,fp);

fclose(fp);

returni-1;//返回学生人数

}

doublegpa(doublescore)

{//计算gpa(成绩统一上取整)

if(score<=59)

return0;

if(score<=62)

return1.0;

if(score<=65)

return1.3;

if(score<=69)

return1.7;

if(score<=72)

return2.0;

if(score<75)

return2.3;

if(score<=79)

return2.7;

if(score<=82)

return3.0;

if(score<=85)

return3.3;

if(score<=89)

return3.7;

return4.0;

}

voidinsert()

{//输入学生成绩及信息

charc[20];

inti,x,y,z;//x、y、z分别表示平时、期中、期末成绩所占比例

system("cls");//清屏

printf("\t请输入课程名称(如需退出请输stop):

");

scanf("%s%*c",c);//使用%*c是为了防止对后续输入有影响

if(!

strcmp(c,"stop"))

return;

do{

printf("\t平时期中期末所占比例和为100%%\n\n");

printf("\t请输入平时成绩所占比例(%%):

");

scanf("%d",&x);

printf("\t请输入期中成绩所占比例(%%):

");

scanf("%d",&y);

printf("\t请输入期末成绩所占比例(%%):

");

scanf("%d",&z);

}while(x+y+z!

=100);

for(i=0;;++i){

printf("\n\t请输入学生学号(若结束录入,请输0):

");

scanf("%d",&st[i].id);

if(!

(st[i].id))

break;

printf("\t请输入学生姓名:

");

scanf("%s",st[i].name);

printf("\t请输入平时成绩:

");

scanf("%lf",&st[i].usual);

printf("\t请输入期中成绩:

");

scanf("%lf",&st[i].mid);

printf("\t请输入期末成绩:

");

scanf("%lf",&st[i].final);

st[i].score=st[i].usual*x/100+st[i].mid*y/100+st[i].final*z/100;

st[i].gpa=gpa(st[i].score);

}

save(c,i,st);//保存

system("pause");

}

voidamend()

{//修改学生成绩及信息

inti,n,num,x,y,z;

charc[20];

system("cls");//清屏

for(n=-1;n<0;){

printf("\t请输入课程名(退出请输入stop):

");

scanf("%s%*c",c);

if(!

strcmp(c,"stop"))

return;

n=find(c);//打开相应文件

}

do{

printf("\t平时期中期末所占比例和为100%%\n\n");

printf("\t请输入平时成绩所占比例(%%):

");

scanf("%d",&x);

printf("\t请输入期中成绩所占比例(%%):

");

scanf("%d",&y);

printf("\t请输入期末成绩所占比例(%%):

");

scanf("%d",&z);

}while(x+y+z!

=100);

while

(1){

printf("\t请输入需修改学生学号(若结束录入,请输0):

");

scanf("%d",&num);

if(!

num)

break;

for(i=0;i

if(st[i].id==num){//找到之后,重新输入成绩

printf("\t请输入平时成绩:

");

scanf("%lf",&st[i].usual);

printf("\t请输入期中成绩:

");

scanf("%lf",&st[i].mid);

printf("\t请输入期末成绩:

");

scanf("%lf",&st[i].final);

st[i].score=st[i].usual*x/100+st[i].mid*y/100+st[i].final*z/100;

st[i].gpa=gpa(st[i].score);

break;//成绩更新后停止查找

}

}

if(i==n)//查找了所有学号,均不符

printf("\t抱歉,查无此人!

\n");

}

save(c,n,st);//重新保存文件,并覆盖之前的数据

system("pause");

}

voidseek()

{//个人成绩查询

inti,n,num;

charc[20];

system("cls");

printf("请输入学生学号:

");

scanf("%d",&num);

while

(1){

for(n=-1;n<0;){

printf("请输入课程名称(结束请输stop):

");

scanf("%s%*c",c);//c为相应文件名

if(!

strcmp(c,"stop"))

return;

n=find(c);//n为学生人数

}

for(i=0;i

if(num==st[i].id){//找到之后,输出成绩

printf("\t姓名:

%s\t学号:

%d\n\t平时成绩:

%6.1lf\t期中成绩:

%6.1lf\t期末成绩:

%6.1lf\n\t总成绩:

%6.1lf\t\tGPA:

%6.1lf\n",st[i].name,st[i].id,st[i].usual,st[i].mid,st[i].final,st[i].score,st[i].gpa);

break;

}

if(i==n)//查找了所有学号,均不符

printf("抱歉,查无此人!

\n");

}

system("pause");

}

voidrank()

{//班级成绩排名

inti,n;

charc[20];

while

(1){

system("cls");

printf("\t请输入课程名(如结束请输入stop):

");

scanf("%s%

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1