LUAÄN VAÊN TOÁT NGHIEÄP
Trang 40
PHẦN 3 :
THUYẾT MINH CHƯƠNG TRÌNH
LUAÄN VAÊN TOÁT NGHIEÄP
Trang 41
1- Thiết kế sơ đồ EER
Ta xây dựng 1 ứng dụng cho công ty theo các chi tiết cụ thể sau :
Tại 1 công ty có nhiều phòng ban, mỗi phòng ban có nhiều nhân viên và 1 nhân viên chỉ
thuộc 1 phòng duy nhất. Mỗi phòng chỉ có 1 người quản lý và người quản lý chỉ quản lý 1
phòng. Mỗi phòng có nhiều dự án và 1 dự án chỉ được quản lý bởi 1 phòng. Nhân viên có thể
tham gia vào nhiều dự án, nhưng chỉ được tham gia vào 1 dự án tại 1 thời điểm duy nhất. Mỗi dự
án có 1 nhà quản lý và nhà quản lý có thể quản lý nhiều dự án nhưng tại 1 thời điểm chỉ được
quản lý 1 dự án.
2- Xây dựng cấu trúc dữ liệu :
Ta có các lớp đối tượng sau dùng nhập xuất dữ liệu :
TEmployeeForm = class(TForm)
EmpID : TLabel;
Msnv : TEdit;
EmpName : TLabel;
Tennv : TEdit;
InDepartment : TButton;
InProject : TButton;
Top : TButton;
LUAÄN VAÊN TOÁT NGHIEÄP
Trang 42
Bottom : TButton;
Next : TButton;
Previous : TButton;
Exit : TButton;
Save : TButton;
procedure ExitClick(Sender: TObject);
procedure InDepartmentClick(Sender: TObject);
procedure InProjectClick(Sender: TObject);
procedure TopClick(Sender: TObject);
procedure BottomClick(Sender: TObject);
procedure NextClick(Sender: TObject);
procedure PreviousClick(Sender: TObject);
procedure SaveClick(Sender: TObject);
procedure Init(var point : TNhan_vien);
procedure Restore(var point : TNhan_vien);
procedure Displayed(point : TNhan_vien);
procedure Emp_Sal;
private
{ Private declarations }
public
{ Public declarations }
end;
TDepartmentForm = class(TForm)
DeptID : TLabel;
Msphong : TEdit;
DeptName : TLabel;
Tenphong : TEdit;
DeptManager : TButton;
Top : TButton;
Bottom : TButton;
Next : TButton;
Previous : TButton;
Save : TButton;
Exit : TButton;
procedure ExitClick(Sender: TObject);
procedure DeptManagerClick(Sender: TObject);
procedure TopClick(Sender: TObject);
procedure BottomClick(Sender: TObject);
procedure NextClick(Sender: TObject);
procedure PreviousClick(Sender: TObject);
procedure SaveClick(Sender: TObject);
procedure Init(var point : T_Phong);
procedure Restore(var point : T_Phong);
procedure Displayed(point : T_Phong);
private
{ Private declarations }
LUAÄN VAÊN TOÁT NGHIEÄP
Trang 43
public
{ Public declarations }
end;
TProject Form = class(TForm)
ProjID : TLabel;
Msda : TEdit;
ProjName : TLabel;
Tenda : TEdit;
ProjManager : TButton;
DeptManageProj : TButton;
Top : TButton;
Bottom : TButton;
Next : TButton;
Previous : TButton;
Save : TButton;
Exit : TButton;
procedure ProjManagerClick(Sender: TObject);
procedure DeptManageProjClick(Sender: TObject);
procedure SaveClick(Sender: TObject);
procedure ExitClick(Sender: TObject);
procedure TopClick(Sender: TObject);
procedure BottomClick(Sender: TObject);
procedure NextClick(Sender: TObject);
procedure PreviousClick(Sender: TObject);
procedure Init(var point : TDu_an);
procedure Restore(var point : TDu_an);
procedure Displayed(point : TDu_an);
private
{ Private declarations }
public
{ Public declarations }
end;
Ngoài ra, để quản lý dữ liệu ta còn xây dựng thêm các cấu trúc sau :
TTime = array[1..2] of TDatetime;
T_EmpRef = ^ TEmpRef;
T_DeptRef = ^ TDeptRef;
T_ProjRef = ^ TProjRef;
T_Salary = ^TSalary;
TSalary = Record
luong : integer;
time : TTime;
next : T_Salary;
pre : T_Salary;
end;
TNhan_vien = ^ TNhanvien;
TNhanvien = Record
LUAÄN VAÊN TOÁT NGHIEÄP
Trang 44
msnv : string;
tennv : string;
p_InDept : T_DeptRef;
p_InProj : T_ProjRef;
p_DeptManager : T_DeptRef;
p_ProjManager : T_ProjRef;
p_luong : T_Salary;
next : TNhan_vien;
pre : TNhan_vien;
end;
T_Phong = ^ TPhong;
TPhong = Record
msphong : string;
tenphong : string;
p_DeptManager : T_EmpRef;
p_Dept_Man_Proj : T_ProjRef;
p_InDept : T_EmpRef;
next : T_Phong;
pre : T_Phong;
end;
TDu_an = ^ TDuan;
TDuan = Record
msda : string;
tenda : string;
p_ProjManager : T_EmpRef;
p_Dept_Man_Proj : T_DeptRef;
p_InProj : T_EmpRef;
next : TDu_an;
pre : TDu_an;
end;
TEmpRef = Record
time : TTime;
next : T_EmpRef;
pre : T_EmpRef;
ref : TNhan_vien;
end;
TDeptRef = Record
time : TTime;
next : T_DeptRef;
pre : T_DeptRef;
ref : T_Phong;
end;
TProjRef = Record
time : TTime;
next : T_ProjRef;
pre : T_ProjRef;
LUAÄN VAÊN TOÁT NGHIEÄP
Trang 45
ref : TDu_an;
end;
Với cấu trúc dữ liệu trên ta có thể mô hình hoá quan hệ của các đối tượng theo hình dưới
đây :
Chú thích :
[TIME] : là đoạn thời gian, từ thời điểm T1 đến T2 (T1<=T2) tính theo ngày
Ví dụ : T1 = 1/1/99