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

📄 课题一 学生学籍管理.cpp

📁 1.通过输入一到四年级学生信息(姓名
💻 CPP
字号:
#include<fstream.h>
#include<iostream.h>
#include<iomanip.h>//未知
#include<string.h>
static int count=0;//未知

class student{
private:	
	char numble[10];
	char name[10];
	char sex[8];
	int grade;
	float score;
	float egtext;
public:
   	student *next;
   	char *getn()
   	{
		return numble;
	}
  	 float getegtext()
   	{
		return egtext;
	}
   	int getgrade()
	{	
		return grade;
	}
	void getdata()
	{
		cout<<"(学号 姓名 性别 年级 已获得学分 四级英语成绩):"<<endl;
		cin>>numble>>name>>sex>>grade>>score>>egtext;
	}
	void disp()
	{
		cout<<setw(10)<<numble<<setw(6)<<name<<setw(5)<<sex<<setw(6)<<grade<<setw(10)<<score<<setw(10)<<egtext;
	}
	int cond()
	{
	   if(score<60.0) return 0;
	   	else if(egtext>=60.0) return 2;
            		else return 1;
	}
};


void func1()
{
	ofstream grade2("s2.dat");
    	if(!grade2)
	{
		cout<<"Cannot open file!\n";
		return;
	}
	ofstream grade4("s4.dat");
	if(!grade4)
	{
		cout<<"Cannot open file!\n";
		return;
	}
	ofstream output("student.dat");
	if(!output)
	{
		cout<<"Cannot open file!\n";
		return;
	}
	student s;
	int n;
	cout<<"输入学生数据:" <<endl;
	cout<<"学生人数:";
    	cin>>n;
	for(int i=0;i<n;i++)
	{
		cout<<"第"<<i+1<<"个学生"<<endl;
		s.getdata();
		output.write((char*)&s,sizeof(s));
		if(s.getgrade()==2) 
		{
			grade2.write((char*)&s,sizeof(s));
			count++;
		}
		if(s.getgrade()==4) 
		{
			grade4.write((char*)&s,sizeof(s));
		}
	}
	output.close();
	grade2.close();
	grade4.close();
}

void func2()
{
	ifstream input("s4.dat");
	if(!input)
	{
		cout<<"Cannot open file!\n";
		return;
	}
	ofstream out("s1.dat");
	if(!out)
	{
		cout<<"Cannot open file!\n";
		return;
	}
	student s;
	cout<<"输出四年级学生毕业情况"<<endl;
	cout<<"   学号      姓名   性别    年级   已获得学分    四级英语成绩   "<<endl;
	input.read((char*)&s,sizeof(s));
	while(input)
	{
		if(s.cond()==0)
		{
			char data[30]="不能毕业,不能获得学士学位.";
       			out.write((char*)&s,sizeof(s));
	  		out.write((char*)data,sizeof(data));
	   		s.disp();
			cout<<"       不能毕业,不能获得学士学位."<<endl;
		}
	 	if(s.cond()==1)
		{
			char data[30]="能毕业,但不能获得学士学位.";
        		out.write((char*)&s,sizeof(s));
			out.write((char*)data,sizeof(data));
		 	s.disp();
			cout<<"       能毕业,但不能获得学士学位."<<endl;
		}
		if(s.cond()==2)
	 	{
			char data[30]="能毕业,能获得学士学位.";
	   		out.write((char*)&s,sizeof(s));
		 	out.write((char*)data,sizeof(data));
		 	s.disp();
			cout<<"       能毕业,能获得学士学位."<<endl;
		}
    		input.read((char*)&s,sizeof(s));
	}
	out.close();
}


void func3()
{
	ifstream in("s4.dat");
	if(!in)
	{
		cout<<"Cannot open file!\n";
		return;
	}
	student s;
	char no[10];
	int a;
	for(int i=0;;i++)
	{
		cout<<"请输入要查询学生的学号与姓名:";
		cin>>no>>a;
		if(a==0) break;
		in.read((char*)&s,sizeof(s));
		while(in)
		{
			if(strcmp(s.getn(),no)==0) 
			{
				s.disp();
				if(s.cond()==0) cout<<"不能毕业,不能获得学士学位.";
				if(s.cond()==1) cout<<"能毕业,但不能获得学士学位.";
				if(s.cond()==2) cout<<"能毕业,能获得学士学位.";
				cout<<endl; 
			} 
			break;
			in.read((char*)&s,sizeof(s));
		}
	}
	in.close();
}


student *creat()//用来存储学生信息的链表!
{
	student stud[10],temp;
	ifstream in("s2.dat");
	if(!in)
	{
		cout<<"Cannot open file!\n";
	}
	for(int i=0;i<count;i++)
	{
		in.read((char*)&stud[i],sizeof(temp));
	};
	for(i=0;i<count;i++)
	   for(int j=0;j<count;j++)
		   if(stud[i].getegtext()<stud[j].getegtext())
		   {
			temp=stud[i];
		   	stud[i]=stud[j];
		   	stud[j]=temp;
		   }
	student *head;
	student *p1,*p2;
	int n=0;
	p1=p2=new student;
     	*p1=stud[0];
	head=NULL;
	for(i=0;i<count;i++)
	{
		n=n+1;
		if(n==1) head=p1;
	 		else p2->next=p1;
	 	p2=p1;
	 	p1=new student;
	 	*p1=stud[i+1];
	}
	p2->next=NULL;
	return head;
}


void p(student *head)
{
	student *p;
	p=head;
	if(head!=NULL)
 		do
		{
			p->disp();
 			p=p->next;
			cout<<endl;
 		}while(p!=NULL);
}


void main()
{	int sle;
  	do
  	{
		cout<<"选择\n	1:输入学生数据\n	2:输出大四学生毕业与取得学位情况\n	3:输出大二学生的四级英语成绩(由高到低)\n	4:查询大四学生毕业与取得学位情况 \n";
  		cin>>sle;
  		switch(sle)
  		{
			case 1:func1();break;
  			case 2:func2();break;
  			case 3:student *creat();p(creat());break;
  			case 4:func3();break;
		}
  	}while(sle==1||sle==2||sle==3||sle==4);
}

⌨️ 快捷键说明

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