#include <iostream> #include <fstream> #include<limits> #define DIM 10 #define SLEN 70 using namespace std;
struct Application { char name[SLEN]; char developer[SLEN]; int code; double price; int year; }; int setData(Application A[], int n); void showConsole(const Application* pA); void outData(Application A[], int n); void inDataYear(int y);
int main() { setlocale(LC_ALL,""); cout<<"Приложение позволяет ввести и сохранить информацию\n"; cout<<"о программных продуктах в файле\n"; cout<<"Максимальное количество записей за один сеанс - 10\n"; cout<<"Чтобы закончить раньше - введите пустую строку в поле <Название>\n";
Application *pApp = new Application[DIM]; int fact = setData(pApp, DIM);//фактически введенное к-во записей за сеанс
system("cls"); cout<<"Вами введено "<<fact<<" записей\n\n"; for (int i = 0; i < fact; i++) showConsole(&pApp[i]);
cout<<"Идет запись в файл...\n"; outData(pApp,fact); delete [] pApp;
system("pause"); system("cls"); int release; cout<<"Выборка по всему файлу. Критерий: год выпуска приложений\n"; cout<<"Введите год выпуска\n"; cin>>release; inDataYear(release);
system("pause"); return 0; }
int setData(Application A[], int n) { int i = 0; for (i = 0; i < n; i++) { cout<<"\n\n"; cout << "НАЗВАНИЕ:\t\t"; cin.getline(A[i].name, SLEN); if(strlen(A[i].name)<1) break; cout << "ФИРМА-РАЗРАБОТЧИК:\t"; cin.getline(A[i].developer, SLEN); cout<<"КОД:\t"; cin>>A[i].code; cout <<"ЦЕНА:\t"; cin >> A[i].price; cout<<"ГОД:\t"; cin>>A[i].year; cin.ignore(numeric_limits<streamsize>::max(), '\n'); } return i; }
void outData(Application A[], int n) { ofstream dataOut; dataOut.open("Application.dat",ofstream::app); if (dataOut.is_open()) { for(int i=0;i<n;i++) dataOut.write((char *)&A[i],sizeof(Application)); dataOut.close(); cout<<"Все записи успешно занесены в файл\n"; } else cout<<"Не удалось открыть файл для записи\n"; }