|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
успеваемость студентов
Решил переделать одну программку под свои нужды-но знаний пока маловато.не могли бы вы попочь начинающему кодеру...
Даны студенты оператор вводит группу фамилию 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
|
|||
|
|||
Ну а в чем проблема?
Код:
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; |