Информационно-поисковый справочник «Жидкокристаллические индикаторы»

Цель данной курсовой работы по предмету «Информатика и Информационные технологии» состоит в том, чтобы разработать на языке C информационно-поисковый справочник «Жидкокристаллические индикаторы», который является систематизации знаний по программированию, полученных в течение лекционных и лабораторных занятий, а также работе с дополнительной литературой по созданию программ на языке программирования С.

2015-08-28

44.48 KB

1 чел.


Поделитесь работой в социальных сетях

Если эта работа Вам не подошла внизу страницы есть список похожих работ. Так же Вы можете воспользоваться кнопкой поиск


Содержание

[1] Содержание

[2] Введение

[3] 1 Создание информационно-поискового справочника

[3.1] 1.1 Постановка задачи

[3.2] 1.2 Структура данных с указанием типов

[3.3] 1.3 Общая структурная схема программы

[3.4] 1.4 Описание специальных алгоритмов

[3.4.1] 1.4.1 Метод вставок

[3.4.2] 1.4.2 Метод выбора

[3.5] 1.5 Описание назначения функции

[3.6] 1.6 Результаты работы программы

[4] Заключение

[5] Список используемой литературы


Введение

Цель данной курсовой работы по предмету  «Информатика и Информационные технологии» состоит в том, чтобы разработать на языке Cинформационно-поисковый справочник «Жидкокристаллические индикаторы», который является систематизации знаний по программированию, полученных в течение лекционных и лабораторных занятий, а также работе с дополнительной литературой по созданию программ на языке программирования С.

Язык "C" - это универсальный язык программирования, для которого характерны экономичность выражения, современный поток управления и структуры данных, богатый набор операторов.

Язык "C" не является ни языком "очень высокого уровня", ни "большим" языком, и не предназначается для некоторой специальной области применения, но отсутствие ограничений и общность языка делают его более удобным и эффективным для многих задач, чем языки, предположительно более мощные.


1 Создание информационно-поискового справочника

1.1 Постановка задачи

Информационно-поисковый справочник «Жидкокристаллические индикаторы».

В программе реализованы следующие функции:

1. Создание справочника в памяти (Ввод данных) .

2. Вывод справочника на экран.

3. Сортировка методом выбора по названию ЖКИ по возрастанию.

4. Сортировка методом вставокпо цене ЖКИ по убыванию.

5. Сохранение справочника в бинарный файл.

6. Открытие справочника из бинарного файла.

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

Таблица 1.1 -  Характеристики ЖКИ

Название

Напряжение питания, В

Ток питания, А

Цвет

Цена, руб

LCD125C1

5

1.8

Красный

100

LCD125D1

10

1

Желтый

150.5

LCD125A1

12

1.8

Синий

90.1

LCD127CC1

11

1

Белый

123

LCD15CX1

10

1.8

Оранжевый

56.8

LCD151A3

6

1

Зеленый

1200


1.2 Структура данных с указанием типов

Структура — это набор элементов, которые могут иметь различные типы.

Структуру можно представить себе как запись, состоящую из нескольких полей или элементов. Структуры обеспечивают удобный способ структурной организации связанных по смыслу переменных.

structjki { //используемая структура с полями

char name[20];

 char color[10];

int volt;

float price, tok;

};

structjkiarr[20]; //массив структуры


1.3 Общая структурная схема программы

Рисунок 1.1


1.4 Описание специальных алгоритмов

1.4.1 Метод вставок

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

Начало       d c a b

Проход 1     c d a b

Проход 2     a c d b

Проход 3     a b c d

В отличие от пузырьковой сортировки и сортировки посредством выбора, количество сравнений в сортировке вставками зависит от изначальной упорядоченности списка. Если список уже отсортирован, количество сравнений равно n - 1; в противном случае его производительность является величиной порядка n2.

Вообще говоря, в худших случаях сортировка вставками настолько же плоха, как и пузырьковая сортировка и сортировка посредством выбора, а в среднем она лишь немного лучше. Тем не менее, у сортировки вставками есть два преимущества. Во-первых, ее поведение естественно. Другими словами, она работает меньше всего, когда массив уже упорядочен, и больше всего, когда массив отсортирован в обратном порядке. Поэтому сортировка вставками — идеальный алгоритм для почти упорядоченных списков. Второе преимущество заключается в том, что данный алгоритм не меняет порядок одинаковых ключей. Это значит, что если список отсортирован по двум ключам, то после сортировки вставками он останется упорядоченным по обоим.

Несмотря на то, что количество сравнений при определенных наборах данных может быть довольно низким, при каждой вставке элемента на свое место массив необходимо сдвигать. Вследствие этого количество перемещений может быть значительным.

1.4.2 Метод выбора

Может быть как устойчивый, так и неустойчивый. На массиве из n элементов имеет время выполнения в худшем, среднем и лучшем случае Θ(n2), предполагая что сравнения делаются за постоянное время.

Шаги алгоритма:

  1.  находим номер минимального значения в текущем списке
  2.  производим обмен этого значения со значением первой неотсортированной позиции (обмен не нужен, если минимальный элемент уже находится на данной позиции)
  3.  теперь сортируем хвост списка, исключив из рассмотрения уже отсортированные элементы

Для реализации устойчивости алгоритма необходимо в пункте 2 минимальный элемент непосредственно вставлять в первую неотсортированную позицию, не меняя порядок остальных элементов.


1.5 Описание назначения функции

Файл «inputData.c» В данном файле содержится функция, которая осуществляет ввод данных.  После её запуска входим в цикл while, в котором первым делом проверяется место в базе, если база заполнена, то на экран выводится соответствующее сообщение. В противном случае нам предлагается ввести данные, которые записываются в соответствующие поля нашей структуры. После этого нам предлагается продолжить ввести данные либо завершить ввод. При некорректном вводе программа сообщает об ошибке. Далее представлен листинг файла:

#include "main.h"

externintnum;

externstructjkiarr[20];

voidinputData(){

int i, k, n, a, index, letter;

while(1){

 if(num == 20){

  printf("\nFull base of data\n");

  break;

 }

 printf("\nCount of records?");

 scanf("%d", &num);

 while(getchar() != '\n');

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

  index = 0;

  while(1){

   printf("Name jki №%d?", i + 1);

   while ((letter = getchar( )) != '\n')

    arr[i].name[index++] = letter;

   arr[i].name[index] = '\0';

   if(strlen(arr[i].name) == 0){

    printf("Incorrect data!\n");

    continue;

   }

   break;  

  }

  index = 0;

  while(1){    

   printf("Color jki №%d?", i + 1);

   while ((letter = getchar( )) != '\n')

    arr[i].color[index++] = letter;

   arr[i].color[index] = '\0';

   if(strlen(arr[i].color) == 0){

    printf("Incorrect data!\n");

    continue;

   }

   break;  

  }

  while(1){    

   printf("Volt jki №%d?", i + 1);

   if((scanf("%d", &arr[i].volt)) != 1 || arr[i].volt <

0){

    while(getchar() != '\n');

    printf("Incorrect data!\n");

    continue;

   }

   else{

    while(getchar() != '\n');

   }

   break;

  }

  while(1){  

   printf("Tokjki №%d?", i + 1);

   if((scanf("%f", &arr[i].tok)) != 1 || arr[i].tok< 0){

    while(getchar() != '\n');

    printf("Incorrect data!\n");

    continue;

   }

   else{

    while(getchar() != '\n');

   }

   break;

  }     

  while(1){  

   printf("Price jki №%d?", i + 1);

   if((scanf("%f", &arr[i].price)) != 1 || arr[i].price <

0){

    while(getchar() != '\n');

    printf("Incorrect data!\n");

    continue;

   }

   else{

    while(getchar() != '\n');

   }

   break;

  }

  printf("===================================\n");      

 }

 break;

}

return;

}

Файл «outputData.c». Здесь содержится функция, которая  выводит весь справочник на экран. Листинге файла:

#include "main.h"

externintnum;

externstructjkiarr[20];

voidoutputData(){

int i;

printf("===============================================\n");

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

 printf("№=%d\n", i + 1);

 printf("Name: %s\n", arr[i].name);

 printf("Color: %s\n", arr[i].color);

 printf("Volt: %d\n", arr[i].volt);

 printf("Tok: %.f\n", arr[i].tok);

 printf("Price: %.f\n", arr[i].price);

 printf("===============================================\n");

}

}

Файл «searchData.c». В данном файле содержится функция поиска записи в справочнике по названию. Листинг файла:

#include "main.h"

externstructjkiarr[20];

externintnum;

voidsearchData(){

int i;

char ss2[20];

if(num> 1){

 while(1){

  printf("Name for search?\n");

  fgets(ss2, 20, stdin);

  if(ss2[0] == '\0'){

   printf("Incorrect data!\n");

   continue;

  }

  else{

   break;

  }

 }

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

  if(strcmp(ss2, arr[i].name) == 0){

   printf("№=%d\n", i + 1);

   printf("Name: %s\n", arr[i].name);

   printf("Color: %s\n", arr[i].color);

   printf("Volt: %3d\n", arr[i].volt);

   printf("Tok: %f\n", arr[i].tok);

   printf("Price: %f\n", arr[i].price);

  }

 }

}

else{

 getchar();

 printf("No data!\n");

 }

return;

}

Файл «sortDataByName.c». Содержит сортировку по названию. Листинг файла:

#include"main.h"

externstructjkiarr[20];

externintnum;

voidsortDataByName(){

int i, j;

structjkitmp;

for (i = 0; i <num - 1; i++) {

int min = i;

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

  if((strcmp(arr[j].name, arr[min].name)) < 0)

min = j;

if (min != i) {

tmp = arr[min];

arr[min] = arr[i];

arr[i] = tmp;

       }

   }

printf("\nDone!\n");

return;

}

Файл «sortDataByPrice.c». Сортировка по цене. Листинг файла:

#include"main.h"

externstructjkiarr[20];

externintnum;

voidsortDataByPrice(){

structjkitempArr;

int i, a;

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

 for(a = 0; a < num-1; a++){

  if(arr[a + 1].price >arr[a].price){

   tempArr = arr[a];

   arr[a] = arr[a+1];

   arr[a+1] = tempArr;

  }

}

printf("\nDone!\n");

return;

}

Файл «loadData.c».  Данная функция  производит загрузку ранее сохраненного на диске справочника в оперативную память компьютера. После запуска функции предлагается ввести название загружаемого файла.  Листинг файла:

#include "main.h"

externintnum;

externstructjkiarr[20];

voidloadData(){

int a=0, q, i;

char e, k[15];

   FILE *f;

while(1){

 printf("File name?");

 fgets(k, 15, stdin);

 for(i = 0; k[i] != '\n'; i++)

  continue;

 k[i] = '\0';

 if((f=fopen(k, "r+b")) == NULL){

  printf("Error open file!\n");

  getchar();

  return;

 }

 else{

  break;

 }

}

fread(&num, sizeof(int), 1, f);

for(q = 0; q <num; q++)

 fread(&arr[q], sizeof(structjki), 1, f);

fclose(f);

printf("Done!\n");

}

Файл «saveData.c». Данная функция осуществляет запись справочника в файл. Листинг файла:

#include"main.h"

externstructjkiarr[20];

externintnum;

voidsaveData(){

char k[15];

int i = 0;

FILE *f;

printf("File name?");

fgets(k, 15, stdin);

for(i = 0; k[i] != '\n'; i++)

 continue;

k[i] = '\0';

if((f = fopen(k, "wb")) == NULL){

 printf("Error open file!\n");

 return;

}

fwrite(&num, sizeof(int), 1, f);

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

 fwrite(&arr[i], sizeof(structjki), 1, f);

fclose(f);

printf("Done!\n");

return;

}

Файл «main.c». В самом начале программы происходит вход в бесконечный цикл, который завершится только, если будет выбран 8 пункт меню (выход из программы). В начале каждого бесконечного цикла, предлагается выбрать пункт меню, путём ввода с клавиатуры его порядкового номера. Каждая ветвь соответствует пункту меню с порядковым номером n, и в ней выполняется соответствующая функция. Листинг файла:

#include <main.h>

intnum = 0;

structjkiarr[20];

int main(intargc, char *argv[])

{

setlocale(LC_ALL, "Rus");

int a;

while(1){

 printf("1. Input data\n");

 printf("2. Output data\n");

 printf("3. Sort by name\n");

printf("4. Sort by price\n");

printf("5. Search by name\n");

 printf("6. Save as\n");

 printf("7. Open file\n");

printf("8. Exit\n");

printf("\nNumber?");

scanf("%d", &a);

if(getchar() == '\n'){

  switch(a){

   case 1:

    inputData();

    break;

   case 2:

    if(num == 0){

     printf("\nNo data!\n");

  continue;

  }

   outputData();

   break;

   case 3:

    if(num == 0){

  printf("\nNo data!\n");

  continue;

  }

  sortDataByName();

   break;

   case 4:

    if(num == 0){

  printf("\nNo data!\n");

  continue;

  }

   sortDataByPrice();

   break;

   case 5:

   if(num == 0){

  printf("\nNo data!\n");

  continue;

  }

   searchData();

   break;

   case 6:

    if(num == 0){

     printf("\nNo data!\n");

  continue;

  }

   saveData();

   break;

  case 7:

   loadData();

   break;

   case 8:

    return 0;

   default:

    printf("\nIncorrect number!\n");

    continue;

  }

 }

 else{

  printf("Incorrect number!");

  while(getchar() != '\n');

 }

}

return 0;

}

Файл «main.h».  Заголовочный файл.  В нем содержатся все подключаемые библиотеки, прототипы функций, объявления структуры. Листинг файла:

#include <stdio.h>

#include <string.h>

#include <locale.h>

voidinputData();

voidoutputData();

voidsearchData();

voidsortDataByName();

voidsortDataByPrice();

voidsaveData();

voidloadData();

structjki {

char name[20];

char color[10];

int volt;

float price, tok;

};


1.6 Результаты работы программы

Рисунок 1.2 – Главное меню

Рисунок 1.3 – Ввод данных

Рисунок 1.4 – Вывод данных

Рисунок 1.5 – Сортировка данных


Рисунок 1.6 – Запись данных в файл

Рисунок 1.7 – Чтение данных из файла


Заключение

В результате выполнения курсовой работы была разработана программа на языке С для заданной тематики.

Т. к. язык C- довольно удобный инструмент для получения быстрых  и компактных программ, использующих эффективно доступные ресурсы машины, он налаживает определённые требования на разработчика: в отличие от «классических» языков инженерного программирования (Фортран и т.д.) , язык С способен на базовом уровне выполнять только простейшие операции, характерные для большинства процессорных платформ  (собственно с помощью чего достигается его эффективность). Вследствие этого инженер-программист, использующий для решения вычислительной проблемы язык C, должен обладать чёткой культурой программирования и ясно понимать процессы, происходящие в машине, при выполнении составленной им программы.


Список используемой литературы

1.  Герберт Шилдт / Полный справочник С.- М. 2006.- 504 с.  

2.  Цырлин, М. И. Основные требования к оформлению пояснительных записок курсовых и дипломных проектов (работ) : учеб.-метод. пособие / М. И. Цырлин. – Гомель :БелГУТ, 2007. − 31 с.

3.   С.Прата./Язык программирования С.-М. Издательство «Диасофт», 2002. – 896 с.

4. О.П. Гораев, Ю.П. Лыч. Текстовый процессор МSWORD. Практикум по компьютерным технологиям. БелГУТ, 2003. — 68 стр.

5. Интернет ресурс http://easylab.net.ua/sortirovka.

2



 

Другие похожие работы, которые могут вас заинтересовать.
12993. Справочник стран мира и городов 3.21 MB
  Основная цель курсовой работы заключается в закреплении навыков самостоятельного использования теоретического материала и практического опыта для решения задач проектирования и разработки ПО систем различного назначения. Достоинства среды: является строго типизированным языком и имеет более простой и ясный синтаксис в отличие от языка C что уменьшает число ошибок и повышает скорость разработки; полная поддержка ООП за исключением множественного наследования; среда поддерживает множество технологий и механизмов для работы с БД....
20222. Информационный портал «Справочник нумизмата» 1.92 MB
  Целью курсового проекта по дисциплине «Программная инженерия» является – разработка автоматизированной системы предметно-ориентированного содержания. Для ее решения был создан информационный портал «Справочник нумизмата», который позволяет пользователю найти всю необходимую информацию по монетам и коллекционерам, а именно по монетам: страну, номинал, год выпуска, количество выпущенных монет, особенности. По коллекционерам: страну, имя, контактные координаты, наличие редких монет в коллекции. Собственную коллекцию.
4247. Работа с Деревом конфигурации. Создание объектов конфигурации Справочник и Документ 3.89 MB
  Конфигуратор системы 1С:Предприятие является специальным режимом запуска 1С и предназначен для разработчиков, программистов. В этом режиме разработчик создает или корректирует структуру базы данных, программные модули, производит административные работы.
6187. Информационно-измерительные системы 97.21 KB
  Для этого применяется специальный вид средства измерения – информационно-измерительные системы ИИС. В зависимости от назначения ИИС подразделяются на: системы сбора измерительной информации от исследуемого объекта; такие системы часто называют просто измерительными системами; системы автоматического контроля предназначенные для контроля за работой разного рода машин агрегатов или технологических процессов; системы технической диагностики предназначенные для выявления технической неисправности различных изделий; телеизмерительные...
6728. ИНФОРМАЦИОННО-ПСИХОЛОГИЧЕСКАЯ БЕЗОПАСНОСТЬ ЛИЧНОСТИ 19.94 KB
  Информационно-психологическая безопасность Этот аспект информационной безопасности связан в первую очередь с воздействием недоброкачественной информации на психологическое состояние личности что несёт угрозу интеллектуальному духовно-нравственному состоянию человека а также угрозу его физическому здоровью. Выделяют несколько видов так называемой вредоносной информации могущей нанести серьёзный вред психике человека. Какие же неблагоприятные информационные факторы привели к тому что возникли угрозы для личности Основной из них является...
12236. ИНФОРМАЦИОННО-АНАЛИТИЧЕСКИЕ ПРОДУКТЫ И УСЛУГИ 69.21 KB
  Дело в том что в теории управления давно доказан факт функционирования любых социальных систем библиотек образовательных учреждений или учреждений здравоохранения в условиях ограниченных ресурсов. Имеющегося объема финансирования или зарабатываемых средств наличной материальнотехнической базы и кадровых ресурсов всегда недостаточно для достижения целей организации. И пусть публичные или академические библиотеки США Германии или Великобритании финансируются в...
8198. Создание информационно-программного комплекса 737.21 KB
  В процессе функционирования предприятия заключаются двухсторонние единовременные договора с поставщиками. После отгрузки поставляемые товары поступают на склад в количестве, указанном в заказе
5996. КОРРЕЛЯЦИОННЫЙ АНАЛИЗ В ИНФОРМАЦИОННО-ИЗМЕРИТЕЛЬНОЙ ТЕХНИКЕ 712.85 KB
  Практическое решение о детерминированном или случайном характере процесса обычно принимается исходя из возможности или не возможности его воспроизведения при заданных условиях. Если многократное повторение опыта дает одинаковые результаты...
17496. Автоматизация измерений. Информационно-измерительные приборы и системы 610.27 KB
  Естественная физиологическая ограниченность возможностей человека в восприятии и обработке больших объемов измерительной информации стала одной из основных причин появления таких средств измерений как информационно-измерительные приборы виртуальные приборы и измерительные системы ИС. Автоматизированными средствами...
10996. Разработка и принятие УР на основе информационно-коммуникационных технологий 354.68 KB
  МЕТОДИЧЕСКАЯ РАЗРАБОТКА для проведения лекции № 8 по дисциплине УПРАВЛЕНЧЕСКИЕ РЕШЕНИЯ Тема 8: Разработка и принятие УР на основе информационнокоммуникационных технологий. Для студентов специальности: 080507 Менеджмент организации Одобрена на заседании Методического совета...
© "REFLEADER" http://refleader.ru/
Все права на сайт и размещенные работы
защищены законом об авторском праве.