Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Нужна помощь по С++

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Нужна помощь по С++
Имя
Сообщение << Старые топики   Новые топики >>
Нужна помощь по С++ - 2010-02-17 17:11:34.820000   
falshivka_efp

Сообщений: 20
Оценки: 0
Присоединился: 2010-02-11 19:09:51.236666
Ну нужна не то чтобы помощь. :)
Мб у кого нибудь остались когда либо сделанные БД на Си и телефонный справочник,
разумеется делать как это я не совсем понимаю а долги сдавать надо, буду очень рад если дадите исходники:
Небольшой телефонный справочник.
и БД типо магазинной, тоже не сложной, но чтобы умела считать цены, и можно было добавить запись.
Знаю что для некоторых такое сделать не составит особого труда. А у кого то мб еще и остались исходники всего этого.
Буду признателен если скинете их: сюда или efp-group@yandex.ru :D
Post #: 1
RE: Нужна помощь по С++ - 2010-02-17 20:02:28.880000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333

quote:

ORIGINAL: falshivka_efp
Ну нужна не то чтобы помощь. :)

Так и пиши - хочу халявы, потому что я не учился в течение семестра.

quote:

ORIGINAL: falshivka_efp
Мб у кого нибудь остались когда либо сделанные БД на Си и телефонный справочник,
разумеется делать как это я не совсем понимаю а долги сдавать надо, буду очень рад если дадите исходники:
Небольшой телефонный справочник.

Постановка задачи не ясна. Какая конечная ось, какой должен быть интерфейс и т.п.

Post #: 2
RE: Нужна помощь по С++ - 2010-02-17 20:39:56.903333   
falshivka_efp

Сообщений: 20
Оценки: 0
Присоединился: 2010-02-11 19:09:51.236666
C++ 6 Builder - Ось (если я правильног понял)
Интерфес - не очень сложный.
перед которым логин пасс на Оператора и на Администратора (но это не обезательно).
Post #: 3
RE: Нужна помощь по С++ - 2010-02-17 21:31:20.716666   
iidsp

Сообщений: 379
Оценки: 0
Присоединился: 2009-10-14 23:13:19.856666
quote:

C++ 6 Builder - Ось (если я правильног понял)
Интерфес - не очень сложный.
перед которым логин пасс на Оператора и на Администратора (но это не обезательно).

на кого учимся?
Post #: 4
RE: Нужна помощь по С++ - 2010-02-18 07:24:29.173333   
falshivka_efp

Сообщений: 20
Оценки: 0
Присоединился: 2010-02-11 19:09:51.236666
quote:


на кого учимся?


Учемня на АСУ,
может лучше поможете, чем прото спрашивать?
Post #: 5
RE: Нужна помощь по С++ - 2010-02-18 12:45:53.773333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333

quote:

ORIGINAL: falshivka_efp
Учемня на АСУ,
может лучше поможете, чем прото спрашивать?


Раздел "работа"… Или сам попробуй разобраться, а при возникновении вопросов - обращайся сюда.

По существу: 6-й билдер давно устарел. На нём точно никто ничего делать не будет.
Post #: 6
RE: Нужна помощь по С++ - 2010-02-18 13:15:30.860000   
falshivka_efp

Сообщений: 20
Оценки: 0
Присоединился: 2010-02-11 19:09:51.236666
Поэтому и спрашиваю "Мб у кого нибудь остались"
Post #: 7
RE: Нужна помощь по С++ - 2010-02-18 14:45:02.983333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333

quote:

ORIGINAL: falshivka_efp
Поэтому и спрашиваю "Мб у кого нибудь остались"

Остались от чего?
Post #: 8
RE: Нужна помощь по С++ - 2010-02-18 15:29:58.266666   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
Остались от старых времен учеба институте/универе/пту/школе… это вроде и так ясно =)
А по теме нет, такого не делал поэтому нема, хотя билдер 6й до сих пор где-то на болванке лежит.
Post #: 9
RE: Нужна помощь по С++ - 2010-02-18 22:42:22.870000   
tеstеr

