⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitmain.~pas

📁 用户管理:用于对用户的添加
💻 ~PAS
字号:
unit UnitMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ComCtrls, Grids, DBGrids, StrUtils;

type
  TFormMain = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    OpenDialog1: TOpenDialog;
    TreeView1: TTreeView;
    DBGrid1: TDBGrid;
    N3: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
  private
    { Private declarations }
    function str_floatstr(str: string): string;
    procedure InitTreeView;
  public
    { Public declarations }
  end;

var
  FormMain: TFormMain;

implementation

uses UnitData;

{$R *.dfm}

procedure TFormMain.FormCreate(Sender: TObject);
begin

   Left := 0;
   Top := 0;
   Width := Screen.Width;
   Height := Screen.Height-30;

   TreeView1.Left:=5;
   TreeView1.Top:=5;
   TreeView1.Width:=Width div 8;
   TreeView1.Height:=Height-60;

   DBGrid1.Left:=(Width div 8)+12;
   DBGrid1.Top:=5;
   DBGrid1.Width:=width-(Width div 8)-24;
   DBGrid1.Height:=Height-60;

   DBGrid1.DataSource:=DataModule1.DataSource1;
   DataModule1.ADOQuery1.Active:=true;

   DBGrid1.Columns[0].Width:=DBGrid1.Width*8 div 100;
   DBGrid1.Columns[1].Width:=DBGrid1.Width*8 div 100;
   DBGrid1.Columns[2].Width:=DBGrid1.Width*5 div 100;
   DBGrid1.Columns[3].Width:=DBGrid1.Width*8 div 100;
   DBGrid1.Columns[4].Width:=DBGrid1.Width*5 div 100;
   DBGrid1.Columns[5].Width:=DBGrid1.Width*5 div 100;
   DBGrid1.Columns[6].Width:=DBGrid1.Width*8 div 100;
   DBGrid1.Columns[7].Width:=DBGrid1.Width*8 div 100;
   DBGrid1.Columns[8].Width:=DBGrid1.Width*8 div 100;
   DBGrid1.Columns[9].Width:=DBGrid1.Width*5 div 100;
   DBGrid1.Columns[10].Width:=DBGrid1.Width*7 div 100;
   DBGrid1.Columns[11].Width:=DBGrid1.Width*5 div 100;
   DBGrid1.Columns[12].Width:=DBGrid1.Width*7 div 100;
   DBGrid1.Columns[13].Width:=DBGrid1.Width*7 div 100;

   InitTreeView;
end;

procedure TFormMain.InitTreeView;
var
   vNodeText:   string;   
   vNode:  array [1..20] of TTreeNode;
   g,k: integer;
begin
   with TreeView1.Items do begin
      Clear;
      vNode[1]:=Add(nil,'学校列表');

      DataModule1.ADOQuerySchool.SQL.Text:='select DISTINCT 学校 from 成绩';
      DataModule1.ADOQuerySchool.Active:=true;
      DataModule1.ADOQuerySchool.Open;
      DataModule1.ADOQuerySchool.First;
      While Not DataModule1.ADOQuerySchool.Eof do
      begin
           AddChild(vNode[1],DataModule1.ADOQuerySchool.Fields[0].AsString);
           DataModule1.ADOQuerySchool.Next;
      end;
      DataModule1.ADOQuerySchool.Close;

      DataModule1.ADOQueryGrade.SQL.Text:='select DISTINCT 年级 from 成绩';
      DataModule1.ADOQueryGrade.Active:=true;
      DataModule1.ADOQueryGrade.Open;
      DataModule1.ADOQueryGrade.First;
      g:=2;
      While Not DataModule1.ADOQueryGrade.Eof do
      begin
           vNode[g]:=AddChild(nil,DataModule1.ADOQueryGrade.Fields[0].AsString);
           //-------------
           DataModule1.ADOQueryKm.SQL.Text:='select DISTINCT 科目 from 成绩 where 年级=:grad';
           DataModule1.ADOQueryKm.Parameters.ParamByName('grad').Value:=DataModule1.ADOQueryGrade.Fields[0].AsString;
           DataModule1.ADOQueryKm.Active:=true;
           DataModule1.ADOQueryKm.Open;
           DataModule1.ADOQueryKm.First;
           While Not DataModule1.ADOQueryKm.Eof do
           begin
                addchild(vNode[g],DataModule1.ADOQueryKm.Fields[0].AsString);
                DataModule1.ADOQueryKm.Next;
           end;
           DataModule1.ADOQueryKm.Close;
           //-----------------
           DataModule1.ADOQueryGrade.Next;
           inc(g);
      end;
      DataModule1.ADOQueryGrade.Close;
   end;
//   TreeView1.FullExpand;
end;

procedure TFormMain.N2Click(Sender: TObject);
var
   len: integer;
   rowtype: integer;

   flag:String;
   schooltype : integer;
   schoolname: String;
   recnum: integer;
   item : array [1..14] of string;
   title : array [1..14] of string;
   vartype: array [1..14] of Integer;

   TagStream:TFileStream;
   Filename: String;
   weight_per: array[1..4] of Double;
   color: array [1..8,1..2] of Longword ;

   i,j: integer;

   tempvar: Double;

begin
    title[1]:='学校';
    title[2]:='年级';
    title[3]:='科目';
    title[4]:='姓名';
    title[5]:='学生数';
    title[6]:='考生数';
    title[7]:='参考率';
    title[8]:='总分';
    title[9]:='平均分';
    title[10]:='及格数';
    title[11]:='及格率';
    title[12]:='优秀数';
    title[13]:='优秀率';
    title[14]:='综合得分';
    vartype[1]:=1;
    vartype[2]:=1;
    vartype[3]:=1;
    vartype[4]:=1;
    vartype[5]:=2;
    vartype[6]:=2;
    vartype[7]:=3;
    vartype[8]:=3;
    vartype[9]:=3;
    vartype[10]:=2;
    vartype[11]:=3;
    vartype[12]:=2;
    vartype[13]:=3;
    vartype[14]:=3;

    if OpenDialog1.Execute then
    begin
        Filename:=OpenDialog1.FileName;
        TagStream:=TFileStream.Create(Filename,fmOpenRead or fmShareDenyNone);
        try
            TagStream.ReadBuffer(len,sizeof(len));
            Setlength(flag,len);
            TagStream.ReadBuffer(flag[1],len);

            TagStream.ReadBuffer(schooltype,sizeof(schooltype));
            TagStream.ReadBuffer(len,sizeof(len));
            Setlength(schoolname,len);
            TagStream.ReadBuffer(schoolname[1],len);
            item[1]:=schoolname;

            for i:=1 to 4 do begin
                TagStream.ReadBuffer(weight_per[i],sizeof(weight_per[i]));
            end;

            for i:=1 to 4 do
                for j:=1 to 2 do
                      TagStream.ReadBuffer(color[i][j],sizeof(color[i][j]));

            TagStream.ReadBuffer(len,sizeof(len));

            TagStream.ReadBuffer(recnum,sizeof(recnum));  //  记录数

            for i:=1 to recnum do begin
                TagStream.ReadBuffer(rowtype,sizeof(rowtype));

                for j:= 2 to 14 do begin
                    TagStream.ReadBuffer(len,sizeof(len));
                    Setlength(item[j],len);
                    TagStream.ReadBuffer(item[j][1],len);
                    item[j]:=str_floatstr(item[j]);
                end;
     {}         if rowtype=0 then begin

                with DataModule1.ADOQuery1 do begin
                     Append;
                     for j:=1 to 14 do
                         if item[j]<>'' then begin
                             if vartype[j]=1 then
                                FieldByName(title[j]).AsString:=item[j];
                               // Fields[j].AsString:=item[j];
                             if vartype[j]=2 then
                                FieldByName(title[j]).AsInteger:=strtoint(item[j]);
                               // Fields[j].AsInteger:=strtoint(item[j]);
                             if vartype[j]=3 then begin
                                tempvar:=strtoFloat(item[j]);
                                formatfloat('0.00', tempvar);
                                FieldByName(title[j]).AsFloat:=tempvar;
                             end;
                               // Fields[j].AsFloat:=strtoFloat(item[j]);
                     end;

                     Post;
                end;
   {}             end;

            end;
            except
            
            TagStream.Free;
            Exit;
        end;

    end;
    InitTreeView;
end;

function TFormMain.str_floatstr(str: string): string;
var
   len: integer;
   thisstr: string;
begin
   thisstr:=str;
   len:=StrLen(PChar(thisstr));
   if RightStr(thisstr,1)='%' then
   begin
      thisstr:=LeftStr(str,len-1);
   end;
   result:=thisstr;
end;

procedure TFormMain.N3Click(Sender: TObject);
begin
   with DataModule1.ADOQuery2 do begin
       SQL.Clear;  // 清除SQL属性中的SQL命令语句
       SQL.Add('delete * From 成绩');
       ExecSQL;   // 没有返回结果)
   end;
   DataModule1.ADOQuery1.Close;
   DataModule1.ADOQuery1.Open;

end;

procedure TFormMain.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
     if (Node.Level=1) and (Node.Parent.Text='学校列表') then
     begin
         DataModule1.ADOQueryAllBySchool.SQL.Text:='select * from 成绩 where 学校=:school';
         DataModule1.ADOQueryAllBySchool.Parameters.ParamByName('school').Value:=Node.Text;
         DataModule1.DataSource1.DataSet:=DataModule1.ADOQueryAllBySchool;
         DataModule1.ADOQueryAllBySchool.Close;
         DataModule1.ADOQueryAllBySchool.Open;
     end;
     if (Node.Level=1) and (Node.Parent.Index>0) then
     begin
         DataModule1.ADOQueryAllBySchool.SQL.Text:='select * from 成绩 where 学校=:school';
         DataModule1.ADOQueryAllBySchool.Parameters.ParamByName('school').Value:=Node.Text;
         DataModule1.DataSource1.DataSet:=DataModule1.ADOQueryAllBySchool;
         DataModule1.ADOQueryAllBySchool.Close;
         DataModule1.ADOQueryAllBySchool.Open; 
     end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -