1. Trang chủ
  2. » Khoa Học Tự Nhiên

Xử lý câu truy vấn bằng phép toán đại số kết hợp thời gian

17 515 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xử lý câu truy vấn bằng phép toán đại số kết hợp thời gian
Trường học Unknown University
Chuyên ngành Computer Science
Thể loại Luận văn tốt nghiệp
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 17
Dung lượng 281,12 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Xử lý câu truy vấn bằng phép toán đại số kết hợp thời gian.

Trang 1

PHẦN 3 : THUYẾT MINH CHƯƠNG TRÌNH

Trang 2

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 :

Trang 3

Bottom : 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;

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 }

Trang 4

public

{ Public declarations } end;

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 :

end;

Trang 5

msnv : string;

end;

end;

end;

end;

end;

Trang 6

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

Trang 7

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

Trang 8

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.

Trang 9

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 :

Trang 10

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 :

Trang 11

Input Process About

a- Save : Chức năng này để lưu lại cấu trúc dữ liệu mà được nhập liệu vào từ 3 chức năng

Employee, Department và Project Vì ta xây dựng theo mô hình đối tượng nên ta đã tạo ra các kiểu pointer động để trỏ đến các đối tượng, nhưng khi ta lưu trữ lại mô hình đó trên đĩa sẽ gặp khó khăn khi phục hồi lại dữ liệu và mô hình Để đảm bảo cho mô hình và dữ liệu được phục hồi hoàn toàn, ta phải biến đổi các pointer động dựa vào ID duy nhất của mỗi đối tượng

b- Load : Chức năng này để phục hồi lại mô hình đã được cất giữ trên đĩa và nạp chúng vào bộ

nhớ

c- Employee : Dùng để nhập dữ liệu cho các đối tượng kiểu Employee và các thuộc tính của

chúng như sau :

Hình 3 Theo hình 3, ta có thể nhập dữ liệu cho mục EmpID và EmpName Khi nhập dữ liệu mới, lúc này 2 nút InDepartment và 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, quá 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 thì ta phải sử dụng

Trang 12

các nút Top, Bottom, Next, Previous để đến đúng đối tượng và khi này các nút InDepartment và InProject mới có tác dụng, cho phép ta nhập dữ liệu quan hệ đến đối tượng Department và Project Mỗi thuộc tính InDepartment trong Employee (Hình 5) được tạo ra trỏ đến đối tượng Department thì một thuộc tính InDepartment trong Department cũng được tạo ra và trỏ đến Employee với dữ liệu thời gian giống nhau Tương tự, khi ta tạo ra thuộc tính InProject trong Employee (Hình 6) trỏ đến Project thì thuộc tính InProject trong Project cũng được tạo ra và trỏ đến Employee Riêng thuộc tính Luong trong Employee được tạo độc lập không quan hệ với các đối tượng khác do đặc trưng riêng biệt của nó

Hình 4

Hình 5

d- Department : Dùng để nhập dữ liệu cho 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 13

Hình 6

Hình 7

Trang 14

e- Project : Dùng để nhập dữ liệu cho các đối tượng kiểu Project và các thuộc tính của chúng

như sau (Hình 9)

Hình 9 Cũng giống như đối tượng Employee và Department, các đối tượng kiểu Project cũng được tạo

ra tương tự Riêng thuộc tính ProjManager (Hình 10) và DeptManageProj (Hình 11) được tạo ra

để lần lượt trỏ đến đối tượng Employee và Department và ngược lại thuộc tính ProjManager trong Employee và DeptManageProj trong Department cũng được tạo ra và trỏ đến Project

Hình 10

Trang 15

Hình 11

f- Input : Chức năng này để nhập câu truy vấn (Hình 12)

Hình 12 Theo hình 12 thì có 3 vùng để hiển thị là :

- Produced 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ụ quá trình xử lý câu truy vấn

Trang 16

Ngoà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 để thoát và hủy toàn bộ quá trình nhập câu truy vấn đó

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 Quá trình lập lại cho các ký tự không kết thúc khác Quá trình nhập câu truy vấn được hoàn thành khi tất cả ký tự không kết thúc (ký tự hoa) không còn nữa

Ngoài ra, để hỗ trợ việc nhập câu truy vấn chương trình còn xây 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 ngoài các vùng hiển thị

Hình 13

g- Process : Chức năng này thực hiện quá 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 17

Hình 14 Ngoà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ó) bằng cách trỏ con trỏ vào vùng hiển thị của đối tượng đó (trong hình 14) sẽ hiển thị mối quan hệ Cụ thể :

- Employee (hình 15)

- Department (hình 16)

- Project (hình 17)

Ngày đăng: 13/11/2012, 09:04

HÌNH ẢNH LIÊN QUAN

Hình 3  Theo hình 3, ta có thể nhập dữ  liệu cho  mục EmpID và EmpName.  Khi  nhập dữ  liệu  mới,  lúc  này 2 nút InDepartment và InProject không có tác dụng cho đến khi ta nhấn nút Save - Xử lý câu truy vấn bằng phép toán đại số kết hợp thời gian
Hình 3 Theo hình 3, ta có thể nhập dữ liệu cho mục EmpID và EmpName. Khi nhập dữ liệu mới, lúc này 2 nút InDepartment và InProject không có tác dụng cho đến khi ta nhấn nút Save (Trang 11)
Hình 9  Cũng giống như đối tượng Employee và Department, các đối tượng kiểu Project cũng được tạo - Xử lý câu truy vấn bằng phép toán đại số kết hợp thời gian
Hình 9 Cũng giống như đối tượng Employee và Department, các đối tượng kiểu Project cũng được tạo (Trang 14)
Hình 12  Theo hình 12 thì có 3 vùng để hiển thị là : - Xử lý câu truy vấn bằng phép toán đại số kết hợp thời gian
Hình 12 Theo hình 12 thì có 3 vùng để hiển thị là : (Trang 15)
Hình 14  Ngoà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ó) bằng cách trỏ con trỏ vào vùng  hiển thị của đối tượng đó  (trong hình 14) sẽ hiển thị mối quan hệ - Xử lý câu truy vấn bằng phép toán đại số kết hợp thời gian
Hình 14 Ngoà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ó) bằng cách trỏ con trỏ vào vùng hiển thị của đối tượng đó (trong hình 14) sẽ hiển thị mối quan hệ (Trang 17)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w