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

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

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

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

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

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

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

 

学生成绩管理系统

数据输入

数据显示

数据修改

数据删除

数据查询

五、概要设计

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┃4.删除学生全部信息┃\n"

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

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

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

\t┃8.退出┃\n"

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

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

);

scanf("

\n%c"

&

choice);

system("

cls"

switch(choice)

{

case'

1'

:

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

addinfo();

//录入学生基本信息

break;

2'

\t\t录入学生成绩\n\n"

请先输入班级名称:

"

%5s"

classname);

addscore(classname);

//录入成绩信息

3'

\t\t修改学生成绩\n\n"

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

%5s%d"

classname,&

numb);

updatescore(classname,numb);

4'

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

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

deleteall(classname,numb);

5'

\t\t按[班级]查询学生信息\n\n"

queryclass();

//按[班级]查询学生基本信息

6'

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

queryclassscore();

//按[班级]查询成绩

7'

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

querypass();

//显示通过考试的学生信息

8'

程序退出。

\t谢谢使用!

)\n\n"

exit(0);

default:

您的输入有误,请重试!

\n\n"

fflush(stdin);

}

\n按任意键返回......"

getch();

}while(choice!

='

}

2、输入模块

单独看各数据信息,学号,姓名是字符型,可以采用字符型数组;

分数为整数,采用整数;

数据信息存放在文件中,一条记录对应一个学生,既符合习惯又方便信息管理.

voidaddinfo()

charflag;

//是否继续输入

charclas[6];

intnewno;

if((fpinfo=fopen("

info.dat"

"

ab+"

))==NULL)//以追加方式打开学生信息表"

文件打开失败.\n"

exit

(1);

do

{

请输入学生基本信息"

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

&

clas);

if(strlen(clas)<

1)

请输入班级名称.\n"

;

return;

newno=0;

rewind(fpinfo);

//文件指针置于文件开始位置

while(fread(&

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

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

if(newno<

stu.numb)

newno=stu.numb;

}

strcpy(stu.classes,clas);

\t班内学号:

stu.numb=newno+1;

//自动生成该班级的学号=最大学号+1

%d"

newno+1);

\n\t学生姓名:

%19s"

stu.name);

if(strlen(stu.name)<

请输入学生名字.\n"

stu.avgscore=0.0;

//向文件中追加记录时,平均成绩默认值为0

fwrite(&

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

//将输入的结构体数据保存到文件中

继续输入吗?

<

y/n>

flag);

}while(flag=='

Y'

||flag=='

y'

fclose(fpinfo);

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

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

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

voidaddscore(charname[])

charflag,flagname='

n'

flagnumbi='

flagnumbs='

//是否继续输入,是否班级名称存在,info.dat是否学号存在,score.dat是否学号存在

rb+"

))==NULL)//打开学生基本信息文件"

info.dat文件打开失败.\n"

while(fread(&

stu,sizeof(stuinfo),1,fpinfo)==1)

if(strcmp(name,stu.classes)==0)//通过循环在文件"

中查找是否有该班级的记录

flagname='

//如果文件"

中存在该班级的记录,则flagname='

,循环结束

else

if(flagname=='

)//如果文件"

中不存在该班级的记录,关闭文件,函数结束

info.dat文件中没有%s班级.\n"

name);

if((fpscore=fopen("

score.dat"

))==NULL)//如果文件"

中存在该班级的记录,以追加方式打开成绩文件"

\n\t请输入学号:

//输入学号

//numb=atoi(cnumb);

//"

文件指针指向文件开始位置

stu,sizeof(stuinfo),1,fpinfo)==1)

if((strcmp(name,stu.classes)==0)&

&

stu.numb==numb)//判断"

文件中是否存在该班级该学号的记录

flagnumbi='

rewind(fpscore);

//如果存在,"

score,sizeof(structallscores),1,fpscore)==1)//循环判断"

文件中是否已经存在该学号的记录

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

score.numb==numb)

flagnumbs='

//如果"

文件中存在该班级该学号的记录,flagnumbs='

if(flagnumbi=='

||(flagnumbi=='

&

flagnumbs=='

))//如果"

,"

文件都存在,则不允许向"

追加成绩信息

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

numb);

fclose(fpscore);

strcpy(score.classes,name);

//给结构score的classes成员赋值--班级名称

score.numb=numb;

//学号

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

%f"

score.c_score);

//C语言的成绩

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

score.sql_score);

//SQL语言的成绩

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

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);

//修改"

中该班级该学号的记录

fseek(fpinfo,0,SEEK_CUR);

//SEEK_CUR当前位置

score,sizeof(structallscores),1,fpscore);

//向"

文件追加记录

3、修改模块

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

输入要修改的成绩

YN

voidupdatescore(charname[],intnumb)

charflaginfo='

flagscore='

if(strcmp(name,stu.classes)==0&

stu.numb==numb)//通过循环在文件"

flaginfo='

))==NULL)//以读写方式打开学生基本信息文件"

score.dat文件打开失败.\n"

score,sizeof(structallscores),1,fpscore)==1)

flagscore='

if(flaginfo=='

flagscore=='

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

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

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

fseek(fpscore,-1L*(long)sizeof(structallscores),SEEK_CUR);

文件追加记录

fseek(fpscore,0,SEEK_CUR);

\t恭喜您!

成绩修改成功!

四、删除模块

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

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

当前位置:首页 > PPT模板 > 简洁抽象

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

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