Biểu đồ lớp phân tích thực thi ca sử dụng Cập nhật tiêu chí đánh giá

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Những biến đổi trong việc chăm sóc sức khỏe bà mẹ và trẻ em của người Nùng nghiên cứu ở xã Đại An, huyện Văn Quan, tỉnh lạng Sơn (Trang 58)

- Tác nhân: Người quản trị hệ thống.

- Lớp giao diện: Lớp giao diện CriteriaForm cho phép thực hiện thao tác thêm mới hay cập nhật các tiêu chí đánh giá. Lớp này bao gồm các thủ tục thực hiện việc kiểm tra tính hợp lệ của dữ liệu mà người dùng nhập vào, ràng buộc dữ liệu.

- Lớp điều khiển: Lớp điều khiển CriteriaService mô tả các thuộc tính & các phương thức (thêm/sửa/xóa/vấn tin) của thực thể Criteria.

- Lớp truyền thông: Lớp truyền thông COMSVR bao gồm các lời gọi thực thi các câu lệnh SQL tương tác trực tiếp tới cơ sở dữ liệu. Lớp COMSVR thực hiện việc ghi lại log các thao tác của người dùng đối với cơ sở dữ liệu.

- Lớp thực thể: Lớp thực thể ClientType bao gồm thông tin về loại khách hàng. Lớp thực thể Criteria bao gồm các tiêu chí đánh giá đối với loại khách hàng đó.

Biểu đồ tuần tự phân tích lớp thực thi:

0.3 Hình 5.3: Biểu đồ tuần tự phân tích lớp thực thi “Cập nhật tiêu chí đánh giá”.

1.2. Ca sử dụng “Đánh giá khoản vay tín dụng”

Tác nhân: Kiểm soát viên

Mô tả: Người sử dụng thực hiện việc đánh giá các khoản vay tín dụng được chọn của khách hàng trên cơ sở phương án đánh giá được chọn & kết quả của các khoản vay đã được đánh giá trước đó.

Chức năng tham chiếu: R10.

Luồng sự kiện chính:

0.2Bảng 5.2: Luồng sự kiện chính của ca sử dụng "Đánh giá khoản vay tín dụng"

Hành động của tác nhân Phản ứng của hệ thống Dữ liệu liên quan

1. Chọn chức năng “Contract Assessment Batch” từ nhóm menu Client & Contract.

2. Hiện ra màn hình bao gồm các thông tin về: - Phương án đánh giá được chọn. - Số Contract cần phải đánh giá. - Số Contract mà kết quả được dùng để đánh giá.

Nếu các thông tin hợp lệ thì chức năng đánh giá được kích hoạt, ngược lại sẽ chỉ cho xem kết quả đánh giá của phương án này trước đó Phương án đánh giá được lựa chọn. Số Contract cần phải đánh giá. Số Contract mà kết quả được dùng để đánh giá.

3. Chọn nút “History”. 4. Hiển thị kết quả đánh giá theo phương án này trước đó. Phương án đánh giá được lựa chọn. 5. Chọn nút “Run” (chọn được nếu các điều kiện hợp lệ) 6. Thực hiện việc đánh giá các Contract được lựa chọn. Phương án đánh giá được lựa chọn. Số Contract cần phải đánh giá. Số Contract mà kết quả được dùng để đánh giá. 7. Hiển thị thông báo kết

quả thực hiện. 8. Yêu cầu kết thúc 9. Đóng Form.

Biểu đồ tuần tự của hệ thống:

0.4 Hình 5.4: Biểu đồ tuần tự ca sử dụng "Đánh giá khoản vay tín dụng".

Biểu đồ lớp phân tích thực thi:

Quan hệ giữa tác nhân & các lớp ứng dụng được mô tả cụ thể qua biểu đồ lớp phân tích thực thi như sau:

0.5 Hình 5.5: Biểu đồ lớp phân tích thực thi “Đánh giá khoản vay tín dụng”.

