Программирование

Автор: Пользователь скрыл имя, 08 Апреля 2012 в 11:29, курсовая работа

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

Данная программа предназначена для шифрования файлов наложением кода ключа по методу XOR(исключающего или).

Содержание

1.Программа шифрования текста методом наложения кода ключа…..стр.3

2.Графическое приложение: игра PacMan……………………………..стр.13

3.Клиент базы данных Microsoft Access……………………………….стр.26

Работа содержит 1 файл

Курсовой.doc

— 566.50 Кб (Скачать)

                                     Pacman.StartY = j * CellSize;

                                     break;

      }

    CheckStartPlace();

}

 

//---------------------------------------------------------------------------

 

void LevelCreate()

{

    Form1->TimersRun(false);

    PrimGenerateMaze();

 

    //постобработка сгенерированного лабиринта

    //разбиваем рэндомные стены чтоб были проходы

    Sleep(200);

    for (int x = 1; x < Width; x++)

        for (int y = 1; y < Height; y++)

        {

        //если путь из данной локации в соседнюю больше constMaxWay,

        //то разбиваем стену между этими локациями

            WaveTracingSolve(x,y);

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

                if (Maze[x + dx[i]][y + dy[i]].mark > constMaxWay)

                {

                    BreakWall( x, y, dx[i], dy[i]);

                    ShowMaze();

                    Sleep(100);

                }

    }

    p_Life=3;

    CreateMap();

    ShowMap();

    MediaPlayer[sNextLevel]->Play();

    Form1->TimersRun(true);

}

 

//---------------------------------------------------------------------------

 

void CheckStartPlace()

{

    Pacman.X = Pacman.StartX;

    Pacman.Y = Pacman.StartY;

    Pacman.Dir    = 3;

    Pacman.NewDir = 3;

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

        Pacman.DirFlag[i] = false;

    Pacman.Active = false;

    Pacman.ActiveTime = 0;

 

 

    for (int a = 0; a < 4; a++)

    {

        Ghost[a].X = a * CellSize;

        Ghost[a].Y = a * CellSize;

        Ghost[a].Dir = 3;

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

            Ghost[a].DirFlag[i] = false;

        Ghost[a].Shy = false;

        Ghost[a].ShyTime = 0;

    }

 

    Bonus.Kind = 0;

    Bonus.Life = 0;

}

 

//---------------------------------------------------------------------------

 

void LevelRenewSeed()

{

    ImageBack->Canvas->Brush->Color = clBlack;

    ImageBack->Canvas->FillRect(Rect(Pacman.X + 1, Pacman.Y + 1, Pacman.X + CellSize, Pacman.Y + CellSize));

}

 

//---------------------------------------------------------------------------

 

bool CanGo(int x, int y, int dx, int dy)

{

    byte f = '0';

 

    if (dx == -1) f = Maze[x][y].left_wall;

    if (dx == 1)  f = Maze[x + 1][y].left_wall;

    if (dy == -1) f = Maze[x][y].up_wall;

    if (dy == 1)  f = Maze[x][y + 1].up_wall;

 

    if (f == '0')

      return true;

    return false;

}

 

//---------------------------------------------------------------------------

 

void Solve()

{

    bool FindNull;

 

    //{ начинаем с итерации номер 1 }

    do

    {

        FindNull = false; //положим нулей нет -> волну построили -> конец алгоритма

        for ( int x = 0; x < Width; x++)

            for ( int y = 0; y < Height; y++)

            {

                if (Maze[x][y].mark == N)

                //найти локации, помеченные числом N

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

                    //просмотр соседних локаций

                        if ((CanGo(x, y, dx[i], dy[i])) && (Maze[x + dx[i]][y + dy[i]].mark == 0))

                        //локация доступна и помечена нулем -> помечаем ее числом N + 1

                            Maze[x + dx[i]][y + dy[i]].mark = N + 1;

                        if (Maze[x][y].mark == 0)

                            FindNull = true; //нашли локации помеченные нулем => продолжаем строить волну

            }

            N++;

        }

    while (FindNull == true);     //повторять, если есть непройденные локации

}

 

//---------------------------------------------------------------------------

 

void WaveTracingSolve(int xs, int ys)

{

    int x, y, xc, yc;

    for (int x = 0; x < Width; x++)

        for (int y = 0; y < Height; y++)

            Maze[x][y].mark = 0;

 

    Maze[xs][ys].mark = 1;        //стартовой локации соответствует единица

    N = 1;

    Solve();

    Form1->Label1->Caption = "Алгоритм сработал";

}

 

//---------------------------------------------------------------------------

 

void __fastcall TForm1::N2Click(TObject *Sender)

{

MessageBox(Form1->Handle,"Игра PacMan.\nРазработчик:Бутеев Илья Сергеевич.\nГруппа:АУ-20Д","Игра PacMan о программе",MB_OK);

}

//---------------------------------------------------------------------------

 

 

 

 

 

 

 

 

3. Клиент для базы данных Microsoft Access

 

База данных, которая содержит записи о книгах по Photoshop:

 

Интерфейс программы

 

Поля, которые содержит данная база:

 

      записей и при добавлении новой записи в базу увеличивается на 1;

      поле «Название» - указывает название книги;

      поле «Страниц»- указывает число страниц в книге;

      поле «Год» (обязательно к заполнению) - год выпуска книги;

      поле «Издатель» - указывает издательство данной книги;

      поле «ISBN»-уникальный код книги

      поле «Тираж» - кол-во напечатанных книг

      поле «Стоимость»-цена книги.

 

            

Клиент может выполнять в базе данных следующие операции, реализованные при помощи запросов SQL: выполнение переходов к первой, предыдущей, следующей, последней записи; добавление, изменение  и удаление записей; быстрый поиск по конкретному полю; сортировка по 2 полям. Также клиент базы данных в любой момент времени отображает текущее количество записей в базе и видит развёрнутый комментарий к любой записи.

 

Основные компоненты:

1.      Набор кнопок перемещения по базе и её изменения

(«Первая», «Предыдущая», «Добавить», …)

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

3.      Основная таблица, содержащая все записи и дополнительное поле Memo, содержащее комментарии.

 

 

 

 

Текст программы

 

 

//---------------------------------------------------------------------------

void __fastcall TForm1::buttonFirstClick(TObject *Sender)

{

ADOQuery1->First();       

}

//---------------------------------------------------------------------------

void __fastcall TForm1::buttonPrevClick(TObject *Sender)

{

ADOQuery1->Prior();       

}

//---------------------------------------------------------------------------

void __fastcall TForm1::buttonNextClick(TObject *Sender)

{

ADOQuery1->Next();       

}

//---------------------------------------------------------------------------

void __fastcall TForm1::buttonEndClick(TObject *Sender)

{

ADOQuery1->Last();       

}

//---------------------------------------------------------------------------

void __fastcall TForm1::radioSortFieldClick(TObject *Sender)

{

  switch (radioSortField->ItemIndex) {

  case 1:

    sortField = "book_name";

    break;

  case 2:

    sortField = "pages";

    break;

  case 3:

    sortField = "pub_year";

    break;

  case 4:

    sortField = "publisher";

    break;

  case 5:

    sortField = "isbn";

    break;

  case 6:

    sortField = "pub_count";

    break;

  case 7:

    sortField = "cost";

    break;

  default:

    sortField = "id";

  }

  updateData();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::radioSearchFieldClick(TObject *Sender)

{

  switch (radioSearchField->ItemIndex) {

  case 0:

    searchField = "book_name";

    break;

  case 1:

    searchField = "pages";

    break;

  case 2:

    searchField = "pub_year";

    break;

  case 3:

    searchField = "publisher";

    break;

  case 4:

    searchField = "isbn";

    break;

  case 5:

    searchField = "pub_count";

    break;

  case 6:

    searchField = "cost";

    break;

  }

  updateData();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::editSearchStringChange(TObject *Sender)

{

  searchString = editSearchString->Text;

  updateData();

}

//---------------------------------------------------------------------------

 

void TForm1::updateData()

{

  AnsiString sql = "";

  sql += "SELECT * FROM books ";

  if (!searchString.IsEmpty()) {

    sql += " WHERE ";

    sql += searchField;

    sql += " LIKE '%";

    sql += searchString;

    sql += "%' ";

  }

  sql += "ORDER BY ";

  sql += sortField;

  sql += " ";

  sql += sortWay;

 

  ADOQuery1->SQL->Clear();

  ADOQuery1->SQL->Add(sql);

  ADOQuery1->Active=true;

 

  editCount->Text = ADOQuery1->RecordCount;

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::radioWayClick(TObject *Sender)

{

  switch (radioWay->ItemIndex) {

  case 0:

    sortWay = "ASC";

    break;

  default:

    sortWay = "DESC";

    break;

  }

  updateData();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::FormCreate(TObject *Sender)

{

  sortField = "id";

  searchField = "book_name";

  searchString = "";

  sortWay = "ASC";

  updateData();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::buttonAddClick(TObject *Sender)

{

  Form2->Edit1->Text = "";

  Form2->Edit2->Text = "100";

  Form2->Edit3->Text = "2009";

  Form2->Edit4->Text = "";

  Form2->Edit5->Text = "";

  Form2->Edit6->Text = "10";

  Form2->Edit7->Text = "0";

  Form2->buttonAdd->Show();

  Form2->buttonEdit->Hide();

  Form2->ShowModal();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::buttonEditClick(TObject *Sender)

{

  Form2->Edit1->Text = ADOQuery1->Fields->FieldByName("book_name")->AsString;

  Form2->Edit2->Text = ADOQuery1->Fields->FieldByName("pages")->AsString;

  Form2->Edit3->Text = ADOQuery1->Fields->FieldByName("pub_year")->AsString;

  Form2->Edit4->Text = ADOQuery1->Fields->FieldByName("publisher")->AsString;

  Form2->Edit5->Text = ADOQuery1->Fields->FieldByName("isbn")->AsString;

  Form2->Edit6->Text = ADOQuery1->Fields->FieldByName("pub_count")->AsString;

  Form2->Edit7->Text = ADOQuery1->Fields->FieldByName("cost")->AsString;

  Form2->buttonAdd->Hide();

  Form2->buttonEdit->Show();

  Form2->ShowModal();

}

//----------------------------------------------------------------

 

void __fastcall TForm1::buttonDeleteClick(TObject *Sender)

{

  AnsiString sql;

  sql += "DELETE FROM books WHERE ";

  sql += "id = ";

  sql += ADOQuery1->Fields->FieldByName("id")->AsString;

  int Res = MessageBox(NULL,"Вы хотите удалить запись?", "Удаление", MB_YESNO|MB_ICONWARNING);

  if(Res == IDYES) {

    ADOQuery1->SQL->Clear();

    ADOQuery1->SQL->Add(sql);

    ADOQuery1->ExecSQL();

    updateData();

  }

}

//----------------------------------------------------------------

30

 



Информация о работе Программирование