Разработка информационно-поисковой системы «Населенность»
скачать (146.7 kb.)
Доступные файлы (7):
Baza.CPP | |||
BAZA.H | |||
Baza.EXE | |||
BAZA.TXT | 1kb. | 01.12.2007 18:59 | ![]() |
BAZA.TXT | 1kb. | 23.05.2006 21:05 | ![]() |
курсовая_работа.doc | 624kb. | 22.05.2006 21:11 | ![]() |
титул лист.doc | 27kb. | 21.05.2006 17:48 | ![]() |
- Смотрите также:
- Информационный поиск в Интернете [ документ ]
- Информационно-техническое обеспечение системы управления персоналом [ документ ]
- Информационные системы. Пример информационно-справочной системы [ документ ]
- Лабораторная работа№3 Статистическое моделирование информационно-измерительной системы [ документ ]
- Автоматизированные информационно-управляющие системы [ документ ]
- Белай О.М. Информационно-измерительные системы. Методические указания к лабораторным работам [ документ ]
- Захаров В.П. Информационно-поисковые системы [ документ ]
- Занятие 1 технологии профессионального просвещения план [ документ ]
- Django - пример простого проекта с поисковой формой [ документ ]
- Курс лекции по дисциплине Современные программные средства [ лекция ]
- Тематика курсовых работ разработка рекомендаций по выбору системы обнаружения атак [ документ ]
- Казаринов Л.С., Попова О.В., Барбасова Т.А. Автоматизированные информационно-управляющие системы (часть 1) [ документ ]
курсовая_работа.doc

520100 ДФ 220200 КР 11 ПЗ
Содержание
Введение…………………………………………………………………….…5
Структура программного обеспечения…………………………………6
Алгоритмы по созданию функций...........................................................7
2.1 Описание и назначение функций..........................................................7
2.2 Спецификация переменных...................................................................8
Отладка и компиляция. Протоколы тестирования................................10
Руководство пользователя.......................................................................14
Руководство программиста......................................................................15
Заключение........................................................................................................16
Литература........................................................................................................17
ПРИЛОЖЕНИЕ А Текст программы.............................................................18
ПРИЛОЖЕНИЕ Б Текст модуля.....................................................................19
Введение
Введение
Язык программирования С++, который разработал Страуструп в настоящее время получил весьма широкое распространение. Этому способствовали его простота, удобное представление всех структурных конструкций, пригодность для использования, как в учебных целях, так и для написания серьезных программ, высокая степень модульности, упрощающая процесс программирования, результативность автоматической проверки составленных программ на их корректность через развитый институт типов данных, высокое быстродействие трансляторов, эффективность объектных модулей. Рассматриваемый язык программирования хорошо приспособлен для решения широкого круга задач. Он содержит мощные средства структурирования данных.
В настоящее время почти вся современная научная деятельность человека связана с программированием. Но одной из наиболее неотрывно связанных с вычислительной техникой наук является ТРПО (технологии разработки программного обеспечения), нашедшая применение в современной вычислительной технике: в теоретическом программировании, при проектировании ЭВМ на ЭВМ и сетей ЭВМ, баз данных, систем логического управления.
Главной целью данной работы является написание полноценной программы с помощью, которой можно было бы редактировать, просматривать, сортировать и выполнять различные действия с базой данных (в частности база данных «Населенность»).
1.Структура программного обеспечения
Программное обеспечение работает в операционных системах Windows 95, Windows 98, Windows 2000 и Windows XP. Выбор операционных систем обу-словлен удобством, изученностью и доступностью для пользователей, наличием встроенного в систему интерфейса удобного для использования данного программного обеспечения.
Вся структура программного обеспечения представлена на рисунке 1. Её можно разделить на несколько уровней. Нижний уровень – основная программа. Второй уровень – программный модуль . Третий уровень – функции реализованные в данном модуле. Четвертый уровень - файл. Такая структура обусловлена требованиями, предъявляемыми к среде разработки: удобство использования, удобство редактирования программного кода, быстрота компилирования.
Файл
Функции




Программный модуль


Основная программа
Рисунок 1 – Структура программы
Программный модуль «Населенность». Предназначен для контроля основных операций данного программного обеспечения.
В приложении автоматизированы следующие функции:
1) dobav – добавление новых записей в базу данных
2) vivod – вывод на экран всех записей базы данных
3) poisk – поиск информации в базе данных
4) del – удаление записи в базе данных
5) sort – сортировка записей в базе данных
6) dell_enter – вспомогательная функция
2.Алгоритмы по созданию функций
2.1.Описание и назначение функций
Вся информация о назначении функций представлена в таблице 2.1.
Таблица 2.1 – Описание функций
Функция | Назначение |
dobav | служит для добавления новых записей в базу данных (Город, область, население, год основания). Сначала введенные данные записываются в строковую переменную «buf», после этого происходит добавление новых строк в файл, то есть четыре строчки в файле это одна запись. |
vivod | служит для вывода на экран всех записей базы данных. Имеется возможность постраничного вывода. Изначально данные записываются в строковые переменные, далее происходит вывод информации на экран. |
poisk | служит для поиска информации об определенном городе, то есть осуществляется поиск в базе данных по полю «Город». Данные считываются из файла в строковые переменные, далее идет сравнение считавшихся данных с искомыми по полю «Город» и т.д. |
del | служит для удаления определенного поля из базы данных. Изначально все записи в файле копируются в массив записей «ms». Далее происходит запрос номера удаляемой строчки и выполняется копирование всех данных, кроме удаляемого поля, из массива записей «ms» в файл. |
dell_enter | данная функция является вспомогательной и не является основной. Она служит для удаления в конце файла «13» кода символа. |
sort | сортировка базы данных по году основания городов. Сначала данные из несортированного файла заносятся в массив записей «ms». Затем производится сортировка массива по году основания городов и данные из отсортированного массива заносятся в файл. |
2.2 Спецификация переменных
Вся информация о переменных представлена в таблице 2.2.
Таблица 2.2 – Спецификация переменных
Имя | Назначение | Тип |
Главная программа | ||
y | выбор пунктов меню | int |
функция dobav | ||
buf | хранит введенную информацию | char |
y | служит для завершения или продолжения добавления данных | int |
fp | файловая переменная | FILE |
fout | файловая переменная | FILE |
функция vivod | ||
str.. str4 | строки для хранения считываемых полей с файла | char |
i | служит для построчного считывания с файла | int |
n | номер строки | int |
kol | хранит количество строк | int |
fp2 | файловая переменная | FILE |
функция poisk | ||
str.. str4 | строки для хранения считываемых полей с файла | char |
poisk | хранит искомую информацию | char |
i | служит для построчного считывания с файла | int |
fp3 | файловая переменная | FILE |
функция del | ||
str.. str4 | строки для хранения считываемых полей с файла | char |
s | структура для хранения полей БД | struct |
n | номер удаляемой строчки | int |
i | параметр цикла | int |
j | параметр цикла | int |
fp6 | файловая переменная | FILE |
kol | хранит количество строк файла | int |
функция dell_enter | ||
kol_s | хранит количество строк файла | int |
_kol_s | текущее количество строк файла | int |
fp | файловая переменная | FILE |
fp1 | файловая переменная | FILE |
buf | служит для хранения строк файла | char |
Продолжение таблицы 2.2
Имя | Назначение | Тип |
функция del | ||
str.. str4 | строки для хранения считываемых полей с файла | char |
i | параметр цикла | int |
j | параметр цикла | int |
fp6 | файловая переменная | fp6 |
kol | хранит количество строк файла | int |
3.Отладка и компиляция. Протоколы тестирования
В ходе компиляции и отладки были выявлены и исправлены следующие ошибки и недочеты, представленные в таблице 3.
Таблица 3 – Ошибки и недочеты
Ошибка или недочет | Способ исправления |
1. В конце файла, после добавления, оставался тринадцатый код символа. Что и мешало правильной работе других функций. | Была написана специальная функция для удаления тринадцатого кода символа. |
2. После использования функции удаления, не правильно работала функция поиска, то есть после запуска поиска не происходил ввод искомой информации. | Исправлен способ ввода информации, то есть теперь в функции поиска записывается искомая информация с помощью функции «scanf» |
3. После вывода более 100 строчек сдвигается таблица. | Сделан форматный вывод информации. |
4. Не во всех функциях использовалась отчистка экрана. | Доработана программа, путем использования функции отчистки экрана – «clrscr» |
Тестирование производилось на компьютере следующей конфигурации:
- ОС Win XP;
- ЦП Intel Pentium 2600 Mhz;
- ОП 512 Mb;
- Video 128 Mb.
Протоколы тестирования представлены на рисунках 2 – 7.
THE PROGRAM (--Population--) VERSION 1.0
||-- YANIN ALEKSEY IS MADE THIS PROGRAM --||
-----------MENU-----------------
| 1 - ADD |
| 2 - PRINT |
| 3 - SEARCH |
| 4 - REMOVE |
| 5 - SORTING |
| 0 - EXIT |
------------------------------------
Рисунок 2 - Запуск программы
----------------------------------------------------------------------------
|# | City | Area | Population | Year |
----------------------------------------------------------------------------
|# 1 | Angarsk | Irkutskaja | 200000 | 1987|
|# 2 | Alzamai | Irkutskaja | 200000 | 1984|
|# 3 | Ust-Ilimsk | Irkutskaja | 200000 | 1976|
|# 4 | Bratsk | Irkutskaja | 300000 | 1956|
|# 5 | Sajansk | Irkutskaja | 140000 | 1955|
|# 6 | Shelehov | Irkutskaja | 300000 | 1955|
|# 7 | Ust-Kut | Irkutskaja | 120000 | 1944|
|# 8 | Tulun | Irkutskaja | 150000 | 1943|
|# 9 | Irkutsk | Irkutskaja | 1000000 | 867|
|# 10 | Belovo | Kemerovskaja | 300000 | 1956|
|# 11 | Kemerovo | Kemerovskaja | 400000 | 1920|
|# 12 | Kiselevsk | Kemerovskaja | 135000 | 1946|
|# 13 | Tashtagol | Kemerovskaja | 146000 | 1956|
|# 14 | Topki | Kemerovskaja | 137888 | 1959|
|# 15 | Mariinsk | Kemerovskaja | 150000 | 1971|
|# 16 | Borovoi | Kemerovskaja | 100000 | 1978|
|# 17 | Salair | Kemerovskaja | 121000 | 1967|
|# 18 | Tomsk | Tomskaja | 1000000 | 1912|
Рисунок 3 - Просмотр БД
----------------------------------------------------------------------------
|# | City | Area | Population | Year |
----------------------------------------------------------------------------
|# 1 | Angarsk | Irkutskaja | 200000 | 1987|
|# 2 | Alzamai | Irkutskaja | 200000 | 1984|
|# 3 | Ust-Ilimsk | Irkutskaja | 200000 | 1976|
|# 4 | Bratsk | Irkutskaja | 300000 | 1956|
|# 5 | Sajansk | Irkutskaja | 140000 | 1955|
|# 6 | Shelehov | Irkutskaja | 300000 | 1955|
|# 7 | Ust-Kut | Irkutskaja | 120000 | 1944|
|# 8 | Tulun | Irkutskaja | 150000 | 1943|
|# 9 | Irkutsk | Irkutskaja | 1000000 | 867|
|# 10 | Belovo | Kemerovskaja | 300000 | 1956|
|# 11 | Kemerovo | Kemerovskaja | 400000 | 1920|
|# 12 | Kiselevsk | Kemerovskaja | 135000 | 1946|
|# 13 | Tashtagol | Kemerovskaja | 146000 | 1956|
|# 14 | Topki | Kemerovskaja | 137888 | 1959|
|# 15 | Mariinsk | Kemerovskaja | 150000 | 1971|
|# 16 | Borovoi | Kemerovskaja | 100000 | 1978|
|# 17 | Salair | Kemerovskaja | 121000 | 1967|
|# 18 | Tomsk | Tomskaja | 1000000 | 1912|
Enter required city Tomsk
Tomsk Tomskaja 1000000 1912
Рисунок 4 - Поиск в БД
----------------------------------------------------------------------------
|# | City | Area | Population | Year |
----------------------------------------------------------------------------
|# 1 | Angarsk | Irkutskaja | 200000 | 1987|
|# 2 | Alzamai | Irkutskaja | 200000 | 1984|
|# 3 | Ust-Ilimsk | Irkutskaja | 200000 | 1976|
|# 4 | Bratsk | Irkutskaja | 300000 | 1956|
|# 5 | Sajansk | Irkutskaja | 140000 | 1955|
|# 6 | Shelehov | Irkutskaja | 300000 | 1955|
|# 7 | Ust-Kut | Irkutskaja | 120000 | 1944|
|# 8 | Tulun | Irkutskaja | 150000 | 1943|
|# 9 | Irkutsk | Irkutskaja | 1000000 | 867|
|# 10 | Belovo | Kemerovskaja | 300000 | 1956|
|# 11 | Kemerovo | Kemerovskaja | 400000 | 1920|
|# 12 | Kiselevsk | Kemerovskaja | 135000 | 1946|
|# 13 | Tashtagol | Kemerovskaja | 146000 | 1956|
|# 14 | Topki | Kemerovskaja | 137888 | 1959|
|# 15 | Mariinsk | Kemerovskaja | 150000 | 1971|
|# 16 | Borovoi | Kemerovskaja | 100000 | 1978|
|# 17 | Salair | Kemerovskaja | 121000 | 1967|
|# 18 | Tomsk | Tomskaja | 1000000 | 1912|
Enter numder of a line 18
Рисунок 5 - Удаление записей в БД
----------------------------------------------------------------------------
|# | City | Area | Population | Year |
----------------------------------------------------------------------------
|# 1 | Angarsk | Irkutskaja | 200000 | 1987|
|# 2 | Alzamai | Irkutskaja | 200000 | 1984|
|# 3 | Ust-Ilimsk | Irkutskaja | 200000 | 1976|
|# 4 | Bratsk | Irkutskaja | 300000 | 1956|
|# 5 | Sajansk | Irkutskaja | 140000 | 1955|
|# 6 | Shelehov | Irkutskaja | 300000 | 1955|
|# 7 | Ust-Kut | Irkutskaja | 120000 | 1944|
|# 8 | Tulun | Irkutskaja | 150000 | 1943|
|# 9 | Irkutsk | Irkutskaja | 1000000 | 867|
|# 10 | Belovo | Kemerovskaja | 300000 | 1956|
|# 11 | Kemerovo | Kemerovskaja | 400000 | 1920|
|# 12 | Kiselevsk | Kemerovskaja | 135000 | 1946|
|# 13 | Tashtagol | Kemerovskaja | 146000 | 1956|
|# 14 | Topki | Kemerovskaja | 137888 | 1959|
|# 15 | Mariinsk | Kemerovskaja | 150000 | 1971|
|# 16 | Borovoi | Kemerovskaja | 100000 | 1978|
|# 17 | Salair | Kemerovskaja | 121000 | 1967|
Рисунок 6 – БД после удаления записи
-------------------------------------------------------------------------
|# | City | Area | Population | Year |
-------------------------------------------------------------------------
|# 1 | Angarsk | Irkutskaja | 200000 | 1987|
|# 2 | Alzamai | Irkutskaja | 200000 | 1984|
|# 3 | Borovoi | Kemerovskaja | 100000 | 1978|
|# 4 | Ust-Ilimsk | Irkutskaja | 200000 | 1976|
|# 5 | Mariinsk | Kemerovskaja | 150000 | 1971|
|# 6 | Salair | Kemerovskaja | 121000 | 1967|
|# 7 | Topki | Kemerovskaja | 137888 | 1959|
|# 8 | Belovo | Kemerovskaja | 300000 | 1956|
|# 9 | Tashtagol | Kemerovskaja | 146000 | 1956|
|# 10 | Bratsk | Irkutskaja | 300000 | 1956|
|# 11 | Shelehov | Irkutskaja | 300000 | 1955|
|# 12 | Sajansk | Irkutskaja | 140000 | 1955|
|# 13 | Kiselevsk | Kemerovskaja | 135000 | 1946|
|# 14 | Ust-Kut | Irkutskaja | 120000 | 1944|
|# 15 | Tulun | Irkutskaja | 150000 | 1943|
|# 16 | Kemerovo | Kemerovskaja | 400000 | 1920|
|# 17 | Tomsk | Tomskaja | 1000000 | 1912|
|# 18 | Irkutsk | Irkutskaja | 1000000 | 867|
Рисунок 7 - Сортировка записей в БД
4.Руководство пользователя
Перед запуском программы «Baza» убедитесь что на диске D создана папка D:\DB или любая другая. Поместите в эту папку программу «Baza.exe» и саму бузу данных «Baza.txt».
Управление программой осуществляется при помощи стандартной клавиатуры. Выбор пункта меню осуществляется нажатием соответствующих клавиш (1 – добавление, 2 – вывод, 3 – поиск, 4 – удаление, 5 – сортировка, 0 - выход из программы). Ниже приводится описание всех пунктов меню:
1) «Add». Позволяет добавить записи в уже существующую БД. После выбора данного пункта меню система предложит ввести данные в соответствующие поля.
2) «Print». Позволяет просмотреть БД постранично (по 20 записей на странице). Чтобы перейти на следующую страницу достаточно нажать любую клавишу.
3) «Search». Осуществляет поиск в базе данных по городу. При выборе этого пункта система запросит город искомой записи. Введите город и нажмите Enter. Если запись будет найдена, то вы сможете её увидеть в этом же окне. Если же запись не найдена, то ничего выведено не будет.
4) «Remove». Позволяет удалить запись с выбранным номером. При выборе этого пункта система предложит ввести номер удаляемой записи. Введите его и нажмите Enter. Затем запись с заданным номером будет удалена и система выведется заново записи БД.
5) «Sorting». Позволяет отсортировать данные по году основания. При выборе этого пункта данные в файле будут отсортированы по году основания в порядке убывания.
6) «Exit». Выход из программы.
5.Руководство программиста
Перед запуском программы «Baza» убедитесь что на диске D создана папка D:\DB или любая другая. Поместите в эту папку программу «Baza» и саму бузу данных «Baza.txt».
Системные требования:
- ОС MS-DOS
- ЦП Intel, AMD – 75 Mhz
- ОП 8 Мb
- Video 1 Мb
- HDD 40 Кб
Управление программой осуществляется при помощи стандартной клавиатуры. Программа инсталляции не требует. При запуске программы рекомендуется закрыть все приложения Windows. База данных будет храниться на диске D:\ в папке DB с расширением .txt. Программа была написана на языке Turbo C++ 3.0. Код основной программы находится в файле Baza.cpp. Код модуля находится в файле «Baza.h». Для деинсталляции программы достаточно просто удалить файлы, связанные с данной программой (Baza.exe и базу данных, которая находятся в папке D:\DB). Есть возможность изменения имени программы без пагубных последствий. Программу рекомендуется запускать с жёсткого диска (для быстроты работы с данными). В программном коде имеется 6 подпрограмм. Ниже приводится вложенность подпрограмм:
dobav ()
vivod()
poisk() >> vivod()
del() >> vivod()
dell_enter()
sort() >> vivod()
Практически в каждой функции вызывается функция вывода полей базы данных.
Заключение
Руководствуясь собственными знаниями, литературой и встроенной в Turbo C++ помощью была проделана работа над написанием программы Baza.exe. В результате получилась полноценно - работающая программа, с помощью которой можно редактировать, удалять, просматривать и выполнять разные действия с базой данных типа «Населенность».
Данная программа упрощает использование различной структурированной информации. Она делает возможным обработку данных гораздо эффективнее и проще.
Мне кажется, что мой проект в будущем можно использовать для ведения БД, как крупным корпоративным организациям, так и обыкновенным пользователям. Для этого, не обязательно обладать какими – то специальными знаниями, а достаточно знать основы работы за компьютером, так как в моей программе реализован достаточно простой, «дружественный» интерфейс.
Литература
Норенков И.П. Системы автоматизированного пректирования: Учебное пособие для ВТУЗов: в 9 кн/Кн. 3: Федорук В.Г. Черненький В.М. Информационное и пограмное обеспечение. - М.: Высшая школа, 1986.-159 с.
Павловская Т.А. «С/С++ Программирование на языке высокого уровня» - СПб.: Питер, 2004
ПРИЛОЖЕНИЕ А Текст программы
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <baza.h>
void main()
{
int y;
clrscr();
while (y!=48)
{
clrscr();
printf("THE PROGRAM (--Population--) VERSION 1.0 \n\n");
printf("||--YANIN ALEKSEY IS MADE THIS PROGRAM--||\n\n");
printf("-----------MENU-----------------\n");
printf("| 1 - ADD |\n");
printf("| 2 - PRINT |\n");
printf("| 3 - SEARCH |\n");
printf("| 4 - REMOVE |\n");
printf("| 5 - SORTING |\n");
printf("| 0 - EXIT |\n");
printf("--------------------------------\n\n");
y=getch();
switch(y)
{ case 49: dobav();break;
case 50: vivod();getch();break;
case 51: poisk();break;
case 52: del();dell_enter();break;
case 53: sort(); getch(); break;
}
}
}
ПРИЛОЖЕНИЕ Б Текст модуля
void dobav() //Добавление записей в БД
{
char buf[100];
int y=121,kol;
FILE *fp;
FILE *fout;
if((fout=fopen("Baza.txt","r"))==NULL)
{ puts("Error");
exit(1);
}
while (y==121)
{
if((fp=fopen("Baza.txt","a"))==NULL)
{ puts("Error");
exit(1);
}
kol=0;
while (fgetc(fout)!=EOF) kol++;
fseek(fout,0,SEEK_SET);
clrscr();
printf("\nEnter City ");
scanf("%s",&buf);
if (kol!=0) fprintf(fp,"\n%s\n",&buf);
else fprintf(fp,"%s\n",&buf);
stpcpy(buf,"\0");
printf("Enter Area ");
scanf("%s",&buf);
fprintf(fp,"%s\n",&buf);
stpcpy(buf,"\0");
printf("Enter The Population ");
scanf("%s",&buf);
fprintf(fp,"%s\n",&buf);
stpcpy(buf,"\0");
printf("Enter Year ");
scanf("%s",&buf);
fprintf(fp,"%s",&buf);
stpcpy(buf,"\0");
printf("To continue (Y|N)");
y=getch();
fclose(fp);
}
fclose(fout);
clrscr();
}
void vivod() //Вывод записей БД
{ char str[200],str2[200],str3[200],str4[200];
int i=1,n=1,kol=0;
FILE *fp2;
if((fp2=fopen("Baza.txt","r"))==NULL)
{ puts("Error");
exit(1);
}
clrscr();
printf("--------------------------------------------------------------------\n");
printf("|# | City | Area | Population | Year |\n");
printf("--------------------------------------------------------------------\n");
while (!feof(fp2))
{
switch(i)
{ case 1: fscanf(fp2,"%s",&str); break;
case 2: fscanf(fp2,"%s",&str2);break;
case 3: fscanf(fp2,"%s",&str3);break;
case 4: fscanf(fp2,"%s",&str4);break;
}
if (i==4)
{
kol++;
printf("|#%4d | %10s | %15s| %10s | %10s|\n",n/4,str,str2,str3,str4);
i=0;
strcat(str,"\0");
strcat(str2,"\0");
strcat(str3,"\0");
strcat(str4,"\0");
}
if (kol==20)
{
kol=0;
printf("Press a key for continuation...");getch();
clrscr();
printf("--------------------------------------------------------------------\n");
printf("|# | City | Area | Population | Year |\n");
printf("--------------------------------------------------------------------\n");
}
i++;
n++;
}
fclose(fp2);
}
void poisk() //Поиск записей БД по городу
{ char str[200],str2[200],str3[200],str4[200],poisk[100];
int i=1;
FILE *fp3;
if((fp3=fopen("Baza.txt","r"))==NULL)
{ puts("Error");
exit(1);
}
vivod();
printf("\nEnter required city ");
scanf("%s",&poisk);
while(!feof(fp3))
{
switch(i)
{ case 1: fscanf(fp3,"%s",&str); break;
case 2: fscanf(fp3,"%s",&str2);break;
case 3: fscanf(fp3,"%s",&str3);break;
case 4: fscanf(fp3,"%s",&str4);break;
}
if (i==4)
{
if (strstr(str,poisk)!=NULL)
printf("%10s %10s %10s %10s\n",str,str2,str3,str4);
i=0;
strcpy(str,"\0");
strcpy(str2,"\0");
strcpy(str3,"\0");
strcpy(str4,"\0");
}
i++;
}
fclose(fp3);
}
void del() //Удаление записей БД
{
struct s
{
char gorod[200];
char obl[200];
char nas[200];
char god[200];
};
char str[200],str2[200],str3[200],str4[200];
int n,i,j;
FILE *fp6;
if((fp6=fopen("Baza.txt","r"))==NULL)
{ puts("Error");
exit(1);
}
clrscr();
vivod();
int kol=1,_kol=4;
while (!feof(fp6)) if(getc(fp6)==10) kol++;
s *ms = new s[kol/4];
fseek(fp6, 0, SEEK_SET);
i=0;
while(!feof(fp6))
{
fscanf(fp6,"%s",&str);
fscanf(fp6,"%s",&str2);
fscanf(fp6,"%s",&str3);
fscanf(fp6,"%s",&str4);
strcpy(ms[i].gorod,str);
strcpy(ms[i].obl,str2);
strcpy(ms[i].nas,str3);
strcpy(ms[i].god,str4);
i++;
}
printf("\nEnter numder of a line ");
scanf("%d",&n);
fclose(fp6);
if((fp6=fopen("Baza.txt","w"))==NULL)
{ puts("Error");
exit(1);
}
for(j=0;j<kol/4;j++,_kol+=4)
if(j+1!=n) fprintf(fp6,"%s\n%s\n%s\n%s\n",ms[j].gorod,ms[j].obl,ms[j].nas,ms[j].god);
fclose(fp6);
delete [] ms;
}
void dell_enter() //Удаление 13 кода символа
{
int kol_s=0,_kol_s=0;
char buf[100];
FILE *fp;
FILE *fp1;
if((fp=fopen("Baza.txt","r"))==NULL)
{ puts("Error");
exit(1);
}
if((fp1=fopen("Baza_buf.txt","w"))==NULL)
{ puts("Error");
exit(1);
}
while (!feof(fp)) { strcpy(buf,"\0");fscanf(fp,"%s",&buf); kol_s++;}
fseek(fp, 0, SEEK_SET);
if (atoi(buf)==0)
{
while (!feof(fp))
{
fscanf(fp,"%s",&buf);
if(_kol_s==kol_s-2) fprintf(fp1,"%s",buf);
if(_kol_s<kol_s-2) fprintf(fp1,"%s\n",buf);
_kol_s++;
}
fclose(fp);
fclose(fp1);
remove("Baza.txt");
rename("Baza_buf.txt","Baza.txt");
}
}
void sort() //Сортировка полей БД
{ struct s
{
char gorod[200];
char obl[200];
char nas[200];
char god[200];
};
char str[200],str2[200],str3[200],str4[200];
int n,i,j;
FILE *fp6;
if((fp6=fopen("Baza.txt","r"))==NULL)
{ puts("Error");
exit(1);
}
clrscr();
vivod();
int kol=0,_kol=4;
while (!feof(fp6)) if(getc(fp6)==10) kol++;
s *ms = new s[1+kol/4];
fseek(fp6, 0, SEEK_SET);
i=0;
while(!feof(fp6))
{
fscanf(fp6,"%s",&str);
fscanf(fp6,"%s",&str2);
fscanf(fp6,"%s",&str3);
fscanf(fp6,"%s",&str4);
strcpy(ms[i].gorod,str);
strcpy(ms[i].obl,str2);
strcpy(ms[i].nas,str3);
strcpy(ms[i].god,str4);
i++;
}
s temp;
for(j=0;j<1+kol/4;j++)
for (i=0;i<1+kol/4;i++)
if (atoi(ms[i].god)<atoi(ms[j].god))
{
strcpy(temp.gorod,ms[i].gorod);
strcpy(temp.obl,ms[i].obl);
strcpy(temp.nas,ms[i].nas);
strcpy(temp.god,ms[i].god);
strcpy(ms[i].gorod,ms[j].gorod);
strcpy(ms[i].obl,ms[j].obl);
strcpy(ms[i].nas,ms[j].nas);
strcpy(ms[i].god,ms[j].god);
strcpy(ms[j].gorod,temp.gorod);
strcpy(ms[j].obl,temp.obl);
strcpy(ms[j].nas,temp.nas);
strcpy(ms[j].god,temp.god);
}
fclose(fp6);
if((fp6=fopen("Baza.txt","w"))==NULL)
{ puts("Error");
exit(1);
}
for(j=0;j<1+kol/4;j++,_kol+=4)
{
if (_kol==kol+1) fprintf(fp6,"%s\n%s\n%s\n%s",ms[j].gorod,ms[j].obl,ms[j].nas,ms[j].god);
if (_kol!=kol+1) fprintf(fp6,"%s\n%s\n%s\n%s\n",ms[j].gorod,ms[j].obl,ms[j].nas,ms[j].god);
}
fclose(fp6);
delete [] ms;
}

Скачать файл (146.7 kb.)