【数据排序录入及查询】
设学生信息含学号、姓名和成绩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;
}