?? 123.cpp
字號:
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
struct score
{
int math;
int English;
int computer;
};
struct student
{
int num;
char name[20];
char sex[2];
int age;
char address[40];
struct score sco; //結(jié)構(gòu)體嵌套。
};
struct student stu[30];
int i,j;
char a[4],b[4],c[4],d[4],e[4],f[4],g[4],h[4];
//第一部分:輸入學(xué)生基本信息。
void InputInfo()
{
ofstream outfile("學(xué)生基本信息.txt",ios::out);//定義輸出文件流對象,以輸出方式打開磁盤文件
if(!outfile)
{
cerr<<"open error!"<<endl;
return;
}
outfile<<"學(xué)號"<<setw(10)<<"姓名"<<setw(10)<<"性別"<<setw(10)<<"年齡"<<setw(14)<<"家庭地址"<<endl;
cout<<"請輸入學(xué)生的人數(shù)";
cin>>j;
for(i=0;i<j;i++)
{
cout<<"學(xué)號";cin>>stu[i].num;
cout<<"姓名";cin>>stu[i].name;
cout<<"性別";cin>>stu[i].sex;
cout<<"年齡";cin>>stu[i].age;
cout<<"地址";cin>>stu[i].address;
cout<<setiosflags(ios::right);
outfile<<setw(3)<<stu[i].num<<setw(10)<<stu[i].name<<setw(10)<<stu[i].sex<<setw(10)<<stu[i].age<<setw(14)<<stu[i].address<<endl;
}
outfile.close();
}
//第二部分:輸入學(xué)習(xí)成績函數(shù)。
void score1() //第一學(xué)期成績函數(shù)
{
fstream infile("學(xué)生基本信息.txt",ios::in); //定義輸入文件流,以輸入方式打開磁盤文件。
if(!infile)
{
cerr<<"open error!"<<endl;
return ;
}
infile>>a>>b>>c;
infile>>stu[i].num>>stu[i].name>>stu[i].sex;
ofstream outfile("學(xué)生第一學(xué)期成績.txt",ios::out); //定義輸出文件流,以輸出方式打開磁盤文件。
if(!outfile)
{
cerr<<"open error!"<<endl;
return ;
}
outfile<<"學(xué)號"<<setw(10)<<"姓名"<<setw(10)<<"性別"<<setw(10)<<"數(shù)學(xué)"<<setw(10)<<"英語"<<setw(12)<<"計算機"<<endl;
cout<<"請按學(xué)號輸入學(xué)生成績:"<<endl;
for(i=0;i<j;i++)
{
cout<<"請輸入第一學(xué)期學(xué)生成績。"<<endl;
cout<<"請輸入學(xué)號為"<<stu[i].num<<"的成績"<<endl;
cout<<"數(shù)學(xué):";cin>>stu[i].sco.math;
cout<<"英語:";cin>>stu[i].sco.English;
cout<<"計算機:";cin>>stu[i].sco.computer;
infile>>stu[i].num>>stu[i].name>>stu[i].sex;
outfile<<setiosflags(ios::right);
outfile<<setw(3)<<stu[i].num<<setw(10)<<stu[i].name<<setw(10)<<stu[i].sex<<setw(10)<<stu[i].sco.math<<setw(10)<<stu[i].sco.English<<setw(12)<<stu[i].sco.computer<<endl;
}
infile.close();
outfile.close();
}
void score2() //第二學(xué)期成績
{
fstream infile("學(xué)生基本信息.txt",ios::in); //定義輸入文件流,以輸入方式打開磁盤文件。
if(!infile)
{
cerr<<"open error!"<<endl;
return ;
}
infile>>a>>b>>c;
infile>>stu[i].num>>stu[i].name>>stu[i].sex;
ofstream outfile("學(xué)生第二學(xué)期成績.txt",ios::out); //定義輸出文件流,以輸出方式打開磁盤文件。
if(!outfile)
{
cerr<<"open error!"<<endl;
return ;
}
outfile<<"學(xué)號"<<setw(10)<<"姓名"<<setw(10)<<"性別"<<setw(10)<<"高數(shù)"<<setw(10)<<"英語"<<setw(12)<<"計算機"<<endl;
cout<<"請按學(xué)號輸入學(xué)生成績:"<<endl;
for(i=0;i<j;i++)
{
cout<<"請輸入第二學(xué)期學(xué)生成績。"<<endl;
cout<<"請輸入學(xué)號為"<<stu[i].num<<"的成績"<<endl;
cout<<"數(shù)學(xué):";cin>>stu[i].sco.math;
cout<<"英語:";cin>>stu[i].sco.English;
cout<<"計算機:";cin>>stu[i].sco.computer;
infile>>stu[i].num>>stu[i].name>>stu[i].sex;
outfile<<setiosflags(ios::right);
outfile<<setw(3)<<stu[i].num<<setw(10)<<stu[i].name<<setw(10)<<stu[i].sex<<setw(10)<<stu[i].sco.math<<setw(10)<<stu[i].sco.English<<setw(12)<<stu[i].sco.computer<<endl;
}
infile.close();
outfile.close();
}
//第三部分:查詢功能函數(shù)。
void search_1()
{ int m,n;
cout<<"請輸入學(xué)號:";
cin>>m;
for(i=0;i<j;i++)
{
if (m==stu[i].num)
{
do{
cout<<"1.第一學(xué)期成績:"<<"2.第二學(xué)期成績"<<"3.返回"<<endl;
cin>>n;
switch (n)
{
case 1: //查詢第一學(xué)期成績
{
fstream infile("學(xué)生第一學(xué)期成績.txt",ios::in);
if(!infile)
{
cerr<<"open error!"<<endl;
return;
}infile>>a>>b>>c>>f>>g>>h;
infile>>setw(3)>>stu[i].num>>setw(10)>>stu[i].name>>setw(10)>>stu[i].sex>>stu[i].sco.math>>stu[i].sco.English>>stu[i].sco.computer;
cout<<"學(xué)號"<<setw(10)<<"姓名"<<setw(10)<<"性別"<<setw(10)<<"數(shù)學(xué)"<<setw(10)<<"英語"<<setw(12)<<"計算機"<<endl;
cout<<setiosflags(ios::right);
cout<<setw(3)<<stu[i].num<<setw(10)<<stu[i].name<<setw(10)<<stu[i].sex;
cout<<setw(10)<<stu[i].sco.math<<setw(10)<<stu[i].sco.English<<setw(12)<<stu[i].sco.computer<<endl;
};break;
case 2: //查詢第二學(xué)期成績
{
ifstream infile("學(xué)生第二學(xué)期成績.txt",ios::in);
if(!infile)
{
cerr<<"open error!"<<endl;
return;
}infile>>a>>b>>c>>f>>g>>h;
infile>>setw(3)>>stu[i].num>>setw(10)>>stu[i].name>>setw(10)>>stu[i].sex>>stu[i].sco.math>>stu[i].sco.English>>stu[i].sco.computer;
cout<<"學(xué)號"<<setw(10)<<"姓名"<<setw(10)<<"性別"<<setw(10)<<"數(shù)學(xué)"<<setw(10)<<"英語"<<setw(12)<<"計算機"<<endl;
cout<<setiosflags(ios::right);
cout<<setw(3)<<stu[i].num<<setw(10)<<stu[i].name<<setw(10)<<stu[i].sex;
cout<<setw(10)<<stu[i].sco.math<<setw(10)<<stu[i].sco.English<<setw(12)<<stu[i].sco.computer<<endl;
};break;
case 3:cout<<"請再次按3鍵回到主菜單"<<endl; break;
default : cout<<"輸入錯誤。"<<endl;
}
} while(n!=3);
}//if語句結(jié)束
else cout<<endl;//"輸入錯誤.請重新輸入。";
}//for 循環(huán)結(jié)束
}
void search_2()
{
int m;
char a[20];
cout<<"請輸入姓名:";
cin>>a;
for(i=0;i<j;i++)
{
if(strcmp(a,stu[i].name)==0)
{
do{
cout<<"1.第一學(xué)期成績:"<<"2.第二學(xué)期成績"<<"3.返回"<<endl;
cin>>m;
switch (m)
{
case 1:
{
fstream infile("學(xué)生第一學(xué)期成績.txt",ios::in);
if(!infile)
{
cerr<<"open error!"<<endl;
return ;
}infile>>a>>b>>c>>f>>g>>h;
infile>>setw(3)>>stu[i].num>>setw(10)>>stu[i].name>>setw(10)>>stu[i].sex>>stu[i].sco.math>>stu[i].sco.English>>stu[i].sco.computer;
cout<<"學(xué)號"<<setw(10)<<"姓名"<<setw(10)<<"性別"<<setw(10)<<"數(shù)學(xué)"<<setw(10)<<"英語"<<setw(12)<<"計算機"<<endl;
cout<<setiosflags(ios::right);
cout<<setw(3)<<stu[i].num<<setw(10)<<stu[i].name<<setw(10)<<stu[i].sex;
cout<<setw(10)<<stu[i].sco.math<<setw(10)<<stu[i].sco.English<<setw(12)<<stu[i].sco.computer<<endl;
};break;
case 2:
{
ifstream infile("學(xué)生第二學(xué)期成績txt",ios::in);
if(!infile)
{
cerr<<"open error!"<<endl;
return ;
}infile>>a>>b>>c>>f>>g>>h;
infile>>setw(3)>>stu[i].num>>setw(10)>>stu[i].name>>setw(10)>>stu[i].sex>>stu[i].sco.math>>stu[i].sco.English>>stu[i].sco.computer;
cout<<"學(xué)號"<<setw(10)<<"姓名"<<setw(10)<<"性別"<<setw(10)<<"數(shù)學(xué)"<<setw(10)<<"英語"<<setw(12)<<"計算機"<<endl;
cout<<setiosflags(ios::right);
cout<<setw(3)<<stu[i].num<<setw(10)<<stu[i].name<<setw(10)<<stu[i].sex;
cout<<setw(10)<<stu[i].sco.math<<setw(10)<<stu[i].sco.English<<setw(12)<<stu[i].sco.computer<<endl;
};break;
case 3:cout<<"請再次按3鍵回到主菜單"<<endl; break;
default : cout<<"輸入錯誤。"<<endl;
}
} while(m!=3);
}//if語句結(jié)束
else cout<<endl;//"輸入錯誤.請重新輸入。";
}//for 循環(huán)結(jié)束
}
void search()
{
int m;
cout<<"請選擇查詢方法:"<<"1:按學(xué)號查詢."<<"2:按姓名查詢."<<"3.退出"<<endl;
for( m=1;m<=2;m++)
{
cin>>m;
switch(m)
{
case 1: search_1();break;
case 2: search_2();break;
case 3: break;
default:cout<<"錯誤,請重新選擇:";
}
}
}
//第四部分:數(shù)據(jù)統(tǒng)計。
void count()
{
int k=0;
int q=0;
cout<<"第一學(xué)期不及格課程學(xué)生信息"<<endl; //第一學(xué)期成績信息
fstream infile("學(xué)生第一學(xué)期成績.txt",ios::in);
if(!infile)
{
cerr<<"open error!"<<endl;
return ;
}infile>>a>>b>>c>>f>>g>>h;
for(i=0;i<j;i++)
{ infile>>setw(3)>>stu[i].num>>setw(10)>>stu[i].name>>setw(10)>>stu[i].sex>>stu[i].sco.math>>stu[i].sco.English>>stu[i].sco.computer;
if(stu[i].sco.math||stu[i].sco.English||stu[i].sco.computer<60)
k++;
}
cout<<"不及格人數(shù)為:"<<k<<endl;
cout<<"不及格信息:"<<endl;
for(i=0;i<j;i++)
{
if(stu[i].sco.math<60) cout<<"姓名:"<<stu[i].name<<"數(shù)學(xué):"<<stu[i].sco.math<<endl;
if(stu[i].sco.English<60) cout<<"姓名:"<<stu[i].name<<"英語:"<<stu[i].sco.English<<endl;
if(stu[i].sco.computer<60) cout<<"姓名:"<<stu[i].name<<"計算機:"<<stu[i].sco.computer<<endl;
else cout<<endl;
}
cout<<"第二學(xué)期不及格課程學(xué)生信息。"<<endl; //第二學(xué)期成績信息
fstream infil("學(xué)生第二學(xué)期成績.txt",ios::in);
if(!infile)
{
cerr<<"open error!"<<endl;
return ;
}infile>>a>>b>>c>>f>>g>>h;
for(i=0;i<j;i++)
{ infile>>setw(3)>>stu[i].num>>setw(10)>>stu[i].name>>setw(10)>>stu[i].sex>>stu[i].sco.math>>stu[i].sco.English>>stu[i].sco.computer;
if(stu[i].sco.math||stu[i].sco.English||stu[i].sco.computer<60)
q++;
}
cout<<"不及格人數(shù)為:"<<q<<endl;
cout<<"不及格信息:"<<endl;
for(i=0;i<j;i++)
{
if(stu[i].sco.math<60) cout<<"姓名:"<<stu[i].name<<"數(shù)學(xué):"<<stu[i].sco.math<<endl;
if(stu[i].sco.English<60) cout<<"姓名:"<<stu[i].name<<"英語:"<<stu[i].sco.English<<endl;
if(stu[i].sco.computer<60) cout<<"姓名:"<<stu[i].name<<"計算機:"<<stu[i].sco.computer<<endl;
else cout<<endl;
}
}
int main()
{
int m,n;
do{
cout<<"********************************學(xué)生成績管理系統(tǒng)*******************************"<<endl;
cout<<"1->輸入學(xué)生基本信息"<<" "<<"2->輸入學(xué)生成績"<<" "<<"3->數(shù)據(jù)查詢"<<" "<<"4->統(tǒng)計數(shù)據(jù)"<<" "<<"5->退出系統(tǒng)"<<endl;
cout<<"*******************************************************************************"<<endl;
cout<<"請選擇功能鍵";
cin>>m;
switch(m)
{
case 1:
InputInfo();break;
case 2:
do
{
cout<<"1.第一學(xué)期。"<<"2.第二學(xué)期。"<<"3.完成。"<<endl;
cin>>n;
switch(n)
{
case 1:score1();break;
case 2:score2();break;
case 3: break;
default :cout<<"輸入錯誤";
}
}while(n<3);break;
case 3: search();break;
case 4:count();break;
case 5: break;
default :cout<<"輸入錯誤"<<endl;
}
}while (m!=5);
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -