Advertisement
Guest User

Untitled

a guest
Apr 24th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 12.04 KB | None | 0 0
  1. unit UnitStudentProfile;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, VclTee.TeeGDIPlus, Vcl.StdCtrls,
  8.   Vcl.Mask, Vcl.DBCtrls, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids, VCLTee.TeEngine,
  9.   VCLTee.TeeProcs, VCLTee.Chart, VCLTee.Series, Printers, MmSystem;
  10.  
  11. type
  12.   TfrmStudentProfile = class(TForm)
  13.     lblStudentProfile: TLabel;
  14.     rgStudentBreakdown: TRadioGroup;
  15.     lblHomeworkBreakdown: TLabel;
  16.     lblAssessmentBreakdown: TLabel;
  17.     rgAcademicInformation: TRadioGroup;
  18.     lblStudentNumber: TLabel;
  19.     lblStudentName: TLabel;
  20.     lblCandidateNumber: TLabel;
  21.     lblGroup: TLabel;
  22.     rgAcademicYear: TRadioGroup;
  23.     lblCurrentGrade: TLabel;
  24.     lblTagertGrade: TLabel;
  25.     lblProgression: TLabel;
  26.     lblGCSESubject2: TLabel;
  27.     lblGCSESubject1: TLabel;
  28.     btnBack: TButton;
  29.     edtTargetGrade: TEdit;
  30.     edtCurrentGrade: TEdit;
  31.     edtGCSESubject2: TEdit;
  32.     edtGCSESubject1: TEdit;
  33.     edtDisplayGroupName: TEdit;
  34.     edtDisplayStudentNumber: TEdit;
  35.     edtDisplayStudentName: TEdit;
  36.     edtDisplayCandidateNumber: TEdit;
  37.     edtDisplayTeacherName: TEdit;
  38.     edtDisplayStudentEmail: TEdit;
  39.     edtDisplayParentGuardianEmail: TEdit;
  40.     lblTeacher: TLabel;
  41.     lblStudentEmail: TLabel;
  42.     Label3: TLabel;
  43.     edtProgression: TEdit;
  44.     lblSPPastASQaulification: TLabel;
  45.     edtDisplayPastASQualification: TEdit;
  46.     dbgStudentHomeworkTable: TDBGrid;
  47.     dbgStudentAssessmentTable: TDBGrid;
  48.     btnPrintLineGraphs: TButton;
  49.     pdStudentProfile: TPrintDialog;
  50.     cAssessmentChart: TChart;
  51.     sAssessmentTarGrade: TLineSeries;
  52.     sAssessmentUMS: TLineSeries;
  53.     cHomeworkChart: TChart;
  54.     sHomeworkTarGrade: TLineSeries;
  55.     sHomeworkUMS: TLineSeries;
  56.     btnSendAlert: TButton;
  57.     btnPrintStudentReport: TButton;
  58.     chboPrintHomeworkGraph: TCheckBox;
  59.     chboPrintAssessmentGraph: TCheckBox;
  60.     procedure btnBackClick(Sender: TObject);
  61.     procedure FormShow(Sender: TObject);
  62.     procedure btnPrintLineGraphsClick(Sender: TObject);
  63.     procedure btnSendAlertClick(Sender: TObject);
  64.     procedure btnPrintStudentReportClick(Sender: TObject);
  65.     procedure btnSaveClick(Sender: TObject);
  66.   private
  67.     { Private declarations }
  68.   public
  69.     { Public declarations }
  70.   end;
  71.  
  72. var
  73.   frmStudentProfile: TfrmStudentProfile;
  74.  
  75. implementation
  76.  
  77. uses  UnitGroupProfiles, UnitdmDatabaseComponents, UnitAlerts, UnitGCSESubjects;
  78.  
  79. {$R *.dfm}
  80.  
  81. procedure DisplayGraph(Grid : TDBGrid; LineGraph1, LineGraph2 : TLineSeries;  TargetGrade:string);
  82. var
  83.   x : integer;
  84.   TargetGradeUMS : integer;
  85. begin
  86.   {  ----------  Convert Mark to UMS Value  ----------  }
  87.   if TargetGrade = 'A*' then
  88.     TargetGradeUMS := 90
  89.   else if TargetGrade = 'A' then
  90.     TargetGradeUMS := 80
  91.   else if TargetGrade = 'B' then
  92.     TargetGradeUMS := 70
  93.   else if TargetGrade = 'C' then
  94.     TargetGradeUMS := 60
  95.   else if TargetGrade = 'D' then
  96.     TargetGradeUMS := 50
  97.   else if TargetGrade = 'D' then
  98.     TargetGradeUMS := 40;
  99.  
  100.  
  101.   {  ----------  Plot Line for Assessment/Homework and Target Grade   ----------  }
  102.   with Grid do
  103.   begin
  104.     for x := 3 to FieldCount - 1 do
  105.     //  Plot the horizontal Target Grade
  106.     LineGraph1.AddXY((x-3), TargetGradeUMS);
  107.     //  Plot the Assessment/Homework UMS
  108.     LineGraph2.AddXY((x-3), Fields[x].Value);
  109.   end;
  110.  
  111. end;
  112.  
  113. procedure TfrmStudentProfile.btnBackClick(Sender: TObject);
  114. begin
  115.   frmStudentProfile.Hide;
  116.   frmGroupProfile.Show;
  117. end;
  118.  
  119. procedure TfrmStudentProfile.btnPrintLineGraphsClick(Sender: TObject);
  120. begin
  121.   //  if none of the charts are selected
  122.   if (chboPrintHomeworkGraph.Checked = False) AND (chboPrintAssessmentGraph.Checked = False) then
  123.   begin
  124.     PlaySound('SYSTEMEXCLAMATION', 0, SND_ASYNC);  //  Play error sound
  125.     Showmessage('ERROR: Please select a graph');  //  Produce an errormessage
  126.   end  //  end of if statement
  127.   else
  128.   begin
  129.     pdStudentProfile.Create(frmStudentProfile);
  130.  
  131.     if pdStudentProfile.Execute then
  132.     begin
  133.       if chboPrintHomeworkGraph.Checked = True then
  134.       begin
  135.         // Print the homework chart
  136.         cHomeworkChart.PrintProportional := True;
  137.         cHomeworkChart.PrintLandscape;
  138.       end;  //  end of if statement
  139.  
  140.       if chboPrintAssessmentGraph.Checked = True then
  141.       begin
  142.         // Print the assessment chart
  143.         cAssessmentChart.PrintProportional := True;
  144.         cAssessmentChart.PrintLandscape;
  145.       end;  //  end of if statement
  146.     end;  //  end of else statement
  147.   end;  //  end of if statement
  148. end;
  149.  
  150. procedure TfrmStudentProfile.btnPrintStudentReportClick(Sender: TObject);
  151. var
  152.   StudentReportTextFile : TextFile;
  153.   x : integer;
  154. begin
  155.   pdStudentProfile.Create(frmStudentProfile);
  156.  
  157.   if pdStudentProfile.Execute then
  158.   begin
  159.  
  160.     AssignPrn(StudentReportTextFile);
  161.     // Set the font of the printer file
  162.     Printer.Canvas.Font.Name := 'Arial';
  163.     // Set the font size of the printer file
  164.     Printer.Canvas.Font.Size := 16;
  165.     // Open the printer file for printing access
  166.     Rewrite(StudentReportTextFile);
  167.     Writeln(StudentReportTextFile, 'Student Report');
  168.     Writeln(StudentReportTextFile, '');
  169.     //  Send to the printer file the...
  170.     Writeln(StudentReportTextFile, 'Student Details');
  171.     Writeln(StudentReportTextFile, '');
  172.     // write to the printer file the student details
  173.     Writeln(StudentReportTextFile, 'Student number: ', edtDisplayStudentNumber.Text); // ...Student Number
  174.     Writeln(StudentReportTextFile, 'Student name: ', edtDisplayStudentName.Text); // ...Student Name
  175.     Writeln(StudentReportTextFile, 'Candidate number: ',edtDisplayCandidateNumber.Text); // ...Candidate Number
  176.     Writeln(StudentReportTextFile, 'Teacher name: ', edtDisplayTeacherName.Text); // ...Teacher Name
  177.     Writeln(StudentReportTextFile, 'Group name: ', edtDisplayGroupName.Text); // ...Group Name
  178.     Writeln(StudentReportTextFile, 'Student email: ', edtDisplayStudentEmail.Text); // ...Student Email
  179.     Writeln(StudentReportTextFile, 'Parent/Guardian email: ', edtDisplayParentGuardianEmail.Text); // ...Parent/Guardian Email
  180.  
  181.     //  Send to the printer file the academic information
  182.     Writeln(StudentReportTextFile, '');
  183.     Writeln(StudentReportTextFile, 'Academic Information');
  184.     Writeln(StudentReportTextFile, '');
  185.     Writeln(StudentReportTextFile, 'Current grade: ', edtCurrentGrade.Text); // ...Current Grade
  186.     Writeln(StudentReportTextFile, 'Target grade: ', edtTargetGrade.Text); // ...Target Grade
  187.     Writeln(StudentReportTextFile, 'Progression: ', edtProgression.Text); // ...Progression
  188.     Writeln(StudentReportTextFile, 'Progression: ', edtProgression.Text); // ...Progression
  189.     Writeln(StudentReportTextFile, frmGCSESubjects.ledtGCSESubject1.Text+': '+edtGCSESubject1.Text); // ...Progression
  190.     Writeln(StudentReportTextFile, frmGCSESubjects.ledtGCSESubject2.Text+': '+edtGCSESubject2.Text); // ...Progression
  191.     Writeln(StudentReportTextFile, 'Past AS Qualification: ', edtDisplayPastASQualification.Text); // ...Past AS Qaulification
  192.     Writeln(StudentReportTextFile, '');
  193.     Writeln(StudentReportTextFile, '');
  194.     Writeln(StudentReportTextFile, '');
  195.  
  196.     // Write to the file the assessment names and UMS
  197.     Writeln(StudentReportTextFile, 'Assessments');
  198.     Writeln(StudentReportTextFile, '');
  199.     with  dbgStudentAssessmentTable do
  200.     begin
  201.       for x := 3 to FieldCount-1 do
  202.       begin
  203.         writeln(StudentReportTextFile, Columns[x].Title.Caption,'      ', Fields[x].AsString);
  204.       end;  //  end of for loop
  205.     end; //  end of with statement
  206.  
  207.     // Write to the file the homework names and UMS
  208.     Writeln(StudentReportTextFile, '');
  209.     Writeln(StudentReportTextFile, 'Homeworks');
  210.     Writeln(StudentReportTextFile, '');
  211.     with  dbgStudentHomeworkTable do
  212.     begin
  213.       for x := 3 to FieldCount-1 do
  214.       begin
  215.         writeln(StudentReportTextFile, Columns[x].Title.Caption,'      ', Fields[x].AsString);
  216.       end;  // end of for loop
  217.     end;  // end of with statement
  218.     //  Once all the data has been written to the file
  219.     Closefile(StudentReportTextFile);  //  Close the printer
  220.  
  221.     // Print the homework graph
  222.     cHomeworkChart.PrintProportional := True;
  223.     cHomeworkChart.PrintLandscape;
  224.  
  225.     // Print the assessment graph
  226.     cAssessmentChart.PrintProportional := True;
  227.     cAssessmentChart.PrintLandscape;
  228.  
  229.   end;  // end of if statement
  230. end;
  231.  
  232. procedure TfrmStudentProfile.btnSendAlertClick(Sender: TObject);
  233. begin
  234.   with frmAlerts do
  235.   begin
  236.     // Close the Student Profile form
  237.     frmStudentProfile.Hide;
  238.     // Open the Alerts Form
  239.     Show;
  240.     // Automatically enter the student email
  241.     ledtRecipientEmail.Text := edtDisplayStudentEmail.Text;
  242.   end;  //  end of with statement
  243. end;
  244.  
  245. procedure TfrmStudentProfile.FormShow(Sender: TObject);
  246. var
  247.   x : integer;
  248.   TargetGradeUMS : integer;
  249.   TargetGrade : string;
  250. begin
  251.  
  252.   { ----------  Display Assessment Table for student selected  ---------- }
  253.   with dmDatabaseComponents.adoUnitSPAssessmentTable do
  254.   begin
  255.     Close;
  256.     SQL.Clear; // Initialize
  257.     SQL.Text:='SELECT * FROM [ASSESSMENT'+frmGroupProfile.ledtGPDisplayGroupName.Text+'] WHERE StudentID = '+QuotedStr(frmGroupProfile.dbgStudentList.DataSource.DataSet.FieldByName('StudentNumber').AsString);
  258.     ExecSQL;  // Execute the SQL
  259.     Open;
  260.   end;  // End of with statement
  261.  
  262.   { ----------  Display Homework Table for student selected  ----------  }
  263.   with dmDatabaseComponents.adoUnitSPHomeworkTable do
  264.   begin
  265.     Close;
  266.     SQL.Clear; // Initialize
  267.     SQL.Text:='SELECT * FROM [HOMEWORK'+frmGroupProfile.ledtGPDisplayGroupName.Text+'] WHERE StudentID = '+QuotedStr(frmGroupProfile.dbgStudentList.DataSource.DataSet.FieldByName('StudentNumber').AsString);
  268.     ExecSQL;  // Execute the SQL
  269.     Open;
  270.   end;  // End of with statement
  271.  
  272.   {  ----------  Convert Grade to UMS  ----------  }
  273.   if TargetGrade = 'A*' then  //  If the target grade is an A*
  274.   begin
  275.     TargetGradeUMS := 90;  //  Target UMS is 90
  276.   end
  277.   else if TargetGrade = 'A' then  //  If the target grade is an A
  278.   begin
  279.     TargetGradeUMS := 80;  //  Target UMS is 80
  280.   end
  281.   else if TargetGrade = 'B' then  //  If the target grade is an B
  282.   begin
  283.     TargetGradeUMS := 70;  //  Target UMS is 70
  284.   end
  285.   else if TargetGrade = 'C' then  //  If the target grade is an C
  286.   begin
  287.     TargetGradeUMS := 60;  //  Target UMS is 60
  288.   end
  289.   else if TargetGrade = 'D' then  //  If the target grade is an D
  290.   begin
  291.     TargetGradeUMS := 50;  //  Target UMS is 50
  292.   end
  293.   else if TargetGrade = 'E' then  //  If the target grade is an E
  294.   begin
  295.     TargetGradeUMS := 40;  //  Target UMS is 40
  296.   end;
  297.  
  298.  
  299.  
  300.   with dmDatabaseComponents.adoUnitSPHomeworkTable do
  301.   begin
  302.     //  Loop theought all columns
  303.     for x := 3 to FieldCount - 1 do
  304.     begin
  305.       //  If the column holds a null value
  306.       if Fields[x].AsInteger = null then
  307.       begin
  308.         // Plot a straight horizontal line for the target grade
  309.         sHomeworkTarGrade.AddXY((x-3), TargetGradeUMS);
  310.         // Plot the Y value as 0
  311.         sHomeworkUMS.AddXY((x-3), 0);
  312.         Next;  // Move on the next x value
  313.       end  // End of if statement
  314.       //  Otherwise...
  315.       else
  316.       begin
  317.         //  ...Plot value in the column
  318.         sHomeworkTarGrade.AddXY((x-3), TargetGradeUMS);
  319.         sHomeworkUMS.AddXY((x-3), Fields[x].AsInteger);
  320.       end;  // End of else statement
  321.     end;
  322.   end;
  323.  
  324.   with dmDatabaseComponents.adoUnitSPAssessmentTable do
  325.   begin
  326.     //  Loop theought all columns
  327.     for x := 3 to FieldCount - 1 do
  328.     if Fields[x].Value = null then
  329.     begin
  330.       // Plot a straight horizontal line for the target grade
  331.       sAssessmentTarGrade.AddXY((x-3), TargetGradeUMS);
  332.       // Plot the Y value as 0
  333.       sAssessmentUMS.AddXY((x-3), 0);
  334.     end
  335.     //  Otherwise
  336.     else
  337.     begin
  338.         // Plot a straight horizontal line for the target grade
  339.       sAssessmentTarGrade.AddXY((x-3), TargetGradeUMS);
  340.       //  ...Plot value in the column
  341.       sAssessmentUMS.AddXY((x-3), Fields[x].AsInteger);
  342.     end;
  343.   end;
  344. end;
  345.  
  346. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement