Đề tài Xây dựng website quản lý công việc tại trung tâm vasc e-Cs

118 trang LỜI NÓI ĐẦU Sau thời gian thực tập tại Trung tâm VASC E-CS thuộc Công ty phát triển phần mềm VASC em đã thu được nhiều kiến thức thực tế, bổ sung cho vốn kiến thức của bản thân đã tiếp thu trong học tập. Đặc biệt các cán bộ và nhân viên của Trung tâm đã giúp đỡ, tạo điều kiện cho em áp dụng những kiến thức đã học áp dụng vào hoạt động thực tiễn của Trung tâm. Qua tìm hiểu thực tế hoạt động của Trung tâm, yêu cầu của cán bộ phụ trách Trung tâm và sự đồng ý của giáo viên hướng dẫn, em đã nghiên cứu và thực hiện đề tài: Xây dựng Website Quản lý công việc tại Trung tâm VASC E-CS. Đề tài được triển khai dựa trên công nghệ xây dựng trang web động ASPNẹt, sử dụng ngôn ngữ lập trình Visual C#, hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2000. Hệ thống thông tin Quản lý công việc được xây dựng có ý nghĩa thực tế đối với Trung tâm VASC E-CS, nhằm trợ giúp cấp lãnh đạo trong việc đánh giá sự thực hiện công việc của nhân viên Trung tâm, giảm thời gian cho việc lập báo cáo công tác hàng tuần của cán bộ, nhân viên Trung tâm so với khi chưa có hệ thống. Đối với các nhân viên, hệ thống trợ giúp họ trong việc lập kế hoạch công tác, ghi nhật ký công việc và lập báo cáo công việc hàng tuần cũng như tự theo dõi, đánh giá năng lực bản thân để tự nghiên cứu học hỏi nâng cao trình độ. Đối với người quản lý, hệ thống sẽ trợ giúp họ trong việc quản lý, nắm bắt và đánh giá tình hình thực hiện công việc của các nhân viên, từ đó trợ giúp người quản lý ra những quyết định tác nghiệp đúng đắn đối với người lao động như: khen thưởng, kỉ luật, tăng lương hay thuyên chuyển vị trí công tác . Cấu trúc chuyên đề thực tập gồm có 3 chương: - Chương I: Trình bày các vấn đề tổng quan về Trung tâm VASC E-CS, về đề tài nghiên cứu, các phương pháp sử dụng để nghiên cứu đề tài. - Chương II: Trình bày phương pháp luận làm cơ sở cho việc nghiên cứu đề tai:giời thiệu về dịch vụ World Wide Web, hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2000, công nghệ Microsoft .NET, ASPNẸT và ngôn ngữ lập trình Visual C#.NET. - Chương III: Trình bày các kết quả: phân tích hệ thống, thiết kế lô gíc, thiết kế vật lý và các kết quả thử nghiệm. Cuối cùng em xin cảm ơn TS. Cao Đình Thi giáo viên hướng dẫn, kĩ sư Phạm Ngọc Minh, kĩ sư Hoàng Minh cán bộ Trung tâm VASC E-CS và các cán bộ, nhân viên của Trung tâm đã giúp đỡ em trong thời gian thực tập, nghiên cứu và thực hiện đề tài này. Hà Nội - 2003 Sinh viên Nguyễn Trung Kiên. Mục Lục Trang LỜI NÓI ĐẦU 1 Mục Lục 3 Chương I. CÁC VẤN ĐỀ TỔNG QUAN. 5 I. TỔNG QUAN VỀ TRUNG TÂM VASC E-CS. 5 1. CHỨC NĂNG, NHIỆM VỤ CỦA TRUNG TÂM VASC E-CS. 5 2. CƠ CẤU TỔ CHỨC TRUNG TÂM VASC E-CS 6 II. TỔNG QUAN VỀ ĐỀ TÀI NGHIÊN CỨU. 9 1. HỆ THỐNG THÔNG TIN QUẢN TRỊ NHÂN LỰC. 9 2. SỰ CẦN THIẾT CỦA ĐỀ TÀI NGHIÊN CỨU. 11 3. MỤC TIÊU, PHƯƠNG PHÁP NGHIÊN CỨU ĐỀ TÀI. 13 Chương II. PHƯƠNG PHÁP LUẬN. 17 I. TỔNG QUAN VỀ DỊCH VỤ WORLD WIDE WEB. 17 1. DỊCH VỤ WORLD WIDE WEB. 17 2. MÔ HÌNH HOẠT ĐỘNG CỦA WORLD WIDE WEB. 17 3. CÔNG NGHỆ XÂY DỰNG WEB ĐỘNG ASP. 19 II. CÔNG NGHỆ MICROSOFT .NET. 21 1. GIỚI THIỆU CHUNG VỀ MICROSOFT .NET. 21 2. ASPNẸT. 25 3. VISUAL C#.NET. 27 III. HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MICROSOFT SQL SERVER 2000. 28 1. TỔNG QUAN VỀ HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MICROSOFT SQL SERVER 2000. 28 2. CÁC ĐẶC TRƯNG CỦA MICROSOFT SQL SERVER 2000. 29 Chương III. KẾT QUẢ NGHIÊN CỨU ĐỀ TÀI. 30 I. PHÂN TÍCH CHI TIẾT. 30 1. MÔI TRƯỜNG CỦA HỆ THỐNG HIỆN TẠI. 30 2. NGHIÊN CỨU HỆ THỐNG HIỆN TẠI. 32 3. XÁC ĐỊNH NGUYÊN NHÂN CỦA VẤN ĐỀ VÀ GIẢI PHÁP GIẢI QUYẾT VẤN ĐỀ: 37 II. THIẾT KẾ LÔ GÍC. 38 1. THIẾT KẾ CƠ SỞ DỮ LIỆU . 38 2. THIẾT KẾ LÔ GIC XỬ LÝ. 43 3. SƠ ĐỒ LUỒNG DỮ LIỆU VÀ SƠ ĐỒ LIÊN KẾT THỰC THỂ HỆ THỐNG THÔNG TIN MỚI. 49 III. THIẾT KẾ VẬT LÝ NGOÀI. 52 1. THIẾT KẾ VÀO. 52 2. THIẾT KẾ RA. 54 IV. TRIỂN KHAI THỬ NGHIỆM HỆ THỐNG VÀ KẾT QUẢ. 56 1. THIẾT KẾ CƠ SỞ DỮ LIỆU VẬT LÝ TRONG. 56 2. THIẾT KẾ CÁC XỬ LÝ VẬT LÝ TRONG. 59 3. CÀI ĐẶT TRIỂN KHAI HỆ THỐNG . 73 KẾT LUẬN. 74 Tài liệu tham khảo. 75 Phụ lục. 75

doc118 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2578 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng website quản lý công việc tại trung tâm vasc e-Cs, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
iem_vu NvarChar(100) Nhiệm vụ của nhân viên trong dự án. Ngay_pc DateTime(8) Ngày phân công. Tên bảng: BaoCaoTH Mô tả: Báo cáo tổng hợp. Khóa chính Tên trường Kiểu dữ liệu Mô tả ü Ma_bcth Int(4) Mã báo cáo tổng hợp. Ma_nhom Char(10) Mã tổ công tác của báo cáo. Ma_da Char(10) Mã dự án của báo cáo. Noi_dung NvarChar(50) Nội dung các công việc báo cáo. Ket_qua NvarChar(50) Kết quả các công việc. Ngay_bd DateTime(8) Ngày bắt đầu báo cáo. Ngay_kt DateTime(8) Ngày kết thúc báo cáo. Tên bảng: CtBCTH Mô tả: Chi tiết báo cáo tổng hợp Khóa chính Tên trường Kiểu dữ liệu Mô tả ü Ma_ctbc Int(4) Mã công việc chi tiết báo cáo. Ma_bcth Int(4) Mã báo cáo tổng hợp. Ten_cv NvarChar(50) Tên công việc chi tiết. Ngay_bd DateTime(8) Ngày bắt đầu công việc. Ngay_kt DateTime(8) Ngày kết thúc công việc. Noi_dung NvarChar(200) Nội dung công việc. Ket_qua NvarChar(100) Kết quả công việc. Gio_cong Real(4) Tổng số giờ công. Tên bảng: CtND Mô tả: Chi tiết nội dung báo cáo tổng hợp. Khóa chính Tên trường Kiểu dữ liệu Mô tả ü Ma_cv Int(4) Mã công việc của nhân viên trong tổ. Ma_ctbc Int(4) Mã công việc chi tiết của báo cáo cáo tổng hợp. Tên bảng: Tin Mô tả: Thông tin phản hồi. Khóa chính Tên trường Kiểu dữ liệu Mô tả ü Ma_tin Int(4) Mã tin. Ma_tin_lq Int(4) Mã tin liên quan. Ma_da Char(10) Mã dự án của tin. Ma_nv_gui Char(20) Mã nhân viên gửi. Ngay DateTime(8) Ngày gửi. Tieu_de NvarChar(50) Tiêu đề tin gửi. Noi_dung NvarChar(200) Nội dung tin. Tên bảng: Gui_TT Mô tả: Gửi thông tin. Khóa chính Tên trường Kiểu dữ liệu Mô tả ü Ma_nv_nhan Char(20) Mã nhân viên nhận. ü Ma_tin Int(4) Mã tin nhận. Da_xem Bit(1) Tin đã xem chưa. THIẾT KẾ CÁC XỬ LÝ VẬT LÝ TRONG. Sơ đồ liên kết các mô đun: Hệ thống Website Quản lý công việc Hỗ trợ nhân viên. Hỗ trợ người quản lý. Thông tin phản hồi. Quản trị hệ thống. Lập kế hoạch công tác. Lập ghi nhật ký công tác. Lập báo cáo công tác cá nhân. Lập báo cáo tổng hợp. Xem kế hoạch công tác của nhân viên Xem báo cáo công tác của nhân viên Gửi tin Xem tin Cập nhật danh sách nhân viên Cập nhật danh sách tổ công tác Cập nhật danh sách dự án của trung tâm Phân tổ công tác. Phân công nhân sự cho các dự án Cập nhật thông tin cá nhân. Thiết kế các pha hội thoại chính giữa người sử dụng và hệ thống: Pha đăng nhập hệ thống của nhân viên: Nhiệm vụ người sử dụng. Nhiệm vụ hệ thống. Thông tin hiện ra. Thông tin về kế hoạch: - Nội dung công việc. - Địa điểm. - Giờ công dự kiến. - Ghi chú. Đúng Sai Vào trang đăng nhập hệ thống. Hiện trang đăng nhập hệ thống. Nhập tên đăng nhập và mật khẩu. - Ô nhập tên đăng nhập và mật khẩu. Kiểm tra tên đăng nhập và mật khẩu. Yêu cầu nhập lại. - Yêu cầu nhập lại tên đăng nhập và mật khẩu. Hiện các công việc của nhân viên theo kế hoạch đã lập. Hiện bảng chọn công việc tương ứng với quyền của nhân viên. Pha lập kế hoạch của nhân viên: Nhiệm vụ người sử dụng. Nhiệm vụ hệ thống. Thông tin hiện ra. Sửa dữ liệu và chọn nút. Lưu Bỏ qua Nhập dữ liệu và chọn nút. Bỏ qua Lưu Chọn ngày bắt đầu, ngày kết thúc. Chọn việc lập kế hoạch công tác. - Lịch ngày tháng hiện thời. Hiện trang chọn khoảng thời gian lập kế hoạch. Sai Đúng Kiểm tra sự hợp lệ. Yêu cầu chọn lại. Các thông tin về công việc trong kế hoạch: - Ngày. - Địa điểm. - Nội dung. - Giờ công dự kiến. - Ghi chú. - Kế hoạch chính(C/K). Xóa Sửa Hiện hộp chọn các dự án được phân công Hiện các dòng kế hoạch trong dự án tương ứng và các nút Thêm, Sửa, Xóa. Chọn các nút. Xóa công việc trong kế hoạch. Cho phép các thông tin của công việc được sửa và hiện các nút Lưu, Bỏ qua. Hiện các ô nhập dữ liệu và các nút Lưu, Bỏ qua. Lưu các dữ liệu. Không lưu các dữ liệu. Lưu các dữ liệu. Không lưu các dữ liệu. Thêm Pha ghi nhật ký của nhân viên: Nhiệm vụ người sử dụng. Nhiệm vụ hệ thống. Thông tin hiện ra. Thôi cập nhật công việc ngoài kế hoạch Cập nhật công việc ngoài kế hoạch Lưu Chọn ngày bắt đầu, ngày kết thúc. Chọn việc ghi nhật ký công tác. Hiện trang chọn khoảng thời gian ghi nhật ký. Kiểm tra sự hợp lệ. Yêu cầu chọn lại. Hiện hộp chọn các dự án được phân công Hiện các dòng công việc trong dự án tương ứng và nút Ghi nhật ký. Hiện nút Cập nhật công việc ngoài kế hoạch. Chọn các nút. Các thông tin về công việc: - Ngày. - Địa điểm. - Nội dung. - Kết quả. - Giờ công. - Ghi chú. Ghi nhật ký Cho phép các thông tin của công việc được sửa và hiện các nút Lưu, Bỏ qua. Sửa dữ liệu và chọn nút. Lưu các dữ liệu. Không lưu các dữ liệu. Bỏ qua Hiện các dòng công việc ngoài kế hoạch trong dự án tương ứng và nút Thêm, Sửa, Xóa. Hiện nút Thôi cập nhật công việc ngoài kế hoạch. Chọn các nút. B A Các thông tin về công việc: - Ngày. - Địa điểm. - Nội dung. - Kết quả. - Giờ công. - Ghi chú. - Lịch ngày tháng hiện thời. Nhiệm vụ người sử dụng. Nhiệm vụ hệ thống. Thông tin hiện ra. Thêm Sửa dữ liệu và chọn nút Lưu Bỏ qua Nhập dữ liệu và chọn nút Bỏ qua Lưu Xóa Sửa Xóa công việc Cho phép các thông tin của công việc được sửa và hiện các nút Lưu và Bỏ qua Hiện các ô nhập dữ liệu và các nút Lưu, Bỏ qua Lưu các dữ liệu Không lưu các dữ liệu Lưu các dữ liệu Không lưu các dữ liệu A B Pha lập báo cáo công tác cá nhân của nhân viên: Nhiệm vụ người sử dụng. Nhiệm vụ hệ thống. Thông tin hiện ra. Xem báo cáo Chọn ngày bắt đầu, ngày kết thúc. Chọn việc lập báo cáo công tác. Hiện trang chọn khoảng thời gian lập báo cáo. Kiểm tra sự hợp lệ. Yêu cầu chọn lại. Hiện hộp chọn các dự án được phân công. Hiện các dòng công việc đã ghi nhật ký trong dự án tương ứng và nút Chuyển/không báo cáo. Hiện nút Xem báo cáo. Chọn các nút. Nếu công việc chưa báo cáo thì chuyển thành báo cáo, nếu công việc đã báo cáo thì chuyển công việc thành chưa báo cáo. Các thông tin về công việc: - Ngày. - Địa điểm. - Nội dung. - Kết quả. - Giờ công. - Ghi chú. Chuyển/ không báo cáo Hiện trang báo cáo công tác của dự án trong hộp chọn Các thông tin trong báo cáo: - Tên nhân viên. - Dự án. - Ngày bắt đầu, ngày kết thúc. Chi tiết từng công việc: - Ngày. - Địa điểm. - Nội dung. - Kết quả. - Giờ công. - Ghi chú. - Lịch ngày tháng hiện thời. Pha xem thông tin phản hồi: Nhiệm vụ người sử dụng. Nhiệm vụ hệ thống. Thông tin hiện ra. Chọn xem thông tin phản hồi. Các thông tin về các tin nhận được: - Ngày. - Tiêu đề. - Người gửi. Hiện danh sách các tin nhận được. Xóa Tin Chọn tiêu đề tin. Các thông tin về tin nhận được: - Ngày. - Tiêu đề. - Người gửi. - Dự án. - Nội dung. Hiện nội dung tin nhận được. Hiện nút Phản hồi, Xóa tin. Chọn các nút. Phản hồi Xóa tin chọn. Chuyển sang gửi tin. Pha gửi tin: Nhiệm vụ người sử dụng. Nhiệm vụ hệ thống. Thông tin hiện ra. Bỏ qua Nhập dữ liệu và chọn nút. Gửi Tin Chọn gửi tin. Chuyển sang xem tin. Lưu các dữ liệu. Hiện các ô nhập dữ liệu để gửi tin. Hiện nút Gửi tin, Bỏ qua. Các thông tin về tin gửi: - Ngày. - Tiêu đề. - Người gửi. - Người nhận. - Dự án. - Nội dung. Pha lập báo cáo tổng hợp của phụ trách tổ: Nhiệm vụ người sử dụng. Nhiệm vụ hệ thống. Thông tin hiện ra. Bỏ qua Lưu Báo cáo tổng hợp: - Dự án. - Ngày bắt đầu, kết thúc. - Tên tổ, phụ trách. - Nội dung. Chi tiết công việc của báo cáo: - Công việc. - Ngày bắt đầu, kết thúc - Nội dung. - Kết quả, giờ công. Chi tiết Lập báo cáo mới Bỏ qua Chọn công việc lập báo cáo tổng hợp. Hiện danh sách chọn các báo cáo tổng hợp, cùng các nút Sửa, Xóa, Chi tiết. Hiện nút Lập báo cáo mới. Các thông tin về báo cáo tổng hợp: - Dự án. - ngày bắt đầu. - Ngày kết thúc. - Nội dung. - Kết quả. - Nội dung. Sửa Chọn các nút. Xóa Xóa báo cáo tổng hợp. Hiện các thông tin về báo cáo tổng hợp để sửa. Hiện các nút: Lưu, Bỏ qua. Các thông tin về báo cáo tổng hợp: - Dự án. - Ngày bắt đầu. - Ngày kết thúc. Sửa dữ liệu và chọn nút Lưu Lưu dữ liệu. Không lưu dữ liệu. Hiện các ô nhập dữ liệu cho báo cáo tổng hợp mới. Hiện các nút: Lưu, Bỏ qua. Lưu dữ liệu. Không lưu dữ liệu. Nhập dữ liệu và chọn nút Hiện các thông tin của báo cáo tổng hợp vừa chọn, hiện nút Cập nhật nội dung kết quả báo cáo. Trang danh sách chi tiết các công việc của báo cáo, hiện các nút: Thêm mới, Sửa, Xóa, Chi tiết. A B Nhiệm vụ người sử dụng. Nhiệm vụ hệ thống. Thông tin hiện ra. Lưu Bỏ qua Cập nhật nội dung, kết quả báo cáo A B Chọn các nút Chuyển Nội dung và Kết quả báo cáo thành ô nhập để sửa dữ liệu, hiện nút Bỏ qua, Lưu. Chọn các nút Lưu dữ liệu. Không lưu dữ liệu. Thêm mới Xóa Sửa Xóa công việc. Chuyển các dữ liệu của công việc thành ô nhập để sửa, hiện nút Lưu, Bỏ qua. Chi tiết Lưu Chọn các nút Bỏ qua Lưu dữ liệu. Không lưu dữ liệu. Chọn các nút Lưu Bỏ qua Lưu dữ liệu. Không lưu dữ liệu. Hiện các ô nhập để nhập dữ liệu, hiện nút Lưu, Bỏ qua. C Nhiệm vụ người sử dụng. Nhiệm vụ hệ thống. Thông tin hiện ra. Loại bỏ Chọn xong Hiện danh sách chi tiết nội dung của công việc báo cáo, hiện nút Loại bỏ tương ứng với mỗi công việc. Hiện hộp chọn tên các nhân viên trong tổ. Hiện các công việc thuộc dự án báo cáo tổng hợp, trong báo cáo công tác của nhân viên trong hộp chọn mà chưa đưa vào báo cáo tổng hợp, hiện nút Chọn tương ứng với mỗi công việc báo cáo. Hiện nút Chọn xong. Chọn Chọn các nút Loại bỏ chi tiết công việc khỏi nội dung công việc báo cáo tổng hợp đã chọn, giảm tổng giờ công một lượng bằng giờ công của công việc vừa loại bỏ. Thêm công việc vừa chọn vào nội dung công việc báo cáo tổng hợp, tăng tổng giờ công lên một lượng bằng giờ công công việc vừa chọn. C Thông tin chi tiết nội dung công việc báo cáo: - Tên nhân viên. - Ngày, nội dung, kết quả công việc, giờ công và ghi chú. Thông tin các công việc của nhân viên: - Ngày. - Nội dung công việc. - Kết quả. - Ghi chú. B Pha cập nhật danh sách nhân viên: Nhiệm vụ người sử dụng. Nhiệm vụ hệ thống. Thông tin hiện ra. Phân tổ Phân công dự án Sửa Bỏ qua Xóa Chọn việc cập nhật danh sách nhân viên Hiện danh sách nhân viên của trung tâm, hiện nút Sửa, Xóa. Hiện nút Thêm mới, Phân tổ, Phân công dự án. Thông tin về nhân viên: - Tên nhân viên. - Tên đăng nhập. - Số điện thoại nhà riêng. - Số điện thoại di động. - Email. Chọn các nút Xóa các dữ liệu về nhân viên. Hiện trang cập nhật nhân viên mới. Hiện nút Cập nhật, Bỏ qua. Thêm mới Nhập dữ liệu và chọn nút Cập nhật Lưu các dữ liệu về nhân viên mới. Không lưu dữ liệu. Hiện trang cập nhật nhân viên. Hiện nút Cập nhật, Bỏ qua. Bỏ qua Sửa dữ liệu và chọn nút Cập nhật Lưu các dữ liệu về nhân viên. Không lưu dữ liệu mới về nhân viên. Phân công dự án. Phân tổ công tác. Pha cập nhật danh sách tổ công tác: Nhiệm vụ người sử dụng. Nhiệm vụ hệ thống. Thông tin hiện ra. Phân tổ Chọn việc cập nhật danh sách tổ công tác Sửa Bỏ qua Cập nhật Nhập dữ liệu và chọn nút Thêm mới Xóa Chọn các nút Phân tổ công tác. Lưu các dữ liệu về tổ công tác. Xóa các dữ liệu về tổ công tác. Không lưu dữ liệu mới về tổ công tác. Cập nhật Sửa dữ liệu và chọn nút Bỏ qua Hiện trang cập nhật tổ công tác. Hiện nút Cập nhật, Bỏ qua. Hiện trang cập nhật tổ công tác mới. Hiện nút Cập nhật, Bỏ qua. Không lưu dữ liệu. Lưu các dữ liệu về tổ mới. Hiện danh sách các tổ công tác của trung tâm, hiện nút Sửa, Xóa. Hiện nút Thêm mới, Phân tổ. Thông tin về nhân viên: - Mã tổ. - Tên tổ. - Nhiệm vụ. - Ngày lập. - Ngày kết thúc. Pha cập nhật danh sách dự án: Nhiệm vụ người sử dụng. Nhiệm vụ hệ thống. Thông tin hiện ra. Đóng/ Mở dự án Phân tổ Bỏ qua Chọn việc cập nhật danh sách dự án Sửa Bỏ qua Cập nhật Nhập dữ liệu và chọn nút Thêm mới Xóa Chọn các nút Phân tổ công tác. Nếu dự án đóng thì mở dự án, còn nếu dự án mở thì đóng dự án. Lưu các dữ liệu về dự án mới. Hiện danh sách các dự án của trung tâm, hiện nút Đóng/ Mở dự án, Xóa, Sửa. Hiện nút Thêm mới, Phân công dự án. Lưu các dữ liệu về dự án. Xóa các dữ liệu về dự án. Không lưu dữ liệu mới về dự án. Cập nhật Sửa dữ liệu và chọn nút Hiện trang cập nhật dự án. Hiện nút Cập nhật, Bỏ qua. Hiện trang cập nhật dự án mới. Hiện nút Cập nhật, Bỏ qua. Không lưu dữ liệu. Thông tin về nhân viên: - Mã dự án. - Tên dự án. - Nội dung. - Ngày bắt đầu. - Hiện trạng(Đóng/ Mở). Pha phân tổ công tác của quản trị hệ thống: Nhiệm vụ người sử dụng. Nhiệm vụ hệ thống. Thông tin hiện ra. Loại khỏi tổ Chọn việc phân tổ công tác Hiện hộp chọn tổ công tác. Hiện danh sách nhân viên của tổ công tác trong hộp chọn, hiện nút Loại khỏi tổ. Hiện tất cả các nhân viên chưa phân về tổ nào, hiện nút Chuyển vào tổ. Thông tin về nhân viên: - Tên nhân viên. - Tên đăng nhập. Chọn các nút Loại nhân viên ra khỏi tổ công tác trong hộp chọn. Thêm nhân viên vào tổ công tác trong hộp chọn. Chuyển vào tổ Pha phân công nhân viên vào dự án của quản trị hệ thống: Nhiệm vụ người sử dụng. Nhiệm vụ hệ thống. Thông tin hiện ra. Chuyển vào tổ Loại khỏi tổ Chọn việc phân nhân viên vào dự án. Thêm nhân viên vào dự án trong hộp chọn. Loại nhân viên ra khỏi dự án trong hộp chọn. Hiện hộp chọn tổ công tác. Hiện danh sách nhân viên của tổ công tác trong hộp chọn, hiện nút Phân vào dự án. Hiện hộp chọn dự án. Hiện tất cả các nhân viên đã phân công vào dự án trong hộp chọn, hiện nút Loại khỏi dự án. Chọn các nút Thông tin về nhân viên trong dự án: - Tên nhân viên. - Tên đăng nhập. - Tổ quản lý. Thông tin về nhân viên trong tổ: - Tên nhân viên. - Tên đăng nhập. CÀI ĐẶT TRIỂN KHAI HỆ THỐNG . Mô hình hệ thống: ADO.NET ASP.NET Cơ sở dữ liệu SQL Server 2000 Internet Information Services 5.0 (Web Server) Quy trình cài đặt: Cài đặt hệ điều hành Windows Advanced Server 2000, nâng cấp bằng Service Pack 2 của Microsoft. Cài đặt Internet Information Services 5.0 (Có sẵn trong Windows Advanced Server 2000). Cài đặt Microsoft .Net Framework. Cài đặt Microsoft SQL Server 2000. Tạo một Virtual Directory, sao chép các tệp chương trình vào thư mục này. Tạo lập cơ sở dữ liệu từ tệp QLCV.sql Chỉnh sửa các tham số trong ConnectionString: Server, DataBase, UID, PWD ở tệp Web.config. KẾT LUẬN. Đề tài “Xây dựng Website Quản lý công việc tại Trung tâm VASC E-CS ” có ý nghĩa thực tiễn tại Trung tâm VASC E-CS. Đề tài đã đáp ứng một số yêu cầu sau: Trợ giúp nhân viên trung tâm trong công việc lập kế hoạch, ghi nhật ký và báo cáo công tác hàng tuần. Trợ giúp phụ trách các tổ công tác trong việc tổng hợp báo cáo của các nhân viên trong tổ. Trợ giúp cán bộ quản lý trong việc nắm bắt tình hình công tác của nhân viên. Chương trình có giao diện hợp lý, dễ dàng sử dụng và có tính bảo mật. Tuy nhiên, đề tài cần phải hoàn thiện một số chức năng sau: Tăng cường tính bảo mật hơn nữa. Trong chức năng lập báo cáo cần thêm chức năng chuyển dữ liệu thành các tệp Excel , Word... Do trình độ còn hạn chế nên trong đề tài còn có nhiều khiếm khuyết, vì vậy em rất mong sự giúp đỡ của các thầy cô để đề tài hoàn thiện hơn, đáp ứng nhu cầu của thực tế. Tài liệu tham khảo. TS. Trương Văn Tú- TS. Trần Thị Song Minh Giáo trình Hệ thống thông tin quản lý. Nhà xuất bản Thống kê, Hà Nội 2000. TS. Trần Công Uẩn Giáo trình Cơ sở dữ liệu SQL, Access. Nhà xuất bản Thống kê, Hà Nội 2000. Phạm Đức Thành Quản trị nhân lực. Nhà xuất bản Lao động, Hà Nội 1995. Dino Esposito Building Web Solutions with ASP.NET & ADO.NET , Microsoft Corporation 2002(eBook). Jesse Liberty Programming C#, 2nd Edition, Nhà xuất bản O'Reilly 2002(eBook) Các Web Site: www.microsoft.com www.vovisoft.com Phụ lục. Mã nguồn một số trang web: Trang Lập kế hoạch công tác: Phần giao diện LapKH.aspx: ChiTietKH Kế hoạch công tác Nhân viên:        Dự án:            Từ ngày:         Đến ngày:       '> " SelectedIndex=''> '> '> '> ' TextMode="MultiLine"> '> '> '> '> '> '> Thêm công việc vào kế hoạch Mã lệnh LapKH.aspx.cs: using System; using System.Configuration; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace QLCV.NhanVien { /// /// Summary description for ChiTietKH. /// public class LapKH : System.Web.UI.Page { protected System.Web.UI.WebControls.Label lblNgaybd; protected System.Web.UI.WebControls.Label lblNgaykt; protected System.Web.UI.WebControls.DataGrid grdCongViec; protected string strConn= System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]; static DateTime ngaybd,ngaykt; static bool them; static bool edit; protected System.Web.UI.WebControls.LinkButton btnThem; protected System.Web.UI.WebControls.Label lblTenNV; public Hashtable index; protected System.Web.UI.WebControls.DropDownList drdDuAn; protected System.Web.UI.WebControls.Label lblMsg; static string ma_nv; private void Page_Load(object sender, System.EventArgs e) { // kt nguoi dung MIndx(); if(!Page.IsPostBack) { if(Session["ma_nv"]!=null) { if(Session["ngaybd"]!=null && Session["ngaykt"]!=null) { ma_nv=Session["ma_nv"].ToString(); SqlDataReader drd=dr(ma_nv); drd.Read(); ngaybd=Convert.ToDateTime(Session["ngaybd"].ToString()); ngaykt=Convert.ToDateTime(Session["ngaykt"].ToString()); lblNgaybd.Text=ngaybd.ToString("dd/MM/yyyy"); lblNgaykt.Text=ngaykt.ToString("dd/MM/yyyy"); lblTenNV.Text=drd["ho_ten"].ToString(); try { drdDuAn.DataSource=DuAn(); drdDuAn.DataBind(); BindGrid(drdDuAn.SelectedItem.Value.ToString()); } catch(Exception ex) { lblMsg.Text=ex.Message; } } else Response.Redirect("ChonTG.aspx?trang_thai=1"); } else Response.Redirect("/QLCV/DangNhap.aspx"); } } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.OnInit(e); } /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.drdDuAn.SelectedIndexChanged += new System.EventHandler(this.drdDuAn_Change); this.grdCongViec.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.grdCongViec_Page); this.grdCongViec.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdCongViec_Cancel); this.grdCongViec.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdCongViec_Edit); this.grdCongViec.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdCongViec_Update); this.grdCongViec.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdCongViec_Delete); this.btnThem.Click += new System.EventHandler(this.btnThem_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void BindGrid(string ma_da) { DataSet ds= new DataSet(); string strSql="Select ma_cv, ngay, dia_diem, noi_dung, gio_cong_dk,ghi_chu, ke_hoach from CongViec " +"where ma_nv=@ma_nv and ma_da=@ma_da and ngoai_kh=0 and (ngay between @ngaybd and @ngaykt) order by ngay"; SqlConnection cn=new SqlConnection(strConn); SqlCommand cmd=new SqlCommand(strSql,cn); cmd.Parameters.Add("@ma_nv",SqlDbType.Char,20).Value=ma_nv; cmd.Parameters.Add("@ma_da",SqlDbType.Char,10).Value=ma_da; cmd.Parameters.Add("@ngaybd",SqlDbType.DateTime,8).Value=ngaybd; cmd.Parameters.Add("@ngaykt",SqlDbType.DateTime,8).Value=ngaykt; SqlDataAdapter da=new SqlDataAdapter(cmd); da.Fill(ds); grdCongViec.DataSource=ds; grdCongViec.DataBind(); grdCongViec.DataKeyField="ma_cv"; cn.Close(); } protected SqlDataReader dr(string ma_nv) { string strSql="Select * from NhanVien where ma_nv=@ma_nv"; SqlConnection cn= new SqlConnection(strConn); SqlCommand cmd= new SqlCommand(strSql ,cn); cmd.Parameters.Add("@ma_nv",SqlDbType.Char,20).Value=ma_nv; cn.Open(); SqlDataReader rdr=cmd.ExecuteReader(CommandBehavior.SingleRow); return rdr; } private DataSet DuAn() { string strSql="Select PhanCong.ma_nv,PhanCong.ma_da, DuAn.ten_da from PhanCong " + "inner join DuAn on PhanCong.ma_da=DuAn.ma_da where PhanCong.ma_nv=@ma_nv and DuAn.ket_thuc=0"; SqlConnection cn= new SqlConnection(strConn); SqlCommand cmd= new SqlCommand(strSql,cn); cmd.Parameters.Add("@ma_nv",SqlDbType.Char,20).Value=ma_nv; cn.Open(); SqlDataAdapter da=new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); return ds; } private void drdDuAn_Change(object sender, System.EventArgs e) { BindGrid(drdDuAn.SelectedItem.Value.ToString()); } private void grdCongViec_Edit(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e) { if(!edit) { grdCongViec.EditItemIndex= (int) e.Item.ItemIndex; BindGrid(drdDuAn.SelectedItem.Value.ToString()); drdDuAn.Enabled=false; edit=true; } } private void grdCongViec_Delete(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e) { if(!edit) { int ma_cv=(int)grdCongViec.DataKeys[e.Item.ItemIndex]; string strSql="Delete from CongViec where ma_cv=@ma_cv and ma_nv=@ma_nv"; SqlConnection cn=new SqlConnection(strConn); SqlCommand cmd=new SqlCommand(strSql,cn); cmd.Parameters.Add("@ma_nv",SqlDbType.Char,20).Value=ma_nv; cmd.Parameters.Add("@ma_cv",SqlDbType.Int,4).Value=ma_cv; cn.Open(); cmd.ExecuteNonQuery(); grdCongViec.EditItemIndex=-1; BindGrid(drdDuAn.SelectedItem.Value.ToString()); drdDuAn.Enabled=true; edit=false; } } private void btnThem_Click(object sender, System.EventArgs e) { if(!edit) { them=true; edit=true; DataSet ds= new DataSet(); string strSql="Select ma_cv, ngay, dia_diem, noi_dung, gio_cong_dk,ghi_chu, ke_hoach from CongViec " +"where ma_nv=@ma_nv and ma_da=@ma_da and ngoai_kh=0 and (ngay between @ngaybd and @ngaykt) order by ngay"; SqlConnection cn=new SqlConnection(strConn); SqlCommand cmd=new SqlCommand(strSql,cn); cmd.Parameters.Add("@ma_nv",SqlDbType.Char,20).Value=ma_nv; cmd.Parameters.Add("@ma_da",SqlDbType.Char,10).Value=drdDuAn.SelectedItem.Value.ToString(); cmd.Parameters.Add("@ngaybd",SqlDbType.DateTime,8).Value=ngaybd; cmd.Parameters.Add("@ngaykt",SqlDbType.DateTime,8).Value=ngaykt; SqlDataAdapter da=new SqlDataAdapter(cmd); da.Fill(ds); // add a new blank row to the end of the data object[] rowValues = { null, ngaybd, "", "",null, "",false}; ds.Tables[0].Rows.Add(rowValues); // figure out the EditItemIndex, last record on last page int recordCount = ds.Tables[0].Rows.Count; if(recordCount>=1) recordCount--; grdCongViec.CurrentPageIndex = recordCount/grdCongViec.PageSize; grdCongViec.EditItemIndex = recordCount%grdCongViec.PageSize; // databind grdCongViec.DataKeyField="ma_cv"; grdCongViec.DataSource = ds; grdCongViec.DataBind(); drdDuAn.Enabled=false; } } private void grdCongViec_Cancel(object sender, DataGridCommandEventArgs e) { grdCongViec.EditItemIndex=-1; drdDuAn.Enabled=true; BindGrid(drdDuAn.SelectedItem.Value.ToString()); them =false; edit=false; } public void grdCongViec_Update(object sender, DataGridCommandEventArgs e) { if(((TextBox)e.Item.Cells[4].FindControl("txtND")).Text!="" && ((TextBox)e.Item.Cells[5].FindControl("txtGLD")).Text!="") { SqlConnection myConnection = new SqlConnection(strConn); SqlCommand UpdateCommand = new SqlCommand(); UpdateCommand.Connection = myConnection; try { string ma_da=drdDuAn.SelectedItem.Value.ToString(); System.DateTime ngay=Convert.ToDateTime(((DropDownList)e.Item.Cells[2].FindControl("drlNgay")).SelectedItem.Text); string dia_diem=((TextBox)e.Item.Cells[3].FindControl("txtDD")).Text; string noi_dung=((TextBox)e.Item.Cells[4].FindControl("txtND")).Text; double gio_cong_dk=Convert.ToDouble(((TextBox)e.Item.Cells[5].FindControl("txtGLD")).Text); string ghi_chu=((TextBox)e.Item.Cells[6].FindControl("txtGH")).Text; int ke_hoach=(((CheckBox)e.Item.Cells[7].FindControl("chbEHien")).Checked==true)? 1 : 0; int ngoai_kh=0; int bao_cao=0; if (them) UpdateCommand.CommandText = "INSERT INTO CongViec(ma_nv, ma_da, ngay, dia_diem, noi_dung, gio_cong_dk, ghi_chu, ke_hoach, ngoai_kh, bao_cao) VALUES (@ma_nv, @ma_da, @ngay, @dia_diem, @noi_dung, @gio_cong_dk, @ghi_chu, @ke_hoach, @ngoai_kh, @bao_cao)"; else { int ma_cv = (int)grdCongViec.DataKeys[e.Item.ItemIndex]; UpdateCommand.CommandText = "UPDATE CongViec SET ngay=@ngay,dia_diem=@dia_diem, noi_dung=@noi_dung, gio_cong_dk=@gio_cong_dk, ghi_chu=@ghi_chu, ke_hoach=@ke_hoach, ngoai_kh=@ngoai_kh, bao_cao=@bao_cao WHERE ma_cv = @ma_cv and ma_nv= @ma_nv"; UpdateCommand.Parameters.Add("@ma_cv",SqlDbType.Int,4).Value=ma_cv; } UpdateCommand.Parameters.Add("@ma_nv", SqlDbType.Char,20).Value = ma_nv; UpdateCommand.Parameters.Add("@ma_da", SqlDbType.Char,10).Value = ma_da; UpdateCommand.Parameters.Add("@dia_diem", SqlDbType.NVarChar, 50).Value = dia_diem; UpdateCommand.Parameters.Add("@ghi_chu", SqlDbType.NVarChar, 50).Value = ghi_chu; UpdateCommand.Parameters.Add("@noi_dung", SqlDbType.NVarChar, 100).Value = noi_dung; UpdateCommand.Parameters.Add("@gio_cong_dk", SqlDbType.Real, 4).Value = gio_cong_dk; UpdateCommand.Parameters.Add("@ngay", SqlDbType.DateTime, 8).Value = ngay; UpdateCommand.Parameters.Add("@ngoai_kh",SqlDbType.Bit,1).Value=ngoai_kh; UpdateCommand.Parameters.Add("@ke_hoach", SqlDbType.Bit,1).Value = ke_hoach; UpdateCommand.Parameters.Add("@bao_cao", SqlDbType.Bit,1).Value = bao_cao; try { myConnection.Open(); UpdateCommand.ExecuteNonQuery(); } catch (SqlException ex) { lblMsg.Visible=true; lblMsg.Text=ex.Message.ToString(); } UpdateCommand.Connection.Close(); grdCongViec.EditItemIndex=-1; drdDuAn.Enabled=true; BindGrid(drdDuAn.SelectedItem.Value.ToString()); them=false; edit=false; lblMsg.Visible=false; } catch(Exception ex1) { lblMsg.Visible=true; ((TextBox)e.Item.Cells[6].FindControl("txtGLD")).Text=""; if(ex1.Message=="Input string was not in a correct format.") lblMsg.Text="Giờ lao động phải có dạng số"; else lblMsg.Text=ex1.Message; } } else { lblMsg.Visible=true; lblMsg.Text="Bạn phải mô tả nội dung công việc và giờ lao động dự kiến trước khi lưu!"; } } private void grdCongViec_Page(object sender, DataGridPageChangedEventArgs e) { if(!edit) { drdDuAn.Enabled=true; grdCongViec.EditItemIndex=-1; grdCongViec.CurrentPageIndex=e.NewPageIndex; BindGrid(drdDuAn.SelectedItem.Value.ToString()); edit=false; } } public ICollection Date() { DateTime date; date=new DateTime(ngaybd.Year,ngaybd.Month,ngaybd.Day); DataTable tb=new DataTable(); DataRow ro; tb.Columns.Add(new DataColumn("day",typeof(string))); while(date<=ngaykt) { ro=tb.NewRow(); ro["day"]=date.ToShortDateString(); tb.Rows.Add(ro); date=date.AddDays(1); } DataView dv=new DataView(tb); return dv; } protected void MIndx() { int i=0; index =new Hashtable(); DateTime date=new DateTime(ngaybd.Year,ngaybd.Month,ngaybd.Day); while(date<=ngaykt) { index[date.ToString()]=i; i++; date=date.AddDays(1); } } } } Trang Ghi nhật ký công tác: Phần giao diện GhiNK.aspx: Ghi nhật ký công tác Ghi nhật ký công tác Nhân viên:   Dự án:         Từ ngày:     Đến ngày:   '> ' TextMode="MultiLine"> '> '> '> '> Cập nhật công việc ngoài kế hoạch '> " SelectedIndex=''> '> '> '> ' TextMode="MultiLine"> '> ' TextMode="MultiLine"> '> '> '> '> Thêm công việc ngoài kế hoạch   Mã lệnh GhiNK.aspx.cs: using System; using System.Configuration; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace QLCV.NhanVien { /// /// Summary description for GhiNK. /// public class GhiNK : System.Web.UI.Page { protected System.Web.UI.WebControls.Label lblTenNV; protected System.Web.UI.WebControls.DropDownList drdDuAn; protected System.Web.UI.WebControls.DataGrid grdCongViec; protected System.Web.UI.WebControls.Label lblMsg; protected System.Web.UI.WebControls.Label lblNgaybd; protected System.Web.UI.WebControls.Label lblNgaykt; protected System.Web.UI.WebControls.DataGrid grdCVNKH; protected System.Web.UI.WebControls.LinkButton btnCapNhatCVNKH; protected string strConn=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]; public Hashtable index; static bool them; static string ma_nv; static DateTime ngaybd,ngaykt; static bool edit; protected System.Web.UI.WebControls.LinkButton btnThem; static bool ngoaiKH; private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here if(!Page.IsPostBack) { if(Session["ma_nv"]!=null) { if(Session["ngaybd"] !=null && Session["ngaykt"] !=null) { ma_nv=Session["ma_nv"].ToString(); SqlDataReader drd=dr(ma_nv); drd.Read(); ngaybd=Convert.ToDateTime(Session["ngaybd"]); ngaykt=Convert.ToDateTime(Session["ngaykt"]); lblNgaybd.Text=ngaybd.ToString("dd/MM/yyyy"); lblNgaykt.Text=ngaykt.ToString("dd/MM/yyyy"); lblTenNV.Text=drd["ho_ten"].ToString(); drdDuAn.DataSource=DuAn(); drdDuAn.DataBind(); ngoaiKH=false; BindGrid(drdDuAn.SelectedItem.Value.ToString()); } else Response.Redirect("ChonTG.aspx?trang_thai=2"); } else Response.Redirect("/QLCV/DangNhap.aspx"); } if (grdCVNKH.Visible==true) MIndx(); } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.OnInit(e); } /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.drdDuAn.SelectedIndexChanged += new System.EventHandler(this.drdDuAn_Change); this.grdCongViec.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.grdCongViec_Page); this.grdCongViec.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdCongViec_Cancel); this.grdCongViec.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdCongViec_Edit); this.grdCongViec.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdCongViec_Update); this.btnCapNhatCVNKH.Click += new System.EventHandler(this.btnCapNhatCVNKH_Click); this.grdCVNKH.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.grdCVNKH_Page); this.grdCVNKH.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdCVNKH_Cancel); this.grdCVNKH.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdCVNKH_Edit); this.grdCVNKH.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdCVNKH_Update); this.grdCVNKH.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdCVNKH_Delete); this.btnThem.Click += new System.EventHandler(this.btnThem_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void BindGrid(string ma_da) { DataSet ds= new DataSet(); string strSql; if(ngoaiKH) strSql="Select ma_cv, ngay, dia_diem, noi_dung, gio_cong_dk,ket_qua, gio_cong, ghi_chu from CongViec " +"where ma_nv=@ma_nv and ma_da=@ma_da and (ngay between @ngaybd and @ngaykt) and ngoai_kh=1 order by ngay"; else strSql="Select ma_cv, ngay, dia_diem, noi_dung, gio_cong_dk,ket_qua, gio_cong, ghi_chu from CongViec " +"where ma_nv=@ma_nv and ma_da=@ma_da and (ngay between @ngaybd and @ngaykt) order by ngay"; SqlConnection cn=new SqlConnection(strConn); SqlCommand cmd=new SqlCommand(strSql,cn); cmd.Parameters.Add("@ma_nv",SqlDbType.Char,20).Value=ma_nv; cmd.Parameters.Add("@ma_da",SqlDbType.Char,10).Value=ma_da; cmd.Parameters.Add("@ngaybd",SqlDbType.DateTime,8).Value=ngaybd; cmd.Parameters.Add("@ngaykt",SqlDbType.DateTime,8).Value=ngaykt; SqlDataAdapter da=new SqlDataAdapter(cmd); da.Fill(ds); if(ngoaiKH) { grdCVNKH.DataSource=ds; grdCVNKH.DataBind(); grdCVNKH.DataKeyField="ma_cv"; } else { grdCongViec.DataSource=ds; grdCongViec.DataBind(); grdCongViec.DataKeyField="ma_cv"; } cn.Close(); } protected SqlDataReader dr(string ma_nv) { string strSql="Select * from NhanVien where ma_nv=@ma_nv"; SqlConnection cn= new SqlConnection(strConn); SqlCommand cmd= new SqlCommand(strSql ,cn); cmd.Parameters.Add("@ma_nv",SqlDbType.Char,20).Value=ma_nv; cn.Open(); SqlDataReader rdr=cmd.ExecuteReader(CommandBehavior.SingleRow); return rdr; } private DataSet DuAn() { string strSql="Select PhanCong.ma_nv,PhanCong.ma_da, DuAn.ten_da from PhanCong " + "inner join DuAn on PhanCong.ma_da=DuAn.ma_da where PhanCong.ma_nv=@ma_nv and DuAn.ket_thuc=0"; SqlConnection cn= new SqlConnection(strConn); SqlCommand cmd= new SqlCommand(strSql,cn); cmd.Parameters.Add("@ma_nv",SqlDbType.Char,20).Value=ma_nv; cn.Open(); SqlDataAdapter da=new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); return ds; } private void drdDuAn_Change(object sender, System.EventArgs e) { BindGrid(drdDuAn.SelectedItem.Value.ToString()); } private void grdCongViec_Edit(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e) { if(!edit) { grdCongViec.EditItemIndex= (int) e.Item.ItemIndex; BindGrid(drdDuAn.SelectedItem.Value.ToString()); drdDuAn.Enabled=false; edit=true; } } private void grdCongViec_Cancel(object sender, DataGridCommandEventArgs e) { grdCongViec.EditItemIndex=-1; drdDuAn.Enabled=true; BindGrid(drdDuAn.SelectedItem.Value.ToString()); edit=false; lblMsg.Visible=false; } public void grdCongViec_Update(object sender, DataGridCommandEventArgs e) { if((((TextBox)e.Item.Cells[4].FindControl("txtKQ")).Text!="") && (((TextBox)e.Item.Cells[5].FindControl("txtGC")).Text!="")) { SqlConnection myConnection = new SqlConnection(strConn); SqlCommand UpdateCommand = new SqlCommand(); UpdateCommand.Connection = myConnection; //string g=(TextBox)e.Item.Cells[5].FindControl("TextBox7")).Text; try { double gio_cong=Convert.ToDouble(((TextBox)e.Item.Cells[5].FindControl("txtGC")).Text); string ket_qua=((TextBox)e.Item.Cells[4].FindControl("txtKQ")).Text; string ghi_chu=((TextBox)e.Item.Cells[6].FindControl("txtGH")).Text; int ma_cv = (int)grdCongViec.DataKeys[e.Item.ItemIndex]; UpdateCommand.CommandText = "UPDATE CongViec SET ket_qua=@ket_qua, gio_cong=@gio_cong, ghi_chu=@ghi_chu WHERE ma_cv = @ma_cv and ma_nv= @ma_nv"; UpdateCommand.Parameters.Add("@ma_cv",SqlDbType.Int,4).Value=ma_cv; UpdateCommand.Parameters.Add("@ma_nv", SqlDbType.Char,20).Value = ma_nv; UpdateCommand.Parameters.Add("@ghi_chu", SqlDbType.NVarChar, 50).Value = ghi_chu; UpdateCommand.Parameters.Add("@ket_qua", SqlDbType.NVarChar, 50).Value = ket_qua; UpdateCommand.Parameters.Add("@gio_cong", SqlDbType.Real, 4).Value = gio_cong; try { myConnection.Open(); UpdateCommand.ExecuteNonQuery(); } catch (SqlException ex) { lblMsg.Visible=true; lblMsg.Text=ex.Message; } UpdateCommand.Connection.Close(); grdCongViec.EditItemIndex=-1; drdDuAn.Enabled=true; BindGrid(drdDuAn.SelectedItem.Value.ToString()); edit=false; lblMsg.Visible=false; } catch(Exception ex1) { lblMsg.Visible=true; ((TextBox)e.Item.Cells[5].FindControl("txtGC")).Text=""; if(ex1.Message=="Input string was not in a correct format.") lblMsg.Text="Giờ công phải có dạng số"; else lblMsg.Text=ex1.Message; } } else { lblMsg.Text="Bạn phải ghi kết quả công việc và giờ công trước khi lưu"; lblMsg.Visible=true; } } private void grdCongViec_Page(object sender, DataGridPageChangedEventArgs e) { if(!edit) { drdDuAn.Enabled=true; grdCongViec.EditItemIndex=-1; grdCongViec.CurrentPageIndex=e.NewPageIndex; BindGrid(drdDuAn.SelectedItem.Value.ToString()); edit=false; } } private void btnCapNhatCVNKH_Click(object sender, System.EventArgs e) { if(!edit) { grdCongViec.Visible=ngoaiKH; drdDuAn.Enabled=ngoaiKH; grdCVNKH.Visible=!(ngoaiKH); btnThem.Visible=!(ngoaiKH); if(ngoaiKH) btnCapNhatCVNKH.Text="Cập nhật công việc ngoài kế hoạch"; else btnCapNhatCVNKH.Text="Cập nhật xong công việc ngoài kế hoạch"; ngoaiKH=!(ngoaiKH); BindGrid(drdDuAn.SelectedItem.Value.ToString()); } } private void grdCVNKH_Edit(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e) { if(!edit) { grdCVNKH.EditItemIndex= (int) e.Item.ItemIndex; BindGrid(drdDuAn.SelectedItem.Value.ToString()); edit=true; } } private void grdCVNKH_Delete(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e) { if(!edit) { int ma_cv=(int)grdCVNKH.DataKeys[e.Item.ItemIndex]; string strSql="Delete from CongViec where ma_cv=@ma_cv and ma_nv=@ma_nv and ngoai_kh=1"; SqlConnection cn=new SqlConnection(strConn); SqlCommand cmd=new SqlCommand(strSql,cn); cmd.Parameters.Add("@ma_nv",SqlDbType.Char,20).Value=ma_nv; cmd.Parameters.Add("@ma_cv",SqlDbType.Int,4).Value=ma_cv; cn.Open(); cmd.ExecuteNonQuery(); grdCongViec.EditItemIndex=-1; BindGrid(drdDuAn.SelectedItem.Value.ToString()); edit=false; } } private void btnThem_Click(object sender, System.EventArgs e) { if(!edit) { them=true; edit=true; DataSet ds= new DataSet(); string strSql="Select ma_cv, ngay, dia_diem, noi_dung, ket_qua, gio_cong,ghi_chu from CongViec " +"where ma_nv=@ma_nv and ma_da=@ma_da and (ngay between @ngaybd and @ngaykt) and ngoai_kh=1 order by ngay"; SqlConnection cn=new SqlConnection(strConn); SqlCommand cmd=new SqlCommand(strSql,cn); cmd.Parameters.Add("@ma_nv",SqlDbType.Char,20).Value=ma_nv; cmd.Parameters.Add("@ma_da",SqlDbType.Char,10).Value=drdDuAn.SelectedItem.Value.ToString(); cmd.Parameters.Add("@ngaybd",SqlDbType.DateTime,8).Value=ngaybd; cmd.Parameters.Add("@ngaykt",SqlDbType.DateTime,8).Value=ngaykt; SqlDataAdapter da=new SqlDataAdapter(cmd); da.Fill(ds); object[] rowValues = { null, ngaybd, "", "","",null,""}; ds.Tables[0].Rows.Add(rowValues); int recordCount = ds.Tables[0].Rows.Count; if(recordCount>=1) recordCount--; grdCVNKH.CurrentPageIndex = recordCount/grdCVNKH.PageSize; grdCVNKH.EditItemIndex = recordCount%grdCVNKH.PageSize; grdCVNKH.DataKeyField="ma_cv"; grdCVNKH.DataSource = ds; grdCVNKH.DataBind(); } } private void grdCVNKH_Cancel(object sender, DataGridCommandEventArgs e) { grdCVNKH.EditItemIndex=-1; BindGrid(drdDuAn.SelectedItem.Value.ToString()); them =false; edit=false; } public void grdCVNKH_Update(object sender, DataGridCommandEventArgs e) { if(((TextBox)e.Item.Cells[4].FindControl("txtND")).Text!="" && ((TextBox)e.Item.Cells[5].FindControl("txtKQ")).Text!="" &&((TextBox)e.Item.Cells[6].FindControl("txtGC")).Text!="") { SqlConnection myConnection = new SqlConnection(strConn); SqlCommand UpdateCommand = new SqlCommand(); UpdateCommand.Connection = myConnection; try { string ma_da=drdDuAn.SelectedItem.Value.ToString(); System.DateTime ngay=Convert.ToDateTime(((DropDownList)e.Item.Cells[2].FindControl("drlNgay")).SelectedItem.Text); string dia_diem=((TextBox)e.Item.Cells[3].FindControl("txtDD")).Text; string noi_dung=((TextBox)e.Item.Cells[4].FindControl("txtND")).Text; string ket_qua=((TextBox)e.Item.Cells[5].FindControl("txtKQ")).Text; double gio_cong=Convert.ToDouble(((TextBox)e.Item.Cells[6].FindControl("txtGC")).Text); string ghi_chu=((TextBox)e.Item.Cells[7].FindControl("txtGH")).Text; int ke_hoach=0; int ngoai_kh=1; int bao_cao=0; if (them) UpdateCommand.CommandText = "INSERT INTO CongViec(ma_nv, ma_da, ngay, dia_diem, noi_dung, gio_cong, ket_qua, ghi_chu, ke_hoach, ngoai_kh, bao_cao) VALUES (@ma_nv, @ma_da, @ngay, @dia_diem, @noi_dung, @gio_cong, @ket_qua, @ghi_chu, @ke_hoach, @ngoai_kh, @bao_cao)"; else { int ma_cv = (int)grdCVNKH.DataKeys[e.Item.ItemIndex]; UpdateCommand.CommandText = "UPDATE CongViec SET ngay=@ngay,dia_diem=@dia_diem, noi_dung=@noi_dung, ket_qua=@ket_qua, gio_cong=@gio_cong, ghi_chu=@ghi_chu, ke_hoach=@ke_hoach, ngoai_kh=@ngoai_kh, bao_cao=@bao_cao WHERE ma_cv = @ma_cv and ma_nv= @ma_nv"; UpdateCommand.Parameters.Add("@ma_cv",SqlDbType.Int,4).Value=ma_cv; } UpdateCommand.Parameters.Add("@ma_nv", SqlDbType.Char,20).Value = ma_nv; UpdateCommand.Parameters.Add("@ma_da", SqlDbType.Char,10).Value = ma_da; UpdateCommand.Parameters.Add("@dia_diem", SqlDbType.NVarChar, 50).Value = dia_diem; UpdateCommand.Parameters.Add("@ghi_chu", SqlDbType.NVarChar, 50).Value = ghi_chu; UpdateCommand.Parameters.Add("@noi_dung", SqlDbType.NVarChar, 100).Value = noi_dung; UpdateCommand.Parameters.Add("@ket_qua", SqlDbType.NVarChar, 50).Value = ket_qua; UpdateCommand.Parameters.Add("@gio_cong", SqlDbType.Real, 4).Value = gio_cong; UpdateCommand.Parameters.Add("@ngay", SqlDbType.DateTime, 8).Value = ngay; UpdateCommand.Parameters.Add("@ngoai_kh",SqlDbType.Bit,1).Value=ngoai_kh; UpdateCommand.Parameters.Add("@ke_hoach", SqlDbType.Bit,1).Value = ke_hoach; UpdateCommand.Parameters.Add("@bao_cao", SqlDbType.Bit,1).Value = bao_cao; try { myConnection.Open(); UpdateCommand.ExecuteNonQuery(); lblMsg.Visible=false; } catch (SqlException ex) { lblMsg.Visible=true; lblMsg.Text=ex.Message; } finally { UpdateCommand.Connection.Close(); grdCVNKH.EditItemIndex=-1; BindGrid(drdDuAn.SelectedItem.Value.ToString()); them=false; edit=false; } } catch(Exception ex1) { lblMsg.Visible=true; ((TextBox)e.Item.Cells[5].FindControl("txtGC")).Text=""; if(ex1.Message=="Input string was not in a correct format.") lblMsg.Text="Giờ công phải có dạng số"; else lblMsg.Text=ex1.Message; } } else { lblMsg.Visible=true; lblMsg.Text="Bạn phải mô tả nội dung,kết quả công việc và giờ công trước khi lưu!"; } } private void grdCVNKH_Page(object sender, DataGridPageChangedEventArgs e) { if(!edit) { grdCVNKH.EditItemIndex=-1; grdCVNKH.CurrentPageIndex=e.NewPageIndex; BindGrid(drdDuAn.SelectedItem.Value.ToString()); edit=false; } } public ICollection Date() { DateTime date; date=new DateTime(ngaybd.Year,ngaybd.Month,ngaybd.Day); DataTable tb=new DataTable(); DataRow ro; tb.Columns.Add(new DataColumn("day",typeof(string))); while(date<=ngaykt) { ro=tb.NewRow(); ro["day"]=date.ToShortDateString(); tb.Rows.Add(ro); date=date.AddDays(1); } DataView dv=new DataView(tb); return dv; } protected void MIndx() { int i=0; index =new Hashtable(); DateTime date=new DateTime(ngaybd.Year,ngaybd.Month,ngaybd.Day); while(date<=ngaykt) { index[date.ToString()]=i; i++; date=date.AddDays(1); } } } } Trang Lập báo cáo công tác: Phần giao diện LapBC.aspx: LapBC Lập báo cáo công tác Nhân viên:   Dự án:         Từ ngày:     Đến ngày:   '> Xem báo cáo Mã lệnh LapBC.aspx.cs: using System; using System.Configuration; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace QLCV.NhanVien { /// /// Summary description for LapBC. /// public class LapBC : System.Web.UI.Page { protected System.Web.UI.WebControls.DataGrid grdCongViec; protected System.Web.UI.WebControls.Label lblNgaykt; protected System.Web.UI.WebControls.Label lblNgaybd; protected System.Web.UI.WebControls.DropDownList drdDuAn; protected System.Web.UI.WebControls.Label lblTenNV; protected System.Web.UI.WebControls.LinkButton btnXem; protected System.Web.UI.WebControls.Label lblMsg; static DateTime ngaybd,ngaykt; static string ma_nv; protected string strConn=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]; private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here if(!Page.IsPostBack) { if(Session["ma_nv"]!=null) { if(Session["ngaybd"] !=null && Session["ngaykt"] !=null) { ma_nv=Session["ma_nv"].ToString(); SqlDataReader drd=dr(ma_nv); drd.Read(); ngaybd=Convert.ToDateTime(Session["ngaybd"].ToString()); ngaykt=Convert.ToDateTime(Session["ngaykt"].ToString()); lblNgaybd.Text=ngaybd.ToString("dd/MM/yyyy"); lblNgaykt.Text=ngaykt.ToString("dd/MM/yyyy"); lblTenNV.Text=drd["ho_ten"].ToString(); drdDuAn.DataSource=DuAn(); drdDuAn.DataBind(); BindGrid(drdDuAn.SelectedItem.Value.ToString()); } else Response.Redirect("ChonTG.aspx?trang_thai=3"); } else Response.Redirect("/QLCV/DangNhap.aspx"); } } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.OnInit(e); } /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.drdDuAn.SelectedIndexChanged += new System.EventHandler(this.drdDuAn_Change); this.grdCongViec.SelectedIndexChanged += new System.EventHandler(this.grdCongViec_SelectedIndexChange); this.btnXem.Click += new System.EventHandler(this.btnXem_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void BindGrid(string ma_da) { DataSet ds= new DataSet(); string strSql="Select ma_cv, ngay, dia_diem, noi_dung, gio_cong_dk,ket_qua, gio_cong, ghi_chu, bao_cao from CongViec " +"where ma_nv=@ma_nv and ma_da=@ma_da and (ngay between @ngaybd and @ngaykt) " +"and ket_qua IS NOT NULL and gio_cong IS NOT NULL order by ngay"; SqlConnection cn=new SqlConnection(strConn); SqlCommand cmd=new SqlCommand(strSql,cn); cmd.Parameters.Add("@ma_nv",SqlDbType.Char,20).Value=ma_nv; cmd.Parameters.Add("@ma_da",SqlDbType.Char,10).Value=ma_da; cmd.Parameters.Add("@ngaybd",SqlDbType.DateTime,8).Value=ngaybd; cmd.Parameters.Add("@ngaykt",SqlDbType.DateTime,8).Value=ngaykt; SqlDataAdapter da=new SqlDataAdapter(cmd); da.Fill(ds); grdCongViec.DataSource=ds; grdCongViec.DataBind(); grdCongViec.DataKeyField="ma_cv"; cn.Close(); } protected SqlDataReader dr(string ma_nv) { string strSql="Select * from NhanVien where ma_nv=@ma_nv"; SqlConnection cn= new SqlConnection(strConn); SqlCommand cmd= new SqlCommand(strSql ,cn); cmd.Parameters.Add("@ma_nv",SqlDbType.Char,20).Value=ma_nv; cn.Open(); SqlDataReader rdr=cmd.ExecuteReader(CommandBehavior.SingleRow); return rdr; } private DataSet DuAn() { string strSql="Select PhanCong.ma_nv,PhanCong.ma_da, DuAn.ten_da from PhanCong " + "inner join DuAn on PhanCong.ma_da=DuAn.ma_da where PhanCong.ma_nv=@ma_nv and DuAn.ket_thuc=0"; SqlConnection cn= new SqlConnection(strConn); SqlCommand cmd= new SqlCommand(strSql,cn); cmd.Parameters.Add("@ma_nv",SqlDbType.Char,20).Value=ma_nv; cn.Open(); SqlDataAdapter da=new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); return ds; } private void drdDuAn_Change(object sender, System.EventArgs e) { BindGrid(drdDuAn.SelectedItem.Value.ToString()); } private bool Bao_cao(int ma_cv) { string strSql="Select bao_cao from CongViec where ma_cv=@ma_cv and ma_nv=@ma_nv"; SqlConnection cn= new SqlConnection(strConn); SqlCommand cmd= new SqlCommand(strSql ,cn); cmd.Parameters.Add("@ma_nv",SqlDbType.NVarChar,20).Value=ma_nv; cmd.Parameters.Add("@ma_cv",SqlDbType.Int,4).Value=ma_cv; cn.Open(); SqlDataReader rdr=cmd.ExecuteReader(CommandBehavior.SingleRow); bool tl=true; rdr.Read(); if(rdr["bao_cao"].ToString()=="False") tl=false; return tl; } public string HienThi(bool gt) { string ten="Chưa báo cáo"; if (gt) ten="Đã báo cáo"; return ten; } private void grdCongViec_SelectedIndexChange(object sender, System.EventArgs e) { int ma_cv=(int)grdCongViec.DataKeys[grdCongViec.SelectedIndex]; SqlConnection myConnection = new SqlConnection(strConn); SqlCommand UpdateCommand = new SqlCommand(); UpdateCommand.Connection = myConnection; int bao_cao=(Bao_cao(ma_cv)==true)? 0 : 1; UpdateCommand.CommandText = "UPDATE CongViec SET bao_cao=@bao_cao WHERE ma_cv = @ma_cv and ma_nv= @ma_nv"; UpdateCommand.Parameters.Add("@ma_cv",SqlDbType.Int,4).Value=ma_cv; UpdateCommand.Parameters.Add("@ma_nv", SqlDbType.VarChar,20).Value = ma_nv; UpdateCommand.Parameters.Add("@bao_cao", SqlDbType.Bit, 1).Value = bao_cao; try { myConnection.Open(); UpdateCommand.ExecuteNonQuery(); } catch (SqlException ex) { Response.Write(ex.Message.ToString()); } UpdateCommand.Connection.Close(); grdCongViec.EditItemIndex=-1; drdDuAn.Enabled=true; BindGrid(drdDuAn.SelectedItem.Value.ToString()); } private void btnXem_Click(object sender, System.EventArgs e) { Response.Redirect("BaoCao.aspx?ma_da=" + drdDuAn.SelectedItem.Value.ToString()); } } }

Các file đính kèm theo tài liệu này:

  • docXây dựng Website Quản lý công việc tại Trung tâm VASC E-CS.DOC