资源描述
C++程序设计源程序:
《学生成绩管理系统》
#iiiclude<iostreain.h>
#iiiclude<stnng.h>
#iiiclude <process.h>
#iiiclude<cstruig> //数组比较头文件
#iiiclude <fstieam.h>//文件的输入输出
#iiiclude <stdio.h>
mt time=O;
char name_[20];
class CPerson//CPerson 基类 成员:IDNo Name Addr Tel
(
public:
char IDNo[30];
char Naine[30];
char Addr[30];
charTel[30];
);
class CStudent:public CPerson//——CStudent 类―继承自 CPerson成员:SmdNo Math English Average
(
public:
char StudNo[30];
double Math;
double English;
double Average;
};
class CClass//CClass 类 成员:CClassName CStudent
(
private:
char CClassName[30];
CStudent* stu[50];
public:
CClassQ;
〜CClass。;
void CreateClassQ; //
void OutClassNaine();//输出班级名字
void NewAStuQ;//1.创建学生信息
void changeQ;//3.修改学生信息
void del();〃4.删除学生信息
void writeinQ;//文件写入
void wnteoutQ;〃文件读出
void writeino();//文件另存为
void wiiteouto();〃打开其他文件
void findO;〃6.查询学生信息
);
〃任意键继续
〃清除屏幕
〃任意键继续
〃清除屏幕
system(Hclsn);
cout«H
学生信息管理程序
\n您现在的位置:\t主菜单
void CClass::writeiiiQ// 保存文件
(
ofstieam SaveFile(HmyH);
SaveFile«CClassName«M\tM«time«endl;
{
SaveFile«stu[i]->IDNo«n\tM
«stu[i]->Naine«H\tH
«stu[i]->Addr«H\tH
«stu[i].>Tel«,,\tH
«stu[i]->StudNo«,^\t,^
«stu[i]->Math«H\tH
«stu [i]->English«,,\t"
«stu [i]・> Average v Vendl;
}
Save();
ofstieam Save(name_);
Save«CClassName«,,\tH«tiine«endl;
fbr(mt j=0 J<time;j++)
{
Savevvstu[J]・>IDNovv”\t"
«stu|j]->Naiiie«H\tH
«stu|j]->Addr«H\tM
«stuU]->Tel«M\tH
«stuU]->StudNo«,,\tH
«stu|j]->Math«H\tn
wstu[j]・>Englishvv”\t”
«stu[j]->Average«endl;
}
Save.close();
cout«H\t\t\t 执行成功!M«endl;
system(HpauseM);
system(HclsH);
void back_no()
system(HpauseM);
system(HclsH);
void title。//
void CClass::writemoQ//
文件另存为
char choice[30];
ofstieam fop;
ifstreain fip;
cout«H文件己默认保存了!\t现在需要另存为?(Y/N),,«endl;
ciii»choice;
while(sticmp(choice「'Y”)==0||sticmp(choice「'y”)=0) {
cout«H请输入文件名称:\tn«endl;
ciii»name_;
sticat(name_, ".txt H);
fop.open(naine_);
fop«CClassNaine«,,\t,,«tmie«endl;
fbr(int i=0;i<time;i++)
{
fbpv<stu[i]・>n)No<v”\t”
«stu[i]->Naine«H\tH
«stu[i]->Addr«H\tM
«stu[i]->Tel«M\tH
«stu[i]->StudNo«M\tn
«stu[i]->Math«H\tH
«stu [i]->English«n\tH
«stu [i]->Average«endl;
}
fip.close();
cout«H另存为 H«name_«n成功!H«endl;
back_noQ;
return;
}
wlule(sticmp(choice/,nn)==0||strcmp(choice/,Nn)==0)
{
back_noQ;
return;
}
wlule(sticmp(choice/,YH)!=0||sticnip(choice/y*)!=0)
{
cout«H输入错误!n«endl;
back_noQ;
return;
}
void CClass::writeout()//
int i=0;
char c[30];
FILE *fp;
if((fp=fbpen(Hmy,7,rH))==NULL)
coutvv”cann't open the
exit(O);
}
fscaiif(fpj,%s%d,\c,&time);
sticpy(CClassName,c);
wlule(i<time)
{
fscaiif(fpJ,%s%s%s%s%s%lf%lf%lf\stu[i]->IDNo,stu[i]->Name,stu[i]->Addi;&sni[i]->Tel,stu[i]->StudNo,
&stu[i]->Math,&stu[i]->English,&stu[i]-> Average);
1++;
}
fclose(fp); /*关闭文件*7
cout«H恭喜你!成功读取班级信息! \n” ;
}
void CClass::writeouto()//打开其他文件
(
int 1=0;
char c[30];
FILE *fp;
fstream _file;
ofstieam fop;
ifstreain fip;
coutvv”请输入文件名称:\tH«endl;
ciii»name_;
sticat(naine_, ”.txt ”);〃创建文件名
ifstreain fin(name_);
_(naine_jos::m);
wliile(!_file)
{
cout«name_vv” 没有被创建4”;
cout«M请输入文件名称:\t"«endl;
ciii»name_;
}
if((fp=fbpen(name_/rH))=NULL)
{
cout«Hcaiurt open the file\iiH;
exit(0);
}
fscaiif(fpj,%s%d,\c,&time);
sticpy(CClassName,c);
fscaiif(fpj,%s%s%s%s%s%lf%lf%lf\stu 国 AEDNo’stuE.'Nam&stuUJ-AAddi.&sniUJoTeLstupl.AStudNo, &stu[i]->Math,&stu[i]->English,&stu[i]-> Average);
i++;
}
fclose(fp); /*关闭文件*7
cout«H恭喜你!成功读取班级信息! \n” ;
}
CClass::CClass()//
(
i=0;i<50;i++)
{
stu[i]=new CStudentQ;
}
}
CClass:>CClass()//
(
i=0;i<50;i++)
{
delete stu[i];
}
}
void CClass::CreateClass()//创建班级
(
char choice[30];
char *c;
char cname[30];
cout«H学生信息管理程序"«endl;
cout«Mlx 创建班级H«endl
«”2、读取班级信息“vvendl
vv”3、退出程序"«endl;
COUtVV,请选择:”;
ciii»choice;
o=0;o<1;o-h-)
{
while(strcmp(choice,” 1 ”)==0)
{
system(HclsM);
cout«"学生信息管理程序,'«endl;
cout«"请输入班级名称二
c=new char[];
cin»c;
strcpy(CClassName,c);
retuni;
)
while(sticmp(choice,n2H)==0)
system(HclsM);
title。;
cout«H\nl.打开上次的文件,f«endl«M2.打开其他文件n«endl«M\n请选择二 cin»cname;
fbr(int k=0;k<1;k++)
{
while(strcmp(cname/r 1”)==0)
(
writeout();
return;
)
while(strcmp(cname/2M)=0)
(
writeouto();
return;
)
cout«M请在1〜2中选择二 cin»cname;
}
}
wlule(sticmp(choice/,0H)==0)
exit(O);
cout«H请在1〜2中选择:”;
ciii»choice;
}
void CClass::NewAStuQ//0.创建学生
(
cout«-'->输入学生信息\n”;
coutvv“请输入身份证号码(18位):\t\t”;
ciii»stu [time] ->IDNo;//检验身份证位数
wlule(stu[time]->IDNo[ 18] !='\0)
{
cout«HData Enor!\n请输入18位身份证号码:\t\t";
c iii»stu [time]->IDN o;
}
cout«HiW 输入姓 名:\t\t”;
cm»stu [time]->Name;
COUtVV"请输入住址:
cm»stu[tune]->Addi;
COUtVV”请输入电话号码:\t\t”;
cm»stu [tune]->Tel;
coutvv”请输入学号(12位
ciii» stu [tune]-> StudNo; fbr(mt o=0;o<10:o-H-)
wliile(stu [time] -> Stu dNo [ 12 ]!=,\0,)//检验学号位数
{
cout«MData Error!\n 请输入 12 位学号:\t\t\t”; cin»sm[tmie]->StudNo; }
for(int i=O;i<time;i-H-) //检验是否重复
{
if(strcmp(stu[i]->StudNo,stu[time]->StudNo)=0)
{
cout«nData Eiror!\n学号重复:请重新输入An”; cin»stu[tHiie]->StudNo;
}
}
}
cout«H请输入数学成绩:
cm»stu [tune] ->Math;
wlule(stu [time]->Math<0 |stu [time] ->Math> 1)
{
cout«nData Enor?\ii 请重新输入一个分数(0〜1):\t”; ciii»stu [time]->Math;
}
cout«H请输入英语成绩:\t\t”;
ciii»stu [tune] ->English;
wlule(stu[time]->English<0 | stu [time] ->English> 1)
{
cout«nData Enor?\ii 请重新输入一个分数(0〜1):\t”; ciii»stu[time]->English; }
stu [time] -> Av-eiage=(stu [time] ->Math+stu [time] ->English)/2; back();
void CClass::OutClassNameQ//2.打印班级名称
(
int fenshu;
char temp[30];
double temp_;
change=O;change<tmie;change-H-)
{
fenshu=chaiige;
fbr(int j=change j<time J++)
if(strcmp(stu[j]->StudNo,stu[fenshu]->StudNo)<0) fenshu=j;
strcpy(temp,stu[fenshu]->Addr);
strcpy(stu[fenshu]->Addr, stu [change] -> Addr);
strcpy(stu[change]->Addi;temp); /* 地址 */ strcpy(temp,stu[fenshu]->StudNo);
strcpy(stu[fenshu]->StudNo,stu[chaiige]->StudNo);
strcpy(stu[change]->StudNo,temp); /* 身份证*/ strcpy(temp,stu[fenshu]->Name);
strcpy(stu[fenshu]->Name,stu[chaiige]->Name);
strcpy(stu[change]->Naine,temp); /* 姓名 */ strcpy(temp,stu[fenshu]->Tel);
strcpy(stu[fenshu]->TeLstu[chaiige]->Tel);
strcpy(stu[change]->Tel,temp); /* 电话 */ strcpy(temp,stu[fenshu]->IDNo);
strcpy(stu[fenshu]->IDNo,stu[change]^:-IDNo);
strcpy(stu[change]->IDNo,temp); /* 学号*/ temp_=stu[fenshu]->Math;
stu[fenshu]->Math=stu[change]->Matli;
stu [change] ->Math=temp_; /* 数学*/ temp_=stu[fenshu]->English;
stu[fenshu]->English=stu[change]->English;
stu [change] ->English=temp_; / * 英语*/ temp_=stu[fenshu]->A\rerage;
stu [fenshu] -> Average=s tu [change] -> Average;
stu [change] -> Average=temp_; /* 平均分 */
}//
平均分H«endl;
cout«H\n 班级名称:,,«CClassName«,,\tn«H人数:H«tmie«endl«endl;
cout«"学号 身份证号码 姓名住址电话 数学 英语
{
cout«stu[i]->StudNo
«H n«stu[i]->IDNo
«M n«stu[i]->Naine
«H n«stu[i]->Addr
«M n«stu[i]->Tel
«-\tM«stu[i]->Math
«-\tM«stu[i]->English
«-\tM«stu[i]->Average«endl;
}
back_iio。;
void CClass::change()//3.修改学生的信息
(
char str[3O];
int i.had=0;
char *a;
char x[30];
cout«^请输入您要修改学生的学号/名字二 ciii»str;
foi(i=0;i<50;i++) if(strcmp(stu[i]->StudNo.str)=0| strcmp(stu[i]->Naine,sti)=O)
had=l;
vv”\t”vv” 姓名
vv”\t”vv” 住址
vv”\t”vv” 电话
«n\tM«"学号
VV"\t”VV”数学成绩
«,,\t"«"英语成绩
VV”\t”VV” 平均分
cout«,,\tH«M身份证号码:,,«,,\t,,«stu [i]->IDNo«eiidl
H«H\tH«stu[i]->Name«endl
H«H\f,«stu[i]->Addr«endl
H«H\tH«stu[i]->Tel«endl
H«H\tH«stu[i]->StudNo«endl
H«H\tH«stu[i]->Math
H«H\tH«stu[i]->Enghsh
H<<,^tH<<sni[i]->Average<<endl<<endl;
cout«Ml> 修改地址M«endl;
cout«M2、修改电话号码H«endl;
cout«"3、修改数学成绩,,«endl;
cout«H4>修改英语成绩”vvendl;
cout«M0> 返回 ”vvendl;
cout«M请选择操作二 cin»x;
fbr(int k=0;k<1;k++)
{
while(strcmp(x,M 1 H)==0)
{
COUtVV”请输入新的地址:”;
a=new char[];
ciii»a;
strcpy(stu[i]->Addr,a);
back。;
xeturn;
)
while(strcmp(x,M2H)==0)
{
coutvv”请输入新的电话号码:”;
cin»stu[i]->Tel;
backQ;
return;
)
while(strcmp(x,M3H)==0)
coutvv,,请输入新的数学成绩二
cin»stu [i] ->Matli;
while(stu[i]->Math> 1 |stu[i]-^-Math<0) cout«"请重新输入 OTOO:”;cin»stu[i]・>Math;
}
stu[i]->Average=(stu [i]->Math+stu [i]->English)/2;
backQ;
return:
)
while(strcmp(x/,4H)==0)
(
cout«H请输入新的英语成绩:";
cin»stu [i]->English;
while(stu[i]->English> 1 |stu[i]->English<0)
(
cout«"请重新输入 0〜1:";cin»stu[i]・>English;
};
stu [i]->Average=(stu [i]->Math+stu [i]->English)/2;
backQ;
return:
)
cout«M请在1〜4中选择二
cin»x;
}
if(had==0)
(
cout«n对不起!没有查询到H«str«n的信息!H«endl; back_no();
}
void CClass::delQ//4.删除学生的信息
(
char str[30];
int i,had=0;
if(tiine!=0)
{
coutvv”请输入您要删除的学号二
cm»sti;
for(i=0;i<50;i++)
if(strcmp(stu[i]->StudNo,str)=0)
{
had=l;
cout«M第”vvi+i«” 位学生:H«endl;
cout«,,\f«M身份证号码:H«n\tH«stu[i]->IDNo«eiidl
vv,,\t“vv” 姓名:”v v*y vstu[i].>Namev<endl
vv,,\t“vv” 住址 «"\r«stu[i]->Addr«endl
vv,,\t”vv” 电话:”vv*yvstu[i].>Telv<endl
vv,,\t”vv” 学号:”v v*”v vstu[i].>StudNov<endl w,,\t“vv” 数学成绩:H«"\tH«stu[i]->Math«endl vv,,\t“vv” 英语成绩:H«"\tH«stu[i]->English«endl vv,,\t”vv” 平均分:”vv*yvstu[i].>Averagev<endl«endl;
for(int j=i j<=tiine-l J++)
{
strcpy(stu[j]->IDNo,sni[j-rl]->IDNo);
strcpy(stuIj]->Name,stu[j+l]->Name);
strcpy(stuIj]->Addi;sniIj+l]->Adclr);
strcpy(stu[j ]->Tel,stu [j+l]->Tel);
strcpy(stu[j]->StudNo,stu[j+l]->StudNo);
stu U ]->Math=stu |j+1 ]->Math;
stu[j]->English=stu[j+1 ]->English;
stu U ]->Average=stu °+1 ]・> Average;
}
back();
}
iRhad==O)
(
cout«H对不起!没有查询到n«str«n的信息! ”V Vendl; back_no();
}
}
}
void CClass::fiiid()//6.查询学生的信息
(
char str[3O];
coutvv”请输入您要查询学生的姓名/学号/身份证号码/电话号码:\t”;
ciii»str;
i=0;i<time;i++)
if(sticnip(stu[i]->Name,sti)==0||sticmp(sni[i]->IDNo,str)==0||sticmp(sni[i]->StudNo,str)==0||strcmp(stu[i]->
TeLstr)=O)
vv,,\t,,vv” 姓名
住址
VV”\t”VV” 电话
学号
VV”\t”VV”数学成绩
«,,\t"«"英语成绩
平均分
cout«M\n\tH«H身份证号码:n«n\tH«stu[i]->IDNo«eiidl
H«H\tH«stu[i]->Name«endl
H«H\tH«stu[i]->Addi«endl
H«H\tH«stu[i]->Tel«endl
H«H\tH«stu[i]->SmdNo«endl
H«H\tH«stu[i]->Math
H«H\tH«stu[i]->English
H<<,^tH<<sni[i]->Aveiage<<endl<<endl;
back_no();
return;
}
}
cout«H对不起!没有查询到H«str«H的信息!H«endl: back.noQ;
void niainQ//main 主函数
(
system(nverM);
CClass ClassRoom;
char selection[30];
ClassRoom.CreateClassQ;
system(Hclsn);
fbr(mt o=0;o<10;o++)
{
ClassRoom.wntein();
cout«*'学生信息管理程序,'«endl;
cout«"K添加学生信息"«endl
vv”2、显示学生信息”v<endl
«”3、修改学生信息”《endl
vv”4、删除学生信息”v<endl
«”5、保存学生信息”v<endl
«”6、查询学生信息”v<endl
vv”0、退出程序,•«endl«',请选择:";
cin»selection;
iRstrcmp(selection," 1 ")==0)
{
title。;
cout«M L添加学生信息”v Vendl;
ClassRoom.NewAStuQ;
tiine=time+l;
}
else if(strcmp(selection,n2n)=0)
{
cout«M2.打印学生信息”v Vendl;
if(tiine=O)
{
cout«M\ii\n\t\t\t 暂时没有记录!"v<endl; back_no();
}
else
ClassRoom.OutClassName 0;
)
else if(strcmp(selection,H3 ”)=0)
{
title。;
cout«"3,修改学生信息H«endl;
ClassRoom.changeQ;
}
else if(strcmp(selection,,'4")=0)
{
title。;
cout«"4,删除学生信息H«endl;
ClassRoom.delQ;
}
else if(strcmp(selection,,'5")=0)
{
title。;
cout«"5,保存学生信息H«endl;
C lassRoom.wiitemoQ;
}
else if(strcmp(selection,,'6")=0)
{
title。;
cout«"6.查询学生信息H«endl;
ClassRoom.fiiid();
}
else if(strcmp(selection,,'0")=0)
{
exit(O);
}
else system(HclsM);
cout«H请在。〜6中选择:\n”;
)
展开阅读全文