На бирже курсовых и дипломных проектов можно найти образцы готовых работ или получить помощь в написании уникальных курсовых работ, дипломов, лабораторных работ, контрольных работ, диссертаций, рефератов. Так же вы мажете самостоятельно повысить уникальность своей работы для прохождения проверки на плагиат всего за несколько минут.

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


курсовая работа Програмирование на языке высокого уровня

Информация:

Тип работы: курсовая работа. Добавлен: 04.07.2012. Сдан: 2011. Страниц: 21. Уникальность по antiplagiat.ru: < 30%

Описание (план):


Томский межвузовский центр дистанционного образования
Томский государственный  университет систем управления и радиоэлектроники (ТУСУР)
 
 
 
 
 
Кафедра автоматизированные системы управления (АСУ)
 
 
 
 
 
Курсовая работа по дисциплине «Программирование на языке высокого уровня»
Тема: «Справочник  выданных мобильных карт» 
 
 
 
 
 

учебное пособие Е.Н. Сафьянова 'Основы алгоритмизации и программирование'
 
 
 
 
 
 
 
 
 
 
Выполнил студент гр. з-435-б
специальность 230105 
 

Бессмертный Дмитрий Валерьевич 02 января 2010 г. 
 

 
г.Ноябрьск 2009
   
 

Содержание

    1. Введение ______________________________________________________________ 3
    2. Назначение и область применения _______________________________________ 4
    3. Постановка задачи _____________________________________________________ 5
    4. Используемые методы __________________________________________________ 6
    5. Алгоритм программы __________________________________________________ 7
    6. Заключение ___________________________________________________________ 10
    7. Список литературы ___________________________________________________ 11
    8. Приложение 1. Листинг программы _____________________________________ 12
    9. Приложение 2. Результат работы _______________________________________ 24 
     
     
     
     
     
     
     
     
     
     

 

1. Введение.

Целью курсовой работы является углубление знаний и расширение навыков по разработке алгоритмов и их реализации на персональном компьютере. Курсовая работа выполняется в среде Турбо Паскаль и предполагает работу с текстами, файловыми структурами, обработку записей.
 

2. Назначение и область применения.

Программа представляет собой мини комплекс по учету выданных мобильных карт, областью применения могут быть Автомобильные  Заправочные Станции.
 

3. Постановка задачи.

Написать  программу, которая будет работать с базой выданных мобильных карт. При этом программа должна уметь добавлять, изменять, удалять, искать записи и создавать БД (База Данных) в случае если таковая отсутствует. Для упрощения работы с программой разработать интуитивно понятный интерфейс.
 

4. Используемые методы.

БД создается под именем CardsMK.dat в той же директории, где находится сама программа. Доступ к данным происходит напрямую из процедур или функции. При поиске или изменении записи создается временный файл с именем FTmp.dat, в него записываются  результат поиска из файла CardsMK.dat, используемые в дальнейшем для определенных целей: вывод на экран, визуального контроля редактируемой или удаляемой записи. Для удаления так же создается временный файл temp.dat, для хранения отредактированной БД, затем файл CardsMK.dat удаляется, а файл temp.dat переименовывается в CardsMK.dat.
В программе  использован метод объектно-ориентированного программирования. Программа разбита  на процедуры и функции, выполняющие определенные действия.
 

5. Алгоритм программы.

Создадим новый тип записи TCards. Именно он будет определять формат нашей БД, в нашем случае состоящей из одной таблицы с полями:
    Client – поле строкового типа длинной не более 34 символов, предназначено для хранения Ф.И.О. владельца;
    CardNo – поле строкового тип длинной 6 символов, может хранить в себе номера карт начинающиеся с № 100000 и до №999999;
    GoodType – поле строкового типа длинной 7 символов. Содержит в себе тип топлива используемого картой. Может принимать только 4 значения: «АИ-80», «АИ-92», «АИ-95» и «Дт»;
    ClientType - поле строкового типа длинной 10 символов. Содержит в себе тип клиента используемого картой. Может принимать только 2 значения: «Юр.лицо» и «Физ.лицо»;
    Passwd - поле строкового типа длинной 4 символа. Содержит в себе пароль из 4-х цифр, принимает значения от 0000 до 9999.
