c++课程设计 学生成绩管理系统设计.docx

上传人:b****3 文档编号:27199073 上传时间:2023-06-28 格式:DOCX 页数:30 大小:217.13KB
下载 相关 举报
c++课程设计 学生成绩管理系统设计.docx_第1页
第1页 / 共30页
c++课程设计 学生成绩管理系统设计.docx_第2页
第2页 / 共30页
c++课程设计 学生成绩管理系统设计.docx_第3页
第3页 / 共30页
c++课程设计 学生成绩管理系统设计.docx_第4页
第4页 / 共30页
c++课程设计 学生成绩管理系统设计.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

c++课程设计 学生成绩管理系统设计.docx

《c++课程设计 学生成绩管理系统设计.docx》由会员分享,可在线阅读,更多相关《c++课程设计 学生成绩管理系统设计.docx(30页珍藏版)》请在冰豆网上搜索。

c++课程设计 学生成绩管理系统设计.docx

c++课程设计学生成绩管理系统设计

课程设计

 

课程设计名称:

C语言程序设计

专业班级:

xxxxxxxxxxxxxxxxx

学生姓名:

xxxxxx__

学号:

xxxxxxx_

指导教师:

_

课程设计时间:

2011年12月_

 

计算机科学与技术专业课程设计任务书

学生姓名

专业班级

学号

题目

学生成绩管理系统设计

指导教师

同组姓名

主要内容

学习掌握并熟练运用C语言进行程序设计;

学习使用数组、指针、结构体和文件等数据结构;

根据具体题目进行简单的需求分析,给出设计方案。

任务要求

综合运用和融化所学理论知识,提高分析和解决实际问题的能力,使用C语言设计一个简单的学生成绩管理系统;

完成需求分析报告,报告中对关键部分给出图表说明。

要求格式规范,工作量饱满。

参考文献

C语言程序设计基础与项目实训中国人民大学出版社。

C语言程序设计案例教程中国铁道出版社。

C语言程序设计案例实践清华大学出版社

C语言程序设计实验报告

一、需求分析

随着计算机的飞速发展,它的应用已经十分广泛,它在人们的生产、生活、工作和学习中发挥着重要的作用。

例如一个高等教育的学校,拥有数千名乃至数万名的学生,那么如何管理这么庞大的学生成绩档案呢?

这时,开发一个功能完善的学生成绩管理系统就必不可少了。

从学生的成绩的查询到管理实现了自动化的模式,从而提高了老师的工作效率和减少工作中的出错率,对学校的学生管理更加方便。

本系统根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,一方便对成绩各项管理操作。

本系统能对成绩进行输入和输出:

能按姓名对学生进行排序,并显示学生的资料、成绩等,不过得以系统输入学生资料、成绩为前提;能添加学生成绩资料;能根据学生的姓名来查询该学生的成绩资料,并修改或是删除该学生信息;能够从文件中读取学生信息,并且添加到系统中;能把对系统锁进行的操作进行保存,及时更新系统中的数据。

二、人员分工

姓名

主要负责内容

总体设计;数据程序查询主菜单程序

主菜单程序、录入数据程序的编码与调试、

输出、统计、

删除、追加数据程序的编码与调试

修改数据程序的编码与调试

三、运行环境

硬件环境:

CPU(pentium42.4Hz)、内存(256MB)、硬盘(80G)

软件环境:

Windows7、VC6.0

四、系统模版功能

1、系统总体框图

 

2、模块设计

在我们设计的程序中:

包括了个人成绩录入,修改学生成绩,查询个人成绩,删除个人成绩,四大模块组成。

本系统定义了结构体allstudentinfo,用于存放学生的基本信息和成绩管理信息。

进入该程序后会看到总的页面菜单,包括

1、录入学生个人成绩;

2、修改学生个人成绩;

3、查询学生个人成绩;

4、删除学生个人成绩;

5、退出成绩管理系统;

再按个人需求分别进入需要的界面。

我们用到了switch函数语句和if语句和for循环语句等本学期学到的相关知识。

个人成绩录入:

