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

Автор: Пользователь скрыл имя, 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 Мб (Скачать)

                  }

                        if(!Chislo(snumpr))

                  {

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

                        zcor=false;

                  }

                  if((strchr("2345",sball[0])==NULL)||(strlen(sball)!=1))

                  {

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

                        error=true;

                  }

                  if(zcor)

                  {

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

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

                        p1->numgr=atol(snumgr);

                        p1->numpr=atol(snumpr);

                                p1->ball=sball[0];

                        p2=beg2;

                        while((p2!=NULL)&&(p1->numgr!=p2->numgr))

                        {

                              p2=p2->next;

                        }

                                while((p2!=NULL)&&(p1->numpr!=p2->numpr)&&(p1->numgr==p2->numgr))

                        {

                              p2=p2->next;

                        }

                        if(p2==NULL)

                        {

                              if(beg2==NULL)

                              {

                                    beg2=p1;

                                    beg2->prev=NULL;

                              }

                              else

                              {

                                    end2->next=p1;

                                    p1->prev=end2;

                              }

                              end2=p1;

                              end2->next=NULL;

                        }

                        else

                        {

                              if(p2->prev==NULL)

                              {

                                    p1->prev=NULL;

                                    beg2=p1;

                              }

                              else

                              {

                                    p1->prev=p2->prev;

                                    p2->prev->next=p1;

                              }

                              p2->prev=p1;

                              p1->next=p2;

                        }

                  }

                  else

                  {

                        error=true;

                  }

            }

      }

      p1=beg2;

      while(p1!=NULL)

      {

            p2=p1->next;

            while(p2!=NULL)

            {

                        if((p1->numgr!=p2->numgr)&&(strcmp(p1->fio,p2->fio)==NULL))

                  {

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

                        error=true;

                  }

                  if((p1->numgr==p2->numgr)&&(strcmp(p1->fio,p2->fio)==NULL)&&(p1->numpr==p2->numpr))

                  {

                        printf("\tОшибка! Для  группы %d повторяются ФИО студента %s\n\t\tи номер предмета %в\n",p1->numgr,p1->fio,p1->numpr);

                        error=true;

                  }

                  p2=p2->next;

            }

            p1=p1->next;

      }

      if(error)

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

} 
 

void MakeFile()

{

      char fname[20];

      FILE *F3;

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

      scanf("%s",&fname);

      F3=fopen(fname,"w");

      st2 *p1=beg2;

      st1 *p2;

      int numgr,numpr;

      while(p1!=NULL)

      {

            numgr=p1->numgr;

            fprintf(F3,"\nГруппа: %d\n",numgr);

            while(numgr==p1->numgr)

            {

                        numpr=p1->numpr;

                  p2=beg1;

                  while(p2!=NULL)

                  {

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

                        {

                              fprintf(F3,"   %-20s\n",p2->name);

                              break;

                        }

                        p2=p2->next;

                  }

                  if(p2==NULL)

                        {

                        printf("\tОшибка! Не найдено наименование предмета\n\t\tсоответствующие номеру %d\n",p1->numpr);

                                while(numpr==p1->numpr)

                                {

                                        p1=p1->next;

                                        if(p1==NULL)

                                                break;

                                }

                        }

                        else

                        {

                                while(numpr==p1->numpr)

                                {

                                        fprintf(F3,"\t%-30s%c\n",p1->fio,p1->ball);

                                        p1=p1->next;

                                        if(p1==NULL)

                                                break;

                                }

                        }

                        if(p1==NULL)

                                break;

            }

      }

      printf("\nВыходной файл создан.\nДля завершения работы нажмите любую клавишу\n");

} 

int KolPol(char* str)

{

      int i=0;

      int kol=0;

      bool slovo=false;

      while(str[i]!='\0')

      {

            if((str[i]==' ')||(str[i]=='\t'))

                  slovo=false;

            else

                  if(!slovo)

                  {

                        slovo=true;

                        kol++;

                  }

            i++;

      }

      return kol;

} 

bool Chislo(char snum[])

{

      for(int i=0; i<strlen(snum); i++)

            if(!isdigit(snum[i]))

                  return false;

      if(strcmp(snum,"0")==NULL)

            return false;

      else

            return true;

} 

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

{

      for(int i=0; i<strlen(str); i++)

            if(strchr(sym,str[i])==NULL)

                        return false;

      return true;

} 
 
 

Приложение  Б. Результаты работы программы

 

    Рис 1 - Пример успешного выполнения программы.

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