C++ 如何以文件作为数据库创建字母顺序?C++;

C++ 如何以文件作为数据库创建字母顺序?C++;,c++,C++,我有一个问题,我有一个保存学生数据及其特征(如姓名、成绩、平均成绩等)的文件。我想我搜索了整个互联网。问题主要是我不知道如何组合,例如,按特定键后按字母排序。它是关于从学生数据库中重新读取文件,还是你能以某种方式解决它 #include <iostream> #include <string> #include <stdio.h> #include <fstream> #include <conio.h> #include <al

我有一个问题,我有一个保存学生数据及其特征(如姓名、成绩、平均成绩等)的文件。我想我搜索了整个互联网。问题主要是我不知道如何组合,例如,按特定键后按字母排序。它是关于从学生数据库中重新读取文件,还是你能以某种方式解决它

#include <iostream>
#include <string>
#include <stdio.h>
#include <fstream>
#include <conio.h>
#include <algorithm>

using namespace std;

#define KEY_L 76 //- alfabetyczny porzadek
#define KEY_K 75 //- zapis studentow i pliku
#define KEY_U 85 //- usuniecie studenta z 2.5 srocen
#define KEY_D 68 //- dodanie nowego studenta(im,nazw,wiek,sro,nralb)
#define KEY_X 88 //- wyjscie

struct Osoba{

    string imie;
    string nazwisko;
    int nrAlbumu;
    float srOcen;
    int wiek;
};


int main(){

fstream plik;

plik.open( "studenci.txt", ios::out | ios::app);

Osoba uczniowie[20];

for(int i = 0; i < 5; i++){
    cout << "podaj imie i nazwisko " << i+1 << " ucznia: " ;
    cin >> uczniowie[i].imie;
    cin >> uczniowie[i].nazwisko;
}

cout << endl;

for(int i = 0; i < 5; i++){
    cout << "podaj numer albumu " << uczniowie[i].imie <<" "<< uczniowie[i].nazwisko <<" ";
    cin >> uczniowie[i].nrAlbumu;
}

cout << endl;

for(int i = 0; i < 5; i++){
    cout << "podaj wiek " << uczniowie[i].imie <<" "<< uczniowie[i].nazwisko <<" ";
    cin >> uczniowie[i].wiek;
}

cout << endl;

for(int i = 0; i < 5; i++){
    cout << "podaj srednia ocen: " << uczniowie[i].imie <<" "<< uczniowie[i].nazwisko <<" ";
    cin >> uczniowie[i].srOcen;
}

cout << endl;

for(int i = 0; i < 5; i++){
plik << uczniowie[i].imie <<" "<< uczniowie[i].nazwisko <<" "<< uczniowie[i].wiek <<" "<< uczniowie[i].nrAlbumu <<" "<< uczniowie[i].srOcen << endl;
} 


plik.close();

plik.open( "studenci.txt", ios::in );


if(plik.is_open())
    {
        char wiersz[10000];

        while(plik.getline(wiersz,10000)) 
        {
            cout<< wiersz << endl;
            
        }
        cout << endl;
    }

cout << "          MENU LISTY UCZNIOW:       " << endl;
cout << "------------------------------------------" << endl;
cout << "..(K).. - Zapis aktualnego stanu.." << endl;
cout << "..(L).. - Listowanie Listy alfabetycznie.." << endl;
cout << "..(U).. - Usuniecie studenta ze sr.ocen 2.5.." << endl;
cout << "..(D).. - Dodanie nowego studenta i jego cech(imie,nazwisko,wiek,srOcen,nrAlbumu) nie wiecej niz 20 uczniow.." << endl;
cout << "..(X).. - Wyjscie z programu.." << endl;
cout << "------------------------------------------" << endl;



char key = getch();
int value = key;

while(value != KEY_X){
    switch(getch()){

        case KEY_L : //listowanie

        plik.open( "studenci.txt", ios::in );


        if(plik.is_open())
    {
        char wiersz[10000];

        while(plik.getline(wiersz,10000)) 
        {
            cout << wiersz << endl;
            
        }
        cout << endl;

    }

    //zapis
    for(int i; i < sizeof(uczniowie)/sizeof(uczniowie[i]); i++){
    plik.open( "studenci.txt", ios::out | ios::app);
   
    //  sort(uczniowie, uczniowie + 5);
    //  for(auto ele: uczniowie){
    //      cout << ele << ", " << endl;
    //  }

    plik.close();
    }

        

        plik.open( "studenci.txt", ios::in );


        if(plik.is_open())
    {
        char wiersz[10000];

        while(plik.getline(wiersz,10000)) 
        {
            cout << wiersz << endl;
            
        }
        cout << endl;

    }
        
        cout << "Nazwiska zostały wylistowane!" << endl;

        break;

        case KEY_D : //dodawanie

        cout<<endl;

        break;

        case KEY_U : //usuniecie

        cout<<endl;

        break;

        case KEY_K : //zapis

        cout<<endl;

        break;
        
        default: //wyjscie
        exit(1);
    }
}

key = getch();
value = key;

    return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
#定义键_l76/-阿尔法贝茨尼波扎德
#定义键75/-zapis studentow i pliku
#定义键_U 85/-usuniecie studenta z 2.5 srocen
#定义KEY_D 68/-dodanie nowego学生(im、nazw、wiek、sro、nralb)
#定义键_X 88/-wyjscie
奥索巴结构{
串亚胺;
纳兹维斯科;
int NRU;
浮子;
int wiek;
};
int main(){
fstream-plik;
plik.open(“studenci.txt”,ios::out | ios::app);
Osoba uczniowie[20];
对于(int i=0;i<5;i++){
乌兹尼奥维[i].纳兹维斯科;
}

在“<代码> STD::vector < /代码>,然后>代码> STD::排序这是什么?一般来说,在按下一个特定的键之后,它不会在中间向我读取“排序”。我尝试的是标记(注释):“是关于从学生数据库重读文件还是可以以某种方式围绕它工作?”混乱…你能改进这个问题吗?即在什么混乱的会话中?我不明白,这是关于通过一段时间的操作来绕过一次性的进入和退出。所以,你要做的是按一个键对数据文件进行排序?