- Lớp giao diện: Lớp giao diện ContractEvaluateForm cho phép thực hiện thao tác xem lại (History) kết quả đánh giá của phương án này trước đó. Hoặc thực hiện việc đánh giá (Run) trên cơ sở phương án này cho các Contract được lựa chọn. Lớp này bao gồm các thủ tục thực hiện việc kiểm tra tính hợp lệ của dữ liệu mà người dùng nhập vào, ràng buộc dữ liệu.

- Lớp điều khiển: Lớp điều khiển ContractEvaluateService gồm các thuộc tính & phương thức thực hiện việc đánh giá khoản vay tín dụng.

- Lớp truyền thông: Lớp truyền thông COMSVR bao gồm các lời gọi thực thi các câu lệnh SQL tương tác trực tiếp tới cơ sở dữ liệu. Lớp COMSVR thực hiện việc ghi lại log các thao tác của người dùng đối với cơ sở dữ liệu.

- Lớp thực thể: Lớp thực thể Plan bao gồm thông tin về phương án đánh giá. Lớp thực thể Criteria bao gồm thông tin về các tiêu chí đánh giá đối với loại khách hàng đó. Lớp thực thể Contract bao gồm thông tin về các khoản vay tín dụng (cả đánh giá & chưa đánh giá).

Biểu đồ tuần tự phân tích lớp thực thi:

2. Chi tiết thiết kế dữ liệu các thực thể

- Bảng tb_branch:

Field Type Null Key Default Comment

brid char(4) NO PRI

name varchar(100) NO phone char(20) NO fax char(20) NO address varchar(200) NO description varchar(255) NO usr_open char(10) NO date_open date NO usr_edit char(10) NO

date_edit date YES

status char(10) NO 0

- Bảng tb_client: Field Type Null Key Default Comment clid int(11) NO PRI

short_name varchar(50) NO

reg_number char(20) NO

reg_type varchar(75) NO

reg_details varchar(200) NO

cltid int(11) NO MUL 0

brid char(4) NO MUL

ctid int(11) NO MUL 0

clhid int(11) NO 0 last_name varchar(20) NO first_name varchar(20) NO middle_name varchar(20) NO birth_name varchar(50) NO material_status varchar(30) NO date_of_birth date NO place_of_birth varchar(75) NO position varchar(30) NO legal_name varchar(100) NO trade_name varchar(100) NO phone char(20) NO fax char(20) NO address varchar(100) NO zip char(5) NO city varchar(50) NO email varchar(50) NO date_open date NO usr_open char(10) NO usr_edit char(10) NO date_edit date NO status char(10) NO 0

Field Type Null Key Default Comment

ctid int(11) NO PRI

cltid int(11) NO 0 name varchar(50) NO description varchar(200) NO date_open date NO usr_open char(10) NO usr_edit char(10) NO date_edit date NO status char(10) NO 0 - Bảng tb_client_rank: Field Type Null Key Default Comment clrid int(11) NO PRI

cltid int(11) NO 0

minimum float NO 0

maximum float NO 0

name varchar(50) NO

risk_note varchar(50) YES

credit_note varchar(200) YES

accept char(10) YES NO

date_open date YES

usr_open char(10) YES

usr_edit char(10) YES

date_edit date YES

status char(10) NO 0

- Bảng tb_client_type: Field Type Null Key Default Comment cltid int(11) NO PRI

name varchar(100) NO description varchar(255) NO usr_open char(10) NO date_open date NO usr_edit char(10) NO date_edit date NO status char(10) NO 0 - Bảng tb_contract: Field Type Null Key Default Comment ctrid int(11) NO PRI

clid int(11) NO 0 name varchar(50) NO loan_time int(11) NO 0 loan_amount float NO 0 payment_date date NO payment_method varchar(200) NO

interest_pay_date date YES

interest_rate float YES

purpose varchar(200) YES

finance_check char(11) YES YES

marked char(10) YES NO

retained char(10) YES NO

total_point int(11) YES 0

result longtext YES

accept char(10) YES NO

date_open date NO usr_open char(10) NO usr_edit char(10) NO date_edit date NO status char(10) NO 0 - Bảng tb_contract_value: Field Type Null Key Default Comment ctrvid int(11) NO PRI

