Диплом, курсовая, контрольная работа
Помощь в написании студенческих работ

Создание информационно-поискового справочника на языка С/С++

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Как уже говорилось выше, главной целью курсовой работы является закрепление знаний полученных при изучении дисциплины. Для достижения необходимого результата необходимо решить ряд поставленных перед нами задач, которые вошли в одну программу, вобравшую в себя всю полноту полученных ранее знаний. При разработке приложения был использован язык программирования С. Задачей курсовой работы является… Читать ещё >

Создание информационно-поискового справочника на языка С/С++ (реферат, курсовая, диплом, контрольная)

http://www..ru/

http://www..ru/

  • Создание информационно-поискового справочника
  • Содержание
  • Введение
    • 1. Постановка задачи
    • 2. Структура данных с указанием типов
    • 3. Общая структурная схема программы
      • 3.1 Назначение прототипов функций
    • 4. Описание специальных алгоритмов
      • 4.1 Сортировка методом вставок
      • 4.2 Сортировка методом Шелла
      • 4.3 Сортировка методом быстрой сортировки
    • 5. Листинг функций программы
      • 5.1 Make-файл
      • 5.2 My.h
      • 5.3 Main.c
      • 5.4 Menu.c
      • 5.5 Vvod.c
      • 5.6 Vivod.c
      • 5.7 Vstavka. c
      • 5.8 SortChella. c
      • 5.9 Sort. c
      • 5.10 Qsort.c
      • 5.11 Qsort1.c
      • 5.12 Del.c
      • 5.13 Per.c
      • 5.14 Cor.c
      • 5.15 Save.c
      • 5.16 New.c
  • Заключение
  • Список использованной литературы
  • Приложение
  • Введение
  • Стремительное развитие информационных технологий привело к тому, что вычислительная техника проникла во все без исключения сферы деятельности человека. В связи с этим возникла необходимость в огромном количестве специалистов создающих программное обеспечение. На сегодняшний день практически каждый, кто занимается обслуживанием установок питающихся электроэнергией (будь то АТС, электронасос или микропроцессорная система) должен обладать навыками программиста.
  • В сферах производства на которые ориентируется обучение на ЭТ факультете наиболее актуальны языки С/С++. Целью данного курсового проекта является закрепление навыков разработки проектов на гибриде этих языков. В будущем, конечно, этого делать не рекомендуется, но для того, чтобы лучше овладеть этими языками, написав один курсовой проект — сойдет и этот способ написания программ.
  • Язык «C» (произносится «си») — это универсальный язык программирования, для которого характерны экономичность выражения, современный поток управления и структуры данных, богатый набор операторов. Язык «C» не является ни языком «очень высокого уровня», ни «большим» языком, и не предназначается для некоторой специальной области применения. но отсутствие ограничений и общность языка делают его более удобным и эффективным для многих задач, чем языки, предположительно более мощные.
  • Язык «C», первоначально предназначавшийся для написания операционной системы «UNIX» на ЭВМ DEC PDP-11, был разработан и реализован на этой системе Деннисом Ричи. Операционная система, компилятор с языка «C» и по существу все прикладные программы системы «UNIX» (включая все программное обеспечение, использованное при подготовке этой книги) написаны на «C». Коммерческие компиляторы с языка «C» существуют также на некоторых других ЭВМ, включая IBM SYSTEM/370, HONEYWELL 6000, INTERDATA 8/32. Язык «C», однако, не связан с какими-либо определенными аппаратными средствами или системами, и на нем легко писать программы, которые можно пропускать без изменений на любой ЭВМ, имеющей «C» -компилятор. По опыту, «C» показал себя приятным, выразительным и разносторонним языком на широком множестве разнообразных программ. Его легко выучить, и он не теряет своих качеств с ростом опыта программиста.
  • 1. Постановка задачи
  • Цель, которая ставится перед нами в ходе выполнения курсовой работы по дисциплине «Информатика» — это закрепление объёма знаний, как теоретических, так и практических, которые мы получить во время лекций и проводимых тематических лабораторных работ. За три семестра мы получили достаточно большое количество информации и данная курсовая работа призвана помочь нам систематизировать его, достичь не только поставленных целей, но и изучить новые способы решения прикладных задач. Этого можно достичь только совмещая получение теоретических знаний с развитием практических навыков. Поэтому для достижения поставленной цели необходимо будет обратиться и к дополнительной литературе.
  • Как уже говорилось выше, главной целью курсовой работы является закрепление знаний полученных при изучении дисциплины. Для достижения необходимого результата необходимо решить ряд поставленных перед нами задач, которые вошли в одну программу, вобравшую в себя всю полноту полученных ранее знаний. При разработке приложения был использован язык программирования С. Задачей курсовой работы является разработка и реализация на языке С информационно-поискового справочника «Светодиоды».
  • В данном пункте я приведу текст программы, который разбит на несколько файлов, выполняющих ту или иную функцию. Написание программы осуществлялось в текстовом редакторе mc операционной среды Unix. Сборка проводилась с помощью утилиты make. Код Makefile приводится вначале листинга программы.

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

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

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

d. Сортировка методом вставок по полю строкового типа.

e. Сортировка методом Шелла по числовому полю.

f. Сортировка методом быстрой сортировки по числовому полю.

g. Удаление данных с указанным номером.

h. Перемещение указанной записи на новую позицию.

i. Корректировка данных с указанным номером.

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

k. Задание нового имени файла для открытия.

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

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

Структура — это совокупность переменных, объединенных под одним именем. С помощью структур удобно размещать в смежных полях связанные между собой элементы информации. Объявление структуры создает шаблон, который можно использовать для создания ее объектов (то есть экземпляров этой структуры). Переменные, из которых состоит структура, называются членами. (Члены структуры еще называются элементами или полями).

struct baza{

char titile[30]; };/*поле названия*/

float svet; /*вещественное поле*/

float Ipr; /*вещественное поле*/

float Tk; /*вещественное поле*/

float Uob; /*вещественное поле*/

};

3. Общая структурная схема программы Рисунок 3.1 — Общая структурная схема программы.

3.1 Назначение прототипов функций

char menu (); прототип функции меню и возвращение символа определяющий пункт меню в соответствии с надписями в функции. При запуске программы выполняется проверка на наличие введённых аргументов, которые определяют имя файла, с которым она будет работать, или сохранять данные или файл, из которого нужно будет эти данные загрузить.

int vvod (struct baza *w); прототип функции ввода данных в структуру baza и возвращает чиcло заполненных структур.

void vivod (int kol, struct baza *w); прототип функции вывода данных на экран .

void per (struct baza *b); прототип функции перемещения указанной записи.

void cor (int kol, struct baza *w); прототип функции корректировки записи по справочнику в функцию передаются два аргумента число структур заполненных и указатель структуры в котором нужно произвести поиск

void vstavka (struct baza *w, int kol); прототип функции сортировки методом вставок.

void sortChella (int kol, struct baza *w); прототип функции сортировки методом Шелла, в функцию передаются два аргумента, число элементов заполненных и указатель на структуру которую надо отсортировать

void save (int kol, struct baza *w, char *name); прототип функции сохранения, принимают число элементов, указатель структуры и имя файла в который нужно cохранить данные.

int new (int kol, struct baza *w, char *name); прототип функции задания нового имени файла для открытия, принимает число элементов, указатель на структуру которую предаем в функцию из файла c имени name.

int del (int kol, struct baza *w); прототип функции удаления элемента из справочника переданного в функцию и возвращает число элементов структур.

void sort (int kol, struct baza *w); прототип функции методом быстрой сортировки, в функцию передаются два аргумента, число элементов заполненных и указатель на структуру которую надо отсортировать.

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

4.1 Сортировка методом вставок

Сортировка вставками — простой алгоритм сортировки. Хотя этот алгоритм сортировки уступает в эффективности более сложным (таким как быстрая сортировка), у него есть ряд преимуществ:

· эффективен на небольших наборах данных;

· эффективен на наборах данных, которые уже частично отсортированы;

· это устойчивый алгоритм сортировки (не меняет порядок элементов, которые уже отсортированы);

· может сортировать список по мере его получения;

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

4.2 Сортировка методом Шелла