Создадим  две константы строкового типа хранящие в себе названия выходных файлов:
    FileName = ‘CardsMK.dat’ (файл БД);
    FileFTmp = ‘FTmp.dat’ (временный файл);
 
      Процедура PMenu – представляет собой окно Главного меню. Используя цикл Repeat и оператора выбора Case (в основе всех меню пользователя используются похожая связка цикла и оператора) программа запрашивает у пользователя следующие варианты для действия по нажатию клавиш
    ‘<1> Список карт.’ – вызывает процедуру ShowFile (FileName);
    <Esc> Выход из программы..
    Для определения кода нажатой кнопки используем оператор ord(a : переменная типа char), возвращающий код нажатой клавиши типа integer.
      {Процедура  - Окно главного  меню}
      procedure PMenu; {объявление процедуры}
      var{объявление переменных}
        a: char; {необходимо для оператора Ord(а)}
        b: integer; {для оператора Case}
      begin {Начало процедуры}
        repeat {оператор цикла}
          begin {начало оператора цикла}
            ClrScr; {очистка экрана, встроенная процедура}
            WriteLn(' "Справочник выданных Мобильных карт" - Главное меню ');
            WriteLn; {оператор вывода текста на экран с переводом курсора на следующую строку}
            WriteLn ('<1> Список карт.');
            WriteLn;
            WriteLn ('<Esc> Выйти  из программы.');
            a:=ReadKey; {присваиваем значение ReadKey – встроенная функция считывания кода нажатой клавиши типа Char}
            b:=ord(a); {присваиваем переменной значение, возвращенное оператором ord-преобразует переменную типа Char в целочисленную - Integer}
            case b of {начало оператора выборки по значению переменной b}
              49 : ShowFile(FileName); {если b=49 (клавиша «1»), то запускаем ShowFile(FileName)}
            end; {конец оператора выборки}
          end; {конец оператора цикла}
        until b=27; {условие повторного запуска цикла: пока переменная не будет равна 27 (клавиша «Esc»)}
      end; {конец процедуры} 

      Процедура ShowFile (AFileName:string{переменная строкового типа должна содержать имя файла БД}) – Проверяет существование файла БД посредством вызова функции FileExists(AFileName:string). Если таковой отсутсвует, то процедура создает его. Далее вызывается функция вывода на экран файла БД – FshowFile(AFileName:string). Ниже прорисованной таблицы БД появляется меню пользователя:
      <1>-«Поиск…» вызывает процедуру меню поиска: MPoisk;
      <2>-«Выдать карту…» вызывает функцию : FAddCards (AFileName:string);
      <3>-«Удалить карту…» вызывает функцию : FDelCardsNo (AFileName:string; AFTmp:string);
      <4>-«Редактировать карту…» вызывает функцию: FEdit (AFileName:string; AFTmp:string);
      <5>-«Сортировать список…» вызывает процедуру MSort;
      <Esc>-«ВЫХОД – Главное меню» конец работы текущей процедуры;
 
        Процедура MPoisk - процедура представляющая собой не что иное, как меню пользователя где предлагается  для выбора три условия поиска нужной (ых) записи: по клиенту, по номеру карты и по типу топлива (соответственно по клавишам <1>,<2>,<3> для выхода <Esc>). Процедуры SelectCardsClient, SelectCardsNo, SelectCardsGoodType похожи по своей структуре и алгоритму работы и необходимым для работы входным параметрам (FileName{файл для поиска},FileFTmp{файл для вывода найденных данных}). Алгоритм сводится к открытию окна с возможностью ввода(выбора) данных для поиска(выборки) из БД и вывода результата на экран, по окончании процедура возвращает пользователя в меню поиска.
        Функция FAddCards (AFileName:string) – Предназначена для добавления записи в БД. Перед началом процедуры ведется проверка по наличию самого файла БД, в случае его отсутсвия программа сама создает его. Далее пользователю предлагается поэтапно ввести данные для одной записи, причем обязательным условием является заполнение всех полей!!! Алгоритм следующий:
      А) Вводим №карты – программа проверяет  на наличие данной карты в БД, в положительном случае выдаст сообщение  о том что данная карта зарегистрирована и имеет своего владельца. Также ведется проверка на обязательные условия ввода №карты – 6 цифр. Проверка проводится функцией FIntTrue (ATCardid:string,ADlina:integer):boolean. Последняя функция использует встроенный оператор val(a,b,c), которая преобразовывает строковую переменную a в целочисленную переменную b, при этом возвращает код c=0 при положительном варианте. Далее вычисляется длинна строки посредством встроенного оператора length(a) возвращающий числовое значение равное числу символов в строке. FIntTrue – логическая функция и потому возвращает лишь два значения True (в случае соответствия условиям) или False (несоответствия условию).
        FDelCardsNo (AFileName:string; AFTmp:string) – для поиска карты необходимой для удаления используем выше описанную функцию SelectCardsNo. В случае существования данной карты данная запись запишется во временный файл. Далее программа проверяет размер данного временного файла, и если оно равно нулю то выдается сообщение: «Внимание! Нет данных для удаления!!!» и завершает свою работу. Если данные все же найдены, то программа потребует повторного подтверждения для удаления найденных записей. Далее создается еще один временный файл Temp.dat, и туда переписываются все данные из файла БД кроме тех, что содержаться в FTmp.dat. После чего файл с БД удаляется, а Temp.dat переименовывается в файл БД - CardsMK.dat.
        FEdit (AFileName:string; AFTmp:string) – функция редактирования данных. По номеру карты находим запись для редактирования (функция SelectCardsNo). Выводим на экран меню редактирования, выбор поля для редактирования определяется цифрой на клавиатуре:
          <1> - Изменить владельца карты.
          <2> - Изменить тип топлива.
          <3> - Изменить тип владельца карты.
          <4> - Изменить пароль.
          <Esc> - Выйти…
      Первые  четыре строки соответствуют вызову функций FEditClient с параметрами: AFileName – файл БД, AFTmpFile – файл с результатом поиска, PoleId – номер поля для редактирования. В зависимости от выбора поля для редактирования предлагается выбрать новый тип или ввести новое значение данного поля (обязательно с проверкой условий ввода). Выполненные изменения записываются во вновь созданный файл Temp.dat, и туда переписываются все данные из файла БД кроме тех, что содержаться в FTmp.dat. После чего файл с БД удаляется, а Temp.dat переименовывается в файл БД - CardsMK.dat.
        MSort – открывает меню пользователя «Сортировать». Так же с помощью цифр определяемся с выбором поля по которому будет выполняться сортировка таблицы БД:
          <1> - По клиенту.
          <2> - По номеру карты.
          <3> - По типу топлива.
          <4> - По типу владельца.
          <Esc> - Выйти…
      Типы  сортировки разбиты на свои функции: FSortByClient(FileName), FSortByCardNo(FileName), FSortByGoodType(FileName), FSortByClientType(FileName). По своему алгоритму они ничем не отличаются, разница лишь в поле сортировки.
 

6. Заключение.

        Данная  программа представляет собой работоспособный  модуль по работе с мобильными картами  АЗС. Имеет интуитивно понятный интерфейс  и не должна вызывать затруднений  в работе конечного пользователя. В программе использованы разные методы алгоритмизации похожих процессов (сортировки и редактирования).
 

7. Список литературы.

      «Основы алгоритмизации и программирование», Е. Н. Сафьянова, учебное пособие, Томск, 2000 г.
 

        

8. Приложение 1. Листинг программы.

uses Crt;
type TCards = record {Создание  нового типа определенного формата }
     Client : string [34];{Поле Клиент}
     CardNo : string[6];  {Поле №карты}
     GoodType : string [7]; {Поле Тип топлива}
     ClientType : string [10];{Поле Тип Клиент}
     Passwd : string[4]; {Поле Пароль}
     end;
CONST FileName : string = 'CardsMK.dat';{Файл БД}
CONST FileFTmp : string = 'FTmp.dat'; {Временный файл} 

{Функция определяет  существует ли файл с данным  именем}
function FileExists(AFileName : String): boolean;
var t: File of TCards;
begin
FileExists := False;
  Assign (t, AFileName);
  {$I-} Reset (t); {$I+} {отключаем контроль ошибки доступа}
  If IOResult = 0 then begin
    Close (t);
    FileExists:=True
  end;
end; 

{Функция выода  на экран содержимого файла  в виде таблицы}
Function FShowFile (AFileName:string):boolean;
Var
  t, FTmp: File of TCards;
  Cards: TCards;
  n:integer;
begin
FShowFile:=True;
  If NOT FileExists(AFileName) then begin
    FShowFile:=False;
    Exit;
  end;
  Assign(t,AfileName);
  Reset(t);
  n:=1;
  WriteLn('| № |        Владелец карты             |  Карта | Топливо | Юр. / Физ. |Пароль|');
  WriteLn('|---|-----------------------------------|--------|---------|------------|------|');
  While NOT EOF(t) do begin
    Read(t,Cards);
    Writeln('|',n:3,'|',Cards.Client:34,' | ', Cards.CardNo:6,' | ', Cards.GoodType:7,' | ', Cards.ClientType:10,' | ',
    Cards.Passwd:4,' |');
    n:=n+1;
  end;
  WriteLn('--------------------------------------------------------------------------------');
  Close(t);
  WriteLn('Количество записей: ',n-1);
end; 

{Функция контроля:  ввод числа с определенной  длинной символов}
Function FIntTrue (ATCardid:string; ADlina:integer):boolean;
var
code,chislo,dlina: integer;
begin
FIntTrue:=True;
  val(ATCardid,chislo,code);
  dlina:=length(ATCardid);
  if code<>0 then begin
    FIntTrue:=False;
  end
  else begin
    If dlina<>ADlina then FIntTrue:=False;
  end;
end; 

{Функция поиска FSelect(файл БД, файл вывода результата, поле поиска(0-клиент,1-№карты,2-тип  топлива)) }
Function FSelect(AFileName:string; AFileFTmp:string; iskomoe:string; PoleId:integer):boolean;
var
  FTmp, t : file of TCards;
  Cards:TCards;
  kursor: Longint;
  b,n:integer;
  Pole:string;
Begin
FSelect:=False;
  Assign(t,AFileName);
  Reset(t);
  Assign(FTmp,AFileFTmp);
  Rewrite(FTmp);
  kursor:=0;
  n:=1;
  while NOT EOF(t) do begin
    seek(t,kursor);
    Read(t,Cards);
    Case PoleId of
      0: Pole:=Cards.Client;
      1: Pole:=Cards.CardNo;
      2: Pole:=Cards.GoodType;
    end;
    If pos(iskomoe,Pole)=1 then begin
      write(FTmp,Cards);
      FSelect:=True;
      n:=n+1;
    end;
    inc(kursor);
  end;
  Close(FTmp);
  Close(t);
end; 

{Окно поиска  по клиенту}
Function SelectCardsClient(AFileName:string; AFileFTmp:string):boolean;
var
  t : file of TCards;
  FTmp : file of TCards;
  Cards, ftmps : Tcards;
  iskomoe : string;
Begin
SelectCardsClient:=False;
  {Проверка на существование файла БД}
  ClrScr;
  Assign(t,AFileName);
  Reset(t);
  Assign(FTmp,FileFTmp);
  Rewrite(FTmp);
  {Запрашиваем данные для поиска данных}
  Write('Введите полные или начальные параметры для поиска:  ');
  Readln(iskomoe);
  Close(FTmp);
  Close(t);
  {Выполним поиск и запишем результат в файл FTmp.dat}
  FSelect(AFileName, AFileFTmp, iskomoe, 0);
  {Выводим на  экран полученный результат}
  ClrScr;
  FShowFile(AFileFTmp);
  WriteLn('Для выхода  нажмите любую клавишу...');
  ReadKey;
end; 
 

{Окно поиска  по № карты}
Function SelectCardsNo(AFileName:string; AFileFTmp:string):boolean;
var
  FTmp, t : file of TCards;
  Cards, ftmps : Tcards;
  iskomoe: string;
  v : boolean;
Begin
  SelectCardsNo:=False;
  {Проверка на существование файлов}
  If Not FileExists(AFileName) then Exit;
  ClrScr;
  Assign(t,AFileName);
  Reset(t);
  Assign(FTmp,FileFTmp);
  Rewrite(FTmp);
  {Запрашиваем №карты для ее поиска с обязательной проверкой верности введенных данных}
  Repeat
    Write('Введите  точный номер карты (6 цифр):  ');
    Readln(iskomoe);
    v:= FIntTrue (iskomoe,6);
  until v=True;
  Close(FTmp);
  Close(t);
  {Выполним поиск  и запишем результат в файл FTmp.dat}
  FSelect(AFileName, AFileFTmp, iskomoe, 1);
  {Выводим на  экран полученный результат}
  ClrScr;
  FShowFile(AFileFTmp);
  WriteLn('Нажмите  любую клавишу...');
  ReadKey;
end; 

