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
118 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2578 | Lượt tải: 1
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:
- Xây dựng Website Quản lý công việc tại Trung tâm VASC E-CS.DOC