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

📄 3号文件.cpp

📁 一份功能详细的图书馆管理系统的软件(包含各种头文件和CPP文件,以及相关的文档).
💻 CPP
📖 第 1 页 / 共 2 页
字号:
            }  
            else cout<<"您所查询的信息不存在"<<endl;
        }       
        if(a==2)
        {
            cout<<"请输入姓名:";
            string s;    
            cin>>s;
            vector<Record*>::iterator i,j,k;
            i=recVec.begin();k=recVec.end();
            j=findRecord(i,s,0);
            if(j!=k)
            {
               dispTable();
               dispRecord(j);
               cout<<"是否确定修改记录.(yes/no)";
               string s;
               cin>>s;
               while((s!="yes")&&(s!="no"))
               {
                   cout<<"是否确定修改记录.(yes/no)";
                   cin>>s;
               }           
               if(s=="yes")
               {
                   cout<<"请输入学生的信息:"<<endl;
                   cout<<"学号:";cin>>(*j)->number;    
                   cout<<"姓名:";cin>>(*j)->name;
                   cout<<"性别:";cin>>(*j)->gender;     
                   cout<<subject_[0]<<"成绩:";cin>>(*j)->score[0];
                   cout<<subject_[1]<<"成绩:";cin>>(*j)->score[1];
                   cout<<subject_[2]<<"成绩:";cin>>(*j)->score[2];
                   cout<<subject_[3]<<"成绩:";cin>>(*j)->score[3];
                   cout<<subject_[4]<<"成绩:";cin>>(*j)->score[4];
                   (*j)->sum=0;
                   for(int i=0;i<=4;i++)
                   (*j)->sum+=(*j)->score[i];
                   (*j)->average=(*j)->sum/5;
                   getIndex();
               }        
            }  
            else cout<<"您所查询的信息不存在"<<endl;
        }       
        if(a==3)
        {
            cout<<"请输入名次:";
            int s;    
            cin>>s;
            vector<Record*>::iterator i,j,k;
            i=recVec.begin();k=recVec.end();
            j=findRecord(i," ",s);
            if(j!=k)
            {
               dispTable();
               dispRecord(j);
               cout<<"是否确定修改记录.(yes/no)";
               string s;
               cin>>s;
               while((s!="yes")&&(s!="no"))
               {
                   cout<<"是否确定修改记录.(yes/no)";
                   cin>>s;
               }           
               if(s=="yes")
               {
                   cout<<"请输入学生的信息:"<<endl;
                   cout<<"学号:";cin>>(*j)->number;    
                   cout<<"姓名:";cin>>(*j)->name;
                   cout<<"性别:";cin>>(*j)->gender;     
                   cout<<subject_[0]<<"成绩:";cin>>(*j)->score[0];
                   cout<<subject_[1]<<"成绩:";cin>>(*j)->score[1];
                   cout<<subject_[2]<<"成绩:";cin>>(*j)->score[2];
                   cout<<subject_[3]<<"成绩:";cin>>(*j)->score[3];
                   cout<<subject_[4]<<"成绩:";cin>>(*j)->score[4];
                   (*j)->sum=0;
                   for(int i=0;i<=4;i++)
                   (*j)->sum+=(*j)->score[i];
                   (*j)->average=(*j)->sum/5;
                   getIndex();
               }        
            }  
            else cout<<"您所查询的信息不存在"<<endl;
        }            
}      //修改记录
virtual void sortRecords()
	{
         int a;
         cout<<"1.按学号排序"<<endl;
         cout<<"2.按姓名排序"<<endl;
         cout<<"3.按名次排序"<<endl;   
         cout<<"请选择排序方法:";cin>>a;
         while((a!=1)&&(a!=2)&&(a!=3))
         {
             cout<<"请选择排序方法:";    
             cin>>a; 
         }    
         if(a==1)
         {
            cout<<"1.按升序排序"<<endl;     
            cout<<"2.按降序排序"<<endl;
            cout<<"请选择排序方法:";int b;cin>>b;
            while(b!=1&&b!=2)
            {
                cout<<"请选择排序方法:";    
                cin>>b; 
            }    
            if(b==1)
            {
               int o=recVec.size();
               if(o==0){cout<<"错误,无记录."<<endl;return;}         
               vector<Record*>::iterator i,a,b,q,j;
               vector<Record*> v(1);j=v.begin();
               a=recVec.begin();b=recVec.end()-1;
               for(;a<b;b--)/////////////从末尾记起,提高效率
               for(i=a,q=i+1;i<b;i++,q++)
               if((*i)->number>(*q)->number)
               {
                  
                  (*j)=(*q);
                  (*q)=(*i);
                  (*i)=(*j);//////////基本的排序函数方法,
                   
               }displayRecords();
            }      
            if(b==2)
            {
               int o=recVec.size();
               if(o==0){cout<<"错误,无记录."<<endl;return;}      
               vector<Record*>::iterator i,a,b,q,j;
               vector<Record*> v(1);j=v.begin();
               a=recVec.begin();b=recVec.end()-1;
               for(;a<b;b--)
               for(i=a,q=i+1;i<b;i++,q++)
               if((*i)->number<(*q)->number)
               {
                  
                  (*j)=(*q);
                  (*q)=(*i);//跟刚才的倒过来
                  (*i)=(*j);//////////基本的排序函数方法
                   
               }displayRecords();
            }         
         }        
         if(a==2)
         {
            cout<<"1.按升序排序"<<endl;     
            cout<<"2.按降序排序"<<endl;
            cout<<"请选择排序方法:";int c;cin>>c;
            while((c!=1)&&(c!=2))
            {
                cout<<"请选择排序方法:";    
                cin>>c; 
            }    
            if(c==1)
            {
               int o=recVec.size();
               if(o==0){cout<<"错误,无记录."<<endl;return;} 
               vector<Record*>::iterator i,a,b,q,j;
               vector<Record*> v(1);j=v.begin();
               a=recVec.begin();b=recVec.end()-1;
               for(;a<b;b--)
               for(i=a,q=i+1;i<b;i++,q++)
               if((*i)->name>(*q)->name)
               {
                  
                  (*j)=(*q);
                  (*q)=(*i);
                  (*i)=(*j);
                   
               }displayRecords();
            }      
            if(c==2)
            {
               int o=recVec.size();
               if(o==0){cout<<"错误,无记录."<<endl;return;} 
               vector<Record*>::iterator i,a,b,q,j;
               vector<Record*> v(1);j=v.begin();
               a=recVec.begin();b=recVec.end()-1;
               for(;a<b;b--)
               for(i=a,q=i+1;i<b;i++,q++)
               if((*i)->name<(*q)->name)
               {
                  
                  (*j)=(*q);
                  (*q)=(*i);
                  (*i)=(*j);
                   
               }displayRecords();
            }         
         }        
         if(a==3)
         {
            cout<<"1.按升序排序"<<endl;     
            cout<<"2.按降序排序"<<endl;
            cout<<"请选择排序方法:";int d;cin>>d;
            while((d!=1)&&(d!=2))
            {
                cout<<"请选择排序方法:";    
                cin>>d; 
            }    
            if(d==1)
            {
               int o=recVec.size();
               if(o==0){cout<<"错误,无记录."<<endl;return;} 
               vector<Record*>::iterator i,a,b,q,j;
               vector<Record*> v(1);j=v.begin();
               a=recVec.begin();b=recVec.end()-1;
               for(;a<b;b--)
               for(i=a,q=i+1;i<b;i++,q++)
               if((*i)->index<(*q)->index)
               {
                  
                  (*j)=(*q);
                  (*q)=(*i);
                  (*i)=(*j);
                   
               }displayRecords();
            }      
            if(d==2)
            {
               int o=recVec.size();
               if(o==0){cout<<"错误,无记录."<<endl;return;} 
               vector<Record*>::iterator i,a,b,q,j;
               vector<Record*> v(1);j=v.begin();
               a=recVec.begin();b=recVec.end()-1;
               for(;a<b;b--)
               for(i=a,q=i+1;i<b;i++,q++)
               if((*i)->index>(*q)->index)
               {
                  
                  (*j)=(*q);
                  (*q)=(*i);
                  (*i)=(*j);
                   
               }displayRecords();
            }         
         }        
    } //记录排序
	virtual void saveRecords()//////////考查输入输出流
	{
       string filename;
       cout<<"请输入文件名:";
       cin>>filename;///////filename是一个抽象的名字
       ofstream outfile;
       outfile.open(filename.c_str());
       StuInfoVec::saveRecords(outfile);
    } //保存记录saveRecords()成员函数让用户输入文件名,
//然后建立文件输出流,再调用StuInfoVec类的saveRecords()成员函数完成。
	virtual void loadRecords()
	{
        string s;
        cout<<"从文件中读取的记录覆盖当前学生信息,还是追加到当前学生信息的末尾.(yes/no)";
        cin>>s;
        while((s!="yes")&&(s!="no"))
        {
           cout<<"从文件中读取的记录覆盖当前学生信息,还是追加到当前学生信息的末尾.(yes/no)";
           cin>>s;
        }           
        if(s=="yes")clear();/////////覆盖前先清空记录
        cout<<"请输入文件名:";
        cin>>s;
        ifstream infile;
        infile.open(s.c_str());
        if(!infile){cout<<"文件不存在."<<endl;return;} 
        StuInfoVec::loadRecords(infile);
   }
	
virtual void quit()
	{
         
        delete this;
        exit(0);
    }   
        
            

	virtual void clear()
	{
        vector<Record*>::iterator a,b,i;int o;
        o=recVec.size();
        if(o==0){cout<<"错误,无记录."<<endl;return;}
        displayRecords();
        a=recVec.begin();b=recVec.end();
        for(i=a;i<b;i++)
        if((*i)->toBeDeleted==true)toRemvNodes++;
        if(toRemvNodes!=0)
        {
           string s;
           cout<<"以下"<<toRemvNodes<<"条记录做了删除标记."<<endl;; 
           vector<Record*>::iterator i,j,k;
           i=recVec.begin();k=recVec.end();
           j=findRecord(i);
           if(j!=k)
           {
              dispTable();
              while(j!=k){dispRecord(j);j++;j=findRecord(j);}
           } 
           cout<<"是否删除。(yes/no):";    
           cin>>s;
           while((s!="yes")&&(s!="no"))
           {
              cout<<"是否删除。(yes/no):";
              cin>>s;
           }     
           if(s=="yes")
           {
             StuInfoVec::removePerform();
           }
        }
        isModified=true; 
        if(isModified==true)
        {
           string s;
           cout<<"记录已经被改动是否进行保存(yes/no):"; 
           cin>>s;
           while((s!="yes")&&(s!="no"))
           {
              cout<<"记录已经被改动是否进行保存(yes/no):"; 
              cin>>s;
           }                       
           if(s=="yes")saveRecords();
        }    
        cout<<"是否确定清除记录.(yes/no):";
        string l;
        cin>>l;
        while((l!="yes")&&(l!="no"))
        {
              cout<<"是否确定清除记录.(yes/no):"; 
              cin>>l;
        }     
        if(l=="yes")StuInfoVec::clear();
    }     
          

	char menuSelect()
	{
       
       cout<<"主菜单:"<<endl;
       cout<<"(1)显示记录."<<endl;
       cout<<"(2)查询记录."<<endl;
       cout<<"(3)增加记录."<<endl;
       cout<<"(4)删除记录."<<endl;
       cout<<"(5)更改记录."<<endl;
       cout<<"(6)整理记录."<<endl;
       cout<<"(7)保存记录."<<endl;
       cout<<"(8)读取记录."<<endl;
       cout<<"(9)清除记录."<<endl;
       cout<<"(10)结束程序."<<endl;
       cout<<"请选择操作:";  
       int i;cin>>i;
       while(i>10||i<1)
       {cout<<"请选择操作:";cin>>i;}
       switch(i)
       {
          case 1:displayRecords();break;
          case 2:queryRecord();break;
          case 3:addRecord();break;
          case 4:removeRecord();break;
          case 5:modifyRecord();break;
          case 6:sortRecords();break;
          case 7:saveRecords();break;
          case 8:loadRecords();break;
          case 9:clear();break;
          case 10:quit();break;
          
       }          
      
    }   
         
         
         
         
         
         
         
	
	void dispTable()
	{
	   cout<<"学号        姓名   性别   语文  数学  英语  物理  化学  总分  平均分  名次"<<endl; 
	               
    }	
	
	void dispRecord(vector<Record*>::iterator i)//////////////位置吻合? 
	{
          
          cout<<(*i)->number;
          cout<<"    "<<(*i)->name;
          cout<<"        "<<(*i)->gender;
          cout<<"     "<<(*i)->score[0]<<"    ";
          cout<<(*i)->score[1]<<"    ";
          cout<<(*i)->score[2]<<"    ";
          cout<<(*i)->score[3]<<"    ";     
          cout<<(*i)->score[4]<<"    ";
          cout<<(*i)->sum<<"    ";
          cout<<(*i)->average<<"      ";  
          cout<<(*i)->index<<endl;
    }     
           
    void getIndex()
	{
	    vector<Record*>::iterator i,c,a,b;int ncount=0;
        a=recVec.begin();b=recVec.end();
        for(i=a;i<b;i++)
        {
          for(c=a;c<b;c++)
          if((*i)->sum<(*c)->sum)ncount++;
          (*i)->index=ncount+1;ncount=0; 
        }
       
        
    }               
              
	
	int getIndex(float sum)
	{
	    vector<Record*>::iterator i,a,b;int ncount=0;
        a=recVec.begin();b=recVec.end();
        for(i=a;i<b;i++)
        {
          if(((*i)->sum)<sum)(*i)->index+=1;
          if(((*i)->sum)>sum)ncount++;
     
        return ncount;   } 
        ncount++;
    }       
};

char* StuInfoManager::subject_[5]={"语文","数学","英语","物理","化学"};

int main()
{
    StuInfoManager s;
    return 0;
}    

⌨️ 快捷键说明

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