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