ctrid int(11) NO

crid int(11) NO 0

criteria_name varchar(70) NO

weight int(11) YES 1

valid int(11) YES 0

point int(11) YES 0

date_open date NO usr_open char(10) NO usr_edit char(10) NO date_edit date NO status char(10) NO 0 - Bảng tb_criteria: Field Type Null Key Default Comment crid int(11) NO PRI

cltid int(11) NO 0

parentid int(11) NO 0

group int(11) NO 0

level int(11) NO 0

name varchar(70) NO

weight int(11) YES 1

description varchar(200) YES

date_open date NO usr_open char(10) NO usr_edit char(10) NO date_edit date NO status char(10) NO 0 - Bảng tb_value: Field Type Null Key Default Comment valid int(11) NO PRI

crid int(11) NO 0

name varchar(70) NO

point int(11) NO 0

description varchar(200) YES

date_edit date NO

status char(10) NO 0

- Bảng tb_plan: Field Type Null Key Default Comment plnid int(11) NO PRI

cltid int(11) NO 0

name varchar(50) NO

date_create datetime NO

officer varchar(50) NO

description varchar(200) NO

marked char(10) YES NO

evaluated_date datetime YES

result longtext YES

date_open date NO usr_open char(10) NO usr_edit char(10) NO date_edit date NO status char(10) NO 0 - Bảng tb_plan_detail: Field Type Null Key Default Comment plndid int(11) NO PRI

plnid int(11) NO 0

plan_name varchar(65) YES

crid int(11) NO 0

criteria_name varchar(65) YES

weight int(11) YES 1

same_percent float NO 1 date_open date NO usr_open char(10) NO usr_edit char(10) NO date_edit date NO status char(10) NO 0 - Bảng tb_system: Field Type Null Key Default Comment sysid int(11) NO PRI

name char(20) NO value char(50) NO description varchar(300) NO date_open date NO usr_open char(10) NO usr_edit char(10) NO date_edit date NO status char(10) NO 0

3. Một số các Triger & Procedure của cơ sở dữ liệu

DROP PROCEDURE IF EXISTS ces.ContractEvaluation; CREATE PROCEDURE ces.`ContractEvaluation`() BEGIN

DECLARE ctrid_mark INT;

DECLARE ctrid_retain INT;

DECLARE result_mark LONGTEXT;

DECLARE generalInfor LONGTEXT;

DECLARE total_point_mark INT;

DECLARE criteria_same_mark INT;

DECLARE numMarked INT;

DECLARE numRetained INT;

DECLARE numCriteria INT;

DECLARE crid_mark INT;

DECLARE plnid_mark INT;

DECLARE mark_last_row INT;

DECLARE retain_last_row INT;

DECLARE max_retain_id INT;

DECLARE max_retain_name VARCHAR(70);

DECLARE max_criteria_same INT;

DECLARE max_accept_status CHAR(10);

DECLARE retained_status CHAR(10);

DECLARE mark_cur CURSOR FOR SELECT ctrid FROM tb_contract WHERE status='1' and marked='YES' ORDER BY ctrid;

DECLARE retain_cur CURSOR FOR SELECT ctrid FROM tb_contract WHERE status='1' and retained='YES' ORDER BY accept DESC;

-- Lay PlanID dung de danh gia:

SET plnid_mark=(SELECT plnid FROM tb_plan WHERE marked = 'YES' and status='1');

-- Lay so luong ban ghi can danh gia:

SET numMarked=(SELECT COUNT(*) FROM tb_contract WHERE status='1' and marked='YES');

SET numRetained=(SELECT COUNT(*) FROM tb_contract WHERE status='1' and retained='YES');

SET numCriteria = (SELECT SUM(d.weight) FROM tb_plan_detail d WHERE (select e.plnid from tb_plan e where e.marked='YES' and

e.plnid=d.plnid) AND (d.status=1));

-- Ghi vao bien luu thong tin chung:

SET generalInfor = '[---CONTRACT EVALUATION---]\r\n';

