Программирование на языке Си

Автор: Пользователь скрыл имя, 15 Ноября 2011 в 13:38, курсовая работа

Описание работы

Задание: Написать программу, выполняющую следующие действия с базой данных:
1) Ввод записи с произвольным номером;
2) Вывод записи с заданным номером;
3) Сортировка записей по цене, по возрастанию;
4) Вывод всех записей в отсортированном виде на принтер;
5) Сохранение всех записей в файле;
6) Чтение базы из файла.

Работа содержит 1 файл

Курсовая.doc

— 39.00 Кб (Скачать)

    МИНИСТЕРСТВО  ОБРАЗОВАНИЯ И  НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

    ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

    НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ  ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ 
     

Кафедра Вычислительной техники 
 

Курсовая  работа

«Программирование на языке Си»

Вариант 2 
 
 
 
 
 
 

     Факультет: АВТФ                                                 Преподаватель:                                                                    

Группа: АВТ-022                                                  к.т.н. доцент Голодных Г.П 

Выполнил: Антонов А.П.  
 
 
 
 
 
 
 
 
 

Новосибирск, 2011 г.

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

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

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

3) Сортировка  записей по цене, по возрастанию;

4) Вывод всех  записей в отсортированном виде на принтер;

5) Сохранение  всех записей в файле;

6) Чтение базы  из файла. 

Вариант полей  базы данных D: название книги, количество страниц, цена.

Память выделять динамически. 

Листинг программы: 

#include <stdio.h>

#include <stdlib.h>

#include <locale.h>

#include <string.h> 

#define N 200 //кол-во записей

#define S 30 //длина имени книги(naz)

#define D 30 //максимальная длина имени файла 

struct bib

{

      char naz[S]; //Название книги

      int pg;  //кол-во страниц

      float cen;  //цена 

} *bd[N]; 

int n;//кол-во  внесенных записей 

//функция  сортировки массива  по цене, по возрастанию

      void sort ()

      {

            int i, j;

            struct bib *tmp;

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

                  for(j=i+1;j<n;j++)

                  if(bd[i]->cen>bd[j]->cen)

                  {

                        tmp=bd[i];

                        bd[i]=bd[j];

                        bd[j]=tmp;

                  } 

      } 

//функция  ввода i-ой записи  с клавиатуры

      void in(int i) 

      {

            bd[i]=(struct bib*)malloc(sizeof(struct bib));//выделение памяти под каждую новую запись 

            if (i>=N) {printf("Таблица переполнена\n"); return;} 

            printf("Название книги: ");

            fflush(stdin);

            gets(bd[i]->naz); 

            printf("Кол-во страниц: ");

            scanf("%d", &(bd[i]->pg)); 

            printf("Цена: ");

            scanf("%f", &(bd[i]->cen));

       

//функция  вывода i-ой записи

      void out(int i)

      {

            if (i>=n) {printf("Запись  с таким номером  на существует\n"); return;}

            setlocale(LC_ALL, "C");

            printf("%2d. %-40s %4d стр. %6.2f руб.\n", i+1, bd[i]->naz, bd[i]->pg, bd[i]->cen);

            setlocale(LC_ALL, "rus");

      } 

//функция  записи в файл

      void save (char p[])

      {

            int i;

            FILE *fl;

            fl=fopen(p, "w");  //открываем файл

            fprintf(fl, "%d\n", n); //пишем в файл кол-во записей

            for (i=0; i<n; i++)  //идем по записи

                  fprintf(fl, "%-40s %4d %4f\n", bd[i]->naz, bd[i]->pg, bd[i]->cen); //пишем в файл

            fclose(fl);

      } 

//функция  чтения из файла

      void load (char p[])

      {

            FILE *fl;

            char c;

            fl=fopen(p, "r");

            if (!fl) {printf("Файл не найден\n"); return;}

            fscanf(fl, "%d", &n); //читаем кол-во записей

            c=fgetc(fl);   //заплатка - читаем символ перевода строки

            if (n>N) n=N;

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

            {

                  int j;

                  bd[i]=(struct bib*)malloc(sizeof(struct bib));  //задаем указатель

                  c=getc(fl);

                  for (j=0; c!=' '; j++)

                  {

                        bd[i]->naz[j]=c;

                        c=fgetc(fl);

                  }

                  bd[i]->naz[j]=0;

                  fscanf(fl, "%d%f", &bd[i]->pg, &bd[i]->cen);

                  c=getc(fl);   //читаем конец строки

            }

            fclose(fl);

      } 

void main()

{

      setlocale(LC_ALL, "rus");

      int c, i;

      char s[D];

      while (1)

      {  

            printf("\n(6)-помощь ввода, (0)-выход: ");

            scanf("%d", &c);

            switch (c)

            {

            case 1:     //добавление записи

                  in(n++);

                  break;

            case 2:     //вывести на экран i-ю запись или все на принтер

                  printf("Введите  номер записи ('0' для  вывода всей таблицы  на принтер): ");

                  scanf("%d", &i);

                  if (i==0)

                        for(; i<n; i++) fprintf(stdprn,"%d. %-10s %-5d %-10d \n", i+1, bd[i]->naz, bd[i]->pg, bd[i]->cen);

                  else

                        out(--i);     

                  break;

            case 3:     //сохранить в файл

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

                  fflush(stdin);

                  gets(s);

                  save(s);

                  break;

            case 4:     //загрузить из файла

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

                  fflush(stdin);

                  gets(s);

                  load(s);

                  break;

            case 5:     //сортировка

                  sort();

                  break;

            case 6:     //Список команд

                  printf( "Список команд:\n"

                              "1 - Добавление записи\n"

                              "2 - Вывод указанной  записи на экран(0-все  на принтер)\n"

                              "3 - Сохранение базы  в файл\n"

                              "4 - Загрузка базы  из файла\n"

                              "5 - Сортировка\n"

                              "6 - Помощь\n");

                  break;

            case 0:     //выход

                  return;    

            }

      }

}

Информация о работе Программирование на языке Си