Тема: Видалення рядка за номером
Добрий вечір!
Маю завдання розробити програму для інтернет магазину ноутбуків.
Останнє, що залишилося це видалення записів з таблиці (за порядковим номером).
Написав таку функцію, але вона не працює.
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <cmath>
#include <fstream>
#include <windows.h>
#include <iomanip>
using namespace std;
struct MAG {
char nazva[25];
int type1;
int type2;
int op;
float cina_bez;
int term;
float cina_zag;
};
struct MAG tov;
char str[9];
FILE *file;
int size = sizeof(struct MAG);
void delete_num() {
FILE* file1;
int n=1, dln, p=1; char dn[3];
file = fopen("file", "rb");
Tabl_shapka();
while (fread(&tov, size, 1, file)==1) {
Radok(n);
n++; }
Tabl_end();
fclose(file);
while (p) {
cout<<endl<<"Введіть номер рядка: ";
cin.clear();
cin.sync();
dln = 0;
gets(dn);
dn[2]='\0';
dln = atoi(dn);
if(dln<=0 or dln>n-1) cout<<endl<<"Неправильне число";
else p=0; }
file = fopen("file", "rb");
file1 = fopen("file1", "wb");
n=1;
while (fread(&tov, size, 1, file)==1) {
if (n!=dln) fwrite(&tov, size, 1, file1);
n++; }
fclose(file1);
fclose(file);
n=1;
remove("file");
rename("file1", "file");
cout<<endl<<"Таблиця після видалення: "<<endl;
file = fopen("file", "rb");
Tabl_shapka();
while (fread(&tov, size, 1, file)==1) {
Radok(n);
n++; }
Tabl_end();
fclose(file);
getch();
}
void vidalennya() {
int z;
z = File_isn_pust();
if (z==1){ cout<<endl<<"Файл не відкрито. Можливо, файлу з таким ім'ям не існує.";
getch();
return;
}
if (z==2){ cout<<endl<<"Файл пустий.";
getch();
fclose(file);
return;
}
if (z==0) fclose(file);
int p=1;
char pm;
while (p) { system("CLS");
cout<<endl<<"Видалити запис: ";
cout<<endl<<"1. За номером рядка";
cout<<endl<<"2. За фірмою ноутбуку";
cout<<endl<<"3. Головне меню";
cout<<endl<<"Оберіть: ";
cin>>pm;
if (pm=='1' or pm=='2' or pm=='3') {
switch(pm) {
case '1': { delete_num(); break; }
//case '2': { delete_za_keriv(); break; }
case '3': { p=0;; break; } }
}
else { cout<<endl<<"Неправильно обрано!";
getch(); }
}
}
int main() {
char p_m;
do {
system("CLS");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout << "Головне меню:";
cout<<endl<<"1.Додавання даних про поставки товарів";
cout<<endl<<"2.Перегляд усіх поставок";
cout<<endl<<"3.Наявність ноутбуку у продажу за уведеною операційною системою";
cout<<endl<<"4.Пошук найдорожчих ноутбуків" ;
cout<<endl<<"5.Сортування" ;
cout<<endl<<"6.Видалення";
cout<<endl<<"7.Вихід з програми" ;
cout << endl << endl << "Оберіть пункт меню: ";
cin >> p_m;
switch (p_m) {
case'1': {Dodav(); break; }
case'2': {Usi_tov(); break; }
case'6': {vidalennya(); break;}
case'7': {cout << endl << "Кінець роботи"; break; }
default: {cout << endl << endl << "Обрано невірно!";
getch(); }
}
} while (p_m != '7');
getch();
return 0;
}