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