R NUMBE; E EXCEPTION;
6.5. THIẾT KẾ CÁC FORM TÍNH TỐN:
Menu màn hình tính tốn danh sách các đối tượng liên quan với nhau. Menu màn hình này chỉ cĩ tác dụng cho xem, tìm kiếm, tính tốn với các bảng dữ liệu.
6.5.1. Form NGÀY - CƠNG VIỆC:
Khi ta nhập một ngày bất kỳ vào ơ textbox, ta cĩ thể xem các cơng việc đã thực hiện xong, các cơng việc chưa thực hiện, các cơng việc đang thực hiện.
6.5.2. Form NGÀY - NHÂN VIÊN:
Khi ta nhập một ngày bất kỳ vào ơ textbox, ta cĩ thể xem các nhân viên làm việc trong ngày đĩ.
6.5.3. Form NGÀY - DỰ ÁN:
Khi ta nhập một ngày bất kỳ vào ơ textbox, ta cĩ thể xem các dự án đã thực hiện xong, các dự án chưa thực hiện, các dự án đang thực hiện.
6.5.4. Form KINH PHÍ - CƠNG VIỆC:
Màn hình gồm những trường dữ liệu của bảng DUAN_CHUDAUTU và HANGMUC trong đĩ bảng DUAN_CHUDAUTU là chủ thể chính.
Màn hình cũng gồm 4 command button dùng di chuyển mẫu tin và 4 command button dùng để xuất dữ liệu, tìm kiếm, thốt, cập nhật ngày cần tính, 3 command button dùng để tính tốn.
Button "Xuất dữ liệu" dùng để xuất lại dữ liệu sau khi tìm kiếm, tính tốn cĩ tác dụng như refresh lại dữ liệu.
Khi click vào buton "Tìm kiếm" ta cĩ thể nhập vào các tham số cần tìm trên các trường của bảng DUAN_CHUDAUTU, nếu tìm thấy nĩ sẽ xuất dữ liệu (dùng 4 command button để di chuyển nếu cĩ nhiều mẫu tin được tìm thấy), cịn khơng tìm thấy nĩ sẽ hiện bảng thơng báo
Button "Thốt" dùng để thốt khỏi màn hình tính tốn kinh phí cơng việc dự án trở về menu chính của chương trình.
Nhấn vào nút "Đáng giá" để biết được cơng việc nào được thực hiện trước nhằm đảm bảo tiến độ hồn thành của dự án (theo thứ tự độ ưu tiên thực hiện cơng việc).
Nhấn vào nút "Tổng" để biết tổng số ngày, tổng kinh phí thực tế và dự kiến trên lệch nhau bao nhiêu thơng qua việc cho biết chính xác trên các textbox kinh phí dư, kinh phí thiếu, số ngày sớm hơn, số ngày trể hơn.
Source code Đánh giá DECLARE a_value_chosen BOOLEAN; BEGIN a_value_chosen := Show_Lov('SORT'); IF NOT a_value_chosen THEN
Message('You have not selected a value.'); Bell; RAISE Form_Trigger_Failure; END IF; END; Tổng DECLARE R CHAR; R1 NUMBER; BEGIN
IF :System.Mode = 'NORMAL' THEN DO_KEY('enter_query'); ELSE DO_KEY('execute_query'); R := GET_BLOCK_PROPERTY(:SYSTEM.CURRENT_BLOCK, CURRENT_RECORD); :Tong.TAM := :DuAn_ChuDauTu.Ma_DuAn; select SUM(KinhPhiDuKien) into :Tong.Tong from QuanLy.HangMuc where Ma_DuAn = :Tong.TAM;
select SUM(KinhPhiThucTe) into :Tong.TongThucTe from QuanLy.HangMuc where Ma_DuAn = :Tong.TAM;
select SUM(SoNgayDuKien) into :Tong.Tong_SoNgay from QuanLy.HangMuc where Ma_DuAn = :Tong.TAM;
select SUM(SoNgayThucTe) into :Tong.TongSoNgayTT from QuanLy.HangMuc where Ma_DuAn = :Tong.TAM;
IF :Tong.Tong >= :Tong.TongThucTe THEN
:Tong.KinhPhiDu := :Tong.Tong - :Tong.TongThucTe; ELSE
:Tong.KinhPhiDu := 0; END IF;
IF :Tong.Tong <= :Tong.TongThucTe THEN
:Tong.KinhPhiThieu := :Tong.TongThucTe - :Tong.Tong; ELSE
:Tong.KinhPhiThieu := 0; END IF;
IF :Tong.Tong_SoNgay >= :Tong.TongSoNgayTT THEN :Tong.SoNgay_Som := :Tong.Tong_SoNgay - :Tong.TongSoNgayTT;
ELSE
:Tong.SoNgay_Som := 0; END IF;
IF :Tong.Tong_SoNgay <= :Tong.TongSoNgayTT THEN :Tong.SoNgay_Tre := :Tong.TongSoNgayTT - :Tong.Tong_SoNgay; ELSE :Tong.SoNgay_Tre := 0; END IF; IF TO_NUMBER(R) > 0 THEN ON_ITEM('TIM_KIEM'); ON_ITEM('XOA'); ELSE
R1 := THONGBAO('ALERT2', 'Khong tim thay mau tin co Ma so nay. !'||Chr(13)||'Mau tin ban dau se tra ve !');
CLEAR_RECORD; DO_KEY('execute_query'); END IF; END IF; END; 6.6. REPORT: 6.6.1. Ban Quản Lý:
Báo cáo này cĩ chức năng in danh sách ban quản lý như mã ban quản lý, tên ban quản lý, điện thoại.
6.6.2. Chủ Đầu Tư:
Báo cáo này cĩ chức năng in danh sách chủ đầu tư độc lập như: mã chủ đầu tư, tên chủ đầu tư, địa chỉ, điện thoại.
6.6.3. Hạng Mục:
Báo cáo này cĩ chức năng in danh sách các hạng mục trong mỗi dự án như tên cơng việc, ngày bắt đầu, ngày kết thúc, kinh phí sử dụng. Đồng thời cũng biết được mã đơn vị thi cơng nào thực hiện hạng mục nào.
Báo cáo này cĩ chức năng in danh sách chi tiết các cơng việc trong mỗi hạng mục trong dự án như biết được tên nhân viên làm việc trong ngày.
6.6.5. Dự Án:
Báo cáo này cĩ chức năng in danh sách dự án thực hiện như tên dự án.
6.6.6. Đơn Vị Thi Cơng:
Báo cáo này cĩ chức năng in danh sách các đơn vị thi cơng như tên, địa chỉ, điện thoại của đơn vị thi cơng.
6.6.7. Phịng Ban:
Báo cáo này cĩ chức năng in danh sách tất cả các phịng ban của tất cả các đơn vị thi cơng.
6.6.8. Nhân Viên:
Báo cáo này cĩ chức năng in danh sách tất cả các nhân viên trong tất cả các phịng ban của tất cả các đơn vị thi cơng.
6.6.9. Quản Lý Dự Án:
Báo cáo này cĩ chức năng in danh sách dự án độc lập như: mã dự án, mã chủ đầu tư, số ngày làm, ngày bắt đầu, ngày kết thúc, kinh phí sử dụng.
6.6.10. Hĩa Đơn:
Báo cáo này cĩ chức năng in danh sách hĩa đơn thanh tốn của tất cả các cơng việc.
6.6.11. Chủ Đầu Tư - Dự Án:
Báo cáo này cĩ chức năng cho biết một chủ đầu tư cĩ những dự án nào.
6.6.12. Dự Án - Chủ Đầu Tư:
Báo cáo này cĩ chức năng cho biết một dự án được đầu tư bởi những chủ đầu tư nào.
6.6.13. Dự Án - Hạng Mục:
Báo cáo này cĩ chức năng cho biết một dự án bao gồm những hạng mục nào.
6.6.14. Đơn Vị Thi Cơng - Phịng Ban:
Báo cáo này cĩ chức năng cho biết một đơn vị thi cơng bao gồm những phịng ban nào.
6.6.15. Đơn Vị Thi Cơng - Phịng Ban - Nhân Viên:
Báo cáo này cĩ chức năng cho biết những nhân viên nào làm trong phịng ban nào và thuộc đơn vị thi cơng nào.
6.6.16. Hạng Mục - Chi Tiết Cơng Việc:
Báo cáo này cĩ chức năng cho biết mỗi hạng mục cĩ những nhân viên nào làm việc và làm trong ngày ngày nào với số lượng giờ làm việc trong ngày đĩ.
6.6.17. Phịng Ban - Nhân Viên:
Báo cáo này cĩ chức năng cho biết các nhân viên làm trong mỗi phịng ban.
6.7 Báo Biểu:
6.7.1. Xem dự án cĩ những hạng mục nào ưu tiên trước:
KẾT LUẬN
Chương trình "xây dựng hệ thống thơng tin quản lý dự án" được thực hiện nhằm giúp cho đơn vị quản lý, tổ chức… thực hiện tốt hơn nhiệm vụ của mình.
Chương trình khơng cĩ chức năng phân tích, so sánh các dự án đã hoặc đang được lập.
Chương trình cĩ chức năng thiết lập dự án, quản lý các cơng việc thực hiện ở thực tế trong dự án, thiết lập báo cáo cơng việc khi dự án hồn tất.
Trong chương trình cĩ các chức năng thêm, cập nhật, xĩa, tìm kiếm, thống kê, báo cáo các dự án, cơng việc, đơn vị thi cơng, phịng ban, nhân viên,…
Ngồi ra cĩ thể xem trong 1 dự án cụ thể gồm bao nhiêu cơng việc, cơng việc đĩ do đơn vị thi cơng nào thực hiện và xem cụ thể nhân viên nào thực hiện.
Khi nhập một ngày cụ thể thì cĩ thể xem các dự án nào đã thực hiện xong, đang thực hiện và chưa thực hiện.
Khi nhập một ngày cụ thể thì cĩ thể xem các cơng việc nào đã thực hiện xong, đang thực hiện và chưa thực hiện.
Khi nhập một ngày cụ thể thì cĩ thể xem các nhân viên nào làm cơng việc trong ngày đĩ.
Chương trình cĩ thể quản lý cùng lúc nhiều dự án, khi hồn tất cĩ thể lưu vào danh sách dự án để khi cần tra cứu.
Hướng phát triển: chương trình cĩ thể phân tích, so sánh các dự án đã hoặc đang được lập.
TÀI LIỆU THAM KHẢO
1. Vũ Cơng Tuấn. Quản trị dự án. Nhà xuất bản Thành phố Hồ Chí Minh, 1999. 2. Vũ Cơng Tuấn. Thẩm định dự án đầu tư. Nhà xuất bản Thành phố Hồ Chí Minh, 1999.
3. Trần Tiến Dũng. Giáo trình lý thuyết và thực hành Oracle. Nhà xuất bản Giáo Dục, 2000.
4. VN-GUIDE. Giáo trình tự học Oracle8. Nhà xuất bản Thống Kê, 2000. 5. Harold Kerzner, PH.D. Project Manager.
SOURCE CODE CƠ SỞ DỮ LIỆU 1. Tạo user và gán quyền cho user: --tao tablespace
create tablespace NV datafile 'd:\disk1\myfile.dbs' size 10M; create temporary tablespace QL tempfile 'd:\disk1\myfile2.f' size 10M; create rollback segment NVien tablespace NV storage
(
INITIAL 10K NEXT 10K MAXEXTENTS unlimited );
create rollback segment DVTC tablespace NV storage (
INITIAL 10K NEXT 10K
MAXEXTENTS unlimited );
--kich hoat rollback segment hoat dong alter rollback segment DVTC online; alter rollback segment NVien online; create profile boss limit
idle_time 30
cpu_per_call unlimited
logical_reads_per_session unlimited composite_limit default;
--tao user QuanLy (trong moi truong SYSTEM/manager) create user QuanLy identified by quanly
default tablespace NV temporary tablespace QL quota unlimited on NV quota unlimited on QL
profile boss;
--bat buoc chay, neu khong se khong dang nhap duoc voi user vua tao grant create session to QuanLy;
--gan quyen Database Administrator (DBA) cho user QuanLy grant DBA to QuanLy;
--tao user CDT
create user CDT identified by cdt default tablespace NV temporary tablespace QL quota unlimited on NV profile boss;
grant create session to CDT; --tao user NhaNVien
create user NhaNVienTC identified by nhaNVientc default tablespace NV
temporary tablespace QL quota unlimited on NV profile boss;
grant create session to NhaNVienTC;
--chay nhung lenh select duoi, sau khi da dang nhap voi user vua tao (vd: QuanLy/quanly)
--gan dac quyen xem bang cho user CDT grant select on ChuDauTu to CDT; grant select on HoaDon to CDT; grant select on BanQuanLy to CDT; grant select on HangMuc to CDT; grant select on DuAn_ChuDauTu to CDT; grant select on ChiTietCongViec to CDT; grant select on NhaNVien to CDT; grant select on PhongBan to CDT; grant select on DonViThiCong to CDT; grant select on DuAn to CDT; grant select, delete on Tong to CDT; grant select, delete on Ngay to CDT;
--gan dac quyen xem bang cho user NhanVienTC grant select on ChuDauTu to NhanVienTC; grant select on HoaDon to NhanVienTC; grant select on BanQuanLy to NhanVienTC; grant select on HangMuc to NhanVienTC; grant select on DuAn_ChuDauTu to NhanVienTC;
grant select on ChiTietCongViec to NhanVienTC; grant select on NhaNVien to NhanVienTC; grant select on PhongBan to NhanVienTC; grant select on DonViThiCong to NhanVienTC; grant select on DuAn to NhanVienTC; grant select, delete on Tong to NhanVienTC; grant select, delete on Ngay to NhanVienTC;
--chay CREATE SCHEMA sau khi da tao user va dang nhap voi user vua tao --user QuanLy, password quanly
create schema authorization QuanLy; --xoa quyen
revoke create session from QuanLy; revoke DBA from QuanLy;
--xoa user trong moi truong SYSTEM/manager drop user QuanLy cascade;
revoke create session from CDT; drop user CDT cascade;
revoke create session from NhaNVienTC; drop user NhanVienTC cascade;
drop profile boss cascade; drop rollback segment NVien; drop rollback segment DVTC;
drop tablespace NV including contents; drop tablespace QL including contents; 2. Tạo Bảng:
create table ChuDauTu (
Ma_ChuDauTu varchar2(10), Ten_ChuDauTu varchar2(50), DiaChi varchar2(100), DienThoai varchar2(100),
constraint pk_MaCDT primary key (Ma_ChuDauTu) );
create table DuAn (
Ma_DuAn varchar2(10), Ten_DuAn varchar2(200),
constraint pk_MaDA primary key (Ma_DuAn) );
create table DuAn_ChuDauTu (
Ma_ChuDauTu varchar2(10), Ma_DuAn varchar2(10), SoNgayDuKien number, SoNgayThucTe number, NgayBatDau date, NgayKetThuc date, NgayBatDauTT date, NgayKetThucTT date,
KinhPhiDuKien number check (KinhPhiDuKien >= 0), KinhPhiThucTe number check (KinhPhiThucTe >= 0), MoTa long,
DonViTinh varchar2(20),
constraint pk_DA_CDT primary key (Ma_ChuDauTu, Ma_DuAn) );
create table DonViThiCong (
Ma_DVTC varchar2(10), Ten_DVTC varchar2(100), DiaChi varchar2(100), DienThoai varchar2(100),
constraint pk_MaDVTC primary key (Ma_DVTC) );
create table PhongBan (
Ma_PhongBan varchar2(10), Ma_DVTC varchar2(10), Ten_PhongBan varchar2(100), DienThoai varchar2(100),
constraint pk_MaPB primary key (Ma_PhongBan) );
create table NhanVien ( Ma_PhongBan varchar2(10), Ma_NhanVien varchar2(10), Ten_NhanVien varchar2(50), ChucVu varchar2(100), DiaChi varchar2(100), DienThoai varchar2(100),
constraint pk_MaNV primary key (Ma_NhanVien) );
create table ChiTietCongViec (
Ma_CongViec varchar2(10), Ma_NhanVien varchar2(10), Ngay_Lam_Viec date,
SoNgayLamViec number check (SoNgayLamViec >= 0), GiaTri number check (GiaTri >= 0),
DonViTinh varchar2(20),
primary key (MA_NHANVIEN, MA_CONGVIEC) );
create table HangMuc ( Ma_ChuDauTu varchar2(10), Ma_DuAn varchar2(10), Ma_CongViec varchar2(10), Ma_DVTC varchar2(10), Ten_CongViec varchar2(100),
SoNgayDuKien number check (SoNgayDuKien >= 0), SoNgayThucTe number check (SoNgayThucTe >= 0), NgayBatDau date,
NgayKetThuc date, NgayBatDauTT date, NgayKetThucTT date,
KinhPhiDuKien number check (KinhPhiDuKien >= 0), KinhPhiThucTe number check (KinhPhiThucTe >= 0), TyLeHoanThanh number check ((TyLeHoanThanh >= 0) and (TyLeHoanThanh <= 100)),
DoUuTien number check ((DoUuTien >= 0) and (DoUuTien <= 100)),
DonViTinh varchar2(20),
constraint pk_MaHM primary key (Ma_CongViec) );
create table BanQuanLy (
Ma_BanQuanLy varchar2(10), Ten_BanQuanLy varchar2(200), DienThoai varchar2(100),
constraint pk_MaBQL primary key (Ma_BanQuanLy) );
create table HoaDon (
Ma_HoaDon varchar2(10), Ma_CongViec varchar2(10), Ma_BanQuanLy varchar2(10),
TienPhaiThanhToan number check (TienPhaiThanhToan >= 0), TienDaThu number check (TienDaThu >= 0),
TienConLai number check (TienConLai >= 0), DonViTinh varchar2(20),
constraint pk_MaHD primary key (Ma_HoaDon) );
create table Tong
( tong number ); create table Ngay
(
Ngay date );
3. Tạo ràng buộc khĩa ngoại:
alter table DuAn_ChuDauTu add constraint fk_Ma_CDT1 foreign key (Ma_ChuDauTu) references ChuDauTu(Ma_ChuDauTu);
alter table DuAn_ChuDauTu add constraint fk_MaDA1 foreign key (Ma_DuAn) references DuAn(Ma_DuAn);
alter table HangMuc add constraint fk_Ma_CDT2 foreign key (Ma_ChuDauTu, Ma_DuAn)
references DuAn_ChuDauTu(Ma_ChuDauTu, Ma_DuAn);
alter table HangMuc add constraint fk_MaPB2 foreign key (Ma_DVTC) references DonViThiCong(Ma_DVTC);
alter table PhongBan add constraint fk_MaDV1 foreign key (Ma_DVTC) references DonViThiCong(Ma_DVTC);
alter table NhanVien add constraint fk_MaPB1 foreign key (Ma_PhongBan) references PhongBan(Ma_PhongBan);
alter table ChiTietCongViec add constraint fk_MaCV2 foreign key (Ma_CongViec) references HangMuc(Ma_CongViec);
alter table ChiTietCongViec add constraint fk_MaNV1 foreign key (Ma_NhanVien)
references NhanVien(Ma_NhanVien);
alter table HoaDon add constraint fk_BQL foreign key (Ma_BanQuanLy) references BanQuanLy(Ma_BanQuanLy);
alter table HoaDon add constraint fk_MaCV3 foreign key (Ma_CongViec) references HangMuc(Ma_CongViec);
4. Tạo Dữ Liệu: insert into ChuDauTu
values('978','Nguyen Huu Hoai Phuong','118/26 Tan Hung F15Q5 TPHCM','8546704');
insert into ChuDauTu
insert into ChuDauTu
values('836','Ha Phi Vu','234 Ngo Gia Tu F9Q5 TPHCM','8567543'); insert into DuAn
values('001','Xay dung cong trinh nha o'); insert into DuAn
values('002','Xay dung cau duong'); insert into DuAn_ChuDauTu
values('978','001',60,60,TO_DATE('5/10/2001','MM/DD/YYYY'),TO_DATE('7/10 /2000','MM/DD/YYYY'),
TO_DATE('5/10/2001','MM/DD/YYYY'),TO_DATE('7/10/2000','MM/DD/YYYY '),
100000000,100000000,'Day La Du An Nha O','dong'); update DuAn_ChuDauTu
set NgayKetThuc = NgayBatDau + SoNgayDuKien; insert into DonViThiCong
values('0001','Cong ty xay dung so 1','123 Nguyen Trai Q5','8523540'); insert into DonViThiCong
values('0002','Cong ty xay dung so 2','854 Tran Hung Dao QTB','8994741'); insert into PhongBan
values('00001','0001','Phong Xay Dung','8994768'); insert into PhongBan
values('00002','0001','Phong Ke Hoach','8994768'); insert into NhanVien
values('00001','001041','Duong Hoang Phuong','Truong Phong','36/7 Thi Nghe QBT','8401165');
insert into NhanVien
values('00001','000734','Luong Vi Minh','Pho Phong','40/12 Hoa Binh Q5','8380101');
insert into HangMuc values ('978', '001', '01', '0001', 'Dao Mong', 15, 15, TO_DATE('5/10/2001', 'MM/DD/YYYY'), TO_DATE('5/11/2001', 'MM/DD/YYYY'),
TO_DATE('5/10/2001', 'MM/DD/YYYY' ), TO_DATE('5/11/2001', 'MM/DD/YYYY'), 25000000, 25000000, 90, 100, 'dong');
insert into HangMuc values ( '978', '001', '02', '0002', 'San Lap', 15, 15, TO_DATE( '5/25/2001', 'MM/DD/YYYY'), TO_DATE('6/25/2001','MM/DD/YYYY'),
TO_DATE('5/25/2001','MM/DD/YYYY'),TO_DATE('6/25/2001','MM/DD/YYYY '),25000000,25000000,100,90,'dong');
update HangMuc
set NgayKetThuc = NgayBatDau + SoNgayDuKien; insert into ChiTietCongViec
values('01','001041',TO_DATE('5/10/2001','MM/DD/YYYY'),5,10000000,'dong'); insert into ChiTietCongViec
values('01','000734',TO_DATE('5/10/2001','MM/DD/YYYY'),5,10000000,'dong'); insert into BanQuanLy
values('736','Dai Hoc Dan Lap Hung Vuong','8546704'); insert into HoaDon
values('12345677','01','736',25000000,10000000,5,'dong'); update HoaDon
set TienConLai = TienPhaiThanhToan - TienDaThu; insert into Tong values(0);
--xem du lieu voi user QuanLy select * from HoaDon;
select * from KiemDinhCV; select * from BanQuanLy; select * from HangMuc;
select * from DuAn_ChuDauTu; select * from ChiTietCongViec; select * from CongViec;
select * from NhanVien; select * from PhongBan; select * from DonViThiCong; select * from ChuDauTu; select * from DuAn; select * from Tong; select * from Ngay;
--xem du lieu voi user CDT, NhanVienTC select * from QuanLy.HoaDon;
select * from QuanLy.KiemDinhCV; select * from QuanLy.BanQuanLy; select * from QuanLy.HangMuc;
select * from QuanLy.DuAn_ChuDauTu; select * from QuanLy.ChiTietCongViec;
select * from QuanLy.CongViec; select * from QuanLy.NhanVien; select * from QuanLy.PhongBan; select * from QuanLy.DonViThiCong; select * from QuanLy.ChuDauTu; select * from QuanLy.DuAn; select * from QuanLy.Ngay; 5. Xĩa Dữ Liệu:
delete from HoaDon; delete from BanQuanLy; delete from HangMuc;
delete from ChiTietCongViec; delete from NhanVien;
delete from PhongBan; delete from DonViThiCong; delete from DuAn_ChuDauTu; delete from ChuDauTu;
delete from DuAn; delete from Ngay; delete from Tong;
6. Xĩa khĩa ngoại và xĩa bảng:
alter table DuAn_ChuDauTu drop constraint fk_Ma_CDT1; alter table DuAn_ChuDauTu drop constraint fk_MaDA1; alter table HangMuc drop constraint fk_Ma_CDT2; alter table HangMuc drop constraint fk_MaPB2; alter table PhongBan drop constraint fk_MaDV1; alter table NhanVien drop constraint fk_MaPB1; alter table ChiTietCongViec drop constraint fk_MaCV2; alter table ChiTietCongViec drop constraint fk_MaNV1; alter table HoaDon drop constraint fk_BQL ;
alter table HoaDon drop constraint fk_MaCV3; drop table HoaDon;
drop table BanQuanLy; drop table ChiTietCongViec; drop table HangMuc;
drop table DuAn_ChuDauTu; drop table NhanVien;
drop table PhongBan; drop table DonViThiCong; drop table ChuDauTu;
drop table DuAn; drop table Tong; drop table Ngay;