Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <iostream>
- #include <conio.h>
- #include <string.h>
- #include <fstream>
- #include <iomanip>
- #include <windows.h>
- #include <locale.h>
- #include <math.h>
- using namespace std;
- /* Описание прототипов функций */
- void printru(char* s);
- int sozd_f(char* filename);
- int dob_dan(char* filename);
- void vivod_dan(char* filename);
- void sort_dan(char* filename);
- void inf_banki(char* filename);
- void poisk_bank(char* filename);
- void poisk_date(char* filename);
- /* Описание структуры, которая представляет монастырь */
- struct bn {
- char name[20]; /* название банка */
- char city[10]; /* город местонахождения */
- int lic; /* номер лицензии */
- int date[3]; /* дата лицензии */
- }
- /* Основная программа*/
- ; int main() {
- setlocale(LC_ALL, "Russian");
- int v;
- char filename[] = "BANK.bin";
- while (true) {
- printf("Выберите действие: \n");
- printf("1: создать файл \n");
- printf("2: добавить данные \n");
- printf("3: вывести данные на экран \n");
- printf("4: отсортировать по номеру лицензии банка \n");
- printf("5: информация о банках в определенном городе \n");
- printf("6: поиск банков, получивших лицензию в определенный год \n");
- printf("7: поиск даты лицензии банка по его названию \n");
- printf("8: выйти \n");
- cin>>v;
- switch (v) {
- case 1: sozd_f(filename); break;
- case 2: dob_dan(filename); break;
- case 3: vivod_dan(filename); break;
- case 4: sort_dan(filename);
- vivod_dan(filename); break;
- case 5: void inf_banki(char* filename);
- vivod_dan(filename); break;
- case 6: void poisk_bank(char* filename);
- vivod_dan(filename); break;
- case 7: void poisk_date(char* filename);
- vivod_dan(filename); break;
- case 8: _getch(); return 1;
- default: printf("нeт такого пункта меню\n");
- };
- }
- _getch();
- }
- //функция создания файла
- int sozd_f(char* filename) {
- FILE *m_file;
- m_file = fopen (filename, "w+");
- if (m_file == 0) {
- printf("Создать файл не удалось!\n");
- _getch();
- return(1);
- }
- fclose(m_file);
- }
- //функция добавления данных
- int dob_dan(char* filename) {
- FILE *m_file;
- char y_n;
- int tt;
- struct bn x;
- m_file = fopen(filename, "ab");
- if (m_file == 0) {
- printf("Открыть файл не удалось!\n");
- _getch();
- return(1);
- }
- do {
- int tt = 0;
- // Ввод данных
- printf("Введите: название, школу, количество, площадь монастыря\n");
- cin >> x.name;
- cin >> x.city;
- cin >> x.lic;
- cin >> x.date[0] >> x.date[1] >> x.date[2];
- fwrite((char *)&x, sizeof(bn), 1, m_file);
- printf("Продолжить(y/n)?\n");
- cin >> y_n;
- if (y_n == 'y' || y_n == 'Y') tt = 1;
- }
- while (tt == 1);
- fclose(m_file);
- }
- //функция вывода данных на экран
- void vivod_dan(char* filename) {
- FILE *m_file;
- m_file = fopen(filename, "r");
- printf("-------------------------------------------------------------------------------\n");
- printf("| BANK |\n");
- printf("|------------------------------------------------------------------------------|\n");
- printf("| Nazvanie Banka | City | Nomer licenzii | Data licenzii |\n");
- printf("| | | | |\n");
- printf("|----------------------|-----------|------------------------|------------------|\n");
- fseek(m_file, 0, SEEK_END);
- int n = ftell(m_file) / sizeof(bn);
- bn *mm = new bn[n];
- fseek(m_file, 0, SEEK_SET);
- // Функция fread позволяет считать весь файл за одно обращение
- fread(mm, sizeof(bn), n, m_file);
- fclose(m_file);
- for (int i = 0; i < n; i++)
- cout << "|" << setw(22) << mm[i].name << "|" << setw(11) << mm[i].city << "|" << setw(24) << mm[i].lic << "|" << setw(2) << mm[i].date[0] << "." << setw(2) << mm[i].date[1] << "." << setw(2) << mm[i].date[2] << "|" << "\n";
- cout << "-------------------------------------------------------------------------------\n";
- }
- //функция сортировки
- void sort_dan(char* filename) {
- FILE *m_file;
- struct bn x;
- int n, i, j, m;
- m_file = fopen(filename, "r");
- fseek(m_file, 0, SEEK_END);
- n = ftell(m_file) / sizeof(bn);
- bn *mm = new bn[n];
- fseek(m_file, 0, SEEK_SET);
- fread(mm, sizeof(bn), n, m_file);
- fclose(m_file);
- for (i = 0; i < n - 1; i++) {
- m = i;
- for (j = i + 1; j < n; j++)
- if ((mm[m].lic, mm[j].lic) > 0) m = j;
- if (m > i) {
- x = mm[i];
- mm[i] = mm[m];
- mm[m] = x;
- }
- }
- fopen(filename, "w");
- fwrite(mm, sizeof(bn), n, m_file);
- fclose(m_file);
- }
- //функция поиска банков в определенном городе
- void poisk_bank (char* filename) {
- FILE *m_file;
- struct bn x;
- int n, i, j, m;
- m_file = fopen(filename, "r");
- fseek(m_file, 0, SEEK_END);
- n = ftell(m_file) / sizeof(bn);
- bn *mm = new bn[n];
- fseek(m_file, 0, SEEK_SET);
- fread(mm, sizeof(bn), n, m_file);
- fclose(m_file);
- while (true)
- {
- char city[10];
- printf("Введите город\n");
- cin >> city;
- if ((city, "***")) break;
- for (i = 0; i < n; i++)
- {
- if (mm[m].city == city)
- {
- printf("Банк - "); cout << mm[i].name << "/n";
- printf("Номер лицензии: "); cout << mm[i].lic << "/n";
- printf("Дата лицензии: "); cout << mm[i].date[0] << mm[i].date[1] << mm[i].date[1] << "\n";
- }
- }
- if (mm[m].city != city)
- {
- printf("Таких банков нет");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement