c++课程设计 学生成绩管理系统设计.docx
- 文档编号:27199073
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:30
- 大小:217.13KB
c++课程设计 学生成绩管理系统设计.docx
《c++课程设计 学生成绩管理系统设计.docx》由会员分享,可在线阅读,更多相关《c++课程设计 学生成绩管理系统设计.docx(30页珍藏版)》请在冰豆网上搜索。
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];//计算总分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+课程设计 学生成绩管理系统设计 c+ 课程设计 学生 成绩管理系统 设计