Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Изменить запись


Автор: mumikpokemon 16.6.2008, 14:44
Есть база данных, подскажите какой-нибудь код чтобы в данной программе изменить запись.

Автор: rrrFer 16.6.2008, 17:19
mumikpokemon, 
пишите все таки проблему тут, а не файл присоединяй...Т.к. пришлось изменить всю твою программу(она вообще странная...вы подключаете очень много заголовочных файлов(по большей части не нужных, кроме того эти файлы подключены в файле .cpp, а в файле .h они не подключены, хотя функции с этих заголовочных файлов используются именно там[нормальный компилятор должен выдать ошибку])
вот вобщем:
Цитата(mumikpokemon @  16.6.2008,  14:44 Найти цитируемый пост)
код чтобы в данной программе изменить запись.

файл lib.h
Код

#define MN 20
#include <iostream>
using namespace std;
//бвагЄвга  ¤ ­­ле
struct prodazha
{
int Nomer;        // Ќ®¬Ґа
char Name[20];        // Ќ Ё¬Ґ­®ў ­ЁҐ Їа®¤гЄжЁЁ
char Prodano[20];    // Љ®¬г Їа®¤ ­®
int Kol;         // ˜вгЄ ў Ї авЁЁ
double Cena;     // –Ґ­ 
char Data_p[11];    // „ в  Їа®¤ ¦Ё
};

void add(struct prodazha *ptr,int &n); //¤®Ў ў«Ґ­ЁҐ § ЇЁбЁ
void view(struct prodazha *ptr,int &n); //ўлў®¤ § ЇЁбҐ© ­  нЄа ­


//¤®Ў ў«Ґ­ЁҐ § ЇЁбЁ
void add(struct prodazha *ptr,int &n){
    if(n<MN){
        cout<<"„®Ў ў«Ґ­ЁҐ § ЇЁбЁ"<<endl;
        cout<<"Ќ®¬Ґа ®ЇҐа жЁЁ: "<<endl;
        cin >> ptr[n].Nomer;
        cout<<"Ќ Ё¬Ґ­®ў ­ЁҐ Їа®¤гЄжЁЁ: "<<endl;
        cin >> ptr[n].Name;
        cout<<"Љ®¬г Їа®¤ ­®: "<<endl;
        cin >> ptr[n].Prodano;
        cout<<"˜вгЄ ў Ї авЁЁ: "<<endl;
        cin >> ptr[n].Kol;
        cout<<"–Ґ­ : ";
        cin >> ptr[n].Cena;
        cout<<"„ в  Їа®¤ ¦Ё: "<<endl;
        cin >> ptr[n].Data_p;
        n++;
    }
}
//ўлў®¤ § ЇЁбҐ© ­  нЄа ­
void view(struct prodazha *ptr,int &n){
    cout<<"Џа®б¬®ва § ЇЁбҐ©"<<endl;
    cout<<"|Љ®¤| ь |     ’®ў а      |     Џа®¤ ­®   |Љ®«-ў® | –Ґ­  |   „ в     |"<<endl;
    cout<<"---------------------------------------------------------------------"<<endl;
    for(int i=0;i<n;i++){
        cout<<i+1<<ptr[i].Nomer<<ptr[i].Name<<ptr[i].Prodano<<ptr[i].Kol,ptr[i].Cena,ptr[i].Data_p;
        cout<<"---------------------------------------------------------------------"<<endl;
    }
    system("pause");
}
void izmen(struct prodazha *ptr,int &n){
    int i, kod;
    cout<<"Vvedite kod izmen. zapisi:"<<endl;
    cin >> kod;
    struct prodazha ptr2;
    cout<<"„®Ў ў«Ґ­ЁҐ § ЇЁбЁ"<<endl;
    cout<<"Ќ®¬Ґа ®ЇҐа жЁЁ: "<<endl;
    cin >> ptr2.Nomer;
    cout<<"Ќ Ё¬Ґ­®ў ­ЁҐ Їа®¤гЄжЁЁ: "<<endl;
    cin >> ptr2.Name;
    cout<<"Љ®¬г Їа®¤ ­®: "<<endl;
    cin >> ptr2.Prodano;
    cout<<"˜вгЄ ў Ї авЁЁ: "<<endl;
    cin >> ptr2.Kol;
    cout<<"–Ґ­ : ";
    cin >> ptr2.Cena;
    cout<<"„ в  Їа®¤ ¦Ё: "<<endl;
    cin >> ptr2.Data_p;
    ptr[kod]=ptr2;
    n--;
    system("pause");
    view(ptr,n);
}

main.cpp
Код

#include "lib.h"
int main(void){
    struct prodazha mas[MN];
    int num=0;
    char key;
    do{
        cout<<"ЊҐ­о"<<endl;
        cout<<"1. „®Ў ўЁвм § ЇЁбм"<<endl;
        cout<<"2. Џа®б¬®ва § ЇЁбҐ©"<<endl;
        cout<<"3. Izmenit zapis'"<<endl;
        cout<<"4. ‚л室"<<endl;
        cin>>key;
        switch(key){
            case '1':
                add(mas,num);
            break;
            case '2':
                view(mas,num);
            break;
            case '3':
                izmen(mas,num);
            break;
        }
    }while(key!='4');
    return 1;
}

тут вся программа, потому что я заменил все вызовы cprintf и gotoxy и getch и clrscr.
ну а зачем были подключены:
Код

#include <string.h>
#include <fcntl.h>
#include <io.h>

я вообще не знаю

Автор: mumikpokemon 17.6.2008, 12:32
Почему-то, она не изменяет, а удаляет последнюю запись.

Автор: rrrFer 17.6.2008, 13:15
mumikpokemon, 
исправил: (вот)
Код

void izmen(struct prodazha *ptr,int &n){
    int i, kod;
     struct prodazha ptr2;
    cout<<"Vvedite kod izmen. zapisi:"<<endl;
    cin >> kod;
    if(kod<n+1){
        cout<<"„®Ў ў«Ґ­ЁҐ § ЇЁбЁ"<<endl;
        cout<<"Ќ®¬Ґа ®ЇҐа жЁЁ: "<<endl;
        cin >> ptr2.Nomer;
        cout<<"Ќ Ё¬Ґ­®ў ­ЁҐ Їа®¤гЄжЁЁ: "<<endl;
        cin >> ptr2.Name;
        cout<<"Љ®¬г Їа®¤ ­®: "<<endl;
        cin >> ptr2.Prodano;
        cout<<"˜вгЄ ў Ї авЁЁ: "<<endl;
        cin >> ptr2.Kol;
        cout<<"–Ґ­ : ";
        cin >> ptr2.Cena;
        cout<<"„ в  Їа®¤ ¦Ё: "<<endl;
        cin >> ptr2.Data_p;
        ptr[kod-1]=ptr2;
    }
    //system("pause");
}

Автор: mumikpokemon 17.6.2008, 13:25
Теперь сразу в меню вовращается.

Автор: rrrFer 17.6.2008, 14:16
Цитата(mumikpokemon @  17.6.2008,  13:25 Найти цитируемый пост)
Теперь сразу в меню вовращается.

ну правильно - изменил запись и вернулся
PS.разберись хоть как работать с программой?

Автор: mumikpokemon 17.6.2008, 14:39
Да нет, возвращается когда вводишь номер записи которую хочешь изменить.

Автор: rrrFer 17.6.2008, 16:05
mumikpokemon, 
значит указываете неправильный код:
Код

if(kod<n+1)
-  вот из за этого возвращается, нумерация ведется с единицы
т.е. если создано например 8 записей, а вы хотите изменить например девятую, то конечно должна вылететь ошибка
можно бовавить вывод сообщения об ошибке:
Код

    if(kod<(n+1)&&kol>0){
        cout<<"„®Ў ў«Ґ­ЁҐ § ЇЁбЁ"<<endl;
        cout<<"Ќ®¬Ґа ®ЇҐа жЁЁ: "<<endl;
        cin >> ptr2.Nomer;
        cout<<"Ќ Ё¬Ґ­®ў ­ЁҐ Їа®¤гЄжЁЁ: "<<endl;
        cin >> ptr2.Name;
        cout<<"Љ®¬г Їа®¤ ­®: "<<endl;
        cin >> ptr2.Prodano;
        cout<<"˜вгЄ ў Ї авЁЁ: "<<endl;
        cin >> ptr2.Kol;
        cout<<"–Ґ­ : ";
        cin >> ptr2.Cena;
        cout<<"„ в  Їа®¤ ¦Ё: "<<endl;
        cin >> ptr2.Data_p;
        ptr[kod-1]=ptr2;
    }
    else
        cout<<"error"<<endl;

Автор: mumikpokemon 17.6.2008, 17:55
Огромное спасибо!!!!!!!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)