📄 学生信息管理系统.cpp
字号:
#include "学生信息管理系统.h"
#include <fstream.h>
#include <string.h>
#include <iomanip.h>
ifstream input_file;
ofstream output_file;
char fdepA[30]; //记录第二专业名
char fdepB[30];
char fdepC[30];
long num1[20]; //修改资料时要用到的判断数据合法性数据
int temp=0;
void Base::set() //设置学生基本资料
{
input_file>>num>>name>>sex>>age>>mdep>>addr;
}
void Base::show() //显示并输出学生基本资料到文件
{
cout<<setw(10)<<num<<setw(10)<<name<<setw(3)<<sex<<setw(5)<<age<<setw(10)<<addr<<endl;
output_file<<setw(10)<<num<<setw(10)<<name<<setw(3)<<sex<<setw(5)<<age<<setw(10)<<addr<<endl;
}
long Base::get_num() //获取学号
{
return num;
}
int Base::modifyB(long num1) //修改学生基本资料
{
if(num==num1){
temp++;
cout<<"请输入该学生的名字,性别,年龄,地址:\n";
cin>>name>>sex>>age>>addr;}
if(temp==0) return 1;
else return 0;
}
FirstA::FirstA() //构造函数,实现成绩初始化为0
{
for(int i=0;i<6;i++)
Mscore[i]=0;
for(i=0;i<5;i++)
Fscore[i]=0;
}
void FirstA::set() //屏蔽基本资料设置函数
{
}
int FirstA::modifyB(long) //屏蔽基本资料修改函数
{
return 0;
}
void FirstA::set_ms() //用文件流读取设置主修成绩
{
long num1;
int Mscore1[6];
input_file>>num1;
if(num1==num){
strcpy(fdepA,mdep);
for(int i=0;i<6;i++){
input_file>>Mscore[i];}
}
else for(int i=0;i<6;i++){
input_file>>Mscore1[i];}
}
void FirstA::set_fs() //用文件流读取设置第二专业成绩
{
long num1;
int Fscore1[5];
char fdepA1[30];
input_file>>num1;
input_file>>fdepA1;
if(num1==num){
for(int i=0;i<5;i++){
input_file>>Fscore[i];}
}
else for(int i=0;i<5;i++){
input_file>>Fscore1[i];}
}
void FirstA::show_ms() //显示并用文件流输出主修成绩
{
for(int i=0;i<6;i++){
cout<<setw(5)<<Mscore[i];
output_file<<setw(5)<<Mscore[i];}
cout<<endl;
output_file<<endl;
}
void FirstA::show_fs() //显示并用文件流输出第二专业成绩
{
for(int i=0;i<5;i++){
cout<<setw(5)<<Fscore[i];
output_file<<setw(5)<<Fscore[i];}
cout<<endl;
output_file<<endl;
}
void FirstA::show_good() //显示并用文件流输出成绩优秀学生
{
int m=0,n=0;
for(int i=0;i<6;i++){
if(Mscore[i]>=85) m++;}
for(i=0;i<6;i++){
if(Mscore[i]>=70) n++;}
if(m>=3&&n==6){
show();
cout<<setw(10)<<mdep;
output_file<<setw(10)<<mdep;
show_ms();}
}
int FirstA::Mpass() //判断是否主修系需要补考函数算法
{
int m=0;
for(int i=0;i<6;i++){
if(Mscore[i]<60) m++;}
if(m==0) return 1;
else return 0;
}
void FirstA::show_Mfail() //显示并用文件流输出主修系需要补考学生
{
if(!Mpass()){
if(Mscore[0]!=0){
show();
cout<<setw(10)<<mdep;
output_file<<setw(10)<<mdep;
show_ms();}
}
}
int FirstA::Fpass() //判断是否第二专业需要补考
{
int m=0;
for(int i=0;i<5;i++){
if(Fscore[i]<60) m++;}
if(m==0) return 1; else return 0;
}
void FirstA::show_Ffail() //显示并用文件流输出第二专业需要补考学生
{
if(!Fpass()){
if(Fscore[0]!=0){
show();
cout<<setw(10)<<fdepA;
output_file<<setw(10)<<fdepA;
show_fs();}
}
}
void FirstA::modify_M(long& num1,long num) //修改主修成绩
{
if(num==num1&&num1==get_num()){
temp++;
cout<<"请输入该学生的成绩(6门):\n";
for(int i=0;i<6;i++){
cin>>Mscore[i];}
}
}
void FirstA::modify_F(long& num1,long num) //修改第二专业成绩
{
if(num==num1&&num1==get_num()){
temp++;
cout<<"请输入该学生的成绩(5门):\n";
for(int i=0;i<5;i++){
cin>>Fscore[i];}
}
}
FirstB::FirstB() //类FirstB函数功能与FirstA相同
{
for(int i=0;i<7;i++)
Mscore[i]=0;
for(i=0;i<4;i++)
Fscore[i]=0;
}
void FirstB::set()
{
}
int FirstB::modifyB(long)
{
return 0;
}
void FirstB::set_ms()
{
long num1;
int Mscore1[7];
input_file>>num1;
if(num1==num){
strcpy(fdepB,mdep);
for(int i=0;i<7;i++){
input_file>>Mscore[i];}
}
else for(int i=0;i<7;i++){
input_file>>Mscore1[i];}
}
void FirstB::set_fs()
{
long num1;
int Fscore1[4];
char fdepB1[30];
input_file>>num1;
input_file>>fdepB1;
if(num1==num){
for(int i=0;i<4;i++){
input_file>>Fscore[i];}
}
else for(int i=0;i<4;i++){
input_file>>Fscore1[i];}
}
void FirstB::show_ms()
{
for(int i=0;i<7;i++){
cout<<setw(5)<<Mscore[i];
output_file<<setw(5)<<Mscore[i];}
cout<<endl;
output_file<<endl;
}
void FirstB::show_fs()
{
for(int i=0;i<4;i++){
cout<<setw(5)<<Fscore[i];
output_file<<setw(5)<<Fscore[i];}
cout<<endl;
output_file<<endl;
}
void FirstB::show_good()
{
int m=0,n=0;
for(int i=0;i<7;i++){
if(Mscore[i]>=85) m++;}
for(i=0;i<7;i++){
if(Mscore[i]>=70) n++;}
if(m>=3&&n==7){
show();
cout<<setw(10)<<mdep;
output_file<<setw(10)<<mdep;
show_ms();}
}
int FirstB::Mpass()
{
int m=0;
for(int i=0;i<7;i++){
if(Mscore[i]<60) m++;}
if(m==0) return 1;
else return 0;
}
void FirstB::show_Mfail()
{
if(!Mpass()){
if(Mscore[0]!=0){
show();
cout<<setw(10)<<mdep;
output_file<<setw(10)<<mdep;
show_ms();}
}
}
int FirstB::Fpass()
{
int m=0;
for(int i=0;i<4;i++){
if(Fscore[i]<60) m++;}
if(m==0) return 1; else return 0;
}
void FirstB::show_Ffail()
{
if(!Fpass()){
if(Fscore[0]!=0){
show();
cout<<setw(10)<<fdepB;
output_file<<setw(10)<<fdepB;
show_fs();}
}
}
void FirstB::modify_M(long& num1,long num)
{
if(num==num1&&num1==get_num()){
temp++;
cout<<"请输入该学生的成绩(7门):\n";
for(int i=0;i<7;i++){
cin>>Mscore[i];}
}
}
void FirstB::modify_F(long& num1,long num)
{
if(num==num1&&num1==get_num()){
temp++;
cout<<"请输入该学生的成绩(4门):\n";
for(int i=0;i<4;i++){
cin>>Fscore[i];}
}
}
FirstC::FirstC() //类FirstC函数功能与FirstA相同
{
for(int i=0;i<5;i++)
Mscore[i]=0;
for(i=0;i<3;i++)
Fscore[i]=0;
}
void FirstC::set()
{
}
int FirstC::modifyB(long)
{
return 0;
}
void FirstC::set_ms()
{
long num1;
int Mscore1[5];
input_file>>num1;
if(num1==num){
strcpy(fdepC,mdep);
for(int i=0;i<5;i++){
input_file>>Mscore[i];}
}
else for(int i=0;i<5;i++){
input_file>>Mscore1[i];}
}
void FirstC::set_fs()
{
long num1;
int Fscore1[3];
char fdepC1[30];
input_file>>num1;
input_file>>fdepC1;
if(num1==num){
for(int i=0;i<3;i++){
input_file>>Fscore[i];}
}
else for(int i=0;i<3;i++){
input_file>>Fscore1[i];}
}
void FirstC::show_ms()
{
for(int i=0;i<5;i++){
cout<<setw(5)<<Mscore[i];
output_file<<setw(5)<<Mscore[i];}
cout<<endl;
output_file<<endl;
}
void FirstC::show_fs()
{
for(int i=0;i<3;i++){
cout<<setw(5)<<Fscore[i];
output_file<<setw(5)<<Fscore[i];}
cout<<endl;
output_file<<endl;
}
void FirstC::show_good()
{
int m=0,n=0;
for(int i=0;i<5;i++){
if(Mscore[i]>=85) m++;}
for(i=0;i<5;i++){
if(Mscore[i]>=70) n++;}
if(m>=3&&n==5){
show();
cout<<setw(10)<<mdep;
output_file<<setw(10)<<mdep;
show_ms();}
}
int FirstC::Mpass()
{
int m=0;
for(int i=0;i<5;i++){
if(Mscore[i]<60) m++;}
if(m==0) return 1;
else return 0;
}
void FirstC::show_Mfail()
{
if(!Mpass()){
if(Mscore[0]!=0){
show();
cout<<setw(10)<<mdep;
output_file<<setw(10)<<mdep;
show_ms();}
}
}
int FirstC::Fpass()
{
int m=0;
for(int i=0;i<3;i++){
if(Fscore[i]<60) m++;}
if(m==0) return 1; else return 0;
}
void FirstC::show_Ffail()
{
if(!Fpass()){
if(Fscore[0]!=0){
show();
cout<<setw(10)<<fdepC;
output_file<<setw(10)<<fdepC;
show_fs();}
}
}
void FirstC::modify_M(long& num1,long num)
{
if(num==num1&&num1==get_num()){
temp++;
cout<<"请输入该学生的成绩(5门):\n";
for(int i=0;i<5;i++){
cin>>Mscore[i];}
}
}
void FirstC::modify_F(long& num1,long num)
{
if(num==num1&&num1==get_num()){
temp++;
cout<<"请输入该学生的成绩(3门):\n";
for(int i=0;i<3;i++){
cin>>Fscore[i];}
}
}
void Manag::set_ms() //屏蔽设置主修成绩函数
{
}
void Manag::set_fs() //屏蔽设置第二专业成绩函数
{
}
int Manag::modify_M(long&,long) //屏蔽修改主修成绩函数
{
return 0;
}
int Manag::modify_F(long&,long) //屏蔽修改第二专业成绩函数
{
return 0;
}
void Manag::show_AB() //显示并用文件流输出获得主修学位A跟第二学位B双学位学生
{
if(FirstA::Mpass()&&FirstB::Fpass())
{
show();
cout<<setw(10)<<mdep;
output_file<<setw(10)<<mdep;
FirstA::show_ms();
cout<<setw(10)<<fdepB;
output_file<<setw(10)<<fdepB;
FirstB::show_fs();
}
}
void Manag::show_AC() //显示并用文件流输出获得主修学位A跟第二学位C双学位学生
{
if(FirstA::Mpass()&&FirstC::Fpass())
{
show();
cout<<setw(10)<<mdep;
output_file<<setw(10)<<mdep;
FirstA::show_ms();
cout<<setw(10)<<fdepC;
output_file<<setw(10)<<fdepC;
FirstC::show_fs();
}
}
void Manag::show_BA() //显示并用文件流输出获得主修学位B跟第二学位A双学位学生
{
if(FirstB::Mpass()&&FirstA::Fpass())
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -