Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.06.2010, 23:46
terus terus вне форума
Прохожий
 
Регистрация: 11.06.2010
Сообщения: 1
Репутация: 10
По умолчанию успеваемость студентов

Решил переделать одну программку под свои нужды-но знаний пока маловато.не могли бы вы попочь начинающему кодеру...

Даны студенты
оператор вводит
группу фамилию 54354(и пять оценок в этом формате)

Прога записывает данные в файл-потом считывает-считает средний балл-умножает на коээф. если оценки 4-5 то 0,5 если 0-3 нет стипендии

считывание среднего балла
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i,w:integer;
c : real;
str:string;

begin
Memo1.clear;
w:=0;
str:= edit1.text;
for i:=1 to length(str) do
w:=w+strtoint(str[i]);

c:=w/length(str);

а вот само тело проги
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls, Dateutils, ComCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    BitBtn1: TBitBtn;
    OpenDialog1: TOpenDialog;
    Memo5: TMemo;
    Label4: TLabel;
    Edit3: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    Edit4: TEdit;
    Memo4: TMemo;
    Label7: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);


    procedure BitBtn1Click(Sender: TObject);
    private
    { Private declarations }
  public
    { Public declarations }
  end;
type stud = record
   fam:string[100];
   oc1:Integer;
   oc2:integer;
   oc3:integer;
   end;


var
  Form1: TForm1;
    f:File of stud;
  ft:TextFile;
  w:Stud;
  fname,fnamet:String;
  zak:Boolean;
  label5:Tlabel;
implementation

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear; Memo2.Clear; Memo3.Clear; memo4.clear; Memo5.Clear;
 Edit1.Clear; Edit2.Clear;Edit3.clear; edit4.clear;

 zak:=False;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if (Edit1.Text<>'') and ((StrToIntDef(Edit2.Text,11)<11) or (StrToIntDef(Edit2.Text,0)>0)) then
 if (Edit3.Text<>'') and ((StrToIntDef(Edit4.Text,11)<11) or (StrToIntDef(Edit4.Text,0)>0)) then
begin
Memo1.Lines.Add(Edit1.Text);
Memo2.Lines.Add(Edit2.Text);
Memo3.Lines.Add(Edit3.Text);
Memo5.Lines.Add(Edit4.Text);
end else ShowMessage('Error.check your student');
  (*
     w.fam:=Edit1.Text;
      w.oc[1]:=StrToInt(Edit2.Text);
      w.oc[2]:=StrToInt(Edit3.Text);
      w.oc[4]:=StrToInt(Edit4.Text);
      Write(f,w);
      Memo1.Lines.Add(w.fam);
      Memo2.Lines.Add(IntToStr(w.oc[1]));
      Memo3.Lines.Add(IntToStr(w.oc[2]));
      memo5.lines.add(IntToStr(w.oc[3]));
      Edit1.Clear; Edit2.Clear; Edit3.Clear; Edit4.Clear;
 *)
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  SaveDialog1:TSaveDialog;
  i:integer;
begin
  SaveDialog1 := TSaveDialog.Create(Self);
  try
    SaveDialog1.Title:='Создать файл';
  SaveDialog1.DefaultExt:='dat';
  if SaveDialog1.Execute Then
      Begin
        fname:=SaveDialog1.FileName;
      //пишем сразу типизированый файл и в txt
        AssignFile(f,fname);
        ReWrite(f);
        AssignFile(ft,ChangeFileExt(fname,'.txt'));
        ReWrite(ft);
   WriteLn(ft,'Общий список студентов');
   WriteLn(ft,'   Фамилия      группа     оценки    участие ');
    for I := 0 to Memo1.Lines.Count - 1 do
          begin
     //это в типизированый
          w.fam:=Memo1.Lines.Strings[i];
          w.oc1:=StrToInt(Memo2.Lines.Strings[i]);
          w.oc2:=StrToint(Memo3.Lines.Strings[i]);
          w.oc3:=StrToint(Memo5.Lines.Strings[i]);
           Write(f,w);
     //это в txt
        WriteLn(ft,Memo1.Lines.Strings[i]:10,Memo2.Lines.Strings[i]:2,Memo3.Lines.Strings[i],Memo5.Lines.Strings[i]:10);
          end;
      End;
  finally
    CloseFile(f);
    CloseFile(ft);
    SaveDialog1.Free;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
mi:integer;
rec_:boolean;
begin
OpenDialog1.Title:='Открыть файл';
  if OpenDialog1.Execute Then
    Begin
      fname:=OpenDialog1.FileName;
      AssignFile(f,fname);
      Reset(f);
    Memo1.Clear; Memo2.Clear; Memo3.Clear; memo5.Clear;
While Not EOF(f) Do
     Begin
       Read(f,w);
 mi:=Memo3.Lines.Count-1;
 rec_:=false;
repeat
if mi<0 then
 begin
    Memo1.Lines.Insert(0,w.fam);
    Memo2.Lines.Insert(0,inttostr(w.oc1));
    Memo3.Lines.Insert(0,inttostr(w.oc2));

    rec_:=true;
 end else
if (w.oc2<StrToDate(Memo3.Lines.Strings[mi]))  then
  begin
    Memo1.Lines.Insert(mi+1,w.fam);
    Memo2.Lines.Insert(mi+1,inttostr(w.oc1));
    Memo3.Lines.Insert(mi+1,inttostr(w.oc2));
    rec_:=true;
  end;
inc(mi,-1);
until  (MI<-1)  or  rec_
end;
    End;  // CloseFile(f);
   Label5.Caption:='стипендии посчитаны в вормате групаа-фамилия-сумма';
end;





end.

господа если знаете как проще-я рад выслушать
в программе не хватает только доработки ср-балл-умножение на коээфициенты. минимальная стипендия скпжем 100р
Ответить с цитированием
  #2  
Старый 12.06.2010, 01:35
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,036
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну а в чем проблема?

Код:
procedure TForm1.Button1Click(Sender: TObject);
var i,w:integer;
c : real;
str:string;

Stipendia : Currency;
HasC : Boolean;

begin
Memo1.clear;
w:=0;
str:= edit1.text;

HasC := False;

for i:=1 to length(str) do

begin

  w:=w+strtoint(str[i]);

  HasC := str[i] in ['1','2','3'] Or HasC;
end;


c:=w/length(str);


if Not HasC Then Stipendia := 100 * 0.5 Else Stipendia := 0;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:24.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter