luận văn về thiết kế sơ đồ EER
LUẬN VĂN TỐT NGHIỆP Trang 40 PHẦN 3 : THUYẾT MINH CHƯƠNG TRÌNH LUẬN VĂN TỐT NGHIỆ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; LUẬN VĂN TỐT NGHIỆ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 } LUẬN VĂN TỐT NGHIỆ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; Ngồ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 LUẬN VĂN TỐT NGHIỆ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; LUẬN VĂN TỐT NGHIỆP Trang 45 ref : TDu_an; end; Với cấu trúc dữ liệu trên ta có thể mơ hình hố 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 LUẬN VĂN TỐT NGHIỆP Trang 46 T2 = 31/12/99 Các phần in đậm để xác định thuộc tính đó do đối tượng đó tạo ra trực tiếp qua form nhập từ đối tượng đó. Các phần in nghiêng để xác định thuộc tính đó do đối tượng đó tạo ra gián tiếp qua form nhập từ đối tượng khác. Các cặp mũi tên giống nhau (có nhiều loại mũi tên kích cỡ khác nhau) để xác định các tham chiếu qua lại giữa 2 đối tượng đó. Dưới đây là cấu trúc dữ liệu theo thứ tự của các đối tượng : + Employee + Department + Project LUẬN VĂN TỐT NGHIỆP Trang 47 Theo hình vẽ trên, ta có 3 loại đối tượng là Employee, Department và Project. Khi đối tượng này được tạo ra, đồng thời từng thuộc tính của đối tượng này (với các loại đối tượng khác) cũng được tạo ra chuẩn bị cho việc xác lập các mối quan hệ cụ thể. Khi sự xác lập mối quan hệ từ đối tượng này (thơng qua thuộc tính cụ thể của chúng) đến loại đối tượng khác thì đồng thời cũng tạo ra mối quan hệ từ đối tượng khác đó (thơng qua thuộc tính cụ thể của chúng) đến đối tượng này. Do đó, để quản lý các quan hệ giữa các đối tượng động theo thời gian thì mỗi thuộc tính của mỗi đối tượng đều được xây dựng 1 danh sách liên kết kép, trong đó mỗi phần tử của danh sách liên kết kép này đều lưu trữ 1 khoảng thời gian xác định mối quan hệ đó. Các khoảng thời gian trong mỗi thuộc tính được sắp xếp tăng dần và khơng trùng lắp lên nhau. Do đó khi nhập dữ liệu liên quan đến thời gian, nếu 2 khoảng thời gian trong 1 thuộc tính trùng lắp lên nhau sẽ bị báo lỗi và dữ liệu khơng được lưu. Mặt khác, ta xây dựng theo mơ hình đối tượng nên các mối quan hệ giữa các đối tượng đều sử dụng con trỏ chỉ đến đối tượng khác. a- Employee : Bao gồm 3 thuộc tính là p_luong, p_InDept, p_InProj được tạo ra trực tiếp từ đối tượng này và 2 thuộc tính p_DeptManager và p_ProjManager được tạo ra gián tiếp khi mối quan hệ từ loại đối tượng khác đến đối tượng này được tạo ra. b- Department : Bao gồm 1 thuộc tính là p_DeptManager, được tạo ra trực tiếp từ đối tượng này và 2 thuộc tính p_DeptManageProj và p_InDept được tạo ra gián tiếp khi mối quan hệ từ loại đối tượng khác đến đối tượng này được tạo ra. c- Project : Bao gồm 2 thuộc tính là p_ProjManager và p_DeptManageProj được tạo ra trực tiếp từ đối tượng này và thuộc tính p_InProj được tạo ra gián tiếp khi mối quan hệ từ loại đối tượng khác đến đối tượng này được tạo ra. LUẬN VĂN TỐT NGHIỆP Trang 48 3- Các thành phần của chương trình : Trước khi tìm hiểu các thành phần của chương trình, ta có thể tóm tắt hoạt động của chương trình qua sơ đồ sau : Theo hình 1 và 2 ta có các thành phần sau : LUẬN VĂN TỐT NGHIỆP Trang 49 Hình 1 Hình 2 Menu Inputdata bao gồm các chức năng sau : Save Load Employee Department Project Exit Menu Query bao gồm các chức năng sau : [...]... Thao tác nhập câu truy vấn : ta tơ đen ký tự khơng kết thúc trong vùng Input Query thì tự động xuất hiện trong vùng Produced Rule luật sinh cho ký tự khơng kết thúc này Sau đó ta chọn luật sinh phù hợp trong vùng Produced Rule rồi nhấn nút OK Q trình lập lại cho các ký tự khơng kết thúc khác Q trình nhập câu truy vấn được hồn thành khi tất cả ký tự khơng kết thúc (ký tự hoa) khơng còn nữa Ngồi ra, để hỗ... Rule : hiển thị các luật sinh đối với ký tự khơng kết thúc - Input Query : hiển thị câu truy vấn đang được thao tác - Processing Query : hiển thị câu truy vấn đang được xử lý dựa trên vùng Input Query để xây dựng cây cú pháp phục vụ q trình xử lý câu truy vấn Trang 54 LUẬN VĂN TỐT NGHIỆP Ngồi ra, còn có nút OK để chọn luật sinh phù hợp cho ký tự khơng kết thúc và nút Exit dùng để thốt và hủy tồn bộ q... InProject khơng có tác dụng cho đến khi ta nhấn nút Save Khi nút Save được nhấn thì sẽ kích hoạt một form mới để nhập dữ liệu cho thuộc tính Luong (Hình 4) Theo hình 4, q trình nhập Luong sẽ kết thúc khi ta nhấn nút Exit, đồng thời trở về form nhập liệu Employee (hình 3) Lúc này các vùng nhập liệu trong form sẽ trống để ta nhập dữ liệu cho đối tượng khác Do đó để nhập liệu cho mục InDepartment và InProject... dựng bảng luật sinh (hình 13) để xem trước khi chọn luật sinh phù hợp bằng cách nhấp nút phải chọn ngồi các vùng hiển thị Hình 13 g- Process : Chức năng này thực hiện q trình xử lý câu truy vấn đồng thời trình bày kết quả xử lý câu truy vấn (hình 14) Trang 55 LUẬN VĂN TỐT NGHIỆP Hình 14 Ngồi ra chương trình còn hỗ trợ việc tham chiếu trực tiếp mối quan hệ của đối tượng đó với các loại đối tượng khác (nếu... các đối tượng kiểu Department và các thuộc tính của chúng (Hình 7) Với cách thức nhập tương tự như đối tượng Employee, riêng thuộc tính DeptManager (Hình 8) trong Department được tạo ra trỏ đến Employee đồng thời thuộc tính DeptManager trong Employee được tạo ra và trỏ tới Department Trang 51 LUẬN VĂN TỐT NGHIỆP Hình 6 Hình 7 Trang 52 LUẬN VĂN TỐT NGHIỆP e- Project : Dùng để nhập dữ liệu cho các đối tượng . THUYẾT MINH CHƯƠNG TRÌNH LUẬN VĂN TỐT NGHIỆ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. của mỗi đối tượng đều được xây dựng 1 danh sách liên kết kép, trong đó mỗi phần tử của danh sách liên kết kép này đều lưu trữ 1 khoảng thời gian xác định