⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nnn.cpp

📁 学生专业信息管理程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//=================================================
//filename:Basic.cpp
//实验讲义P185 7.4.8
//Steven Chan
//2008-04-18
//=================================================
#include<stdio.h>
#include<iostream.h>
#include<string.h>
#include<conio.h>
int n,d=0,a=0;
struct student *creat();                                         //建立学生资料库  
struct student *p1,*head;                      
//-------------------------------------------------
class Base                                  //基类
{
public:
	void init_stu(void);                       //初始化学生基本资料
	void modify_infor(void);                   //修改学生基本资料
	void sech_num(long nu);                //按学号查找
	void sech_nam(char *na);               //按姓名查找
	void show(void);                           //显示学生基本资料
protected:
    long num;                               //学号
	char name[30];                          //姓名
	int sex;                                //性别
	int age;                                //年龄
	char addr[50];                          //住址
	char mdep[30];                          //主修专业名称
};
//-------------------------------------------------
class Fbase:virtual public Base                 //辅修类
{
public:
	void set_fdep(void);                    //输入辅修专业名称
	void set_fscore(void);                  //输入辅修成绩单
	void Fmodify(void);                     //修改学生辅修成绩
	void count_asfal(void);                 //统计学生成绩
	void show_Fxco(void);            
protected:
	char fdep[30];                      //辅修专业名称        
	int Fscore[4];                      //辅修成绩表
};
//-------------------------------------------------
class First:virtual public Base                          //主修类
{
public:
	void initial(void);                              //输入学生主修成绩
	void modify(void);                               //修改学生主修成绩
    void count_maexc(void);                           //统计优秀学生成绩
	void count_mafal(void);                           //统计不及格学生成绩
	void show_maj(void);                             //输出学生主修资料
protected:
	int Mscore[5];                               //主修成绩表
};
//-------------------------------------------------
class Manag:public First,public Fbase
{
public:
	Manag(void);                  //构造函数
    void statics_major(void);          //对主修系成绩进行统计的函数
	void Statics_second(void);         //对辅修系成绩进行统计的函数
	void show_statics(void);           //输出学位情况函数
protected:
	char sta_maj[20];         //主修学位
	char sta_sec[20];         //辅修学位
};
//---------------------------------------------------
struct student
{
	Manag *stu;
	student *next;                  //指向下一结点 
};
//-------------------------------------------------
void First::show_maj()
{
	cout<<"********************************************************************\n";
	cout<<"-----------------STUDENT INFORMATIONS-------------------------------\n";
    cout<<"  NAME: "<<name<<"\t\t\tID NO.: "<<num<<endl;
	cout<<"  SEX: "<<sex<<"\t\t\tAGE: "<<age<<endl;
	cout<<"  ADD: "<<addr<<"\t\t\tMAJOR: "<<mdep<<endl;
    cout<<"\n";
	int j;
	cout<<"-----------------STUDENT MAJOR SUBJECT INFORMATIONS-----------------\n";
    for (j=0; j<5; j++)
				cout<<"SUBJECT "<<j+1<<": "<<Mscore[j]<<"\t";
    cout<<"--------------------------------------------------------------------\n";
}
//---------------------------------------------------
void Fbase::show_Fxco()
{
	cout<<"********************************************************************\n";
	cout<<"-----------------STUDENT INFORMATIONS-------------------------------\n";
    cout<<"  NAME: "<<name<<"\t\t\tID NO.: "<<num<<endl;
	cout<<"  SEX: "<<sex<<"\t\t\tAGE: "<<age<<endl;
	cout<<"  ADD: "<<addr<<endl;
    cout<<"\n";
	int j;
	cout<<"-----------------STUDENT FBASE SUBJECT INFORMATIONS-----------------\n";
	            cout<<"Minor name: "<<fdep;
    for(j=0;j<4;j++)
				cout<<"\nSUBJECT "<<j+1<<": "<<Fscore[j]<<"\t\n";
    cout<<"---------------------------------------------------------------------\n";
}
//----------------------------------------------------
Manag::Manag()
{   int i;
	num=0;
	strcpy(name,"NONAME");
	sex=0;
	age=0;
	strcpy(addr,"NO");
	strcpy(mdep,"NO");
	strcpy(fdep,"NO");
	strcpy(sta_maj,"Empty");
	strcpy(sta_sec,"empty");
	for (i=0; i<5; i++)
		Mscore[i]=0;
	for(i=0;i<4;i++)
		Fscore[i]=0;
}
//-------------------------------------------------
void Base::init_stu()     //初始化学生资料函数定义
{
	cout<<"--------------------Initialization--------------------\n";
		cout<<"ID NO.: ";
	    cin>>num;
	cin.get();
	if(num==0)
	{
		a=1;
	    return;
	}
	cout<<"STUDENT NAME: ";
    cin.getline(name,30);
	cout<<"ENTER SEX: ";
	cin>>sex;
	cout<<"ENTER AGE: ";
	cin>>age;
	cin.get();
	cout<<"ADDRESS: ";
	cin.getline(addr,50);
	cout<<"MAJOR: ";
	cin.getline(mdep,30);
	cout<<"----------------End of Initialization!----------------\n";
	return;
}
//-------------------------------------------------
void Base::modify_infor()//修改学生基本资料函数定义
{
	int ans;
	cout<<"------------------Modify Information------------------\n";
	cout<<"|                       MENU                         |\n";
	cout<<"|            1.Modify student's ID Number            |\n";
	cout<<"|            2.Modify student's name                 |\n";
	cout<<"|            3.Modify student's sex                  |\n";
	cout<<"|            4.Modify student's age                  |\n";
	cout<<"|            5.Modify student's address              |\n";
	cout<<"|            6.Modefy student's major                |\n";
	cout<<"------------------------------------------------------\n";
	do
	{
		cout<<"Enter your choise [ ]\b\b";
	    cin>>ans;
		cin.get();
		if(ans<1||ans>6) 
		{
			cout<<"\a---------------------INPUT ERROR!---------------------\n";
			if(ans<1)  cout<<"     You should enter a number over 1.\n";
			if(ans>6)  cout<<"     You should enter a number under 6.\n";
			cout<<"Input again,please!\n";
            cout<<"------------------------------------------------------\n";
		}
	}while(ans<1||ans>6);
	switch(ans)
	{
	case 1: //修改学号
		{
			cout<<"ENTER NEW ID NO.: ";
		    cin>>num;
		    break;
		}
	case 2://修改姓名
		{
			cout<<"ENTER NEW NAME: ";
            cin.getline(name,30);
	        cin.get();
		    break;
		}
	case 3://修改性别
		{
			cout<<"ENTER NEW SEX: ";
	        cin>>sex;
		    break;
		}
	case 4://修改年龄
		{
			cout<<"ENTER NEW AGE: ";
		    cin>>age;
		    break;
		}
	case 5://修改地址
		{
			cout<<"ENTER NEW ADDRESS: ";
	        cin.getline(addr,50);
		    break;
		}
	case 6://修改专业
		{
			cout<<"ENTER NEW MAJOR: ";
	        cin.getline(mdep,30);
	        cin.get();
		    break;
		}
	default://操作错误
		cout<<"OPERATION ERROR!\n";
	}
}
//-------------------------------------------------
void Base::sech_num(long nu)   //按学号查找函数定义
{   a=0;
	if(nu==num)  a=1;
}
//-------------------------------------------------
void Base::sech_nam(char *na)   //按姓名查找函数定义
{   a=0;
	if(strcmp(name,na)==0)  a=1;
}
//-------------------------------------------------
void Base::show()               //显示学生基本资料
{
	cout<<"-----------------STUDENT INFORMATIONS-----------------\n";
    cout<<"  NAME: "<<name<<"\tID NO.: "<<num<<endl;
	cout<<"  SEX: "<<sex<<"\tAGE: "<<age<<endl;
	cout<<"  ADD: "<<addr<<"\tMAJOR: "<<mdep<<endl;
    cout<<"------------------------------------------------------\n";
	return;
}
//-------------------------------------------------
void First::initial()       //输入学生成绩函数定义
{
	cout<<"---------------ENTER MAIN MAJOR SCORES!---------------\n";
	for(int i=0;i<5;i++)
	{
		cout<<"SCORE "<<i+1<<": ";
		cin>>Mscore[i];
	}
    cout<<"---------------END OF ENTER OPERATION !---------------\n";
	return;
}
//-------------------------------------------------
void First::modify()            //修改学生主修成绩
{
	int i=0,j=0;
	cout<<"---------------MODIFY MAIN MAJOR SCORES---------------\n";
	cout<<"ENTER THE NO. OF THESE SCORES: ";
	cin>>i;
	cout<<"ENTER THE NEW SCORE: ";
	cin>>j;
	Mscore[i-1]=j;
	cout<<"---------------END OF MODIFY OPERATION!---------------\n";
	return;
}
//-------------------------------------------------
void First::count_maexc()   //统计优秀学生主修成绩
{   
	int i=0,j;
	d=0;
	for(j=0;j<5;j++)
	{
		if(Mscore[j]<70)
		{
			i=0;
			break;
		}
		if(Mscore[j]>=85)  i++;
	}
	if(i>=3)
	{   cout<<"**************************************************************\n";
	    cout<<"----------------------Excellent student-----------------------\n";
		show();                 //显示学生基本资料
		cout<<"\n------------------EXCELLENT SCORE INFORMATIONS-----------------\n"; 
		for(j=0;j<5;j++)
			if(Mscore[j]>=85)
				cout<<"SUBJECT "<<j+1<<": "<<Mscore[j]<<"\t";
   		cout<<"\n---------------------------------------------------------------\n";
		d=d+1;
	}
	
}
//-------------------------------------------------
void First::count_mafal()      //统计不及格学生成绩
{
	int i,j=0;
	d=0;
	for(i=0;i<5;i++)
		if(Mscore[i]<60)
			j++;
	if(j!=0)
	{   cout<<"*****************************************************************\n";
	    cout<<"-----------------------FAIL SCORE student------------------------\n";
		show();
		cout<<"\n--------------------FAIL SCORE INFORMATIONS!--------------------\n\n";
		for(i=0;i<5;i++)
			if(Mscore[i]<60)
				cout<<"SUBJECT "<<i+1<<": "<<Mscore[i]<<"\t";
		cout<<"\nYou need having examination again.\n";
		cout<<"\n-----------------------------------------------------------\n";
		d=d+1;
	}
	
}
//-------------------------------------------------
void Fbase::set_fdep()          //输入辅修专业名称
{   cin.get();
	cout<<"--------------------ENTER SUBJECT!--------------------\n\n";
	cout<<"Please input the sub-subject you choice.\n";
	cin.getline(fdep,30);
	
	cout<<"\n---------------------END OF ENTER---------------------\n";
	return;
}
//-------------------------------------------------
void Fbase::set_fscore()          //输入辅修成绩单
{
	cout<<"-------------------ENTER SUB-SCORE!-------------------\n\n";
	cout<<"Please input the sub-scores.\n";
	for(int i=0;i<4;i++)
	{
		cout<<"SCORE "<<i+1<<": ";
		cin>>Fscore[i];
	}
	cout<<"\n---------------------END OF ENTER---------------------\n";
	return;
}
//-------------------------------------------------
void Fbase::Fmodify()           //修改学生辅修成绩
{
	int n,m;
	cout<<"-------------------MODIFY SUB-SCORE-------------------\n\n";
	cout<<"Which score need modifying?\nNO.: ";
	cin>>n;
	cout<<"Please input the new score!\nNEW SCORE: ";
	cin>>m;
	Fscore[n-1]=m;
	cout<<"\n--------------------END OF MODIFY!--------------------\n";
	return;
}
//-------------------------------------------------
void Fbase::count_asfal()           //统计学生成绩
{
	int i,j=0;
	d=0;
	for(i=0;i<4;i++)
	{
		if(Fscore[i]<60)  j++;
	}
	if(j!=0)
	{
		show();
	    cout<<"---------------FAIL SCORE INFORMATIONS!---------------\n\n";
		for(i=0;i<4;i++)
			if(Fscore[i]<60)
				cout<<"SUBJECT "<<i+1<<": "<<Fscore[i]<<"\t";
		cout<<"You need having examination again.\n";
		cout<<"\n------------------------------------------------------\n";
		d=1;
	}
	
}
//-------------------------------------------------
struct student *creat()
{
  student *p1,*p2,*head1;
  Manag *angle_ptr2;
  n=0;
  angle_ptr2=new Manag;
  while(angle_ptr2==NULL)
  angle_ptr2=new Manag;
  p1=p2=new student;
  while(p1==NULL)
  p1=p2=new student;
  head1=NULL;
  p1->stu=angle_ptr2;
  angle_ptr2->init_stu();
   while(1)
   {
	   n=n+1;
       if(n==1) head1=p1;
       else p2->next=p1;
       p2=p1;
       p1=new student;
	   while(p1==NULL)
	   p1=new student;
       angle_ptr2=new Manag;
       while(angle_ptr2==NULL)
       angle_ptr2=new Manag;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -