Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 84 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
84
Dung lượng
2,44 MB
Nội dung
LỜI CẢM ƠN Qua trình học tập rèn luyện đại học Thương mại, với giảng dạy thầy cô trường Đại học Thương Mại nói chung thầy khoa Hệ thống thơng tin kinh tế Thương mại điện tử nói riêng em có kiến thức đại cương kiến thức chuyên ngành chuyên ngành quản trị hệ thống thông tin Trong thời gian thực tập Công ty Cổ phần Phần mềm Bravo em có hội vận dụng kiến thức học vào thực tế doanh nghiệp đồng thời tích lũy kinh nghiệm cho thân Từ đó, em hồn thành khóa luận tốt nghiệp Để hồn thiện để tài này, em xin gửi lời cảm ơn chân thành đến cô Ths.Đỗ Thị Thu Hiền tận tình giúp đỡ tạo điều kiện tốt cho em trình thực đề tài Đồng thời em xin chân thành cảm ơn anh/chị nhân viên công ty Cổ phần Phần mềm Bravo nhiệt tình giúp đỡ em trình tìm hiểu cơng ty giúp cho em có định hướng trong cơng việc hồn thành khóa luận Do hạn chế lực thời gian nên khóa luận em nhiều thiếu sót Kính mong thầy góp ý để khóa luận em hoàn thiện Em xin chân thành cảm ơn! MỤC LỤC LỜI CẢM ƠN i MỤC LỤC ii DANH MỤC TỪ VIẾT TẮT vi PHẦN MỞ ĐẦU 1 TẦM QUAN TRỌNG, Ý NGHĨA CỦA VẤN ĐỀ NGHIÊN CỨU MỤC TIÊU VÀ NHIỆM VỤ NGHIÊN CỨU ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU PHƯƠNG PHÁP NGHIÊN CỨU KẾT CẤU KHÓA LUẬN Chương CƠ SỞ LÝ LUẬN CỦA VẤN ĐỀ NGHIÊN CỨU 1.1 NHỮNG KHÁI NIỆM CƠ BẢN 1.1.1 Khái niệm phần mềm 1.1.2 Khái niệm phần mềm quản lý triển khai hợp đồng .5 1.1.3 SQL Server, ngôn ngữ SQL 1.1.4 Visual studio, ngôn ngữ lập trình C# 1.2 MỘT SỐ LÝ THUYẾT VỀ VẤN ĐỀ NGHIÊN CỨU 1.2.1 Quy trình xây dựng phần mềm 1.2.2 Phân loại phần mềm 1.2.3 Một số lý thuyết Sql server 1.2.4 Một số lý thuyết C# 10 1.2.5 Tìm hiểu xây dựng phần mềm sử dụng ngơn ngữ lập trình C# hệ quản trị CSDL SQL Server 12 1.3 TỔNG QUAN TÌNH HÌNH NGHIÊN CỨU .12 1.3.1 Tình hình nghiên cứu nước .12 1.3.2 Tình hình nghiên cứu giới 13 Chương 2: KẾT QUẢ PHÂN TÍCH, ĐÁNH GIÁ THỰC TRẠNG PHẦN MỀM QUẢN LÝ TRIỂN KHAI HỢP ĐỒNG TẠI CÔNG TY CỔ PHẦN PHẦN MỀM BRAVO 15 2.1 TỔNG QUAN VỀ CÔNG TY CỔ PHẦN PHẦN MỀM BRAVO 15 2.1.1 Quá trình thành lập 15 2.1.2 Cơ cấu tổ chức 16 2.1.3 Lĩnh vực hoạt động 17 2.1.4 Kết hoạt động kinh doanh năm gần 18 2.2 THỰC TRẠNG PHẦN MỀM QUẢN LÝ TRIỂN KHAI HỢP ĐỒNG VỚI KHÁCH HÀNG TẠI CÔNG TY CỔ PHẦN PHẦN MỀM BRAVO 18 2.3 ĐÁNH GIÁ THỰC TRẠNG CỦA VẤN ĐỀ NGHIÊN CỨU 28 2.3.1 Ưu điểm 28 2.3.2 Nhược điểm 29 CHƯƠNG 3: ĐỊNH HƯỚNG PHÁT TRIỂN VÀ ĐỀ XUẤT VẤN ĐỀ NGHIÊN CỨU 30 3.1 ĐỊNH HƯỚNG PHÁT TRIỂN CỦA VẤN ĐỀ NGHIÊN CỨU 30 3.2 GIẢI PHÁP XÂY DỰNG PHẦN MỀM QUẢN LÝ HỢP ĐỒNG CHO CÔNG TY CỔ PHẦN PHẦN MỀM BRAVO .30 3.2.1 Đặc tả yêu cầu phần mềm 30 3.2.2 Phân tích thiết kế phần mềm .32 3.2.3 Một số đề xuất kiến nghị 43 KẾT LUẬN .44 TÀI LIỆU THAM KHẢO 45 PHỤ LỤC DANH MỤC BẢNG BIỂU, SƠ ĐỒ, HÌNH VẼ DANH MỤC BẢNG Bảng 2.1 Kết kinh doanh Công ty Cổ phần Phần mềm Bravo chi nhánh Hà Nội giai đoạn 2014-2016 (Đơn vị: 1đ) 18 Bảng 2.2: Kết điều tra mức độ đáp ứng chung phần mềm .20 Biểu đồ 2.1 : Đánh giá chung mức độ đáp ứng phần mềm 20 Biểu đồ 3.1 Biểu đồ Usecase tổng quát .33 Biểu đồ 3.2 Biểu đồ Usecase chi tiết chức “Quản lý triển khai” .33 Biểu đồ 3.3 Biểu đồ lớp .35 Biểu đồ 3.4 Biểu đồ chức phân bổ hợp đồng 35 Biểu đồ 3.5 Biểu đồ hoạt động chức lập báo cáo .36 Biểu đồ 3.7 Biểu đồ trạng thái lớp Khách hàng, chức thêm khách hàng 36 Biểu đồ 3.8 Biểu đồ triển khai 37 Hình 3.10 Màn hình Báo cáo tình trạng triển khai theo hợp đồng 43 Biểu đồ 3.9 Biểu đồ Usecase chi tiết chức “Quản lý toán” 48 Biểu đồ 3.10 Biểu đồ Usecase chi tiết chức “Quản lý sản phẩm” 49 Biểu đồ 3.11 Biểu đồ Usecase chi tiết chức “Quản lý phân bổ hợp đồng” 50 Biểu đồ 3.12 Biểu đồ Usecase chi tiết chức “Quản lý Phòng ban_Nhân viên” .51 Biểu đồ 3.12 Biểu đồ Usecase chi tiết chức “Báo cáo” .52 Biểu đồ 3.13 Biểu đồ chức tìm kiếm hóa đơn tốn khách hàng .53 Biểu đồ 3.14 Biểu đồ hoạt động chức quản lý triển khai 53 Biểu đồ 3.15 Biểu đồ trạng thái lớp Khách hàng, chức tìm kiếm khách hàng 54 Hình 3.20 Màn hình “Báo cáo tình trạng triển khai theo hợp đồng” 59 DANH MỤC HÌNH Hình 1.1 Quy trình xây dựng phần mềm Hình 2.1: Sơ đồ cấu trúc tổ chức Công ty cổ phần phẩn mềm Bravo 16 Hình 2.2: Quy trình nhận hợp đồng phân bổ hợp đồng 23 Hình 2.3 Quy trình khảo sát lập phương án triển khai 24 Hình2.4 Quy trình sửa đổi 25 Hình 2.5 Sơ đồ quy trình Cài đặt, hướng dẫn sử dụng hỗ trợ .26 Hình 2.6 Quy trình chuyển bảo hành 27 Hình 3.1 Mơ hình quan hệ liệu SQL Server 38 Hình 3.2 Giao diện hình 38 Hình 3.3 Màn hình “Nhân viên” 39 Hình 3.4 Màn hình “Hợp Đồng” .39 Hình 3.5 Màn hình “Chi Tiết Phân Bổ Hợp Đồng” 40 Hình 3.6 Màn hình “Hóa Đơn Thanh Tốn” 40 Hình 3.7 Màn hình “Báo Cáo” 41 Hình 3.8 Màn hình “Báo cáo công việc theo nhân viên” 41 Hình 3.9 Màn hình Báo cáo cơng việc theo nhân viên .42 Hình 3.10 Màn hình Báo cáo tình trạng triển khai theo hợp đồng 43 Hình 3.11 Màn hình “Khách Hàng” 54 Hình 3.12 Màn hình “Phòng Ban” 55 Hình 3.13 Màn hình “Loại Khách Hàng” 55 Hình 3.14 Màn hình “Loại Cơng Việc” .56 Hình 3.15 Màn hình “Tài Liệu” 56 Hình 3.16 Màn hình “Sản Phẩm” 57 Hình 3.17 Màn hình “Cơng Việc” 57 Hình 3.18 Màn hình “Giao Dịch Test” .58 Hình 3.19 Màn hình “Hợp Đồng Chuyển Bảo Hành” 58 Hình 3.20 Màn hình “Báo cáo tình trạng triển khai theo hợp đồng” 59 DANH MỤC TỪ VIẾT TẮT Từ viết tắt BGĐ CBNV CBQLHD CBTK CBUQ CNTT CRM CSDL ER HĐ HTTT LAN SCM SQL TBKT TNHH TPTK TSCD Nghĩa tiếng Việt Ban giám đốc Cán nhân viên Cán quản lý hợp đồng Cán triển khai Cán ủy quyền Công nghệ thông tin Quản lý quan hệ khách hàng Cơ sở liệu Mơ hình thực thể kết hợp Hợp đồng Hệ thống thơng tin Mạng máy tính nội Quản lý chuỗi cung ứng Ngơn ngữ truy vấn tính cấu trúc Trưởng ban kỹ thuật Trách nhiệm hữu hạn Trưởng phòng triển khai Tài sản cố định Nghĩa tiếng Anh Customer Relationship Managemant Entity Relationship model Local Area Network Supply Chain Management PHẦN MỞ ĐẦU Hiện nay, hệ thống thông tin ngày trở nên phổ biến vấn đề mà doanh nghiệp đặc biệt quan tâm Việc ứng dụng cơng nghệ thơng tin có ý nghĩa vô to lớn , không mang lại hiệu qủa cao q trình hoạt động mà thể vị doanh nghiệp, khẳng định phát triển doanh nghiệp Không vậy, coi cách mạng doanh nghiệp tin học hóa q trình kinh doanh, sản xuất mình, bắt kịp xu hướng thực công việc quản lý, quản trị cách hiệu Trong suốt thời gian năm học Khoa Hệ Thống Thông Tin Kinh Tế Đại học Thương Mại em tiếp xúc tìm hiểu kiến thức HTTT Qúa trình thực tập Công ty Cổ phần Phần mềm Bravo hội để em vận dụng kiến thức học vào thực tiễn Em nhận thấy, công ty phần mềm, Bravo sớm ứng dụng HTTT vào trình hoạt động Nhưng phát triển nhanh chóng cơng ty năm gần đây, số lượng hợp đồng triển khai ngày nhiều hơn, phức tạp khó kiểm sốt khiến phần mềm dùng không đáp ứng hết nhu cầu công việc TẦM QUAN TRỌNG, Ý NGHĨA CỦA VẤN ĐỀ NGHIÊN CỨU Hiện nay, với phát triển nhanh chóng CNTT việc ứng dụng HTTT vấn đề nhiều người quan tâm Bất kể ngành nghề hay lĩnh vực cần ứng dụng HTTT để giúp cho việc quản lý nâng cao hiệu công việc Một HTTT gồm nhiều thành phần như: phần cứng, phần mềm, mạng, liệu, người phần mềm ứng dụng quan tâm Ở Việt Nam nay, lĩnh vực phần mềm phát triển tương đối mạnh mẽ dẫn đến việc sử dụng phần mềm phục vụ cho trình hoạt động trở nên phổ biến Bên cạnh phần mềm ứng dụng phổ biến Word, Excel, Skype, Teamviev hay phần mềm CRM, SCM có nhiều cơng ty phần mềm cung cấp doanh nghiệp cần có phần mềm đặc thù riêng, phù hợp với quy trình hoạt động doanh nghiệp, giúp họ làm việc quản lý có hiệu Là công ty phần mềm với sản phẩm phần mềm BRAVO ERP – VN Ngồi việc sử dụng sản phẩm phần mềm khác Skype, Teamview Bravo phải sử dụng thêm phần mềm khác để quản lý hoạt động cơng ty như: tìm kiếm khách hàng, ký kết hợp đồng, trình triển khai hợp đồng bảo hành, trình xây dựng phát triển phần mềm Hai năm trở lại (2016 2017), Bravo có mức tăng trưởng nóng (150%), sản phẩm Bravo ngày doanh nghiệp, tổ chức tin dùng nhiều Chính vậy, sản phẩm liên tục đời, số hợp đồng triển khai tăng lên nhanh chóng khiến cho việc quản lý khó khăn Mặc dù việc triển khai hợp đồng quản lý phần mềm quản lý chung công ty (BRAVOMAN) chưa đáp ứng nhu cầu tương lai nhân viên Với tình hình tăng trưởng với quan trọng việc quản lý trình triển khai phần mềm cũ đáp ứng tất nhu cầu người dùng, cơng ty nên nhanh chóng xây dựng phần mềm chuyên quản lý triển khai hợp đồng để quản lý công việc chi tiết chặt chẽ Với lý trên, em định lựa chọn đề tài: “Xây dựng phần mềm quản lý triển khai hợp đồng cho công ty cổ phần phần mềm Bravo” MỤC TIÊU VÀ NHIỆM VỤ NGHIÊN CỨU 2.1 Mục tiêu nghiên cứu Mục tiêu nghiên cứu đề tài tìm hiểu lý thuyết vấn đề nghiên cứu, phân tích, đánh giá thực trạng phần mềm quản lý triển khai hợp đồng công ty cổ phần phần mềm Bravo từ định hướng phát triển đề xuất giải pháp cho công ty Nghiên cứu toán quản lý triển khai hợp đồng cho khách hàng công ty cổ phần phần mềm Bravo để thiết kế xây dựng phần mềm quản lý triển khai hợp đồng nhằm hỗ công tác quản lý trình triển khai hợp đồng cho khách hàng tạo công ty Phần mềm đạt mục tiêu sau: - Quản lý danh mục sản phẩm, Phòng ban, Nhân viên - Quản lý phân bổ hợp đồng - Quản lý triển khai: Bao gồm quản lý công việc, tài liệu làm việc, quản lý giao dịch test trình triển khai, hợp đồng chuyển bảo hành - Quản lý toán khách hàng - Báo cáo 2.1 Nhiệm vụ nghiên cứu Để thực mục tiêu đề tài, khóa luận cần tìm hiểu làm rõ vấn đề sau - Các vấn đề liên quan đến quy trình triển khai cơng ty Cổ phần Phần mềm Bravo - Tìm hiểu thực trạng ưu, nhược điểm việc sử dụng phần mềm để quản lý hoạt động triển khai công ty - Xây dựng phần mềm quản lý triển khai hợp đồng cho công ty cổ phần phần mềm Bravo ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU - Đối tượng nghiên cứu: Phần mềm quản lý triển khai hợp đồng công ty Cổ phần Phần mềm Bravo - Phạm vi nghiên cứu: + Phạm vi thời gian: Bài nghiên cứu sử dụng liệu, tìm hiểu thơng tin quy trình triển khai cơng ty năm trở lại (từ năm 2015 đến nay) + Phạm vi không gian: Phần mềm quản lý triển khai hợp đồng sử dụng tài trụ sở ( Hà Nội) chi nhánh (Đà Nẵng, Hồ Chí Minh) Công ty Cổ phần Phần mềm Bravo, quy trình triển khai hợp đồng cơng ty Cổ phần Phần mềm Bravo PHƯƠNG PHÁP NGHIÊN CỨU 4.1 Phương pháp thu thập liệu - Thu thập liệu thứ cấp: Những thông tin, liệu sử dụng thu thập từ viết, cơng trình thông qua mạng Internet; website công ty Cổ phần Phần mềm Bravo (bravo.com.vn); tài liệu, báo cáo kết sản xuất kinh doanh thu thập từ phòng Quản lý Tổng hợp cơng ty Cổ phần Phần mềm Bravo - Thu thập liệu sơ cấp: +Phương pháp vấn trực tiếp: Là phương pháp dựa vào tiếp xúc trực tiếp người vấn đối tượng vấn Phương pháp ngày trở nên phổ biến phương tiện thuận tiện để thu thập thông tin + Phương pháp phát phiếu điều tra: Thiết kế phiếu điều tra phát cho nhân viên công ty, dựa vào phiếu điều tra để tổng hợp thông tin + Phương pháp nghiên cứu tài liệu: Sau nắm quy trình xử lý đặc điểm thực tế cơng ty Sử dụng kiến thức học kết hợp với việc tìm hiểu lý thuyết liên quan đến đề tài nghiên cứu bao gồm: Lý thuyết C#, SQL Từ em tìm cách thức, thuật toán để xây dựng chức phần mềm 4.2 Phương pháp xử lý liệu - Sau thu thập đầy đủ thông tin, tiến hành tổng hợp, phân tích xử lý thơng tin thơng qua phần mềm bảng tính Excel.Tiến hành phân tích, tổng hợp liệu thơng qua kết vấn phiếu điều tra nhằm chọn thông tin phù hợp với mục đích sử dụng vấn đề nghiên cứu - Phương pháp phân tích thiết kế: Việc phân tích thiết kế phần mềm quản lý triển khai hợp đồng tiến hàng theo phương pháp hướng đối tượng - Phương pháp lập trình xây dựng chương trình: Thơng qua ngơn ngữ lập trình C# mơi trường Visual Studio 2010, hệ quản trị sở liệu SQL Server 2008 Từ liệu thu thập tiến hành phân tích, thiết kế phần mềm theo hướng đối tượng Sau tiến hành thiết kế sở liệu hệ quản trị sở liệu SQL Server 2008 Sau trình thiết kế giao diện, thực xây dựng chương trình ngơn ngữ lập trình C# mơi trường lập trình Visual Studio 2010 KẾT CẤU KHĨA LUẬN Ngồi lời cảm ơn, phần mở đầu, khóa luận gồm chương: Chương 1: CƠ SỞ LÝ LUẬN CỦA VẤN ĐỀ NGHIÊN CỨU Chương 2: KẾT QUẢ PHÂN TÍCH, ĐÁNH GIÁ THỰC TRẠNG PHẦN MỀM QUẢN LÝ TRIỂN KHAI HỢP ĐỒNG TẠI CÔNG TY CỔ PHẦN PHẦN MỀM BRAVO Chương 3: ĐỊNH HƯỚNG PHÁT TRIỂN VÀ ĐỀ XUẤT GIẢI PHÁP XÂY DỰNG PHẦN MỀM QUẢN LÝ TRIỂN KHAI HỢP ĐỒNG TẠI CÔNG TY CỔ PHẦN PHẦN MỀM BRAVO SET TenNv=@TenNv, NgaySinh=convert(nvarchar(15),@NgaySinh,110), GioiTinh=@GioiTinh, DiaChi=@DiaChi, SĐT=@SĐT, ChucVu=@ChucVu, MaPb=@MaPb WHERE MaNv=@MaNv", conn); // Khai báo gán giá trị cho tham số đầu vào câu lệnh SqlParameter a = new SqlParameter("@MaNv", TextMaNV.Text); cmdSua.Parameters.Add(a); SqlParameter b = new SqlParameter("@TenNv", TextTenNV.Text); cmdSua.Parameters.Add(b); SqlParameter c = new SqlParameter("@NgaySinh", DtNgaysinh.Value); cmdSua.Parameters.Add(c); SqlParameter d = new SqlParameter("@GioiTinh", CboGioitinh.Text); cmdSua.Parameters.Add(d); SqlParameter f = new SqlParameter("@DiaChi", TextDiachi.Text); cmdSua.Parameters.Add(f); SqlParameter g = new SqlParameter("@SĐT", TextSDT.Text); cmdSua.Parameters.Add(g); SqlParameter h = new SqlParameter("@ChucVu", TextChucvu.Text); cmdSua.Parameters.Add(h); SqlParameter i = new SqlParameter("@MaPb", CboMaPb.Text); cmdSua.Parameters.Add(i); int count = cmdSua.ExecuteNonQuery(); if (count > 0) { MessageBox.Show("Sửa thành công"); Hienthi(); } else MessageBox.Show("Không sửa thông tin này!"); } catch { MessageBox.Show("Thông tin sửa không hợp lệ"); } } private void ButtonXoa_Click(object sender, EventArgs e) { try { if (MessageBox.Show("Bạn có chắn mn xóa ghi chọn không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { SqlCommand cmdXoa = new SqlCommand("DELETE NhanVien WHERE MaNv=@MaNv", conn); SqlParameter a = new SqlParameter("@MaNv", TextMaNV.Text); cmdXoa.Parameters.Add(a); int count = cmdXoa.ExecuteNonQuery(); if (count > 0) { MessageBox.Show("Xóa thành cơng"); Hienthi(); } else MessageBox.Show("Khơng tìm thấy thơng tin cần xóa!"); } } catch { MessageBox.Show("Khơng xóa thơng tin này"); } } private void ButtonTimKiem_Click(object sender, EventArgs e) { SqlCommand cmdTk = new SqlCommand("select*from NhanVien where MaNv like '%' +@MaNv+ '%' and TenNv like '%' +@TenNv+ '%' and GioiTinh like '%' +@GioiTinh+ '%' and DiaChi like '%' +@DiaChi+ '%' and SĐT like '%' +@SĐT+ '%' and ChucVu like '%' +@ChucVu+ '%' and MaPb like '%' +@MaPb+ '%'", conn); // Khai báo gán giá trị cho tham số đầu vào câu lệnh SqlParameter a = new SqlParameter("@MaNv", TextMaNV.Text); cmdTk.Parameters.Add(a); SqlParameter b = new SqlParameter("@TenNv", TextTenNV.Text); cmdTk.Parameters.Add(b); SqlParameter c = new SqlParameter("@NgaySinh", DtNgaysinh.Value); cmdTk.Parameters.Add(c); SqlParameter d = new SqlParameter("@GioiTinh", CboGioitinh.Text); cmdTk.Parameters.Add(d); SqlParameter f = new SqlParameter("@DiaChi", TextDiachi.Text); cmdTk.Parameters.Add(f); SqlParameter g = new SqlParameter("@SĐT", TextSDT.Text); cmdTk.Parameters.Add(g); SqlParameter h = new SqlParameter("@ChucVu", TextChucvu.Text); cmdTk.Parameters.Add(h); SqlParameter i = new SqlParameter("@MaPb", CboMaPb.Text); cmdTk.Parameters.Add(i); int count = cmdTk.ExecuteNonQuery(); SqlDataReader dr = cmdTk.ExecuteReader(); DataTable dt = new DataTable(); dt.Load(dr); dsnv.DataSource = dt; } private void button1_Click(object sender, EventArgs e) { Hienthi(); } } } -Form Chi tiết hợp đồng ( chi tiết phân bổ hợp đồng) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace QLTK { public partial class CTHD : Form { public CTHD() { InitializeComponent(); } string sqlConn = @"Data Source=PC2017062215LIX\SQLEXPRESS;Initial Catalog=QLTK;Integrated Security=True"; SqlConnection conn; SqlDataAdapter adapter = null;//vận chuyển liệu DataSet ds = null; //chứa bảng private void buttonThoat_Click(object sender, EventArgs e) { HD HD = new HD(); HD.Show(); Visible = false; } private void CTHD_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the 'qLTKDataSet.CTHĐ' table You can move, or remove it, as needed this.cTHĐTableAdapter.Fill(this.qLTKDataSet.CTHĐ); Hienthi(); layCboMaHD(); layCboMaPH(); layCboMaNV(); } private void Hienthi() { conn = new SqlConnection(sqlConn); conn.Open(); adapter = new SqlDataAdapter("select * from CTHĐ", conn); SqlCommandBuilder buider = new SqlCommandBuilder(adapter); ds = new DataSet(); adapter.Fill(ds, "CTHĐ"); dscthd.DataSource = ds.Tables[0] } private void layCboMaHD() { conn = new SqlConnection(sqlConn); conn.Open(); SqlCommand command = new SqlCommand(); command.CommandType = CommandType.Text; command.CommandText = "select * from HopDong"; command.Connection = conn; SqlDataReader reader = command.ExecuteReader();//đọc csdl CboMaHD.Items.Clear(); while (reader.Read()) { string MaHd = reader.GetString(0); CboMaHD.Items.Add(MaHd);\ } reader.Close(); } private void layCboMaPH() { conn = new SqlConnection(sqlConn); conn.Open(); SqlCommand command = new SqlCommand(); command.CommandType = CommandType.Text; command.CommandText = "select * from SanPham"; command.Connection = conn; SqlDataReader reader = command.ExecuteReader();//đọc csdl CboMaPH.Items.Clear(); while (reader.Read()) { string MaPh = reader.GetString(0); CboMaPH.Items.Add(MaPh); } reader.Close(); } private void layCboMaNV() { conn = new SqlConnection(sqlConn); conn.Open(); SqlCommand command = new SqlCommand(); command.CommandType = CommandType.Text; command.CommandText = "select * from NhanVien"; command.Connection = conn; SqlDataReader reader = command.ExecuteReader();//đọc csdl CboMaNV.Items.Clear(); while (reader.Read()) { string MaNv = reader.GetString(0); CboMaNV.Items.Add(MaNv); } reader.Close(); } private void dscthd_RowEnter(object sender, DataGridViewCellEventArgs e) { int dong = e.RowIndex; CboMaHD.Text = dscthd.Rows[dong].Cells[0].Value.ToString(); CboMaPH.Text = dscthd.Rows[dong].Cells[1].Value.ToString(); CboMaNV.Text = dscthd.Rows[dong].Cells[2].Value.ToString(); TextGiaTri.Text = dscthd.Rows[dong].Cells[3].Value.ToString(); } private void button1_Click(object sender, EventArgs e) { Hienthi(); } private void ButtonThem_Click(object sender, EventArgs e) { try { if (CboMaHD.Text == "") { MessageBox.Show("Không để trống mã hợp đồng"); return; } if (CboMaPH.Text == "") { MessageBox.Show("Không để trống mã phân hệ"); return; } if (CboMaNV.Text == "") { MessageBox.Show("Không để trống mã nhân viên"); return; } if (TextGiaTri.Text == "") { MessageBox.Show("Bạn chưa nhập giá trị"); return; } // Khai báo khởi tạo đối tượng Command, truyền vào câu lệnh tương ứng SqlCommand cmdThem = new SqlCommand("INSERT INTO CTHĐ VALUES(@MaHd, @MaPh, @MaNvth, @GiaTri)", conn); // Khai báo gán giá trị cho tham số đầu vào câu lệnh SqlParameter a = new SqlParameter("@MaHd", CboMaHD.Text); cmdThem.Parameters.Add(a); SqlParameter b = new SqlParameter("@MaPh", CboMaNV.Text); cmdThem.Parameters.Add(b); SqlParameter c = new SqlParameter("@MaNvth", CboMaPH.Text); cmdThem.Parameters.Add(c); SqlParameter d = new SqlParameter("@GiaTri", TextGiaTri.Text); cmdThem.Parameters.Add(d); int count = cmdThem.ExecuteNonQuery(); if (count > 0) { MessageBox.Show("Thêm thành công"); Hienthi(); } else MessageBox.Show("Không thể thêm mới"); } catch { MessageBox.Show("Lỗi: Bạn thêm thơng tin có thông tin nhập ký tự cho phép"); Hienthi(); } } private void ButtonSua_Click(object sender, EventArgs e) { try { if (CboMaHD.Text == "") { MessageBox.Show("Không để trống mã hợp đồng"); return; } if (CboMaPH.Text == "") { MessageBox.Show("Không để trống mã phân hệ"); return; } if (CboMaNV.Text == "") { MessageBox.Show("Không để trống mã nhân viên"); return; } if (TextGiaTri.Text == "") { MessageBox.Show("Bạn chưa nhập giá trị"); return; } SqlCommand cmdSua = new SqlCommand("UPDATE CTHĐ SET MaNvth=@MaNvth, GiaTri=@GiaTri WHERE MaHd=@MaHd and MaPh=@MaPh", conn); // Khai báo gán giá trị cho tham số đầu vào câu lệnh SqlParameter a = new SqlParameter("@MaHd", CboMaHD.Text); cmdSua.Parameters.Add(a); SqlParameter b = new SqlParameter("@MaPh", CboMaNV.Text); cmdSua.Parameters.Add(b); SqlParameter c = new SqlParameter("@MaNvth", CboMaPH.Text); cmdSua.Parameters.Add(c); SqlParameter d = new SqlParameter("@GiaTri", TextGiaTri.Text); cmdSua.Parameters.Add(d); int count = cmdSua.ExecuteNonQuery(); if (count > 0) { MessageBox.Show("Sửa thành công"); Hienthi(); } else MessageBox.Show("Thông tin sửa khơng có!"); } catch { MessageBox.Show("Thơng tin sửa khơng hợp lệ"); } } private void ButtonXoa_Click(object sender, EventArgs e) { try { if (MessageBox.Show("Bạn có chắn mn xóa ghi chọn không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { SqlCommand cmdXoa = new SqlCommand("DELETE CTHĐ WHERE MaHd=@MaHd and MaPh=@MaPh", conn); SqlParameter a = new SqlParameter("@MaHd", CboMaHD.Text); cmdXoa.Parameters.Add(a); SqlParameter b = new SqlParameter("@MaPh", CboMaNV.Text); cmdXoa.Parameters.Add(b); int count = cmdXoa.ExecuteNonQuery(); if (count > 0) { MessageBox.Show("Xóa thành cơng"); Hienthi(); } else MessageBox.Show("Khơng tìm thấy thơng tin cần xóa!"); } } catch { MessageBox.Show("Khơng xóa thơng tin này"); } } private void ButtonTimKiem_Click(object sender, EventArgs e) { SqlCommand cmdTk = new SqlCommand("select*from CTHĐ where MaHd like '%' +@MaHd+ '%' and MaPh like '%' +@MaPh+ '%' and MaNvth like '%' +@MaNvth+ '%' and GiaTri like '%' +@GiaTri+ '%'", conn); // Khai báo gán giá trị cho tham số đầu vào câu lệnh SqlParameter a = new SqlParameter("@MaHd", CboMaHD.Text); cmdTk.Parameters.Add(a); SqlParameter b = new SqlParameter("@MaPh", CboMaNV.Text); cmdTk.Parameters.Add(b); SqlParameter c = new SqlParameter("@MaNvth", CboMaPH.Text); cmdTk.Parameters.Add(c); SqlParameter d = new SqlParameter("@GiaTri", TextGiaTri.Text); cmdTk.Parameters.Add(d); cmdTk.ExecuteNonQuery(); SqlDataReader dr = cmdTk.ExecuteReader(); DataTable dt = new DataTable(); dt.Load(dr); dscthd.DataSource = dt; } } } -Form Báo cáo using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace QLTK { public partial class BaoCao : Form { public BaoCao() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { BCHopDong BCHopDong = new BCHopDong(); BCHopDong.Show(); Visible = false; } private void button2_Click(object sender, EventArgs e) { BCNhanVien BCNhanVien = new BCNhanVien(); BCNhanVien.Show(); Visible = false; } private void button3_Click(object sender, EventArgs e) { TrangChu QLTK = new TrangChu(); QLTK.Show(); Visible = false; } } } -Form Báo cáo tình trạng cơng việc theo hợp đồng Thủ tục SQL CREATE PROC usp_BCHD @MaHd VARCHAR(10) AS BEGIN SELECT GiaiDoan, TenLCv, TenCv, MaNv, MaHd, NgayBd, NgayKt, KetQua FROM ( SELECT '' AS GiaiDoan, lcv.TenLCv AS TenLCv, cv.TenCv AS TenCv, cv.MaNv AS MaNv, cv.MaHd AS MaHd, CONVERT (NVARCHAR(15),cv.NgayBd,103) AS NgayBd, CONVERT(NVARCHAR(15),cv.NgayKt,103) AS NgayKt, cv.KetQua AS KetQua, lcv.GiaiDoan as SX FROM CongViec cv INNER JOIN LoaiCongViec lcv ON cv.MaLCv=lcv.MaLCv WHERE cv.MaHd LIKE '%'+@MaHd+'%' UNION ALL SELECT MAX(GiaiDoan) AS GiaiDoan, '' AS TenLCv, '' AS TenCv, ''AS MaNv, '' AS MaHd,'' AS NgayBd, '' AS NgayKt, '' AS KetQua, GiaiDoan AS SX FROM LoaiCongViec GROUP BY GiaiDoan ) TH ORDER BY SX, GiaiDoan DESC END Code báo cáo using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using Microsoft.Reporting.WinForms; namespace QLTK { public partial class BCHopDong : Form { public BCHopDong() { InitializeComponent(); } string sqlConn = @"Data Source=PC2017062215LIX\SQLEXPRESS;Initial Catalog=QLTK;Integrated Security=True"; SqlConnection conn; SqlDataAdapter adapter = null;//vận chuyển liệu DataSet ds = null; //chứa bảng //list lên ô text private void layCboMaHD() { conn = new SqlConnection(sqlConn); conn.Open(); SqlCommand command = new SqlCommand(); command.CommandType = CommandType.Text; command.CommandText = "select * from HopDong"; command.Connection = conn; SqlDataReader reader = command.ExecuteReader();//đọc csdl CboMaHD.Items.Clear(); while (reader.Read()) { string MaHd = reader.GetString(0); CboMaHD.Items.Add(MaHd); } reader.Close(); } private void btnBC_Click(object sender, EventArgs e) { SqlConnection = new SqlConnection(); con.ConnectionString = Properties.Settings.Default.QLTKConnectionString; SqlCommand cmd = new SqlCommand(); cmd.CommandText="usp_BCHD"; cmd.CommandType= CommandType.StoredProcedure; cmd.Connection= con; cmd.Parameters.Add(new SqlParameter("@MaHd",CboMaHD.Text)); DataSet ds = new DataSet(); SqlDataAdapter dap = new SqlDataAdapter(cmd); dap.Fill(ds); layCboMaHD(); RptBCHD.ProcessingMode= ProcessingMode.Local; RptBCHD.LocalReport.ReportPath="RptBCHD.rdlc"; if(ds.Tables[0].Rows.Count >0) { ReportDataSource rds = new ReportDataSource(); rds.Name="DataSetbc"; rds.Value=ds.Tables[0]; RptBCHD.LocalReport.DataSources.Clear(); RptBCHD.LocalReport.DataSources.Add(rds); RptBCHD.RefreshReport(); } } private void btnThoat_Click(object sender, EventArgs e) { BaoCao BaoCao = new BaoCao(); BaoCao.Show(); Visible = false; } } }