| МИНОБРНАУКИ РОССИИ федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Балтийский государственный технический университет «ВОЕНМЕХ» им. » (БГТУ «ВОЕНМЕХ» им. ») |
БГТУ. СМК-Ф-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;
}
Приложение Б






