基于c++学生成绩管理系统.docx

上传人:b****1 文档编号:1585504 上传时间:2023-05-01 格式:DOCX 页数:19 大小:62.30KB
下载 相关 举报
基于c++学生成绩管理系统.docx_第1页
第1页 / 共19页
基于c++学生成绩管理系统.docx_第2页
第2页 / 共19页
基于c++学生成绩管理系统.docx_第3页
第3页 / 共19页
基于c++学生成绩管理系统.docx_第4页
第4页 / 共19页
基于c++学生成绩管理系统.docx_第5页
第5页 / 共19页
基于c++学生成绩管理系统.docx_第6页
第6页 / 共19页
基于c++学生成绩管理系统.docx_第7页
第7页 / 共19页
基于c++学生成绩管理系统.docx_第8页
第8页 / 共19页
基于c++学生成绩管理系统.docx_第9页
第9页 / 共19页
基于c++学生成绩管理系统.docx_第10页
第10页 / 共19页
基于c++学生成绩管理系统.docx_第11页
第11页 / 共19页
基于c++学生成绩管理系统.docx_第12页
第12页 / 共19页
基于c++学生成绩管理系统.docx_第13页
第13页 / 共19页
基于c++学生成绩管理系统.docx_第14页
第14页 / 共19页
基于c++学生成绩管理系统.docx_第15页
第15页 / 共19页
基于c++学生成绩管理系统.docx_第16页
第16页 / 共19页
基于c++学生成绩管理系统.docx_第17页
第17页 / 共19页
基于c++学生成绩管理系统.docx_第18页
第18页 / 共19页
基于c++学生成绩管理系统.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于c++学生成绩管理系统.docx

《基于c++学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《基于c++学生成绩管理系统.docx(19页珍藏版)》请在冰点文库上搜索。

基于c++学生成绩管理系统.docx

基于c++学生成绩管理系统

学生成绩信息管理系统的开发

一、引言

学生成绩信息管理系统,是针对学生的成绩及其他信息整理,方便信息的整合和查询。

本次设计的程序是对学生成绩信息管理系统的初步的开发和应用。

它是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,它能够为用户提供充足的信息和快捷的查询手段。

能有效的帮助学校和老师掌握学生的情况,为学生提供成绩跟课程方面的查询。

学生成绩管理系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理。

随着科学技术的不断提高,计算机科学日渐成熟,使用日趋成熟的计算机技术来代替传统的人工模式,来实现学生信息的现代化管理,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

作为计算机应用的一部分,使用计算机对学生信息进行管理,具有着手工管理所无法比拟的优点.例如:

检索迅速、查找方便、易修改、可靠性高、存储量大、数据处理快捷、寿命长成本低等。

这些优点能够极大地提高学生信息管理系统论文的效率,也是学校的科学化、正规化管理,与世界接轨的重要条件。

用计算机制作的学生信息管理系统论文还可以通过功能强大的Internet网及时的向学生的家长传递该生在校的最新成绩,有助于学校与家长的信息互动,为更好地把握学校的教育方针起到了一定的促进作用。

因此,开发这样一套管理软件成为很有必要的事情。

二、项目计划

根据要求,由于学生信息是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.

三、需求分析

1、设计的任务是:

(1)将学生的基本信息录入计算机;

(2)将学生成绩信息录入计算机;

(3)可以对学生成绩通过班级号进行查询;

(4)可以对学生的成绩进行删除;

(5)可以对学生的成绩进行修改;

(6)可以通过考试的学生信息。

2、已知:

输入学生的姓名、学号、班级、成绩。

程序的输出信息主要是:

按照班级可以查询时每一个学生的姓名,学号及平均课程成绩,操作完成后,程序可以对文件进行保存,然后退出系统。

四、总体设计

根据上面的需求分析,可以将这个系统分为以下模块:

输入模块,修改模块,删除模块,查询模块,显示模块.

 

学生成绩管理系统

数据输入

数据显示

数据修改

数据删除

数据查询

五、概要设计

1、主函数

主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择

.

流程图:

显示一系列功能模块

输入n,判断n是否是A--F

N

根据n的值调用各功能模块函数

Y

程序如下:

voidmain()

