Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РКР.docx
Скачиваний:
21
Добавлен:
19.12.2018
Размер:
126.6 Кб
Скачать

3. Руководство пользователя

3.1 Описание работы меню

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

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

Необходимо ввести цифру выбранного действия.

Если пользователь выбирает цифру 1, то программа читает структуру из файла. На экране появится таблица с данными. Затем программа автоматически вернется в режим меню, предлагая пользователю дальнейший выбор.

При нажатии цифры 2, программа будет добавлять новые записи до тех пор, пока не нажмут цифру 0. Затем данные запишутся автоматически в файл.

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

При нажатии цифры 4, программа должна удалить элемент. Для этого необходимо ввести номер удаляемого элемента (нумерация при этом идёт с 1,а не с 0 ).

При выборе пункта 5, программа сортирует данные по заданному условию.

Если пользователь введет цифру 6, программа выдаст на экран таблицу с данными.

Последним доступным пунктом меню является пункт «выход из программы». Действие это осуществляется при нажатии пользователем цифры 7 в режиме меню.

3.2 Описание ограничений возможностей программы.

Как и всякая программа, написанная на одном из языков программирования, данная программа имеет ограничения в возможностях.

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

Таблица 1. Ограничения в программе на вводимые данные

Вводимые данные

Количество символов

Автор

10

Имя

10

Издание

14

Номер книги

5

Заключение

В результате работы была создана программа получения места в общежитии

  1. программа вводит необходимые величины.

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

  3. все данные могут считываться из файла и записываться в файл при закрытии программы.

  4. при необходимости все данные студента могут быть изменены.

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

Листинг код:

#include "stdafx.h"

#include<stdio.h>

#include<conio.h>

#include<string.h>

#include <stdlib.h>

#define z 30

FILE *rkr;

void viewFile();

void addFile();

void editFile();

void deleterecord();

void tablica();

void sortirovka();

void menu();

struct spisok{

char avtor[10], imia[10], izdanie[14],nomer_knigi[5];

double stranici;

int year;

} book[z],g;

int l,i,j,t,n=0;

void main()

{

int k;

l=0;

printf("Vvedite fiksiruuschii god\n");

scanf("%d",&t);

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

{

printf("Vvedite avtor(do 10 simvolov)\n");

fflush(stdin);

gets(book[i].avtor);

printf("Vvedite Imia(do 10 simvolov)\n");

fflush(stdin);

gets(book[i].imia);

printf("Vvedite izdanie(do 14 simvolov)\n");

fflush(stdin);

gets(book[i].izdanie);

printf("Vvedite nomer knigi(bukva i 4 zifry)\n");

fflush(stdin);

gets(book[i].nomer_knigi);

printf("Vvedite stranici\n");

fflush(stdin);

scanf("%lf",&book[i].stranici);

printf("Vvedite god izdania\n");

fflush(stdin);

scanf("%d",&book[i].year);

l++;

printf("hotite prodolgit'? (vyhod 0)");

scanf("%d",&k);

if(k==0) break;

}

rkr=fopen("rkr.doc","wb");

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

{

fprintf(rkr,"%10s ",book[i].avtor);

fprintf(rkr,"%10s ",book[i].imia);

fprintf(rkr,"%14s\t",book[i].izdanie);

fprintf(rkr,"%5s\t",book[i].nomer_knigi);

fprintf(rkr,"%lf\t",book[i].stranici);

fprintf(rkr,"%d\n",book[i].year);

}

fclose(rkr);

system("cls");

menu();

}

void menu()

{

int x;

printf("\n\n");

printf(" '1' prosmotr faila\n");

printf(" '2' dobavlenie nowoi sapisi\n");

printf(" '3' korektirovka sapisei\n");

printf(" '4' udalenie sapisi\n");

printf(" '5' sortirovka sapisei\n");

printf(" '6' vyvod tablicy\n");

printf(" '7' vyhod\n");

scanf("%d",&x);

switch(x)

{

case 1:viewFile();break;

case 2:addFile();break;

case 3: editFile();break;

case 4:deleterecord();break;

case 5:sortirovka();break;

case 6:tablica();break;

case 7:exit(1);

}

}

void viewFile()

{

printf("\n\n");

rkr=fopen("rkr.doc","rb");

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

{

fscanf(rkr,"%10s ",&book[i].avtor);

fscanf(rkr,"%10s ",&book[i].imia);

fscanf(rkr,"%14s\t",&book[i].izdanie);

fscanf(rkr,"%5s\t",&book[i].nomer_knigi);

fscanf(rkr,"%lf\t",&book[i].stranici);

fscanf(rkr,"%d\n",&book[i].year);

}

printf("\t\tavtor,imia,izdanie\t\t\tnomer knigi stranic year\n");

printf("-----------------------------------------------------------------\n");

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

{

printf("%10s %10s %14s\t %5s\t %.2lf %d\n",book[i].avtor,book[i].imia,book[i].izdanie,book[i].nomer_knigi,book[i].stranici,book[i].year);

}

fclose(rkr);

menu();

}

void addFile()

{

int c;

printf("\n\n");

rkr=fopen("rkr.doc","ab");

for(i=l;i<z;i++)

{

printf("Vvedite avtora\n");

fflush(stdin);

gets(book[i].avtor);

fprintf(rkr,"%10s ",book[i].avtor);

printf("Vvedite imia\n");

fflush(stdin);

gets(book[i].imia);

fprintf(rkr,"%10s ",book[i].imia);

printf("Vvedite izdanie\n");

fflush(stdin);

gets(book[i].izdanie);

fprintf(rkr,"%10s\t",book[i].izdanie);

printf("Vvedite nomer knigi\n");

fflush(stdin);

gets(book[i].nomer_knigi);

fprintf(rkr,"%5s\t",book[i].nomer_knigi);

printf("Vvedite stranici\n");

fflush(stdin);

scanf("%lf",&book[i].stranici);

fprintf(rkr,"%lf\t",book[i].stranici);

printf("Vvedite year\n");

fflush(stdin);

scanf("%d",&book[i].year);

fprintf(rkr,"%d\n",book[i].year);

n++;

printf("hotite prodolgit' vvodit' novye dannye? (vyhod 0)");

scanf("%d",&c);

if(c==0) break;

}

fclose(rkr);

menu();

}

void editFile()

{

printf("\n\n");

printf("Vvedite avtora,dannye kotorogo vy hotite ismenit':\n");

char u[10];

int v,p=0;

scanf("%10s",&u);

rkr=fopen("rkr.doc","rb");

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

{

fscanf(rkr,"%10s",book[i].avtor);

if(strcmp(book[i].avtor,u)==0)

{

v=i;

p++;

}

if (p==1) break;

}

fclose(rkr);

printf("Vvedite novogo avtora\n");

fflush(stdin);

gets(book[v].avtor);

printf("Vvedite imia\n");

fflush(stdin);

gets(book[v].imia);

printf("Vvedite izdanie\n");

fflush(stdin);

gets(book[v].izdanie);

printf("Vvedite nomer_knigi\n");

fflush(stdin);

gets(book[v].nomer_knigi);

printf("Vvedite stranici\n");

fflush(stdin);

scanf("%lf",&book[v].stranici);

printf("Vvedite year\n");

fflush(stdin);

scanf("%d",&book[v].year);

rkr=fopen("rkr.doc","wb");

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

{

fprintf(rkr,"%10s ",book[i].avtor);

fprintf(rkr,"%10s ",book[i].imia);

fprintf(rkr,"%14s\t",book[i].izdanie);

fprintf(rkr,"%5s\t",book[i].nomer_knigi);

fprintf(rkr,"%lf\t",book[i].stranici);

fprintf(rkr,"%d\n",book[i].year);

}

fclose(rkr);

menu();

}

void deleterecord()

{

printf("\n\n");

int b;

printf("Vvedite nomer elementa,kotoryi hotite udalit':\n");

scanf("%d",&b);

rkr=fopen("rkr.doc","wb");

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

{

fprintf(rkr,"%10s ",book[i].avtor);

fprintf(rkr,"%10s ",book[i].imia);

fprintf(rkr,"%14s\t",book[i].izdanie);

fprintf(rkr,"%5s\t",book[i].nomer_knigi);

fprintf(rkr,"%lf\t",book[i].stranici);

fprintf(rkr,"%d\n",book[i].year);

}

for(i=b;i<(l+n);i++)

{

fprintf(rkr,"%10s ",book[i].avtor);

fprintf(rkr,"%10s ",book[i].imia);

fprintf(rkr,"%14s\t",book[i].izdanie);

fprintf(rkr,"%5s\t",book[i].nomer_knigi);

fprintf(rkr,"%lf\t",book[i].stranici);

fprintf(rkr,"%d\n",book[i].year);

}

l=l-1;

fclose(rkr);

menu();

}

void tablica()

{

printf("\t\tavtor,imia,izdanie\t\t\tnomer knigi stranic year\n");

printf("-----------------------------------------------------------------\n");

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

{

printf("%10s %10s %14s\t %5s\t %.2lf %d\n",book[i].avtor,book[i].imia,book[i].izdanie,book[i].nomer_knigi,book[i].stranici,book[i].year);

}

menu();

}

void sortirovka()

{

printf("\n\n");

int v=0;

for(j=0;j<(l+n);j++)

{

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

{

if(book[i].year>book[j].year)

{

g=book[i];

book[i]=book[j];

book[j]=g;

}

}

}

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

{

if(book[i].year>=t)

{

v=i;

break;

}

}

if((l+n-v)>1)

{

for(j=v;j<(l+n);j++)

{

for(i=v;i<(l+n);i++)

{

if(book[i].stranici<book[j].stranici)

{

g=book[i];

book[i]=book[j];

book[j]=g;

}

}

}

}

rkr=fopen("rkr.doc","wb");

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

{

fprintf(rkr,"%10s ",book[i].avtor);

fprintf(rkr,"%10s ",book[i].imia);

fprintf(rkr,"%14s\t",book[i].izdanie);

fprintf(rkr,"%5s\t",book[i].nomer_knigi);

fprintf(rkr,"%lf\t",book[i].stranici);

fprintf(rkr,"%d\n",book[i].year);

}

fclose(rkr);

printf("fiksiruuschii god=%d\n",t);

viewFile();

}

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Начальный курс Си и Си++ / Б.И. Березин, С.Б. Березин; - М., Диалог-МИФИ, 2001г.

  2. Основы алгоритмизации и программирования. Язык СИ. / Е.М.Демидович; - Мн., Бестпринт, 2001г.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]