首先,打开文件“个人成绩录入.dat”如果成功,将输入学生姓名,学号及语、数、外,三科成绩录入到文件当中(在录入学生信息时,系统调用函数”inputsorc()”,将新的学生信息录入到文件中。

),然后判断输入是否结束,如果没有错误,请继续输入,否则推出录入模块。

如有错误,要按照当前操作进行修正。

再依次录入要输入的学生信息,按照之前的操作进行。

修改学生成绩:

当用户在“学生个人信息管理”界面中按“2”进入“修改学生个人成绩”。

可以对当前已录入的学生成绩进行修改,在此界面中课选择“1~3”之间的数值,调用相应功能进行操作,并将修改后的信息保存在“学生个人成绩.dat”中。

如果成功,选择要修改的内容和要修改的姓名。

(在修改学生信息时,调用‘mofsorc()’函数实现对学生3科成绩的修改)如果学生存在,则输入新的信息,并保存在文件中;如果不存在,输入错误信息,并选择要重新修改的内容。

如果打开文件有错误,输出错误信息并推出学生管理系统。

主要功能是用来修改学生资料。

在系统保存了某学生资料的前提下,想要查找学生资料,可以输入学生姓名,系统就会显示学生资料和各科成绩等信息,这样就可以修改学生的资料,成绩等信息。

查询个人成绩:

用户在“学生个人信息界面”中,按“3”,回车,便可进入“查询个人成绩”中。

在查询学生个人成绩时,可调用“seasorc()”函数实现,并按照

1、学生姓名;

2、学号;

进行查询。

如果成功,则选择学生的姓名或学号,则显示该学生信息;如果不存在,重新输入要查询的内容。

然后判断是否继续查询,否则退出模块。

如果打开文件有错误,输出模块信息有错误并退出信息管理器。

主要功能是用来查询学生资料。

在系统保存了某学生资料的前提下,想要查找学生资料,可以输入学生姓名,系统就会显示学生资料和各科成绩等信息。

删除学生个人成绩:

当用户在“学生个人信息管理”界面中按“4”,回车,即可进入“删除个人信息“。

即出现:

printf("请选择你的操作选项:

1.按姓名查找删除2.按学号查找删除");

在删除学生个人信息时,可调用“delsorc()”函数,按学生的姓名字段或学号查找要删除的学生个人信息,并将删除后的信息保存在文件“学生个人成绩.dat”中。

主要功能是用来删除学生资料。

在系统保存学生资料的前提下,想删除某学生的资料,可以输入学生的姓名,系统查找学生资料后,就可以删除了。

由于学生辍学,毕业等原因,即使对系统进行更新,删除一些没有用的信息,可以使系统更加优化。

退出学生个人成绩:

按照当前程序输入的步骤退出该程序。

主要功能是在对系统进行一系列操作,比如添加、删除、修改学生资料后,对系统的最新操作进行保存,即使更新系统,方便下一次的操作。

 

五、源程序代码

/*源程序:

学生成绩管理系统*/

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

//学生学籍管理系统.

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

#include

#include

#include

#include

#include

#defineNAME20

#defineSEX10

#defineSORC3

#defineSTUDENTMAX10000000

Structstudentsorc//学生成绩结构

charname[NAME];//学生姓名

intID;//学生学号

floatsorc[6];//记录学生成绩

floataver;//平均分

floatsum;//总分

};

 

/**************************学生个人成绩管理*******************/

voidsorcmeun(structallstudentinfo*p_student)

{

intin;

charch;

do

{

printf("\n\n");

printf("\t---------------------------------------------------------------------\n");

printf("\t|学生个人成绩管理|\n");

printf("\t|---------------------------------------------------------------------|\n");

printf("\t|1、录入学生个人成绩|\n");

printf("\t|2、修改学生个人成绩|\n");

printf("\t|3、查询学生个人成绩|\n");

printf("\t|4、删除学生个人成绩|\n");

printf("\t|5、浏览所有学生成绩|\n");

printf("\t|6、退出成绩管理系统|\n");

printf("\t|---------------------------------------------------------------------|\n");

printf("\t请您正确的选择:

");

if(!

scanf("%d",&in)==1))

{

while((ch=getchar())!

='\n')

putchar(ch);

printf("没有此选项,请正确选择!

");

getch();

continue;

}

fflush(stdin);

switch(in)

{

case1:

inputsorc(p_student);

break;

case2:

mofsorc(p_student);

break;

case3:

seasorc(p_student);

break;

case4:

delsorc(p_student);

break;

case5:

return;

default:

printf("没有此选项,请正确选择!

");

break;

}

}

while(l);

}

 

/*************************个人成绩录入************************/

voidinputsorc(structallstudentinfo*p_student)

{

inti.count,countinfo;

char*tempname,ch;

system("cls");

if((sorcfile=fopen(filenamel,"a+b"))==NULL)

{

printf("不能打开文件,请确认磁盘已满或文件是否存在");

getch();

exit(l);

}

rewind(sorcfile);

for(count=0;ferad(&p_student[count].student1,sizeof(structstudentsorc),1,sorcfile)==1;count++)

{

countine;

}

tempname=(char*)malloc(20*sizeof(char));

printf("请输入第%d学生的姓名:

",count+1);

while(count

=NULL&&tempname[0]!

='\0')

{

strcpy(p_student[count].student1.name,tempname);

printf("请输入该学生的学号:

");

scanf("%d",&p_student[count].student1.ID);

fflush(stdin);

printf("请输入该个学生的3科成绩\n");

printf("----------------------------------\n");

printf("\n语文:

");

scanf("%f",&p_student[count].student1.sorc[0]);

fflush(stdin);

printf("\n数学:

");

scanf("%f",&p_student[count].student1.sorc[0]);

fflush(stdin);

printf("\n英语:

");

scanf("%f",&p_student[count].student1.sorc[0]);

fflush(stdin);

printf("-----------------------------------------\n");

fwrite(&p_student[count++].student,sizeof(structstudentsorc),1,sorcfile);

printf("确定要继续输入下一个学生的成绩吗?

(y/n)");

ch=getchar();

if(ch=='y'||ch=='Y')

{

system("cls");

free(tempname);

tempname=(char*)malloc(20*sizeof(char));

printf("请输入第%d个学生的姓名:

",count+1);

countinue;

}

else

{

system("cls");

free(tempname);

fclose(sorcfile);

return;

}

}

printf("输入有误请返回重新选择操作.....!

");

free(tempname);

fclose(sorcfile);

getch();

system("cls");

return;

}

 

/*************************修改学生成绩*********************/

voidmofsorc(structallstudengtinfo*p_student)

{

inti,j,k,count;

floatsorc;

charch;

char*tempname;

count=sorcdatfile(p_student);

if(!

count)

{

printf(“读取数据失败,请确认已成功录入或文件是否损坏”);

getch();

system(“cls”);

return;

}

tempname=(char*)malloc(20*sizeof(char));

printf(“请输入要修改成绩的学生姓名:

”);

while(gets(tempname)!

=NULL&&tempname[0]!

=’\o’)

{

if(strcmp(tempname,p_student[i].student1.name))

{

continue;

}

else

{

printf(“请选择要修改的科目成绩:

1.语文2.英语3.数学\n”);

scanf(“%d”&j);

fflush(stdin);

if(j==1)

{

printf(“请重新输入%s的语文成绩:

”,tempname);

scanf(“%f”&sorc);

p_student[i].student1.sorc[0]=sorc;

fflush(stdin);

sorcfile=fopen(filenamel,”w+b”);//把修改后的重新写入文件夹

for(k=0;k

{

if(fwrite(&p_student[k].student1,sizeof(structstudentsorc),1,sorcfile)!

=1)

{

free(tempname);

fclose(sorcfile);//写入失败关闭文件

printf(“修改失败,…….!

”);

getch();

system(“cls”);

return;

}

}

free(tempname);

fclose(sorcfile);

printf(“修改成功,返回…….!

”);

getch();

system(“cls”);

return;

}

elseif(j==2)

{

printf(“请重新输入%s的英语成绩:

”,tempname);

scanf(“%f”&sorc);

p_student[i].student1.sorc[2]=sorc;

fflush(stdin);

sorcfile=fopen(filenamel,”w+b”);//把修改后的重新写入文件夹

for(k=0;k

{

if(fwrite(&p_student[k].student1,sizeof(structstudentsorc),1,sorcfile)!

=1)

{

free(tempname);

fclose(sorcfile);//写入失败关闭文件

printf(“修改失败,…….!

”);

getch();

system(“cls”);

return;

}

}

free(tempname);

fclose(sorcfile);

printf(“修改成功,返回…….!

”);

getch();

system(“cls”);

return;

}

elseif(j==3)

{

printf(“请重新输入%s的数学成绩:

”,tempname);

scanf(“%f”&sorc);

p_student[i].student1.sorc[2]=sorc;

fflush(stdin);

sorcfile=fopen(filenamel,”w+b”);//把修改后的重新写入文件夹

for(k=0;k

{

if(fwrite(&p_student[k].student1,sizeof(structstudentsorc),1,sorcfile)!

=1)

{

free(tempname);

fclose(sorcfile);//写入失败关闭文件

printf(“修改失败,…….!

”);

getch();

system(“cls”);

return;

}

}

free(tempname);

fclose(sorcfile);

printf(“修改成功,返回…….!

”);

getch();

system(“cls”);

return;

}

else

{

printf(“没有此科目,返回…….!

”);

free(tempname);

getch()

system(“cls”);

return;

}

}

}

printf(“没有找到%s的学习成绩,返回…….!

”,tempname);

free(tempname);

getch()

system(“cls”);

return;

}

printf(“输入有误,返回…….!

”,tempname);

free(tempname);

getch()

system(“cls”);

return;

}

 

/*******************查询个人成绩*********************/

voidseasorc(structallstudentinfo*p_student)

{

char*tempname;

inttempID,stuID;

inti,j,cont;

floatsum=0.0,aver;

count=sorcdatfile(p_student);

if(!

count)

{

printf("读取数据失败,请确认数据是否存在或文件是否损坏");

getch();

system("cls");

return;

}

printf("请选择要操作的类型:

\n");

printf("1.按姓名查找2.按学号查找\n");

scanf("%d",&tempID);

fflush(stdin);

if(tempID==1)

{

tempname=(char*)malloc(20*sizeof(char));

printf("请输入该学生的姓名:

");

while(gets(tempname)!

=NULL&&tempname[0]!

='\0')

{

for(i=0;i

{

if(strcmp(tempname,p_student[i].student1.name))

{

continue;

}

else

{

for(j=0;j<3;j++)

{

sum+=p_student[i].student1.sorc[j];//计算总分

}

aver=sum/3.0;//计算平均分

printf("%s的学生成绩表\n",tempname);

printf("----------------------------\n");

printf("\n学号:

%d\n",p_student[i].student1.ID);

printf("\n姓名:

%d\n",p_student[i].student1.name);

printf("\n语文:

%.2f\n",p_student[i].student1.sorc[0]);

printf("\n数学:

%.2f\n",p_student[i].student1.sorc[1]);

printf("\n英语:

%.2f\n",p_student[i].student1.sorc[2]);

printf("\n总分:

%.2f\n",sum);

printf("\n平均分:

%.2f\n",aver);

printf("--------------------------\n");

printf("查询完毕,按任意键返回!

");

free(tempname);

getch();

system("cls");

return;

}

}

printf("找不到该学生的成绩,返回.......!

");

free(tempname);

getch();

system("cls");

return;

}

elseif(tempID==2)

{

printf("请输入该学生的ID学号:

");

scanf("%d",&stuID);

fflush(stdin);

for(i=0;i

{

if(stuID!

=p_student[i].student1.ID)

{

continue;

}

else

{

for(j=0;j<3;j++)

{

sum+=p_student[i].student1.sorc[j];//计算总分

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

当前位置:首页 > 表格模板 > 合同协议

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

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