Решения прикладных задач с реализацией автоматизированной обработки экономической информации

Автор работы: Пользователь скрыл имя, 15 Мая 2013 в 20:06, курсовая работа

Краткое описание

Разработать программу на С++ с использованием статических массивов структур. Обработка данных должна включать следующие функции:
1) Просмотр существующей базы данных (чтение данных осуществляется из файла);
2) Редактирование базы данных (с сохранением изменений в файле);
3) Дополнение базы данных новыми записями ( с сохранением в файле);
4) Удаление записей из базы данных (с сохранением в файле) ;
5) Поиск в базе данных ( по одному и двум поисковым признакам) с выводом на экране найденных записей или сообщения о неуспешном поиске;

Вложенные файлы: 1 файл

Пояснительная.doc

— 380.50 Кб (Скачать файл)

  }mm[8];              /* определение массива банков */

int main(void) {

 struct znak x;       /* рабочая переменная */

 int n,v;                     /* количество элементов в массиве */

 int i, j;                  /* текущие индексы в массиве */

 int m;                   /* индекс минимального элемента */

 char y_n;

FILE *m_file;

char filename[] = "znak.bin";

while (true){

printru ("Выберите действие: \n");

 printru ("1: Создать файл \n");

 printru ("2: Добавить данные \n");

 printru ("3: Удалить данные \n");

 printru ("4: Вывести данные \n");

 printru ("5: Сортировка \n");

 printru ("6: Средний возраст \n");

 printru ("7: Поиск по именам\n");

 printru ("8: Поиск по номеру\n");

 printru ("9: Выход \n");

cin>>v;

if (v==1) {

   m_file = fopen(filename, "w+");

   if ( m_file==0 ) {

     printru ( "Создать файл не удалось!\n");

     getch();

     return(1);

   }

   fclose(m_file);

}

 

if (v==2) {

   m_file = fopen(filename, "ab");

   if ( m_file==0 ) {

     printru ( "Открыть файл не удалось!\n");

     getch();

     return(1);

   }

   int tt;

   do {

     tt=0;

     // Ввод данных

     printru ("Введите: фамилию, имя, знак зодиака, телефон, день, месяц, год рождения: \n");

     cin>> x.surname;

     cin>> x.name;

     cin>> x.znak;

     cin>> x.tel;

     cin>> x.day;

     cin>> x.month;

     cin>> x.year;

     fwrite((char *) &x, sizeof(znak),1,m_file);

     printru ("Продолжить(y/n)? \n");

     cin>>y_n;

     if (y_n=='y'||y_n=='Y') tt=1;

   } while(tt==1);

   fclose(m_file);

}

 

if (v==3) {

 

    int n, i, f;

    m_file = fopen(filename, "r");

    fseek(m_file, 0, SEEK_END);

   n = ftell(m_file) / sizeof(znak);

   znak *mm = new znak[n];

   fseek(m_file, 0, SEEK_SET);

   fread(mm, sizeof(znak), n, m_file);

   fclose(m_file);

    printru( "Введите строку, которую нужно удалить: ");

   cin>> f;

  for (i=f; i<n-1; i++) {

      strcpy(mm[i].surname,mm[i+1].surname);

      strcpy(mm[i].name,mm[i+1].name);

      strcpy(mm[i].znak,mm[i+1].znak);

      mm[i].tel=mm[i+1].tel;

      mm[i].day=mm[i+1].day;

      mm[i].month=mm[i+1].month;

      mm[i].year=mm[i+1].year; }

 

     n=n-1;

    fopen(filename,  "w");

    fwrite(mm, sizeof(znak), n, m_file);

    fclose(m_file);

 

 

}

 

if (v==4) {

   m_file = fopen(filename, "r");

   printru ("--------------------------------------------------------------------------------\n");

   printru ("|                                  Знаки                                       |\n");

   printru ("|------------------------------------------------------------------------------|\n");

   printru ("|      фамилия     |   имя    |    знак   | телефон  |  день  |  месяц  |  год |\n");

   printru ("|                  |          |           |          |        |         |      |\n");

   printru ("|------------------|----------|-----------|----------|--------|---------|------|\n");

   fseek(m_file, 0, SEEK_END);

   n = ftell(m_file) / sizeof(znak);

   znak *mm = new znak[n];

   fseek(m_file, 0, SEEK_SET);

   // Функция fread позволяет считать весь файл за одно обращение

   fread(mm, sizeof(znak), n, m_file);

   fclose(m_file);

   for(i=0;i<n;i++)

   cout<<"|"<<setw(18)<<mm[i].surname<<"|"<<setw(10)<<mm[i].name<<"|"<<setw(11)<<mm[i].znak<<"|"<<setw(10)<<mm[i].tel<<"|"<<setw(8)<<mm[i].day<<"|"<<setw(9)<<mm[i].month<<"|"<<setw(6)<<mm[i].year<<"|"<<"\n";

   cout<<"-----------------------------------------------------------------------------\n";

}

 

if (v==5) {

    m_file = fopen(filename, "r");

    fseek(m_file, 0, SEEK_END);

   n = ftell(m_file) / sizeof(znak);

   znak *mm = new znak[n];

   fseek(m_file, 0, SEEK_SET);

   fread(mm, sizeof(znak), 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].month>mm[j].month) m=j;

    if (m>i) {

      strcpy(x.surname,mm[i].surname);

      strcpy(x.name,mm[i].name);

      strcpy(x.znak,mm[i].znak);

      x.tel=mm[i].tel;

      x.day=mm[i].day;

      x.month=mm[i].month;

      x.year=mm[i].year;

 

      strcpy(mm[i].surname,mm[m].surname);

      strcpy(mm[i].name,mm[m].name);

      strcpy(mm[i].znak,mm[m].znak);

      mm[i].tel=mm[m].tel;

      mm[i].day=mm[m].day;

      mm[i].month=mm[m].month;

      mm[i].year=mm[m].year;

 

      strcpy(mm[m].surname,x.surname);

      strcpy(mm[m].name,x.name);

      strcpy(mm[m].znak,x.znak);

      mm[m].tel=x.tel;

      mm[m].day=x.day;

      mm[m].month=x.month;

      mm[m].year=x.year;

      }

    }

    fopen(filename,  "w");

    fwrite(mm, sizeof(znak), n, m_file);

    fclose(m_file);

 

    {m_file = fopen(filename, "r");

   printru ("--------------------------------------------------------------------------------\n");

   printru ("|                                  Знаки                                       |\n");

   printru ("|------------------------------------------------------------------------------|\n");

   printru ("|      фамилия     |   имя    |    знак   | телефон  |  день  |  месяц  |  год |\n");

   printru ("|                  |          |           |          |        |         |      |\n");

   printru ("|------------------|----------|-----------|----------|--------|---------|------|\n");

   fseek(m_file, 0, SEEK_END);

   n = ftell(m_file) / sizeof(znak);

   znak *mm = new znak[n];

   fseek(m_file, 0, SEEK_SET);

   // Функция fread позволяет считать весь файл за одно обращение

   fread(mm, sizeof(znak), n, m_file);

   fclose(m_file);

   for(i=0;i<n;i++)

   cout<<"|"<<setw(18)<<mm[i].surname<<"|"<<setw(10)<<mm[i].name<<"|"<<setw(11)<<mm[i].znak<<"|"<<setw(10)<<mm[i].tel<<"|"<<setw(8)<<mm[i].day<<"|"<<setw(9)<<mm[i].month<<"|"<<setw(6)<<mm[i].year<<"|"<<"\n";

   cout<<"-----------------------------------------------------------------------------\n";

}

 

if (v==6) {

    int n, i, f, k, sum=0, sr, flag=0;

    m_file = fopen(filename, "r");

    fseek(m_file, 0, SEEK_END);

   n = ftell(m_file) / sizeof(znak);

   znak *mm = new znak[n];

   fseek(m_file, 0, SEEK_SET);

   fread(mm, sizeof(znak), n, m_file);

   fclose(m_file);

 

   char znak[15];

    printru ("Введите название знака: \n");

    cin>>znak;

    for (int i=0; i<n; i++)   {

    if (strcmp(mm[i].znak,znak));

    else {printru ("Средний возраст людей: \n");

    k=k+1;

    sum=sum+(2012-mm[i].year);

    sr=sum/k;

    cout<<sr<<"\n";

    flag=1;}}

    if (flag==0) printru ("Таких людей в списке нет. \n");

 

 

   fopen(filename,  "w");

   fwrite(mm, sizeof(znak), n, m_file);

   fclose(m_file);

}

 

if (v==7) {

    int n, i, f;

    m_file = fopen(filename, "r");

    fseek(m_file, 0, SEEK_END);

    n = ftell(m_file) / sizeof(znak);

    znak *mm = new znak[n];

    fseek(m_file, 0, SEEK_SET);

    fread(mm, sizeof(znak), n, m_file);

    fclose(m_file);

 

      char name1[1];

      printru ("Введите первую букву имени: \n");

      cin>>name1;

      for (int i=0; i<n; i++)

      if(strncmp(name1,mm[i].name,1))

      cout<<mm[i].surname<<" "<<mm[i].name<<"\n";

      }

 

    fopen(filename,  "w");

    fwrite(mm, sizeof(znak), n, m_file);

    fclose(m_file);

}

 

if (v==8) {

    int n, i, f;

    m_file = fopen(filename, "r");

    fseek(m_file, 0, SEEK_END);

    n = ftell(m_file) / sizeof(znak);

    znak *mm = new znak[n];

    fseek(m_file, 0, SEEK_SET);

    fread(mm, sizeof(znak), n, m_file);

    fclose(m_file);

 

      int tel1;

      printru ("Введите  номер: \n");

      cin>>tel1;

      for (int i=0; i<n; i++) {

      if(mm[i].tel==tel1)

      cout<<mm[i].surname<<"\n";}

 

    fopen(filename,  "w");

    fwrite(mm, sizeof(znak), n, m_file);

    fclose(m_file);

 

}

 

if (v==9) {

getch() ;

return 1;

}

}

}

 

 

 

 

 

 

Приложение 3. Тестирование программы.

 

  1. Главное меню.

Протестировали  главное меню программы. Оно открывается автоматически. Пункты из меню открываются при вводе необходимой цифры (номера пункта меню).

 

  1. Создание файла

При выборе пункта меню 1 осуществляется создание файла BANK.txt

 

 

  1. Добавление записи

При выборе пункта 2 можно добавить запись в файл znak.txt.

В нашем случае добавится запись:

Фамилия: Петров

Имя: Вася

Знак зодиака: стрелец

Номер телефона: 2554585

День рождения: 29

Месяц рождения: 11

Год рождения: 1999

 

  1. Удаление строки

При выборе пункта 3 и вводе номера строки выполняется удаление заданной строки из текстового файла znak.txt.

Номер строки: 1

Запись удалена.

 

  1. Вывод на экран

При выборе пункта 4 производится вывод таблицы на экран.

 

 

  1. Сортировка по месяцу рождения:

При выборе пункта 5 происходит сортировка по месяцу рождения.

 

 

7. Средний  возраст людей

При выборе пункта 6  и вводе знака зодиака можно узнать средний возраст человека.

Выбранный нами знак зодиака: ?

Средний возраст: ?

 

СЮДА ВСТАВИШЬ СКРИН

 

 

В случае отсутствия такого города в списке будет выведена ошибка: «Таких людей в списке нет».

 

 

 

  1. Поиск людей по первой букве имени

При выборе пункта 7 и вводе первой буквы имени производится поиск людей с выбранным знаком зодиака.

 

 

СЮДА  ВСТАВИШЬ СКРИН

 

 

  1. Поиск фамилий по номеру телефона.

При выборе пункта 8 и вводе номера телефона можно узнать фамилию человека.

 
 

  1. Выход из программы

При выборе пункта 9 производится выход из программы.

 

 

 

 


Информация о работе Решения прикладных задач с реализацией автоматизированной обработки экономической информации