МИНОБРНАУКИ РОССИИ

федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Балтийский государственный технический университет «ВОЕНМЕХ» им. »

(БГТУ «ВОЕНМЕХ» им. »)


БГТУ. СМК-Ф-4.2-К5-01


Факультет  __________  _______________________________________

Кафедра  __________  _______________________________________

Дисциплина  __________________________________________________

КУРСОВАЯ РАБОТА

на тему

Разработка базы данных памятников архитектуры Санкт-Петербурга

Выполнил студент группы ____________

______________________________

РУКОВДИТЕЛЬ

__________________  _______________

Оценка  _____________

«______»  _________________  2016 г.

САНКТ-ПЕТЕРБУРГ

2016 г.

Содержание

Введение        3

Массивы символов в C++        4

Описание глобальных переменных, разработанных подпрограмм        10

Заключение        11

Список используемых источников        12

Приложение А        13

Приложение Б        16

Введение

Цель работы: освоение функций работы со структурным типом данных и файлами.

Постановка задачи: создать базу данных памятников архитектуры Санкт-Петербурга (название, месторасположение, год создания); организовать поиск данных о памятниках: 1. по названию, 2. по году создания и месторасположению. Обработка должна включить следующие функции:

НЕ нашли? Не то? Что вы ищете?

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

Массивы символов в C++

Как и в ANSI С, для представления символьных строк в C++ не существует специального строкового типа. Вместо этого строки в C++ представляются как массивы элементов типа char за­канчивающиеся терминатором строки - символом с нулевым значением (' \0 '). Строки, заканчивающиеся нуль - терминатором, часто называют ASCIIZ-строками. Символьные строки состоят из набора символьных констант, заключенного в двойные кавычки:

"Это строка символов..."

В таблице 1 приведен набор констант, применяющихся в C++ в качестве символов.

Таблица 1. Классификация символов

прописная буква

от 'А' до 'Z',OT 'А' до 'Я'

строчная буква

от ' а ' до ' z ' , от ' а ' до ' я '

цифра

от ' 0 ' до ' 9 '

пустое место

горизонтальная табуляция ' \9 ' , перевод строки (код ASCII 10), вертикальная табу­ляция (код ASCII 11), перевод формы (код ASCII 12), возврат каретки (код ASCII 13)

символы

пунктуации

!"#$%&' ()*,-./:;<=>?@[\]^_'{|}~

управляющий символ

все символы с кодами от 0 до 1Fh включительно и символ с кодом 7Fh

пробел

символ пробела (код ASCII 32)

шестнадцатеричная цифра

от ' 0 ' до ' 9 ' , от ' А ' до ' F ' , от ' а ' до ' f '


При объявлении строкового массива необходимо принимать во внимание наличие терминатора в конце строки, отводя тем самым под строку на один байт больше:

// Объявление строки размером 10 символов,

// включая терминатор. Реальный размер

// строки:  9 символов + 1 терминатор char buffer[10];

Строковый массив может при объявлении инициализировать­ся начальным значением. При этом компилятор автоматически вычисляет размер будущей строки и добавляет в конец нуль-терминатор:

// Объявление и инициализация строки:

char Wednesday[]  = "Среда";

// что равносильно:

char Wednesday[]  =

{'С',’р',’е','д','а’,'\0'};

В качестве оператора ввода при работе со строками вместо оператора записи в поток » лучше использовать функцию get-line(), так как потоковый оператор ввода игнорирует вводи­мые пробелы, а кроме того, может продолжить ввод элементов за пределами массива, если под строку отводится меньше места, чем вводится символов. Функция getline () принимает два пара­метра: первый аргумент указывает на строку, в которую осущест­вляется ввод, а второй - число символов, подлежащих вводу.

Рассмотрим пример объявления символьных строк и исполь­зования функции ввода getline ( ).

#include  <iostream. h>

int main()

{

char  myString[4];

cout  «  "Введите  строку:  "  «  '\n';

cin. getline(myString,  4);

cout  «  "Вы ввели:  "  «  myString;

return  0;

}

Объявленная в начале программы строка myString может принять только три значащих символами будет завершена нуль - терминатором. Все последующие символы, вводимые в этот строковый массив, будут отброшены. Как видно из примера, при использовании функции getline ( ) вторым параметром следует указывать число, меньше или равное размеру вводимой символь­ной строки.

Большинство функций работы со строками содержится в биб­лиотеке string. h. Основные функции работы с символьными массивами сведены в таблицу 2.

Таблица 2.

Функции работы со строками символов

Наименование

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

strcpy

копирует строку2 в строку1

strcat

присоединяет строку2 в конец строки1

strchr

возвращает позицию первого вхождения сим­вола в строку

strcmp

сравнивает строку1 со строкой2, различая про­писные и строчные буквы

strcmpi

см. stricmp

strcpy

копирует строку2 в строку1

strcspn

возвращает позицию первого вхождения сим­вола из заданного набора символов

strdup

распределяет память и делает копию строки

strerror

возвращает по заданному номеру системной ошибки указатель на строку текста сообщения об ошибке

Наименование

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

strupr

преобразует все буквы строки в прописные буквы

isalnum(c)

истина, если символ с - является буквой или цифрой

isalpha(c)

истина, если символ с является буквой

isascii (с)

истина, если код символа с <= 127

iscntrl{c)

истина, если с - управляющий символ

isdigit (с)

истина, если с - символ десятичной цифры

isgraph(c)

истина, если с - печатаемый символ (код от 33 до 126)

islower(c)

истина, если с - строчная буква

isprint (c)

истина, если с - печатаемый символ (код от 33 до 126) или пробел

ispunct (c)

истина, если с - символ пунктуации

isspace(c)

истина, если с - символ пустого места или

пробела

isupper(c)

истина, если с - прописная буква

isxdigit (c)

истина, если с - символ шестнадцатеричной цифры

toascii (c)

возвращает код с или 128, если код с больше 127

_tolower(c)

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

tolower(c)

преобразует символ прописной буквы в сим­вол строчной, не изменяя все остальные символы, В отличие от _tolower ( ) снача­ла проверяет, является ли с прописной бук­вой. Не являющиеся прописными буквами символы не преобразуются. Возвращает код строчной буквы

_toupper(c)

преобразует символ строчной буквы в сим­вол прописной. Используется, если точно известно, что с - строчная буква. Возвращает код прописной буквы

toupper(c)

преобразует символ строчной буквы в сим­вол прописной, не изменяя все остальные символы. В отличие от _toupper () снача­ла проверяет, является ли с строчной бук­вой. Не являющиеся строчными буквами символы не преобразуются. Возвращает код прописной буквы

В следующих пунктах данной главы самые популярные из приведенных функций будут рассмотрены подробно, однако сле­дует учесть, что в некоторых версиях поставки библиотек C++ данные функции могут осуществлять неправильно (или не вы­полнять вовсе) работу с национальными символами.

Описание глобальных переменных, разработанных подпрограмм

Описание глобальных переменных:

int TABLE_ROWS = 8

Количество строк в выводимой таблице

DataTable t1;

Накопитель объектов.

Dialog dialog

Служебный класс для взаимодействия с пользователем.

unsigned int ch;

Пользовательский символ.



Описание разработанных подпрограмм:

Название подпрограммы

Назначение

viod gotoxy(int x, int y)

Перемещение курсора.

bool is_empty(std::ifstream& pFile)

Проверка файла на пустоту.

void clear_all()

Очистить экран.



Заключение

В результате выполнения данной курсовой работы, была создана программа, реализующая простую базу данных по обработке информации о памятниках архитектуры Санкт-Петербурга. Также были отработаны навыки по разработке прикладных программ на языке программирования C++ и среды разработки Visual Studio. Рассматривая результаты работы программы, представленные в Приложении Б, можно сказать, что разработанная программа превосходно решает поставленную задачу.

Список используемых источников

, Фомин на языке Си: Учеб. пособие. - 2-е доп. изд. - М.: Финансы и статистика, 2004. - 600 с. Ж ил. C/C++ и MS Visual C++ 2008 для начинающих. - СПб.: БХВ-петербург. 2009. - 624 с.:ил. + Дистрибутив (на DVD)

Приложение А

#include <cstdlib>

#include <iostream>

#include <stdio. h>

#include <string>

#include <conio. h>

#include <windows. h>

#include <fstream>

#include <iomanip>

#include "common. h"

#include "mt. h"

#include "dialog. h"

using namespace std;

int main(int argc, char *argv[]) {

  setlocale(LC_ALL, "Russian");

  SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в поток ввода

  SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода

  char c;

  DataTable t1;

  t1.show();

  int up = 0;

  unsigned int ch;

  while(1) {

  if(kbhit()) {

  ch = getch();

  if (ch == 27) {  // выходим из программы клавишей Esc

  if (t1.change) {

  Dialog dialog(& t1);

  dialog. save();

  }

                        clear_all();

  break;

  }

  if (ch ==  110) {

  Dialog dialog(& t1);

  dialog. show();

  }

  if ((ch == 'q') || (ch == 'Q')) { // пролистывание содержимого вверх

  t1.data_up(); 

  }

  if ((ch == 'a') || (ch == 'A')) { // пролистывание таблицы вниз

  t1.data_down(); 

  }

  if ((ch == 'h') || (ch == 'H')) { // справка по использованию программы

  Dialog help;

  help = Dialog();

  help. show_help();

  t1.show(); 

  }

                if ((ch == 's') || (ch == 'S')) { // поиск по БД

  Dialog help;

  help = Dialog(& t1);

  help. search();

  t1.show(); 

  }

  while(kbhit()) getch();

  }

  }

  return 0;

}

Приложение Б