You are on page 1of 9

TRNG I HC NHA TRANG KHOA CNG NGH THNG TIN

BI TP TUN MN HC XY DNG PHN MM QUN L Ch 1 : PHN QUYN TRONG CHNG TRNH Nhm : 1 Lp : 52TH M SV 52131910 52131928 52131867 52131862 H v Tn m Hong Xun Dip Bo Trn Ngc V Vn L Duy Nguyn Ngc Hong Tn Sn Tun Hiu Cng Cng Anh Lp 52TH 53CNTT 52TH 52TH 52TH 52TH

Nha Trang, thng 09 nm 2013

Trong cc phn mm hin nay ni chung, c bit l cc phn mm qun l ni ring, ngoi vic p ng cc yu cu c bn v nghip v i vi ngi s dng th mt phn khng th thiu l vic phn quyn trong chng trnh. Vi cc ng dng qun l th vic phn quyn l v cng quan trng. Khi mt chng trnh qun l c ci t, khng ch nhn vin l ngi s dng, m cc ng ch hay trng phng trng quy cng c nhu cu s dng phn mm qun l nhn vin, qun l thu, chi hay xem cc thng k, bo co T tnh hnh thc t ny chng ta phi tin hnh phn quyn cho chng trnh ca mnh. 1. Phn quyn trong chng trnh l g? Phn quyn theo cch hiu n gin l cho php mt ngi hoc mt nhm ngi, c quyn s dng nhng tc v no hay khng c quyn s dng tc v no trong chng trnh. VD: Nhn vin ch c in ha n, Gim c c th xem thng k 2. Li ch ca vic phn quyn? Phn r chc nng, nhim v cho tng ngi s dng phn mm. m bo tnh bo mt cho nhng thng tin trong chng trnh. VD: Nhn vin th s khng c quyn qun l ti chnh. 3. Thc hin phn quyn trong chng trnh. p ng y nhu cu phn quyn trong cc ng dng hin nay, c hai cch phn quyn thng c s dng ch yu l: phn quyn trn menu v phn quyn cho cc chc nng trn form. a. Phn quyn trn menu. Cch phn quyn ny thng c s dng khi chng ta mun kim sot cc user sau khi ng nhp vo chng trnh c s dng nhng mn hnh(Form) no, cc form ny thng c m ra t menu.

VD: Nhn vin th khng c php vo form qun l (b lm m i). thc hin phn quyn chng ta xy dng cc bng trong csdl nh sau:

Cc bng User, Groups v GroupUser dng qun l cc User theo tng nhm vic ny gip chng ta c th thc hin phn quyn cho tng nhm ngi. Bi v mt user c th thuc nhiu nhm ngi dng nn c thm bng GroupUser, trong trng hp mt user ch trong mt group c nh th c th lu GroupID trc tip vo bng User. Bng Menu dng lu tr cc menu trong chng trnh, bng MenuGroup gip ch ra xem nhm user no c s dng nhng menu no trong chng trnh.

Trong qu trnh lp trnh ta s thc hin cc bc sau: user ang nhp xc nh dnh sch cc nhm m user thuc v da vo userID

public List<clsGroupUser> GetListOfGroupUserByUserID(string UserID) { UserID = UserID.ToLower(); List<clsGroupUser> lstGroupUser = new List<clsGroupUser>(); DbAccess db = new DbAccess(); db.CreateNewSqlCommand(); db.AddParameter("@LoginID", sLoginID); SqlDataReader reader = db.ExecuteReader("spGroupUser_SelectByLoginID"); while (reader.Read()) { lstGroupUser.Add(new clsGroupUser((Guid)reader["GroupID"], reader["UserID"].ToString())); } //Call Close when done reading. reader.Close(); return lstGroupUser; }

Xc nh danh sch cc menu m cc group c php s dng da vo lstGroupUser.

public clsMenuGroupCollection GetMenuGroupCollectionByGroupID(List<Guid> lstGroupID) { clsMenuGroupCollection allMenuGroupCollection = GetMenuGroupCollection(); clsMenuGroupCollection menuGroupCollection = new clsMenuGroupCollection(); for (int i = 0; i < lstGroupID.Count; i++) { foreach (clsMenuGroup objMenuGroup in allMenuGroupCollection) { if (objMenuGroup.GroupID == lstGroupID[i]) menuGroupCollection.Add(objMenuGroup); } } return menuGroupCollection; }

Xy dng mt phng thc kim tra xem cc menu trong chng trnh c trong danh sch cc menu m nhm ngi c s dng hay khng, nu khng c th c th t thuc tnh enable hoc visible ca menu item l false. Phng thc ny s c s dng trong s kin Form_Load().
private void ShowMenuFromDB() { List<Guid> lstGroupID = new clsGroupUserBS().GetListGroupIdByUserID(clsCommonBS.CurrentUser.LoginID.ToLower() ); menuGroupCollection = new clsMenuGroupBS().GetMenuGroupCollectionByGroupID(lstGroupID); foreach (clsMenuGroup objMenu in menuGroupCollection) { foreach (ToolStripMenuItem menu in mnuMain.Items) { if (menu.Name.Equals(objMenu.MenuID)) { menu.Enabled = true; } } }

ti u cho vic phn quyn ta c th xy dng thm cc chc nng thm,xa, sa cho cc bng linh ng trong vic phn quyn. b. Phn quyn trn form. Trong mt s trng hp ch phn quyn trn menu l cha , v d trn cng mt form qun l nhn vin, nhm nhn vin ch c quyn sa thng tin, nhm trng phng c quyn thm mi hoc xa nhn vin.

Form ca Admin c chc nng thm xa sa.

Form ca nhn vin khng c chc nng thm xa sa. thc hin chc nng ny chng ta c th lu tr cc bng trong csdl nh sau:

S dng thm 3 bng: ChucNang, NhomChucNang, GroupNCN. Trong bng NhomChucNang ch ra cc nhm chc nng c trong chng trnh, v d nh nhm qun tr, nhm k ton. Bng ChucNang ch ra cc chc nng c trong nhm , v d nh Thm, Xa, Sa, Thng K Bng GroupNCN cho ta bit mi Nhm ngi dng c th s dng nhng nhm chc nng no. V vic lp trnh th ta cng kim tra tng t nh phn quyn trn menu, kim tra xem user thuc v nhm no, nhm c nhng chc nng g v tin hnh enable hay disable cc chc nng trn form. c. Xy dng csdl n gin. Cch xy dng csdl bn trn thng c dng cho nhng chng trnh ln, c s phn quyn phc tp. Trong mt s trng hp cc phn mm n gin ta c th th hin lu tr csdl nh sau:

Vi cch lu tr n gin ny khi lp trnh chng ta ch cn xc nh c user thuc Group no v Group c nhng RightID no sau enable hay disable cc chc nng tng ng.

VD:
public void hienthi(int q) { if (q == 1) { mnuNhaplieu.Enabled = true; mnuDangnhap.Enabled = false; mnuDangxuat.Enabled = true; mnuDoimatkhau.Enabled = true; mnuQuanly.Enabled = true; } else if (q == 2 || q == 3) { mnuDangnhap.Enabled = false; mnuDangxuat.Enabled = true; mnuNhaplieu.Enabled = true; mnuDoimatkhau.Enabled = true; mnuQuanly.Enabled = false; } else { mnuDangnhap.Enabled = true; mnuDangxuat.Enabled = false; mnuNhaplieu.Enabled = false; } }

You might also like