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

Автор работы: Пользователь скрыл имя, 18 Ноября 2013 в 19:50, курсовая работа

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

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

Прикрепленные файлы: 1 файл

KURSACh.docx

— 27.48 Кб (Скачать документ)

Министерство образования  и науки РФ

НГТУ

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

 

 

 

 

 

 

 

 

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

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

 

 

 

 

 

 

 

 

 

 

Таблица: 5                                  Преподаватель:

Вариант: 17                                      Голодных Геннадий Петрович

Факультет: АВТФ

Группа: АA-26

Студент: Мелешкин Кирилл

 

 

 

 

 

 

 

 

 

 

 

Новосибирск 2013

 

 

Задание:

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

заданий из таблицы 5.База данных должна быть организована в виде массива

структур. Память под массив структур выделяется статическая. Программа должна обеспечивать следующий набор

операций:

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

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

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

возрастания;

4) вывод всех записей в отсортированном порядке на экран или принтер;

5) чтение записей из файла;

6) сохранение всех записей в файле.

Для сортировки БД использовать массив указателей. Ввод и вывод данных

должен сопровождаться необходимыми подсказками.

Поля базы данных:

С – название пункта, расстояние, количество рейсов

вариант

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

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

№ поля

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

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

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

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

17

С

100

3

динамическое

Возрастает

Экран


 

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

#include <stdio.h>

#include <stdlib.h>

#include <locale.h>

#include <conio.h>

 

typedef struct{

int number; // Номер записи

char* name; // Название фирмы

int count; // Количество работников

int money;/* Уставной капитал */} base;

 

base* arr;

int n;

FILE *f;

 

//----------------------------------

 

// Функции для работы  с базой данных

 

int create_record()

{ printf("Номер записи:"); scanf("%d",&arr[n].number);

if (arr[n].number<1) arr[n].number=1;

if (arr[n].number>100) arr[n].number=100;

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

if (arr[i].number == arr[n].number) {printf("Запись с таким номером уже есть!\n"); return 0;}

arr[n].name = (char*)malloc(256*sizeof(char));

printf("Название фирмы:");

fflush(stdin);

gets(arr[n].name);

printf("Количество работнимков:"); scanf("%d",&arr[n].count);

printf("Уставной капитал:"); scanf("%d",&arr[n].money);

n++;

}

 

void print_record()

{ int number;

int notfound = 1;

printf("Введите номер записи:\n"); scanf("%d",&number);

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

{if (arr[i].number == number) {printf("%d.\nНазвание фирмы:%s\nКоличество работников:%d\nУставной капитал:%d\n",arr[i].number, arr[i].name, arr[i].count, arr[i].money);

notfound = 0;}}

if (notfound == 1) printf("Запись не найдена!\n");

}

 

int load_base()

{ f = fopen("base.txt","r+");

if (f==NULL) {printf("Файл не найден!\n"); return 0; }

int j;

while(!feof(f))  

{

fscanf (f, "%d", &arr[n].number);

arr[n].name = (char*)malloc(sizeof(char)*256);

fscanf (f, "%s", arr[n].name);

fscanf (f, "%d", &arr[n].count);

fscanf (f, "%d", &arr[n].money);

n++;

}

fclose(f);

printf("Загрузка завершена!\n");

}

 

int sort() // Отсортировать таблицу по уставному капиталу в порядке убывания

{ base temp;

int i, j;

if (n == 0) {printf("Нечего сортировать!\n"); return 0;}

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

    for( j = n-1; j > i; j-- ) {    

      if ( arr[j-1].money < arr[j].money ) {

  temp=arr[j-1]; arr[j-1]=arr[j]; arr[j]=temp;}

}}

printf("Отсортированно!\n\n");

}        

 

void printall()

{ int j;

printf("\n");

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

if (arr[i].name != NULL)

printf("%d.\nНазвание фирмы:%s\nКоличество работников:%d\nУставной каптал:%d\n",arr[i].number, arr[i].name, arr[i].count, arr[i].money);}

}

 

 

void save()

{ f=fopen("base.txt","w");

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

fprintf(f,"\n%d %s %d %d",arr[i].number,arr[i].name,arr[i].count,arr[i].money);

printf("Успешно записано\n");

fclose(f);

}

 

//---------------

 

// Тело программы

 

void main()

{

setlocale(LC_ALL,"");

int k;

n=0;

arr = (base*)malloc(sizeof(base)*200);

if (arr == 0) {printf("Память не выделена!"); exit(0);}

else {

while(1) {

printf("1 - Ввод записи\n2 - Вывод записи\n3 - Сортировка\n4 - Вывод всех записей\n5 - Сохранить в файл\n6 - Чтение из файла\n7 - Выход\n"); scanf("%d",&k);

switch(k) {

case 1: {create_record();

 break;}

case 2: {print_record();

 break;}

case 3: {sort();

 break;}

case 4: {printall();

 break;}

case 5: {save();

 break;}

case 6: {load_base();

 break;}

case 7: {exit(0);}

default:{printf("Неверная команда!\n");

break;}

}

}

_getch();

}

free(arr);

}

 

 

1 - Ввод записи

2 - Вывод записи

3 - Сортировка

4 - Вывод всех записей

5 - Сохранить в файл

6 - Чтение из файла

7 - Выход

1

Номер записи:1

Название фирмы:Apple

Количество работников:1500000

Уставной капитал:5000

1 - Ввод записи

2 - Вывод записи

3 - Сортировка

4 - Вывод всех записей

5 - Сохранить в файл

6 - Чтение из файла

7 - Выход

1

Номер записи:2

Название фирмы:Rich

Количество работников:50000

Уставной капитал:1000

1 - Ввод записи

2 - Вывод записи

3 - Сортировка

4 - Вывод всех записей

5 - Сохранить в файл

6 - Чтение из файла

7 - Выход

1

Номер записи:3

Название фирмы:Samsung

Количество работников:600000

Уставной капитал:3000

1 - Ввод записи

2 - Вывод записи

3 - Сортировка

4 - Вывод всех записей

5 - Сохранить в файл

6 - Чтение из файла

7 - Выход

3

Отсортированно!

 

1 - Ввод записи

2 - Вывод записи

3 - Сортировка

4 - Вывод всех записей

5 - Сохранить в файл

6 - Чтение из файла

7 - Выход

4

 

1.

Название фирмы:Apple

Количество работников:1500000

Уставной каптал:5000

3.

Название фирмы:Samsung

Количество работников:600000

Уставной каптал:3000

2.

Название фирмы:Rich

Количество работников:50000

Уставной каптал:1000

Для продолжения нажмите любую  клавишу . . .


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