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

📄 student.h

📁 刚学习C++时写的学生成绩管理系统,只需要创建file.cpp和student.h就行了
💻 H
📖 第 1 页 / 共 2 页
字号:
#include<iostream>
#include<string>
#include<cstring>
#include<iomanip>
#include<stdlib.h>
#include<fstream>
const int N=4;
using namespace std;
class student
{
	char number[15];//学生学号
	char name[10];//学生姓名 
    int score[N];//各门功课成绩
	float sum;//各门成绩的总分
	float average;//平均分
	int order;//名次
	student *link;//指向对象的指针

public:
	student *init()
	{   char c;
	    cout<<"请按任意键进行初始化"<<endl;
		cin>>c;
		if(c)
		cout<<"恭喜,初始化成功!"<<endl;
		return NULL;
	}
    student* create()
	{
	 student *h=NULL,*info,*last=NULL;
	 char c;
     for(;;)
	 {
loop: info=new student;
		 if(!info)
		 {
			 cout<<"\nout of memory";
		 }
		 cout<<"请输入学号:";
		 cin>>info->number ;
		 cout<<"请输入姓名:";
		 cin>>info->name;
		 float s=0;
		 float ave=0;
		 do{cout<<"请输入语文成绩:";
		 cin>>info->score[0];
		 while(!cin)
		 {cin.clear();
		 cin.ignore(80,'\n');
		 cout<<"数据输入错误,请重新输入语文成绩:";
		 cin>>info->score[0];}
		 if(info->score[0]>100||info->score[0]<0)
		 cout<<"注意数据只能在0~100之间"<<endl;}
		 while(info->score[0]>100||info->score[0]<0);
		 do{cout<<"请输入数学成绩:";cin>>info->score[1];
         while(!cin)
		 {cin.clear();
		 cin.ignore(80,'\n');
		 cout<<"数据输入错误,请重新输入数学成绩:";
		 cin>>info->score[1];}
		 if(info->score[1]>100||info->score[1]<0)
		 cout<<"注意数据只能在0~100之间"<<endl;}
		 while(info->score[1]>100||info->score[1]<0);
		 do{cout<<"请输入英语成绩:";cin>>info->score[2]; 
		 while(!cin)
		 {cin.clear();
		 cin.ignore(80,'\n');
		 cout<<"数据输入错误,请重新输入英语成绩:";
		 cin>>info->score[2];}
		 if(info->score[2]>100||info->score[2]<0)
		 cout<<"注意数据只能在0~100之间"<<endl;}		
		 while(info->score[2]>100||info->score[2]<0);
		 do{cout<<"请输入C++成绩:";cin>>info->score[3];
		 while(!cin)
		 {cin.clear();
		 cin.ignore(80,'\n');
		 cout<<"数据输入错误,请重新输入C++成绩:";
		 cin>>info->score[3];}
		 if(info->score[3]>100||info->score[3]<0)
		 cout<<"注意数据只能在0~100之间"<<endl  ;}
		 while(info->score[3]>100||info->score[3]<0);
         for(int i=0;i<4;i++)
		 s+=info->score[i];
		 ave=s/4.0;
		 info->sum=s;
		 info->average=ave;
    	 info->order=0;
		 info->link=NULL;
		 if(h==NULL)
		 {   //h=new student;
			 h=info;
			 last=info;
		 }
		 else
		 {
			 last->link=info;
			 last=info;
		 }
p:{   
	  cout<<"继续输入?(y/n)";
      cin>>c;
  }
      if(c!='y'&&c!='n')
	  {cout<<"输入错误!"<<endl;
	  goto p;}
      if(c=='y')goto loop;
	  if(c=='n')break;

	 }
return h;
}//创建链表
student *del(student *h)
{
	student *current,*last,*trailcurrent;
	//last 是指向最后一个节点的指针,trailcurrent是current的前趋指针
	char name[15];
	bool found;
	cout<<"请输入你要删除记录学生的名字:";
	cin>>name;
	current=h;
	last=new student;
	while(current!=0)//使last指向最后一个节点
	current=current->link;
	last=current;
	if(h==NULL)
	cout<<"链表为空,不可以删除数据"<<endl;
	else
	{
	  if(strcmp(h->name,name)==0)
	  {	current=h;
	    h=h->link;
		if(h==NULL)
		last=NULL;
		delete current;
		cout<<"成功删除"<<endl;
	  }
	  else 
	  {
		  found=false;
	   trailcurrent=h;
	   current=h->link;
	   while((!found)&&(current!=NULL))
	   {
		   if(strcmp(current->name,name)!=0)
		{
			trailcurrent=current;
			current=current->link;
		}
		else
		found=true;
	  }
	  if(found)
	  {   
		  cout<<"按任意数字键删除(1~10)"<<endl;
	      cout<<"按0退出"<<endl;
		  int g;
	      cin>>g;
		  if(g)
		  {
		  trailcurrent->link=current->link;
		  if(last==current)
		  last=trailcurrent;
		  delete current;
		  cout<<"删除成功"<<endl;
		  }
		  else
		  cout<<"删除不成功"<<endl;
	  }
	  else
		  cout<<"要删除学生的信息不在表中"<<endl;
	  }
	}
	return h;
}
void print(student *h)
{

int i=0;
student *p;
p=h;
if(p==NULL)
{
cout<<"  ┎───┬───┬───┬───┬───┬────┬───┬───┬───┓"<<endl;
cout<<setw(8)<<"│学号"<<setw(8)<<"│姓名"<<setw(8)<<"│语文"<<setw(8)<<"│数学"<<setw(8)<<"│英语"<<setw(9)<<"  │C++语言 │"
<<setw(8)<<"总分│"<<setw(6)<<"平均分"<<setw(6)<<"│名次  │"<<endl;
cout<<"  ┖───┴───┴───┴───┴───┴────┴───┴───┴───┚"<<endl;
cout<<"请先输入数据";
}
else
{

//cout<<"\n\n\n\n******************************学生成绩管理系统******************************\n";
cout<<"  ┎───┬───┬───┬───┬───┬────┬───┬───┬───┓"<<endl;
cout<<setw(8)<<"│学号"<<setw(8)<<"│姓名"<<setw(8)<<"│语文"<<setw(8)<<"│数学"<<setw(8)<<"│英语"<<setw(9)<<"  │C++语言 │"
<<setw(8)<<"总分│"<<setw(6)<<"平均分"<<setw(6)<<"│名次  │"<<endl;
cout<<"  ├───┼───┼───┼───┼───┼────┼───┼───┼───┤"<<endl;

while(p!=NULL)
{
i++;
if(p->link!=NULL){
cout<<"  │"<<setw(6)<<p->number<<"│"<<setw(6)<<p->name<<"│"<<setw(6)<<p->score[0]
<<"│"<<setw(6)<<p->score[1]<<"│"
    <<setw(6)<<p->score[2]<<"│"<<setw(6)<<p->score[3]<<"  │"
	<<setw(6)<<p->sum<<"│"<<setw(6)<<p->average<<"│"<<setw(6)<<
	p->order<<"│"<<setw(6)<<endl;
cout<<"  ├───┼───┼───┼───┼───┼────┼───┼───┼───┤"<<endl; }
else
{
	cout<<"  │"<<setw(6)<<p->number<<"│"<<setw(6)<<p->name<<"│"<<setw(6)<<p->score[0]
<<"│"<<setw(6)<<p->score[1]<<"│"
    <<setw(6)<<p->score[2]<<"│"<<setw(6)<<p->score[3]<<"  │"
	<<setw(6)<<p->sum<<"│"<<setw(6)<<p->average<<"│"<<setw(6)<<
	p->order<<"│"<<setw(6)<<endl;

cout<<"  ┖───┴───┴───┴───┴───┴────┴───┴───┴───┚"<<endl;
}
 p=p->link;
}
//cout<<"  ┖───┴───┴───┴───┴───┴────┴───┴───┴───┚"<<endl;

}
}
void search_by_name(student *h)
{
	student *p;
	p=new student;
	bool found;
	char   q[15];
	cout<<"请输入该生姓名:"<<endl;
	cin>>q;
	if(p==NULL)
		cout<<"兄弟,无节点数据,不能从链表里查询!"<<endl;
	else
	{
		p=h;
		found=false;
		while(!found&&p!=NULL)
		if(strcmp(p->name,q)==0)
		found=true;
		//else
		p=p->link;
		if(found)
		{
		cout<<"  ┎───┬───┬───┬───┬───┬────┬───┬───┬───┓"<<endl;
        cout<<setw(8)<<"│学号"<<setw(8)<<"│姓名"<<setw(8)<<"│语文"<<setw(8)<<"│数学"<<setw(8)<<"│英语"
        <<setw(9)<<"  │C++语言 │"
        <<setw(8)<<"总分│"<<setw(6)<<"平均分"<<setw(6)<<"│名次  │"<<endl;
         cout<<"  ├───┼───┼───┼───┼───┼────┼───┼───┼───┤"<<endl;
       cout<<"  │"<<setw(6)<<p->number<<"│"<<setw(6)<<p->name<<"│"<<setw(6)<<p->score[0]
     <<"│"<<setw(6)<<p->score[1]<<"│"
    <<setw(6)<<p->score[2]<<"│"<<setw(6)<<p->score[3]<<"  │"
	<<setw(6)<<p->sum<<"│"<<setw(6)<<p->average<<"│"<<setw(6)<<
	p->order<<"│"<<setw(6)<<endl;
	//cout<<"  ├───┼───┼───┼───┼───┼────┼───┼───┼───┤"<<endl;
	cout<<"  ┖───┴───┴───┴───┴───┴────┴───┴───┴───┚"<<endl;

			}
			else
				cout<<"无该生信息"<<endl;
	}
}
student *search_by_number(student *h)
{	student *p;
	p=new student;
	bool found;
	char   q[15];
	cout<<"请输入该生学号:"<<endl;
	cin>>q;
	if(p==NULL)
		cout<<"兄弟,无节点数据,不能从链表里查询!"<<endl;
	else
	{
		p=h;
		found=false;
		while(!found&&p!=NULL)
		if(strcmp(p->number,q)==0)
		found=true;
		else
		p=p->link;
		if(found)
		{
		cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"语文"<<"\t"<<"数学"<<"\t"<<"英语"<<"\t"<<"C++语言"
        <<"\t"<<"总分"<<"\t"<<"平均分"<<"\t"<<"名次"<<endl;
        cout<<p->number<<"\t"<<p->name<<"\t"<<p->score[0]<<"\t"<<p->score[1]
        <<"\t"<<p->score[2]<<"\t"<<p->score[3]<<"\t"<<p->sum<<"\t"<<p->average<<"\t"<<p->order<<"\t"<<endl;
		}
			else
				cout<<"无该生信息"<<endl;
	}
	return h;
}
student *modify(student *h)
{
	student *p;
	cout<<"请输入需要修改信息的学生的姓名:"<<endl;	
	p=new student;

⌨️ 快捷键说明

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