Автор: Пользователь скрыл имя, 15 Ноября 2011 в 13:38, курсовая работа
Задание: Написать программу, выполняющую следующие действия с базой данных:
1) Ввод записи  с произвольным номером;
2) Вывод записи  с заданным номером;
3) Сортировка  записей по цене, по возрастанию;
4) Вывод всех  записей в отсортированном виде на принтер;
5) Сохранение  всех записей в файле;
6) Чтение базы  из файла.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
НОВОСИБИРСКИЙ 
ГОСУДАРСТВЕННЫЙ 
ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ 
 
Кафедра 
Вычислительной техники 
 
Курсовая работа
«Программирование на языке Си»
Вариант 
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<
                  if(bd[i]->
{
                        tmp=
                        bd[i]=
                        bd[j]=
                  } 
      } 
//функция ввода 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]=(
c=getc(fl);
for (j=0; c!=' '; j++)
{
                        bd[i]-
                        c=
}
                  bd[i]->naz[
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)-
scanf("%d", &c);
switch (c)
{
case 1: //добавление записи
in(n++);
break;
case 2: //вывести на экран i-ю запись или все на принтер
                  printf("
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(--
break;
case 3: //сохранить в файл
                  printf("
                  fflush(
gets(s);
save(s);
break;
case 4: //загрузить из файла
                  printf("
                  fflush(
gets(s);
load(s);
break;
case 5: //сортировка
sort();
break;
case 6: //Список команд
                  printf( "
                              
                              
                              
                              
                              
                              
break;
case 0: //выход
return;
}
}
}