Professional Documents
Culture Documents
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
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; }
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 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; } }