Вторник, 07.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

Помогите решить задачу "Телефонный справочник"
SergixaДата: Четверг, 22.11.2007, 21:44 | Сообщение # 1
Новичок
Группа: Пользователи
Сообщений: 2
Репутация: 0
Замечания: 0%
Статус: Offline
Разработать приложение "Телефонный справочник". В программе должен фомироваться файл записей со следующей структурой:
номер телефона, год установки, фамилия абонента, домашний адрес, задолженность по оплате. Колличество записей произвольное.
Программа должна в виде таблицы выдавать следующую информацию:
- номер телефонна заданного абонента
- адрес абонента по номеру телефона
- список задолжников по оплате
Поиск и обработку данных необходимо выполнять по запросам пользователя.
Программа должна быть составлена на языке программирования Паскаль.

Добавлено (22.11.2007, 14:44)
---------------------------------------------
Ну что никто не знает

 
PavelДата: Пятница, 23.11.2007, 15:39 | Сообщение # 2
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Quote (Sergixa)
Программа должна быть составлена на языке программирования Паскаль.

Эмм. А точно не на языке Object Pascal?
В принципе на Turbo Pascal можно сделать, но это будет такой плохой вариант, прсто хуже не бывает. Для этого есть Delphi. Мало того в Дэлфи придется программировать для этой задачи всего пару строк.

Если надо сделать на Turbo Pascale, то напиши, и каковы запросы пользователя? Т.е. запрос на любые данные? И критерии поиска: надо ли запрос обрабатывать на точное соответствие, на неточное. Т.е. обработка запросов будет самой сложной задачей. Вот.
А по поводу будушей программы. Будет стуктурированный файл. (По стути сказать, это есть база данных. В каждой базе данных есть индексация, которую надо реализовывать в Паскале Турбо самому. Идексация нужна для запросов, сортировки и т.д.) Кстати нужна ли сортировка?
В общем ждем ответа.

 
SergixaДата: Пятница, 23.11.2007, 23:05 | Сообщение # 3
Новичок
Группа: Пользователи
Сообщений: 2
Репутация: 0
Замечания: 0%
Статус: Offline
Вообщем эту программу можно написать и на Delfi, но желательно на pascal. Не нужна сортировка, как можно проще сделать и все
 
SeqularДата: Суббота, 24.11.2007, 10:03 | Сообщение # 4
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Sergixa, Я возьмусь.

Поддерживаю также проект сообщество молодых сисадминов
 
SeqularДата: Суббота, 24.11.2007, 10:58 | Сообщение # 5
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Code
Program Spravo4nik;
Uses CRT;
Type user = record
             num: String;
             god: Word;
             fam: String;
             adr: String;
             dlg: Word;
             end;
Const fl = 'USERS.DAT';
Var f: File of user;
     a: user;
     c: Char;

Procedure AddUser;
Begin
Repeat
ClrScr;
Writeln('Добавление нового пользователя');
Write('Введите фамилию пользователя: '); Readln(a.fam);
Write('Введите номер телефона: '); Readln(a.num);
Write('Введите год установки телефона: '); Readln(a.god);
Write('Введите адрес проживания абонента: '); Readln(a.adr);
Write('Введите задолженность абонента (без "-"): '); Readln(a.dlg);
Write('Данные введены верно? Нажмите ENTER');
c := Readkey;
Until c = #13;
Assign(f, fl);
{$I-}
ReSet(f);
{$I+}
IF IOResult <> 0 THEN ReWrite(f);
Seek(f, FileSize(f));
Write(f, a);
Close(f);
End;

Procedure PrintFile;
Begin
ClrScr;
Assign(f, fl);
{$I-}
ReSet(f);
{$I+}
If IOResult <> 0 Then
    Begin
    Writeln('Файл не найден');
    Exit;
    End;
While Not EoF(f) do
       Begin
       Read(f,a);
       Write('Фамилия: ',a.fam,' (',a.num,')',#13#10);
       End;
ReadKey;
End;

Procedure ClearFile;
Begin
ClrScr;
Write('Нажмите ENTER для очистки или любую клавишу для отмены');
c := ReadKey;
If (c = #13) then
    Begin
    Assign(f, fl);
    ReWrite(f);
    Close(f);
    Writeln('Файл очищен');
    End
Else Writeln('Отменено пользователем');
ReadKey;
End;

Procedure SearchNumber;
Var s: String;
     flag: Boolean;
Begin
ClrScr;
flag := False;
Write('Введите фрагмент фамилии абонента: '); Readln(s);
Assign(f, fl);
{$I-}
ReSet(f);
{$I+}
If IOResult <> 0 Then
    Begin
    Writeln('Файл не найден');
    Exit;
    End;
While Not EoF(f) do
       Begin
       Read(f,a);
       If (Pos(s,a.fam)<>0) then
          Begin
          flag := True;
          Write(a.fam,' -- ',a.num,#13#10);
          End;
       End;
If (flag = False) then Writeln('Ничего не найдено');
Readkey;
End;

Procedure SearchAdress;
Var s: String;
     flag: Boolean;
Begin
ClrScr;
flag := False;
Write('Введите номер абонента: '); Readln(s);
Assign(f, fl);
{$I-}
ReSet(f);
{$I+}
If IOResult <> 0 Then
    Begin
    Writeln('Файл не найден');
    Exit;
    End;
While Not EoF(f) do
       Begin
       Read(f,a);
       If (a.num = s) then
          Begin
          flag := True;
          Write(a.adr,#13#10);
          End;
       End;
If (flag = False) then Writeln('Ничего не найдено');
Readkey;
End;

Procedure PrintUsers;
Var flag: Boolean;
Begin
ClrScr;
Assign(f, fl);
{$I-}
ReSet(f);
{$I+}
If IOResult <> 0 Then
    Begin
    Writeln('Файл не найден');
    Exit;
    End;
While Not EoF(f) do
       Begin
       Read(f,a);
       If (a.dlg > 0) then
          Begin
          flag := True;
          Write(a.fam,' (Долг ',a.dlg,')',#13#10);
          End;
       End;
If (flag = False) then Writeln('Должников не найдено');
Readkey;
End;

Procedure Menu;
Begin
Repeat
ClrScr;
Writeln('[0] Вывести содержимое справочника');
Writeln('[1] Добавить нового пользователя');
Writeln('[2] Обнулить файл');
Writeln('[3] Найти номер по фамилии');
Writeln('[4] Найти адрес по номеру');
Writeln('[5] Вывести список должников');
Writeln('[ESC] Выход');
c := ReadKey;
Case c of
'0': PrintFile;
'1': AddUser;
'2': Clearfile;
'3': SearchNumber;
'4': SearchAdress;
'5': PrintUsers;
End;
Until c = #27;
End;

Begin
ClrScr;
Menu;
End.


Поддерживаю также проект сообщество молодых сисадминов
 
SeqularДата: Суббота, 24.11.2007, 10:59 | Сообщение # 6
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Фичи проги:
1) в одной из процедур программа просит ввести фрагмент фамилии. Можно ввести даже 1 букву. Выведет всех абонентов, в фамилии которых эта буква встречается.
2) Русификация программы: см FAQ на сайте.


Поддерживаю также проект сообщество молодых сисадминов
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;