Новичок
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 5.4.2012
Репутация: нет Всего: нет
|
Имеется следующая программа (нехватает сортировки) Код | #include <iomanip.h> #include <fstream.h> #include <stdlib.h> #include <string.h> #include <io.h> #define MARKA 10 #define S_N 10 #define HARAKTER 30 void begtable() { // 1234567890 1234567890 123456789012345678901234567890 123 123 cout<<"_______________________________________________________________\n"; cout<<"| Марка | Сер.Ном | Характеристики |Оце|В.Р |\n"; cout<<"---------------------------------------------------------------\n"; } void endtable() { cout<<"________________________________________________________________\n"; } struct noutbook { char marka[MARKA]; char s_n[S_N]; char harakter[HARAKTER]; int ocenka_prz; int chas_atm; };
istream& operator>>(istream& in, noutbook& z) { cout<<"Марка= "; in.seekg(0L, ios::end); in.get(z.marka,MARKA-1,'\n'); cout<<"Серийный номер= "; in.seekg(0L, ios::end); in.get(z.s_n,S_N-1,'\n'); cout<<"Характеристики= "; in.seekg(0L, ios::end); in.get(z.harakter,HARAKTER-1,'\n'); cout<<"Оценка производительности= "; in.seekg(0L, ios::end); in>>z.ocenka_prz; cout<<"Время работы= "; in.seekg(0L, ios::end); in>>z.chas_atm; return in; } ofstream& operator << (ofstream& f, noutbook z) { f<<z.marka<<endl<<z.s_n<<endl<<z.harakter<<endl<<z.ocenka_prz<<endl<<z.chas_atm<<endl; return f; } ifstream& operator>> (ifstream& f, noutbook& z) { f.getline(z.marka,MARKA,'\n'); f.getline(z.s_n,S_N,'\n'); f.getline(z.harakter,HARAKTER,'\n'); f>>z.ocenka_prz; f.seekg(2l,ios::cur); f>>z.chas_atm; f.seekg(2l,ios::cur); return f; } ostream& operator<<(ostream& out, noutbook& z) { out.setf (ios::left); out<<"|"<<setw(10)<<z.marka<<"|"<<setw(10)<<z.s_n<<"|"<<setw(30)<<z.harakter<<"|"; out.setf(ios::right); out<<setw(3)<<z.ocenka_prz<<"|"<<setw(4)<<z.chas_atm<<"|\n"; return out; } void sozdanie(char reg) { ofstream fl; noutbook s; char c; if (reg=='1') fl.open("noutbook.txt", ios::out); else fl.open ("noutbook.txt", ios::app); if (!fl) { cerr<<"Ошибка при создании базы\n"; exit(1); } do { cin>>s; fl<<s; cout<<"Продолжить ввод (y/n)?"; cin.seekg(0l,ios::end); cin>>c; } while (c=='y'||c=='Y'||c=='D'); fl.close(); } void output() { ifstream fl; noutbook s; fl.open("noutbook.txt", ios::in); if (!fl) { cerr<<"Ошибка открытия файла для чтения\n"; exit(1); } cout<<"Марки\n"; begtable(); while (fl) { fl>>s; if (strlen (s.marka)<=0) break; cout<<s; } endtable(); fl.close(); } void poisk() { ifstream fl; noutbook s; char marka[MARKA]; char s_n[S_N]; char harakter[HARAKTER]; char c; int ocenka_prz; int chas_atm; fl.open("noutbook.txt", ios::in); if (!fl) { cerr<<"Ошибка чтения..."; exit(1); } while(1) { cout<<"Поиск информации по:\n"; cout<<"1. По Марки: \n"; cout<<"2. По серийному номеру: \n"; cout<<"3. По характеристикам: \n"; cout<<"4. По оценки производительности: \n"; cout<<"5. По времени работы: \n"; cout<<"6. Выход: \n"; cout<<"Ваш выбор: "; cin.seekg(0l, ios::end); cin>>c; switch(c) { case '1': cout<<"Задайте марку поиска: "; cin.seekg(0l, ios::end); cin.get (marka, MARKA-1,'\n'); break; case '2': cout<<"Задайте серийный номер устройства: "; cin.seekg(0l, ios::end); cin.get (s_n, S_N-1,'\n'); break; case '3': cout<<"Задайте характеритики: "; cin.seekg(0l, ios::end); cin.get (harakter, HARAKTER-1,'\n'); break; case '4': cout<<"Задайте оценку производительности: "; cin.seekg(0l, ios::end); cin>>ocenka_prz; break; case '5': cout<<"Задайте Время работы: "; cin.seekg(0l, ios::end); cin>>chas_atm; break; case '6': fl.close(); return; } fl.clear (!ios::eofbit); fl.seekg(0l, ios::beg); begtable(); while(!fl.eof()) { fl>>s; if (strlen(s.marka)<=0) break; if ((c=='1'&&strcmp(s.marka,marka)==0)||(c=='2'&&strcmp(s.s_n,s_n)==0)||(c=='3'&&strcmp(s.harakter,harakter)==0)||(c=='4'&&s.ocenka_prz==ocenka_prz)||(c=='5'&&s.chas_atm==chas_atm)) cout<<s; } endtable(); } } void udalenie() { ifstream fl; ofstream fo; noutbook s; char marka[MARKA]; char s_n[S_N]; int prizn; fl.open ("noutbook.txt", ios::in); if (!fl) { cerr<<"Ошибка чтения\n"; exit(1); } fo.open ("tmp.txt",ios::out); if (!fo) { cerr<<"Ошибка временного файла\n"; exit(1); } cout<<"ВВедите марку оборудования: "; cin.seekg(0l, ios::end); cin.get (marka, MARKA-1, '\n'); cout<<"ВВедите серийный номер: "; cin.seekg(0l, ios::end); cin.get (s_n, S_N-1, '\n'); prizn=0; while (!fl.eof()) { fl>>s; cout << s; if (strlen (s.marka)<=0) break; if (strcmp(s.s_n,s_n)==0) { prizn=1; cout<<"Найдена запись для удаления\n"; } else fo<<s; } fl.close(); fo.close(); if (prizn==1) { remove ("noutbook.txt"); rename ("tmp.txt","noutbook.txt"); } else remove ("tmp.txt");
}
void redakt() { ifstream fl; ofstream fo; noutbook s; char marka[MARKA]; char s_n[S_N]; char harakter[HARAKTER]; int ocenka_prz; int chas_atm; char c; int prizn; fl.open ("noutbook.txt", ios::in); if (!fl) { cerr<<"Ошибка чтения\n"; exit(1); } fo.open ("tmp.txt",ios::out); if (!fo) { cerr<<"Ошибка временного файла\n"; exit(1); } fl.clear (!ios::eofbit); fl.seekg(0l, ios::beg); cout<<"ВВедите серийный номер: "; cin.seekg(0l, ios::end); cin.get (s_n, S_N-1, '\n'); prizn=0; while (!fl.eof()) { fl>>s; cout<<s; if (strlen (s.marka)<=0) break; if (strcmp(s.s_n,s_n)==0) { prizn=1; cout<<"Найдена запись на редактирование\n"; while (1) { cout<<"Что вы хотите отредактировать в данной записи\n"; cout<<"1. Редактировать Марку оборудования \n"; cout<<"2. Редактировать серийный номер \n"; cout<<"3. Редактировать характеристики \n"; cout<<"4. Редактировать оценку \n"; cout<<"5. Редактировать время работы \n"; cout<<"6. РЕДАКТИРОВАТЬ ЗАПИСЬ ПОЛНОСТЬЮ \n"; cout<<"7. Выход \n"; cout<<"Ваш выбор: "; cin.seekg(0l, ios::end); cin>>c; if (c=='7') break; switch(c) { case '1': cout<<"ВВедите новую МАРКУ оборудования: "; cin.seekg(0l, ios::end); cin.get (s.marka, MARKA-1,'\n'); break; case '2': cout<<"Введите новый Серийный номер= "; cin.seekg(0L, ios::end); cin.get(s.s_n,S_N-1,'\n'); break; case '3': cout<<"Введите новые характеристики= "; cin.seekg(0L, ios::end); cin.get(s.harakter,HARAKTER-1,'\n'); break; case '4': cout<<"Укажите новую оценку производительности= "; cin.seekg(0L, ios::end); cin>>s.ocenka_prz; break; case '5': cout<<"Укажите время работы= "; cin.seekg(0L, ios::end); cin>>s.chas_atm; break; case '6': cout<<"ВВедите новую запись Марки= "; cin.seekg(0L, ios::end); cin.get(s.marka,MARKA-1,'\n'); cout<<"Введите новый Серийный номер= "; cin.seekg(0L, ios::end); cin.get(s.s_n,S_N-1,'\n'); cout<<"Введите новые характеристики= "; cin.seekg(0L, ios::end); cin.get(s.harakter,HARAKTER-1,'\n'); cout<<"Укажите новую оценку производительности= "; cin.seekg(0L, ios::end); cin>>s.ocenka_prz; cout<<"Укажите время работы= "; cin.seekg(0L, ios::end); cin>>s.chas_atm; break; case '7': break; } } } fo<<s; } fl.close(); fo.close(); if (prizn==1) { remove ("noutbook.txt"); rename ("tmp.txt","noutbook.txt"); } else remove ("tmp.txt"); }
Void sotrirovka() //прототит сортировки (метод вставки) {
}
void main () { char c; while(1) { cout<<"1. Создание базы\n"; cout<<"2. Добавление\n"; cout<<"3. Вывод всей информации\n"; cout<<"4. Выборка по различным полям\n"; cout<<"5. Редактирование\n"; cout<<"6. Удаление\n"; cout<<"7. Сортировка\n"; cout<<"8. Выход\n"; cout<<"Ваш выбор: "; cin.seekg(0l,ios::end); cin>>c; switch (c) { case '1': case '2': sozdanie (c); break; case '3': output(); break; case '4': poisk(); break; case '5': redakt(); break; case '6': udalenie(); break; case '7': sortirovka; break; case '8': return; } } }
|
Прикрепляю файл, в котором он должен сделать сортировку. Ps саму функцию и пункт в меню уже добавил, нажен сам код сортировки.
Присоединённый файл ( Кол-во скачиваний: 2 )
NOUTBOOK.TXT 0,13 Kb
|