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