{Окно поиска  данных по типу топлива}
Function SelectCardsGoodType(AFileName:string; AFileFTmp:string):boolean;
var
  t : file of TCards;
  FTmp : file of TCards;
  Cards, ftmps : Tcards;
  kursor, f_size: Longint;
  a:char;
  b,n:integer;
  iskomoe: string;
  v : boolean;
Begin
  SelectCardsGoodType:=False;
  {Проверка на существование файлов}
  If Not FileExists(AFileName) then Exit;
  ClrScr;
  Assign(t,AFileName);
  Reset(t);
  Assign(FTmp,FileFTmp);
  Rewrite(FTmp);
  {Предлогаем выбрать тип топлива}
  repeat
    begin
      ClrScr;
      WriteLn(' Пожалуйста выберите тип  топлива:');
      WriteLn;
      WriteLn ('<1> "АИ-80"');
      WriteLn;
      WriteLn ('<2> "АИ-92"');
      WriteLn;
      WriteLn ('<3> "АИ-95"');
      WriteLn;
      WriteLn ('<4> "Дт"');
      WriteLn;
      WriteLn;
      WriteLn ('<Esc> Выход.');
      a:=ReadKey;
      b:=ord(a);
      case b of
        49 : iskomoe:='"АИ-80"';
        50 : iskomoe:='"АИ-92"';
        51 : iskomoe:='"АИ-95"';
        52 : iskomoe:='"ДТ"';
        27 : Exit;
      end;
    end;
  until (b=49) or (b=50) or (b=51) or (b=52) or (b=27);
  Close(FTmp);
  Close(t);
  {Выполним поиск и запишем результат в файл FTmp.dat}
  FSelect(AFileName, AFileFTmp, iskomoe, 2);
  {Выводим на  экран полученный результат}
  ClrScr;
  FShowFile(AFileFTmp);
  WriteLn('Для выхода  нажмите любую клавишу...');
  ReadKey;
end; 

{Функция удаления  карты из БД}
Function FDelCardsNo(AFileName:string; AFTmp : string):boolean;
Var
  t,FTmp,temp: File of TCards;
  Cards : TCards;
  kursor, n : integer;
  iskomoe1,iskomoe2 : string;
  otvet: char;
begin
FDelCardsNo:=False;
  SelectCardsNO(AFileName, AFTmp);
  Assign(FTmp,FileFTmp);
  Reset(FTmp);
  If FileSize(FTmp)=0 then begin
    WriteLn('Внимание! Нет данных для удаления!!!');
    Close(FTmp);
    ReadKey;
    Exit;
  end
  else begin
    repeat
      Write ('Вы действительно хотите  их удалить? <0>-ДА, <1>-НЕТ :  ');
      readln (otvet);
      if ord(otvet)=49 then EXIT;
    until ord(otvet)=48;
  end;
  Assign(t,AFileName);
  Reset(t);
  Assign(temp,'Temp.dat');
  Rewrite(temp);
  kursor:=0;
  Read(FTmp,Cards);
  iskomoe1:=Cards.CardNo;
  while NOT EOF(t) do begin
    seek(t,kursor);
    Read(t,Cards);
    iskomoe2:=Cards.CardNo;
    If iskomoe2<>iskomoe1 then begin
      write(temp,Cards);
    end;
    inc(kursor);
  end; 

  If FileSize(temp)<>0 then FDelCardsNo:=True;
  Close(t);
  Close(FTmp);
  Close(temp);
  Erase(t);
  Rename(temp, AFileName);
  WriteLn;
  WriteLn ('Запись  успешно удалена');
  WriteLn;
  WriteLn ('Нажмите  любую клавишу...');
  ReadKey;
end; 

{Функция добавления  записи в файл БД, если его  нет, то программа создаст его}
Function FAddCards (AFilename:string):boolean;
var
  t : File of TCards;
  Cards: TCards;
  t_fuel, t_client, kursor, n: integer;
  chislo:string;
  v,s:boolean;
Begin
FAddCards:=False;
  {Проверка на  существование файла}
  if NOT FileExists(AFilename) then begin
    assign(t,AFilename);
    Rewrite(t);
    Close (t);
    ReadKey;
  end;
  {Запрос данных  для записи}
  Assign(t,AFilename);
  Reset(t);
  While not Eof(t) do Read(t, Cards);
    seek(t,0);
    ClrScr;
    WriteLn ('Внимание  все поля обязательны к заполнению!');
    WriteLn ('Выдать карту: ');
и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.