Xây dựng mô hình quản lý CSDL hóa đơn tiền điện, thực hiện chương trình quản lý hệ thống trên Oracle

Vai trò của hệ thống thông tin rất quan trọng. Đối với công tác kinh doanh điện năng, thông qua hệ thống thông tin khách hàng chúng ta có thể đánh giá hiệu quả kinh doanh mang lại. Những người đang trực tiếp làm việc trên hệ thống này cũng như những người truy xuất khai thác số liệu đều nhận thấy Hệ thống quản lý thông tin khách hàng hiện nay có nhiều hạn chế. Nguyên nhân chính là sự lệ thuộc vào cách thức quản lý thông tin theo kiểu cũ, do đó hàng loạt những ứng dụng phát triển dựa trên nền tảng CSDL của hệ thống này cũng bị ảnh hướng theo cách quản lý đó. Xuất phát từ lý do trên, chúng tôi đề ra một mô hình quản lý thông tin mới nhằm đáp ứng tốt các yêu cầu của công tác quản lý kinh doanh điện năng. Đồng thời đối với bản thân hệ thống thông tin, nó sẽ tuân thủ theo những nguyên tắc chuẩn mực của một hệ quản trị cơ sở dữ liệu, bên cạnh đó hệ thống đáp ứng tốt các yêu cầu thông tin của các hệ thống quản lý khác.

 

1. Lý do chọn đề tài :

- Khối lượng thông tin đồ sộ do khách hàng ngành Điện lớn và gia tăng nhanh.

- Bảo đảm ổn định của hệ thống trước những thay đổi của chính sách giá điện, thuế, quy hoạch dân cư Giảm rủi ro về tính tin cậy của dữ liệu.

- Là nền tảng để phát triển các ứng dụng trong hệ thống.

- Là cơ sở để kết nối, chia sẻ tài nguyên với các hệ thống khác.

 

2. Mục đích :

- Giảm các chi phí : bảo trì, vận hành, nâng cấp và phát triển hệ thống.

- Bảo đảm độ tin cậy, tính nhất quán và bảo mật dữ liệu (mặt chất lượng)

- Đa dạng hóa thông tin quản lý (mặt số lượng).

- Tạo nền tảng & cơ cở để phát triển các ứng dụng và liên kết với các hệ thống khác : GIS, DSM

- Nâng cao tính linh hoạt của hệ thống nhờ các phương pháp quản lý CSDL hiện đại (ngôn ngữ lập trình hướng đối tượng, ngôn ngữ vấn tin có cấu trúc) giảm bớt cách thể hiện bằng ngôn ngữ lập trình theo dạng thủ tục.

3. Ý nghĩa :

- Đem lại sự thống nhất, quy củ chặt chẽ của CSDL làm nền tảng để nâng cấp, kết nối và phát triển của toàn hệ thống. Từ đó nâng cao hiệu quả của công tác quản lý & kinh doanh điện năng.

- Tiếp cận & sử dụng công nghệ mới.

 

doc69 trang | Chuyên mục: Oracle | Chia sẻ: dkS00TYs | Lượt xem: 5660 | Lượt tải: 2download
Tóm tắt nội dung Xây dựng mô hình quản lý CSDL hóa đơn tiền điện, thực hiện chương trình quản lý hệ thống trên Oracle, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
,TENDC
	FROM KH_1;
INSERT INTO KH_(MAKH,TENDC)
	SELECT MAKH,TEN||' '||SONHA||' '||TENDUONG
	FROM KH_2;
PROMPT GOM KH TU TIEN
CREATE VIEW K1 (MADK,NGAYHL) AS
	SELECT DISTINCT MADK, NGAYHL 
	FROM TIEN;
CREATE VIEW K2 (MADK,NGAYHL,LOTRINH,RATIO,NN,MAKH,MSTHUE,MADL) AS
	SELECT K1.MADK, K1.NGAYHL , DK.DK_LOTRINH, DK.DK_RATIO, DK.DK_NN_MA, 
	DK.DK_KH_MA,DK.DK_MASOTHUE, DK.DK_TPP_DL_MA
	FROM K1,DK
	WHERE K1.MADK=DK.DK_MA AND
	K1.NGAYHL=DK.DK_NGAYHL;
/* KQ */
PROMPT TAO VIEW TTKH
CREATE VIEW TTKH (MADK,NGAYHL,LOTRINH,RATIO,NN,TENDC,MSTHUE,MAKH,MADL) AS
	SELECT K2.MADK,K2.NGAYHL,K2.LOTRINH,K2.RATIO,K2.NN,KH_.TENDC,K2.MSTHUE,K2.MAKH, K2.MADL
	FROM K2,KH_
	WHERE K2.MAKH=KH_.MAKH;