SET generalInfor = CONCAT(generalInfor,'[DATE:',DATE_FORMAT(NOW(),'%Y- %c-%d %H:%i:%s'),']\r\n');

SET generalInfor = CONCAT(generalInfor,'Number of contracts to evaluate: ', numMarked,'\r\n');

SET generalInfor = CONCAT(generalInfor,'Number of contracts to be used: ', numRetained,'\r\n');

SET mark_last_row = 0;

OPEN mark_cur; mark_label: LOOP

-- Lay Contract ID trong mark_cur FETCH mark_cur INTO ctrid_mark;

SET generalInfor = CONCAT(generalInfor,'\r\n[Begin Contract ID: ', ctrid_mark,']\r\n');

SET result_mark = '[---CONTRACT EVALUATION---]\r\n';

SET result_mark = CONCAT(result_mark,'[DATE:',DATE_FORMAT(NOW(),'%Y- %c-%d %H:%i:%s'),']\r\n');

SET result_mark = CONCAT(result_mark,'\r\n[Begin Contract ID: ', ctrid_mark,']\r\n');

-- Lay tong so diem cua contract dang duoc marked & cap nhat vao DB.

SET total_point_mark = (select sum(point) from tb_contract_value

where ctrid=ctrid_mark);

-- Cap nhat tong so diem vao Log cua Plan & Contract SET generalInfor = CONCAT(generalInfor,' Total Point: ', total_point_mark,'\r\n---\r\n'); SET result_mark= CONCAT(result_mark,' Total Point: ', total_point_mark,'\r\n');

SET result_mark = CONCAT(result_mark,' + Number of contracts to be used: ', numRetained,'\r\n---\r\n');

-- Duyet qua cac Contract dang duoc Retained

SET retain_last_row = 0; SET max_retain_id = 0; SET max_criteria_same = 0; OPEN retain_cur; retain_label: LOOP

FETCH retain_cur INTO ctrid_retain;

SET retain_last_row = retain_last_row + 1;

-- Luu vao cac bien gia tri

SET result_mark = CONCAT(result_mark,' [Begin Retained Contract ID: ', ctrid_retain,']\r\n');

SET generalInfor = CONCAT(generalInfor,' [Begin Retained Contract ID: ', ctrid_retain,']\r\n');

-- Tim trang thai cua Retained Contract ID

SET retained_status = (SELECT accept FROM tb_contract WHERE ctrid=ctrid_retain);

SET result_mark= CONCAT(result_mark,' + Result status: ', retained_status,'\r\n');

SET generalInfor = CONCAT(generalInfor,' + Result status: ', retained_status,'\r\n');

-- Dem so cac Criteria tuong duong nhau cua 2 thuoc tinh SET criteria_same_mark=(SELECT SUM(weight) FROM (SELECT a.ctrid,

a.crid,

a.criteria_name, a.weight,

CASE

WHEN (a.point

/ (SELECT b.point

FROM tb_contract_value b

WHERE b.crid = a.crid AND b.ctrid = ctrid_retain))> 1

THEN

((SELECT b.point

FROM tb_contract_value b

WHERE b.crid = a.crid AND b.ctrid = ctrid_retain)

/ a.point)

(a.point

/ (SELECT b.point

FROM tb_contract_value b

WHERE b.crid = a.crid AND b.ctrid = ctrid_retain)) END

`percent_calculate`, (SELECT d.same_percent FROM tb_plan_detail d WHERE (SELECT e.plnid FROM tb_plan e

WHERE (e.plnid = plnid_mark) AND (e.plnid = d.plnid)) AND(d.status = '1') AND (d.crid=a.crid)) same_percent FROM tb_contract_value a

WHERE a.ctrid = ctrid_mark) ee

WHERE ee.percent_calculate >= ee.same_percent);

SET criteria_same_mark = IFNULL(criteria_same_mark,0);

-- Luu vao cac bien gia tri

SET result_mark= CONCAT(result_mark,' + Number of same Criteria: ',

criteria_same_mark,'/',numCriteria,'~(',criteria_same_mark/numCri

teria*100,'%)\r\n');

