
Спецификация процедур
Таблица 2 – Спецификация процедур
-
Название
Описание
procedure Prompt;
Процедура приглашения к вводу команды
procedure FreeList(var L: List);
Процедура освобождения памяти списка
procedure ShowList(L: List);
Процедура просмотра списка
procedure InTail(var L: List; x1,x2,x3: Integer; x4:string);
Процедура добавления элемента в конец списка
procedure SaveList(L: List);
Процедура сохранения списка в файл
procedure OpenList(var L: List);
Процедура выгрузки списка из файла
Procedure Deletelist( var L:list; del : List);
Процедура очистки списка
Руководство оператора
Программа использует для хранения информации динамическую память компьютера. Первоначально на экране появляется DOS-окно, на котором можно увидеть список предлагаемых действий:
Рисунок 1 – Главное окно
Добавить квартиру
Сохранить данные
Открыть данные
Поиск квартиры для обмена
Показать сохраненные данные
Закрыть программу
Выбор какого-либо пункта осуществляется путем нажатия на клавишу с необходимой цифрой.
Рисунок 2 – Добавление квартиры
При выборе первого пункта на экран выводится строка для заполнения «Количество комнат», далее после набранного значения нажимается кнопка ввода и пользователю представляется строка для заполнения «Этаж», далее строка «Площадь» и наконец, последняя строка «Адрес».
Рисунок 3 – Сохранение данных
При выборе второго пункта пользователь может сохранить набранные им данные в файл типа list.
Рисунок 4 – Открытие данных
При выборе третьего пункта пользователь может открыть набранный ранее список, где будут такие данные как количество комнат, этаж, площадь, адрес. Либо после открытия пользователь может начать добавлять новые элементы в конец списка.
Рисунок 5 – Показ сохраненных данных
При выборе пятого пункта пользователь может посмотреть весь список, сохраненный ранее.
Рисунок 6 – Поиск квартиры для обмена
При выборе четвертого пункта пользователь может произвести поиск квартиру для обмена по критериям задания.
При выборе нулевого пункта происходит закрытие программы.
Список использованных источников
Сергиевский М.В., Шалашов А.В. Турбо Паскаль 7.0: Язык, среда программирования. –М.: Машиностроение. –1994. –254 с.: ил.
А.Епанешников, В.Епанешников. Программирование в среде Turbo Pascal 7.0. - 3-е изд., стер.- М.: "ДИАЛОГ-МИФИ", 1995.
Фаронов В.В. Турбо Паскаль. В 3-х кн. - М.: МВТУ, Фесто-Дидактик, 1993 г.
Заварыкин В.М. и др. Численные методы: Учеб. пособие для студентов физ.-мат. спец. пед. ин-тов/В.М. Заварыкин, В.Г. Житомирский, М.П. Лапчик. –М.: Просвещение, 1990. –176 с.: ил.
ГОСТ 19.701-90 "ЕСПД. Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения"
ГОСТ 2.105-95 "Единая система конструкторской документации. Общие требования к текстовым документам"
Архангельский А.Я. Учебник по классическим версиям Delphi. - М.: - ООО «Бином – Пресс», 2006. - 1152 с.
Матчо Дж., Фолкнер Д. Р. Delphi: Пер. с англ. - М.: Изд. БИНОМ, 1995. - 524 с.
Приложение А
Схемы алгоритмов
Основная программа
Процедура InitList
Процедура Prompt
Процедура FreeList
Процедура ShowList
Процедура InTail
Процедура SaveList
Процедура OpenList
Процедура DeleteList
Процедура Poisk
Приложение Б
Тестирование программы
Рисунок 7 – Главное окно
Рисунок 8 – Добавление квартиры
Рисунок 9 – Сохранение данных
Рисунок 10 – Открытие данных
Рисунок 11 – Показ сохраненных данных
Рисунок 12 – Поиск квартиры для обмена
Приложение В
Текст программы
Основная программа
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
struct Bus{ //Структура
char name[15]; //имя водителя
char nombus[6]; //номер автобуса
int nomer; //номер маршрута
char marsh[6]; //признак нахождения автобуса
Bus *next;
} x; //буферная переменная
Bus *add(Bus *beg,const Bus &x); //добавление
Bus writed(); //ввод с клавиатуры
void print(Bus *beg,char *marsh); //вывод на экран по признаку
void print(Bus *beg); //вывод на экран
bool writeBD(char *name, Bus *beg); //запись в файл
Bus *readBD(char *name); //чтение из файла
Bus *found(Bus *beg, char *nombus, char *marsh); //исправление
Bus *found(Bus *beg, char *nombus); //поиск
void main(){
Bus *beg = NULL;
int i,nomer;
char y_n,name[80],nombus[6],marsh[6];
int data;
do{
printf("\nMENU: New(n), Open(o)?\n"); //главное меню
cin>>y_n;
switch(y_n){
case 'n':
do{
beg=add(beg,writed()); //ввод списка
printf("\nDalshe? (y/n):");
cin>>y_n;
}while(y_n=='y'||y_n=='Y');
printf("\nInput filename:");
cin>>name;
if(writeBD(name,beg))printf("\nError!\n"); //запись данных в файл
break;
case 'o':
printf("\nInput filename:");
cin>>name;
beg=readBD(name); //чтение из файла
break;
default : exit;
}
printf("\nMENU: Naiti(n), Print(p), Zamenit(z)?\n"); //меню исправлений
cin>>y_n;
switch(y_n){
case 'n':
printf("\nVvedite nomer bus:");
cin>>nombus;
beg=found(beg,nombus); //поиск по номеру автобуса
break;
case 'p':
printf("\nInput pologenie bus(park/route):");
scanf("%s",marsh);
for(i=strlen(marsh);i<6;i++)
marsh[i]=' ';
marsh[6]='\0';
print(beg,marsh);
break;
case 'z':
printf("\nVvedite nomer bus:");
cin>>nombus;
nombus[6]='\0';
printf("\nInput pologenie bus(park/route):");
scanf("%s",marsh);
for(i=strlen(marsh);i<6;i++)
marsh[i]=' ';
marsh[6]='\0';
beg=found(beg,nombus,marsh); //исправление
if(writeBD(name,beg))printf("\nError!\n"); //запись исправленных данных
default : exit;
}
printf("\nSnova? (y/n):");
cin>>y_n;
}while(y_n=='y'||y_n=='Y');
}
// FUNC add()
Bus *add(Bus *beg,const Bus &x){
Bus *px = new Bus;
Bus *dpx = beg;
*px=x;
if(beg){
while(dpx->next)dpx=dpx->next;
dpx->next=px;
px->next=0;
}else{
beg=px;
beg->next=0;
}
return beg;
}
// FUNC writed() - for inputs;
Bus writed(){
long i;
Bus dx;
char nombus[6];
printf("\nInput name:");
cin>>dx.name;
for(i=strlen(dx.name);i<15;i++)
dx.name[i]=' ';
dx.name[14]='\0';
printf("\nInput nomer marshruta:");
cin>>dx.nomer;
printf("\nInput nomer bus(x999xx):");
cin>>dx.nombus;
dx.nombus[6]='\0';
printf("\nInput pologenie bus(park/route):");
scanf("%s",dx.marsh);
for(i=strlen(dx.marsh);i<6;i++)
dx.marsh[i]=' ';
dx.marsh[6]='\0';
return dx;
}
// FUNC print() - for prints;
void print(Bus *beg,char *marsh){
Bus *px = beg;
printf("\n|-NOMER-BUS-|NOMER|------NAME-----|-ROUTE-|");
while(px){
if(px->marsh[0]==marsh[0]){
printf("\n|%11s|%5d|%15s|%7s|",px->nombus,px->nomer,px->name,px->marsh);
}
px=px->next;
}
printf("\n|-NOMER-BUS-|NOMER|------NAME-----|-ROUTE-|");
}
// FUNC print2() - for prints;
void print(Bus *beg){
Bus *px = beg;
printf("\n|-NOMER-BUS-|NOMER|------NAME-----|-ROUTE-|");
while(px){
printf("\n|%11s|%5d|%15s|%7s|",px->nombus,px->nomer,px->name,px->marsh);
px=px->next;
}
printf("\n|-NOMER-BUS-|NOMER|------NAME-----|-ROUTE-|");
}
// FUNC writeBD();
bool writeBD(char *name, Bus *beg){
Bus *dpx = beg;
FILE *fout;
if((fout = fopen(name, "w")) == NULL ) {
puts("Fail error!"); return 1;
}
while(dpx){
fprintf(fout,"%11s %5d %15s %7s\n",dpx->nombus,dpx->nomer,dpx->name,dpx->marsh);
dpx=dpx->next;
}
fclose(fout);
return 0;
}
//FUNC readBD();
Bus *readBD(char *name){
FILE *inf;
Bus x;
Bus *beg = 0;
if ((inf = fopen(name, "r")) == 0 ) {
printf("Not file %s\n",name); return 0;
}
fseek(inf,0,0);
while(!feof(inf)) {
fscanf(inf," %s ",&x.nombus);
fscanf(inf," %d ",&x.nomer);
fscanf(inf," %s ",&x.name);
fscanf(inf," %s ",&x.marsh);
clrscr();
beg = add(beg,x);
print(beg);
}
fclose(inf);
return beg;
}
//FUNC found();
Bus *found(Bus *beg, char *nombus, char *marsh){
Bus *dpx=beg;
Bus *buf=beg;
Bus *px=new Bus;
char bufer[7];
int i=0;
px = beg;
while(dpx){
if(!strcmp(dpx->nombus,nombus)){
printf("\n|-NOMER-BUS-|NOMER|------NAME-----|-ROUTE-|");
printf("\n|%6s|%5d|%15s|%7s|",px->nombus,px->nomer,px->name,px->marsh);
printf("\n|-NOMER-BUS-|NOMER|------NAME-----|-ROUTE-|");
if(marsh[0]==dpx->marsh[0]){
printf("Bus -> %s",dpx->marsh);
}else{
strcpy(dpx->marsh,marsh);
}
return beg;
}
dpx=dpx->next;
}
beg=add(beg,x);
return beg;
}
//FUNC found2();
Bus *found(Bus *beg, char *nombus){
Bus *dpx=beg;
Bus *buf=beg;
Bus *px=new Bus;
px = beg;
while(dpx){
if(!strcmp(dpx->nombus,nombus)){
printf("\n|-NOMER-BUS-|NOMER|------NAME-----|-ROUTE-|");
printf("\n|%6s|%5d|%15s|%7s|",px->nombus,px->nomer,px->name,px->marsh);
printf("\n|-NOMER-BUS-|NOMER|------NAME-----|-ROUTE-|");
return beg;
}
dpx=dpx->next;
}
beg=add(beg,x);
return beg;
}