Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit UnitStudentProfile;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, VclTee.TeeGDIPlus, Vcl.StdCtrls,
- Vcl.Mask, Vcl.DBCtrls, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids, VCLTee.TeEngine,
- VCLTee.TeeProcs, VCLTee.Chart, VCLTee.Series, Printers, MmSystem;
- type
- TfrmStudentProfile = class(TForm)
- lblStudentProfile: TLabel;
- rgStudentBreakdown: TRadioGroup;
- lblHomeworkBreakdown: TLabel;
- lblAssessmentBreakdown: TLabel;
- rgAcademicInformation: TRadioGroup;
- lblStudentNumber: TLabel;
- lblStudentName: TLabel;
- lblCandidateNumber: TLabel;
- lblGroup: TLabel;
- rgAcademicYear: TRadioGroup;
- lblCurrentGrade: TLabel;
- lblTagertGrade: TLabel;
- lblProgression: TLabel;
- lblGCSESubject2: TLabel;
- lblGCSESubject1: TLabel;
- btnBack: TButton;
- edtTargetGrade: TEdit;
- edtCurrentGrade: TEdit;
- edtGCSESubject2: TEdit;
- edtGCSESubject1: TEdit;
- edtDisplayGroupName: TEdit;
- edtDisplayStudentNumber: TEdit;
- edtDisplayStudentName: TEdit;
- edtDisplayCandidateNumber: TEdit;
- edtDisplayTeacherName: TEdit;
- edtDisplayStudentEmail: TEdit;
- edtDisplayParentGuardianEmail: TEdit;
- lblTeacher: TLabel;
- lblStudentEmail: TLabel;
- Label3: TLabel;
- edtProgression: TEdit;
- lblSPPastASQaulification: TLabel;
- edtDisplayPastASQualification: TEdit;
- dbgStudentHomeworkTable: TDBGrid;
- dbgStudentAssessmentTable: TDBGrid;
- btnPrintLineGraphs: TButton;
- pdStudentProfile: TPrintDialog;
- cAssessmentChart: TChart;
- sAssessmentTarGrade: TLineSeries;
- sAssessmentUMS: TLineSeries;
- cHomeworkChart: TChart;
- sHomeworkTarGrade: TLineSeries;
- sHomeworkUMS: TLineSeries;
- btnSendAlert: TButton;
- btnPrintStudentReport: TButton;
- chboPrintHomeworkGraph: TCheckBox;
- chboPrintAssessmentGraph: TCheckBox;
- procedure btnBackClick(Sender: TObject);
- procedure FormShow(Sender: TObject);
- procedure btnPrintLineGraphsClick(Sender: TObject);
- procedure btnSendAlertClick(Sender: TObject);
- procedure btnPrintStudentReportClick(Sender: TObject);
- procedure btnSaveClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- frmStudentProfile: TfrmStudentProfile;
- implementation
- uses UnitGroupProfiles, UnitdmDatabaseComponents, UnitAlerts, UnitGCSESubjects;
- {$R *.dfm}
- procedure DisplayGraph(Grid : TDBGrid; LineGraph1, LineGraph2 : TLineSeries; TargetGrade:string);
- var
- x : integer;
- TargetGradeUMS : integer;
- begin
- { ---------- Convert Mark to UMS Value ---------- }
- if TargetGrade = 'A*' then
- TargetGradeUMS := 90
- else if TargetGrade = 'A' then
- TargetGradeUMS := 80
- else if TargetGrade = 'B' then
- TargetGradeUMS := 70
- else if TargetGrade = 'C' then
- TargetGradeUMS := 60
- else if TargetGrade = 'D' then
- TargetGradeUMS := 50
- else if TargetGrade = 'D' then
- TargetGradeUMS := 40;
- { ---------- Plot Line for Assessment/Homework and Target Grade ---------- }
- with Grid do
- begin
- for x := 3 to FieldCount - 1 do
- // Plot the horizontal Target Grade
- LineGraph1.AddXY((x-3), TargetGradeUMS);
- // Plot the Assessment/Homework UMS
- LineGraph2.AddXY((x-3), Fields[x].Value);
- end;
- end;
- procedure TfrmStudentProfile.btnBackClick(Sender: TObject);
- begin
- frmStudentProfile.Hide;
- frmGroupProfile.Show;
- end;
- procedure TfrmStudentProfile.btnPrintLineGraphsClick(Sender: TObject);
- begin
- // if none of the charts are selected
- if (chboPrintHomeworkGraph.Checked = False) AND (chboPrintAssessmentGraph.Checked = False) then
- begin
- PlaySound('SYSTEMEXCLAMATION', 0, SND_ASYNC); // Play error sound
- Showmessage('ERROR: Please select a graph'); // Produce an errormessage
- end // end of if statement
- else
- begin
- pdStudentProfile.Create(frmStudentProfile);
- if pdStudentProfile.Execute then
- begin
- if chboPrintHomeworkGraph.Checked = True then
- begin
- // Print the homework chart
- cHomeworkChart.PrintProportional := True;
- cHomeworkChart.PrintLandscape;
- end; // end of if statement
- if chboPrintAssessmentGraph.Checked = True then
- begin
- // Print the assessment chart
- cAssessmentChart.PrintProportional := True;
- cAssessmentChart.PrintLandscape;
- end; // end of if statement
- end; // end of else statement
- end; // end of if statement
- end;
- procedure TfrmStudentProfile.btnPrintStudentReportClick(Sender: TObject);
- var
- StudentReportTextFile : TextFile;
- x : integer;
- begin
- pdStudentProfile.Create(frmStudentProfile);
- if pdStudentProfile.Execute then
- begin
- AssignPrn(StudentReportTextFile);
- // Set the font of the printer file
- Printer.Canvas.Font.Name := 'Arial';
- // Set the font size of the printer file
- Printer.Canvas.Font.Size := 16;
- // Open the printer file for printing access
- Rewrite(StudentReportTextFile);
- Writeln(StudentReportTextFile, 'Student Report');
- Writeln(StudentReportTextFile, '');
- // Send to the printer file the...
- Writeln(StudentReportTextFile, 'Student Details');
- Writeln(StudentReportTextFile, '');
- // write to the printer file the student details
- Writeln(StudentReportTextFile, 'Student number: ', edtDisplayStudentNumber.Text); // ...Student Number
- Writeln(StudentReportTextFile, 'Student name: ', edtDisplayStudentName.Text); // ...Student Name
- Writeln(StudentReportTextFile, 'Candidate number: ',edtDisplayCandidateNumber.Text); // ...Candidate Number
- Writeln(StudentReportTextFile, 'Teacher name: ', edtDisplayTeacherName.Text); // ...Teacher Name
- Writeln(StudentReportTextFile, 'Group name: ', edtDisplayGroupName.Text); // ...Group Name
- Writeln(StudentReportTextFile, 'Student email: ', edtDisplayStudentEmail.Text); // ...Student Email
- Writeln(StudentReportTextFile, 'Parent/Guardian email: ', edtDisplayParentGuardianEmail.Text); // ...Parent/Guardian Email
- // Send to the printer file the academic information
- Writeln(StudentReportTextFile, '');
- Writeln(StudentReportTextFile, 'Academic Information');
- Writeln(StudentReportTextFile, '');
- Writeln(StudentReportTextFile, 'Current grade: ', edtCurrentGrade.Text); // ...Current Grade
- Writeln(StudentReportTextFile, 'Target grade: ', edtTargetGrade.Text); // ...Target Grade
- Writeln(StudentReportTextFile, 'Progression: ', edtProgression.Text); // ...Progression
- Writeln(StudentReportTextFile, 'Progression: ', edtProgression.Text); // ...Progression
- Writeln(StudentReportTextFile, frmGCSESubjects.ledtGCSESubject1.Text+': '+edtGCSESubject1.Text); // ...Progression
- Writeln(StudentReportTextFile, frmGCSESubjects.ledtGCSESubject2.Text+': '+edtGCSESubject2.Text); // ...Progression
- Writeln(StudentReportTextFile, 'Past AS Qualification: ', edtDisplayPastASQualification.Text); // ...Past AS Qaulification
- Writeln(StudentReportTextFile, '');
- Writeln(StudentReportTextFile, '');
- Writeln(StudentReportTextFile, '');
- // Write to the file the assessment names and UMS
- Writeln(StudentReportTextFile, 'Assessments');
- Writeln(StudentReportTextFile, '');
- with dbgStudentAssessmentTable do
- begin
- for x := 3 to FieldCount-1 do
- begin
- writeln(StudentReportTextFile, Columns[x].Title.Caption,' ', Fields[x].AsString);
- end; // end of for loop
- end; // end of with statement
- // Write to the file the homework names and UMS
- Writeln(StudentReportTextFile, '');
- Writeln(StudentReportTextFile, 'Homeworks');
- Writeln(StudentReportTextFile, '');
- with dbgStudentHomeworkTable do
- begin
- for x := 3 to FieldCount-1 do
- begin
- writeln(StudentReportTextFile, Columns[x].Title.Caption,' ', Fields[x].AsString);
- end; // end of for loop
- end; // end of with statement
- // Once all the data has been written to the file
- Closefile(StudentReportTextFile); // Close the printer
- // Print the homework graph
- cHomeworkChart.PrintProportional := True;
- cHomeworkChart.PrintLandscape;
- // Print the assessment graph
- cAssessmentChart.PrintProportional := True;
- cAssessmentChart.PrintLandscape;
- end; // end of if statement
- end;
- procedure TfrmStudentProfile.btnSendAlertClick(Sender: TObject);
- begin
- with frmAlerts do
- begin
- // Close the Student Profile form
- frmStudentProfile.Hide;
- // Open the Alerts Form
- Show;
- // Automatically enter the student email
- ledtRecipientEmail.Text := edtDisplayStudentEmail.Text;
- end; // end of with statement
- end;
- procedure TfrmStudentProfile.FormShow(Sender: TObject);
- var
- x : integer;
- TargetGradeUMS : integer;
- TargetGrade : string;
- begin
- { ---------- Display Assessment Table for student selected ---------- }
- with dmDatabaseComponents.adoUnitSPAssessmentTable do
- begin
- Close;
- SQL.Clear; // Initialize
- SQL.Text:='SELECT * FROM [ASSESSMENT'+frmGroupProfile.ledtGPDisplayGroupName.Text+'] WHERE StudentID = '+QuotedStr(frmGroupProfile.dbgStudentList.DataSource.DataSet.FieldByName('StudentNumber').AsString);
- ExecSQL; // Execute the SQL
- Open;
- end; // End of with statement
- { ---------- Display Homework Table for student selected ---------- }
- with dmDatabaseComponents.adoUnitSPHomeworkTable do
- begin
- Close;
- SQL.Clear; // Initialize
- SQL.Text:='SELECT * FROM [HOMEWORK'+frmGroupProfile.ledtGPDisplayGroupName.Text+'] WHERE StudentID = '+QuotedStr(frmGroupProfile.dbgStudentList.DataSource.DataSet.FieldByName('StudentNumber').AsString);
- ExecSQL; // Execute the SQL
- Open;
- end; // End of with statement
- { ---------- Convert Grade to UMS ---------- }
- if TargetGrade = 'A*' then // If the target grade is an A*
- begin
- TargetGradeUMS := 90; // Target UMS is 90
- end
- else if TargetGrade = 'A' then // If the target grade is an A
- begin
- TargetGradeUMS := 80; // Target UMS is 80
- end
- else if TargetGrade = 'B' then // If the target grade is an B
- begin
- TargetGradeUMS := 70; // Target UMS is 70
- end
- else if TargetGrade = 'C' then // If the target grade is an C
- begin
- TargetGradeUMS := 60; // Target UMS is 60
- end
- else if TargetGrade = 'D' then // If the target grade is an D
- begin
- TargetGradeUMS := 50; // Target UMS is 50
- end
- else if TargetGrade = 'E' then // If the target grade is an E
- begin
- TargetGradeUMS := 40; // Target UMS is 40
- end;
- with dmDatabaseComponents.adoUnitSPHomeworkTable do
- begin
- // Loop theought all columns
- for x := 3 to FieldCount - 1 do
- begin
- // If the column holds a null value
- if Fields[x].AsInteger = null then
- begin
- // Plot a straight horizontal line for the target grade
- sHomeworkTarGrade.AddXY((x-3), TargetGradeUMS);
- // Plot the Y value as 0
- sHomeworkUMS.AddXY((x-3), 0);
- Next; // Move on the next x value
- end // End of if statement
- // Otherwise...
- else
- begin
- // ...Plot value in the column
- sHomeworkTarGrade.AddXY((x-3), TargetGradeUMS);
- sHomeworkUMS.AddXY((x-3), Fields[x].AsInteger);
- end; // End of else statement
- end;
- end;
- with dmDatabaseComponents.adoUnitSPAssessmentTable do
- begin
- // Loop theought all columns
- for x := 3 to FieldCount - 1 do
- if Fields[x].Value = null then
- begin
- // Plot a straight horizontal line for the target grade
- sAssessmentTarGrade.AddXY((x-3), TargetGradeUMS);
- // Plot the Y value as 0
- sAssessmentUMS.AddXY((x-3), 0);
- end
- // Otherwise
- else
- begin
- // Plot a straight horizontal line for the target grade
- sAssessmentTarGrade.AddXY((x-3), TargetGradeUMS);
- // ...Plot value in the column
- sAssessmentUMS.AddXY((x-3), Fields[x].AsInteger);
- end;
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement