Написание программы, выполняющей действия с базой данных

Страницы работы

4 страницы (Word-файл)

Содержание работы

Министерство Образования Российской Федерации
Новосибирский Государственный Технический Университет

Кафедра Автоматики

Курсовая работа по информатике

Язык СИ

Вариант: 3

Группа: АП-318

Студент: Иванчиков И.В.

Преподаватель: Голодных Г.П.

г. Новосибирск. 2004 г.


Задание: Написать программу, выполняющую действия с базой данных. База данных должна быть организована в виде массива структур. Память под массив структур выделяется статически. Количество записей ограничено. Программа обеспечивает следующий набор операций:

1. Ввод записи с произвольным номером

2.Вывод записи с заданным номером

3.Сортировка записей по заданному полю в порядке возрастания

4.Вывод всех записей в отсортированном порядке на принтер

Поля записи БД (элементы структуры)

Кол-во записей в БД

№ поля

для сортировки

Выделение памяти под структуры

Тип сортировки

Устройство для вывода записей

3

Фамилия, год рождения, оклад

200

2

статически

По убыванию

Принтер

Код программы:

#include <stdio.h>

#include <malloc.h>

#include <graph.h>

#define dlina 20

#define kolvo_zapisey 200

struct baza           //создаем структуру baza

{

      char surname[dlina];

      int year;

      int oklad;

}lichnost[kolvo_zapisey],*bak[kolvo_zapisey];

main()                //главная программа

{

      int i;

      char klavisha;

      met:

      _setvideomode(_DEFAULTMODE);        //очистка экрана

      printf("1. Добавить запись\n");

      printf("2. Просмотреть записи\n");

      printf("3. Сортировать\n");

      printf("4. Печать\n");

      printf("5. Просморт базы данных\n");

      printf("6. Выход\n");

      printf("Выберете пункт меню:");

      klavisha = getch();           //ожидаем нажатия клавиши

      _setvideomode(_DEFAULTMODE);

      switch (klavisha)

      {

            case '1':            //если нажата клавиша 1,то вызываем функцию добавления записи

            {

                  printf("\nВведите номер ячейки:");

                  scanf("%d",&i);

                  dobavlenie_zapisi(i-1);

                  break;

            }

            case '2':            //если нажата клавиша 2,то вызываем функцию промотра записи

            {

                  printf("\nВведите номер ячейки:");

                  scanf("%d",&i);

                  prosmotr_zapisi(i-1);

                  getch();

                  break;

            }

            case '3':            //если нажата клавиша 3,то вызываем функцию сортировки

            {

                  sortirovka();

                  break;

            }

            case '4':            //если нажата клавиша 4,то вызываем функцию печати

            {

                  pechat();

                  break;

            }

            case '5':            //если нажата клавиша 5,то вызываем функцию просмотра базы

            {

                  prosmotr_bazi();

                  getch();

                  break;

            }

            case '6':            //если нажата клавиша 6,то выходим из программы

            {

                  exit(0);

            }

      }

      goto met;

}

dobavlenie_zapisi(int i)      //добавление записи в базу данных

{

      printf("Введите фамилию: ");

      scanf("%s",&lichnost[i].surname);

      printf("Год рождения: ");

      scanf("%d",&lichnost[i].year);

      printf("Оклад сотрудника: ");

      scanf("%d",&lichnost[i].oklad);

}

prosmotr_zapisi(int i)     //просмотр записи с заданным номером

{

      printf("Фамилия: %s", lichnost[i].surname);

      printf("\nГод рождения: %d", lichnost[i].year);

      printf("\nОклад: %d", lichnost[i].oklad);

      printf("\nНажмите <Enter> для продолжения...");

}

sortirovka()    //сортировка базы данных по году рождения

{

      int i;

      struct baza *temp[kolvo_zapisey];

      for(i=0;i<kolvo_zapisey-1;i++) bak[i]=&lichnost[i];

      i=0;

      while(i<(kolvo_zapisey-1))

      {

            if (lichnost[i+1].year<lichnost[i].year)

            {

                  *temp=bak[i];

                  bak[i]=bak[i+1];

                  bak[i+1]=*temp;

                  i=-1;

            }

            i++;

      }

      for(i=0;i<kolvo_zapisey;i++) lichnost[i]=*bak[i];

}

pechat()          //печать на принтере

{

      int i;

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

      {

            fprintf(stdprn,"\nNo.%d",i+1);

            fprintf(stdprn,"\nФамилия: %s",lichnost[i].surname);

            fprintf(stdprn,"\nГод рождения: %d",lichnost[i].year);

            fprintf(stdprn,"\nОклад: %d\n",lichnost[i].oklad);

      }

}

prosmotr_bazi()           //просмотр базы данных с выводом 20 записей на страницу

{

      int i;

      printf("\n");

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

      {

            printf("%3d: %20s %20d %20d \n", i+1, lichnost[i].surname, lichnost[i].year, lichnost[i].oklad);

            if ((i+1)%20==0)

            {

                  printf("\nНажмите <Enter> для продолжения...");

                  getch();

                  _setvideomode(_DEFAULTMODE);

            }

      }

}

Похожие материалы

Информация о работе