PROMPT TAO REPORT
CREATE VIEW IN_ (MADK,NGAYHL,LOTRINH,RATIO,NN,TENDC,MSTHUE,MAKH,CSMOI,CSNGUNG,DNTT,CSCU,KY,DOT,SOHO,MSGB,CAPDA,DMDK,TYLE,BAC,GIA,MADL) AS
SELECT TTKH.MADK,TTKH.NGAYHL,TTKH.LOTRINH,TTKH.RATIO,TTKH.NN,TTKH.TENDC,TTKH.MSTHUE,TTKH.MAKH,TIEN.CSMOI,TIEN.CSNGUNG,TIEN.DNTT,TIEN.CSCU,TIEN.KY,TIEN.DOT,TIEN.SOHO,TIEN.MSGB,TIEN.CAPDA,TIEN.DMDK,TIEN.TYLE,TIEN.BAC,TIEN.GIA, TTKH.MADL
FROM TTKH,TIEN
WHERE TTKH.MADK=TIEN.MADK AND
	TTKH.NGAYHL=TIEN.NGAYHL;
/*---CO THE TAO REPORT-- */
CREATE TABLE INHOADON (
	MADK	VARCHAR2(7),
	NGAYHL	DATE,
	LOTRINH VARCHAR2(6),
	RATIO NUMBER(7),
	NN VARCHAR2(2),
	TENDC VARCHAR2(50),
	MSTHUE VARCHAR2(20),
	MAKH VARCHAR2(7),
	CSMOI NUMBER(7),
	CSNGUNG NUMBER(7),
	DNTT NUMBER(12),
	CSCU NUMBER(7),
	SOHO NUMBER(3),
	MSGB VARCHAR2(2),
	CAPDA VARCHAR2(2),
	DMDK VARCHAR2(3),
	TYLE NUMBER(3),
	BAC NUMBER(3),
	GIA NUMBER(9,3),
	MADL VARCHAR2(1),
	TENDL VARCHAR2(15),
	DTHOAI VARCHAR2(15),
	PHIENTINH NUMBER(2),
	KYTINH VARCHAR2(6),
	DOTTINH VARCHAR2(1),
	KY VARCHAR2(2),
	NAM VARCHAR2(4),
	TYGIA NUMBER(8,3),
	DMDKIN VARCHAR2(2));
INSERT INTO INHOADON (MADK,NGAYHL,LOTRINH,RATIO,NN,TENDC,MSTHUE,MAKH,CSMOI,CSNGUNG,
DNTT,CSCU,SOHO,MSGB,CAPDA,DMDK,TYLE,BAC,GIA, MADL, TENDL, DTHOAI, PHIENTINH, KYTINH,
DOTTINH, KY, NAM,TYGIA,DMDKIN) 
SELECT DISTINCT IN_.MADK,IN_.NGAYHL,IN_.LOTRINH,IN_.RATIO,IN_.NN,IN_.TENDC,IN_.MSTHUE,IN_.MAKH,
IN_.CSMOI,IN_.CSNGUNG,IN_.DNTT,IN_.CSCU,IN_.SOHO,IN_.MSGB,IN_.CAPDA,
IN_.DMDK,IN_.TYLE,IN_.BAC,IN_.GIA, IN_.MADL, DL.DL_TEN, DL.DL_SODIENTHOAI, &&PHIEN_,TO_CHAR(&&KY_),
TO_CHAR(&&DOT_), SUBSTR(TO_CHAR(&&KY_),5,2), SUBSTR(TO_CHAR(&&KY_),1,4), &&TYGIA, SUBSTR(IN_.DMDK,1,2)
FROM IN_, DL
WHERE IN_.MADL=DL.DL_MA AND IN_.GIA<1;
INSERT INTO INHOADON (MADK,NGAYHL,LOTRINH,RATIO,NN,TENDC,MSTHUE,MAKH,CSMOI,CSNGUNG,
DNTT,CSCU,SOHO,MSGB,CAPDA,DMDK,TYLE,BAC,GIA, MADL, TENDL, DTHOAI, PHIENTINH, KYTINH,
DOTTINH, KY, NAM,TYGIA,DMDKIN) 
SELECT DISTINCT IN_.MADK,IN_.NGAYHL,IN_.LOTRINH,IN_.RATIO,IN_.NN,IN_.TENDC,IN_.MSTHUE,IN_.MAKH,
IN_.CSMOI,IN_.CSNGUNG,IN_.DNTT,IN_.CSCU,IN_.SOHO,IN_.MSGB,IN_.CAPDA,
IN_.DMDK,IN_.TYLE,IN_.BAC,IN_.GIA, IN_.MADL, DL.DL_TEN, DL.DL_SODIENTHOAI, &&PHIEN_,TO_CHAR(&&KY_),
TO_CHAR(&&DOT_), SUBSTR(TO_CHAR(&&KY_),5,2), SUBSTR(TO_CHAR(&&KY_),1,4), 1,SUBSTR(IN_.DMDK,1,2)
FROM IN_, DL
WHERE IN_.MADL=DL.DL_MA AND IN_.GIA>1;
/* --------------------- */
PROMPT XOA BIEN
UNDEFINE KY_;
UNDEFINE PHIEN_;
UNDEFINE DOT_;
UNDEFINE TYGIA;
COMMIT;
PROMPT SQL Writen by THAI HOANG TRINH - PHAM XUAN THAO, July 1999.
II. FORM CODE 
QUẢN LÝ ĐIỆN KẾ :
--Kiem tra moi khi them hay sua doi dien ke thi dien ke do
--phai duoc nhap Dinh muc dien ke va tong cua chung phai la 100%
IF :SYSTEM.RECORD_STATUS = 'NEW' THEN
 COMMIT;