Сортировка Шелла — алгоритм сортировки, являющийся усовершенствованным вариантом сортировки вставками. Идея метода Шелла состоит в сравнении элементов, стоящих не только рядом, но и на определённом расстоянии друг от друга. Невзирая на то, что сортировка Шелла во многих случаях медленнее, чем быстрая сортировка, она имеет ряд преимуществ:

· отсутствие потребности в памяти под стек;

· отсутствие деградации при неудачных наборах данных;

Алгоритм состоит в том, что исходная последовательность разделяется на ряд групп, каждая из которых упорядочивается методом простой вставки. В процессе упорядочивания размеры групп возрастают до тех пор, пока все элементы не войдут в упорядоченную группу. Группой называется подмножество элементов последовательности, номера которых образуют арифметическую прогрессию с разностью d (d называется шагом группы).

4.3 Сортировка методом быстрой сортировки

Быстрая сортировка является одной их самых эффективных сортировок. Метод основан на подходе «разделяй-и-властвуй» .

Достоинства:

· Один из самых быстродействующих (на практике) из алгоритмов внутренней сортировки общего назначения.

· Прост в реализации.

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

алгоритм файл программа справочник

5. Листинг функций программы

5.1 Make-файл

Make-файл предназначен для описывания отношения между файлами моей программы и содержит команды для обновления каждого файла. Файл описаний позволяет утилите make отслеживать зависимости между файлами, составляющими программную систему.

makefile

svet: main. o cor.o del. o menu.o new. o per.o qsort. o qsort1.o save. o sort.o sortChella. o vivod.o vstavka. o vvod.o

gcc main. o cor.o del. o menu.o new. o per.o qsort. o qsort1.o save. o sort.o sortChella. o vivod.o vstavka. o vvod.oo svet

main.o: main. c my.h

gccc main. c

cor.o: cor. c my.h

gccc cor. c

del.o: del. c my.h

gccc del. c

menu.o: menu my. h

gccc menu. c

new.o: new. c my.h

gccc new. c

per.o: per. c my.h

gccc per. c

qsort.o: qsort. c my.h

gccc qsort. c

qsort1.o: qsort1. c my.h

gccc qsort1. c

save.o: save. c my.h

gccc save. c

sort.o: sort. c my.h

gccc sort. c

sortChella.o: sortChella. c my.h

gccc sortChella. c

vivod.o: vivod. c my.h

gccc vivod. c

vstavka.o: vstavka. c my.h

gccc vstavka. c

vvod.o: vvod. c my.h

gccc vvod. c

clear:

rmrf *.0 svet

5.2 My. h

Заголовочный файл предназначен для определения именованных констант, прототипов функций, директив препроцессора.

my.h

#include

#include

#include

#include

#define KOL 20

struct baza{

char title[30];

float svet;

float Ipr;

float Tk;

float Uob;

};

char menu (void);

int vvod (struct baza *w);

void vivod (int kol, struct baza *w);

void vstavka (struct baza *w, int kol);

void sortChella (int kol, struct baza *w);

void sort (int kol, struct baza *w);

int del (int kol, struct baza *w);

void per (struct baza *w);

void cor (int kol, struct baza *w);

void save (int kol, struct baza *w, char *name);

int new (int kol, struct baza *w, char *name);

void qsort2(struct baza *w, int l, int r);

void qsort1(struct baza *w, int l, int r);

void Clear (void);

5.3 Main. c

В самом начале основной программы мы входим в бесконечный цикл, который завершится только, если мы выберем пункт меню k, и выполнится оператор return 0.

В начале каждого бесконечного цикла, нам предлагается выбрать пункт меню, путём ввода с клавиатуры его порядкового номера. После ввода, мы переходим к конструкции вида:

switch (char){

case x1:…

case x2:…

}

Каждая ветвь case x; соответствует пункту меню с порядковым номером x, и в ней выполняется соответствующая функция.

main.c

#include" my. h"

