小型学生信息管理系统10.docx
《小型学生信息管理系统10.docx》由会员分享,可在线阅读,更多相关《小型学生信息管理系统10.docx(18页珍藏版)》请在冰豆网上搜索。
![小型学生信息管理系统10.docx](https://file1.bdocx.com/fileroot1/2023-1/29/060ad95d-e77d-4e1a-8721-6f03d523bdc7/060ad95d-e77d-4e1a-8721-6f03d523bdc71.gif)
小型学生信息管理系统10
编写一个小型的学生信息管理系统,可以对中学生,大学生你,研究生的信息进行简单的管理。
每个学生类都包含学生名,成绩1,成绩2,成绩3和平均成绩,其中平均成绩为(1+2+3)/3。
每类学生还有区别于其他类学生的特殊信息,例如中学生有家长,大学生有专业,研究生有导师。
要求通过本系统实现以下功能:
1输入学生的基本信息
2根据学生名查询某个学生的信息
3计算并显示某个学生的平均成绩
要求屏幕显示如下:
*************欢迎使用*************
*******小型学生信息管理系统*******
1.输入学生信息
2.查询学生信息并显示
3.计算平均成绩并显示
4.退出
请您选择(1-4):
**********按学生类别进行管理**************
***************学生类别选择***************
1中学生类
2大学生类
3研究生类
4退出
请您选择学生类别:
1
学生名:
王大兵
成绩1:
80
成绩289
成绩390
家长:
王大林
信息存储成功!
是否继续输入(y/n)?
*************欢迎使用*************
*******小型学生信息管理系统*******
5.输入学生信息
6.查询学生信息并显示
7.计算平均成绩并显示
8.退出
请您选择(1-4):
2
**********按学生类别进行管理**************
***************学生类别选择***************
1中学生类
2大学生类
3研究生类
4退出
请您选择学生类别:
1
请输入要查询的学生名:
王大兵
所要查看的学生信息:
学生类别号:
1
学生名:
王大兵
成绩1:
80
成绩289
成绩390
家长:
王大林
*****************************
是否继续查询(y/n)?
1.0版本代码如下:
/************************************************************************/
/*
Author:
Tiger
Date:
6/13/2013
Function:
小型信息管理系统
Version:
1.0
*/
/************************************************************************/
#include
#include
#include
//学生基类
classStudent
{
protected:
charname[20];//姓名
floatscore1,score2,score3;//成绩1、2、3、
public:
voidgetname(chara[]);
voidset();
voidshow();
voidaverage();
};
voidStudent:
:
getname(chara[])
{
strcpy(a,name);
}
voidStudent:
:
show()
{
cout<<"学生姓名:
"<<<"成绩1:
"<<<"成绩2:
"<<<"成绩3:
"<}
voidStudent:
:
set()
{
cout<<"学生姓名:
";
cin>>name;
cout<<"成绩1:
";
cin>>score1;
cout<<"成绩2:
";
cin>>score2;
cout<<"成绩3:
";
cin>>score3;
}
voidStudent:
:
average()
{
cout<<"姓名:
"<cout<<"平均成绩:
"<<(score1+score2+score3)/3<}
//中学生类
classMiddle_school_student:
publicStudent
{
protected:
charhouseholder[20];//家长
public:
Middle_school_student();
voidset();
voidshow();
};
Middle_school_student:
:
Middle_school_student()
{
strcpy(name,"张三");
score1=0;
score2=0;
score3=0;
strcpy(householder,"李四");
}
voidMiddle_school_student:
:
set()
{
Student:
:
set();
cout<<"家长:
";
cin>>householder;
}
voidMiddle_school_student:
:
show()
{
Student:
:
show();
cout<<"家长:
"<}
//大学生类
classUniversity_student:
publicStudent
{
charprofession[20];//专业
public:
University_student();
voidset();
voidshow();
};
University_student:
:
University_student()
{
strcpy(name,"张三");
score1=0;
score2=0;
score3=0;
strcpy(profession,"无");
}
voidUniversity_student:
:
set()
{
Student:
:
set();
cout<<"专业:
";
cin>>profession;
}
voidUniversity_student:
:
show()
{
Student:
:
show();
cout<<"专业:
"<}
//研究生类
classPostgraduate:
publicStudent
{
chartutor[20];
public:
Postgraduate();
voidset();
voidshow();
};
Postgraduate:
:
Postgraduate()
{
strcpy(name,"张三");
score1=0;
score2=0;
score3=0;
strcpy(tutor,"李四");
}
voidPostgraduate:
:
set()
{
Student:
:
set();
cout<<"导师:
";
cin>>tutor;
}
voidPostgraduate:
:
show()
{
Student:
:
show();
cout<<"导师:
"<}
//菜单界面
intmenu()
{
intx;
cout<<"*************欢迎使用*************"<cout<<"*******小型学生信息管理系统*******"<cout<<"1、输入学生信息"<<'\n'<<"2、查询学生信息并显示"<<'\n'
<<"3、计算平均成绩并显示"<<'\n'<<"4、退出"<<'\n'<<"请您选择(1-4):
";
cin>>x;
returnx;
}
//管理界面
intmanage()
{
intx;
cout<<"**********按学生类别进行管理**************"<cout<<"***************学生类别选择***************"<cout<<"1中学生类"<<'\n'<<"2大学生类"<<'\n'
<<"3研究生类"<<'\n'<<"4退出"<<'\n'<<"请您选择学生类别:
";
cin>>x;
returnx;
}
//创建一个Middle_school_student
Middle_school_studentnewmiddle()
{
Middle_school_studentm;
m.set();
returnm;
}
//将Middle_school_student对象写进D:
\\middle.txt
voidwriteMiddle(Middle_school_student&m)
{
fstreamft;
ft.open("D:
\\middle.txt",ios:
:
out|ios:
:
app);
if(!
ft)
{
cout<<"不能打开文件!
"<return;
}
ft.write((char*)&m,sizeof(Middle_school_student));
ft.close();
}
//读取一个Middle_school_student对象
voidreadMiddle(intj)/*j=1进入查询学生信息、j=2查询学生平均成绩*/
{
Middle_school_students;
fstreamft;
chartemp1[20],temp2[20];
cout<<"请输入要查询的学生名:
";
cin>>temp1;
ft.open("D:
\\middle.txt",ios:
:
in);
if(!
ft)
{
cout<<"不能打开文件!
"<return;
}
//计算Middle_school_student记录的个数Num
ft.seekp(0,ios:
:
end);
longNum=ft.tellp()/sizeof(Middle_school_student);
for(inti=0;i{
ft.seekp(sizeof(Middle_school_student)*i);
ft.read((char*)&s,sizeof(Middle_school_student));
s.getname(temp2);
inttbb=strcmp(temp1,temp2);
if(!
tbb)
{
if(j==1){s.show();break;}
elseif(j==2){s.average();break;}
else{cout<<"错误!
"<}
}
cout<<"没有该学生!
"<ft.close();
}
//创建一个University_student
University_studentnewuniversity()
{
University_studentu;
u.set();
returnu;
}
//将University_student对象写进D:
\\university.txt
voidwriteUniversity(University_student&u)
{
fstreamft;
ft.open("D:
\\university.txt",ios:
:
out|ios:
:
app);
if(!
ft)
{
cout<<"不能打开文件!
"<return;
}
ft.write((char*)&u,sizeof(University_student));
ft.close();
}
//读取一个University_student对象
voidreadUniversity(intj)/*j=1进入查询学生信息、j=2查询学生平均成绩*/
{
University_students;
fstreamft;
chartemp1[20],temp2[20];
cout<<"请输入要查询的学生名:
";
cin>>temp1;
ft.open("D:
\\university.txt",ios:
:
in);
if(!
ft)
{
cout<<"不能打开文件!
"<return;
}
//计算University_student记录的个数
ft.seekp(0,ios:
:
end);
longNum=ft.tellp()/sizeof(University_student);
for(inti=0;i{
ft.seekp(sizeof(University_student)*i);
ft.read((char*)&s,sizeof(University_student));
s.getname(temp2);
inttbb=strcmp(temp1,temp2);
if(!
tbb)
{
if(j==1){s.show();break;}
elseif(j==2){s.average();break;}
else{cout<<"错误!
"<}
}
cout<<"没有该学生!
"<ft.close();
}
//创建一个Postgraduate
Postgraduatenewpostgraduate()
{
Postgraduatep;
p.set();
returnp;
}
//将Postgraduate对象写进D:
\\postgraduate.txt
voidwritePostgraduate(Postgraduate&p)
{
fstreamft;
ft.open("D:
\\postgraduate.txt",ios:
:
out|ios:
:
app);
if(!
ft)
{
cout<<"不能打开文件!
"<return;
}
ft.write((char*)&p,sizeof(Postgraduate));
ft.close();
}
//读取一个Postgraduate对象
voidreadPostgraduate(intj)/*j=1进入查询学生信息、j=2查询学生平均成绩*/
{
Postgraduates;
fstreamft;
chartemp1[20],temp2[20];
cout<<"请输入要查询的学生名:
";
cin>>temp1;
ft.open("D:
\\postgraduate.txt",ios:
:
in);
if(!
ft)
{
cout<<"不能打开文件!
"<return;
}
//计算Postgraduate记录的个数
ft.seekp(0,ios:
:
end);
longNum=ft.tellp()/sizeof(Postgraduate);
for(inti=0;i{
ft.seekp(sizeof(Postgraduate)*i);
ft.read((char*)&s,sizeof(Postgraduate));
s.getname(temp2);
inttbb=strcmp(temp1,temp2);
if(!
tbb)
{
if(j==1){s.show();break;}
elseif(j==2){s.average();break;}
else{cout<<"错误!
"<}
}
cout<<"没有该学生!
"<ft.close();
}
//判断函数、判断是否继续输入
voidcheck_enter(inti)/*i的取值决定输入的学生的类型*/
{
charce;
cout<<"信息存储成功!
是否继续输入(y/n)?
";
cin>>ce;
if(ce=='y')
{
switch(i)
{
case1:
writeMiddle(newmiddle());
check_enter(i);
break;
case2:
writeUniversity(newuniversity());
check_enter(i);
break;
case3:
writePostgraduate(newpostgraduate());
check_enter(i);
break;
default:
cout<<"错误!
"<break;
}
}elseif(ce=='n')return;
elsecout<<"输入错误!
"<}
//判断函数、判断是否继续查询
voidcheck_find(inti)/*i的值决定查询的学生的类型*/
{
charcf;
cout<<"是否继续查询(y/n)?
"<cin>>cf;
if(cf=='y')
{
switch(i)
{
case1:
readMiddle
(1);
check_find(i);
break;
case2:
readUniversity
(1);
check_find(i);
break;
case3:
readPostgraduate
(1);
check_find(i);
break;
default:
cout<<"错误!
"<break;
}
}elseif(cf=='n')return;
elsecout<<"输入错误!
"<}
//判断函数、判断是否继续查询
voidcheck_average(inti)/*i的值决定查询的学生的类型*/
{
charca;
cout<<"是否继续查询(y/n)?
"<cin>>ca;
if(ca=='y')
{
switch(i)
{
case1:
readMiddle
(2);
check_find(i);
break;
case2:
readUniversity
(2);
check_find(i);
break;
case3:
readPostgraduate
(2);
check_find(i);
break;
default:
cout<<"错误!
"<break;
}
}elseif(ca=='n')return;
elsecout<<"输入错误!
"<}
voidwindow()
{
switch(menu())
{
case1:
switch(manage())
{
case1:
writeMiddle(newmiddle());
check_enter
(1);
break;
case2:
writeUniversity(newuniversity());
check_enter
(2);
break;
case3:
writePostgraduate(newpostgraduate());
check_enter(3);
break;
case4:
break;
default:
cout<<"输入错误"<}
window();break;
case2:
switch(manage())
{
case1:
readMiddle
(1);
check_find
(1);
break;
case2:
readUniversity
(1);
check_find
(2);
break;
case3:
readPostgraduate
(1);
check_find(3);
break;
case4:
break;
default:
cout<<"输入错误"<}
window();break;
case3:
switch(manage())
{
case1:
readMiddle
(2);
check_average
(1);
break;
case2:
readUniversity
(2);
check_average
(2);
break;
case3:
readPostgraduate
(2);
check_average(3);
break;
default:
cout<<"输入错误"<}
window();break;
case4:
cout<<"已退出!
"<break;
default:
cout<<"输入错误"<break;
}
}
intmain()
{
window();
return0;
}