Технология программирования

Автор: Пользователь скрыл имя, 17 Ноября 2010 в 19:32, курсовая работа

Краткое описание

Задание к работе
Разработать программу совместной обработки файлов типа F1 и F2 для формирования выходного документа типа F3.

Оглавление

1. Задание к работе 3
2. Ограничения на входные и выходные данные 4
2.1 Ограничения, накладываемые на входные данные, считываемые из первого файла: 4
2.2 Ограничения, накладываемые на входные данные, считываемые из второго файла: 4
2.3 Другие ограничения: 4
3. Структура целей разрабатываемой программы 4
4. Таблицы решений 5
4.1 ТР для функции “Проверка на корректность файла F1” 5
4.2 ТР для функции “Проверка на корректность файла F2” 6
4.3 ТР для функции “Формирование выходного файла” 6
5. Схема работы системы 7
5.1 Схема основной функции 7
5.2 Схема функции “Проверка на корректность файла F1” 8
5.3 Схема функции “Проверка на корректность файла F2” 12
5.4 Схема функции “Формирование выходного файла” 15
6. Тестирование программы 17
6.1 Тестирование функции “Проверка на корректность файла F1” 17
6.2 Тестирование функции “Проверка на корректность файла F2” 19
6.3 Тестирование функции “Формирование выходного файла” 22
7. Выводы 23
8. Список используемой литературы 24
Приложение А. Текст программы 25
Приложение Б. Результаты работы программы 31

Файлы: 1 файл

последний вариант курсовой по тп.doc

— 1.46 Мб (Скачать)
 

    Ожидаемый результат: сообщение "Не найдено наименование предмета соответствующее номеру 65".

    Фактический результат: совпадает с ожидаемым.

    Результат тестирования: неуспешный. 

    

    Тест  2

    Цель  теста: проверить функционирование программы при присутствии в файле F1 ФИО преподавателей соответствующих всем табельным номерам из файла F2.

    Содержание теста: 10.txt 

№ предмета Наименование  предмета
12 Физика
72 Программирование
30 Электроника
19 История
 
 
 
 
 

    Содержание  теста: 20.txt 

№ группы Фамилия, имя, отчество № предмета Оценка
224 Гаскаров Рамиль Вильевич 12 4
224 Иванова Алла Сергеевна 12 3
224 Лысков Дмитрий  Иванович 12 4
224 Гаскаров Рамиль Вильевич 30 5
224 Иванова Алла Сергеевна 30 4
224 Лысков Дмитрий  Иванович 30 4
230 Вахитов Айнур  Бакеевич 72 5
230 Ильясова Альбина  Вильевна 72 4
230 Вахитов Айнур  Бакеевич 12 5
230 Ильясова Альбина  Вильевна 12 3
 

    Ожидаемый результат: Программа успешно выполнена.

    Фактический результат: совпадает с ожидаемым.

    Результат тестирования: неуспешный. 

 

7. Выводы

 

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

8. Список используемой литературы

 
 
 
 

1. Технологии  программирования [Электронный ресурс] / коллектив авторов под рук.  Гвоздева В.Е. ; отдел образовательных  технологий УГАТУ. - Электрон. текстовые  и граф. дан. (3,9 Мб). - Уфа : УГАТУ, 2007 

2. Савич У. С++ во всей полноте. - Киев: Издательская группа BHV; СПб.: Питер, 2005. - 784 с. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Приложение А. Текст программы

 

#pragma hdrstop 

#include <stdlib.h>

#include <ctype.h>

#include <stdio.h>

#include <string.h>

#include <conio.h> 

void Proverka1();

void Proverka2();

void MakeFile();

int KolPol(char* str); 

bool Chislo(char snum[]);

bool Correct(char str[], char sym[]); 

struct st1

{

      int num;

      char name[30];

      st1 *next;

} *beg1,*end1; 

struct st2

{

      int numgr;

      int numpr;

      char fio[50];

      char ball;

      st2 *next;

      st2 *prev;

} *beg2,*end2; 

#pragma argsused

void main()

{

      clrscr();

      Proverka1();

      Proverka2();

      MakeFile();

      getch();

} 

void Proverka1()

{

      char fname[20];

      FILE *F1;

      printf("Введите имя первого файла: ");

      scanf("%s",&fname);

      while((F1=fopen(fname,"r"))==NULL)

      {

            printf("\tОшибка! Файл  с именем %s не найден\n\t\tДля повторного  ввода нажмите любую клавишу\n\t\tДля  выхода нажмите Esc\n\n",fname);

            if(getch()==27)

                  exit(0);

            else

            {

                  printf("Введите имя  первого файла: ");

                  scanf("%s",&fname);

            }

      }

      bool error=false;

      char str[1000];

      st1 *p1,*p2;

      beg1=NULL;

      while(fgets(str,1000,F1))

      {

            if(KolPol(str)!=2)

            {

                  printf("\tОшибка! В записи\n\t\t%s\t\tне хватает либо присутствуют лишние поля\n\t\tЗапись не будет учитываться при формировании выходного файла\n",str);

                        error=true;

            }

            else

            {

                  char snum[10];

                  char name[30];

                  sscanf(str,"%s%s",snum,name);

                  if(!Correct(name,"_-абвгдежзийклмнопрстуфхцчшщъыьэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"))

                  {

                        printf("\tОшибка! Наименование предмета %s\n\t\tсодержит недопустимые символы\n",name);

                        error=true;

                  }

                  if(!Chislo(snum))

                  {

                        printf("\tОшибка! Номер предмета %s\n\t\tне является числом большим нуля\n\t\tЗапись не будет учитываться при формировании выходного файла\n",snum);

                        error=true;

                  }

                  else

                  {

                        p1 = (st1*) malloc(sizeof(st1));

                        sscanf(str,"%s%s",snum,p1->name);

                        p1->num=atol(snum);

                        if(beg1==NULL)

                              beg1=p1;

                        else

                              end1->next=p1;

                        end1=p1;

                        end1->next=NULL;

                  }

            }

      }

      p1=beg1;

      while(p1!=NULL)

      {

            p2=p1->next;

            while(p2!=NULL)

            {

                  if(p1->num==p2->num)

                  {

                        printf("\tОшибка! В записях присутствуют одинаковые номера предметов: %d\n",p1->num);

                        error=true;

                  }

                  if(strcmp(p1->name,p2->name)==NULL)

                  {

                        printf("\tОшибка! В записях присутствуют одинаковые наименования предметов: %s\n",p1->name);

                        error=true;

                  }

                  p2=p2->next;

            }

            p1=p1->next;

      }

      if(error)

            printf("\nВнимание! В связи с наличием ошибок возможна некорректность выходного файла\n");

} 

void Proverka2()

{

      char fname[20];

      FILE *F2;

      printf("\nВведите имя второго файла: ");

      scanf("%s",&fname);

      while((F2=fopen(fname,"r"))==NULL)

      {

            printf("\tОшибка! Файл  с именем %s не найден\n\t\tДля повторного  ввода нажмите любую клавишу\n\t\tДля  выхода нажмите Esc\n\n",fname);

            if(getch()==27)

                  exit(0);

            else

            {

                  printf("\nВведите имя  второго файла: ");

                  scanf("%s",&fname);

            }

      }

      bool error=false;

      char str[1000];

      st2 *p1,*p2;

      beg2=NULL;

      while(fgets(str,1000,F2))

      {

            if(KolPol(str)!=4)

            {

                  printf("\tОшибка! В записи\n\t\t%s\t\tне хватает либо присутствуют лишние поля\n\t\tЗапись не будет учитываться при формировании выходного файла\n",str);

                  error=true;

            }

            else

            {

                  bool zcor=true;

                  char snumgr[10];

                  char snumpr[10];

                  char fio[50];

                  char sball[10];

                  sscanf(str,"%s%s%s%s",snumgr,fio,snumpr,sball);

                  if(!Chislo(snumgr))

                  {

                        printf("\tОшибка! Номер группы %s не является числом большим нуля\n\t\tЗапись не будет учитываться при формировании выходного файла\n",snumgr);

                        zcor=false;

                  }

                  if(!Correct(fio,"_абвгдежзийклмнопрстуфхцчшщъыьэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"))

                  {

                        printf("\tОшибка! ФИО студента %s\n\t\tсодержит недопустимые символы\n",fio);

                        error=true;

Информация о работе Технология программирования