int main (int argc, char *argv[]){

int kol=0,met=0;

struct baza w[KOL];

char name[30];

int g;

if (argc≠2){

printf («Вы не указали имя при запускеn «);

printf («укажите имяn в случае ошибки, программа завершит работуn»);

fgets (name, 30, stdin);

g=0;

while ((name[g]≠'n')&&(name[g]≠''))

g++;

name[g]='';

if (strlen (name)==0)

return 0;

}

else{

strcpy (name, argv[1]);

}

do{

switch (menu ()){

case 'a':

kol=vvod (w);

met=1;

break;

case 'b':

if (met==1){

vivod (kol, w);

break;

}

else{

printf («Вы не заполнили справочникn»);

break;

}

case 'c':

if (met==1){

vstavka (w, kol);

break;

}

else{

printf («Вы не заполнили справочникn»);

break;

}

case 'd':

if (met==1){

sortChella (kol, w);

break;

}

else{

printf («Вы не заполнили справочникn»);

break;

}

case 'e':

if (met==1){

sort (kol, w);

break;

}

else{

printf («Вы не заполнили справочникn»);

break;

}

case 'f':

if (met==1){

kol=del (kol, w);

break;

}

else{

printf («Вы не заполнили справочникn»);

break;

}

case 'g':

if (met==1){

per (kol, w);

break;

}

else{

printf («Вы не заполнили справочникn»);

break;

}

case 'h':

if (met==1){

cor (kol, w);

break;

}

else{

printf («Вы не заполнили справочникn»);

break;

}

case 'i':

if (met==1){

save (kol, w, name);

break;

}

else{

printf («Вы не заполнили справочникn»);

break;

}

case 'j':

kol=new (kol, w, name);

break;

case 'k':

printf («Выход из программыn»);

return 0;

default:

printf («Нет такого пункта менюn»);

break;

}

}while (1);

return 0;

}

5.4 Menu. c

Эта функция предназначена для управления программой при помощи символа пункта меню, на который нужно перейти в главной функции.

menu.c

#include" my. h"

char menu (void){

char x;

printf («ttМеню:n»);

printf («a-Создание справочника в памяти (Ввод данных) n»);

printf («b-Вывод справочника на экранn»);

printf («c-Сортировка методом вставок по полю строкового типаn»);

printf («d-Сортировка методом Шелла по числовому полюn»);

printf («e-Сортировка методом быстрой сортировки по числовому полюn»);

printf («f-Удаление данных с указанным номеромn»);

printf («g-Перемещение указанной записи на новую позициюn»);

printf («h-Корректировка данных с указанным номеромn»);

printf («iСохранение справочника в файлn»);

printf («jЗадание нового имени файла для открытияn»);

printf («kВыход из программыn»);

scanf («%c» ,&x);

x=tolower (x);

Clear ();

return x;

}

Рисунок 5.1 — Результат выполнения функции menu. c

5.5 Vvod. c

Функция ввода данных предлагает ввести количество данных присваемое переменной kol

vvod.c

#include «my.h»

void Clear (){

while (getchar ()≠'n')

continue;

return;

}

int vvod (struct baza *w){

int kol, g, i, j;

printf («Введите количество записейn»);

while (scanf («%d» ,&kol)≠1){

printf («Значение не верноnВведите еще раз»);

Clear ();

}

Clear ();

if (kol<1||kol>KOL){

printf («Количество записей не должно перевышать %dn», KOL);

return 0;

}

for (i=0;i

printf («Введите марку светодиода (%d)n», i+1);

fgets (w[i]. title, 30, stdin);

g=0;

while ((w[i].title[g]≠'n')&&(w[i].title[g]≠''))

g++;

w[i].title[g]='';

printf («Введите Uпр (%d)n», i+1);

while (scanf («%f» ,&w[i]. svet)≠1){

printf («Значение введено неверноn»);

Clear ();

}

Clear ();

printf («Введите Iпр, мА (%d):n», i+1);

while (scanf («%f» ,&w[i]. Ipr)≠1){

printf («Значение введено неверноn»);

Clear ();

}

Clear ();

printf («Введите Tk (%d)n», i+1);

while (scanf («%f» ,&w[i]. Tk)≠1){

printf («Значение введено неверноn»);

Clear ();

}

Clear ();

printf («Введите Uob (%d)n», i+1);

while (scanf («%f» ,&w[i]. Uob)≠1){

printf («Значение введено неверноn»);

Clear ();

}

Clear ();

}

return kol;

}

Рисунок 5.2 — Результат выполнения функции vvod. c

5.6 Vivod. c

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

vivod.c

#include «my.h»

void vivod (int kol, struct baza *w) Марка

Рисунок 5.3 — Результат выполнения функции vivod. c

5.7 Vstavka. c

Функция, осуществляющая сортировку методом вставок по полю строкового типа. Предлагается выбрать пункт меню, путем ввода с клавиатуры, в котором запрашивается направление сортировки: по убыванию либо по возрастанию.

vstavka.c

#include" my. h"

void vstavka (struct baza *w, int n){

int i, j, g, k;

struct baza t;

printf («1-Сортировать по возрастаниюn2-Сортировка по убываниюn0-Выходn»);

while (scanf («%d» ,&g)≠1){

printf («Значение введено неверноn»);

Clear ();

}

Clear ();

switch (g){

case 1:

for (i=1;i

for (j=0;j

if (strcmp (w[i]. title, w[j].title)<0){

t=w[i];

for (k=i;k>j;k—)

w[k]=w[k-1];

w[j]=t;

}

}

break;

case 2:

for (i=1;i

for (j=0;j

if (strcmp (w[i]. title, w[j].title)>0){

t=w[i];

for (k=i;k>j;k—)

w[k]=w[k-1];

w[j]=t;

}

}

break;

case 0:

printf («Выход в менюn»);

return;

default:

printf («Такого пункта нетn»);

return;

}

printf («Сортировка завершена успешноn»);

return;

}

Рисунок 5.4 — Результат выполнения функции vstavka. c по возрастанию Рисунок 5.5 — Результат выполнения функции vstavka. c по убыванию

5.8 SortChella. c

Функция, осуществляющая сортировку методом Шелла по числовому полю. Предлагается выбрать пункт меню, путем ввода с клавиатуры, в котором запрашивается направление сортировки: по убыванию либо по возрастанию.

sortChella.c

#include" my. h"

void sortChella (int kol, struct baza *w){

struct baza tm;

int i, j, g;

int step=kol/2;

printf («1-Сортировать по возростаниюn2-Сортировать по убываниюn0-Выходn»);

while (scanf («%d» ,&g)≠1){

printf («Значение введено неверноn»);

Clear ();

}

Clear ();

switch (g){

case 1:

while (step > 0){

for (i = 0; i < (kol — step); i++){

j = i;

while ((j>=0)&&(w[j]. Ipr> w[j + step]. Ipr)){

tm = w[j];

w[j] = w[j + step];

w[j + step] = tm;

j—;

}

}

step = step / 2;

}

break;

case 2:

while (step > 0){

for (i = 0; i < (kol — step); i++){

j=i;

while ((j>=0)&&(w[j]. Ipr

tm=w[j];

w[j]=w[j+step];

w[j+step]=tm;

j—;

}

}

step=step/2;

}

break;

case 0:

printf («Выход в менюn»);

return;

default:

printf («Такого пункта меню нет n»);

return;

}

printf («Сортировка произошла успешноn»);

return;

}

Рисунок 5.6 — Результат выполнения функции sortChella. c по возрастанию Рисунок 5.7 — Результат выполнения функции sortChella. c по убыванию

5.9 Sort. c

Функция, осуществляющая сортировку методом быстрой сортировки по числовому полю. Предлагается выбрать пункт меню, путем ввода с клавиатуры, в котором запрашивается направление сортировки: по убыванию либо по возрастанию.

sort.c

#include" my. h"

void sort (int kol, struct baza *w){

int a;

printf («1-По возростаниюn2-По убываниюn0-Выход в менюn»);

while (scanf («%d» ,&a)≠1){

printf («Значение введено не верноn»);

Clear ();

}

Clear ();

switch (a){

case 1:

qsort2(w, 0, kol-1);

break;

case 2:

qsort1(w, 0, kol-1);

case 0:

printf («Выход в менюn»);

return;

default:

printf («Такого пункта нетn»);

break;

}

return;

}

5.10 Qsort. c

Функция, осуществляющая сортировку методом быстрой сортировки по возрастанию, является составной частью функции sort.c.

qsort.c

#include" my. h"

void qsort2(struct baza *w, int l, int r){

int i=l, j=r;

struct baza sw;

float x;

if (l>=r)

return;

x=w[(r+l)/2]. Tk;

do{

while (w[i].Tk

i++;

while (w[j].Tk>x)

j—;

if (i<=j){

sw=w[i];

w[i]=w[j];

w[j]=sw;

i++;

j—;

}

}while (!(i>j));

qsort2(w, l, j);

qsort2(w, i, r);

return;

}

Рисунок 5.8 — Результат выполнения функции qsort. c по возрастанию

5.11 Qsort1. c

Функция, осуществляющая сортировку методом быстрой сортировки по убыванию, является составной частью функции sort.c.

qsort1.c

#include" my. h"

void qsort1(struct baza *w, int l, int r){

int i=l, j=r;

struct baza sw;

float x;

if (l>=r)

return;

x=w[(r+l)/2]. Tk;

do{

while (w[i].Tk>x)

i++;

while (w[j].Tk

j—;

if (i<=j){

sw=w[i];

w[i]=w[j];

w[j]=sw;

i++;

j—;

}

}while (!(i>j));

qsort1(w, l, j);

qsort1(w, i, r);

return;

}

Рисунок 5.9 — Результат выполнения функции qsort1. c по убыванию

5.12 Del. c

Функция предназначена для удаления данных из справочника. Функция сначала проверяет справочник на наличие данных. А затем запрашивает номер элемента, который нужно удалить.

del.c

#include" my. h"

int del (int kol, struct baza *w){

int i, a;

printf («Введите номер элемента в справочнике который нужно удалить: n»);

while (scanf («%d» ,&a)≠1){

printf («Значение введено не верноn»);

Clear ();

}

Clear ();

if ((a>0)&&(a<=kol)){

for (i=a-1;i

w[i]=w[i+1];

}

else{

printf («В справочнике нет светодиода с данным ноиеромn»);

return kol;

}

printf («Светодиод удален из справочникаn»);

return —kol;

}

Рисунок 5.9 — Результат выполнения функции de1. c

5.13 Per. c

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

per.c

#include" my. h"

void per (int kol, struct baza *w){

int N, M, i;

struct baza t;

if (kol>0){

printf («Введите номер записиn»);

if ((scanf («%d» ,&N)==1)&&(N>0)&&(N<=kol)){

Clear ();

N—;

}

else{

Clear ();

printf («Введенно некорректное значениеn»);

return;

}

}

else{

printf («Справочник пустn»);

return;

}

printf («Введите номер позиции куда переместитьn»);

if ((scanf («%d» ,&M)==1)&&(M>0)&&(M<=kol)){

Clear ();

M—;

}

else{

Clear ();

printf («Введенно некорректное значениеn»);

return;

}

if (N

t=w[N];

for (i=N;i

w[N]=w[N+1];

w[M]=t;

}

else{

if (N>M){

t=w[N];

for (i=N;i>M;i—)

w[i]=w[i-1];

w[M]=t;

}

else{

printf («Перемещение не трубуетсяn»);

return;

}

}

return;

}

Рисунок 5.10 — Результат выполнения функции per. c

5.14 Cor. c

Функция предназначена для корректировки (исправления) введенных данных. Функция запрашивает элемент, который нужно откорректировать, а за тем выполняет проверку на правильность введенных данных. Если данные введены неверно, то происходит выход в основную программу, программа этот выход описывает сообщением. Далее происходят действия аналогичные действиям функции ввода данных, но с использование оператора switch ().

cor.c

#include" my. h"

void cor (int kol, struct baza *w){

int i, k, g;

printf («Введите нормер светодиода, который нужно отредактировать: n»);

while (scanf («%d» ,&k)≠1){

printf («Неправильно введены данныеn»);

Clear ();

}

Clear ();

if ((k>0)&&(k<=kol)){

while (1){

printf («Выберите поле которое нужно отредактировать: n»);

printf («1-Марка светодиодаn»);

printf («2-Uпр, Vn»);

printf («3-Iпр, mAn»);

printf («4-Tkn»);

printf («5-Uобрn»);

printf («0-Выходn»);

while (scanf («%d» ,&g)≠1){

printf («Неправильно введены данныеn»);

Clear ();

}

Clear ();

switch (g){

case 1:

printf («Введите марку %d светодиодаn», k);

fgets (w[k-1]. title, 20, stdin);

i=0;

while ((w[k-1].title[i]≠'n')&&(w[k-1].title[i]≠''))

i++;

w[k-1].title[i]='';

break;

case 2:

printf («Введите Uпр %dn», k);

while (scanf («%f» ,&w[k-1]. svet)≠1){

printf («Неправильно введеное значениеn»);

Clear ();

}

break;

case 3:

printf («Введите Iпр %dn», k);

while (scanf («%f» ,&w[k-1]. Ipr)≠1){

printf («Неправильно введеное значениеn»);

Clear ();

}

break;

case 4:

printf («Введите Tk %dn», k);

while (scanf («%f» ,&w[k-1]. Tk)≠1){

printf («Неправильно введеное значениеn»);

Clear ();

}

break;

case 5:

printf («Введите Uобр %dn», k);

while (scanf («%f» ,&w[k-1]. Uob)≠1){

printf («Неправильно введеное значениеn»);

Clear ();

}

break;

case 0:

printf («Выходn»);

return;

default:

printf («Такого пункта меню нетn»);

break;

}

}

}

else{

printf («В справочнике нет светодиода с данным номеромn»);

return;

}

printf («Элемент справочника откорректирован»);

return;

}

Рисунок 5.11 — Результат выполнения функции cor. c

5.15 Save. c

Функция открывает файл с ранее введенным именем в бинарном режиме, проверяет на наличие данных, записывает число элементов в файл, записывает данные в файл. По завершению этих операций закрывает файл.

save.c

#include «my.h»

void save (int kol, struct baza *w, char *name){

int res=0,i;

FILE *fp;

if ((fp=fopen (name," wb"))==NULL){

printf («Невозможно открыть файлn»);

}

fwrite (&kol, sizeof (int), 1, fp);

for (i=0;i

res+=fwrite (&w[i], sizeof (struct baza), 1, fp);

if (res≠kol){

printf («Не все данные загруженыn»);

printf («Загружено %d записейn», res);

}

fclose (fp);

printf («Данные отправленны в файл (%s)n», name);

return;}

Рисунок 5.13 — Результат выполнения функции save. c

5.15 New. c

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

new.c

#include" my. h"

int new (int kol, struct baza *w, char *name){

FILE *fp;

char k[30];

int i;

printf («Введите имя файла с которого будет загружена база»);

fgets (k, 15, stdin);

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

continue;

k[i]='';

printf («введите новое имя открытого файла»);

fgets (name, 15, stdin);

for (i=0;name[i]≠'n';i++)

continue;

name[i]='';

if ((fp=fopen (k," rb"))==NULL){

printf («Невозожно открыть файл (%s)n», k);

return kol;

}

fread (&kol, sizeof (int), 1, fp);

for (i=0;i

fread (&w[i], sizeof (struct baza), 1, fp);

printf («Загружено %d записейn», kol);

fclose (fp);

if ((fp=fopen (name," wb"))==NULL){

printf («Невозможно открыть файл (%s)», name);

return kol;

}

fread (&kol, sizeof (int), 1, fp);

for (i=0;i

fread (&w[i], sizeof (struct baza), 1, fp);

fclose (fp);

printf («Имя заменено на новое для открытияn»);

return kol;

}

Рисунок 5.14 — Результат выполнения функции new. c

Заключение

При разработке курсового проекта были закреплены навыки программирования консольных приложений на языка С/С++, а именно:

— файловый ввод-вывод на языке С;

— вывод данных в файл результатов программы на языке С:

— работа с массивами и структурами данных;

— изучены различные алгоритмы сортировок.

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

1. Герберт Шилдт. Полный справочник по С++. Ossborne. 2003

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

3. Х. М. Дейтел, П. Дж. Дейтел. Как программировать на С. — М. Издательство «Бином», 2006. — 908 с.

4. Балащенко, Д. В. Программирование на языке С/С++: учебно-методическое пособие по дисциплине «Информатика и информационные технологии». Ч. 2 /Д.В. Балащенко; Д. В. Захаров, М-во образования Респ. Беларусь, Белорус. Гос. Ун-т трансп. — Гомель: БелГУТ, 2011

Приложение

Показать весь текст
Заполнить форму текущей работой