Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 2
Регистрация: 04.04.2011
Сообщений: 75
1

Работа со связанным списком e-shop заказа.

04.04.2011, 01:33. Показов 544. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Нужно написать программу работающую с содержанием e-shop заказа. Чтобы программа выполняла все операции работы с динамическими списками(инициализия, удаление выбранного элемента, добавление элемента и т.п.)Вот содержание списка:
Работа со связанным списком e-shop заказа.
,Также чтоб считывала/сохраняла данные из файлаData.txt. Вот преподователь написал эту функцию:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
procedure TOrderList.LoadFromFile(File_IN_path:string);
var
  File_line:string;
  File_IN:text;
  x:integer;
  c:char;
  comma_cnt:integer;
  this_str_cnt: integer;
  ThisOrderData:TOrderData;
  This_Data:TStringLong;
  Attr_cnt:integer;
  Separator:char;
  Separator_pos:integer;
  ValErr:integer;
  Real_out:real;
  Int_Out:integer;
begin
 
  Assign(File_IN, File_IN_path);
  ReSet(File_IN);
 
  comma_cnt := 0;
  while not SeekEof(File_IN) do begin
    ReadLn(File_IN,File_line);
    Attr_cnt := 0;
    Separator := '|';
    repeat
      Attr_cnt := Attr_cnt + 1;
      Separator_pos:=Pos(Separator,File_line);
      if Separator_pos = 0 then Separator_pos := length(File_line)+1;
      This_Data := copy(File_line,1,Separator_pos-1);
      File_line := copy(File_line,Separator_pos+1,length(File_line));
      case Attr_cnt of
        1:  ThisOrderData.Customer := This_Data;
        2:  ThisOrderData.Email := This_Data;
        3:  ThisOrderData.Address := This_Data;
        4:  ThisOrderData.Product := This_Data;
        5:  begin
          val(This_Data,Real_Out,ValErr);
          ThisOrderData.Item_Price := Real_Out;
        end;
        6:  begin
          val(This_Data,Int_Out,ValErr);
          ThisOrderData.Items := Int_Out;
        end;
        7:  begin
          if This_Data = 'CreditCard' then ThisOrderData.PaymentType := CreditCard
          else if This_Data = 'CashOnDelivery' then ThisOrderData.PaymentType := CashOnDelivery
          else if This_Data = 'BankTransfer' then ThisOrderData.PaymentType := BankTransfer;
        end;
        8:  begin
          if This_Data <> '' then begin
            if This_Data = 'VISA' then ThisOrderData.CreditCardType := VISA
            else if This_Data = 'VISAELECTRON' then ThisOrderData.CreditCardType := VISAELECTRON
            else if This_Data = 'MAESTRO' then ThisOrderData.CreditCardType := MAESTRO;
          end;
        end;
        9: if This_Data <> '' then ThisOrderData.CreditCardNo := This_Data;
        10: if This_Data <> '' then ThisOrderData.Account_No := This_Data;
      end;
    until Attr_cnt = 10;
    self.AddToStart(ThisOrderData);
  end;
  Close(File_IN);
end;
Вот я попробовал написать эту программу исходя из его процедуры:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
program ZachetPRAK1;
type
     TCustomer=string; {данные о покупателях, продукте и т.д.}
     TEmail=string;
     TAdress=string;
     TProduct=string;
     TPaymentType=(CreditCard, CashOnDelivery, BankTransfer);
     TCreditCardType=(Visa, VisaElectron, Maestro);
     TCreditCardNo=string;
     TAccount_No=string;
     TStringLong=string;
     TItemPrice=real;
     TItems=integer;
                         TOrderData=record
                         Customer:TCustomer;
                         Email:TEmail;
                         Address:TAdress;
                         Product:TProduct;
                         PaymentType:TPaymentType;
                         CreditCardType:TCreditCardType;
                         CreditCardNo:TCreditCardNo;
                         Account_No:TAccount_No;
                         Item_Price:TItemPrice;
                         Items:TItems;
                         end;
 
     PPerson = ^TPerson; {работа со связными списками}
     TPerson = record
     Data: TOrderData;
     Next: PPerson;
     end;
TList = record {также помощь связным спискам}
head, stop: PPerson;{head-первый элемент, stop-последний}
counter: integer;
end;
 
TOrderList=object {вот тут объект для работы со всеми процедурами которые нужны, пока я только написал инициализацию и добавление в начало}
procedure Initializace(L:TList);
procedure LoadFromFile(File_IN_path:string);
procedure AddToStart(var l: TList; data: TOrderData);
end;
 
var
  l:Tlist;
  MyList:TList;
  MyData:TOrderData;
  MyPointer:PPerson;
 
procedure TOrderList.Initialize(var l: TList);
var p:PPerson;
begin
  New(p);
  with l do begin
    head:=p;
    head^.next:=nil;
    stop:=head;
    counter:=0;
  end;
end;
 
procedure TOrderList.AddToStart(var l: TList; data: TOrderData);
var p:PPerson;
begin
  New(p);
  with l do begin
    p^.data := data;
    p^.next := head;
    head := p;
    counter := counter + 1;
  end;
end;
 
procedure TOrderList.LoadFromFile(File_IN_path:string);
var
  File_line:string;
  File_IN:text;
  x:integer;
  c:char;
  comma_cnt:integer;
  this_str_cnt: integer;
  ThisOrderData:TOrderData;
  This_Data:TStringLong;
  Attr_cnt:integer;
  Separator:char;
  Separator_pos:integer;
  ValErr:integer;
  Real_out:real;
  Int_Out:integer;
begin
 
  Assign(File_IN, File_IN_path);
  ReSet(File_IN);
 
  comma_cnt := 0;
  while not SeekEof(File_IN) do begin
    ReadLn(File_IN,File_line);
    Attr_cnt := 0;
    Separator := '|';
    repeat
      Attr_cnt := Attr_cnt + 1;
      Separator_pos:=Pos(Separator,File_line);
      if Separator_pos = 0 then Separator_pos := length(File_line)+1;
      This_Data := copy(File_line,1,Separator_pos-1);
      File_line := copy(File_line,Separator_pos+1,length(File_line));
      case Attr_cnt of
        1:  ThisOrderData.Customer := This_Data;
        2:  ThisOrderData.Email := This_Data;
        3:  ThisOrderData.Address := This_Data;
        4:  ThisOrderData.Product := This_Data;
        5:  begin
          val(This_Data,Real_Out,ValErr);
          ThisOrderData.Item_Price := Real_Out;
        end;
        6:  begin
          val(This_Data,Int_Out,ValErr);
          ThisOrderData.Items := Int_Out;
        end;
        7:  begin
          if This_Data = 'CreditCard' then ThisOrderData.PaymentType := CreditCard
          else if This_Data = 'CashOnDelivery' then ThisOrderData.PaymentType := CashOnDelivery
          else if This_Data = 'BankTransfer' then ThisOrderData.PaymentType := BankTransfer;
        end;
        8:  begin
          if This_Data <> '' then begin
            if This_Data = 'VISA' then ThisOrderData.CreditCardType := VISA
            else if This_Data = 'VISAELECTRON' then ThisOrderData.CreditCardType := VISAELECTRON
            else if This_Data = 'MAESTRO' then ThisOrderData.CreditCardType := MAESTRO;
          end;
        end;
        9: if This_Data <> '' then ThisOrderData.CreditCardNo := This_Data;
        10: if This_Data <> '' then ThisOrderData.Account_No := This_Data;
      end;
    until Attr_cnt = 10;
   self.AddToStart(l,ThisOrderData);
  end;
  Close(File_IN);
end;
var orders:^TOrderList; {вот здесь я не уверен, не знаю как правильно сделать чтоб вызывались хотя бы те две процедуры}
begin
new(orders);
orders.LoadFromFile('Data.txt');
end.
Я не уверен в правильности описания типов и можно ли так делать, кто может сказать как правильно вызвать эти процедуры и где у меня возможные ошибки? я уже запарился, скоро посидею, помогите плз, если правильно поможете то закину вам на веб мани 500 р. честное слово, врать не зачем, просто уже не знаю как написать эту программу.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2011, 01:33
Ответы с готовыми решениями:

Создание и работа с связанным списком,стеками и очередью не используя класс(-ы)
--------------------------------1------------------------------- (Не используя класс,...

Работа со связанным списком (смена двух чисел местами в списке)
Не могу сделать смену двух чисел местами в списке, я уже писал но так и никто путного не написал....

Хеш таблица со связанным списком STL
Добрый день. Подскажите пожалуйста как реализуется хеш таблица со связанным списком в stl

Создать связанный список из записей, содержащих сведения о журналах, реализовать операции со связанным списком
Создать связанный список из записей, содержащих сведения о журналах (индекс, наименование, цена),...

0
04.04.2011, 01:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2011, 01:33
Помогаю со студенческими работами здесь

Работа с движком E-Shop и прайсами Excel
Ребят подскажите как правильно сделать. В общем есть сайт на движке E-Shop нужно перекинуть с...

Что лучше: www.site.com/shop или shop.site.com?
Какой вариант лучше: www.site.com/shop или shop.site.com? В каком случае легче раскрутить? Какие...

Virtuemart неправильная работа оформления заказа
Делаю и.м. на джумле http://secondhand-spain.com/ , установил шаблон с демо данными. И теперь...

Работа со списком
Приветствую всех. В файле null.txt есть определенный список: Vitaliy=6 Evgeniy=4 Vasiliy=1 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru