Материалы сайта
Это интересно
Организация баз данных "Паспортный стол"
МИНИСТЕРСТВО ОБРАЗОВАНИЯ УКРАИНЫ КРИВОРОЖСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ КАФЕДРА МОДЕЛИРОВАНИЯ И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ КУРСОВАЯ РАБОТА по курсу “ Организация баз данных ” на тему “Паспортный стол” Выполнил : ст. гр. ПЗОТ-97-1 Шевчук М. С. Проверил : доц. Смолянский П. С. Кривой Рог 2000 г. Содержание 1. Техническое задание. 1.1 Описание объекта ............... 1.2 Формулирование требований к программе ............... 1.3 Описание входной информации и входных документов ............... 2. Технический проект. 2.1 Описание структуры баз и индексов, а так же назначение и типы полей базы ............... 2.2 Описание назначения всех глобальных переменных ............... 2.3 Функциональная блок-схема ............... 2.4 Текст программы ............... 3. Документирование. 3.1 Инструкция пользователя ............... 3.2 Общие правила работы с программой ............... 3.3 Подготовка исходных данных ............... 3.4 Корректировка информации ............... 3.5 Инструкция программисту ............... 3.6 Требования к техническим средствам ............... 3.7 Требования по настройке системных установок ............... Техническое задание. Описание объекта. В настоящее время компьютеры получили широкое распространение во всех сферах деятельности человека. Создание и обработка баз данных - одна из широчайших областей применения ЭВМ. Они дают возможность накапливать огромное количество информации, производить ее сортировку и выборку по различным признакам, производить формирование различного рода списков и таблиц, что позволяет существенно облегчить и ускорить труд людей по выполнению данных операций. Одна из задач такого типа - «Учет деятельности паспортного стола», представляющая собой проблемы учета и сортировки различных паспортных данных. В данной области возникает необходимость быстрого получения информации. Для решения этой задачи является целесообразным применение баз данных и средств их обработки. Формулирование требований к программе. Формулирование требований к программному обеспечению, разрабатываемому для решения данной задачи, можно свести к следующим критериям: - разрабатываемая программа должна обеспечивать быстрое и удобное получение информации, иметь простой и интуитивно понятный интерфейс. - пользователь должен иметь возможность ввода новой инфор- мации, корректировки и просмотра уже имеющейся. - необходимо обеспечить возможность поиска информации в базе данных, по каким либо критериям. - структура используемой базы данных должна быть подобрана оптимально. Описание входной информации и входных документов. Входная информация для данной задачи представляет собой данные о гражданине, имеющем паспорт. Таким бразом, в данной программе учтены основные параметры, которыми могут обладать владельцы паспортов (ФИО, дата рождения, место жительства, дата выдычи документа, район проживания и т. д.). Технический проект. Описание структуры баз и индексов, а так же назначение и типы полей базы. Описание структуры баз и индексов, а так же назначение и типы полей базы. На основе описания входной информации и требований, сформулированных к программе можно создать следующую структуру базы данных baza.dbf | Наименование | Тип | Ширина | Назначение | |NUM |N |10 |Порядковый номер | |NAME |C |30 |ФИО | |PASS |C |8 |Серия и номер паспорта | |RAYON |C |20 |Район проживания | |ADDR |C |30 |Адрес прописки | |DR |D |8 |Дата рождения | |DPASS |D |8 |Дата выдачи паспорта | |DDEAH |D |8 |Дата смерти | |STAN |L |1 |Семейное положение | |PRIM |C |50 |Примечание | Cтруктура базы данных представленна одним файлом и поэтому является весьма простой .Индексные файлы связаны с dbf –файлом следующим образом: файл addr.ntx связан с полем addr; файл dr.ntx связан с полем dr; файл name.ntx связан с полем name; файл pass.ntx связан с полем pass. Описание назначения всех глобальных переменных. Функциональная блок-схема. Данная блок-схема отражает взаимодействие отдельных программных частей основной программы. Она показывает последовательность вызова одних процедур и функций другими. Основой всей программы служит главное меню, из которого вызываются все остальные программные модули, реализованные как отдельные независимые процедуры. Те, в свою очередь вызывают свои другие вложенные независимые процедуры и функции. При вызове всех подпрограмм все необходимые параметры передаются по иерархии процедур вглубь, поэтому глобальные переменные не используются. Такое их построение позволяет упростить отслеживание значений переменных и избежать ошибок, связанных с возможностью изменения значений глобальных переменных из разных программных модулей, а так же сделать их независимыми и более универсальными. Блок-схема представленна в приложении 1. Текст программы. Файл Menu.Prg #INCLUDE "INKEY.CH" #INCLUDE "BOX.CH" PROC menu() Local K,i,n1,n2,n3,a,NKEY,new:="W/N,+W/B" LOCAL cScreen,TMP,cColor LOCAL TEXT_MENU MEMVAR REG,k_obnovka PUBLIC REG,k_obnovka INDEX ON BAZA->NAME TO NAME INDEX ON BAZA->DR TO DR INDEX ON BAZA->ADDR TO ADDR INDEX ON BAZA->PASS TO PASS INDEX ON BAZA->NUM TO NUM SET INDEX TO NAME,DR,ADDR,PASS,NUM A:=1 cScreen := SAVESCREEN() setmode(43,80) cColor := SETCOLOR("b/bG") CLEAR SCREEN setcolor("n/bw,n/g") @ 0,0 SAY " Файл Редактирование Поиск Режим Сортировка Запись " i=maxrow() @ 24,0 SAY " ENTER - выбор ESC - отмена F8 - удалить запись F9-восстановить запись " TMP:=SAVESCREEN() setmode(25,80) WHILE .T. setcolor("n/g") DO CASE CASE A=1 @0,1 say " Файл " SETCOLOR("N/N") @ 2, 1 CLEAR TO 6,24 setcolor("n/w,n/g") TEXT_MENU:={} aadd(TEXT_MENU,"уплотнить базу") aadd(TEXT_MENU,"заполнить базу заново") aadd(TEXT_MENU,"выход") @1,0,5,22 BOX B_DOUBLE_SINGLE K:=ACHOICE(2,1,6,21,TEXT_MENU) DO CASE CASE K=1 @10,9,13,71 box B_DOUBLE_SINGLE @11,10 say " Внимание!!! Данная команда уничтожает удаленные записи. " @12,10 say " Хотите продолжить (Enter/Esc)? " if inkey(0)=13 go top pack set order to 3 go top for i:=1 to lastrec() baza->num=i skip(1) next endif CASE K=2 @10,9,13,71 box B_DOUBLE_SINGLE @11,10 say " Внимание!!! Данная команда уничтожает существующую базу . " " @12,10 say" Хотите продолжить (Enter/Esc)? " if inkey(0)=13 go top for i:=1 to lastrec() delete skip(1) next pack append blank endif CASE K=3 CLS QUIT ENDCASE CASE A=2 @0,10 say " Редактирование " SETCOLOR("N/N") @ 2, 10 CLEAR TO 5,33 setcolor("n/w,n/g") @1,9,4,31 BOX B_DOUBLE_SINGLE text_menu:={} aadd(text_menu,"С удаленніми записями ") aadd(text_menu,"Без удаленніх записей ") K:=ACHOICE(2,10,3,30,TEXT_MENU) DO CASE CASE K=1 set delete off k_obnovka=.t. do while k_obnovka k_obnovka=obnovka(.t.,k_obnovka) enddo CASE K=2 set delete on k_obnovka=.t. do while k_obnovka k_obnovka= obnovka(.t.,.t.) enddo ENDCASE CASE A=3 @0,37 say " Режим " SETCOLOR("N/N") @ 2, 37 CLEAR TO 5,62 setcolor("n/w,n/g") @1,36,4,61 BOX B_DOUBLE_SINGLE text_menu={} aadd(text_menu,"80*25") aadd(text_menu,"80*50") K:=ACHOICE(2,37,3,60,TEXT_MENU) do case case k=1 setmode(25,80) cls case k=2 setmode(43,80) cls endcase CASE A=4 @0,45 say " Сортировка " SETCOLOR("N/N") @ 2, 45 CLEAR TO 8,70 setcolor("n/w,n/g") @1,44,7,69 BOX B_DOUBLE_SINGLE text_menu:={} aadd(text_menu,"по имени") aadd(text_menu,"по дате рождения") aadd(text_menu,"по адресу") aadd(text_menu,"по номеру паспорта ") aadd(text_menu, "по порядку добавления" ) K:=ACHOICE(2,45,6,68,TEXT_MENU) DO CASE CASE K=1 SET ORDER TO 1 k_obnovka=.t. do while k_obnovka k_obnovka= obnovka(.t.,.t.) enddo CASE K=2 SET ORDER TO 2 k_obnovka=.t. do while k_obnovka k_obnovka= obnovka(.t.,.t.) enddo CASE K=3 SET ORDER TO 3 k_obnovka=.t. do while k_obnovka k_obnovka= obnovka(.t.,.t.) enddo CASE K=4 SET ORDER TO 4 k_obnovka=.t. do while k_obnovka k_obnovka= obnovka(.t.,.t.) enddo CASE K=5 SET ORDER TO 5 k_obnovka=.t. do while k_obnovka k_obnovka= obnovka(.t.,.t.) enddo ENDCASE GO TOP CASE A=5 @0,60 say " Запись " SETCOLOR("N/N") @ 2, 60 CLEAR TO 4,48 setcolor("n/w,n/g") @1,59,3,79 BOX B_DOUBLE_SINGLE text_menu:={} aadd(text_menu,"добавить") K:=ACHOICE(2,60,2,78,TEXT_MENU) DO CASE CASE K=1 APPEND BLANK GO LASTREC() baza->num=lastrec() REDAKT(RECNO()) k_obnovka=.t. do while k_obnovka k_obnovka=obnovka(.t.,k_obnovka) enddo ENDCASE ENDCASE NKEY:=LASTKEY() DO CASE CASE NKEY=K_LEFT IF A>1 A-- ELSE A:=5 ENDIF CASE NKEY=K_RIGHT IF A<5 A++ ELSE A:=1 ENDIF ENDCASE RESTSCREEN(,,,,TMP) ENDDO SETCOLOR(cColor) // @ MAXROW(), 0 setmode(25,80) RESTSCREEN(,,,,cScreen) return Файл “regi.prg” proc regone(ob) local s s=tbcolumnnew("№П.П",{||baza->num}) ob:addcolumn(s) s=tbcolumnnew("ФИО",{||baza->name}) ob:addcolumn(s) s=tbcolumnnew("Номер паспорта",{||baza->pass}) ob:addcolumn(s) s=tbcolumnnew("Район”,{||baza->rayon}) ob:addcolumn(s) s=tbcolumnnew("Адрес",{||baza->addr}) ob:addcolumn(s) s=tbcolumnnew("Дата рождения",{||baza->dr}) ob:addcolumn(s) s=tbcolumnnew("Дата выдачи паспорта",{||baza->dpass}) ob:addcolumn(s) s=tbcolumnnew("Дата смерти",{||baza->ddeah}) ob:addcolumn(s) s=tbcolumnnew("Семейное положение”,{||baza->stan}) ob:addcolumn(s) s=tbcolumnnew("Примечание”,{||baza->prim}) ob:addcolumn(s) return ob proc redakt(polenom) local ekran local a,buf,k ekran:=savescreen() a:={} aadd(a,baza->name) aadd(a,baza->pass) aadd(a,baza->rayon) aadd(a,baza->addr) aadd(a,baza->dr) aadd(a,baza->dpass) aadd(a,baza->ddeah) aadd(a,baza->stan) aadd(a,baza->prim) @5,5 clear to 20,75 @5,5,20,75 box"ЙН»єјНИє" @6,6 say "Имя :" get a[1] @7,6 say "Номер паспорта :" get a[2] @8,6 say "Район проживания :" get a[3] @9,6 say "Адрес прописки :" get a[4] @10,6 say "Дата рождения :" get a[5] @11,6 say "Дата відачи паспорта :" get a[6] @12,6 say "Дата смерти :" get a[7] @13,6 say "Семейное положение :" get a[8] @17,6 say "Примечание :" get a[9] read if updated() @10,30 clear to 10,64 @9,29,11,65 box"ЙН»єјНИє" @10,31 say "Записать изменения ?(enter/esc)" k=inkey(0) do case case k=13 baza->name=a[1] baza->pass=a[2] baza->rayon=a[3] baza->addr=a[4] baza->dr=a[5] baza->dpass=a[6] baza->ddeah=a[7] baza->stan=a[8] baza->prim=a[9] endcase endif restscreen(,,,,ekran) //obnovka(.f.,.f.) return Файл “Start.Prg” #include "inkey.ch" #include "browse.ch" proc start memvar reg,k_obnovka public reg use baza.dbf new reg:=1 set delete off menu() return proc obnovka(priznak,k_obnovka) memvar reg local k,verh,niz,levo,pravo,nkey local ob local i GO TOP verh=2 levo=1 pravo=maxcol()-1 niz= maxrow()-2 @ verh-1,levo-1 clear to niz+1,pravo+1 @ verh-1,levo-1,niz+1,pravo+1 box "ЙН»єјНИє" ob=tbrowsedb(verh,levo,niz,pravo) ob:colsep="і" ob:headsep="СН" ob:footsep="ПН" ob:colorspec="b/bg,n/w" do case case reg=1 regone(ob) case reg=2 regtwo(ob) case reg=3 regthree(ob) endcase WHILE(!OB:stabilize());end while priznak nkey=0 while !ob:stable.and.nkey=0 ob:stabilize() nkey=inkey() enddo if ob:stable nkey=inkey(0) endif if nkey=K_ESC K=.F. ENDIF DO CASE CASE NKEY=K_DOWN OB:DOWN() CASE NKEY=K_UP OB:UP() CASE NKEY=K_RIGHT ob:right() CASE NKEY=K_LEFT ob:left() case nkey=K_F8 delete k_obnovka=.t. priznak=.f. case nkey=K_F9 recall k_obnovka=.t. priznak=.f. case nkey=K_ESC clear typeahead priznak=.f. k_obnovka=.f. case nkey=K_ENTER redakt(recno()) k_obnovka=.t. priznak=.f. endcase enddo GO TOP return k_obnovka Документирование. Инструкция пользователя. Настоящая информационно-поисковая система предназначена для учёта паспортного стола, а также для автоматизированного поиска карточки гражданина. Начало и окончание работы. После запуска программы на экране, в верхней строке появляется строка главного меню. В нем можно выбрать режимы : “Файл”, “Редактирование”, “Поиск”, “Режим”, “Сортировка” и “Запись” с помощью клавиш управления курсором. Для активизации нужного режима нужно установить на него указатель и нажать клавишу Enter. Для окончания работы с программой нужно выбрать пункт меню “Файл” и активизировать режим “Выход”. Режим “Файл”. При выборе этого режима на экране появляется список из 3-х пунктов (Уплотнить базу, Заполнить базу заново и Выход).Передвигаться по списку можно с помощью клавиш управления курсором. “Уплотнить базу”. Этот пункт подразумевает переупаковку отмеченых на удаление элементов базы. “Заполнить базу заново”. Текущая база удаляется и пользователю предлагается работа с новой базой. Режим “Редактирование”. Этот режим используется для редактирования списка паспортного стола. “С удаленными записями”. Этот пункт позволяет редактировать записи, которые были уже удалены, для последующего восстановления. “Без удаленных записей”. Этот пункт позволяет редактировать записи, находящиеся в базе и не помеченные, как удаленные. Режим “Поиск”. При входе в этот режим появляется список, в котором можно выбрать параметр по которому нужно найти элемент данной базы. Поиск выполняется по : - номеру и серии паспорта; - ФИО; - дню рождения; - адресу проживания; - дате выдачи паспорта. Режим “Режим”. В этот режиме пользователь может произвести настройку экрана в режимах 80*25 и 80*50 символов. Режим “Сортировка”. В этом режиме пользователю предоставляется возможность сортировать данную базу по нескольким параметрам. Сортировка выполняется по : - номеру и серии паспорта; - ФИО; - дате рождения; - адресу проживания; - порядку добавления записи в базу. Режим “Запись”. В этом пункте можно производить добавление записи в базу. При добавлении вводятся следующие пункты : - ФИО; - номер паспорта; - район проживания; - адрес прописки; - дата рождения; - дата выдачи паспорта; - дата смерти; - семейное положение; - примечание. Общие правила работы с программой. Для работы с программой необходимо наличие файла start.exe в любом из каталогов жесткого диска, атак же наличие файла baza.dbf в этом же каталоге диска. Для запуска программы необходимо запустить файл start.exe. После этого пользователь попадает в главное меню программы, которое состоит из пунктов: - “Файл”; - “Редактирование”; - “Поиск”; - “Режим”; - “Сортировка”; - “Запись”. Подготовка исходных данных. При подготовке исходных данных удобно свести всю входную информацию в таблицу, напоминающую структуру базы данных. Вначале выписываются порядковый номер, ФИО, серия и номер паспорта, район проживания, адрес прописки, дата рождения, дата выдачи паспорта, дата смерти, семейное положение и примечание. Корректировка информации. Передвижение по пунктам всех меню и по таблицам осуществляется при помощи клавиш управления курсором и клавиш PageUp и PageDown. Для редактирования/ввода полей необходимо переместиться на поле, которое необходимо отредактировать/ввести и нажать клавишу Enter. Завершение редактирования/ввода осуществляется при помощи той же клавиши. Инструкция программисту. Требования разработанной программы к ОЗУ и HDD в значительной степени определяются структурой самой программы. Исходя из этого было установлено, что для нормальной работы программы необходимо наличие не менее 360 кб свободной основной памяти и не менее 400 кб свободного дискового пространства . Требования к техническим средствам. Данная программа успешно была протестирована на ЭВМ типа IBM386DX . Для нормальной работы программы (быстрого поиска в базе) желательно наличие Pentium 100. Настройка системных установок. Данная программа не отличается особыми требованиями к системным установкам. Она лишь требует установки переменной окружения ДОС FILES не менне 30 и наличия русификатора для обеспечения возможности ввода информации. Используемая литература : 1. Канатников А.Н., Ткачев С.Б. Язык СА-Clipper 5.2 и библиотека CA- ClipperTools 3.0. Описание языковых средств и возможностей библиотеки для прикладных программистов. – М. : Финансы и статистика, 1995. 2. Спенс Рик. Clipper. Руководство по программированию. 3. Бойко В. В. Савиников В. М. Проэктирование баз данных информационных систем. – М. ; Финансы и статистика, 1989.