END IF;
IF :SYSTEM.RECORD_STATUS IN ('CHANGED','INSERT') THEN
 DECLARE TONGTYLE NUMBER :=0;
BEGIN
 SELECT SUM(DMDK_TYLE)INTO TONGTYLE FROM DMDK
 WHERE DMDK_DK_MA=:DK.DK_MA	
	AND DMDK_DK_NGAYHL=:DK.DK_NGAYHL
	AND DMDK_DK_NGAYKYHD=:DK.DK_NGAYKYHD
 GROUP BY DMDK_DK_MA, DMDK_DK_NGAYHL, DMDK_DK_NGAYKYHD;
 IF TONGTYLE100 THEN
 MESSAGE('Xin bn hºy nhp li ˜M˜K - tng ca 1 ˜iƯn k lª 100% - Ban da nhap '||TO_CHAR(tongtyle));
 RAISE FORM_TRIGGER_FAILURE;
 END IF;
 Exception when no_data_found then 
 BEGIN
 IF :DMDK.DMDK_TYLE100 THEN 
 MESSAGE('Xin hay nhap lai Ty le =100');
	GO_BLOCK('DMDK');
	RAISE FORM_TRIGGER_FAILURE;
 END IF;
 END; 
 COMMIT;
END;
 COMMIT;
END IF;
GO_BLOCK('KH');
--Kiem tra phan dinh muc dien ke cho mot dien ke
--tong cac ty le dung cua mot dien ke phai la 100%
--MESSAGE(:SYSTEM.RECORD_STATUS);
DECLARE TYLE NUMBER :=0;
BEGIN
 SELECT SUM(DMDK_TYLE)INTO TYLE FROM DMDK
 WHERE DMDK_DK_MA=:DK.DK_MA	
	AND DMDK_DK_NGAYHL=:DK.DK_NGAYHL
	AND DMDK_DK_NGAYKYHD=:DK.DK_NGAYKYHD
 GROUP BY DMDK_DK_MA, DMDK_DK_NGAYHL, DMDK_DK_NGAYKYHD;
 IF :SYSTEM.RECORD_STATUS ='NEW' THEN
 SELECT TYLE-DMDK.DMDK_TYLE+:DMDK.DMDK_TYLE INTO TYLE FROM DMDK
 WHERE DMDK_DK_MA=:DK.DK_MA	
	AND DMDK_DK_NGAYHL=:DK.DK_NGAYHL
	AND DMDK_DK_NGAYKYHD=:DK.DK_NGAYKYHD
 AND DMDK_TTDM_MA=:TTDM.TTDM_MA;
 ELSE
 SELECT TYLE-DMDK.DMDK_TYLE+:DMDK.DMDK_TYLE INTO TYLE FROM DMDK
 WHERE DMDK_DK_MA=:DK.DK_MA	
	AND DMDK_DK_NGAYHL=:DK.DK_NGAYHL
	AND DMDK_DK_NGAYKYHD=:DK.DK_NGAYKYHD
 AND DMDK_TTDM_MA=:TTDM.TTDM_MA;
 END IF;
 IF TYLE100 THEN
	MESSAGE('Xin bn hºy nhp li ˜M˜K - tng ca 1 ˜iƯn k lª 100%- BAN MOI NHAP DUOC'
	|| TO_CHAR(TYLE));
 RAISE FORM_TRIGGER_FAILURE;
 END IF;
 EXCEPTION WHEN NO_DATA_FOUND THEN 
 BEGIN
 IF :DMDK.DMDK_TYLE>100 THEN 
 MESSAGE('Xin hay nhap lai Ty le <=100');
	RAISE FORM_TRIGGER_FAILURE;
 END IF;
 END; 
END;
LỊCH GHI ĐIỆN
PROCEDURE ADD_KPD IS
BEGIN
 IF (:KY.KY_KY IS NOT NULL) THEN
 BEGIN
 GO_BLOCK('KY');
 COMMIT;
 DECLARE 
 CURSOR C IS SELECT COUNT(KPD.KPD_KY_KY) SO_REC
	FROM KPD KPD GROUP BY KPD_KY_KY
	WHERE kpd.kpd_ky_ky=:KY.KY_KY;
 SOREC NUMBER;
 BEGIN 
 OPEN C;
 FETCH C
 INTO SOREC;
-- IF C%NOTFOUND THEN
-- RAISE NO_DATA_FOUND;
-- END IF;
 CLOSE C;
 IF SOREC=0 OR SOREC IS NULL THEN
 BEGIN	
 DECLARE 
	KYNHAP VARCHAR2(6) :=:KY.KY_KY;
 CURSOR T IS SELECT KYNHAP KY, 
	 PD.PD_PH_PHIEN PHIEN, PD.PD_DOT_DOT DOT
	FROM PD PD ORDER BY PHIEN,DOT;
	REC T%ROWTYPE;
 BEGIN
	OPEN T;
	LOOP
	 FETCH T INTO REC;
	 EXIT WHEN T%NOTFOUND;
	 BEGIN
	 INSERT INTO KPD(KPD_KY_KY, KPD_PD_PH_PHIEN, KPD_PD_DOT_DOT)
	VALUES (REC.KY, REC.PHIEN, REC.DOT );
	 EXCEPTION
	WHEN OTHERS THEN NULL;
	 END;
	END LOOP;
	CLOSE T;
	COMMIT;
 END;
 END;
 ELSE
 MESSAGE('Bn ¢º nhp ri, kh¤ng cÇn nhp li');
 END IF;
 END;
END;
END IF;
END;
*------------------------
PhÇn kiĨm sot cho Nhp k mìi 
FUNCTION KYMOI RETURN VARCHAR2 IS
BEGIN
 DECLARE TEST VARCHAR2(6);
	KY_MOI VARCHAR2(6);
	ND DATE;
	NC DATE;
 BEGIN 
 SELECT MAX(KY.KY_KY),KY.KY_NGAYDAU,KY.KY_NGAYCUOI INTO TEST,ND,NC FROM KY;
-- IF (ND IS NULL) OR (NC IS NULL) THEN
-- MESSAGE('Ban can phai nhap ngay dau va ngay cuoi cho ky '||TEST);
-- RAISE Form_Trigger_Failure;
-- END IF;
 IF SUBSTR(TEST,5,2)='12' THEN
	KY_MOI:=TO_CHAR(TO_NUMBER(SUBSTR(TEST,1,4))+1)||'01';
 ELSE 
	KY_MOI:=TO_CHAR(TO_NUMBER(TEST)+1);
 END IF;
 RETURN(KY_MOI);
 END;
END;
To dư liƯu cho viƯc In lch ghi ¢iƯn vª chun b sn dư liƯu cho BDCS ¢Ĩ khi vao ch cÇn nhp la CSM
/* THU TUC NHAP DU LIEU CHO BIEN DONG CHI SO CUA MOI KY GHI DIEN*/
PROCEDURE bdcs IS
BEGIN
 IF (:KPD.KPD_KY_KY IS NOT NULL AND 
	:KPD.KPD_PD_PH_PHIEN IS NOT NULL AND 
	:KPD.KPD_PD_DOT_DOT IS NOT NULL AND
	:LGD.LGD_NGAY_DCS IS NOT NULL ) THEN
 DECLARE 
 CURSOR T IS SELECT DK.DK_MA MA, DK.DK_NGAYKYHD NGAYKYHD,
	 MAX(DK.DK_NGAYHL) NGAYHL FROM DK DK
	 WHERE DK.DK_NGAYHL<:LGD.LGD_NGAY_DCS AND 
	DK.DK_PH_PHIEN=:KPD.KPD_PD_PH_PHIEN 
	 GROUP BY DK.DK_MA,DK.DK_NGAYKYHD ;
	REC T%ROWTYPE;
 BEGIN
	OPEN T;
	LOOP
	 FETCH T INTO REC;
	 EXIT WHEN T%NOTFOUND;
	 BEGIN
	 INSERT INTO BD (BD_DK_MA, BD_DK_NGAYHL, BD_DK_NGAYKYHD,
	BD_LGD_KPD_KY_KY, BD_LGD_KPD_PD_PH_PHIEN, 
	BD_LGD_KPD_PD_DOT_DOT, BD_CSMOI, BD_CSNGUNG)
	VALUES (REC.MA, REC.NGAYHL, REC.NGAYKYHD, :KPD.KPD_KY_KY,
	 :KPD.KPD_PD_PH_PHIEN, :KPD.KPD_PD_DOT_DOT, 0 ,0 );
	 EXCEPTION
	WHEN OTHERS THEN NULL;
	 END;
	END LOOP;
	CLOSE T;
	COMMIT;
 END;
 ELSE
 MESSAGE('Xin bn hºy nhp K, Phi£n , ˜ít, Ngªy ¢c Ch sç ca LG˜');
 END IF;
END;
THỰC TẬP TỐT NGHIỆP
Đề tài : Xây dựng mô hình quản lý CSDL hóa đơn tiền điện 
Nhiệm vụ đề tài :	 - Phân tích, xây dựng hệ thống CSDL hóa đơn
Tìm hiểu phần mềm Oracle
Viết Demo tính toán hóa đơn tiền điện
Giáo viên hướng dẫn : Nguyễn Mạnh Thọ
Sinh viên : Thái Hoàng Trình – Phạm Xuân Thảo
Lớp : KSII K6
Yêu cầu đề tài :
Nhiệm vụ đề tài :	 - Phân tích, xây dựng hệ thống CSDL hóa đơn
Thiết kế hệ thống trên hệ quản trị CSDL Oracle
Viết chương trình tính hoá đơn tiền điện
Xây dựng chương trình quản lý 
Từ mô hình đã xây dựng bổ sung số liệu cần thiết phục vụ cho các yêu cầu tính toán.
Viết chương trình tính toán doanh thu & thương phẩm theo yêu cầu thực tế của hệ thống, bao gồm : Viết chương trình tính cho khách hàng riêng biệt, toàn bộ các khách hàng theo dòng thời gian thống kê và hóa đơn ra theo phiên.
Viết chương trình quản lý đầu vào : biến động khách hàng, biến động chỉ số
Tạo Report hóa đơn, báo cáo doanh thu & thương phẩm và biến động khách hàng.
YÊU CẦU LUẬN ÁN :
Từ mô hình đã xây dựng bổ sung số liệu cần thiết phục vụ cho các yêu cầu tính toán.
Viết chương trình tính toán doanh thu & thương phẩm theo yêu cầu thực tế của hệ thống, bao gồm : Viết chương trình tính cho khách hàng riêng biệt, toàn bộ các khách hàng theo dòng thời gian thống kê và hóa đơn ra theo phiên.
Viết chương trình quản lý đầu vào : biến động khách hàng, biến động chỉ số
Tạo Report hóa đơn, báo cáo doanh thu & thương phẩm và biến động khách hàng.
CÔNG VIỆC ĐÃ THỰC HIỆN ĐẾN GIỮA GIAI ĐOẠN :
Hoàn chỉnh sơ đồ ERD
Bổ sung số liệu cho hệ thống
Tiếp tục nghiên cứu các công cụ của Oracle : Form, Menu, Report, PL/SQL…
Tạo giao diện người dùng
Phác thảo phương thức tính toán quản lý
THỰC HIỆN :
Hoàn chỉnh giai đoạn thiết kế :
Đã hoàn chỉnh ERD (đính kèm ERD) và số liệu bổ sung sửa đổi theo yêu cầu (số liệu bậc thang, giá điện giá trị gia tăng, điều chỉnh hóa đơn – truy thu, hủy bỏ…)
Xây dựng giao diện :
Menu :
(Xem sơ đồ phụ lục)
Các Form nhập liệu :
(Xem sơ đồ phụ lục)

File đính kèm:

  • docXây dựng mô hình quản lý CSDL hóa đơn tiền điện, thực hiện chương trình quản lý hệ thống trên Oracle.doc