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

Передо мной была поставлена следующая задача: Создать файл с возможностью определения процента выхода годных изделий на основе актов приёма ОТК.

Программа должна иметь возможности:

  1. Добавлять элементы в структуру.

  2. Осуществлять хранение результатов в файле и считывать их из файла

  3. Выводить результаты на экран в виде таблицы

  4. Определять процент выхода годных изделий.

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

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

  • Stdafx.h– одна из главных головных библиотек, определяющая функции ввода-вывода. Сюда относятся: fopen, fclose, fflush, printf, scanf, и многие другие.

  • Conio.h – библиотека, содержащая функции для работы с консолью. В данной программе использовался оператор getch() из этой библиотеки.

  • Iostream- библиотека, определяющая функции ввода-вывода. Сюда относятся: cout,cin.

Fopen(), fclose() – операторы открытия – закрытия файла.

fprintf() – запись данных в файл.

fscanf() – считывание данных из файла.

printf() – вывод данных на экран.

scanf() – считывание данных с клавиатуры.

While– операторы выполнения тела цикла, пока условие истинно.

For - оператор-«счетчик», выполняющий тело цикла, пока переменная не достигнет конечного значения.

If , switch - операторы проверки условия.

Break – средство прерывания цикла.

  1. Описание программы

2.1. Схема алгоритма программы.

При запуске программы, выполняется ее основная функция- функция main().С помощью данной функции вводятся все элементы структуры, а затем записываются в файл. После чего выполняется функцияmenu().

Функции viewFile(), addFile(), editFile(), otk(), deleterecord() по окончанию выполнения автоматически переходят к функции menu().

2.2. Описание использованных функций

Главная функция void main().

Это главная функция в программе.

Функция имеет следующий вид в программе:

void main()

{

setlocale(LC_ALL,"Russian");

int i;

g=fopen("prom.txt","w+b");

for(i=1;sch<30 && i==1;sch++)

{

cout<<"\nВведите название изделия:\n";

cin>>m[sch].name;

fprintf(g,"%10s ",m[sch].name);

cout<<"Введите размер партии: \n";

cin>>m[sch].vsego;

fprintf(g,"%10d ",m[sch].vsego);

cout<<"Введите кол-во бракованых изделий:\n";

cin>>m[sch].brak;

fprintf(g,"%10d ",m[sch].brak);

cout<<"Хотите продолжить? (если да то нажмите 1 ,если нет то 0)";

scanf("%d",&i);

}

fclose(g);

while(1)

{

switch(menu())

{

case 1:addFile();break;

case 2:editFile();break;

case 3: deleterecord(); break;

case 4:otk();break;

case 5:viewFile();break;

case 6:return 0;

default: cout<<"Не верный выбор\n";

}

}

}

Вызываемая функция menu().

Функция, которая вызывается из главной функции. От неё зависит, какая функция будет выполняться потом.

Имеет следующий вид:

int menu()

{

system ("cls");

cout<<"Введите:\n";

cout<<"1-для ввода новой записи\n";

cout<<"2-для изменения записей \n";

cout<<"3-для удаления записей\n";

cout<<"4-для нахождения процента выхода\n";

cout<<"5-для чтения структуры из файла\n";

cout<<"6-для выхода\n";

cin>>er;

return er;

}

Функция addFile().

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

Функция в программе имеет вид:

void addFile()

{

g=fopen("prom.txt","ab");

system("cls");

if(sch<30)

{

cout<<"Запись номер"<<sch+1;

cout<<"\nВведите название изделия:\n";

cin>>m[sch].name;

fprintf(g,"%10s ",m[sch].name);

cout<<"Введите размер партии: \n";

cin>>m[sch].vsego;

fprintf(g,"%10d ",m[sch].vsego);

cout<<"Введите кол-во бракованых изделий:\n";

cin>>m[sch].brak;

fprintf(g,"%10d ",m[sch].brak);

sch++;

fclose(g);

}

else cout<<"Введено максимальное кол-во записей";

}

Функция editFile().

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

Функция в программе имеет вид:

void editFile()

{

int per;

system("cls");

g=fopen("prom.txt","wb");

cout<<"\nВведите номер записи\n";

cin>> i;

while(1)

{

cout<<"Введите: \n";

cout<<"1-для изменения названия изделия\n";

cout<<"2-для изменения кол-ва изделий\n";

cout<<"3-для изменения кол-ва бракованых изделий\n";

cout<<"4-для прекращения\n";

cin>>per;

switch (per)

{

case 1:

cout<<"\nВведите новое название изделия\n";

cin>>m[i-1].name;

fprintf(g,"%10s ",m[i-1].name);break;

case 2:

cout<<"\nВведите новое кол-во изделий\n";

cin>>m[i-1].vsego;

fprintf(g,"%10s ",m[i-1].vsego);break;

case 3:

cout<<"Введите новое кол-во бракованых изделий \n";

cin>>m[i-1].brak;

fprintf(g,"%10s ",m[i-1].brak);break;

case 4:fclose(g); return;

}

}

}

Функция deleterecord().

Данная функция производит удаление элемента из файла.

Функция в программе имеет вид:

void deleterecord()

{

int b;

printf("Введите номер записи которую нужно удалить:\n");

scanf("%d",&b);

g=fopen("prom.txt","wb");

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

{

fprintf(g,"%10s%10d%14d ",m[i].name,m[i].vsego,m[i].brak);

}

for(i=b;i<sch;i++)

{

fprintf(g,"%10s%10d%14d ",m[i].name,m[i].vsego,m[i].brak);

}

sch=sch-1;

fclose(g);

}

Функция Otk().

Данная функция рассчитывает процента выхода годных изделий на основе актов приёма ОТК, если данные существуют.

Функция имеет вид:

void otk()

{

g = fopen("prom.txt", "rb");

system("cls");

cout<<"-----------------------------------------\n";

cout<<" Название| Процент выхода годных изделий\n";

cout<<" изделия | на основе актов приёма ОТК \n";

cout<<"-----------------------------------------\n";

if(sch!=0)

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

{

fscanf(g,"%s%18d%15d\n",m[i].name,&m[i].vsego,&m[i].brak);

m[i].otk=(m[i].vsego-m[i].brak)*100/m[i].vsego;

printf("%s%12.2f\n",m[i].name,m[i].otk);

}

else printf("Данных нет!");

getch();

}

Функция viewFile().

Функция вывода данных.

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

Вид в программе:

void viewFile()

{

system("cls");

if ((g = fopen("prom.txt", "rb")) == NULL)

printf ("File could not be opened\n");

else

{

cout<<"--------------------------------------------------\n";

cout<<" | Изделие | Размер партии |Бракованых изделий |\n";

cout<<"--------------------------------------------------\n";

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

{

fscanf(g,"%s%18d%15d\n",m[i].name,&m[i].vsego,&m[i].brak);

printf("%s%18d%15d\n",m[i].name,m[i].vsego,m[i].brak);

}

fclose (g);

}

getch();

}

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