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

📄 input_disp.cpp

📁 程序功能: 1 管理员开设课程; 2 学生可以选择课程; 3 学生注册; 4 教师注册; 5 教师给选自己课程的学生给成绩; 6 管理员对学生成绩进行管理; 7 学生能够查询通过密码自己
💻 CPP
字号:
#include "cpp9.h"
#include<conio.h>

/********************
 * 输入信息函数
 ********************/
Student * Student::input(Student *top,course *const topc)
{
	ifstream in;
	in.open("sname",ios::in|ios::nocreate);
	if (!in)  //判别是否已有文件
	{
		cout << "\t还没有建立文件, 退出时别忘记存文件。" << endl;
	}
	else
	{
	    in.close();
        if(top->count==0)
		{
			cout << "\t请稍候,取已有文件..." << endl;
	        top = load(top);
		}	
    } 

	Student *old,*star;	
    ASK(star);
	old=top;	
     
    while(old->next!=NULL)
	{
		old=old->next;
	}
	cout << "\t输入数据,输入0时结束。" << endl;
 
	--top->count;
	do 
	{
		++top->count; 

		cout << "\t学号:" << flush;
		gets(star->no);
		if(strcmp(star->no,"0") == 0) 
  			break;	  
	       
        cout << "\t名字:" << flush;
		gets(star->name);
        printf("\t设置密码:");
        star->pw.set();
	course *pc;
    
		   
		  int f=0;
		  int j=0;
		  while(1)
		  {
		    pc=topc;
			cout<<"\t选择课程号(以'0'结束):";
		    cin>>f;
		    if(f==0)break;
            while(pc!=NULL)
			{
			  if(pc->Getno()==f)
			  {
			  star->co[j].SetCourse(pc->Getname(),pc->Getroom(),pc->Getno(),pc->Getpeo(),
			  pc->GetCredit());
			  cout<<"你选了“"<<star->co[j].Getname()<< "”课"<<endl;
			  break;
			  }
			  pc=pc->Getnext();
			}
			j++;
		  }

	  
		if(top->count==0) top=star;
		old->next=star;
		old=star;
		ASK(star);
	}while(1);

	old->next=NULL;	
	return(top);
}

/**********************
 * 显示数据信息的函数
 **********************/
void Student::display(Student *top)
{ 
    char choose[2];
	int cn = 0;	
	cout <<"\t选择要看的文件类别" << endl;
	cout <<"\t1. 原文件" << endl;
	cout <<"\t2. 简明文件" << endl;
	cout <<"\t3. 均不及格文件" << endl;
	cout <<"\t4. 输出高于或等于平均成绩的学生名单"<<endl;
	cout<<"\t请选择1-4:"<< flush;

	gets(choose);
	while(1)
	{
		cn = atoi(choose);
		if (cn <1||cn >4)
		{
			cout <<"\t输入错误,重选1-4:" << flush;
			gets(choose);
		}
		else break;
	}
	switch(cn)
	{
	case 1:                         //显示原始数据
		{
		   if (top->count==0)
			{
		        cout << "\n\t现在没有记录!" << endl; 
		        return;
			}
	        Student *p=top;
	        cout << "\n\t现在共有如下" << count << "条记录:\n";
	    
	        while(p!=NULL )
			{
		     
			   {
				 
		      cout<<'\t'<<"学号:"<<p->no<<'\t'<<"姓名:"<<p->name<<'\t';
			  cout<<endl;
			  int j=0;
			 
			    while(1)
				{
					if(p->co[j].Getname()[0]=='0')break;
					cout<<'\t'<<p->co[j].Getname()<<":"<<p->co[j].Getscore()<<'\t';
					cout<<'\t'<<p->co[j].GetCredit()<<":"<<p->co[j].Getno()<<":"<<p->co[j].Getpeo()<<endl;
					j++;
				}
			
				cout<<"平均分:"<<p->ave<<endl;
			       
			   }
		
			 
		       p=p->next;
			}
	        cout << endl;	
		    break;
		}
	 case 2:
		{
		    ifstream in;               //显示简明文件
	        in.open("stud_mean.dat",ios::in|ios::nocreate);
	        if (!in)
			{
				cout << "\t文件不存在!" << endl;
		        return ;
			}			
	        cout << "\n\t取文件..." << endl;
            in.read((char*)sm, sizeof sm);
			in.close();
			cout << "\t名字\t平均成绩\n";
	        for(int i=0;i<10;i++)//,p=p->next)
			{
              if(sm[i].ave==0) break;
				cout<<'\t'<<sm[i].name<<'\t'<<sm[i].ave<<endl;
			}
		 break;	 
		}
	 case 3:                         //显示均不及格文件
		{
		    ifstream in;
	        in.open("bad.dat",ios::in|ios::nocreate);
	        if (!in)
			{
				cout << "\t文件不存在!" << endl;
		        return ;
			}			
	        cout << "\n\t取文件..." << endl;
            in.read((char*)bad, sizeof bad);
			in.close();
		   for(int i=0;i<10;i++)
		   {if(bad[i].ave<=0)break;
	      	cout<<'\t'<<"学号:"<<bad[i].no<<'\t'<<"姓名:"<<bad[i].name<<'\t';
			cout<<endl;
				int j=0;
			    while(1)
				{
					if(bad[i].co[j].Getname()[0]=='0')break;
					cout<<bad[i].co[j].Getname()<<":"<<bad[i].co[j].Getscore();
				j++;
				}
			
				cout<<"平均分:"<<bad[i].ave<<endl;
				
		   }
		 break;	
		}
	 case 4:                         //显示高于或等于平均分的学生信息
		{
          	if (top->count==0)
			{
		        cout << "\n\t现在没有记录!" << endl; 
		        return;
			}
	        Student *p=top;
	        cout <<"\n\t现在共有如下" << count << "条记录:\n";
			//计算平均成绩
			int num=0;
			double mean=0;
            while(p!=NULL )
			{
               ++num;         //记载符合条件的学生人数
		       mean+=p->ave;   //计算平均分之和
		       p=p->next;
			}
            mean=mean/num;     //计算全部学生的平均分
			cout<<"\t平均成绩为:"<<mean<<"分"<<endl;
			cout<<"\t其中高于或等于平均成绩的学生信息如下:\n";

	      //  cout <<"学号\t\t名字\t\t数学\t语文\t编程\t平均\n";
			p=top;
	
	        while(p!=NULL )
			{
		      if(p->ave>=mean)
			   {
			cout<<'\t'<<"学号:"<<p->no<<'\t'<<"姓名:"<<p->name<<'\t';
			cout<<endl;
				int j=0;
			    while(1)
				{
					if(p->co[j].Getname()[0]=='0')break;
					cout<<p->co[j].Getname()<<":"<<p->co[j].Getscore()<<"  ";
					j++;
				}
			
				cout<<"平均分:"<<p->ave<<endl;
		
			   }
		       p=p->next;
			}
	        cout << endl;	
		    break;
		}
	}
}


⌨️ 快捷键说明

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