Условия
|
1
|
2
|
3
|
4
|
Установлен флаг
корректности файла F1?
|
Н
|
Д
|
Н
|
Д
|
Установлен флаг
корректности файла F2?
|
Н
|
Н
|
Д
|
Д
|
Действия
|
Сообщение «Социальный номер
в F1 должен содержать только цифры. Введенный
социальный номер в F1 - ХХХХ»
|
1
|
|
1
|
|
Сообщение «Социальный номер
в F2 должен содержать только цифры. Введенный
социальный номер в F1 - ХХХХ»
|
2
|
1
|
|
|
Вывод записи в выходной
файл F3
|
|
|
|
1
|
6. Тестирование программы
Тестирование программного обеспечения охватывает целый ряд видов
деятельности, аналогичных последовательности процессов разработки программного
обеспечения. В него входят:
а) постановка задачи для теста,
б) проектирование теста,
в) написание тестов,
г) тестирование тестов,
д) выполнение тестов,
е) изучение результатов тестирования.
Метод таблиц решений позволяет эффективно проверить соответствие
разработанной программы ее внешним спецификациям, но не всегда позволяет
выявить случаи, когда программа делает то, что спецификацией не предусмотрено.
.1 Тестирование функции “Проверка на корректность входного файла F1”
Тест 1
Цель теста: проверить функционирование программы при вводе
несуществующего файла.
Ожидаемый результат: Сообщение «Файл oshibka не может быть открыт».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 2
Цель теста: проверить работоспособность функционирования программы при
вводе в поле социального номера во входном файле F1, данных, не являющихся числом и содержащем недопустимые
символы.
Предусмотренная ошибка в файле: 3ы21|S 8007 N 21212|Renatov S.S.|
Ожидаемый результат: Сообщение «Социальный номер в F1 должен содержать только цифры.
Введенный социальный номер в F1 -
321».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 3
Цель теста: проверить функционирование программы при двух одинаковых
социальных номерах во входном файле F1.
Предусмотренная ошибка в файле: 3321|S 8005 N 34894|Brejnev M.S.|, 3321|S 8007 N 21212|Renatov S.S.|
Ожидаемый результат: Сообщение «Два или более социальных номера в F1 имеют одинаковое значение. Ошибка в
значении - 3321».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 4
Цель теста: проверить функционирование программы при отсутствии
социального номера во входном файле F1.
Предусмотренная ошибка в файле: |S 8005 N 35865|Morozov A.G.|
Ожидаемый результат: Сообщение «Пустое поле Социальный номер клиента в
строке 5 файла F1».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 5
Цель теста: проверить функционирование программы при двух паспортных
данных во входном файле F1.
Предусмотренная ошибка в файле: |9748|S 8007 N 21212|Morozov A.G.|, 3321|S 8007 N 21212|Renatov S.S.|
Ожидаемый результат: Сообщение «Ошибка в паспортных данных клиента.
Паспортным данным S 8007 N 21212 присвоено два или более
социальных номера».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 6
Цель теста: проверить функционирование программы при отсутствии
паспортных данных во входном файле F1.
Предусмотренная ошибка в файле: 9934||Safinov G.S.|
Ожидаемый результат: Сообщение «Пустое поле Паспортные данные клиента в
строке 7 файла F1».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 7
Цель теста: проверить функционирование программы при отсутствии фамилии,
имени и отчества клиента во входном файле F1.
Предусмотренная ошибка в файле: 3321|S 8007 N 21212|
Ожидаемый результат: Сообщение «Пустое поле Ф.И.О. клиента в строке 8
файла F1».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 8
Цель теста: проверить функционирование программы при фамилии, имени и
отчестве клиента во входном файле F1, содержащими недопустимые символы.
Предусмотренная ошибка в файле: 5693|S 8005 N
29869|Petr22unin A.F.|
Ожидаемый результат: Сообщение «Ошибка ввода Ф.И.О. клиента. Поле должно
содержать буквы, знак пробела и точки. Ошибка в - Petr22unin A.F.».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 9
Цель теста: проверить функционирование программы при корректном вводе
файла F1.
Фактический результат: совпадает с ожидаемым.
Результат тестирования: успешный.
.2 Тестирование функции “Проверка на корректность входного файла F2”.
Тест 1
Цель теста: проверить функционирование программы при вводе
несуществующего файла.
Ожидаемый результат: Сообщение «Файл oshibka не может быть открыт».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 2
Цель теста: проверить функционирование программы при социальном номере во
входном файле F2, не являющимся числом и содержащем
недопустимые символы.
Предусмотренная ошибка в файле: 97о8|538028|Deviatoe maia|14|10000|
Ожидаемый результат: Сообщение «Социальный номер в F2 должен содержать только цифры.
Введенный социальный номер в F2 -
97о8».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 3
Цель теста: проверить функционирование программы при отсутствии
социального номера во входном файле F2.
Предусмотренная ошибка в файле: ||538028|Nakopitelny|12|50000|
Ожидаемый результат: Сообщение «Пустое поле Социальный номер клиента в
строке 5 файла F2».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 4
Цель теста: проверить функционирование программы при объеме вклада во
входном файле F2, не являющимся положительным числом
и содержащем недопустимые символы.
Предусмотренная ошибка в файле: 9748|538028|Nakopitelny|12|500a00|
Ожидаемый результат: Сообщение «Объем вклада должен содержать только
цифры. Ошибка в строке: 5».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 5
Цель теста: проверить функционирование программы при отрицательном объеме
вклада во входном файле F2.
Предусмотренная ошибка в файле: 9934|345677|Molodejnii|5|-3400|
Ожидаемый результат: Сообщение «Объем вклада должен содержать только
цифры и быть больше нуля. Ошибка в строке: 8».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 6
Цель теста: проверить функционирование программы при отсутствии объема
вклада во входном файле F2.
Предусмотренная ошибка в файле: 3321|777434|Molodejnii|5|
Ожидаемый результат: Сообщение «Пустое поле Объем вклада в строке 9 файла
F2».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 7
Цель теста: проверить функционирование программы при номере счета во
входном файле F2, не являющимся числом и содержащем
недопустимые символы.
Предусмотренная ошибка в файле: 5693|7a8932|Pensionny|11|5000|
Ожидаемый результат: Сообщение «Номер счета должен содержать только
цифры. Ошибка в строке: 6».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 8
Цель теста: проверить функционирование программы при отрицательном номере
счета во входном файле F2.
Предусмотренная ошибка в файле: 3321|-777434|Molodejnii|5|6000|
Ожидаемый результат: Сообщение «Номер счета должен содержать только цифры
и быть не отрицательным. Ошибка в строке: 9».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 9
Цель теста: проверить функционирование программы при отсутствии номера
счета во входном файле F2.
Предусмотренная ошибка в файле: 1947||Pensionny|11|60000|
Ожидаемый результат: Сообщение «Пустое поле Номер счета в строке 7 файла F2».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 10
Цель теста: проверить функционирование программы при отсутствии
наименования вклада во входном файле F2.
Предусмотренная ошибка в файле: 1947|125398||11|60000|
Ожидаемый результат: Сообщение «Пустое поле Наименование вклада в строке
7 файла F2».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 11
Цель теста: проверить функционирование программы при годовом проценте
начисления во входном файле F2, не
являющимся положительным числом и содержащем недопустимые символы.
Предусмотренная ошибка в файле: 1947|125398|Pensionny|1a1|60000|
Ожидаемый результат: Сообщение «Годовой процент начисления должен
содержать только цифры и быть больше нуля. Ошибка в строке: 7».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 12
Цель теста: проверить функционирование программы при отрицании годового
процента начисления во входном файле F2.
Предусмотренная ошибка в файле: 9934|345677|Molodejnii|-5|3400|
Ожидаемый результат: Сообщение «Годовой процент начисления
долженсодержать только цифры и быть больше нуля в строке 8 файла F2».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 13
Цель теста: проверить функционирование программы при отсутствии годового
процента начисления во входном файле F2.
Предусмотренная ошибка в файле: 1947|125398|Pensionny||60000|
Ожидаемый результат: Сообщение «Пустое поле Годовой процент начисления в
строке 7 файла F2».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 14
Цель теста: проверить функционирование программы при корректном вводе
всех данных во входном файле F2.
Фактический результат: совпадает с ожидаемым.
Результат тестирования: успешный.
6.3 Тестирование функции “Формирование выходного файла F3
Тест 1
Цель теста: проверить функционирование программы при несоответствии
социальных номеров во входных файлах F1 и F2.
Содержание теста: файлы q.txt и oshibka19.txt
Предусмотренная ошибка в файле F2: 2962|580764|Sberegatelny|8|30000|
Ожидаемый результат: Сообщение «Социальные номера в файлах F1 и F2 не совпадают. Введенный социальный номер в - 2964 и 2962».
Фактический результат: совпадает с ожидаемым.
Результат тестирования: неуспешный.
Тест 2
Цель теста: проверить функционирование программы при наличии корректных
данных входных файлов F1 и F2.
Содержание теста: файлы q.txt и qq.txt
Ожидаемый результат: Выведена таблица с итоговыми данными и создан
выходной файл F3.
Фактический результат совпал с ожидаемым
Результат тестирования: успешный.
7. Блок-схемы программы
.1 Блок-схема основной программы
7.2 Проверка на корректность данных файла F1
7.3 Проверка на корректность данных файла F2
.4 Проверка соответствия данных файлов F1 и F2
7.5 Формирование выходного файла F3
Вывод
Данная программа соответствует заявленным внешним спецификациям. В ходе
выполнения работы были составлены таблицы решений, по которым проводилось
тестирование программы. По результатам тестирования можно сказать, что в
программе не было обнаружено ошибок.
Список литературы
1) Методические указания к курсовой работе по дисциплине
«Технология программирования» / Уфимск. Гос. Авиац. техн. ун-т; Сост.: Гвоздев
В.Е., Мукасеева В.Н. Хасанов А.Ю - Уфа, 2004, - 42 с.
) Выполнение схем алгоритмов, программ, данных и систем:
Методические указания к курсовому и дипломному проектированию / Уфимск. Гос.
Авиац. техн. ун-т; Сост.: Р.Г. Валеева, Г.Р. Валеева. - Уфа, 2003. - 23 с.
Приложение 1
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#include <iomanip> namespace
std;*f1;*f2;*f3;*fer;file1[99];file2[99];Table1
{soc_nom_tab1[8]; //социальный номер клиента
char pasp_dan_tab1[15]; //паспортные данные клиентаfio_tab1[15]; //Ф.И.О.
клиента
} *table1;Table2
{soc_nom_tab2[8]; //социальный номер клиентаnom_schet_tab2[8]; //номер счета
char naim_vklad_tab2[15]; //наименование вкладаgod_proc_tab2[4];
//годовой процент начисления
char ob_vklad_tab2[8]; //объем вклада
} *table2;BUF
{fio_tab3[15]; //Ф.И.О. клиента
char pasp_dan_tab3[15]; //паспортные данные клиентаgod_proc_tab3[4];
//годовой процент начисления
char ob_vklad_tab3[8]; //объем вклада
} *buf; n,k,i,ii;DELET()[] table1;[] table2;[] buf;
}StrKolF1() //ПОДЧЕТ
КОЛ-ВА СТРОК В ФАЙЛАХ
{line[128] = {0};k1 =
0;<<"\n~~~~~~~Menu~~~~~~~~~~~~"<<endl<<endl<<endl;<<"__________________________________"<<endl;<<"\nVvedenie
pervogo ishodnogo faila s dannbimi iz kornevoi papki programmi"<<endl<<endl;("Vvedite
imya faila F1: ");("%s",&file1);= fopen(file1,
"r");(!f1)
{("\nFail %s ne mozhet bit otkrit, tak kak nekorrektno
vvedeno imya faila\n",file1);<<"\nProgramma vbinujdena
zavershit' svou rabotu, isprav'te oshibki i zapustite programmu zanovo"<<endl;
getch();(0);
}(!feof(f1)) //подсчитываем кол-во строк в файле F1
{++;(line, sizeof(line), f1);
}(f1);<<"\nfail naiden i schitan
uspishno"<<endl<<endl;k1;
}StrKolF2()
{line[128] = {0};k2 =
0;<<"_______________________________________"<<endl;<<"\nVvedenie
vtorogo ishodnogo faila s dannbimi iz kornevoi papki
programmi"<<endl<<endl;("Vvedite imya faila F2:
");("%s",&file2);= fopen(file2, "r");(!f2)
{("\nFail %s ne mozhet bit otkrit, tak kak nekorrektno
vvedeno imya faila\n",file2);<<"\nProgramma vbinujdena
zavershit' svou rabotu, isprav'te oshibki i zapustite programmu
zanovo"<<endl;
getch();(0);
}(!feof(f2)) //подсчитываем кол-во строк в файле F2
{++;(line, sizeof(line), f2); //подсчитываем кол-во строк в файле F2
}(f2);<<"\nfail naiden i schitan uspishno"<<endl<<endl;
return k2;
}
// (работает если ввести - или русскую букву и только одну и только в
начале или в конце) проверка на корректность ввода соц номера в файле f1:
void CheckError(int n1, int n2)
{(int ii = 0; ii<= (n1-1); ii++)
{(int i=0; i<(strlen(table1[ii].soc_nom_tab1)); i++)
{(table1[ii].soc_nom_tab1[i] < '0' &&
table1[ii].soc_nom_tab1[i]!=' ')
{<<"\n________________________________________"<<endl;("\nOshibka:
Soc. nomer v F1 dolzhen soderzhat tolko cifri. Vvedenny soc. nomer v f1 - %s\n",table1[ii].soc_nom_tab1);<<"\nProgramma
vbinujdena zavershit' svou rabotu, isprav'te oshibki i zapustite programmu
zanovo"<<endl;
getch();(0);
}
// (работает если ввести - или русскую букву и только одну и только в
начале или в конце) проверка на корректность ввода соц номера номера в файле f2
for (ii = 0; ii<= (n2-1); ii++)
{(int i=0; i<(strlen(table2[ii].soc_nom_tab2)); i++)
{(table2[ii].soc_nom_tab2[i] < '0')
{<<"\n_____________________________"<<endl;("\nOshibka:
Soc. nomer v F2 dolzhen soderzhat tolko cifri. Vvedenny soc. nomer v f2 -
%s\n",table2[ii].soc_nom_tab2);<<"\nProgramma vbinujdena
zavershit' svou rabotu, isprav'te oshibki i zapustite programmu
zanovo"<<endl;
getch();(0);
}
// (только если ввести - или русскую букву и только одну и только в
начале или в конце) проверка на корректность ввода объема вклада в Файле f2-
for (ii = 0; ii<= (n2-1); ii++)
{(int i=0; i<(strlen(table2[ii].ob_vklad_tab2)); i++)
{(table2[ii].ob_vklad_tab2[i] < '0')
{<<"\n__________________________"<<endl;("\nOshibka:
Obiem vklada dolzhen soderzhat tolko cifri i bit bolshe nylia. Oshibka v
stroke: %d\n",ii+2);<<"\nProgramma vbinujdena zavershit' svou
rabotu, isprav'te oshibki i zapustite programmu zanovo"<<endl;
getch();(0);
}
//-только если ввести - или русскую букву и только одну и только в начале
или в конце) проверка на корректность ввода номера счета в Файле f2-
for (ii = 0; ii<= (n2-1); ii++)
{(int i=0; i<(strlen(table2[ii].nom_schet_tab2)); i++)
{(table2[ii].nom_schet_tab2[i] < '0')
{<<"\n______________________________________"<<endl;("\nOshibka:
Nomer scheta dolzhen soderzhat tolko cifri i bit' ne otrizatel'nim. Oshibka v
stroke: %d\n",ii+2);<<"\nProgramma vbinujdena zavershit' svou
rabotu, isprav'te oshibki i zapustite programmu zanovo"<<endl;
getch();(0);
}
// (только если ввести - или русскую букву и только одну и только в
начале или в конце) проверка на корректность ввода годового процента начисления
в Файле f2
for (ii = 0; ii<= (n2-1); ii++)
{(int i=0; i<(strlen(table2[ii].god_proc_tab2)); i++)
{(table2[ii].god_proc_tab2[i] < '0')
{<<"\n___________________________________"<<endl;("\nOshibka:
Godovoi procent nachislenia dolzhen soderzhat tolko cifri i bit bolshe nylia.
Oshibka v stroke: %d\n",ii+2);<<"\nProgramma vbinujdena
zavershit' svou rabotu, isprav'te oshibki i zapustite programmu
zanovo"<<endl;
getch();(0);
}
//проверка на совпадение соц номеров в f1
for (ii = 0; ii <= n1; ii++)
{(int i = ii + 1; i <= (n1 - 1); i++)
{(ii == i);(strcmp(table1[ii].soc_nom_tab1,
table1[i].soc_nom_tab1)==0)
{<<"\n____________________________________"<<endl;("\nOshibka:
Dva ili bolee soc nomera v f1 imeut odinakovoe znachenie. Oshibka v znachenii -
%s\n", table1[ii].soc_nom_tab1);<<"\nProgramma vbinujdena
zavershit' svou rabotu, isprav'te oshibki i zapustite programmu
zanovo"<<endl;
getch();(0);
}
//проверка на совпадение паспортных данных в f1
for (ii = 0; ii <= n1; ii++)
{(int i = ii + 1; i <= (n1 - 1); i++)
{(ii == i);(strcmp(table1[ii].pasp_dan_tab1, table1
[i].pasp_dan_tab1)==0)
{<<"\n____________________________________"<<endl;("\nOshibka:
Oshibka v pasportnih dannih klienta. Pasportnim dannim %s prisvoeno dva ili
bolee socialnyh
nomera\n",table1[i].pasp_dan_tab1);<<"\nProgramma vbinujdena
zavershit' svou rabotu, isprav'te oshibki i zapustite programmu
zanovo"<<endl;
getch();(0);
}
//Функция считывания с файла F1ReadF1()
{line[64] = {0};//хранится вся считываемая строка
int iline = 0;n1 = 0;= fopen(file1, "r");(!f1)
{("\nFile %s cannot be open",file1);();(0);
}shapka[64];(shapka,sizeof(shapka),f1); //считывается шапка таблицы(!feof(f1))
{[0] = 0; (line, sizeof(line), f1);(line[0] == 0) continue;
//если строка
пустая, то continue
int i;buf[32] = {0};//буфер для хранения отдельных элементов строки
for (i = 0; i <= (int)strlen(line); i++) //1. циклы для разборки строк по столбцам
{(line[i] != '|') buf[i] = line[i];break;
}[i] = 0;(table1[iline].soc_nom_tab1, buf); //запись содержимого из буфера в массив структуры
i++; // переход на следующий символ после символа '/'
int ii = i;(ii; ii <= (int)strlen(line); ii++)
{(line[ii] != '|') buf[ii-i] = line[ii];break;
}[ii-i] = 0;(table1[iline].pasp_dan_tab1, buf);++;= ii;(i; i
<= (int)strlen(line); i++)
{(line[i] != '|') buf[i-ii] = line[i];break;
}[i-ii] = 0;(table1[iline].fio_tab1, buf);
iline++;//увеличиваем индекс на 1
}(f1);iline;
}
//Функция считывания с файла F2ReadF2()
{line[64] = {0}; //хранится вся считываемая строка
int iline = 0;= fopen(file2, "r");(!f2)
{("Fatal Error: File %s cannot be open",file2);();(0);
}shapka[64];(shapka,sizeof(shapka),f1); //считывается шапка таблицы(!feof(f2))
{(line, sizeof(line), f2);(line[0] == 0) ; //если строка пустая, то continue
int i=0;buf[32] = {0};//буфер для хранения отдельных элементов строки
for (i; i <= (int)strlen(line); i++) //1.разборка строк по столбцам
{(line[i] != '|') buf[i] = line[i];break;
}[i] = 0;(table2[iline].soc_nom_tab2, buf);//запись содержимого из буфера в массив структуры
i++; // переход на следующий символ после символа '|'
int ii = i;(ii; ii <= (int)strlen(line); ii++)
{(line[ii] != '|') buf[ii-i] = line[ii];break;
}[ii-i] = 0;(table2[iline].nom_schet_tab2, buf);++;= ii;(i; i
<= (int)strlen(line); i++)
{(line[i] != '|') buf[i-ii] = line[i];break;
}[i-ii] = 0;(table2[iline].naim_vklad_tab2, buf);++;= i;(ii;
ii <= (int)strlen(line); ii++)
{(line[ii] != '|') buf[ii-i] = line[ii];break;
}[ii-i] = 0;(table2[iline].god_proc_tab2, buf);++;= ii;(i; i
<= (int)strlen(line); i++)
{(line[i] != '|') buf[i-ii] = line[i];break;
}[i-ii] = 0;(table2[iline].ob_vklad_tab2, buf);
iline++;//увеличиваем индекс на 1
}(f2);iline; //количество непустых строк в файле F2
}CreateTab3(int n1, int n2, int max)
{razm = sizeof(struct BUF)*max;= new BUF[razm ];error =
true;num = 0;(int i = 0; i < n1; i++)
{(int ii = 0; ii < n2; ii++)
{(strcmp(table1[i].soc_nom_tab1, table2[ii].soc_nom_tab2)==0)
{(buf[num].fio_tab3,
table1[i].fio_tab1);(buf[num].pasp_dan_tab3,
table1[i].pasp_dan_tab1);(buf[num].god_proc_tab3,
table2[ii].god_proc_tab2);(buf[num].ob_vklad_tab3, table2[ii].ob_vklad_tab2);
num++;
}num;
}
//записываем в файл скопированные элементы
int WriteToF3(int n1, int n2, int max)
{num;= fopen("f3.txt", "a");(!f3)
{("\nFail 'f3.txt' ne mozhet bit
otkrit");();();(0);
}= CreateTab3(n1, n2, max);(f3,"| Ф.И.О. клиента | Пасп. данные |Год. проц. начисл.|Объем вклада|\n");(int
i =0; i<n2;i++)(f3," %s %s %s %s\n",
buf[i].fio_tab3,buf[i].pasp_dan_tab3,buf[i].god_proc_tab3,buf[i].ob_vklad_tab3);(f3);<<"\n_________________________________"<<endl;<<"\nVid
sformirovavsheisya tablizi s dannbimi
F3:"<<endl<<endl;<<"\n
_____"<<endl;<<"|"<<setw(16)<<"FIO
"<<"|"<<setw(22)<<"Passportnbie
dannbie"<<"|"<<setw(10)<<"Godovoi
%"<<"|"<<setw(10)<<"Obwii
vklad"<<"|"<<endl<<endl;<<"<<endl;(int
i =0; i<n2;i++)
{<<"|"<<setw(16)<<buf[i].fio_tab3<<"|"<<setw(22)<<buf[i].pasp_dan_tab3<<"|"<<setw(10)<<buf[i].god_proc_tab3<<"|"<<setw(11)<<buf[i].ob_vklad_tab3<<"|"<<endl;
}<<"\n||"<<endl;<<"\n<<endl;<<"\nsformirovannaya
tabliza zapisana v fail f3.txt"<<endl<<endl;<<"dlya
prosmotra rezul'tata otkroite fail f3.txt v kornevoi papke
pgrogrammi"<<endl;<<""<<endl; getch();0;
}
//ПРОВЕРКА ВВОДАCheckWarnings(int n1, int n2)
{sint_error1 = false;
//НАЛИЧИЕ ПУСТЫХ
ПОЛЕЙ(int i = 0; i < n1;
i++)
{(table1[i].soc_nom_tab1[0] == 0
||table1[i].soc_nom_tab1[0]==' ')
{<<"\n_"<<endl;("\nPystoe pole
Socialny nomer klienta v stroke %d faila
F1\n",(i+2));<<"\nProgramma vbinujdena zavershit' svou rabotu,
isprav'te oshibki i zapustite programmu zanovo"<<endl;();(0);
}
/*if ((strlen(table1[i].soc_nom_tab1>20)||(strlen(table1[i].soc_nom_tab1)==0))
{<<"\n__"<<endl;("\nOshibka:
Socialny nomer klienta bolshe 4-x chislennogo znacheniya v stroke %d faila
F1\n",(i+1));<<"\nProgramma vbinujdena zavershit' svou rabotu,
isprav'te oshibki i zapustite programmu zanovo"<<endl;();(0);
}
/*if (table1[i].soc_nom_tab1[0] > 57)
{<<"\n_"<<endl;("\nOshibka:
Socialny nomer klienta bolshe 4-x chislennogo znacheniya v stroke %d faila
F1\n",(i+1));<<"\nProgramma vbinujdena zavershit' svou rabotu,
isprav'te oshibki i zapustite programmu zanovo"<<endl;();(0);
}*/(table1[i].pasp_dan_tab1[0] == 0
||table1[i].pasp_dan_tab1[0]==' ')
{<<"\n__"<<endl;("\nPystoe pole
Pasportnie dannie klienta v stroke %d faila
F1\n",(i+2));<<"\nProgramma vbinujdena zavershit' svou rabotu,
isprav'te oshibki i zapustite programmu zanovo"<<endl;();(0);
}(table1[i].fio_tab1[0] == 0 ||table1[i].fio_tab1[0]==' ')
{<<"\n_"<<endl;("\nOshibka: Pystoe
pole F.I.O. klienta v stroke %d faila F1\n",(i+2));<<"\nProgramma
vbinujdena zavershit' svou rabotu, isprav'te oshibki i zapustite programmu
zanovo"<<endl;();(0);
}(i = 0; i <n2; i++)
{(table2[i].soc_nom_tab2[0] == 0
||table2[i].soc_nom_tab2[0]==' ')
{<<"\n__"<<endl;("\nOshibka:
Pystoe pole Socialny nomer klienta v stroke %d faila
F2\n",(i+2));<<"\nProgramma vbinujdena zavershit' svou rabotu,
isprav'te oshibki i zapustite programmu zanovo"<<endl;();(0);
}(table2[i].nom_schet_tab2[0] == 0
||table2[i].nom_schet_tab2[0]==' ')
{<<"\n__"<<endl;("\nOshibka:
Pystoe pole Nomer scheta v stroke %d faila
F2\n",(i+2));<<"\nProgramma vbinujdena zavershit' svou rabotu,
isprav'te oshibki i zapustite programmu zanovo"<<endl;();(0);
}(table2[i].naim_vklad_tab2[0] == 0
||table2[i].naim_vklad_tab2[0]==' ')
{<<"\n__"<<endl;("\nOshibka:
Pystoe pole Naimenovanie vklada v stroke %d faila
F2\n",(i+2));<<"\nProgramma vbinujdena zavershit' svou rabotu,
isprav'te oshibki i zapustite programmu zanovo"<<endl;();(0);
}(table2[i].god_proc_tab2[0] == 0
||table2[i].god_proc_tab2[0]==' ')
{<<"\n___<<endl;("\nOshibka: Pystoe
pole Godovoy procent nachislenia v stroke %d faila
F2\n",(i+2));<<"\nProgramma vbinujdena zavershit' svou rabotu,
isprav'te oshibki i zapustite programmu zanovo"<<endl;();(0);
}(table2[i].ob_vklad_tab2[0] == 0 ||table2[i].ob_vklad_tab2[0]=='
')
{<<"\n_"<<endl;("\nOshibka: Pystoe
pole Obiem vklada v stroke %d faila F2\n",(i+2));<<"\nProgramma
vbinujdena zavershit' svou rabotu, isprav'te oshibki i zapustite programmu
zanovo"<<endl;
getch();(0);
}
//Проверка на соответствие файлов
bool error = true;(i = 0; i < n1; i++)
{= true;(int ii = 0; ii < n2; ii++)
{(strcmp(table1[i].soc_nom_tab1, table2[ii].soc_nom_tab2)==0)
{= false;
}(error)
{("\nSochialnie nomera v failah F1 i F2 ne sovpadaut.
Vvedenny soc. nomer - %s\n", table1[i].soc_nom_tab1);();
}(i = 0; i < n2; i++)
{= true;(int ii = 0; ii < n1; ii++)
{(strcmp(table2[i].soc_nom_tab2, table1[ii].soc_nom_tab1)==0)
{= false;
}(error)
{("\nSochialnie nomera v failah F1 i F2 ne sovpadaut.
Vvedenny soc. nomer - %s\n", table2[i].soc_nom_tab2);<<"\nProgramma
vbinujdena zavershit' svou rabotu, isprav'te oshibki i zapustite programmu
zanovo"<<endl;
getch();(0);
}
//ПРОВЕРКА КОРРЕКТНОСТИ ВВОДА ДАНЫХ
//Корректность ввода Ф.И.О. клиента (должен содержать только буквы)--
for (i = 0; i < n1; i++)
{_error1 = false;(int j = 0; j <
strlen(table1[i].fio_tab1);j++)
{((table1[i].fio_tab1[j]<'A') &&
(table1[i].fio_tab1[j]!=' ') && (table1[i].fio_tab1[j]!='.')||
(table1[i].fio_tab1[j]>'z') && (table1[i].fio_tab1[j]!='
')&& (table1[i].fio_tab1[j]!='.'))
{
sint_error1 = true;
}(sint_error1)
{<<"\n__"<<endl;("\nOshibka:
Oshibka vvoda F.I.O. klienta. Pole dolzhno soderzhat bykvi, znak brobela i
tochki. Oshibka v - %s\n",table1[i].fio_tab1);<<"\nProgramma
vbinujdena zavershit' svou rabotu, isprav'te oshibki i zapustite programmu
zanovo"<<endl;
getch();(0);
}0;
}
// ОСНОВНАЯ ПРОГРАММА
int main()
{(LC_ALL,"RUSSIAN");
intk1 = StrKolF1(); //количество строк в файле F1
int razmer1 = sizeof(struct Table1)*(k1 - 1);//определяем = new Table1[razmer1];k2 =
StrKolF2(); //количество строк в файле F2razmer2 = sizeof(struct
Table2)*(k2 - 1);
table2 = new Table2[razmer2]; // и динамически выделяем память
//<СЧИТЫВАНИЕ>n1 = ReadF1();n2 =
ReadF2();= fopen("f3.txt", "w");(!f3)
{("\nFail 'f3.txt' ne mozhet bit otkrit");();(0);
}(n1, n2);(n1, n2);(f3);(n1,n2,k2);();
return 0;
}