学生成绩管理.docx
- 文档编号:6236671
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:20
- 大小:185.65KB
学生成绩管理.docx
《学生成绩管理.docx》由会员分享,可在线阅读,更多相关《学生成绩管理.docx(20页珍藏版)》请在冰豆网上搜索。
学生成绩管理
西北师范大学xxxx
计算机与电子信息工程系
课程设计报告书
课程名称:
C语言程序设计
专业:
计算机科学与技术(网络应用与技术)
课题名称:
学生成绩管理
班级:
学号:
姓名:
指导教师:
2014-2015学年第二学期
学生成绩管理
(难易程度:
中)
1.课程设计要求
学习成绩管理系统的主要要求为:
1)能按学期、按班级完成对学生成绩的录入、修改
2)能按班级统计学生的成绩,求学生的总分及平均分
3)能查询学生成绩,不及格科目及学生名单
4)能按班级输出学生的成绩单
2.设计目的及意义
课题的设计旨在训练我们的基本编程能力,使我们熟悉C语言图形模式下的编程。
本程序中涉及结构体、数组、绘图等方面的知识。
通过本程序的训练,使我们能对C语言有一个更深刻的了解。
开发一个学生成绩管理系统,采用计算机对学生成绩进行管理。
3.课题说明
本系统主要用于对学生的成绩进行管理。
通过本系统,可以将各个学生的成绩记录输入到系统中,保存到文件,便于查阅和相关管理。
此外,该系统还能实现对学生成绩记录的显示,查询以及插入或删除学生的成绩记录等功能。
4.功能模块图
5.功能描述
主要功能用来对学生的成绩进行收集和输入。
在学生信息保存在系统中的前提下,成绩录入需要输入学生资料,比如班级,学号,姓名。
在准确输入学生资料后,就可以对该学生的各科成绩进行录入。
该学生各科成绩输入成功后,系统会提示是否继续进行操作,如果想继续输入学生成绩就输入y,不想再输入学生成绩的话就输入n,再输入n之后,系统返回到主菜单。
输入学生资料是得分学期来进行处理,执行一次该模块只能输入一个学期的学生信息。
在此过程中每输入一个学生的信息,通过循环在输入完成时将学生个数返回给n,case1中就是利用n=input(stud,n)这一赋值过程来执行该函数中的输入过程。
输入完成后按任意键即可返回菜单。
6.执行住流程图
7.程序运行结果
8.设计过程遇到的问题
在输入了学生成绩之后,若不退出程序继续读取文件,同一个学生的信息会多次输出。
输入的数据长度有要求,不能够输入的太长否则就会输出结果排列不整齐甚至无法输出数据。
输入学生成绩时只能连续输入相同学期的学生。
输入的学生成绩等信息相同时如姓名,程序不提示出错,不能处理。
同时好多地方都不懂,不明白其中的原理,做起来不上手。
9.课题总结
第一次做这种设计面广、综合性强的课程设计刚开始难度还是有点大的,主要是在函数调用方面容易出现混乱,刚开始的时候功能少还容易解决,写到后面再在综合起来就容易出现问题。
尤其是在修改删除函数中要调用文件操作函数,查找函数,然后找到具体删除的可行性办法还是不太容易,最后采用后一项覆盖前一项的方法解决。
10.设计课题感想
这学期我们学习了C++这一编程语言,学的很浅薄,平时都只能编一些比较小的程序。
这次课程设计花了很长时间,学到了不少的知识,开拓了视野。
并且,本设计不像平时编写的程序,运行一下直接推出操作界面。
而是可以像一个计算机上使用的软件一样,可以不用退出系统,继续使用其功能,只需要在主函数中调用一个循环即可。
除此之外,还学习到了课程设计的流程相关的知识。
不过大多属于网上搜的,自己的能力很弱不能做出来。
附录代码
#include
#include
#include
#include
#include
#include
#include
usingnamespacestd;
typedefclass
{
public:
intcls;
charnam[10];
charnum[10];
intchinese;
intenglish;
intcomputer;
intmath;
}Student;
Studentstud1[100],stud2[100];
intmenu()
{
chara;
while(a>'7'||a<'0')
{
system("cls");
std:
:
cout<<"欢迎使用学生成绩管理系统";
std:
:
cout< : endl; std: : cout<<"**********************学生成绩管理系统************************"< : endl; std: : cout< : endl; std: : cout< std: : cout< std: : cout< std: : cout< std: : cout< std: : cout< std: : cout< std: : cout< std: : cout<<"请选择(0-7)"< std: : cout< a=getchar(); } return(a-'0'); } /***************************************************************************************/ intInput(Studentstud[],intn)//输入数据(第一学期)。 { inti=0; charsign,x[10]; for(;sign! ='n'&&sign! ='N';) { std: : cout< "; std: : cin>>stud[n+i].nam; std: : cout< "; std: : cin>>stud[n+i].cls; std: : cout< "; std: : cin>>stud[n+i].num; std: : cout< "; std: : cin>>stud[n+i].chinese; std: : cout< "; std: : cin>>stud[n+i].math; std: : cout< "; std: : cin>>stud[n+i].english; std: : cout< "; std: : cin>>stud[n+i].computer; gets(x); std: : cout< std: : cout<<"还有要输入的信息吗? (y/n)"; std: : cin>>&sign; i++; } return(n+i); } /*************************************输出数据***********************************************/ voidDisplay(Studentstud[],intn) { inti; std: : cout< std: : cout< std: : cout< std: : cout< for(i=1;i { std: : cout< ints=stud[i-1].chinese+stud[i-1].math+stud[i-1].english+stud[i-1].computer; std: : cout<<""< <<""< if(i>1&&i%10==0) { std: : cout< std: : cout< system("pause"); std: : cout< } } std: : cout< system("pause"); } /************************************查找学生显示其信息***************************************************/ voidQuery(Studentstud[],intn) { charnam[20]; std: : cout< "< std: : cin>>nam; inti=0; while(strcmp(stud[i].nam,nam)! =0&&i i++; if(i==n) { cout<<"\t\t\t"<<"没有发现该学生的资料! "< return; } std: : cout< "< std: : cout< "< std: : cout< "< std: : cout< "< std: : cout< "< std: : cout< "< } /*********************************删除学生信息************************************/ intDelete(Studentstud[],intn) { chars[20]; inti=0,j; std: : cout< "< cin>>s; while(strcmp(stud[i].nam,s)! =0&&i if(i==n) { printf("\t\t\t没有发现该学生资料! \n"); return(n); } for(j=i;j { strcpy(stud[j].num,stud[j+1].num); strcpy(stud[j].nam,stud[j+1].nam); stud[j].cls=stud[j+1].cls; stud[j].chinese=stud[j+1].chinese; stud[j].math=stud[j+1].math; stud[j].english=stud[j+1].english; stud[j].computer=stud[j+1].computer; } cout< "< return(n-1); } /*******************************修改信息******************************************/ intRevise(Studentstud[],intn) { inti=0; charna[10]; cin>>na; while(strcmp(stud[i].nam,na)! =0&&i i++; if(i==n) { cout<<"\t\t\t"<<"没有发现该学生的资料! "< } std: : cout<<"修改班级: "< std: : cin>>stud[i].cls; std: : cout<<"修改学号: "< std: : cin>>stud[i].num; std: : cout<<"修改语文成绩: "< std: : cin>>stud[i].chinese; std: : cout<<"修改英语成绩: "< std: : cin>>stud[i].english; std: : cout<<"修改数学成绩: "< std: : cin>>stud[i].math; std: : cout<<"修改计算机成绩: "< std: : cin>>stud[i].computer; std: : cout<<"修改成功"< return(n); } /***************************************显示学生名单**************************************/ voidshow(Studentstud[],intn) { for(inti=0;i { std: : cout< } system("pause"); } /**************************************从文件读取数据*************************************************/ intAddfromText(Studentstud[],intn) { inti=0,number,x=0,y=0; FILE*fp; charfilename[20]; cout< "; cin>>filename; if((fp=fopen(filename,"rb"))==NULL) { cout< cout< system("pause"); return(n); } fscanf(fp,"%d",&number); for(;i { fscanf(fp,"%d%s%s%d%d%d%d%d%d\n",&stud[n+i].cls,&stud[n+i].num,&stud[n+i].nam,&stud[n+i].chinese, &stud[n+i].math,&stud[n+i].english,&stud[n+i].computer,&x,&y); i++; } n+=number; fclose(fp); cout< "< cout< system("pause"); return(n); } /**************************************将所有记录写进文件*************************************/ voidWritetoText(Studentstud[],intn) { inti=0; FILE*fp; charfilename[20]; cout< cout< "; cin>>filename; if((fp=fopen(filename,"w+"))==NULL) { cout< system("pause"); return; } fprintf(fp,"%d\n",n); for(;i { fprintf(fp,"%-8d%-8s%-8s%-5d%-5d%-5d%-5d%-5d%-5d\n",stud[i].cls,stud[i].num,stud[i].nam, stud[i].chinese,stud[i].math,stud[i].english,stud[i].computer, stud[i].chinese+stud[i].math+stud[i].english+stud[i].computer, (stud[i].chinese+stud[i].math+stud[i].english+stud[i].computer)/4); i++; } fclose(fp); } /**************************************主函数调用*********************************************/ voidmain() { intn1=0,n2=0; for(;;) { switch(menu()) { case1: intt; std: : cout< std: : cout< std: : cout< std: : cin>>t; if(t==1) { n1=Input(stud1,n1); } elseif(t==2) { n2=Input(stud2,n2); } break; case2: std: : cout< if(n1! =0) { std: : cout< "< std: : cout< Display(stud1,n1); } if(n2! =0) { std: : cout< "< std: : cout< Display(stud2,n2); } break; case3: intr; std: : cout< std: : cout< "< std: : cin>>r; if(r==1) { Query(stud1,n1); } elseif(r==2) { Query(stud2,n2); } std: : cout< system("pause"); break; case4: intp; std: : cout< std: : cout< "< std: : cin>>p; if(p==1) { std: : cout< "; n1=Revise(stud1,n1); } elseif(p==2) { std: : cout< "; n2=Revise(stud2,n2); } system("pause"); break; case5: std: : cout< if(n1! =0) { std: : cout< show(stud1,n1); } cout< if(n2! =0) { std: : cout< show(stud2,n2); } system("pause"); break; case6: std: : cout< into; std: : cout<<"请输入学期: "< std: : cout< std: : cin>>o; if(o==1) { std: : cout< n1=Delete(stud1,n1); } if(o==2) { std: : cout< n2=Delete(s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩 管理