Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2011, 00:53   #1
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию Создание модуля

Еще раз добрый день, я наверно всем надоел со своими проблемами - дак извините, у меня появилась последняя просьба, я в общем не смог создать нормальный модуль, в котором описанный классы и их методы. Но у меня все это реализовано для консольки, я пытаюсь прикрутить к ней визуальные объект, для этого нужен модуль. Кто может мне помочь его написать) И рассказать как мне его прикрутить к формам, код всего этого вот:
первый класс:
Код:
#include <vcl.h>
#pragma hdrstop
#include <iostream>
#include <string>
#include <fstream>
#include <conio>
using namespace std;
int n=0;
int num=NULL;
bool f=false;
//-----------------Класс CGenerel--------------------------
class CGeneral{
        protected:
                string street;
                string house;
                string phone;
                        string Street_(){return street;}
                        string House_(){return house;}
                        string Phone_(){return phone;}
                void SetStreet_(string x){
                        for(unsigned int i=0;i<x.length();i++) x[0]=toupper(x[0]);
                        street=x;
                }
                void SetHouse_(string x){
                        for(unsigned int i=0;i<x.length();i++) x[0]=toupper(x[0]);
                        house=x;
                }
                void SetPhone_(string x){
                        for(unsigned int i=0;i<x.length();i++) x[0]=toupper(x[0]);
                        phone=x;
                }
                virtual string GetFullData()=0;

        public:
                __property string STREET={read=Street_,write=SetStreet_};
                __property string HOUSE={read=House_,write=SetHouse_};
                __property string PHONE={read=Phone_,write=SetPhone_};
                __property string FullData={read=GetFullData};
                CGeneral(ifstream &base);
                CGeneral(string nstreet,string nhouse,string nphone);
                virtual void SaveDate(ofstream &sbase){}
                //virtual string FullDate(){}
};
//*****************************Описание конструкторов и методов ****************
        CGeneral::CGeneral(ifstream &base){
                string x;
                base>>x;
                STREET=x;
                base>>x;
                HOUSE=x;
                base>>x;
                PHONE=x;
        }
        CGeneral::CGeneral(string nstreet,string nhouse,string nphone){
                STREET=nstreet;
                HOUSE=nhouse;
                PHONE=nphone;
        }
CodeNOT вне форума Ответить с цитированием
Старый 05.01.2011, 00:54   #2
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

второй класс:
Код:
//-------------Класс CPeople-------------------------------
class CPeople:public CGeneral{
        protected:
                string name;string surname;string otch;string room;
                string Name_(){return name;}
                string Surname_(){return surname;}
                string Otch_(){return otch;}
                string Room_(){return room;}
                        void SetName_(string x){
                                for(unsigned int i=0;i<x.length();i++) x[0]=toupper(x[0]);
                                name=x;
                        }
                        void SetSurname_(string x){
                                for(unsigned int i=0;i<x.length();i++) x[0]=toupper(x[0]);
                                surname=x;
                        }
                        void SetOtch_(string x){
                                for(unsigned int i=0;i<x.length();i++) x[0]=toupper(x[0]);
                                otch=x;
                        }
                        void SetRoom_(string x){
                                for(unsigned int i=0;i<x.length();i++) x[0]=toupper(x[0]);
                                room=x;
                        }
        public:
                __property string NAME={read=Name_,write=SetName_};
                __property string SURNAME={read=Surname_,write=SetSurname_};
                __property string OTCH={read=Otch_,write=SetOtch_};
                __property string ROOM={read=Room_,write=SetRoom_};
        CPeople(ifstream &base):CGeneral(base){
                        string x;
                        base>>x;
                                NAME=x;
                        base>>x;
                                SURNAME=x;
                        base>>x;
                                OTCH=x;
                        base>>x;
                                ROOM=x;
        }
        CPeople(string nstreet,string nhouse,string nphone,string nname,string nsurname,string notch,string nroom):CGeneral(nstreet,nhouse,nphone){
                NAME=nname;
                SURNAME=nsurname;
                OTCH=notch;
                ROOM=nroom;
        }
        string GetFullData(){
                return "\n Name: "+NAME+"\n Surname: "+SURNAME+"\n Otch: "+OTCH+"\n Street: "+STREET+"\n House: "+HOUSE+"\n Room: "+ROOM+"\n Phone: "+PHONE;
        }
      virtual  void SaveDate(ofstream &sbase){
                sbase<<"0 "<<street<<" "<<house<<" "<<phone<<" "<<name<<" "<<surname<<" "<<otch<<" "<<room<<"\n";
        }
        void Del(){
                NAME="";
                SURNAME="";
                OTCH="";
                STREET="";
                HOUSE="";
                ROOM="";
                PHONE="";
                n--;
        }

};
CodeNOT вне форума Ответить с цитированием
Старый 05.01.2011, 00:55   #3
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

Третий класс:
Код:
//-----------------------------------класс CPlant------------------------------------
class CPlant:public CGeneral{
        protected:
                string fname;
                string Fname_(){return fname;}
                void SetFname_(string x){
                        for(unsigned int i=0;i<x.length();i++) x[i]=toupper(x[i]);
                        fname=x;
                }
        public:
                __property string FNAME={read=Fname_,write=SetFname_};
                CPlant(ifstream &base):CGeneral(base){
                        string x;
                        base>>x;
                                FNAME=x;
                }
                CPlant(string nstreet,string nhouse,string nphone,string nfname):CGeneral(nstreet,nhouse,nphone){
                        FNAME=nfname;
                }
                string GetFullData(){
                        return "\n NAME: "+FNAME+"\n STREET: "+STREET+"\n HOUSE: "+HOUSE+"\n PHONE: "+PHONE;
                }
         virtual void SaveDate(ofstream &sbase){
                        sbase<<"1 "<<street<<" "<<house<<" "<<phone<<" "<<fname<<"\n";
                }
         void Del(){
                FNAME="";
                STREET="";
                HOUSE="";
                PHONE="";
                n--;
        }

};
CodeNOT вне форума Ответить с цитированием
Старый 05.01.2011, 00:56   #4
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

и класс который всеми ними управляет(первая часть)
Код:
class Satan{
        protected:
                int peoples,plants;
                string sres;
                CGeneral * general[1000];
        public:
                Satan(){
                peoples=0;plants=0;
                sres="";
                        int who;
                        ifstream base;
                                base.open("base.dat");
                                        if(!base){exit(1);}
                        base>>n;
                                for(unsigned int i=0;i<n;i++){
                                        base>>who;
                                                switch(who){
                                                        case 0:general[i]=new CPeople(base);peoples++;break;
                                                        case 1:general[i]=new CPlant(base);plants++;break;
                                                }
                                }
                                base.close();
                }
                string GetBaseInf(){
                        String a1=IntToStr(n);
                        String a2=IntToStr(peoples);
                        String a3=IntToStr(plants);
                        string o1=a1.c_str();string o2=a2.c_str();
                        string o3=a3.c_str();
                        return "\n Total : "+o1+"\n Peoples: "+o2+"\n Plants: "+o3;
                }
                String AddPeople(string ns,string nh,string np,string nn,string nsur,string no,string nr){
                        bool flag=false;
                        if(ns!=""&&nh!=""&&np!=""&&nn!=""&&nsur!=""&&no!=""&&nr!=""){
                                flag=true;
                                general[n++]=new CPeople(ns,nh,np,nn,nsur,no,nr);
                                peoples++;
                        }
                                if(!flag) return "\n ERROR ";
                                else return "\n PEOPLE ADD ";
                }
                String AddPlant(string ns,string nh,string np,string nfn){
                        bool flag=false;
                                if(ns!=""&&nh!=""&&np!=""&&nfn!=""){
                                        flag=true;
                                        plants++;
                                        general[n++]=new CPlant(ns,nh,np,nfn);
                                }
                        if(!flag)return "\n ERROR ";
                        else return "\n PLANT ADD ";
                }
                void Save(){
                        ofstream sbase;
                                sbase.open("base.dat");
                                sbase<<n<<"\n";
                        for(unsigned int i=0;i<n;i++){
                                general[i]->SaveDate(sbase);
                        }
                        sbase.close();
                }
CodeNOT вне форума Ответить с цитированием
Старый 05.01.2011, 00:57   #5
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

Вторая часть управляющего класса:
Код:
 string SearchPeople(string s1,string s2){
                string result="";
                for(unsigned int i=0;i<n;i++){
                        if( (((CPeople*)general[i])->NAME==s1||((CPeople*)general[i])->SURNAME==s1||((CPeople*)general[i])->OTCH==s1)&&(((CPeople*)general[i])->STREET==s2||((CPeople*)general[i])->HOUSE==s2||((CPeople*)general[i])->ROOM==s2||((CPeople*)general[i])->PHONE==s2)){
                                 f=true;
                                 num=i;
                                 return "\n Name: "+((CPeople*)general[i])->NAME+"\n Surname: "+((CPeople*)general[i])->SURNAME+"\n Otch: "+((CPeople*)general[i])->OTCH+"\n STREET: "+((CPeople*)general[i])->STREET+"\n HOUSE: "+((CPeople*)general[i])->HOUSE+"\n ROOM: "+((CPeople*)general[i])->ROOM+"\n Phone: "+((CPeople*)general[i])->PHONE;
                                 break;
                        }else{f=false;}
                }
                if(!f){
                        return "\n DONT FOUND ";
                }


        }
       string SearchPlant(string s1){
                string result="";
                   for(unsigned int i=0;i<n;i++){
                        if( ((CPlant*)general[i])->FNAME==s1||((CPlant*)general[i])->STREET==s1||((CPlant*)general[i])->HOUSE==s1||((CPlant*)general[i])->PHONE==s1){
                                f=true;
                                num=i;
                                return "\n Name: "+((CPlant*)general[i])->FNAME+"\n STREET: "+((CPlant*)general[i])->STREET+"\n HOUSE: "+((CPlant*)general[i])->HOUSE+"\n PHONE: "+((CPlant*)general[i])->PHONE;
                                break;
                        }
                   }
                   if(!f){
                        return "\n NOT FOUND ";
                   }
        }
        string DelPeople(){
                if(num<=n&&f==true){
                        ((CPeople*)general[num])->Del();
                                num=NULL;peoples--;
                         return "\n Person del ";
                }else{f=false;num=NULL;return "\n Error ";}
        }
        string DelPlant(){
                 if(num<=n&&f==true){
                        ((CPlant*)general[num])->Del();
                                num=NULL;  plants--;
                         return "\n PLANT del ";
                }else{f=false;num=NULL;return "\n Error ";}
        }
        string EditPerson(string nstreet,string nhouse,string nphone,string nname,string nsurname,string notch,string nroom){
                if(num<=n&&f==true){
                        if(nname!="") ((CPeople*)general[num])->NAME=nname;
                        if(nsurname!="")((CPeople*)general[num])->SURNAME=nsurname;
                        if(notch!="")((CPeople*)general[num])->OTCH=notch;
                        if(nstreet!="")((CPeople*)general[num])->STREET=nstreet;
                        if(nhouse!="")((CPeople*)general[num])->HOUSE=nhouse;
                        if(nroom!="")((CPeople*)general[num])->ROOM=nroom;
                        if(nphone!="")((CPeople*)general[num])->PHONE=nphone;
                        return "\n PERSON EDIT ";
                }else return "\n ERROR ";
        }
        string EditPlant(string nstreet,string nhouse,string nphone,string nfname){
                if(num<=n&&f==true){
                        if(nstreet!="")((CPlant*)general[num])->STREET=nstreet;
                        if(nhouse!="")((CPlant*)general[num])->HOUSE=nhouse;
                        if(nphone!="")((CPlant*)general[num])->PHONE=nphone;
                        if(nfname!="")((CPlant*)general[num])->FNAME=nfname;
                        return "\n Plant edit ";
                }else return "\n ERROR EDIT ";
        }
CodeNOT вне форума Ответить с цитированием
Старый 05.01.2011, 00:57   #6
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

3-я часть управляющего класса:
Код:
void SortPeopleName(){
                string result="";
                        for(unsigned int j=0;j<n;j++){
                                for(unsigned int i=0;i<n-j-1;i++){
                                            if( ((CPeople*)general[i])->NAME < ((CPeople*)general[i+1])->NAME){
                                                result=((CPeople*)general[i])->NAME;
                                                ((CPeople*)general[i])->NAME=((CPeople*)general[i+1])->NAME;
                                                ((CPeople*)general[i+1])->NAME=result;
                                                result=((CPeople*)general[i])->SURNAME;
                                                ((CPeople*)general[i])->SURNAME=((CPeople*)general[i+1])->SURNAME;
                                                ((CPeople*)general[i+1])->SURNAME=result;
                                                result=((CPeople*)general[i])->OTCH;
                                                ((CPeople*)general[i])->OTCH=((CPeople*)general[i+1])->OTCH;
                                                ((CPeople*)general[i+1])->OTCH=result;
                                                result=((CPeople*)general[i])->STREET;
                                                ((CPeople*)general[i])->STREET=((CPeople*)general[i+1])->STREET;
                                                ((CPeople*)general[i+1])->STREET=result;
                                                result=((CPeople*)general[i])->HOUSE;
                                                ((CPeople*)general[i])->HOUSE=((CPeople*)general[i+1])->HOUSE;
                                                ((CPeople*)general[i+1])->HOUSE=result;
                                                result=((CPeople*)general[i])->ROOM;
                                                ((CPeople*)general[i])->ROOM=((CPeople*)general[i+1])->ROOM;
                                                ((CPeople*)general[i+1])->ROOM=result;
                                                result=((CPeople*)general[i])->PHONE;
                                                ((CPeople*)general[i])->PHONE=((CPeople*)general[i+1])->PHONE;
                                                ((CPeople*)general[i+1])->PHONE=result;
                                            }
                                }
                        }
        }
CodeNOT вне форума Ответить с цитированием
Старый 05.01.2011, 00:58   #7
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

4-я часть управляющего класса:
Код:
 void SortPeoplePHONE(){
                string result="";
                        for(unsigned int j=0;j<n;j++){
                                for(unsigned int i=0;i<n-j-1;i++){
                                            if( ((CPeople*)general[i])->PHONE < ((CPeople*)general[i+1])->PHONE){
                                                result=((CPeople*)general[i])->NAME;
                                                ((CPeople*)general[i])->NAME=((CPeople*)general[i+1])->NAME;
                                                ((CPeople*)general[i+1])->NAME=result;
                                                result=((CPeople*)general[i])->SURNAME;
                                                ((CPeople*)general[i])->SURNAME=((CPeople*)general[i+1])->SURNAME;
                                                ((CPeople*)general[i+1])->SURNAME=result;
                                                result=((CPeople*)general[i])->OTCH;
                                                ((CPeople*)general[i])->OTCH=((CPeople*)general[i+1])->OTCH;
                                                ((CPeople*)general[i+1])->OTCH=result;
                                                result=((CPeople*)general[i])->STREET;
                                                ((CPeople*)general[i])->STREET=((CPeople*)general[i+1])->STREET;
                                                ((CPeople*)general[i+1])->STREET=result;
                                                result=((CPeople*)general[i])->HOUSE;
                                                ((CPeople*)general[i])->HOUSE=((CPeople*)general[i+1])->HOUSE;
                                                ((CPeople*)general[i+1])->HOUSE=result;
                                                result=((CPeople*)general[i])->ROOM;
                                                ((CPeople*)general[i])->ROOM=((CPeople*)general[i+1])->ROOM;
                                                ((CPeople*)general[i+1])->ROOM=result;
                                                result=((CPeople*)general[i])->PHONE;
                                                ((CPeople*)general[i])->PHONE=((CPeople*)general[i+1])->PHONE;
                                                ((CPeople*)general[i+1])->PHONE=result;
                                            }
                                }
                        }
        }
        void SortPlantName(){
                string result="";
                        for(unsigned int j=0;j<n;j++){
                                for(unsigned int i=0;i<n-j-1;i++){
                                        if( ((CPlant*)general[i])->FNAME < ((CPlant*)general[i+1])->FNAME ){
                                                result=((CPlant*)general[i])->FNAME;
                                                ((CPlant*)general[i])->FNAME=((CPlant*)general[i+1])->FNAME;
                                                ((CPlant*)general[i+1])->FNAME=result;
                                                result=((CPlant*)general[i])->STREET;
                                                ((CPlant*)general[i])->STREET=((CPlant*)general[i+1])->STREET;
                                                ((CPlant*)general[i+1])->STREET=result;
                                                result=((CPlant*)general[i])->HOUSE;
                                                ((CPlant*)general[i])->HOUSE=((CPlant*)general[i+1])->HOUSE;
                                                ((CPlant*)general[i+1])->HOUSE=result;
                                                result=((CPlant*)general[i])->PHONE;
                                                ((CPlant*)general[i])->PHONE=((CPlant*)general[i+1])->PHONE;
                                                ((CPlant*)general[i+1])->PHONE=result;
                                        }
                                }
                        }
        }
CodeNOT вне форума Ответить с цитированием
Старый 05.01.2011, 00:58   #8
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

и последняя часть:
Код:
void SortPlantPhone(){
                string result="";
                        for(unsigned int j=0;j<n;j++){
                                for(unsigned int i=0;i<n-j-1;i++){
                                        if( ((CPlant*)general[i])->PHONE < ((CPlant*)general[i+1])->PHONE ){
                                                result=((CPlant*)general[i])->FNAME;
                                                ((CPlant*)general[i])->FNAME=((CPlant*)general[i+1])->FNAME;
                                                ((CPlant*)general[i+1])->FNAME=result;
                                                result=((CPlant*)general[i])->STREET;
                                                ((CPlant*)general[i])->STREET=((CPlant*)general[i+1])->STREET;
                                                ((CPlant*)general[i+1])->STREET=result;
                                                result=((CPlant*)general[i])->HOUSE;
                                                ((CPlant*)general[i])->HOUSE=((CPlant*)general[i+1])->HOUSE;
                                                ((CPlant*)general[i+1])->HOUSE=result;
                                                result=((CPlant*)general[i])->PHONE;
                                                ((CPlant*)general[i])->PHONE=((CPlant*)general[i+1])->PHONE;
                                                ((CPlant*)general[i+1])->PHONE=result;
                                        }
                                }
                        }
        }
};
CodeNOT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
простенькое создание модуля.. hen Паскаль, Turbo Pascal, PascalABC.NET 8 17.03.2011 17:10
Создание модуля Delphi стек Graff Valdemar Помощь студентам 5 23.05.2010 14:46
Создание модуля Deight Общие вопросы Delphi 20 31.12.2008 15:34
Создание модуля в Си JET_FLASH Общие вопросы C/C++ 16 11.01.2008 17:12
Создание модуля голосования AlekFirst PHP 1 18.10.2007 11:54