Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






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





 

Файл «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;

};


 

Date: 2015-09-18; view: 274; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию