学生成绩管理系统用C++编程教学提纲.docx
《学生成绩管理系统用C++编程教学提纲.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统用C++编程教学提纲.docx(18页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统用C++编程教学提纲
学生成绩管理系统
要求:
1.学生的信息用结构体来表示。
structstu{
intsno;//学号
charname[8];//姓名
charsex[3];//性别
charinclass[8];//班级
floatmath;//数学成绩
floatEnglish;//英语成绩
floatcomputer;//计算机成绩
}
2.能够按学号、按性别、按班级查询。
查询方式可以自己补充。
3.能够统计每个学生的平均成绩、总成绩、并可以按平均成绩和总成绩进行排序(排序的方法很多,大家应该上网多查查排序的方法,并比较各个排序方式的好坏),并在屏幕上打印排序结果。
4.能够修改、删除、添加学生的信息。
5.系统的各个功能模块要求用函数的形式实现。
6.在主函数里通过菜单来调用各个函数。
7.用链表或数组来存储班级学生。
8.学生的信息能够保存在文件里(思考用二进制文件和文本文件的异同)。
如果用文本文件存储,则文件格式如下:
学号姓名性别班级数学英语计算机
0601王鹏男一班68.55896
0602李云女二班68.58898
0603赵亚男女一班58.54896
0604刘飞男三班68.57858
9.能够对文件进行读写、修改、删除。
#include
#include
#include
#include
#include
FILE*fp;
structstudent{
intsno;//学号
charname[8];//姓名
charsex[4];//性别
charClass[4];//班级
floatmath;//数学成绩
floatEnglish;//英语成绩
floatcomputer;//计算机成绩
floatzong;//总成绩
floatping;//平均成绩
}stu[100],change;
voidprint()//定义界面函数
{
cout<<"*********************************************************"<cout<cout<<"*********************************************************"<cout<cout<cout<cout<cout<cout<cout<cout<<"*********************************************************"<}
voidcjxscj()//定义创建学生成绩文件函数
{
inti;chara;
for(i=0;i<100;i++)//输入学生信息
{
cout<<"请输入第"<
"<cout<<"学号:
";
cin>>stu[i].sno;
cout<<"姓名:
";
cin>>stu[i].name;
cout<<"性别:
";
cin>>stu[i].sex;
cout<<"班级:
";
cin>>stu[i].Class;
cout<<"数学成绩:
";
cin>>stu[i].math;
cout<<"英语成绩:
";
cin>>stu[i].English;
cout<<"计算机成绩:
";
cin>>stu[i].computer;
stu[i].zong=stu[i].math+stu[i].English+stu[i].computer;
stu[i].ping=stu[i].zong/3;
cout<<"继续输入请按@"<cout<<"退出输入,返回主菜单请按#"<cin>>a;
if(a=='#')
i=100;
}
fp=fopen("fh.dat","wb");//打开fh.dat文件
for(i=0;i<100;i++)//把结构体的信息存入fh.dat文件
if(fwrite(&stu[i],sizeof(student),1,fp)!
=1)
cout<<"文件写入出错"<fclose(fp);//关闭文件
print();//打印出主菜单
}
voidzjxsxx()//定义增加学生信息函数
{
inti;chary;
if((fp=fopen("fh.dat","rb+"))==NULL)//打开fh.dat文件
{
cout<<"不能打开此文件"<exit(0);
}
for(i=0;i<100;i++)//把文件中数据付给结构体
fread(&stu[i],sizeof(student),1,fp);
for(i=98;i>=0;i--)
if(stu[i].math==0)
break;
cout<<"请输入需要添加的学生信息"<while(i>0)//输入需要添加的学生信息
{
cout<<"学号:
";cin>>stu[i].sno;
cout<<"姓名:
";cin>>stu[i].name;
cout<<"性别:
";cin>>stu[i].sex;
cout<<"班级:
";cin>>stu[i].Class;
cout<<"数学:
";cin>>stu[i].math;
cout<<"英语:
";cin>>stu[i].English;
cout<<"计算机:
";cin>>stu[i].computer;
stu[i].zong=stu[i].math+stu[i].English+stu[i].computer;
stu[i].ping=stu[i].zong/3;
cout<<"继续添加请按@"<cout<<"返回主菜单请按#"<cin>>y;
if(y=='#')//控制使其停止输入
i=0;
i--;
}
rewind(fp);//移动文件内部位置指针到文件首
for(i=0;i<100;i++)//把结构体的信息存入fh.dat文件
fwrite(&stu[i],sizeof(student),1,fp);
fclose(fp);//关闭文件
print();//打印出主菜单
}
voidscxsxx()//定义删除学生信息函数
{
inti,p,k,j;charw;charx[8];
if((fp=fopen("fh.dat","rb+"))==NULL)//打开fh.dat文件
{
cout<<"不能打开此文件"<exit(0);
}
for(i=0;i<100;i++)//把文件中数据付给结构体
fread(&stu[i],sizeof(student),1,fp);
loop:
cout<<"请输入你要删除学生信息的姓名或学号"<cout<<"输入姓名请按1"<cout<<"输入学号请按2"<cin>>p;
if(p==1)//通过输入名字查找要删除的信息
{
cout<<"请输入姓名:
";
cin>>x;
}
else//通过输入学号查找要删除的信息
{
cout<<"请输入学号:
";
cin>>k;
}
i=0,j=0;
while(i<100)
{
if(strcmp(x,stu[i].name)==0||k==stu[i].sno)//找出要删除的学生信息,将其输出
{
cout<<"学生信息情况:
"<cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"
<<"班级"<<"\t"<<"数学"<<"\t"<<"英语"<<"\t"
<<"计算机"<<"\t"<<"总成绩"<<"\t"<<"平均成绩";
cout<<stu[i].math<<"\t"<stu[i].computer<<"\t"<stu[i].ping<cout<<"确定删除请按#"<cout<<"取消删除请按@"<cin>>w;
if(w=='#')//控制是否删除
i=100;
}
i++;j++;
}
if(i==100)//控制是否找到要删除学生的信息
cout<<"没有找到你要删除的学生信息"<else
for(i=j-1;i<100;i++)//从要删除的学生信息开始,将后一个结构体的
stu[i]=stu[i+1];//信息赋值给前一个
cout<<"继续删除请按#"<cout<<"返回主菜单请按@"<cin>>w;
if(w=='#')//控制是否继续删除
gotoloop;
rewind(fp);//移动文件内部位置指针到文件首
for(i=0;i<100;i++)//把结构体的信息存入fh.dat文件
fwrite(&stu[i],sizeof(student),1,fp);
fclose(fp);//关闭文件
print();//打印出主菜单
}
voidxgxsxx()//定义修改学生信息函数
{
inti,p,k,j=0;charu,v[8];
if((fp=fopen("fh.dat","rb+"))==NULL)//打开fh.dat文件
{
cout<<"不能打开此文件"<exit(0);
}
for(i=0;i<100;i++)//把文件中数据付给结构体
fread(&stu[i],sizeof(student),1,fp);
hoop:
cout<<"请输入你要修改学生信息的姓名或学号"<cout<<"输入姓名请按1"<cout<<"输入学号请按2"<cin>>p;
if(p==1)//通过输入姓名查找要修改的学生信息
{
cout<<"请输入姓名:
";
cin>>v;
}
else//通过输入学号查找要修改的学生信息
{
cout<<"请输入学号:
";
cin>>k;
}
i=0;
while(i<100)
{
if(strcmp(v,stu[i].name)==0||k==stu[i].sno)//找出要修改的学生信息,将其输出
{
cout<"<cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"
<<"班级"<<"\t"<<"数学"<<"\t"<<"英语"<<"\t"
<<"计算机"<<"\t"<<"总成绩"<<"\t"<<"平均成绩";
cout<<stu[i].math<<"\t"<stu[i].computer<<"\t"<stu[i].ping<i=100;
}
i++;j++;
}
if(i==100)//控制是否找到要修改学生的信息
cout<<"没有找到你要修改的学生的信息"<else
{
cout<<"下面请开始修改"<cout<<"学号:
";
cin>>change.sno;
cout<<"姓名:
";
cin>>change.name;
cout<<"性别:
";
cin>>change.sex;
cout<<"班级:
";
cin>>change.Class;
cout<<"数学成绩:
";
cin>>change.math;
cout<<"英语成绩:
";
cin>>change.English;
cout<<"计算机成绩:
";
cin>>puter;
change.zong=change.math+change.English+puter;
change.ping=change.zong/3;
stu[j-1]=change;
}
cout<<"继续修改请按@"<cout<<"返回主菜单请按#"<cin>>u;
if(u=='@')//控制是否继续修改
gotohoop;
rewind(fp);//移动文件内部位置指针到文件首
for(i=0;i<100;i++)//把结构体的信息存入fh.dat文件
fwrite(&stu[i],sizeof(student),1,fp);
fclose(fp);//关闭文件
print();//打印出主菜单
}
voidcxxsxx()//定义查询学生信息函数
{
intb,d,f;booltf;
charz[8],x[4],g[4];
if((fp=fopen("fh.dat","rb"))==NULL)//打开fh.dat文件
{
cout<<"不能打开该文件"<exit(0);
}
cout<<"选择1姓名查询"<cout<<"选择2学号查询"<cout<<"选择3性别查询"<cout<<"选择4班级查询"<cout<<"选择5退出查询系统,返回主菜单"<cin>>d;
for(b=0;b<100;b++)//把文件中数据付给结构体
fread(&stu[b],sizeof(student),1,fp);
while(d<5)
{
tf=false;
if(d==1)//按姓名查询
{
cout<<"请输入姓名:
";
cin>>z;b=0;
while(b<100)
{
if(strcmp(z,stu[b].name)==0)//找到要查询学生的信息,将其输出
{
cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"
<<"班级"<<"\t"<<"数学"<<"\t"<<"英语"<<"\t"
<<"计算机"<<"\t"<<"总成绩"<<"\t"<<"平均成绩";
cout<<stu[b].math<<"\t"<stu[b].computer<<"\t"<stu[b].ping;
tf=true;
}
b++;
}
if(tf=false)//控制是否找到要查询的学生信息
cout<<"没有你要查询的信息"<}
elseif(d==2)//按学号查询
{
cout<<"请输入学号:
";
cin>>f;b=0;
while(b<100)
{
if(f==stu[b].sno)//找到要查询学生的信息,将其输出
{
cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"
<<"班级"<<"\t"<<"数学"<<"\t"<<"英语"<<"\t"
<<"计算机"<<"\t"<<"总成绩"<<"\t"<<"平均成绩";
cout<<stu[b].math<<"\t"<stu[b].computer<<"\t"<stu[b].ping;
b=100;
}
b++;
}
if(b==100)//控制是否找到要查询的学生信息
cout<<"没有你要查询的信息"<}
elseif(d==3)//按性别查询
{
cout<<"请输入性别:
";
cin>>x;b=0;
while(b<100)
{
if(strcmp(x,stu[b].sex)==0)//找到要查询学生的信息,将其输出
{
cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"
<<"班级"<<"\t"<<"数学"<<"\t"<<"英语"<<"\t"
<<"计算机"<<"\t"<<"总成绩"<<"\t"<<"平均成绩";
cout<<stu[b].math<<"\t"<stu[b].computer<<"\t"<stu[b].ping;
tf=true;
}
b++;
}
if(tf==false)//控制是否找到要查询的学生信息
cout<<"没有你要查询的信息"<}
else//按班级查询
{
cout<<"请输入班级:
";
cin>>g;b=0;
while(b<100)
{
if(strcmp(g,stu[b].Class)==0)//找到要查询学生的信息,将其输出
{
cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"
<<"班级"<<"\t"<<"数学"<<"\t"<<"英语"<<"\t"
<<"计算机"<<"\t"<<"总成绩"<<"\t"<<"平均成绩";
cout<<stu[b].math<<"\t"<stu[b].computer<<"\t"<stu[b].ping;
tf=true;
}
b++;
}
if(tf==false)//控制是否找到要查询的学生信息
cout<<"没有你要查询的信息"<}
cout<cout<<"选择1姓名查询"<cout<<"选择2学号查询"<cout<<"选择3性别查询"<cout<<"选择4班级查询"<cout<<"选择5退出查询系统,返回主菜单"<cin>>d;//控制while循环语句
}
print();//打印出主菜单
}
voidpx()//定义排序函数
{
inti,j;
if((fp=fopen("fh.dat","r"))==NULL)//打开fh.dat文件
{
cout<<"不能打开此文件"<exit(0);
}
for(i=0;i<100;i++)//把文件中数据付给结构体
fread(&stu[i],sizeof(student),1,fp);
for(i=0;i<100;i++)//采用降序法排序
for(j=i+1;j<100;j++)
if(stu[i].zong{
change=stu[i];
stu[i]=stu[j];
stu[j]=change;
}
cout<"<cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"
<<"班级"<<"\t"<<"数学"<<"\t"<<"英语"<<"\t"
<<"计算机"<<"\t"<<"总成绩"<<"\t"<<"平均成绩";
for(i=0;i<100;i++)
if(stu[i].math!
=0)//控制输出排序后的学生信息
cout<<stu[i].math<<"\t"<stu[i].computer<<"\t"<stu[i].ping<fclose(fp);//关闭文件
print();//打印出主菜单
}
voidmain()
{
in