{

charchoice;//菜单选择项

charclassname[6];//输入的班级名称

intnumb;//输入的学号

do{

printf("\t\t**********************\n"

"\t\t*学生信息管理*\n"

"\t\t**********************\n\n"

"\t┏━━━━━━━━━━━━━━━━━━┓\n"

"\t┃1.录入学生基本信息┃\n"

"\t┃2.录入成绩信息┃\n"

"\t┃┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┃\n"

"\t┃3.修改学生成绩┃\n"

"\t┃┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┃\n"

"\t┃4.删除学生全部信息┃\n"

"\t┃┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┃\n"

"\t┃5.按[班级]查询学生基本信息┃\n"

"\t┃6.按[班级]查询成绩┃\n"

"\t┃7.显示通过考试的学生信息┃\n"

"\t┃┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┃\n"

"\t┃8.退出┃\n"

"\t┗━━━━━━━━━━━━━━━━━━┛\n\n"

"请输入您的选择(数字1-8):

");

scanf("\n%c",&choice);

system("cls");

switch(choice)

{

case'1':

printf("\t\t录入学生基本信息\n\n");

addinfo();//录入学生基本信息

break;

case'2':

printf("\t\t录入学生成绩\n\n");

printf("请先输入班级名称:

");

scanf("%5s",classname);

addscore(classname);//录入成绩信息

break;

case'3':

printf("\t\t修改学生成绩\n\n");

printf("请先输入要修改的班级名称和学号:

");

scanf("%5s%d",classname,&numb);

updatescore(classname,numb);

break;

case'4':

printf("\t\t删除学生全部信息\n\n");

printf("请先输入要删除的班级名称和学号:

");

scanf("%5s%d",classname,&numb);

deleteall(classname,numb);

break;

case'5':

printf("\t\t按[班级]查询学生信息\n\n");

queryclass();//按[班级]查询学生基本信息

break;

case'6':

printf("\t\t按[班级]查询成绩\n\n");

queryclassscore();//按[班级]查询成绩

break;

case'7':

printf("\t\t显示通过考试的学生信息\n\n");

querypass();//显示通过考试的学生信息

break;

case'8':

printf("程序退出。

\t谢谢使用!

:

)\n\n");

exit(0);

default:

printf("您的输入有误,请重试!

\n\n");

fflush(stdin);

break;

}

printf("\n按任意键返回......");

getch();

system("cls");

}while(choice!

='8');

}

2、输入模块

单独看各数据信息,学号,姓名是字符型,可以采用字符型数组;分数为整数,采用整数;数据信息存放在文件中,一条记录对应一个学生,既符合习惯又方便信息管理.

程序如下:

voidaddinfo()

{

charflag;//是否继续输入

charclas[6];//输入的班级名称

intnewno;

if((fpinfo=fopen("info.dat","ab+"))==NULL)//以追加方式打开学生信息表"info.dat"

{

printf("文件打开失败.\n");

exit

(1);

}

do

{

printf("请输入学生基本信息");

printf("\n\t学生所在班级名称:

");

scanf("%5s",&clas);//输入的班级名称

if(strlen(clas)<1)

{

printf("请输入班级名称.\n");;

return;

}

newno=0;

rewind(fpinfo);//文件指针置于文件开始位置

while(fread(&stu,sizeof(stuinfo),1,fpinfo)==1)//从文件中查找是否已经存在该班级的记录,如果存在找出最大学号

if(strcmp(stu.classes,clas)==0)

{

if(newno

newno=stu.numb;

}

strcpy(stu.classes,clas);

printf("\t班内学号:

");

stu.numb=newno+1;//自动生成该班级的学号=最大学号+1

printf("%d",newno+1);

printf("\n\t学生姓名:

");

scanf("%19s",&stu.name);

if(strlen(stu.name)<1)

{

printf("请输入学生名字.\n");;

return;

}

stu.avgscore=0.0;//向文件中追加记录时,平均成绩默认值为0

fwrite(&stu,sizeof(stuinfo),1,fpinfo);//将输入的结构体数据保存到文件中

printf("继续输入吗?

:

");

scanf("\n%c",&flag);

}while(flag=='Y'||flag=='y');

fclose(fpinfo);

return;

}

/****************************************/

/*录入学生成绩信息*/

//首先输入要录入班级名称,且该班级必须在info.dat中存在,然后再输入相应数据

/****************************************/

voidaddscore(charname[])

{

charflag,flagname='n',flagnumbi='n',flagnumbs='n';//是否继续输入,是否班级名称存在,info.dat是否学号存在,score.dat是否学号存在

intnumb;

if((fpinfo=fopen("info.dat","rb+"))==NULL)//打开学生基本信息文件"info.dat"

{

printf("info.dat文件打开失败.\n");

return;

}

while(fread(&stu,sizeof(stuinfo),1,fpinfo)==1)

{

if(strcmp(name,stu.classes)==0)//通过循环在文件"info.dat"中查找是否有该班级的记录

{

flagname='y';//如果文件"info.dat"中存在该班级的记录,则flagname='y',循环结束

break;

}

else

flagname='n';

}

if(flagname=='n')//如果文件"info.dat"中不存在该班级的记录,关闭文件,函数结束

{

printf("info.dat文件中没有%s班级.\n",name);

fclose(fpinfo);

return;

}

if((fpscore=fopen("score.dat","ab+"))==NULL)//如果文件"info.dat"中存在该班级的记录,以追加方式打开成绩文件"score.dat"

{

printf("文件打开失败.\n");

return;

}

do

{

printf("\n\t请输入学号:

");//输入学号

scanf("%d",&numb);

//numb=atoi(cnumb);

rewind(fpinfo);//"info.dat"文件指针指向文件开始位置

while(fread(&stu,sizeof(stuinfo),1,fpinfo)==1)

{

if((strcmp(name,stu.classes)==0)&&stu.numb==numb)//判断"info.dat"文件中是否存在该班级该学号的记录

{

flagnumbi='y';

rewind(fpscore);//如果存在,"score.dat"文件指针指向文件开始位置

while(fread(&score,sizeof(structallscores),1,fpscore)==1)//循环判断"score.dat"文件中是否已经存在该学号的记录

{

if((strcmp(name,score.classes)==0)&&score.numb==numb)

{

flagnumbs='y';//如果"score.dat"文件中存在该班级该学号的记录,flagnumbs='y'

break;

}

else

flagnumbs='n';

}

break;

}

else

flagnumbi='n';

}

if(flagnumbi=='n'||(flagnumbi=='y'&&flagnumbs=='y'))//如果"info.dat","score.dat"文件都存在,则不允许向"score.dat"追加成绩信息

{

printf("info.dat文件中没有学号为%d学生信息,或者score.dat文件中已经存在改学号学生的成绩\n",numb);

fclose(fpinfo);

fclose(fpscore);

return;

}

strcpy(score.classes,name);//给结构score的classes成员赋值--班级名称

score.numb=numb;//学号

printf("\n\t请输入C语言的成绩:

");

scanf("%f",&score.c_score);//C语言的成绩

printf("\t请输入SQL语言的成绩:

");

scanf("%f",&score.sql_score);//SQL语言的成绩

printf("\t请输入VB语言的成绩:

");

scanf("%f",&score.vb_score);//VB语言的成绩

stu.avgscore=(score.c_score+score.sql_score+score.vb_score)/3.0f;//计算平均成绩

fseek(fpinfo,-1L*(long)sizeof(stuinfo),SEEK_CUR);//修改"info.dat"中该班级该学号的记录

fwrite(&stu,sizeof(stuinfo),1,fpinfo);

fseek(fpinfo,0,SEEK_CUR);//SEEK_CUR当前位置

fwrite(&score,sizeof(structallscores),1,fpscore);//向"score.dat"文件追加记录

printf("继续输入吗?

:

");

scanf("\n%c",&flag);

}while(flag=='Y'||flag=='y');

fclose(fpscore);

fclose(fpinfo);

return;

}

3、修改模块

用户输入要修改学生的成绩,根据学生的学号和班级名称信息查找学生记录,并提示用户修改该记录的哪部分信息.根据用户选择修改相应的信息.

流程图:

 

输入要修改的成绩

YN

Y

N

程序如下:

voidupdatescore(charname[],intnumb)

{

charflaginfo='n',flagscore='n';

if((fpinfo=fopen("info.dat","rb+"))==NULL)//打开学生基本信息文件"info.dat"

{

printf("info.dat文件打开失败.\n");

return;

}

while(fread(&stu,sizeof(stuinfo),1,fpinfo)==1)

if(strcmp(name,stu.classes)==0&&stu.numb==numb)//通过循环在文件"info.dat"中查找是否有该班级的记录

{

flaginfo='y';

break;

}

if((fpscore=fopen("score.dat","rb+"))==NULL)//以读写方式打开学生基本信息文件"score.dat"

{

printf("score.dat文件打开失败.\n");

return;

}

while(fread(&score,sizeof(structallscores),1,fpscore)==1)

if((strcmp(name,score.classes)==0)&&score.numb==numb)

{

flagscore='y';

break;

}

if(flaginfo=='y'&&flagscore=='y')

{

printf("\n\t请重新输入C语言的成绩:

");

scanf("%f",&score.c_score);//C语言的成绩

printf("\t请重新输入SQL语言的成绩:

");

scanf("%f",&score.sql_score);//SQL语言的成绩

printf("\t请重新输入VB语言的成绩:

");

scanf("%f",&score.vb_score);//VB语言的成绩

stu.avgscore=(score.c_score+score.sql_score+score.vb_score)/3.0f;//计算平均成绩

fseek(fpinfo,-1L*(long)sizeof(stuinfo),SEEK_CUR);//修改"info.dat"中该班级该学号的记录

fwrite(&stu,sizeof(stuinfo),1,fpinfo);

fseek(fpinfo,0,SEEK_CUR);

fseek(fpscore,-1L*(long)sizeof(structallscores),SEEK_CUR);//修改"info.dat"中该班级该学号的记录

fwrite(&score,sizeof(structallscores),1,fpscore);//向"score.dat"文件追加记录

fseek(fpscore,0,SEEK_CUR);

fclose(fpinfo);

fclose(fpscore);

printf("\t恭喜您!

成绩修改成功!

");

}

}

四、删除模块

该模块的功能是,用户输入要删除的学生的信息,根据学生学号和班级查找记录并删除.

YN

N

Y

N

Y

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2