Сообщений: 377
Оценки: -46
Присоединился: 2008-02-08 17:56:40.563333
Много сидишь на форуме ты Lost_boy, страшно сказать 228 постов, 33 балла кармы.

Было дело, писал я как то телефонный справочник. Именно на C++ Builder 6.
Писал я его для одного парня, скупого и очень тихого. Он всегда так тихо говорил, что мне казалось он издевается над моим слухом. Сейчас он работает админом, о программировании по прежнему он ничего не знает. А я вот сижу тут, помогаю иногда людям, чтобы у него голова болела от наличия "хакеров" )). Я часто писал курсачи другим людям и понял что делал это зря: когда чаловек, который не был ни на одной паре сдает курсовую (которую я сдеелалотладил и документировал) происходит всегда одно и тоже:
1. Прогу не запускают.
2. Отчёт не смотрят.
3. В листинг не заглядывают.
4. Я понимаю, что зря старался.

Поэтому дам тебе ровно то, что нужно для сдачи курсача в твоей ситуации (нет не отчёт), но все же кое что.
TelephoneDB.cpp
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop //--------------------------------------------------------------------------- USEFORM("MainUnit.cpp", Form1); //--------------------------------------------------------------------------- WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application-&gt;Initialize(); Application-&gt;CreateForm(__classid(TForm1), &Form1); Application-&gt;Run(); } catch (Exception &exception) { Application-&gt;ShowException(&exception); } catch (...) { try { throw Exception(""); } catch (Exception &exception) { Application-&gt;ShowException(&exception); } } return 0; } //---------------------------------------------------------------------------
MainUnit.cpp
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #include "MainUnit.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; CAbonentList * abonents; bool DataChange; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- unsigned int min(unsigned int a, unsigned int b) { if(a&lt;b) return a; else return b; }; //--------------------------------------------------------------------------- void __fastcall TForm1::RefreshList() { AnsiString * Buf = abonents-&gt;GetFIOs(); StringGridAbonent-&gt;RowCount = abonents-&gt;GetRecCount(); StringGridAbonent-&gt;Cells[0][0] = ""; for(int i=0; i&lt;abonents-&gt;GetRecCount(); i++) StringGridAbonent-&gt;Cells[0][i] = Buf[i]; delete [] Buf; }; //--------------------------------------------------------------------------- void __fastcall TForm1::SaveAbonent() { abonents-&gt;EditOn(); tAbonent * Rec = (abonents-&gt;GetRec()); if(Rec != NULL) { strncpy(Rec-&gt;FIO, MemoFIO-&gt;Text.c_str(), min(120, MemoFIO-&gt;Text.Length())); Rec-&gt;FIO[min(120, MemoFIO-&gt;Text.Length())]=0; strncpy(Rec-&gt;HomeNumber, MemoHomeNumber-&gt;Text.c_str(), min(30, MemoHomeNumber-&gt;Text.Length())); Rec-&gt;HomeNumber[min(30, MemoHomeNumber-&gt;Text.Length())]=0; strncpy(Rec-&gt;WorkNumber, MemoWorkNumber-&gt;Text.c_str(), min(30, MemoWorkNumber-&gt;Text.Length())); Rec-&gt;WorkNumber[min(30, MemoWorkNumber-&gt;Text.Length())]=0; strncpy(Rec-&gt;MobilNumber, MemoMobilNumber-&gt;Text.c_str(), min(30, MemoMobilNumber-&gt;Text.Length())); Rec-&gt;MobilNumber[min(30, MemoMobilNumber-&gt;Text.Length())]=0; strncpy(Rec-&gt;FaxNumber, MemoFaxNumber-&gt;Text.c_str(), min(30, MemoFaxNumber-&gt;Text.Length())); Rec-&gt;FaxNumber[min(30, MemoFaxNumber-&gt;Text.Length())]=0; strncpy(Rec-&gt;OtherNumber, MemoOtherNumber-&gt;Text.c_str(), min(30, MemoOtherNumber-&gt;Text.Length())); Rec-&gt;OtherNumber[min(30, MemoOtherNumber-&gt;Text.Length())]=0; strncpy(Rec-&gt;Email, MemoEmail-&gt;Text.c_str(), min(120, MemoEmail-&gt;Text.Length())); Rec-&gt;Email[min(120, MemoEmail-&gt;Text.Length())]=0; strncpy(Rec-&gt;WEB_address, MemoWEB_address-&gt;Text.c_str(), min(120, MemoWEB_address-&gt;Text.Length())); Rec-&gt;WEB_address[min(120, MemoWEB_address-&gt;Text.Length())]=0; strncpy(Rec-&gt;HomeAddress, MemoHomeAddress-&gt;Text.c_str(), min(120, MemoHomeAddress-&gt;Text.Length())); Rec-&gt;HomeAddress[min(120, MemoHomeAddress-&gt;Text.Length())]=0; abonents-&gt;Save(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::LoadAbonent() { tAbonent * Rec = (abonents-&gt;GetRec()); //StringGridAbonent-&gt;Row = abonents-&gt;GetRecNumber(); if(Rec != NULL) { MemoFIO-&gt;Text = Rec-&gt;FIO; MemoHomeNumber-&gt;Text = Rec-&gt;HomeNumber; MemoWorkNumber-&gt;Text = Rec-&gt;WorkNumber; MemoMobilNumber-&gt;Text = Rec-&gt;MobilNumber; MemoFaxNumber-&gt;Text = Rec-&gt;FaxNumber; MemoOtherNumber-&gt;Text = Rec-&gt;OtherNumber; MemoEmail-&gt;Text = Rec-&gt;Email; MemoWEB_address-&gt;Text = Rec-&gt;WEB_address; MemoHomeAddress-&gt;Text = Rec-&gt;HomeAddress; } else { MemoFIO-&gt;Text = ""; MemoHomeNumber-&gt;Text = ""; MemoWorkNumber-&gt;Text = ""; MemoMobilNumber-&gt;Text = ""; MemoFaxNumber-&gt;Text = ""; MemoOtherNumber-&gt;Text = ""; MemoEmail-&gt;Text = ""; MemoWEB_address-&gt;Text = ""; MemoHomeAddress-&gt;Text = ""; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Panel31-&gt;BevelOuter = bvLowered; abonents-&gt;Prev(); AnsiString * Buf = abonents-&gt;GetFIOs(); StringGridAbonent-&gt;Row = abonents-&gt;GetRecNumber(); } void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Panel31-&gt;BevelOuter = bvNone;} //--------------------------------------------------------------------------- void __fastcall TForm1::Image4MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Panel33-&gt;BevelOuter = bvLowered; MemoFIO-&gt;SetFocus();} void __fastcall TForm1::Image4MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Panel33-&gt;BevelOuter = bvNone;} //--------------------------------------------------------------------------- void __fastcall TForm1::Image3MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Panel32-&gt;BevelOuter = bvLowered; abonents-&gt;Next(); StringGridAbonent-&gt;Row = abonents-&gt;GetRecNumber(); } void __fastcall TForm1::Image3MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Panel32-&gt;BevelOuter = bvNone;} //--------------------------------------------------------------------------- void __fastcall TForm1::Image2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Panel34-&gt;BevelOuter = bvLowered; StringGridAbonent-&gt;SetFocus();} void __fastcall TForm1::Image2MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Panel34-&gt;BevelOuter = bvNone;} //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { abonents = new CAbonentList; abonents-&gt;FileName = "абоненты.db"; abonents-&gt;Refresh(); RefreshList(); LoadAbonent(); DataChange = false; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { abonents-&gt;Add(); RefreshList(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { SaveAbonent(); AnsiString * Buf = abonents-&gt;GetFIOs(); StringGridAbonent-&gt;RowCount = abonents-&gt;GetRecCount(); for(int i=0; i&lt;abonents-&gt;GetRecCount(); i++) StringGridAbonent-&gt;Cells[0][i] = Buf[i]; delete [] Buf; DataChange = false; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { abonents-&gt;Delete(); RefreshList(); LoadAbonent(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { abonents-&gt;Cansel(); LoadAbonent(); DataChange = false; } //--------------------------------------------------------------------------- void __fastcall TForm1::StringGridAbonentClick(TObject *Sender) { abonents-&gt;SetFocus(StringGridAbonent-&gt;Row); LoadAbonent(); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormDestroy(TObject *Sender) { abonents-&gt;SaveToFile(); } //--------------------------------------------------------------------------- void __fastcall TForm1::StringGridAbonentKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { abonents-&gt;SetFocus(StringGridAbonent-&gt;Row); LoadAbonent(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) { abonents-&gt;SetFiltred(! abonents-&gt;GetFiltred()); if(abonents-&gt;GetFiltred()) { if(MemoFIO-&gt;Text.Length()&gt;0) abonents-&gt;FiltByFIO(MemoFIO-&gt;Text); if(MemoHomeNumber-&gt;Text.Length()&gt;0) abonents-&gt;FiltByHomeNumber(MemoHomeNumber-&gt;Text); if(MemoWorkNumber-&gt;Text.Length()&gt;0) abonents-&gt;FiltByWorkNumber(MemoWorkNumber-&gt;Text); if(MemoMobilNumber-&gt;Text.Length()&gt;0) abonents-&gt;FiltByMobilNumber(MemoMobilNumber-&gt;Text); if(MemoFaxNumber-&gt;Text.Length()&gt;0) abonents-&gt;FiltByFaxNumber(MemoFaxNumber-&gt;Text); if(MemoOtherNumber-&gt;Text.Length()&gt;0) abonents-&gt;FiltByOtherNumber(MemoOtherNumber-&gt;Text); if(MemoEmail-&gt;Text.Length()&gt;0) abonents-&gt;FiltByEmail(MemoEmail-&gt;Text); if(MemoWEB_address-&gt;Text.Length()&gt;0) abonents-&gt;FiltByWEB_address(MemoWEB_address-&gt;Text); if(MemoHomeAddress-&gt;Text.Length()&gt;0) abonents-&gt;FiltByHomeAddress(MemoHomeAddress-&gt;Text); }; RefreshList(); LoadAbonent(); if(abonents-&gt;GetFiltred()) Button5-&gt;Caption = "Все элементы"; else Button5-&gt;Caption = "Поиск"; } //---------------------------------------------------------------------------
MainUnit.h (реализацию оставлю себе, можешь реализовать классы а можешь написать в листинге "Кто дочитал до сюда, тот молодца ))" все равно никто не прочтёт.
//--------------------------------------------------------------------------- #ifndef MainUnitH #define MainUnitH //--------------------------------------------------------------------------- #include &lt;Classes.hpp&gt; #include &lt;Controls.hpp&gt; #include &lt;StdCtrls.hpp&gt; #include &lt;Forms.hpp&gt; #include &lt;SysUtils.hpp&gt; #include &lt;dstring.h&gt; #include &lt;string.h&gt; #include &lt;ExtCtrls.hpp&gt; #include &lt;Grids.hpp&gt; #include &lt;Graphics.hpp&gt; #include &lt;math.h&gt; #include &lt;ComCtrls.hpp&gt; #include &lt;DBCtrls.hpp&gt; #include &lt;DBGrids.hpp&gt; //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TPageControl *PageControl1; TTabSheet *TabSheet1; TPanel *Panel34; TPanel *Panel37; TPanel *Panel45; TDBNavigator *DBNavigator2; TGroupBox *GroupBox15; TGroupBox *GroupBox16; TPanel *Panel38; TPanel *Panel39; TGroupBox *GroupBox5; TLabel *Label4; TLabel *Label5; TLabel *Label6; TPanel *Panel40; TGroupBox *GroupBox4; TGroupBox *GroupBox6; TPanel *Panel41; TGroupBox *GroupBox8; TGroupBox *GroupBox9; TPanel *Panel42; TGroupBox *GroupBox7; TGroupBox *GroupBox10; TPanel *Panel43; TGroupBox *GroupBox11; TGroupBox *GroupBox12; TPanel *Panel44; TGroupBox *GroupBox13; TGroupBox *GroupBox14; TPanel *Panel47; TGroupBox *GroupBox19; TGroupBox *GroupBox20; TPanel *Panel46; TGroupBox *GroupBox17; TGroupBox *GroupBox18; TPanel *Panel48; TGroupBox *GroupBox21; TGroupBox *GroupBox22; TGroupBox *GroupBox23; TGroupBox *GroupBox24; TTabSheet *TabSheet2; TPanel *Panel32; TPanel *Panel33; TPanel *Panel49; TPanel *Panel35; TPanel *Panel36; TGroupBox *GroupBox1; TGroupBox *GroupBox2; TLabel *Label1; TLabel *Label2; TLabel *Label3; TGroupBox *GroupBox3; TTabSheet *TabSheet3; TPanel *Panel1; TPanel *Panel2; TPanel *Panel3; TDBGrid *DBGrid1; TPanel *Panel5; TPanel *Panel6; TMemo *Memo1; TTabSheet *TabSheet4; TPanel *Panel7; TPanel *Panel8; TPanel *Panel9; TDBNavigator *DBNavigator5; TDBGrid *DBGrid2; TPanel *Panel10; TPanel *Panel11; TMemo *Memo2; TTabSheet *TabSheet5; TPanel *Panel12; TPanel *Panel13; TPanel *Panel14; TDBNavigator *DBNavigator6; TDBGrid *DBGrid3; TPanel *Panel15; TPanel *Panel16; TMemo *Memo3; TTabSheet *TabSheet6; TPanel *Panel17; TPanel *Panel18; TPanel *Panel19; TDBNavigator *DBNavigator7; TDBGrid *DBGrid4; TPanel *Panel20; TPanel *Panel21; TMemo *Memo4; TTabSheet *TabSheet7; TPanel *Panel22; TPanel *Panel23; TPanel *Panel24; TDBNavigator *DBNavigator8; TDBGrid *DBGrid5; TPanel *Panel25; TPanel *Panel26; TMemo *Memo5; TTabSheet *TabSheet8; TPanel *Panel27; TPanel *Panel28; TPanel *Panel29; TDBNavigator *DBNavigator1; TDBGrid *DBGrid6; TPanel *Panel30; TPanel *Panel31; TMemo *Memo6; TMemo *Memo7; TMemo *Memo8; TMemo *Memo9; TEdit *Edit1; TComboBox *ComboBox1; TComboBox *ComboBox2; TComboBox *ComboBox3; TComboBox *ComboBox4; TComboBox *ComboBox5; TComboBox *ComboBox6; TComboBox *ComboBox7; TComboBox *ComboBox8; TComboBox *ComboBox9; TEdit *Edit2; TEdit *Edit3; TEdit *Edit4; TEdit *Edit5; TEdit *Edit6; TEdit *Edit7; TEdit *Edit8; TEdit *Edit9; TComboBox *ComboBox10; TComboBox *ComboBox11; TStringGrid *StringGrid1; TStringGrid *StringGrid2; TStringGrid *StringGrid3; TStringGrid *StringGrid4; TStringGrid *StringGrid5; TStringGrid *StringGrid6; TStringGrid *StringGrid7; TStringGrid *StringGrid8; TStringGrid *StringGrid9; TStringGrid *StringGrid10; TEdit *Edit10; TEdit *Edit11; TEdit *Edit12; TComboBox *ComboBox12; TComboBox *ComboBox13; TEdit *Edit13; TEdit *Edit14; TEdit *Edit15; TEdit *Edit16; TEdit *Edit17; TEdit *Edit18; TEdit *Edit19; void __fastcall Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); void __fastcall Image1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); void __fastcall Image4MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); void __fastcall Image4MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); void __fastcall Image3MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); void __fastcall Image3MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); void __fastcall Image2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); void __fastcall Image2MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); void __fastcall FormCreate(TObject *Sender); void __fastcall Button1Click(TObject *Sender); void __fastcall Button3Click(TObject *Sender); void __fastcall Button2Click(TObject *Sender); void __fastcall Button4Click(TObject *Sender); void __fastcall StringGridAbonentClick(TObject *Sender); /*Добавим в этот класс методы сохранения изменений в базе и вос- становления данных из базы.*/ void __fastcall SaveAbonent(); void __fastcall LoadAbonent(); void __fastcall RefreshList(); void __fastcall FormDestroy(TObject *Sender); void __fastcall StringGridAbonentKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); void __fastcall Button5Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- /* Описание моих классов для этой задачи. Всё просто выделим два класса-контейнера: абонент и группа абонентов. Абонент имеет множество полей группа абонентов имеет название и номер Абоненты фильтруются на принадлежность группе. Для поддержки мехинизма фильтрации используем динимический список, элементы которого примерно таковы (это абоненты): struct tRecAbonent { tInfoAbonent Info; //полезная информация или указатель на неё tGroupIndex GroupIndex; //аттрибут по которому мы собсвенно и фильтруем tRecAbonent * next; //указатель на следующий элемент списка tRecAbonent * prev; // -/-/- предыдущий -/-/- tRecAbonent * nextFilt; //указатель на следующий фильтрованный элемент списка tRecAbonent * prevFilt; // -/-/- предыдущий -/-/- }; Список групп это просто список, по которому пользователь может перемещаться вверх/вниз к первому/последнему элементам. struct tRecGroup { tInfoGroup Info; //название группы (возможно другие х-ки) tGroupIndex GroupIndex; //номер группы tRecGroup * next; //указатель на следующий элемент списка tRecGroup * prev; // -/-/- предыдущий -/-/- }; Нам нужно организовать: 1. Файловый ввод/вывод 2. Сортировку списков 3. Фильтрацию абонентов 4. Проверку на единственность ключевого поля (целостность данных) 5. Минимизация ввода/вывода 6. Добавление записей в список 7. Удаление записей из списка 8. Поиск и изменение записей в списке */ /******************************************************************************* Описание структур *******************************************************************************/ struct tAbonent //**Информация об абоненте** { //Состав типичен: char FIO[121]; //Фамилия Имя и Отчество (название) 120 + 1 char MobilNumber[31]; //Мобильный 30 + 1 char HomeNumber[31]; //Домашний 30 + 1 char WorkNumber[31]; //Рабочий 30 + 1 char FaxNumber[31]; //Номер факса 30 + 1 char OtherNumber[31]; //Другой номер 30 + 1 char WEB_address[121]; //Адрес WEB-ресурса 120 + 1 char Email[121]; //Адрес электронныого почтового ящика 120 + 1 char HomeAddress[241]; //Домашний адрес 240 + 1 unsigned long GroupID; //Номер группы 4 }; // 754 + 9 = 763 struct tGroup //**Информация о группе** { char Name[101]; //Название группы unsigned long GroupID; //Номер группы (счётчик) }; struct tRecAbonent { tAbonent * Info; //указатель на полезную информацию unsigned long ID; //индивидуальный номер каждой записи 0..4 млн. tRecAbonent * next; //указатель на следующий элемент списка tRecAbonent * prev; // -/-/- предыдущий -/-/- tRecAbonent * nextFilt; //указатель на следующий фильтрованный элемент списка tRecAbonent * prevFilt; // -/-/- предыдущий -/-/- }; struct tRecGroup { tGroup * Info; //название группы (возможно другие х-ки) unsigned long ID; //простой способ отличить один элемент от другого tRecGroup * next; //указатель на следующий элемент списка tRecGroup * prev; // -/-/- предыдущий -/-/- }; /******************************************************************************* Описание классов *******************************************************************************/ //Класс абонентов*************************************************************** class CAbonentList { private: tRecAbonent * pFirst; //указатель на первый элемент tRecAbonent * pFirstFilt;//указатель на первый элемент фильтрованного списка tRecAbonent * pRec; //указатель на текущую запись //tRecAbonent * pTempRec; //указатель на временный (рабочий) элемент списка tAbonent * pTemp; //указатель на временный (рабочий) элемет данных unsigned long RecCount; //количество доступных записей unsigned long RecNumber; //номер текущей доступной записи unsigned long Count; //общее число записей в базе bool Filtred; //флаг режима фильтрации bool Editable; //флаг режима редактирования tAbonent * GetBuf(); //получить указатель на массив (только информация) public: tRecAbonent * operator[](unsigned long id); //получение записи по номеру AnsiString FileName; //имя файла-таблицы данных unsigned long Filter; //фильтр - номер группы абонентов CAbonentList(); //конструктор ~CAbonentList(); //деструктор Free(); //очистка списка Next(); //следующий Prev(); //предыдущий EditOn(); //режим редактирования включён EditOff(); //режим редактирования выключен Save(); //сохранение изменений в списке Add(); //добавить элемент Delete(); //удалить элемент Cansel(); //отмена изменений SaveToFile(); //сохранение изменений в файле данных (таблице) Refresh(); //обновление данных Sort(); //сортировка unsigned long GetRecCount(); //получить число записей unsigned long GetRecNumber(); //полчуить номер записи AnsiString * GetFIOs(); //получить массив длиной RecCount (массив ФИО) tAbonent * GetRec(); //получить информацию о текущей записи bool GetFiltred(); //получить флаг режима фильтрации SetFiltred(bool isFilt); //установка/отмена режима фильтрации SetFocus(unsigned long index); //установить курсор на нужный номер FiltByFIO(AnsiString FIO); FiltByMobilNumber(AnsiString MobilNumber); FiltByHomeNumber(AnsiString HomeNumber); FiltByWorkNumber(AnsiString WorkNumber); FiltByFaxNumber(AnsiString FaxNumber); FiltByOtherNumber(AnsiString OtherNumber); FiltByWEB_address(AnsiString WEB_address); FiltByEmail(AnsiString Email); FiltByHomeAddress(AnsiString HomeAddress); }; /******************************************************************************* Реализация классов *******************************************************************************/ //А дальше сам делай.
При запуске под Wine все это выглядит примерно так:
Скриншот

Данная прога работает на файлах. Основная фишка тут просто в работе с двунаправленным списком, находящимся в оперативной памяти. Этот список может считан из файла и записан в него.
Post #: 10
RE: Нужна помощь по С++ - 2010-02-19 00:26:16.780000   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
quote:

ORIGINAL: tеstеr
Много сидишь на форуме ты Lost_boy, страшно сказать 228 постов, 33 балла кармы.

А это вы собственно к чему? Ваши показатели практически равно моим..
Post #: 11
RE: Нужна помощь по С++ - 2010-02-19 19:04:24.740000   
Parti$an1966

Сообщений: 6
Оценки: 0
Присоединился: 2010-02-19 18:44:55.666666
Пишу контролку в Borland-е 3.1, надо выдать таблицу значений функции(не важно какой) -
проблема: окна exe-ника нехватает на неё….
что делать?
как в Borland-е 3.1 создать файл .txt?
Post #: 12
RE: Нужна помощь по С++ - 2010-02-19 20:24:29.470000   
tеstеr

Сообщений: 377
Оценки: -46
Присоединился: 2008-02-08 17:56:40.563333
quote:

ORIGINAL: Parti$an1966

Пишу контролку в Borland-е 3.1, надо выдать таблицу значений функции(не важно какой) -
проблема: окна exe-ника нехватает на неё….
что делать?
как в Borland-е 3.1 создать файл .txt?


Нужно использовать перенаправление потока вывода в файл.
Стандартный поток вывода (stdout) перенаправляется следующм образом:
1. Компилируется программа и собирается исполняемый файл, например C:\Project\proga.exe
2. В командной строке вызывается последовательность команд (любой из 4–х вариантов).



cd "C:\Project\"
proga.exe &gt; результат.txt


cd "C:\Project\"
more | proga.exe


"C:\Project\proga.exe" &gt; "C:\Project\результат.txt"


more | "C:\Project\proga.exe"

Post #: 13
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Нужна помощь по С++







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.