数据排序录入及查询

【数据排序录入及查询】

设学生信息含学号、姓名和成绩3个数据,请按如下要求编程处理某教学班(例如30人)学生的数据。

① 定义表示学生的信息结构体类型;

② 用结构体数组处理一个班学生信息的,结构体数组数据从键盘录入;

③ 将学生信息按照学号的升序排序后存储在文件student.inf中;

④编程序利用上面生成的学生信息文件student.inf实现功能:根据从键盘输入的学号在学生数据中查找,判定该学生是否存在;若存在则输出该学生信息,否则输出“没有该学号学生”的提示信息。

 

 

    #include<iostream>  
    #include<iomanip>  
    #include<fstream>
    #include <string>
    using namespace std;  
    struct Student{  
        float grade;  
        char name[10];  
        int Number;  
    };  
    int main()  
    {  
        ofstream outfile;
	    outfile.open("myfile.inf");
	    ifstream infile; 
          
        
        Student temp; 
		int len=3; // 自己定义要输入数据的组数 
        Student array[len];  
       
	    cout<<"请输入数据(学号,姓名,成绩):"; 
	    cout<<endl; 
        for(int i=0;i<len;i++)  
        {  
            cin>>array[i].Number>>array[i].name>>array[i].grade;  
        }  
       
        for(int j=0;j<len-1;j++)  
            for(int i=0;i<len-1-j;i++)  
                if(array[i].Number>array[i+1].Number)  
                {  
                    temp=array[i];  
                    array[i]=array[i+1];  
                    array[i+1]=temp;  
                }  
                
        for(int k=0;k<len;k++)  
            cout<<array[k].Number<<" "<<array[k].name<<" "<<array[k].grade<<endl;  
        
        for(int z=0;z<len;z++)
        {
    	   outfile<<array[z].Number<<" "<<array[z].name<<" "<<array[z].grade<<endl;
        }
        outfile.close();
        
        infile.open("myfile.inf"); 
        cout<<"输入需要查询学生的学号:";
		string w;
		cin>>w;
		 
        string s;
        int q=0;
        while(getline(infile,s))
        {
            
			string str=s.substr(0,w.size());
			if(w.compare(str)==0)
			{
				q=1;
				cout<<s<<endl;
				break;
			}
			
        }
        if(q==0)
        {
        	cout<<"没有改学号学生"<<endl;
        }
        
        infile.close(); 
        return 0;  
    }  


posted @ 2017-06-21 20:39  老鼠先生qiangji  阅读(250)  评论(0编辑  收藏  举报