Нужна помощь по С++
Пользователи, просматривающие топик: 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
|
|
|
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 Мб у кого нибудь остались когда либо сделанные БД на Си и телефонный справочник, разумеется делать как это я не совсем понимаю а долги сдавать надо, буду очень рад если дадите исходники: Небольшой телефонный справочник. Постановка задачи не ясна. Какая конечная ось, какой должен быть интерфейс и т.п.
|
|
|
RE: Нужна помощь по С++ - 2010-02-17 20:39:56.903333
|
|
|
falshivka_efp
Сообщений: 20
Оценки: 0
Присоединился: 2010-02-11 19:09:51.236666
|
C++ 6 Builder - Ось (если я правильног понял) Интерфес - не очень сложный. перед которым логин пасс на Оператора и на Администратора (но это не обезательно).
|
|
|
RE: Нужна помощь по С++ - 2010-02-17 21:31:20.716666
|
|
|
iidsp
Сообщений: 379
Оценки: 0
Присоединился: 2009-10-14 23:13:19.856666
|
quote:
C++ 6 Builder - Ось (если я правильног понял) Интерфес - не очень сложный. перед которым логин пасс на Оператора и на Администратора (но это не обезательно). на кого учимся?
|
|
|
RE: Нужна помощь по С++ - 2010-02-18 07:24:29.173333
|
|
|
falshivka_efp
Сообщений: 20
Оценки: 0
Присоединился: 2010-02-11 19:09:51.236666
|
quote:
на кого учимся? Учемня на АСУ, может лучше поможете, чем прото спрашивать?
|
|
|
RE: Нужна помощь по С++ - 2010-02-18 12:45:53.773333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: falshivka_efp Учемня на АСУ, может лучше поможете, чем прото спрашивать? Раздел "работа"… Или сам попробуй разобраться, а при возникновении вопросов - обращайся сюда. По существу: 6-й билдер давно устарел. На нём точно никто ничего делать не будет.
|
|
|
RE: Нужна помощь по С++ - 2010-02-18 13:15:30.860000
|
|
|
falshivka_efp
Сообщений: 20
Оценки: 0
Присоединился: 2010-02-11 19:09:51.236666
|
Поэтому и спрашиваю "Мб у кого нибудь остались"
|
|
|
RE: Нужна помощь по С++ - 2010-02-18 14:45:02.983333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: falshivka_efp Поэтому и спрашиваю "Мб у кого нибудь остались" Остались от чего?
|
|
|
RE: Нужна помощь по С++ - 2010-02-18 15:29:58.266666
|
|
|
Lost_boy
Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
|
Остались от старых времен учеба институте/универе/пту/школе… это вроде и так ясно =) А по теме нет, такого не делал поэтому нема, хотя билдер 6й до сих пор где-то на болванке лежит.
|
|
|
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 <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("MainUnit.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
//---------------------------------------------------------------------------
MainUnit.cpp //---------------------------------------------------------------------------
#include <vcl.h>
#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<b) return a;
else return b;
};
//---------------------------------------------------------------------------
void __fastcall TForm1::RefreshList()
{
AnsiString * Buf = abonents->GetFIOs();
StringGridAbonent->RowCount = abonents->GetRecCount();
StringGridAbonent->Cells[0][0] = "";
for(int i=0; i<abonents->GetRecCount(); i++)
StringGridAbonent->Cells[0][i] = Buf[i];
delete [] Buf;
};
//---------------------------------------------------------------------------
void __fastcall TForm1::SaveAbonent()
{
abonents->EditOn();
tAbonent * Rec = (abonents->GetRec());
if(Rec != NULL)
{
strncpy(Rec->FIO, MemoFIO->Text.c_str(), min(120, MemoFIO->Text.Length()));
Rec->FIO[min(120, MemoFIO->Text.Length())]=0;
strncpy(Rec->HomeNumber, MemoHomeNumber->Text.c_str(),
min(30, MemoHomeNumber->Text.Length()));
Rec->HomeNumber[min(30, MemoHomeNumber->Text.Length())]=0;
strncpy(Rec->WorkNumber, MemoWorkNumber->Text.c_str(),
min(30, MemoWorkNumber->Text.Length()));
Rec->WorkNumber[min(30, MemoWorkNumber->Text.Length())]=0;
strncpy(Rec->MobilNumber, MemoMobilNumber->Text.c_str(),
min(30, MemoMobilNumber->Text.Length()));
Rec->MobilNumber[min(30, MemoMobilNumber->Text.Length())]=0;
strncpy(Rec->FaxNumber, MemoFaxNumber->Text.c_str(),
min(30, MemoFaxNumber->Text.Length()));
Rec->FaxNumber[min(30, MemoFaxNumber->Text.Length())]=0;
strncpy(Rec->OtherNumber, MemoOtherNumber->Text.c_str(),
min(30, MemoOtherNumber->Text.Length()));
Rec->OtherNumber[min(30, MemoOtherNumber->Text.Length())]=0;
strncpy(Rec->Email, MemoEmail->Text.c_str(),
min(120, MemoEmail->Text.Length()));
Rec->Email[min(120, MemoEmail->Text.Length())]=0;
strncpy(Rec->WEB_address, MemoWEB_address->Text.c_str(),
min(120, MemoWEB_address->Text.Length()));
Rec->WEB_address[min(120, MemoWEB_address->Text.Length())]=0;
strncpy(Rec->HomeAddress, MemoHomeAddress->Text.c_str(),
min(120, MemoHomeAddress->Text.Length()));
Rec->HomeAddress[min(120, MemoHomeAddress->Text.Length())]=0;
abonents->Save();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LoadAbonent()
{
tAbonent * Rec = (abonents->GetRec());
//StringGridAbonent->Row = abonents->GetRecNumber();
if(Rec != NULL)
{
MemoFIO->Text = Rec->FIO;
MemoHomeNumber->Text = Rec->HomeNumber;
MemoWorkNumber->Text = Rec->WorkNumber;
MemoMobilNumber->Text = Rec->MobilNumber;
MemoFaxNumber->Text = Rec->FaxNumber;
MemoOtherNumber->Text = Rec->OtherNumber;
MemoEmail->Text = Rec->Email;
MemoWEB_address->Text = Rec->WEB_address;
MemoHomeAddress->Text = Rec->HomeAddress;
}
else
{ MemoFIO->Text = "";
MemoHomeNumber->Text = "";
MemoWorkNumber->Text = "";
MemoMobilNumber->Text = "";
MemoFaxNumber->Text = "";
MemoOtherNumber->Text = "";
MemoEmail->Text = "";
MemoWEB_address->Text = "";
MemoHomeAddress->Text = "";
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{ Panel31->BevelOuter = bvLowered;
abonents->Prev();
AnsiString * Buf = abonents->GetFIOs();
StringGridAbonent->Row = abonents->GetRecNumber();
}
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{ Panel31->BevelOuter = bvNone;}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image4MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{ Panel33->BevelOuter = bvLowered; MemoFIO->SetFocus();}
void __fastcall TForm1::Image4MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{ Panel33->BevelOuter = bvNone;}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image3MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{ Panel32->BevelOuter = bvLowered;
abonents->Next();
StringGridAbonent->Row = abonents->GetRecNumber();
}
void __fastcall TForm1::Image3MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{ Panel32->BevelOuter = bvNone;}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image2MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{ Panel34->BevelOuter = bvLowered; StringGridAbonent->SetFocus();}
void __fastcall TForm1::Image2MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{ Panel34->BevelOuter = bvNone;}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
abonents = new CAbonentList;
abonents->FileName = "абоненты.db";
abonents->Refresh();
RefreshList();
LoadAbonent();
DataChange = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
abonents->Add();
RefreshList();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
SaveAbonent();
AnsiString * Buf = abonents->GetFIOs();
StringGridAbonent->RowCount = abonents->GetRecCount();
for(int i=0; i<abonents->GetRecCount(); i++)
StringGridAbonent->Cells[0][i] = Buf[i];
delete [] Buf;
DataChange = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
abonents->Delete();
RefreshList();
LoadAbonent();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
abonents->Cansel();
LoadAbonent();
DataChange = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGridAbonentClick(TObject *Sender)
{
abonents->SetFocus(StringGridAbonent->Row);
LoadAbonent();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
abonents->SaveToFile();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGridAbonentKeyDown(TObject *Sender,
WORD &Key, TShiftState Shift)
{
abonents->SetFocus(StringGridAbonent->Row);
LoadAbonent();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
abonents->SetFiltred(! abonents->GetFiltred());
if(abonents->GetFiltred())
{
if(MemoFIO->Text.Length()>0)
abonents->FiltByFIO(MemoFIO->Text);
if(MemoHomeNumber->Text.Length()>0)
abonents->FiltByHomeNumber(MemoHomeNumber->Text);
if(MemoWorkNumber->Text.Length()>0)
abonents->FiltByWorkNumber(MemoWorkNumber->Text);
if(MemoMobilNumber->Text.Length()>0)
abonents->FiltByMobilNumber(MemoMobilNumber->Text);
if(MemoFaxNumber->Text.Length()>0)
abonents->FiltByFaxNumber(MemoFaxNumber->Text);
if(MemoOtherNumber->Text.Length()>0)
abonents->FiltByOtherNumber(MemoOtherNumber->Text);
if(MemoEmail->Text.Length()>0)
abonents->FiltByEmail(MemoEmail->Text);
if(MemoWEB_address->Text.Length()>0)
abonents->FiltByWEB_address(MemoWEB_address->Text);
if(MemoHomeAddress->Text.Length()>0)
abonents->FiltByHomeAddress(MemoHomeAddress->Text);
};
RefreshList();
LoadAbonent();
if(abonents->GetFiltred())
Button5->Caption = "Все элементы";
else
Button5->Caption = "Поиск";
}
//---------------------------------------------------------------------------
MainUnit.h (реализацию оставлю себе, можешь реализовать классы а можешь написать в листинге "Кто дочитал до сюда, тот молодца ))" все равно никто не прочтёт. //---------------------------------------------------------------------------
#ifndef MainUnitH
#define MainUnitH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <SysUtils.hpp>
#include <dstring.h>
#include <string.h>
#include <ExtCtrls.hpp>
#include <Grids.hpp>
#include <Graphics.hpp>
#include <math.h>
#include <ComCtrls.hpp>
#include <DBCtrls.hpp>
#include <DBGrids.hpp>
//---------------------------------------------------------------------------
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 все это выглядит примерно так: Скриншот Данная прога работает на файлах. Основная фишка тут просто в работе с двунаправленным списком, находящимся в оперативной памяти. Этот список может считан из файла и записан в него.
|
|
|
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 балла кармы. А это вы собственно к чему? Ваши показатели практически равно моим..
|
|
|
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?
|
|
|
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 > результат.txt
cd "C:\Project\" more | proga.exe
"C:\Project\proga.exe" > "C:\Project\результат.txt"
more | "C:\Project\proga.exe"
|
|
|
|
|