Báo cáo thực tập khảo sát và xây dựng phần mềm quản lý nhân sự
Trang 1CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG1.1 Hiện trạng tổ chức
1.1.1 Sơ lược về sự hình thành của Unilever
Vào khoảng những năm 1890,William Lever – một công dân Anh, người sáng lập raUnilever, chính là người đầu tiên tạo dựng nên ngành công nghiệp sản xuất xà phòngvào cuối thế kỷ XIX Thời bấy giờ, loại xà phòng của Lever là Lever’s Pure Honey (mậtong nguyên chất của Lever) được coi là sản phẩm bán chạy nhất Sau một thời gian,Lever lại cho tung ra sản phẩm xà phòng chất lượng cao với tên gọi Sunlight (ánh sángmặt trời) Nhờ vào chiến dịch tiếp thị thành công đã tạo cơ hội cho Lever bứt phá hơnnữa Năm 1890, Lever mở rộng quy mô sản xuất kinh doanh của mình ra khỏi biên giới
nước Anh Ngoài nhà máy tại Mỹ, Lever còn “bành trướng” sang tận Úc, Canada, Đức
và Thụy Sĩ
Cuộc sáp nhập thế kỷ
Cuộc chiến tranh thế giới thứ nhất đã củng cố thêm vị trí của Unilever trên thị trường nộiđịa cũng như quốc tế Lever mở rộng mặt hàng kinh doanh của mình sang lĩnh vực sảnxuất bơ thực vật (margarin) Tháng Giêng 1930, sự hợp nhất giữa Margarine Union vàLever Brothers được thực hiện Một liên minh mới Anh-Hà Lan có tên là Unilever đã rađời Để tránh hệ thống đánh thuế kép, liên minh này quyết định tách thành hai công ty:Unilever PLC có trụ sở tại Anh và Unilever NV đóng trụ sở tại Hà Lan Và dù hai công
ty này có cơ cấu hoạt động gần như độc lập, song Unilever vẫn như một thục thể thốngnhất
Unilever lần lượt sỡ hữu những tên tuổi lớn trên thế giới như Lipton's (Mỹ và Canada),Brooke Bond (Anh), Pepsodent (Mỹ), Bachelors (Anh), Chesebrough-Pond's (Mỹ)…Ngoài mặt hàng chủ yếu buổi ban đầu là xà phòng, Unilever đã mở rộng nhiều chủngloại sản phẩm như trà, kem, dầu gội đầu, kem đánh răng, nước giải khát, phụ gia thựcphẩm…với các nhãn hiệu được “cả thế giới tin dùng” như Lipton, Hellman’s, Ragu,Rama, Magnum, Bertolli, Knorr, Bird’Eyes, Slim-Fast, Dove, Pond, Signal, Close-up,Surf và Omo Và đó cũng chỉ là một con số nhỏ trong tổng số các nhãn hiệu của tậpđoàn
Trang 2Nếu như vào thập niên 30, 90% lợi nhuận của Unilever có được từ kinh doanh xà phòng
và dầu ăn thì vào đầu thập niên 80, con số này không nhiều hơn 40% vì hãng đã tăngcường sản xuất nhiều chủng loại sản phẩm khác như thực phẩm đông lạnh, phụ gia thựcphẩm, kem, trà và các loại mỹ phẩm, đồ vệ sinh gia đình
Bằng tầm nhìn, khả năng chèo lái con tàu doanh nghiệp trước sóng to gió cả trên thươngtrường, bằng việc tổ chức các khóa đào tạo, các chương trình hỗ trợ nhân viên, các nhàquản lý của Unilever đã mang lại sự thành công vượt ngoài sự mong đợi cho tập đoànnày
1.1.2 Unilever Việt Nam:
Công ty liên doanh Unilever Việt Nam vừa công bố đã chính thức được cấp giấy chứngnhận chuyển đổi thành công ty 100% vốn nước ngoài sau khi mua lại cổ phần của đối
tác trong liên doanh là Tổng công ty Hóa chất Việt Nam (Vinachem) Công ty mới có
tên gọi là Công ty TNHH Quốc tế Unilever Việt Nam (Unilever Vietnam InternationalCompany Limited, gọi tắt là Unilever Việt Nam) và hiện nay chưa có sự thay đổi vềvốn.Unilever là một trong những tập đoàn đa quốc gia cung ứng hàng tiêu dùng hàngđầu thế giới với các ngành hàng thực phẩm và sản phẩm chăm sóc vệ sinh cá nhân và giađình Tập đoàn Unilever bắt đầu nghiên cứu thị trường Việt Nam từ 1988 và chính thức
có mặt tại Việt Nam từ năm 1995, tới nay công ty đã đầu tư hơn 120 triệu đô la Mỹ và
đã trở thành một trong các nhà đầu tư thành công nhất ở Việt Nam Những năm quadoanh nghiệp này luôn đạt tốc độ tăng trưởng bình quân 2 con số mỗi năm và đạt tổngdoanh thu gần bằng 1% GDP của Việt nam năm 2009 Doanh thu trong năm 2009 là 500triệu Euro Nhiều nhãn hàng của Unilever đã trở nên quen thuộc với người dân ViệtNam như: Omo, Sunlight, Dove, Sunsilk, Clear, Lux, Close-up, Lipton, Viso, Sunsilk, P/
S and Knorr mỗi ngày trung bình có tới gần 5 triệu sản phẩm của công ty được tiêuthụ Với tiêu chí tiếp thêm sức sống cho người dân Việt Nam thông qua những sản phẩmchất lượng quốc tế, giá cả hợp lý đảm bảo sức khỏe, vệ sinh và dinh dưỡng Ngoài ra,Unilever luôn chung tay trong việc đẩy mạnh đời sống người dần Việt Nam qua các hoạtđộng từ thiện: chương trình áo trắng ngời sang tương lại, hợp tác với FDI thực hiệnchiến dịch chăm sóc sức khỏe răng miệng cho người dân Việt Nam……
Trang 3Vào ngày 7 tháng 1 năm 2010 vừa qua, nằm trong khuôn khổ tài trợ thường niên củaQuỹ Unilever Việt Nam (UVF), 20 dự án vệ sinh môi trường và sức khỏe cộng đồngnăm 2009 đã chính thức được công bố và trao tài trợ với tổng số tiền là 4,770,100,000đồng.
Ngày 6/4/2010, trong lễ kỷ niệm 15 năm thành lập công ty tại Việt Nam, UnileverVietnam đã đón nhận Huân chương Lao Động hạng nhất của Chủ tịch nước trao tặng
Tổng vốn đầu tư: 100 triệu USD
Vốn điều lệ: 55 triệu USD
Những ngành hàng chính
Ngành hàng chăm sóc gia đình: Omo, Viso, Surf, Comfort, Sunlight, Vim
Ngành hàng chăm sóc cá nhân: Sunsilk, Clear, Dove, Lifebuoy, Hazeline, Pond's, P/S,Close up, Rexona
Ngành hàng thực phẩm: Lipton, Knorr
Trang 41.1.3 Cơ cấu tổ chức:
Hình 1.1: Cơ cấu tổ chức công ty Unilever
Sản phẩm của Unilever có mặt trên khắp 64 tỉnh thành của Việt Nam Tổng số nhân viênvăn phòng và quản lý của công ty Unilever Việt Nam hiên nay khoảng 1400 nhân viên.Unilever Việt Nam cũng như những Unilever ở các quốc gia khác luôn duy trì một sốnhân viên nhất định thông qua các hình thức tuyển dụng, chương trình lãnh đạo tiềmnăng, v…v…Công ty có hệ thống nhà phân phối riêng dày đặt và luôn giữ mối quan hệchặt chẽ trong công việc Mỗi chức danh quản lý ở nhà phân phối sẽ được hỗ trợ, đàotạo, huấn luyện, giám sát và đánh giá cũng như xem xét việc tuyển dụng nhân viên củanhà phân phối
Chủ tich (Chairman): có quyền quyết định cao nhất, chịu trách nhiệm tổ chức và điều
hành mọi hoạt động của công ty Các giám đốc các phòng ban làm việc theo sự phâncông của Giám Đốc điều hành
VP PC (Vice Presedent of Personal Care): Chịu trách nhiệm các chức năng và bộ
phận trong Personal Care Personal Care có 5 Department : Hair, Skin, Oral, Skincleaning, Deo
Hair bao gồm các nhãn hàng: Sunsilk, Clear, Dove
Skin bao gồm các nhãn hàng: Pond’s, Hazeline, Vaseline
Oral bao gồm các nhãn hàng: P/S, Close Up, Tooth Brush
Skin Cleaning bao gồm các nhãn hàng: Lux, Dove, Lifebuoy
Trang 5Deo bao gồm các nhãn hàng: Rexona, Dove
VP HC (Vice Presedent of Home Care): Chịu trách nhiệm các chức năng và bộ phận
trong HomeCare Home Care có 3 Department : Fab Clean, Fab Con, HHC
Fab Clean bao gồm các nhãn hàng: Omo, Viso, Surf
Fab Con bao gồm các nhãn hàng: Comfort
HHC bao gồm các nhãn hàng: Sunlight, Vim, Cif
VP Foods (Vice Presedent of Foods): Chịu trách nhiệm các chức năng và bộ phận
trong Foods Foods có 3 Department :
Culinary – Knorr
Beverages – Lipton
IceCream
VP CD (Vice Presedent of Customer Development): thực hiện các kế hoạch phát triển
thị trường của công ty, và các chiến lược về số lượng, phân phối, giá cả, hàng hóa và cácdịch vụ khách hàng bằng cách tìm hiểu về khách hàng, tính năng động của thị trường,các chính sách, chiến lược của đối thủ cạnh tranh,…
VP HR (Vice Presedent of Human Resource): Tổ chức tuyển dụng, đào tạo, huấn
luyện, bố trí nhân sự, quản lý hồ sơ nhân viên Ngoài ra còn chịu trách nhiệm về tiềnlương, chính sách phúc lợi, thưởng, công tác phí, … cho nhân viên
VP Finance (Vice Presedent of Finance & Accounting): Tổ chức quản lý toàn bộ
công tác tài chính, kế toán của công ty, hướng dẫn chỉ đạo bộ phận kế toán, giúp bangiám đốc tổ chức công tác thông tin kinh tế, hạch toán kinh tế, phân tích hoạt động kinh
tế và quyết toán với Unilever khu vực
VP SC (Vice Presedent of Supply Chain): Quản lý giám đốc nhà máy (Plant
Manager), bộ phận kế hoạch (Planning), bộ phận mua hàng (Purchasing), bộ phận kho(Warehouse), bộ phận xuất hàng (Distribution Center), bộ phận quản lý chất lượng(Quality Control), bộ phận kỹ thuật sản xuất (Engineer & Technical Services – E&TS),
bộ phận xuất nhập khẩu (Cross Borde Logistics), bộ phận sản xuất (Operation), bộ phậnphục vụ khách hàng (Customer Service-CS), bộ phận xét duyệt tín dụng
Trang 6VP Corp Dev (Vice Presedent Corporation Development): Đóng vai trò đại diện cho
công ty Unilever Việt Nam làm cầu nối với Unilever quốc tế và những vấn đề liên quanđến nhà nước
VP Mfg (Vice Presedent of Manufacturing): Chịu trách nhiệm các chức năng và các
bộ phận trong khối sản xuất
VP CR (Vice Presedent of Corporate Relationship): là người đại diện Unilever Việt
Nam làm việc với chính phủ, truyền thông và những người có thẩm quyền và các đối tácbên ngoài để tạo hình ảnh công ty, giải quyết các vấn đề hàng nhái, hàng giả gây ảnhhưởng đến hình ảnh và uy tín của công ty Mục tiêu của bộ phận này là cố gắng xâydựng hình ảnh của một công ty đa quốc gia tầm cỡ và là một công ty có trách nhiệmcông dân tại Việt Nam thông qua các công việc từ thiện, tài trợ cho các hoạt động xã hội,các phong trào thể dục thể thao, liên hệ chính quyền địa phương
VP Fds Sol (Vice Presedent of Foods Solution): Chịu trách nhiệm các chức năng và
các bộ phận về giải pháp cho thực phẩm
1.2 Phòng quản trị nhân sự tại công ty Unilever:
QTNS bao gồm việc hoạch địch và sử dụng nguồn nhân lực một cách hiệu quả để
giúp tổ chức và cá nhân đạt đựơc mục tiêu chung
Bộ phận Nhân sự xây dựng các quy trình và chính sách để quản lý quan hệ laođộng
Trưởng bộ phận các phòng ban sử dụng những quy trình, chính sách này quản lýnhân viên và thực hiện những hoạt động về nhân sự
Phát triển tối ưu con người và tổ chức là chìa khóa để dẫn đến thành công Nhânviên sẽ có cơ hội để phát triển năng lực bản thân và hoàn thiện những kĩ năng vàtrên hết là phát huy những tiềm năng ẩn sâu bên trong của mỗi nhân viên Nhờchính sách đào tạo và phát triển và một chế độ đãi ngộ xứng đáng mà Unileverluôn thu hút và giữ chân những người tài giỏi Đó chính là chiếc chìa khóa để tổchức ngày càng hoàn thiện, xây dựng được sự đoàn kết và mang lại hiệu quả kinhdoanh
Trang 7 Luôn có những câu hỏi được đặt ra để tìm ra phương phát tối ưu, khắc phụcnhững thiếu xót hiện tại Đó chính là cách mà phòng nhân sự cùng với ban lãnhđạo xây dựng một Unilever vững mạnh.
Có thể khái quát nhân sự qua các bước như sau:
Nhu cầu con người theo sơ đồ MasLow
Hình 1.2 Sơ đồ MasLow
Trang 8Cấu trúc của phòng quản trị nhân sự:
-Human Resources Business Partners (HRBP): có nhiệm vụ liên lạc điều phối cấu trúc tổchức, những chức năng của các phòng ban; tìm hiểu phương hướng phát triển và tiếnhành thay đổi để phù hợp với mục đích kinh doanh nhưng vẫn đảm bảo số nhân viên ổnđịnh; giữ nhân viên có năng lực; cùng với những người quản lý để đáp ứng những mongmuốn và cơ hội phát triển của nhân viên
-Human Resources Shared Services (HRSS): Điều phối và tiếp tục hoàn thiện quy trình,chính sách và hệ thống HR đảm bảo phù hợp với HR của các Unilever quốc tế và chiếnlược kinh doanh; tuyển dụng, chứa dữ liệu nhân viên, lương và tiền trợ cấp, quản trị lựclượng lao động
-HR Expertise Teams (HRET): Quản lý những thông tin của HR (chính sách, dự án, sảnphẩm và nguồn kiến thức); Kết nối với những nhà tư vấn chuyên gia bên ngoài để thuhút, xây dựng, và chia sẻ những bài học kinh nghiệm; kết nối với những người lãnh đạo
HR để đào tạo, phát triển những khóa học cơ bản của HR
Tất cả những phòng ban này liên quan chặt chẽ với nhau và liên quan chặt chẽ vớiUnilever People tạo thành một thể thống nhất trong cơ cấu của Quản Trị Nguồn NhânLực
Trang 9Hình 1.3 Biểu đồ về số lượng nhân viên
NHẬN XÉT
Sau quá trình khảo sát hiện trạng tại công ty, đặc biệt là hiện trạng tại phòng nhân sự củacông ty, tôi nhận thấy rằng về mặt cấu trúc chung và mối liên hệ trong các bộ phận củaQuản Trị Nguồn Nhân Lực rất tốt Chính nhờ có sự liên hệ giữa các bộ phận trong Nhân
Sự và giữa Nhân Sự với các phòng ban khác đã giúp cho Unilever có một tổ chức chặtchẽ và làm việc hiệu quả Bên cạnh đó, khi đi sâu vào trong từng hoạt động của các bộphận thì vẫn có những bất cập trong công tác quản lý, tuyển dụng, đào tạo, lươngthưởng… Tuy những bất cập đó khá nhỏ nhưng cũng phần nào làm ảnh hưởng tới thờigian và hiệu quả của công việc Một trong những yếu tố quan trong gây nên sự bất cập
đó chính là thông tin, và cách quản lý thông tin
1.3 Hiện trang tin học:
1.3.1 Phần cứng
Thiết bị: máy tính, máy in, máy chiếu, máy fax, máy photo
Kết nối mạng cục bộ, Wireless
Trang 10Tuy nhiên, khi áp dụng cho từng nước có những bất cập, bắt buộc phải theo cơcấu chung Việc rút trích và truy cập do đó phải qua rất nhiều thao tác và tốn thờigian Bên cạnh đó, không có form riêng cung cấp đầy đủ các yêu cầu sau để trợgiúp người sử dụng và người quản lý tìm kiếm thông tin để dễ dàng lập báo cáo
1.4 Hướng phát triển đề tài:
1.4.1 Tóm tắt đề tài:
Đề tài “Khảo sát và xây dựng phần mềm quản lý nhân sự”
Đề tài được thực hiện từ việc nghiên cứu và tìm hiểu về việc quản lý hồ sơ nhân viêntrong công ty Trải qua một thời gian khảo sát, tìm hiểu, tôi quyết định xây dựng phầnmềm quản lý hồ sơ nhân viên dựa trên mô hình 3 lớp của Net Framework Phần mềm sẽ
hỗ trợ những yêu cầu:
Quản lý thông tin nhân viên
Quản lý tiền lương
Lập các báo cáo
Rút trích dữ liệu theo yêu cầu
1.4.2 Phân tích thiết kế hệ thống
1.4.2.1 Đăng nhập hệ thống theo quyền người sử dụng.
Người dùng đăng nhập vào hệ thống sẽ được phân quyền đăng nhập hệ thống
Người quản trị đăng nhập với quyền quản trị có thể thực hiện các thao tác trong
hệ thống
Trang 11 Người quản lý nhân sự, cụ thể ở đây là HRBP (Human Resources BusinessPartner) được phép truy cập vào việc chỉnh sửa, thêm mới positon, tính lương vàphân quyền hệ thống.
Nhân viên kế toán: có quyền truy cập vào phần quản lý nhân sự và tính lương
Người quản lý trực tiếp (Line Manager): quyền truy cập và xem thông tin về nhânviên của mình
1.4.2.2 Tạo user và gán quyền:
Chỉ có người quản trị có quyền tạo user và gán quyền cho user đó
1.4.2.3 Đổi password:
Sau khi đăng nhập thì người dùng có thể thay đổi mật khẩu của mình nhằm tăng cườngtính bảo mật
1.4.2.4 Quản lý nhân viên.
Người quản trị có quyền Thêm, Xóa, Sửa nhân viên
Quản lý hồ sơ nhân viên:
Quản lý chi tiết thông tin về nhân viên: mã nhân viên (employee_id), tên nhân viên(employee_name), vị trí (position_id), giới tính (gender), ngày vào công ty (date_join),ngày được thăng cấp (promote_date), người quản lý trực tiếp (LM_id), HRBP, tình trạnghôn nhân (Marital_Status), ngày sinh (birthday), email, địa chỉ thường trú (R_address),địa chỉ tạm trú (C_address), số thẻ ATM (credit_card), tên ngân hàng (bank_name)
1.4.2.5 Quản lý thông tin về đào tạo (training):
Theo dõi quá trình đào tạo cho nhân viên ở từng cấp thích hợp
Lập kế hoạch đào tạo cho từng phòng ban và vị trí cụ thể
Quản lý chi tiết trình độ chuyên môn, ngoại ngữ, tin học và các kĩ năng khác như:
kĩ năng bán hàng, kĩ năng thuyết trình, kĩ năng phỏng vấn, kĩ năng quản lý nhânviên…
Quản lý hiệu quả công việc của nhân viên
Do yêu cầu của công ty trong việc quản lý hiệu quả công việc của nhân viên, đâyđồng thời cũng là thước đó năng lực của nhân viên cũng như nắm bắt được yêucầu nguyện vọng của nhân viên trong công ty Đầu năm nhân viên sẽ đưa ra kế
Trang 12hoạch cho cả năm, sau đó sẽ cùng người quản lý trực tiếp duyệt lại kế hoạch đó.Đến khoảng giữa năm, nhân viên và người quản lý trực tiếp sẽ có dịp ngồi lại đểđánh giá việc thực hiện kế hoạch và đưa ra những phương hướng hoàn thành kếhoạch đó Vào cuối năm là thời điểm để nhân viên và người quản lý trực tiếpđánh giá hiệu quả của kế hoạch đó, những gì đạt được và không đạt được Đồngthời cũng lưu lại nhưng mong muốn của nhân viên với công ty Quá trính nàygiúp cho nhân viên làm việc hiệu quả hơn, tạo động lực nhân viên có cơ hội thăngtiến hay tạo điều kiện luân chuyển công việc và giúp cho nhân viên gắn bó hơnvới công ty.
Theo dõi quá trình thực hiện công việc của nhân viên
Quản lý position của nhân viên
Mỗi nhân viên sẽ có một vị trí trong công ty Mỗi vị trí sẽ có những thông tin liênquan đến nó Yêu cầu quản lý position của nhân viên cho phép người quản trị có thểtương tác với hệ thống thông qua chức năng quản lý thông tin về vị trí đó, ví dụ: lương
cơ bản (base pay), lương thưởng vượt chỉ tiêu, trợ cấp, phụ cấp v…v…
1.4.2.6 Yêu cầu quản lý Position
Người quản trị và HRBP có quyền:
Thêm position mới
Xóa position
Sửa position
Các thông tin liên quan đến Position bao gồm: position_id, position_name, grade,department_id, head_count
1.4.2.7 Yêu cầu quản lý Department:
Người quản trị có quyền:
Thêm Department mới
Xóa Department
Sửa Department
Các thông tin liên quan đến Department gồm: department_id, department_name,function_id
Trang 131.4.2.8 Yêu cầu quản lý Function:
Người quản trị có quyền:
Thêm Function mới
Xóa Function
Sửa Function
Các thông tin liên quan đến Function gồm: function_id, function_name
1.4.2.9 Yêu cầu quản lý và tính lương
Người quản trị có thể tương tác với hệ thống thông qua chức năng quản lý thông tin vềviệc tính lương cho nhân viên
Lập bảng thanh toán tiền lương cho toàn bộ nhân viên theo từng tháng Bảng này gồmthông tin: employee_id, các loại hệ số (hệ số lương thưởng đạt chỉ tiêu, tiền thưởng docông ty đạt kết quả kinh doanh xuất sắc, hệ số phụ cấp, mức lương tối thiểu và phí côngtác), lương căn bản, BHXH, BHYT, Unikhoe, Bảo hiểm hưu trí, thuế TNCN, lương thựcnhận
1.4.2.10 Yêu cầu về giao diện:
Giao diện hệ thống gồm:
Giao diện đăng nhập vào hệ thống
Giao diện chính sau khi đăng nhập
Quyền quản trị thực hiện mọi thao tác có trong hệ thống:
Đổi user, xóa user và phân quyềnĐổi Password
Thêm, xóa, sửa employee; tìm kiếm employee theo employee, position,department, function
Thêm, xóa, sửa positon; tìm kiếm position theo position, department,function
Thêm, xóa, sửa department; tìm kiếm theo department, functionThêm, xóa, sửa trong các chuẩn tính lương
Truy cập và xem thông tin của các báo cáo
Quyền HRBP:
Trang 14Truy cập vào hệ thống.
Đổi Password
Truy cập và thao tác form quản lý thông tin nhân viên
Truy cập và thêm, xóa, sửa position
Truy cập và thao tác form quản lý department
Truy cập và thao tác form quản lý function
Truy cập và thao tác form chuẩn tính lương
Lập báo cáo
Quyền kế toán:
Truy cập vào hệ thống
Đổi password
Truy cập form quản lý thông tin nhân viên
Truy cập form quản lý position
Truy cập form quản lý department
Truy cập form quản lý function
Truy cập form chuẩn tính lương
Xem báo cáo
CHƯƠNG 2: MÔ HÌNH 3 LỚP TRONG LẬP TRÌNH DOTNET
Trong chương này sẽ tập trung đi vào giới thiệu về mô hình 3 lớp dựa trên công nghệADO.NET và hiệu quả của nó trong việc thiết kế form
2.1 Khái niệm mô hình 3 lớp
2.1.1 Giới thiệu chung về mô hình 3 lớp:
Trang 15Trong phát triển ứng dụng, để dễ quản lý các thành phần của hệ thống, cũng như không
bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành phần có cùng chức năng lạivới nhau và phân chia trách nhiệm cho từng nhóm để công việc không bị chồng chéo vàảnh hưởng lẫn nhau Trong phát triển phần mềm, người ta cũng áp dụng cách phân chiachức năng này Bạn sẽ nghe nói đến thuật ngữ kiến trúc đa tầng/nhiều lớp, mỗi lớp sẽthực hiện một chức năng nào đó, trong đó mô hình 3 lớp là phổ biến nhất 3 lớp này làgì? Là Presentation, Business Logic, và Data Access
Hình 2.1 Mô hình 3 lớp
Các lớp này sẽ giao tiếp với nhau thông qua các dịch vụ(services) mà mỗi lớp cung cấp
để tạo nên ứng dụng, lớp này cũng không cần biết bên trong lớp kia làm gì mà chỉ cầnbiết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi
Lợi ích của mô hình 3 lớp:
Trang 16Hình 2.2 Mô hình 3 lớp Microsoft đề nghị dùng cho các hệ thống phát triển trên nền NET
Lớp giao diện – Presentation Layer
Presentation Layer làm nhiệm vụ giao tiếp với người dùng cuối để thu thập dữ liệu vàhiển thị kết quả/dữ liệu thông qua các thành phần trong giao diện người sử dụng Lớpgiao diện không thực hiện việc tính toán, kiểm tra, xử lý hay các thao tác liên quan tới cơ
sở dữ liệu
Lớp này sẽ sử dụng các dịch vụ do lớp Business Logic cung cấp Trong NET thì bạn cóthể dùng Windows Forms, ASP.NET hay Mobile Forms để hiện thực lớp này.Trong lớp này có 2 thành phần chính là User Interface Components và User InterfaceProcess Components
UI Components: là những phần tử chịu trách nhiệm thu thập và hiển thị thông tin cho
người dùng cuối Trong ASP.NET thì những thành phần này có thể là các TextBox, cácButton, DataGrid
UI Process Components: là thành phần chịu trách nhiệm quản lý các qui trình chuyển
đổi giữa các UI Components Ví dụ chịu trách nhiệm quản lý các màn hình nhập dữ liệutrong một loạt các thao tác định trước như các bước trong một Wizard
Trang 17Lớp xử lý - Business Logic Layer
Business Logic Layer thực hiện các nghiệp vụ chính của hệ thống
Lớp này sử dụng các dịch vụ do lớp Data Access cung cấp, và cung cấp các dịch vụ cholớp Presentation Lớp này cũng có thể sử dụng các dịch vụ của các nhà cung cấp thứ 3(3rd parties) để thực hiện công việc của mình(ví dụ như sử dụng dịch vụ của các cổngthanh tóan trực tuyến như VeriSign, Paypal…)
Trong lớp này có các thành phần chính là Business Components, Business Entities vàService Interface
Service Interface là giao diện lập trình mà lớp này cung cấp cho lớp Presentation sử
dụng Lớp Presentation chỉ cần biết các dịch vụ thông qua giao diện này mà không cầnphải quan tâm đến bên trong lớp này được hiện thực như thế nào
Business Entities là những thực thể mô tả những đối tượng thông tin mà hệ thống xử lý.
Trong ứng dụng chúng ta các đối tượng này là các chuyên mục(Category) và bảntin(News) Các business entities này cũng được dùng để trao đổi thông tin giữa lớpPresentation và lớp Data Access
Business Components là những thành phần chính thực hiện các dịch vụ mà Service
Interface cung cấp, chịu trách nhiệm kiểm tra các ràng buộc logic(constraints), các quitắc nghiệp vụ(business rules), sử dụng các dịch vụ bên ngoài khác để thực hiện các yêucầu của ứng dụng
Data Access Layer
Data Access Layer thực hiện các nghiệp vụ liên quan đến lưu trữ và truy xuất dữ liệu củaứng dụng
Thường lớp này sẽ sử dụng các dịch vụ của các hệ quản trị cơ sở dữ liệu như SQLServer, Oracle,… để thực hiện nhiệm vụ của mình
Trong lớp này có các thành phần chính là Data Access Logic, Data Sources, ServiveAgents)
Data Access Logic components (DALC) là thành phần chính chịu trách nhiệm
lưu trữ vào và truy xuất dữ liệu từ các nguồn dữ liệu - Data Sources như RDMBS,XML, File systems… Trong NET Các DALC này thường được hiện thực bằng
Trang 18cách sử dụng thư viện ADO.NET để giao tiếp với các hệ cơ sở dữ liệu hoặc sửdụng các O/R Mapping Frameworks để thực hiện việc ánh xạ các đối tượng trong
bộ nhớ thành dữ liệu lưu trữ trong CSDL Chúng ta sẽ tìm hiểu các thư viện O/RMapping này trong một bài viết khác
Service Agents là những thành phần trợ giúp việc truy xuất các dịch vụ bên ngòai
một cách dễ dàng và đơn giản như truy xuất các dịch vụ nội tại
2.1.2 Tương tác giữa các lớp:
Tương tác giữa người dùng và lớp giao diện: người dùng tạo ra các điều khiển
trên giao diện, thông qua các điều khiển đó để thực thi các yêu cầu Ở đây vai tròcủa lớp xử lý chính là nhận ra các yêu cầu và xử lý các yêu cầu đó
Tương tác giữa lớp giao diện và lớp dữ liệu: mỗi điều khiển giao diện là “bề mặt
hiển thị” nội dung của một nguồn dữ liệu (Data Source) là một DataTable nào đótrong lớp dữ liệu hoặc một column nào đó của DataTable Ta chỉ định điều nàybằng cách ấn định thuộc tính Data Source của điều khiển giao diện
Lớp giao diện không tác động lên cơ sở dữ liệu thật Lớp giao diện nhậncác yêu cầu từ người sử dụng, sau đó thông qua lớp xử lý sẽ tác động lênlớp dữ liệu
Lớp xử lý sẽ cung cấp các dịch vụ để giải quyết cac yêu cầu từ lớp giaodiện, sau đó lớp xử lý sẽ tác động lên lớp dữ liệu thông qua các dịch vụ màlớp dữ liệu cung cấp Từ lớp dữ liệu thì dữ liệu sẽ được tác động lên cơ sở
dữ liệu thậtLớp xử lýt được xem là cầu nối liên hệ giữa lớp giao diện và lớp dữ liệu
Tương tác giữa lớp dữ liệu và cơ sở dữ liệu nguồn: cơ sở dữ liệu nguồn sẽ được
biểu diễn bằng một DataSet thông qua chức năng của SqlDataAdapter Chức năngRollBack luôn bảo đảm tính an toàn cho cơ sở dữ liệu nguồn Sự thay đổi trong
cơ sở dữ liệu nguồn thay đổi khi người dùng đã xác nhận
2.2 Hỗ trợ Net FrameWork trong thiết kế 3 lớp:
2.2.1 Lớp giao diện – Presentation Layer
Form:
Trang 19Form có 3 loại chính là Form dạng Multiple Document Interface (MDI) còn đượcgọi là MDI Form (Form cha) cho phép trình bày các Form khác bên trong ParentForm, các form là Child Form Những Form mở rộng nằm trong Parent Form thìđược gọi là Normal Form.
MDI Form: Một Form được gọi là MDI Form thì thuộc tính IsMdiContainer có giátrị True Thuộc tính này có thể khai báo ở chế độ thiết kế hoặc trong lúc thi hành.Child Form: Form dạng con là Form mà khi nạp lên sẽ năm bên trong vùng làmviệc của MDI Form Để Form trở thành Child Form thì phải khai báo thuộc tínhMdiParent ứng với MDI Form trong Project
Normal Form: Một Form mở ra không phải là MDI Form hay Child Form thì gọi làForm thường
Một số thuộc tính hay dùng của Form:
Thuộc tính Ý nghĩa
Name Dùng để nhận dạng duy nhất của đối tượng Form trong Project,
mỗi Form phải có giá trị hợp lệ trong thuộc tính Name, khôngcho phép có hai Form có cùng một tên trong một Project
Text Dùng để trình bày chuỗi trong thanh tiêu đề của Form, có thể
khai báo trong chế độ thiết kế hoặc giá trị trong khi thi hành
Show Icon Mỗi Form nạp lên đều có biểu tượng mặc định ở góc trên bên
tráiOpacity Cho phép chúng ta làm trong suốt bề mặt của Form tùy thuộc
vào giá trị phần trăm khai báo trong thuộc tính nàyIcon Cho phép chúng ta chỉ định tập tin hình ảnh để thể hiện trong
phần biểu tượng của FormStartPosition Chỉ định vị trí hiển thị của Form trên màn hình nếu sử dụng
phương thức ShowDialog hay Show ứng với Form loại Mdi hayNormal
IsMdiContainer Giá trị của thuộc tính này là false tương đương với Form bình
thường, nếu gán là true thì khi Form nạp lên màn hình sẽ là MDIForm
Trang 20Các điều khiển trên Form như label, button, textbox, combobox, listbox, checkbox… đều cómột số thuộc tính chung:
Thuộc tính Ý nghĩa
BackColor Màu nền của điều khiển
ForeColor Màu chữ của chuỗi trình bày trên điều khiển
Text Chuỗi trình bày trên điều khiển
Visible Thuộc tính che giấu hay hiển thị điều khiển
Name Tên của điều khiển
Locked Khóa không cho di chuyển trên Form
Các biến cố của Form:
Biến cố Ý nghĩa
FormClosed Biến cố này sẽ xảy ra khi Form đã đóng, bằng cách sử dụng biến
cố này ta có thể in ra chuỗi lý do tại sao đóng FormFormClosing Biến cố này xảy ra khi Form đang đóng, ta có thể sử dụng biến cố
này để xác nhận với người sử dụng chắc chắn đóng Form haykhông
Load Xảy ra trước khi Form hiển thị đầu tiên, dùng để khai báo thực thi
hay điền dữ liệu vào các điều khiển trên FormClick Xảy ra khi người sử dụng nhấn chuột trên vùng làm việc của
FormMouseMove Xảy ra khi người sử dụng di chuyển chuột xuống vùng điều khiển
rồi nhả ra
MouseDown Xảy ra khi người sử dụng di chuyển chuột xuống vùng điều khiển.Move Xảy ra khi di chuyển điều khiển bằng mã hay người sử dụng
Resize Xảy ra khi kích thước của điều khiển thay đổi bằng mã chương
trình hay bởi người sử dụng
Các phương thức của Form:
Biến cố Ý nghĩa
Close Dùng để đóng Form, nếu Form được mở là duy nhất thì chương
trình sẽ tự động thoát
Hide Dùng để che giấu Form đang mở
Active Dùng để kích hoạt Form, giả sử chúng ta có nhiều Child Form
Trang 21đang mở, chúng ta có thể kích hoạt chúng bằng cách sử dụngphương thức này
Show Cho phép chúng ta nạp Form lên màn hình
Show Dialog Dùng để nạp Form lên màn hình dạng Modal (không can thiệp
được vào Form trước đó), nếu Form nạp lên là Child Form thìphương thức này sẽ phát sinh lỗi
Textbox: Nhóm điều khiển TextBox gồm hai điều khiển chính là TextBox và
BorderStyle Kiểu đường viền của điều khiển
Enabled Vô hiệu hóa hay cho phép sử dụng
Multiline Giá trị True cho nhập nhiều dòng
ReadOnly Giá trị True cho phép chỉ đọc giá trị
Biến cố của TextBox:
MouseClick Xảy ra khi người sử dụng click trên điều khiển TextBox
MouseDoubleClick Xảy ra khi người sử dụng click hai lần liên tiếp trên điều khiển
TextBox
VisibleChanged Xảy ra khi thuộc tính Visible thay đổi giá trị từ True sang False
hay ngược lại
Label: Nhóm điều khiển Lable gồm 2 điều khiển chính là Lable dùng để trình
bày dữ liệu và LinkLable dùng để trình bày liên kết Internet
oThuộc tính của Lable:
Thuộc tính Ý nghĩa
BorderStyle Kiểu đường viền của điều khiển
Trang 22Font Kiểu và kích thước của chữ trình bày trên điều khiển.
TextAlign Canh lề chuỗi trình bày trên điều khiển
FlatStyle Kiểu đường viền của Button
Image Chọn Image trong phần Resouce để trình bày hình trên điều khiển
Button
Text Chuỗi trình bày ứng với diễn giải
TextAlign Canh lề chuỗi diễn giải trên diều khiển
○ Biến cố của Button:
MouseClick Xảy ra khi người sử dụng Click trên điều khiển Button bằng chuột.Click Xảy ra khi người sử dụng Click vào điều khiển Button
CheckedChanged Xảy ra khi người sử dụng Click vào điều khiển Button
VisibleChanged Xảy ra khi thuộc tính Visible thay đổi giá trị từ True sang False
DataGridview:
Điều khiển DataGridView dùng để trình bày dữ liệu có trong đối tượng DataSet,DataTable, DataView dưới nhiều hình thức khác nhau Ta có thể định nghĩa các cộttrên điều khiển DataGridView và thêm các điều khiển như: Button, TextBox,ComboBox, CheckBox, Image, Link…
Thuộc tính của DataGridView:
Thuộc tính Ý nghĩa
DataSource Để sử dụng thuộc tính DataSource ta khai báo đoạn chương
trình gọi phương thức FillDataSet trong lớp Database vàđiền đối tượng DataSet vào điều khiển DataGridView
CurrentRow Lấy mẫu tin đang chọn trên DataGridView, trả về đối tượng
DataGridViewRow chứa đựng mẫu tin đang chọnCurrentCell Lấy giá trị trên ô đang chọn Ngoài ra, ta cũng có thể biết
Trang 23được số lượng cột và hàng dữ liệu đang trình bày trên điềukhiển DataGridView bằng cách sử dụng thuộc tínhColumn.Count và Row.Count.
DefaultCellStyle Định dạng ô trong điều khiển DataGridView
Biến cố của DataGridView:
SelectionChanged Xảy ra khi người sử dụng di chuyển con nháy chuột
thuộc hàng dữ liệu đang trình bày trên điều khiểnDataGridView
DoubleClick Xảy ra khi người sử dụng DoubleClick trên điều
khiển DataGridViewMouseClick Xảy ra khi người sử dụng click trên điều khiển
2.2.2 Lớp dữ liệu – Data Access Layer
Connection: dùng để kết nối CSDL SQL Server.
Đối tượng SQLconnection thiết lập một kết nối (connection) với nguồn dữ liệu Một đốitượng Connection sẽ nằm giữa một dữ liệu nguồn và một DataAdapter
Đối tượng Connection cũng giữ vai trò hữu ích trong việc tạo một giao dịch Các giaodịch sẽ được lưu trữ trong các đối tướng Transaction, và các lớp Transaction đều có khảnăng xử lý các phiên giao dịch
Thuộc tính của đối tượng Connection:
DataSource Vị trí của tên tập tin của dữ liệu nguồn
DataBase Tên của cơ sở dữ liệu hiện hành
ConnectionString Tượng trưng cho chuỗi kết nối
ConnectionTimeOut Cho biết thời gian chờ trong khi đang kết nối (tính bằng
Trang 24Dispose Giải phóng bất cứ nguồn lực nào được sử dụng bởi đối
tượng ConnectionOpen Cho mở một kết nối mới về dữ liệu nguồn
ToString Trả về một chuỗi tượng trưng cho Connection
Command Text Có thể là một câu lệnh SQL, tên một store procedure hoặc
tên bảng dữ liệu tùy vào giá trị của Command TypeCommandTimeOut Thời gian chờ cho thi hành Command (tính bằng giây)
CommandType Thuộc tính này cho biết làm thế nào phân biệt thuộc tính
CommandTextConnection Đây là Connection nối về dữ liệu nguồn
Parameters Thuộc tính này cho tìm lại collection (SqlParameter
Collection ) các thông số của thuộc tính CommandText
Các hàm sự kiện của đối tượng Command:
Hàm sự kiện Mô tả
ExecuteNonQuery Cho thi hành một câu lệnh SQL đối với một Connection và
trả về số hàng dữ liệu bị ảnh hưởng (ví dụ như hàm Delete)ExecuteReader Cho thi hành một câu lệnh SQL trả về những hàng dữ liệu
(ví dụ như hàm Select)ExecuteScalar Cho thi hành một câu lệnh SQL và trả về cột đầu tiên của
Data Adapter
SelectCommandInsertCommandDeleteCommandUpdateCommand
Command
Trang 25hàng dữ liệu đầu tiên của kết quả được trả về (ví dụ như hàmCount…)
ExecuteXmlReader Tương tự như hàm ExecuteReader, nhưng trả về các hàng
dữ liệu dưới dạng XML
DataSet:
Đối tượng DataSet là thành phần chính của kiến trúc không kết nối CSDL, đượcdùng để nắm giữ dữ liệu của mọi cơ sở dữ liệu và cho phép chúng thay đổi dữ liệubên trong đối tượng này để sau đó cập nhật trở lại cơ sở dữ liệu nguồn bằng phươngthức Update của đối tượng DataAdapter
Các thuộc tính của đối tượng DataSet:
Thuộc tính Mô tả
DataSetName Cho phép gán hay lấy ra tên của đối tượng DataSet hiện hành
Table Trả về tập bao gồm danh sách các đối tượng DataTable trong
DataSetCount Trả về đối tượng DataTable đang tồn tại trong đối tượng
tên đối tượng DataTable chỉ địnhClear Cho phép loại bỏ tất cả các đối tượng DataTable,
DataRelation đang tồn tại trong đối tượng DataSet
GetChanges Trả về đối tượng DataSet gồm danh sách các đối tượng
DataTable chứa đựng những mẫu tin có thay đổi, thêm mới
Write XML Cho phép ghi dữ liệu trong đối tượng DataSet ra tập tin
XMLRead XML Cho phép đọc nội dung tập tin XML và điền vào đối tượng
DataSet
Trang 26trong đối tượng DataTableColumns Trả về tập đối tượng DataColumn bao gồm danh sách cột dữ liệu
của bảng đang chứa trong đối tượng DataTableDataSet Trả về đối tượng DataSet mà đối tượng DataTable trực thuộc
Các phương thức của đối tượng DataTable:
Phương thức Ý nghĩa
GetChanges Trả về đối tượng DataTable gồm danh sách các đối tượng
DataTable chứa đựng những mẫu tin có thay đổi thêm mớiAcceptChanges Dùng để chấp nhận sự thay đổi dữ liệu do người dùng thực hiện
RejectChanges Dùng để từ chối thay đổi dữ liệu trong các đối tượng DataTalbe
do người dùng thực hiệnClear Cho phép loại bỏ tất cả các đối tượng DataRow, DatatColumn
đang tồn tại trong đối tượng DataTableWrite XML Cho phép ghi dữ liệu trong đối tượng DataTable ra tập tin XML
Read XML Cho phép đọc nội dung tập tin XML và điền vào đối tượng
DataTalbe
DataAdapter:
Đối tượng DataAdapter làm việc với DataSet để cung cấp cơ chế truy cập dữ liệukhông giữ kết nối, được xe như bộ đọc dữ liệu từ cơ sở dữ liệu nguồn và điền chúngvào đối tượng DataSet hay DataTable
Đối tượng DataAdapter giữ một vai trò quan trọng trong kiến trúc ADO.NET, nónằm giữa một dữ liệu nguồn và một DataSet và chuyển giao dữ liệu từ dữ liệu nguồnqua DataSet và ngược lại
Trang 27 Các thuộc tính của đối tượng DataAdapter:
Thuộc tính Ý nghĩa
SelectCommand Tượng trưng cho một lệnh Select hoặc Stored Procedure dùng
chọn ra những mẫu tin từ dữ liệu nguồn sử dụng hàm Fill củaDataAdapter
InsertCommand Tượng trưng cho một lệnh Insert hay một Store Procedure
dùng chèn mẫu tin mới vào nguồn dữ liệu
UpdateCommand Tượng trưng cho lệnh Update hoặc Store Procedure dùng nhật
tu các mẫu tin trên một dữ liệu nguồn sử dụng hàm Update củaDataAdapter
DeleteCommand Thuộc tính read-write này trả về hoặc đặt để lệnh Delete hoặc
Store Procedure dùng xóa bỏ các mẫu tin khỏi nguồn dữ liệu
TableMappings Tượng trưng cho một Collection những ánh xạ giữa bảng dữ
liệu hiện thời và một đối tượng Data Table
Các hàm sự kiện của đối tượng DataAdapter:
Thuộc tính Ý nghĩa
Fill Cho điền các mẫu tin dữ liệu từ DataAdapter lên một đối tượng
DataSet
Update Cho lưu trữ dữ liệu và mọi thay đổi trên DataSet vào cơ sở dữ
liệu nguồn Đây có nghĩa là đối tượng Command được gắn liềnvới InsertCommand, UpdateCommand và DeleteCommand sẽđược thi hành
2.3 Ứng dụng xây dựng Form minh họa:
Qua phần cơ sở lý thuyết về mô hình 3 lớp trong lập trình Net Framework ta thấy đượcnhững lợi ích của nó như: dễ lập trình (mã lệnh rất ít); dễ trong việc quản lý, bảo trì; khảnăng tái sử dụng; chia sẽ trách nhiệm; giảm sự gắn kết giữa các thực thể phần mềm Để
có một cái nhìn cụ thể hơn trong xây dựng và cách vận hành Form quản lý theo mô hình
3 lớp, em đã tến hành thiết kế Form Quản Lý Nhân Viên trong phần mềm ứng dụng để
mô tả
2.3.1 Thiết kế tầng giao diện của Form Quản Lý Nhân Viên (EMPLOYEEFORM)
Trang 28Công việc đầu tiên là phải xây dựng tầng giao diện nơi tương tác trực tiếp với ngườidung cuối để phục vụ cho các yêu cầu tác nghiệp.
Trong EPLOYEE FORM gồm có:
Một DataGridView: kéo từ ToolBox thả vào giao diện, đặt tên làdgvemployee Dgvemp gồm các cột: employee_id, fullname, position_id,payroll_id company, gender, date_join, promot_date, lm_id, hrbp_id
Chức năng của DataGridView sẽ hiển thị toàn bộ những thong tin liênquan đến nhân viên có trong cơ sở dữ liệu khi Form được Load
Hình 2.3: Giao diện EMPLOYEE FORM
Để dễ dàng trong việc tìm kiếm nhân viên, form cung cấp cho người dùngnhiều cách tìm kiếm Tìm kiếm theo nhân viên (employee id hoặcemployee name), tìm kiếm theo chức vụ (position id hoặc position name),
dgvemp
cbsearchlbtaddbtsearch
lbteditlbtdel
Trang 29tìm kiếm theo bộ phận (department id hoặc department name) hoặc tìmkiếm theo function (function id hoặc function name).
B1: Một combobox tên cbsearch cho phép tìm kiếm theo employee,position, department, function
B2: Nếu chọn tìm kiếm theo tên sẽ hiện lên một combobox tên cbsempcho phép chọn theo employee id hay employee name
B3: Nếu chọn tìm kiếm theo employee id sẽ hiện lên một comboboxtên cbsempid Trong combobox này có thể nhập employee id hoặcchọn một giá trị có trong combobox
B3: Nếu chọn tìm kiếm theo employee name sẽ hiện lên mộtcombobox tên cbsempna Trong combobox này có thể nhậpemployee name hoặc chọn một giá trị có trong combobox
B2: Nếu chọn tìm kiếm theo position sẽ hiện lên một combobox têncbspos cho phép chọn theo position id hay position name
B3: Nếu chọn tìm kiếm theo position id sẽ hiện lên một comboboxtên cbsposid Trong combobox này có thể nhập position id hoặcchọn một giá trị có trong combobox
B3: Nếu chọn tìm kiếm theo position name sẽ hiện lên mộtcombobox tên cbsposna Trong combobox này có thể nhập positionname hoặc chọn một giá trị có trong combobox
B2: Nếu chọn tìm kiếm theo department sẽ hiện lên một combobox têncbsdep cho phép chọn theo department id hay department name
B3: Nếu chọn tìm kiếm theo department id sẽ hiện lên mộtcombobox tên cbsdepid Trong combobox này có thể nhậpdepartment id hoặc chọn một giá trị có trong combobox
B3: Nếu chọn tìm kiếm theo department name sẽ hiện lên mộtcombobox tên cbsdepna Trong combobox này có thể nhậpdepartment name hoặc chọn một giá trị có trong combobox
Trang 30B2: Nếu chọn tìm kiếm theo function sẽ hiện lên một combobox têncbsfun cho phép chọn theo function id hay function name.
B3: Nếu chọn tìm kiếm theo function id sẽ hiện lên một comboboxtên cbsfunid Trong combobox này có thể nhập function id hoặcchọn một giá trị có trong combobox
B3: Nếu chọn tìm kiếm theo function name sẽ hiện lên mộtcombobox tên cbsfunna Trong combobox này có thể nhập functionname hoặc chọn một giá trị có trong combobox
Trong form còn có các linklabel dẫn tới các form cho phép thêm, sửa mộtnhân viên vào cơ sở dữ liệu
Nếu chọn xóa một nhân viên sẽ hiện lên một textbox cho người dùng nhậpvào employee id của nhân viên cần xóa 2 button Summit và Cancel đểchấp nhận hay thoát khỏi thao tác xóa nhân viên đó
Nếu chọn trong cbsearch một giá trị thì form sẽ hiện ra giá trị tương ứng cho công cụ tìmkiếm
Trang 31Hình 2.4 Giao diện EmployeeForm khi click chọn chọn giá trị trong cbsearch
Chức năng: Quản lý thông tin và tìm kiếm nhân viên trong công ty
Mô tả giao diện:
Khi form hiện lên thì tất cả thông tin của nhân viên trong công ty sẽ hiển thị trongdgvemp
Lbtadd: Khi click vào linkbutton này thì sẽ chuyển sang form ADDEMPLOYEE
Lbtedit: Khi click vào linkbutton này thì sẽ chuyển sang form EDITEMPLOYEE
Lbtdel: Khi click vào linkbutton này thì hiện lên textbox cho người dùng nhập vào id của nhân viên cần xóa và các điều khiển liên quan
- Txtdelemp: nhập vào employee_id của nhân viên cần xóa
- Btsmdel: chấp nhận việc xóa nhân viên
- Btccdel: hủy bỏ việc xóa nhân viên
btsmde
cbsdepdecbspos
cbsempcbsdep
cbsfun
cbsposde
cbsempde
txtvalue
txtdelemp
cbsfunde
Trang 32 Cbsearch: Khi click vào cbsearch sẽ hiện ra cho người dùng 4 cách tìm Người dùng chọn một trong 4 cách tìm đó sẽ hiện ra cho người dùng những cách tìm tương ứng với yêu cầu người dùng.
- Cbsemp: hiện lên khi người dùng chọn cbsearch là employee Combobox cho chọn search theo employee_id hay employee_name
- Cbsempde: combobox hiện lên khi người dùng chọn giá trị trong cbsemp Tùy vào giá trị người dùng chọn trong cbsemp mà giá trị tương ứng
employee_id hay employee_name sẽ được đổ vào trong combobox này
- Cbspos: hiện lên khi người dùng chọn cbsearch là position Combobox chochọn search theo position_id hay position_name
- Cbsposde: combobox hiện lên khi người dùng chọn giá trị trong cbspos Tùy vào giá trị người dùng chọn trong cbspos mà giá trị tương ứng
position_id hay position_name sẽ được đổ vào trong combobox này
- Cbsdep: hiện lên khi người dùng chọn cbsearch là department Combobox cho chọn search theo department_id hay department_name
- Cbsdepde: combobox hiện lên khi người dùng chọn giá trị trong cbsdep Tùy vào giá trị người dùng chọn trong cbsdep mà giá trị tương ứng
department_id hay department_name sẽ được đổ vào trong combobox này
- Cbsfun: hiện lên khi người dùng chọn cbsearch là function Cbsfun cho chọn search theo function_id hay function_name
- Cbsfunde: combobox hiện lên khi người dùng chọn giá trị trong cbsfun Tùy vào giá trị người dùng chọn trong cbsfun mà giá trị tương ứng
function_id hay function_name sẽ được đổ vào trong combobox này
- Txtvalue: textbox sẽ hiện giá trị cuối cùng sau khi người dùng chọn search theo giá trị gì
- Btsearch: tiến hành search theo giá trị trong txtvalue
Trang 33Trên DataGridview này người dùng có thể chọn một dòng dữ liệu, khi chọn linklabelthêm, xóa nhân viên thì dữ liệu trong dòng đó sẽ hiện lên tương ứng với các button trongform mới.
Người dùng cũng có thể thao tác trên dgvemp nhưng mọi sự thay đổi trên dgvemp chỉthực sự thay đổi khi người dùng click vào nút Summit (trường hợp xóa nhân viên) Việcthay đổi trên dgvemp lúc này chỉ ảnh hưởng lên các DataTable và sẽ không thay đổi gìnếu đóng chương trình
2.3.2 Thiết kế tầng dữ liệu
Trong form sử dụng DataTable:
DataTable Employee gắn với điều khiển dgvemp được tạo bởi DataAdapter daemp:
SELECT employee_id, fullname, gender, company, date_join,
service_years, promote_date, yearsin_wl, position_id, hrbp_id,lm_id
FROM EMPLOYEE
DataTable Position sử dụng trong cbsposde tạo bởi:
DataAdapter daposid nếu cbspos chọn position_id:
SELECT Position_idFROM PositionDataAdapter daposna nếu cbspos chọn position_name
SELECT Position_nameFROM Position
DataTable Department sử dụng trong cbsdepde tạo bởi
DataAdapter dadepid nếu cbsdep chọn Department _id:
SELECT Department_idFROM DepartmentDataAdapter dadepna nếu cbsdep chọn Department _name
SELECT Department _nameFROM Department
Trang 34 DataTable Function sử dụng trong cbsfunde tạo bởi
DataAdapter dafunid nếu cbsfun chọn Function _id:
SELECT Function _idFROM FunctionDataAdapter dafunna nếu cbsfun chọn Function _name
SELECT Function _nameFROM Function
Tương tự với search theo position, department, function
private void btsposid_Click(object sender, EventArgs e)
Trang 35bộ thông tin về nhân viên cũng được hiện lên.
Trên form có công cụ hỗ trợ tìm kiếm đa năng, cho phép người dùng tìm kiếmtheo nhiều cách khác nhau Vì số lượng department, position, employee tại công
ty khá lớn nên công cụ hỗ trợ tìm kiếm này càng thêm hữu ích cho người sửdụng
Khi Load form, sẽ có khung cho người dùng chọn cách tìm kiếm (tìm kiếm theodepartment, position, employee) Khi người dùng đã chọn cách tìm kiếm, form sẽhiện lên một khung khác cho người dùng chọn theo từng đối tượng của cách tìmkiếm đó Ví dụ nếu chọn cách tìm kiếm theo department, thì sẽ có 2 đối tượng đểtìm kiếm là tìm kiếm theo department id và department name Sau khi chọn đốitượng tìm kiếm, form sẽ hiện lên khung cho người dùng nhập vào thông tin hoặcchọn thông tin của đối tượng tìm kiếm
Việc nhập hay chỉnh sửa thông tin trong form chưa ảnh hưởng đến cơ sở dữ liệu.Khi muốn chỉnh sửa hay thêm một nhân viên bạn click vào dòng link màu xanhdương Một form khác sẽ hiện lên với các khung tương ứng với thông tin nhân
Trang 36viên trong form trước để người dùng có thể thêm nhân viên mới hay chỉnh sửanhân viên cũ Trường hợp chỉnh sửa nhân viên, dữ liệu của nhân viên được chọn
sẽ hiển thị lên form mới và người dùng chỉ cần điều chỉnh những thông tin cầnthay đổi Sau khi thao tác trên form mới xong, để thấy được những thay đổi trong
cơ sở dữ liệu, người dùng sẽ trở về form cũ và nhấn nút Refresh
Khi người dùng nhấn vào link Delete Employee sẽ xuất hiện một textbox.TextBox này cho phép người dùng nhập employee id của nhân viên cần xóa
Nhấn nút Summit sẽ tiến hành xóa nhân viên trong cơ sở dữ liệu Nhấn nútCancel sẽ thoát khỏi thao tác xóa nhân viên
Dưới sự hỗ trợ của mô hình 3 lớp, quá trình xây dựng form ứng dụng quản lý lý
đã đáp ứng đầy đủ các yêu cầu chức năng, mã lệnh phải viết trong form là rất ít
và dễ quản lý Hơn nữa tính tin cậy và hiệu quả của form khi vận hành là rất cao,khả năng xảy ra lỗi rất thấp và quá trình xây dựng form lại dễ thực hiện, do cáclớp của form chủ yếu được thiết kế dựa trên các lớp hỗ trợ sẵn của ADO.NET Do
đó tạo điều kiện thuận lợi trong việc bảo trì và phát triển hệ thống khi cần thayđổi nhu cầu quản lý
Trong các chương tiếp theo, đề tài sẽ trình bày chi tiết cách thiết kế của các formcòn lại trong toàn bộ phần mềm
Chương 3: PHÂN TÍCH VÀ THIẾT KẾ CƠ SỞ DỮ LIỆU
Chương này tập trung vào việc phân tích và thiết kế cơ sở dữ liệu theo hệ thống Mục
đích chính là thiết kế tầng dữ liệu trong các form
3.1 Mô hình quan niệm dữ liệu
42
SALARYSTANDARDFUNCTION
DEPARMENT
EMPLOYEE
DETAIL
CóGi
ữ
Thuộ
Trang 37Hình 3.1 Mô hình quan niệm dữ liệu
Mối quan hệ giữa các thực thể
Mỗi employee có một Position, mỗi Position phải thuộc về ít nhất một Employee
Mỗi nhân viên trong công có một Employee Detail, và một Employee Detail chỉ thuộc
EMPLOYEE (Employee_id, fullname, company, position_id, payroll_id, gender,
date_join, promote_date, LM_id, HRBP_id)
DETAIL_EMP (Employee_id, marital_status, birthday, language, R_address,
C_address, creditcard_number, bank_name)
Trang 38POSITION (Position_id, position_name, location, grade, department_id, headcount, repot_to_pos)
DEPARTMENT (Department_id, Department_name, dn_detail, function_id)
FUNCTION (Function_id, function_name)
SALARY_STANDARD (Grade, BasePay, VariablePay, GoalShare, GPSP)
3.3 Mô tả chi tiết các quan hệ
EMPLOYEE: Chứa thông tin về nhân viên
Stt Tên Thuộc Tính Diễn Giải Kiểu dữ liệu Ràng buộc
1 Employee_id Mã nhân viên nchar(10) Khóa chính
2 Fullname Tính nhân viên nvarchar(50)
5 Payroll_id Mã tính lương nchar(5)
7 date_join Ngày vào công ty Datetime
8 promote_date
Ngày chuyển sang
vị trí cao hơn Datetime
Id người quản lý
DETAIL_EMP: Chứa thông tin chi tiết về nhân viên
Trang 39Stt Tên Thuộc Tính Diễn Giải Kiểu dữ liệu Ràng buộc
2 MARITAL_STATUS Tình trạng hôn nhân nchar(10)
6 R_ADDRESS Địa chỉ thường trú nvarchar(50)
7 C_ADDRESS Địa chỉ tạm trú nvarchar(50)
8 CREDITCARD_NB Id của thẻ ATM int
Tên của ngân hàng
POSITION: chứa tất cả các vị trí có trong công ty
Stt Tên Thuộc Tính Diễn Giải Kiểu dữ liệu Ràng buộc
2 POSITION_NAME Tên vị trí nvarchar(50)
5 DEPARTMENT_ID Id của bộ phận nchar(5)
Trang 407 REPORT_TO_POS
Báo cáo tới position
DEPARTMENT: chứa tất cả các bộ phận trong công ty
Stt Tên Thuộc Tính Diễn Giải Kiểu dữ liệu Ràng buộc
2 DEPARMENT_NAME Tên của bộ phận nvarchar(50)
Tên đầy đủ của bộ
4 FUNCTION_ID Id của phòng ban char(4)
FUNCTION: chứa tất cả các phòng ban trong công ty
Stt Tên Thuộc Tính Diễn Giải Kiểu dữ liệu Ràng buộc
2 FUNCTION_NAME Tên của phòng ban nvarchar(50)
SALARY_STANDARD: chứa các thông tin về lương cho từng cấp bậc
Stt Tên Thuộc Tính Diễn Giải Kiểu dữ liệu
Ràng buộc