20 / 20 / 0
Регистрация: 26.10.2008
Сообщений: 77
|
|
1 | |
Помогите с бинарным файлом20.11.2008, 15:44. Показов 1966. Ответов 1
Метки нет Все метки)
(
Есть задачка звучит так:
Вы являетесь владельцем склада металлических изделий и нуждаетесь в инвентаризации, которая сказала бы вам, сколько всего различных изделий вы имеете, какое количество каждого Жиз них у вас на руках и стоимость каждого из них. Напишите программу, которая бы создавала файл произвольного доступа «hardware.dat» на сотню пустых записей, позволяла бы вводить данные по каждому изделию, давала бы вам возможность получать список всех изделий, удалять записи по изделиям, которых у вас уже нет, и позволяла бы обновлять любую информацию в файле. Задача не сложная,я не могу реализовать удаление, может кто подскажет алгоритм хоть буду очень признателен Задача написана, но само удаление нет(там наработка выделена красным, она не доделана просто мысли были) ![]() Код
#include <iostream> #include <conio.h> #include <cstdio> #include <iomanip> using namespace std; const int l_name=15; //const int r=100; struct magazin{ int nom; char name[l_name+1]; int kol; double cena; }; void main() { setlocale (LC_CTYPE,"rus"); // подключение русского языка magazin inst; FILE* fo; int g; if((fo=fopen("nyny.bat","r+b"))==NULL) { cout<<"Создан файл для записи данных"<<endl; if((fo=fopen("nyny.bat","w+b"))==NULL) cout<<"ERROR!!!!!!!!!!!!!!"<<endl; getch();system("cls"); } do { cout<<" МЕНЮ нажмите:\n"; cout<<"1 - Добавить к перечню"<<endl; cout<<"2 - Удалить из перечня"<<endl; cout<<"3 - Просмотр перечня"<<endl; cout<<"4 - Для выхода"<<endl; g=getch(); if(g=='1') { system("cls"); fseek(fo,0,SEEK_END); //int size=ftell(fo); while(1) { if(ftell(fo)/sizeof(inst)>5) { cout<<"Лимит деталей"<<endl; getch(); break;} cout<<"Введите номер инструмента"<<endl; cin>>inst.nom; cout<<"Введите название инструмента"<<endl; cin>>inst.name; cout<<"Введите количество инструмента"<<endl; cin>>inst.kol; cout<<"Введите цену инструмента"<<endl; cin>>inst.cena; fwrite(&inst,sizeof(inst),1,fo); cout<<"Для продолжения ввода (y)"<<endl; g=getch(); if(g!='y') { system("cls"); break; } system("cls"); } } [COLOR=Red]else if(g=='2') { esystem("cls"); int kod; int n,i=0; bool f=false; do { cout<<"Введите код инструмента "; cin>>kod; fseek(fo,0,SEEK_END); n=ftell(fo)/sizeof(inst); if(n==0) { cout<<"У вас нет ни одной записи"<<endl; break; } fseek(fo,0,SEEK_SET); while((++i)<=n) { fread(&inst,sizeof(inst),1,fo); if(inst.nom==kod) { //fread(&inst,sizeof(inst),1,fo); fseek(fo, (i)*sizeof(inst),SEEK_SET); fwrite(&inst,sizeof(inst),1,fo); f=true; cout<<"Инструмент из базы удален"<<endl<<endl; break; } } if(f==false)cout<<"Инструмента с таким кодом нет"<<endl<<endl; cout<<"Для повтора нажмите (y)"<<endl; g=getch(); system("cls"); }while(g=='y'); }[/COLOR] else if(g=='3') { system("cls"); int i=0; fseek(fo,0,SEEK_END); int n=ftell(fo)/sizeof(inst); fseek(fo,0,SEEK_SET); cout<<"Просмотр перечня"<<endl<<endl; cout<<"Номер"<<setw(10)<<"Название"<<setw(12)<<"Количество"<<setw(8)<<"Цена"<<endl; while((n--)!=0) { fread(&inst,sizeof(inst),1,fo); cout<<inst.nom<<setw(10)<<inst.name<<setw(10)<<inst.kol<<setw(10)<<inst.cena<<endl; } getch(); system("cls"); } system("cls"); }while(g!='4'); fclose(fo); } У администрации прошу прощение # нажимал в редакторе но чтото не зароботало.. И вообще можно ведь было зделать и подсказки на кнопочках в редакторе...
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
20.11.2008, 15:44 | |
Ответы с готовыми решениями:
1
Проблемы с бинарным файлом Работа с бинарным файлом задача с бинарным файлом Работа с бинарным файлом |
20 / 20 / 0
Регистрация: 26.10.2008
Сообщений: 77
|
|
24.11.2008, 00:22 [ТС] | 2 |
Мда сложно видимо окозалось но я доделал... утром осенило
![]() Код
else if(g=='2') { system("cls"); int kod; int n,i=0; bool f=false; int del=0; do { fseek(fo,0,SEEK_END); n=ftell(fo)/sizeof(inst); if(n==0) { cout<<"У вас нет ни одной записи"<<endl;getch(); break; } cout<<"Введите код инструмента "; cin>>kod; fseek(fo,0,SEEK_SET); //cout<<"n="<<n<<endl; for(i=0;i<n;i++) { //cout<<"i="<<i<<endl; fread(&Del_inst[i],sizeof(inst),1,fo); //cout<<"Del_inst[i-1].nom="<<Del_inst[i-1].nom<<endl; //cout<<"Del_inst[i-1].name="<<Del_inst[i-1].name<<endl; //cout<<"Del_inst[i-1].kol="<<Del_inst[i-1].kol<<endl; //cout<<"Del_inst[i-1].cena="<<Del_inst[i-1].cena<<endl; //getch(); if(Del_inst[i].nom==kod) { ++del; f=true; cout<<"Инструмент удален\n"; if(n==1)break; if(i+1==n)break; i--; } } if(f==false)cout<<"Инструмента с таким кодом нет"<<endl<<endl; fclose(fo); fo=fopen("nyny.bat","w+b"); //cout<<"n="<<n<<endl; //cout<<"i="<<i<<endl; //cout<<"del="<<del<<endl; for(int j=0;j<n-del; j++) { fwrite(&Del_inst[j],sizeof(inst),1,fo); } del=0; f=false; cout<<"Для повтора нажмите (y)"<<endl; g=getch(); system("cls"); }while(g=='y'); }
0
|
24.11.2008, 00:22 | |
Помогаю со студенческими работами здесь
2
Работа с бинарным файлом Работа с бинарным файлом Работа со структурой и бинарным файлом
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |