设计两个类 Tdepartment TEmployee为TEmployee  增加属性 AGE由生日 算年龄   怎么写写公有函数 SumSalary 计算部门员工工资总和,利用对象 不访问数据库   怎么写写方法IncSalary 给指定与员工增加指定工资  怎么写写方法 LoadEmployees 加载所有与昂公到Employees 属性  怎么写DELPHI 的对象操作不熟练 请高手帮忙可以不  技术问题!!

解决方案 »

  1.   

    //下面的是我做的,编译能通过
    unit Unit2;interface
      uses
         Classes,SysUtils,DateUtils;
    type
       TDepartment  =class             //部门
       private
          FEmployeeList :TThreadLIst;    //员工列表
       public
           function  SumSalary:real;     //工资总和
           procedure LoadEmployees;
           constructor  Create;
           destructor   Destroy;override;
       end;   TEmployee   =class            //员工
       private
         FEmployeeID : string;       //员工号
         FEmployeeName : string;    //员工名称
         FBirthday : TDatetime;     //生日
         FPay      : Real;         //工资
         function  GetAge:integer;
       public     procedure IncSalary(Value :real);      //增加工资
       published
           property  EmployeeID : string  read   FEmployeeID write FEmployeeID;       // 员工号属性
           property  EmployeeName : string read  FEmployeeName write FEmployeeName;   //员工姓名属性
           property  Birthday: TDatetime read FBirthday write FBirthday; // 生日属性
           property  Pay :real  read  FPay write FPay stored true;    //工资属性
           property Age : integer  Read  GetAge;  //年龄属性
       end;
    implementation
    constructor  TDepartment.Create;     //创建部门 资源
    begin
       FEmployeeList := TThreadList.Create;
       inherited Create;
    end;destructor   TDepartment.Destroy;   //释放部门资源
    var
      i:integer;
      PerEmployee:TEmployee;
    begin
       try
       with  FEmployeeList.LockList do
             begin
                 for i := count -1 downto 0  do
                     begin
                     PerEmployee := items[i];
                     PerEmployee.Free;
                     delete(i);
                     end;
             end;
       finally
       FEmployeeList.UnlockList;
       end;
    end;function  TDepartment.SumSalary:real;  //计算工资总和
    var
      i:integer;
      tmp:real;
      PerEmployee:TEmployee;
    begin
       tmp:=0;
       try
       with  FEmployeeList.LockList do
             begin
                 for i :=0 to count -1 do
                     begin
                     PerEmployee := items[i];
                     tmp := tmp + PerEmployee.Pay;
                     end;
             end;
       finally
       FEmployeeList.UnlockList;
       end;
       SumSalary:= tmp;
    end;procedure TDepartment.LoadEmployees;      //加载员工,可以根据数据库做查询加载
    var
       PerEmployee:TEmployee;
       i:integer;
    begin
       begin
       for i:=0 to  100 do
            begin
            PerEmployee:=TEmployee.Create ;
            PerEmployee.EmployeeID   := inttostr(i);
            PerEmployee.EmployeeName := '姓名'+ inttostr(i);
            PerEmployee.Birthday     := now ;
            PerEmployee.Pay           := 10000;
            try
             FEmployeeList.LockList.Add(PerEmployee);
            finally
             FEmployeeList.UnlockList;
            end;
            end;
      end;
    end;function   TEmployee.GetAge:integer;       //获取年龄
    begin
       GetAge  :=  YearsBetween(now, FBirthday);
    end;procedure TEmployee.IncSalary(Value :real);     //增加工资
    begin
        Pay  := Pay + Value;
       //或者 FPay  := FPay + Value; 也行;
    end;end.