SET generalInfor = CONCAT(generalInfor,' + Number of same Criteria: ',

criteria_same_mark,'/',numCriteria,'~(',criteria_same_mark/numCri

teria*100,'%)\r\n');

-- Danh dau het mot Retained Contract

SET result_mark= CONCAT(result_mark,' [End Retained Contract]\r\n ---\r\n');

SET generalInfor = CONCAT(generalInfor,' [End Retained Contract]\r\n ---\r\n');

-- Tim Retain Contract giong nhat voi Contract Marked hien thoi IF (criteria_same_mark > max_criteria_same) THEN

SET max_criteria_same = criteria_same_mark; SET max_retain_id = ctrid_retain;

SET max_retain_name = (Select name from tb_contract where ctrid=ctrid_retain);

SET max_accept_status = (Select accept from tb_contract where ctrid=ctrid_retain);

END IF;

-- Kiem tra dieu kien ket thuc vong lap IF (retain_last_row = numRetained) THEN LEAVE retain_label;

END IF;

END LOOP retain_label; CLOSE retain_cur;

-- Chon phuong an giong nhat duoc recommend cho loi giai SET result_mark= CONCAT(result_mark,'\r\n[RECOMENDED SOLUTION]\r\n');

SET generalInfor= CONCAT(generalInfor,'\r\n[RECOMENDED SOLUTION]\r\n');

SET generalInfor= CONCAT(generalInfor,' + Contract ID:',max_retain_id,'\r\n');

-- Contract Name:

SET result_mark= CONCAT(result_mark,' + Contract Name:',max_retain_name ,'\r\n');

SET generalInfor= CONCAT(generalInfor ,' + Contract Name:',max_retain_name ,'\r\n');

-- Tinh lai ti le tuong duong:

SET result_mark= CONCAT(result_mark,' + Number of same Criteria: ', max_criteria_same,'/',numCriteria,'~(',max_criteria_same/numCriteri

a*100,'%)\r\n');

SET generalInfor = CONCAT(generalInfor,' + Number of same Criteria: ',

max_criteria_same,'/',numCriteria,'~(',max_criteria_same/numCriteri

a*100,'%)\r\n');

-- Contract result:

SET result_mark = CONCAT(result_mark,' + Result status:',max_accept_status ,'\r\n');

SET generalInfor = CONCAT(generalInfor,' + Result status:',max_accept_status ,'\r\n');

SET result_mark= CONCAT(result_mark,'[CLOSE RECOMENDED SOLUTION]\r\n');

SET generalInfor= CONCAT(generalInfor,'[CLOSE RECOMENDED SOLUTION]\r\n');

-- Cap nhat thong tin vao bien Log

SET result_mark= CONCAT(result_mark,'\r\n[End Contract ID:',ctrid_mark,']\r\n---\r\n'); SET generalInfor = CONCAT(generalInfor,'\r\n[End Contract

ID:',ctrid_mark,']\r\n---\r\n');

-- Den day da hoan thanh viec danh gia mot Contract Marked UPDATE tb_contract SET

result=result_mark,total_point=total_point_mark, marked='CLOSE' WHERE ctrid=ctrid_mark;

IF (mark_last_row = numMarked) THEN LEAVE mark_label;

END IF;

END LOOP mark_label; -- Loop marked records CLOSE mark_cur;

-- Den day viec danh gia theo PlanID hoan thanh;

SET generalInfor = CONCAT(generalInfor,'COMPLETED SUCCESSFUL!\r\n--- ---\r\n');

UPDATE tb_plan SET evaluated_date=NOW(), result=generalInfor WHERE plnid=plnid_mark;

END;

3.2. Trigger thực hiện việc cập nhật Contract Value

CREATE DEFINER=`root`@`localhost` TRIGGER `ces`.`InsertContractValue` AFTER INSERT ON ces.tb_contract FOR EACH ROW

BEGIN

INSERT INTO ces.tb_contract_value(ctrid, crid,

weight, valid, point, date_open, usr_open, usr_edit, date_edit, status) (SELECT NEW.ctrid `ctrid`,

c.crid `crid`, c.name `criteria_name`, c.weight `weight`, 0 `valid`, 0 `point`, NOW() `date_open`, 'trinhlk' `usr_open`, 'titotet' `usr_edit`, NOW() `date_edit`, '1' `status` FROM tb_criteria c WHERE c.cltid IN

(SELECT cltid FROM tb_client WHERE clid IN

(SELECT clid FROM tb_contract WHERE tb_contract.ctrid=NEW.ctrid)) AND

(c.group=0));

END;

4. Một số mã chương trình cài đặt các thư viện lớp

4.1. Lớp PlanService using System; using System; using System.Collections.Generic; using System.Text; using ComSvr; namespace PlanService {

public class PlanService {

// Khai bao ComServer dung chung private ComSvr.Common oComm; public PlanService()

{

oComm = new Common("localhost", "ces", "root", "root"); }

~PlanService() {

oComm = null; }

// Khai bao cac Properties private string plnid; public string Plnid {

private string cltid; public string Cltid {

get { return cltid; } set { cltid = value; } }

private string name; public string Name {

get { return name; } set { name = value; } }

private string date_create; public string Date_create {

get { return date_create; } set { date_create = value; } }

private string officer; public string Officer {

get { return officer; } set { officer = value; } }

private string description; public string Description {

get { return description; } set { description = value; } }

private string marked; public string Marked {

get { return marked; } set { marked = value; } }

private string usr_open; public string Usr_open {

get { return usr_open; } set { usr_open = value; } }

private string usr_edit; public string Usr_edit {

get { return usr_edit; } set { usr_edit = value; } }

// Cac phuong thuc public void Add() {

string sSQL = "INSERT INTO `tb_plan`

(`plnid`,`cltid`,`name`,`date_create`,`officer`,`description`,`marked`,`d ate_open`,`usr_open`,`usr_edit`,`date_edit`,`status`) VALUES("

+ "null," + cltid + ",'" + name +

"',DATE_FORMAT('" + date_create + "','%Y-%c-%d'),'" + officer + "','" + description + "','" + marked + "',NOW(),'" + usr_open + "','" + usr_edit + "',NOW(),'1')";

oComm.ExecuteSQL(sSQL); } // End Add

public void Edit(string PlanID) {

string sSQL = "UPDATE `tb_plan` SET `name`='" + name + "',`date_create`=DATE_FORMAT('" + date_create + "','%Y-%c-

%d'),`officer`='"

+ officer + "',`description`='" + description + "',`marked`='" + marked + "',`usr_edit`='" + usr_edit

+ "',`date_edit`=NOW() WHERE `tb_plan`.`plnid` =" + PlanID;

oComm.ExecuteSQL(sSQL); } // End Edit

public void Delete(string PlanID) {

string sSQL = "Delete From `tb_plan` WHERE `tb_plan`.`plnid` =" + PlanID;

oComm.ExecuteSQL(sSQL); } // End Delete

public System.Data.DataTable Find(string sSQL) {

return oComm.GetDataBySQL(sSQL); } // End Find

public void UpdatePlanDetail(string PlanDetailID, string same_percent)

{

string sSQL = "Update tb_plan_detail Set same_percent=" + same_percent + ", usr_edit='titotet', date_edit=NOW() Where plndid=" + PlanDetailID;

oComm.ExecuteSQL(sSQL);

}// Cap nhat thong tin bang Plan_Detail } } 4.2. Lớp ContractValueService using System; using System.Collections.Generic; using System.Text; using ComSvr;

public class ContractValueService {

private ComSvr.Common oComm; private string valid;

public string Valid {

get { return valid; } set { valid = value; } }

private string date_open; public string Date_open {

get { return date_open; }

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Những biến đổi trong việc chăm sóc sức khỏe bà mẹ và trẻ em của người Nùng nghiên cứu ở xã Đại An, huyện Văn Quan, tỉnh lạng Sơn (Trang 58)