Chuyên đề Xây dựng phần mềm quản lý tài sản cố định

Mục đích của thiết kế ra là rất quan trọng trên thực tế vì những nhận xét đánh giá về hệ thống thông tin của người sử dụng là dựa vào những yếu tố đầu ra này. Họ có thể từ chối sử dụng vì những yêu cầu kém ở đây cho dù HTTT được đánh giá tốt ở những khía cạnh khác. Khuân dạng đầu ra không những đẹp, hợp lý mà còn phải giúp người sử dụng thực hiện tốt hơn, dễ dàng hơn cho công việc của họ. Sau đây là một số nguyên tắc cơ bản cho việc trình bày thông tin ra màn hình: o Đặt mọi thông tin gắn liền với nhiệm vụ trên cùng một màn hình. o Người sử dụng không phải nhớ thông tin từ màn hình này sang màn hình khác. o Chỉ dẫn rõ ràng cách thoát khỏi màn hình. Đặt giữa các tiêu đề và sắp xếp thông tin theo trục trung tâm. o Nếu đầu ra gồm nhiều trang màn hình thì mỗi trang phải được đánh số thứ tự. Việc này giúp người đang sử dụng biết mình đang ở đâu. o Viết văn bản theo quy ước chung bằng cách sử dụng chữ in hoa, in thường, chữ gạch chân và ngắt hợp lý. o Đặt tên đầu cột cho mỗi cột.

doc128 trang | Chia sẻ: aloso | Lượt xem: 1800 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Chuyên đề Xây dựng phần mềm quản lý tài sản cố định, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ữ liệu Kích thước Giải Thích 1 Ma_Pb Char 8 Mã phòng ban(khóa chính) 2 Ten_Pb Nchar 32 Tên phòng ban 3 Dien_Giải Nvarchar 128 Diễn giải Hình 3.15 : Bảng danh mục phòng ban Bảng danh mục phát sinh tài sản Stt Tên thuộc tính Kiểu dữ liệu Kích thước Giải Thích 1 Ma_Ps Char 4 Mã phát sinh (khóa chính) 2 Lydo_Ps Nchar 64 Lý do phát sinh 3 Kieu_Ps Nchar 4 Kiểu phát sinh Hình 3.16: Bảng Danh Mục Phát Sinh Tài Sản Bảng danh mục tài sản cố định Stt Tên thuộc tính Kiểu dữ liệu Kích thước Giải Thích 1 Ma_Ts Char 8 Mã tài sản (khóa chính) 2 Ten_Ts Nchar 64 Tên tài sản 3 Ma_Ts_0 Char 8 Mã tài sản mức 0 4 Ma_Nhts Char 8 Mã nhom tài sản 5 DVT Nchar 16 Đơn vị tính 6 Cong_Suat Varchar 32 Công suất 7 So_Luong Numeric 5,0 Số luợng 8 Nuoc_Sx Nchar 16 Nước sản xuất 9 Nam_Sx Numeric 4,0 Năm sản xuất 10 Ma_Ngvon Char 8 Mã nguồn vốn 11 Ngay_Ps Smalldatetime Ngày phát sinh 12 Ma_Ps Char 8 Mã phát sinh 13 Gt_Ng Numeric 18,2 Giá trị nguyên giá 14 Gt_Kh Numeric 18,2 Giá trị khấu hao 15 Gt_Cl Numeric 18,2 Giá trị còn lại 16 Ng_Kh Smalldatetime Ngày khấu hao 17 So_Th_Kh Numeric 4,0 Số tháng khấu hao 18 He_So_Kh Numeric 4,2 Hệ số khấu hao 19 Ma_Pb Char 8 Mã phòng ban 20 Ma_Mucdich Char 8 Mã mục đích sử dụng 21 Ghi_Chu Nvarchar 128 Ghi chú Hình 3.17: Bảng danh mục tài sản cố định g) Bảng giá trị khấu hao tài sản Stt Tên thuộc tính Kiểu dữ liệu Kích thước Giải Thích 1 Ma_Ts char 8 Mã tài sản (khóa chính) 2 Ma_Ts_0 char 8 Mã tài sản mức 0 3 Nam numeric 4,0 Năm 4 Thang numeric 4.0 Tháng 5 Ma_Pb char 8 Mã phòng ban 6 Gt_Ng numeric 18,2 Giá trị nguyên giá 7 So_Th_Kh numeric 4 Số tháng khấu hao 8 He_So_Kh numeric 4,2 Hệ số khấu hao 9 Gt_Kh_Th numeric 18,2 Giá trị khấu hao tháng 10 Sua_Kh_Th numeric 18,2 Sử khấu hao tháng 11 GT_Cl_Th numeric 18,2 Giá trị còn lại sau tháng 12 Gt_Kh_Nam numeric 18,2 Giá trị khấu hao năm 13 Sua_Kh_Nam numeric 18,2 Sửa khấu hao năm 14 Gt_Cl_Nam numeric 18,2 Giá trị còn lại sau năm Hình 3.18: Bảng giá trị khấu hao tài sản Mối quan hệ giữa các bảng dữ liệu Hình 3.19 : sơ đồ quan hệ giữa các bảng 3.2.2. Thiết kế giải thuật Trong các bước mô tả và phân tích công việc ở trên giúp hình dung các công việc xử lý khi xây dựng các chức năng của chương trình tuy nhiên để thuận lợi cho việc thiết kế các bước xử lý cũng như viết các module thì nên xây dựng giải thuận xử lý các công việc chính, phức tạp để thuận lợi cho việc thực hiện chương trình. Trong đề tài này em chọn xử lý bằng lưu đồ giải thuật vì lưu đồ mang tính trực quan và dễ dàng kiểm tra giải thuật đúng hay sai? Dưới đây là một số lưu đồ giải thuật chính của chương trình. Các ký hiệu thường được sử dụng trong thiết kế giải thuật Ký hiệu xử lý Ký hiệu điều kiện Hình 3.20: Các ký hiệu trong thiết kế giải thuật 3.2.2.1. Thuật toán thêm mới dữ liệu Bắt đầu Nhập thông tin cần thiết Dữ liệu hợp lệ ? Hiển thị lỗi Sai Đúng Cập nhật lại ? Đúng Sai Mã DL vừa nhập chưa tồn tại Đúng Sai Hiển thị lỗi Ghi lại thông tin vừa nhập Thêm tiếp ? Sai Đúng Kết thúc Hình 3.21 :Thuật toán thêm mới dữ liệu 3.2.2.2. Thuật toán sửa dữ liệu Bắt đầu Chọn các danh mục cần sửa và nhập các thông tin thay đổi Dữ liệu hợp lệ? Ghi lại thông tin đã sửa Sửa tiếp ? Kết thúc Hiển thị lỗi Sửa lại? Đúng Đúng Đúng Sai Sai Sai Hình 3.22: Thuật toán sửa dữ liệu 3.2.2.3. Thuật toán tìn kiếm Bắt đầu Nhập điều kiện tìm kiếm Tồn tại? Hiện thị thông báo không có dữ liệu thỏa mãn Kết thúc Sửa lại? Đúng Hiện đầy đủ dữ liệu thỏa mãn Đúng Sai Sai Hình 3.23: Thuật toán tìm kiếm dữ liệu 3.2.2.4. Thuật toán xóa dữ liệu Bắt đầu Chọn danh mục cần xóa Xóa bản ghi trong CSDL Đồng ý xóa? Kết thúc Sai Hiện thông tin cần xóa Đúng Hình 3.24: Thuật toán xóa dữ liệu 3.2.2.5. Thuật toán lên báo cáo Bắt đầu Nhập điều kiện báo cáo In báo cáo Đồng ý in ? Kết thúc Sai Hiện báo cáo Đúng Hình 3.25: Thuật toán in báo cáo 3.2.3. Thiết kế giao diện xử lý Thiết kế giao diện xử lý là xác định hệ thống thông tin, trình bày thông tin như thế nào cho người sử dụng khi nhập dữ liệu vào hệ thống hoặc đưa kết quả ra. 3.2.3.1 Thiết kế giao diện vào a) Một số nguyên tắc khi thiết kế giao diện vào Mục đích của việc thiết kế vào kà thiết kế các thủ tục nhập dữ liệu có hiệu quả và giảm thiểu sai sót. Sau đây là một số nguyên tắc hữu ích cho việc thiết kế màn hình nhập liệu: Khi nhập dữ liệu từ một tài liệu gốc, khuân dạng màn hình phải giống như tài liệu gốc. Nên nhóm các trường trên màn hình theo một trật tự có ý nghĩa, theo trật tự tự nhiên, theo tần số sử dụng, theo chức năng hoặc theo tầm quan trọng. Không nhập các thông tin mà hệ thống có thể tìm được từ cơ sở dữ liệu hoặc tính toán được. Đặt tên các trường ở trên hoặc ở trước trường nhập. Đặt các giá trị ngầm định cho phù hợp Sử dụng phím Tab để chuyển trường nhập Dựa theo nguyên tắc trên ta tiến hành việc thiết kế màn hình nhập liệu của chương trình. b) Một số giao diện vào của chương trình Hình 3.26: Form đăng nhập Đặc điểm Miêu tả Cấu trúc Là một form nhập liệu gồm có 2 label, 1 combobox, 1 textbox, 2 button, và 1 picturebox Đối tượng sử dụng Là thành viên được ủy quyền truy cập vào phần mềm Tần suất sử dụng Sử dụng 1 lần khi muốn sử dụng phần mềm QLTSCĐ Thời điểm sử dụng Khi bắt đầu sử dụng phần mềm QLTSCĐ này Các mục dữ liệu Gồm có tên người và mật khẩu của người truy cập Cách sử dụng Nhập tên và mật khẩu vào ô nhập liệu nếu khớp với cơ sở dữ liệu thì được truy cập Hình 3.27: Form đổi mật khẩu Đặc điểm Miêu tả Cấu trúc Là một form nhập liệu gồm có 4 label, 4 textbox, 2 button, và 1 picturebox Tần suất sử dụng Không định kỳ Thời điểm sử dụng sử dụng khi người sử dụng cảm thấy thích hợp Các mục dữ liệu Gồm có ô tên đăng ,ô mật khẩu cũ, mật khẩu mới và ô xác nhận lại mật khẩu mới Cách sử dụng Trong màn hình chính click chuột vào menu hoặc bạn có thể thao tác mở form với nhiều các khác nhau. Khi form được mở thì tên đăng nhập sẽ tự chuyển sang, ta nhập mật khẩu cũ, sau đó nhập mật khẩu mới và xác nhận, nếu phù hợp với điều kiện thuật toán Hình 3.28: Form chính của chương trình Đặc điểm Miêu tả Cấu trúc Là giao diện chính của phần mềm gồm một thanh menu, 1 thanh tool,… Tần suất sử dụng Sử dụng nhiều Thời điểm sử dụng Mỗi khi muốn thao tác với các danh mục, các công cụ ở trên màn hình này Các mục dữ liệu Không có các mục nhập liệu, chỉ là các liên kết đến các giao diện khác Cách sử dụng Chỉ con trỏ đến các mục cần thao tác và click chuột, chương trình sẽ dẫn đến các mục cần tìm Hình 3.29: Form danh mục nhóm tài sản Đặc điểm Miêu tả Cấu trúc Là màn hình nhập liệu gồm có 1 datagridview để hiện dữ liệu, 3 label, 3 textbox và 5 button Tần suất sử dụng Không định kỳ Thời điểm sử dụng Khi có nhu cầu như xem, thêm, sửa, xóa dữ liệu liên quan đến danh mục nhóm tài sản Các mục dữ liệu Các mục nhập liệu có 3 ô textbox là mã nhóm, tên nhóm, diễn giải, 1 đối tượng hiện thị dữ liệu là datagridview và 5 button để thao tác với dữ liệu Cách sử dụng Trong màn hình chính click chuột vào menu hoặc bạn có thể thao tác mở form với nhiều các khác nhau. Khi form được mở ta nhấn các button để sử dụng thao tác mong muốn nếu có nhu cầu nhập liệu thì điền đầy đủ các thông tin cần thiết đặc biệt là ô mã và tên nhóm Hình 3.30: Form danh mục nhóm nguồn vốn Đặc điểm Miêu tả Cấu trúc Là màn hình nhập liệu gồm có 1 datagridview để hiện dữ liệu, 3 label, 3 textbox và 5 button Tần suất sử dụng Không định kỳ Thời điểm sử dụng Khi có nhu cầu như xem, thêm, sửa, xóa dữ liệu liên quan đến danh mục nguồn vốn Các mục dữ liệu Các mục nhập liệu có 3 ô textbox là mã nhóm, tên nhóm, diễn giải, 1 đối tượng hiện thị dữ liệu là datagridview và 5 button để thao tác với dữ liệu Cách sử dụng Trong màn hình chính click chuột vào menu hoặc bạn có thể thao tác mở form với nhiều các khác nhau. Khi form được mở ta nhấn các button để sử dụng thao tác mong muốn nếu có nhu cầu nhập liệu thì điền đầy đủ các thông tin cần thiết đặc biệt là ô mã và tên nguồn vốn Hình 3.31: Form danh mục nhóm phòng ban Đặc điểm Miêu tả Cấu trúc Là màn hình nhập liệu gồm có 1 datagridview để hiện dữ liệu, 3 label, 3 textbox và 5 button Tần suất sử dụng Không định kỳ Thời điểm sử dụng Khi có nhu cầu như xem, thêm, sửa, xóa dữ liệu liên quan đến danh mục phòng ban Các mục dữ liệu Các mục nhập liệu có 3 ô textbox là mã nhóm, tên nhóm, diễn giải, 1 đối tượng hiện thị dữ liệu là datagridview và 5 button để thao tác với dữ liệu Cách sử dụng Trong màn hình chính click chuột vào menu hoặc bạn có thể thao tác mở form với nhiều các khác nhau. Khi form được mở ta nhấn các button để sử dụng thao tác mong muốn nếu có nhu cầu nhập liệu thì điền đầy đủ các thông tin cần thiết đặc biệt là ô mã và tên phòng ban Hình 3.32: Form danh mục mục đích sử dụng Đặc điểm Miêu tả Cấu trúc Là màn hình nhập liệu gồm có 1 datagridview để hiện dữ liệu, 3 label, 3 textbox và 5 button Tần suất sử dụng Không định kỳ Thời điểm sử dụng Khi có nhu cầu như xem, thêm, sửa, xóa dữ liệu liên quan đến danh mục mục đích sử dụng Các mục dữ liệu Các mục nhập liệu có 3 ô textbox là mã nhóm, tên nhóm, diễn giải, 1 đối tượng hiện thị dữ liệu là datagridview và 5 button để thao tác với dữ liệu Cách sử dụng Trong màn hình chính click chuột vào menu hoặc bạn có thể thao tác mở form với nhiều các khác nhau. Khi form được mở ta nhấn các button để sử dụng thao tác mong muốn nếu có nhu cầu nhập liệu thì điền đầy đủ các thông tin cần thiết đặc biệt là ô mã và tên mục đích sử dụng Hình 3.33: Form danh mục lý do phát sinh Đặc điểm Miêu tả Cấu trúc Là màn hình nhập liệu gồm có 1 datagridview để hiện dữ liệu, 3 label, 3 textbox và 5 button Tần suất sử dụng Không định kỳ Thời điểm sử dụng Khi có nhu cầu như xem, thêm, sửa, xóa dữ liệu liên quan đến danh mục lý do phát sinh tài sản Các mục dữ liệu Các mục nhập liệu có 3 ô textbox là mã phát sinh, lý do phát sinh, kiểu phát sinh, 1 đối tượng hiện thị dữ liệu là datagridview và 5 button để thao tác với dữ liệu Cách sử dụng Trong màn hình chính click chuột vào menu hoặc bạn có thể thao tác mở form với nhiều các khác nhau. Khi form được mở ta nhấn các button để sử dụng thao tác mong muốn nếu có nhu cầu nhập liệu thì điền đầy đủ các thông tin cần thiết Hình 3.34: Form quan lý hành hóa Đặc điểm Miêu tả Cấu trúc Là màn hình nhập liệu gồm có 1 datagridview để hiện dữ liệu, 21 label, 13 textbox, 2 daytimepicker , 6 combobox và 6 button Tần suất sử dụng Sử dụng liên tục Thời điểm sử dụng Khi có nhu cầu như xem, thêm, sửa, xóa và lập báo cáo dữ liệu liên quan đến tài sản Các mục dữ liệu Các mục nhập liệu có 10 ô textbox là mã nhóm, 3 texbox tự động cập nhật dữ liệu, 5 combobox lấy dữ liệu từ cơ sở dữ liệu, 1 đối tượng hiện thị dữ liệu là datagridview và 6 button để thao tác với dữ liệu Cách sử dụng Trong màn hình chính click chuột vào menu hoặc bạn có thể thao tác mở form với nhiều các khác nhau. Khi form được mở ta nhấn các button để sử dụng thao tác mong muốn nếu có nhu cầu nhập liệu thì điền đầy đủ các thông tin cần thiết Hình 3.35: Form hướng dẫn sử dụng Đặc điểm Miêu tả Cấu trúc Là form hiển thị dữ liệu gồm có 1 textbox và 1 button Tần suất sử dụng Ít sử dụng Thời điểm sử dụng Khi có nhu cầu như xem các hướng dẫn về phần mềm quản lý tài sản Các mục dữ liệu 1 đối tượng hiện thị dữ liệu là textbox Cách sử dụng Trong màn hình chính click chuột vào menu trợ giúp và chọn hướng dẫn sử dụng hoặc bạn có thể thao tác mở form với nhiều các khác nhau Hình 3.36: Form thông tin liên hệ Đặc điểm Miêu tả Cấu trúc Là form hiển thị dữ liệu gồm có 6 label, 2 linhklabel và 1 button Tần suất sử dụng Ít sử dụng Thời điểm sử dụng Khi có nhu cầu như xem thông tin về phần mềm quản lý tài sản như đơn vị sử dụng và người tạo ra phần mềm Các mục dữ liệu đối tượng hiện thị dữ liệu là các label và linklabel Cách sử dụng Trong màn hình chính click chuột vào menu trợ giúp và chọn thông tin sản phẩm hoặc bạn có thể thao tác mở form với nhiều các khác nhau. Form được mở ra ban có thể đọc các thông tin và liên hệ với đơn vị sử dụng va đường link tới Website hoặc liên hệ với người tạo phần mềm thông qua email của người đó Hình 3.37: Form thư giãn Đặc điểm Miêu tả Cấu trúc Là form hiển thị dữ liệu và cập nhật thêm dữ liệu gồm có 3 textbox và 4 button Tần suất sử dụng Không định kỳ Thời điểm sử dụng Khi có nhu cầu giải trí sâu một thời gian làm việc dài với phần mềm Các mục dữ liệu đối tượng hiện thị dữ liệu là các textbox và đối tượng thao tác dữ liệu là các button Cách sử dụng Trong màn hình chính click chuột vào menu trợ giúp và chọn thư giãn hoặc bạn có thể thao tác mở form với nhiều các khác nhau. Form được mở ra ban có thể đọc, thêm các câu truyện bạn thấy hay Hình 3.38: Form tìm kiếm các tài sản phát sinh Đặc điểm Miêu tả Cấu trúc Là form tìm kiếm dữ liệu Tần suất sử dụng Sử dụng nhiều Thời điểm sử dụng Khi có nhu cầu lên báo cáo về thông tin các lại tài sản phát sinh trong một khoảng thời gian, có thể là khi lãnh đạo hoặc các phòng ban yêu cầu hoặc cuối mỗi kỳ Các mục dữ liệu Có 2 đối tượng DataTimePicker dùng để chọn ngày và 2 button để thao tác dữ liệu Cách sử dụng Khi có nhu cầu lập báo cáo ta chọn menu báo cáo sau đó chọn mục báo cáo phát sinh tài sản và điền các thông tin lọc Hình 3.39: Form lọc khấu hao tài sản theo phòng ban Đặc điểm Miêu tả Cấu trúc Là form tìm kiếm dữ liệu Tần suất sử dụng Sử dụng nhiều Thời điểm sử dụng Khi có nhu cầu lập báo cáo về khấu hao tài sản của một phòng ban, có thể là khi lãnh đạo hoặc phòng ban đó yêu cầu hoặc cuối mỗi kỳ Các mục dữ liệu Có 2 đối tượng DataTimePicker dùng để chọn ngày và 2 button để thao tác dữ liệu Cách sử dụng Khi có nhu cầu lập báo cáo ta chọn menu báo cáo sau chọn báo cao khấu hao theo phòng ban và điền các thông tin lọc. 3.2.3.2. Thiết kế giao diện ra a) Một số nguyên tắc khi đưa thông tin ra Mục đích của thiết kế ra là rất quan trọng trên thực tế vì những nhận xét đánh giá về hệ thống thông tin của người sử dụng là dựa vào những yếu tố đầu ra này. Họ có thể từ chối sử dụng vì những yêu cầu kém ở đây cho dù HTTT được đánh giá tốt ở những khía cạnh khác. Khuân dạng đầu ra không những đẹp, hợp lý mà còn phải giúp người sử dụng thực hiện tốt hơn, dễ dàng hơn cho công việc của họ. Sau đây là một số nguyên tắc cơ bản cho việc trình bày thông tin ra màn hình: Đặt mọi thông tin gắn liền với nhiệm vụ trên cùng một màn hình. Người sử dụng không phải nhớ thông tin từ màn hình này sang màn hình khác. Chỉ dẫn rõ ràng cách thoát khỏi màn hình. Đặt giữa các tiêu đề và sắp xếp thông tin theo trục trung tâm. Nếu đầu ra gồm nhiều trang màn hình thì mỗi trang phải được đánh số thứ tự. Việc này giúp người đang sử dụng biết mình đang ở đâu. Viết văn bản theo quy ước chung bằng cách sử dụng chữ in hoa, in thường, chữ gạch chân…và ngắt hợp lý. Đặt tên đầu cột cho mỗi cột. Tổ chức các phân tử của danh sách theo trật tự quen thuộc trong quản lý. Căn trái các cột văn bản và căn phải các cột số. Đảm bảo vị trí dấu thập phân thẳng hàng. Chỉ đặt màu cho các thông tin quan trọng. Dựa trên các nguyên tắc này ta tiến hàng thiết kế các báo cáo đầu ra. b) Một số giao diện ra Hình 3.40: Bảng tính khấu hao theo phòng ban Đặc điểm Miêu tả Thông tin hiển thị Là báo cáo hiện thị các thông tin khấu hao của tài sản Tần suất sử dụng Sử dụng nhiều Thời điểm sử dụng Khi có nhu cầu lập báo cáo về khấu hao tài sản của một phòng ban, có thể là khi lãnh đạo hoặc phòng ban đó yêu cầu hoặc cuối mỗi kỳ Phần mềm tạo báo cáo Phần mềm tạo báo cáo chuyên nghiệp Crystal report Hình 3.41 :Báo cáo tăng giảm tài sản Đặc điểm Miêu tả Thông tin hiển thị Là báo cáo hiện thị các thông tin về các loại tài sản phát sinh trong một khoảng thời gian Tần suất sử dụng Sử dụng nhiều Thời điểm sử dụng Khi có nhu cầu lập báo cáo về thông tin về các loại tài sản phát sinh trong một khoảng thời gian, có thể là khi lãnh đạo hoặc phòng ban đó yêu cầu hoặc cuối mỗi kỳ Phần mềm tạo báo cáo Phần mềm tạo báo cáo chuyên nghiệp Crystal report 3.3. Triển khai phần mềm quản lý tài sản cố định 3.3.1. Yêu cầu hệ thống Do chương trình được xây dựng trên những công cụ mới nhất hiện này nên khi sử dụng phần mềm chương trình cũng đòi hỏi yêu cầu hệ thống tương đối cao. Sau đây là một số yêu cầu chủ yếu: Windows 2000 Service Pack 4 hoặc hơn Windows XP Service Pack 2 (SP2) Windows Server 2003 Service Path 1 Microsoft .Net Framework 2.0 3.3.2. Các bước thực hiện cài đặt Để có thể sử dụng được chương trình ta phải thực hiện một số thao tác sau: Cài Microsoft SQL Server 2005 (bản nào cũng được) Attach cơ sở dữ liệu vào cơ sở dữ liệu vừa cài đặt Cài đặt Framework.Net v2.0 Cài đặt chương trình bằng bộ cài đặt hoặc chạy trực tiếp chương trình trên file thực thi 3.3.3. Kiểm thử chương trình Sử dụng một danh sách các tài sản của công ty sau đó thực hiện các chức năng của chương trình như: Thêm mới một tài sản Sửa một tài sản đã có trong CSDL Lưu một tài sản vừa thêm mới hoặc vừa sửa Xóa thử một tài sản đã có trong chương trình Nhập thông về tài sản rồi quan sát việc tính khấu hao của tài sản đó, sau đó kiểm tra lại bằng máy tính điện tử. Kiểm tra việc bắt lỗi như bắt lỗi mã trùng cho việc nhập mới, kiểm tra bắt lỗi cho việc xóa bản ghi không tồn tại… KẾT LUẬN Do thời gian thực tập ở công ty và thời gian tìm hiểu về nghiệp vụ quản lý tài sản cố định có hạn nên phần mềm rất hạn chế về các chức năng so với thực tế. Sau đây là một số hạn chế: Vì làm phần mềm trên công nghệ mới hoàn toàn đó là C# và SQL Server 2005 nên làm phần mềm này là em vừa học vừa làm nên phần mềm mới chỉ thực hiện một số chức năng có hạn đặc biệt là việc tính khấu hao. Ban đầu khi thiết kế hệ thống em mong muốn sẽ thực hiện tính khấu hao theo nhiều cách khác nhau nhưng hiện tại phần mềm mới chỉ tính được khấu hao theo phương pháp khấu hao đều theo các tháng. Phần mềm mới chỉ chạy được trên các máy PC đơn lẻ với một cơ sở dữ liệu hạn chế về số lượng bản ghi. Qua nhiều lần thử nghiệp phần mềm vẫn còn gặp một số lỗi nhỏ và việc bắt lỗi còn hạn chế Đây là phần mềm rất hữu ích cho thực tế quản lý tài sản do đó em mong rằng sẽ được sự giúp đỡ ủng hộ của các thầy cô, các anh chị và các bạn để trong tương lai phần mềm sẽ thực hiện các chức năng nhiệm vụ tốt hơn. Em xin trân thành cám ơn ! TÀI LIỆU THAM KHẢO GS.TS Ngô Thế Chi – TS Trương Thị Thủy Giáo trình Kế toán tài chính -NXB Tài Chính 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ý -NXB kinh tế quốc dân Phạm Hưu Khang – Đoàn Thiện Ngân Bộ giáo trình C# 2005-NXB Lao động xã hội ThS Trần Công Uẩn Giáo trình Cơ sở dữ liệu-NXB kinh tế quốc dân PGS.TS Hàn Viết Thuận Giáo trình Cấu trúc dư liệu và Giải Thuật- NXB Thống kê PGS.TS Hàn Viết Thuận Giáo trình Cộng Nghệ Phần mềm KS Hoàng Anh Quang – Phan Ánh Nguyệt Giáo trình Tự học SQL Server 2005-NXB Văn hóa thông tin PHỤ LỤC Code của một số form trong chương trình Code cho phần kết nối cơ sở dữ liệu using System; using System.Data; using System.Data.SqlClient; using System.Collections.Generic; using System.Windows.Forms; using System.Text; namespace DataConnect { public class Connection { public static SqlConnection cn; public string tenMay = "(local)"; public string tenCsdl = "QLTSCD"; public static SqlConnection conn; public void KetNoi() { string strConn = "Data source=" + this.tenMay + ";" + "Initial catalog=" + this.tenCsdl + ";" + "Integrated security=true;"; conn = new SqlConnection(strConn); conn.Open(); } public DataTable FillData(string _proName, SqlParameter[] _para) { DataSet _ds = new DataSet(); try { KetNoi(); SqlCommand _cm = new SqlCommand(_proName, conn); _cm.CommandType = CommandType.StoredProcedure; if (_para != null) { int _step = 0; while (_step < (_para.Length - 1)) { _cm.Parameters.Add(_para[_step]); _step = _step + 1; } _cm.Parameters.Add(_para[_para.Length - 1]); } SqlDataAdapter _ad = new SqlDataAdapter(); _ad.SelectCommand = _cm; _ad.Fill(_ds); conn.Close(); } catch { MessageBox.Show("Lỗi Kết Nối !"); } return _ds.Tables[0]; } } } Code cho việc xử lý form Main using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace QLTS { public partial class frm_main : Form { public frm_main() { InitializeComponent(); } private void frm_main_Load(object sender, EventArgs e) { } private void frm_main_Resize(object sender, EventArgs e) { //pic_qlts.Height = this.Height - 100; } private void frm_main_AutoSizeChanged(object sender, EventArgs e) { } private void mnu_dmnhts_Click(object sender, EventArgs e) { frm_nhts frm = new frm_nhts(); frm.MdiParent= this; frm.Show(); } private void mnu_dmts_Click(object sender, EventArgs e) { panel_bc.Hide(); panel_cn.Hide(); panel_dm.Hide(); panel_ht.Hide(); panel_lich.Hide(); frm_ts frm = new frm_ts(); frm.MdiParent=this; frm.Show(); } private void mnu_dmpb_Click(object sender, EventArgs e) { frm_dmpb frm = new frm_dmpb(); frm.MdiParent=this; frm.Show(); } private void mnu_dmngv_Click(object sender, EventArgs e) { frm_ngv frm = new frm_ngv(); frm.MdiParent=this; frm.Show(); } private void mnu_dmmdsd_Click(object sender, EventArgs e) { frm_mdsd frm = new frm_mdsd(); frm.MdiParent=this; frm.Show(); } private void mnu_lydotg_Click(object sender, EventArgs e) { frm_ldps frm = new frm_ldps(); frm.MdiParent = this; frm.Show(); } private void mnu_qlts_Click(object sender, EventArgs e) { frm_ts frm = new frm_ts(); frm.MdiParent = this; frm.Show(); } private void cmd_dmlq_Click(object sender, EventArgs e) { this.panel_dm.Visible = true; } private void panel2_Click(object sender, EventArgs e) { panel_dm.Visible = false; panel_cn.Visible = false; panel_bc.Visible = false; } private void cmd_cn_Click(object sender, EventArgs e) { panel_cn.Visible = true; } private void cmd_bc_Click(object sender, EventArgs e) { panel_bc.Visible = true; } private void menu_qlts_Click(object sender, EventArgs e) { panel_dm.Visible = false; panel_cn.Visible = false; panel_bc.Visible = false; } private void tool_qlts_Click(object sender, EventArgs e) { panel_dm.Visible = false; panel_cn.Visible = false; panel_bc.Visible = false; } private void cmd_dmlq_Leave(object sender, EventArgs e) { panel_dm.Visible = false; panel_cn.Visible = false; panel_bc.Visible = false; } private void cmd_cn_Leave(object sender, EventArgs e) { panel_dm.Visible = false; panel_cn.Visible = false; panel_bc.Visible = false; } private void cmd_bc_Leave(object sender, EventArgs e) { panel_dm.Visible = false; panel_cn.Visible = false; panel_bc.Visible = false; } private void frm_main_Click(object sender, EventArgs e) { panel_dm.Visible = false; panel_cn.Visible = false; panel_bc.Visible = false; } private void mnu_thoat_Click(object sender, EventArgs e) { if(MessageBox.Show("Bạn muốn thoát thật chứ?","Thông Báo",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes) Application.Exit(); } private void tool_cmb_thoat_Click(object sender, EventArgs e) { if (MessageBox.Show("Bạn muốn thoát thật chứ?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) Application.Exit(); } private void tool_lbl_thoat_Click(object sender, EventArgs e) { if (MessageBox.Show("Bạn muốn thoát thật chứ?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) Application.Exit(); } } } Code cho việc xử lý form danh mục nhóm tài sản using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Text; using DataConnect; using System.Windows.Forms; namespace QLTS { public partial class frm_nhts : Form { public Connection _cn = new Connection(); public BindingSource _bdsnhts = new BindingSource(); public string _chon; public BindingSource _sobg = new BindingSource(); public frm_nhts() { InitializeComponent(); } public void hien() { SqlParameter[] _para; _para = null; _bdsnhts.DataSource = _cn.FillData("dbo.Display_DM_Nhts", _para); this.dgv_dmnhts.DataSource = _bdsnhts; this.txtma.DataBindings.Add("Text", _bdsnhts, "Ma_nhts"); this.txttennh.DataBindings.Add("Text",_bdsnhts,"Ten_nhts"); this.txtdg.DataBindings.Add("Text", _bdsnhts, "Dien_giai"); } public void formatgrid() { this.dgv_dmnhts.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; } private void Form1_Load(object sender, EventArgs e) { hien(); formatgrid(); } private void LockObject() { this.cmdthem.Enabled = true; this.cmdxoa.Enabled = true; this.cmdsua.Enabled = true; this.cmdluu.Enabled = false; this.txtma.Enabled = false; this.txttennh.Enabled = false; this.txtdg.Enabled = false; this.cmdthem.Focus(); } private void UnLockObject() { this.cmdthem.Enabled = false; this.cmdxoa.Enabled = false; this.cmdsua.Enabled = false; this.cmdluu.Enabled = true; this.txtma.Enabled = true; this.txttennh.Enabled = true; this.txtdg.Enabled = true; this.txtma.Focus(); } public void AddNew() { this.UnLockObject(); this._bdsnhts.CurrencyManager.AddNew(); this._bdsnhts.MoveLast(); } public void Edit() { this.UnLockObject(); } private string maid() { string _maid = ""; DataRowView _drv = (System.Data.DataRowView)_bdsnhts.Current; try { _maid = _drv["Ma_nhts"].ToString().Trim(); } catch { _maid = ""; } return _maid; } private void Refesh() { this._bdsnhts.CurrencyManager.Refresh(); } private DataRowView CurrentRow() { return (System.Data.DataRowView)_bdsnhts.Current; } private void Savedata() { DataTable _tbl = new DataTable(); string _ma = txtma.Text.Trim(); string _ten = txttennh.Text.Trim(); string _dg = txtdg.Text.Trim(); try { if (_chon == "M") { SqlParameter[] _para; _para = new SqlParameter[] { new SqlParameter("@_Property","M"), new SqlParameter("@_Ma_nhts",_ma), new SqlParameter("@_ten_nhts",_ten), new SqlParameter("@_Dien_giai",_dg)}; _tbl = _cn.FillData("Save_DM_Nhts", _para); } if (_chon == "S") { SqlParameter[] _para; _para = new SqlParameter[] { new SqlParameter("@_Property","S"), new SqlParameter("@_Ma_nhts",_ma), new SqlParameter("@_ten_nhts",_ten), new SqlParameter("@_Dien_giai",_dg)}; _tbl = _cn.FillData("Save_DM_Nhts", _para); } } catch { MessageBox.Show("Không lưu dữ liệu"); } } private void cmdthem_Click(object sender, EventArgs e) { this.AddNew(); _chon = "M"; } private void cmdsua_Click(object sender, EventArgs e) { if (maid() == "") { MessageBox.Show("Không có bản ghi để sửa"); return; } this.Edit(); _chon = "S"; } private void cmdluu_Click(object sender, EventArgs e) { if (txtma.Text.Trim() == "" || this.txttennh.Text.Trim() == "") { MessageBox.Show("Bạn phải nhập đầy đủ thông tin trước khi lưu","Thông báo",MessageBoxButtons.OK,MessageBoxIcon.Question); this.txtma.Focus(); return; } if (_chon == "M") { int dem; SqlParameter[] _para1; _para1 = new SqlParameter[]{new SqlParameter("@_Ten_bang","Dm_nhts"), new SqlParameter("@_Ma",this.txtma.Text.Trim()), new SqlParameter("@_Ma_code","Ma_nhts")}; _sobg.DataSource = _cn.FillData("Display_tinh", _para1); DataRowView _drv2 = (System.Data.DataRowView)_sobg.Current; dem = Convert.ToInt32(_drv2["So_bg"].ToString()); if (dem != 0) { MessageBox.Show("Mã số đã tồn tại, không thể lưu !", "Thong bao",MessageBoxButtons.OK,MessageBoxIcon.Warning); this.txtma.Clear(); this.txtma.Focus(); return; } } Savedata(); this.Refresh(); this.LockObject(); } private void Delete() { if (MessageBox.Show("Bạn có chắc chắn muốn xóa danh mục này ko", "Thong bao", MessageBoxButtons.YesNo) == DialogResult.Yes) { DataTable _tbl = new DataTable(); SqlParameter[] _para; _para = new SqlParameter[] { new SqlParameter("@_Ma_nhts", maid().Trim()) }; _tbl = _cn.FillData("Delete_DM_Nhts", _para); this._bdsnhts.RemoveCurrent(); MessageBox.Show("Xoa thanh cong","Thong bao"); } else { return; } } private void cmdxoa_Click(object sender, EventArgs e) { if (this.maid() == "") { MessageBox.Show("Không có bản ghi để xóa"); return; } this.Delete(); this.Refesh(); } private void cmdthoat_Click(object sender, EventArgs e) { this.Close(); } private void frm_nhts_KeyPress(object sender, KeyPressEventArgs e) { if(e.KeyChar==(char)Keys.Return) SendKeys.Send("{TAB}"); } } } Code cho việc xử lý form danh mục nguồn vốn using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Text; using DataConnect; using System.Windows.Forms; namespace QLTS { public partial class frm_ngv : Form { public Connection _cn = new Connection(); public BindingSource _bdsnv = new BindingSource(); public string _chon; public BindingSource _so_bg = new BindingSource(); public frm_ngv() { InitializeComponent(); } public void hienthi() { SqlParameter[] _para; _para = null; _bdsnv.DataSource = _cn.FillData("dbo.Display_DM_Ngvon", _para); this.dgv_dmnv.DataSource = _bdsnv; this.txtma.DataBindings.Add("Text", _bdsnv, "Ma_ngvon"); this.txtten.DataBindings.Add("Text", _bdsnv, "Ten_ngvon"); this.txtdg.DataBindings.Add("Text", _bdsnv, "Dien_giai"); } private void frm_dmpb_Load(object sender, EventArgs e) { hienthi(); formatgrid(); } public void formatgrid() { this.dgv_dmnv.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; } private void LockObject() { this.cmdthem.Enabled = true; this.cmdxoa.Enabled = true; this.cmdsua.Enabled = true; this.cmdluu.Enabled = false; this.txtma.Enabled = false; this.txtten.Enabled = false; this.txtdg.Enabled = false; this.cmdthem.Focus(); } private void UnLockObject() { this.cmdthem.Enabled = false; this.cmdxoa.Enabled = false; this.cmdsua.Enabled = false; this.cmdluu.Enabled = true; this.txtma.Enabled = true; this.txtten.Enabled = true; this.txtdg.Enabled = true; this.txtma.Focus(); } public void AddNew() { this.UnLockObject(); this._bdsnv.CurrencyManager.AddNew(); this._bdsnv.MoveLast(); } public void Edit() { this.UnLockObject(); } private string maid() { string _maid = ""; DataRowView _drv = (System.Data.DataRowView)_bdsnv.Current; try { _maid = _drv["Ma_ngvon"].ToString().Trim(); } catch { _maid = ""; } return _maid; } private void Refesh() { this._bdsnv.CurrencyManager.Refresh(); } private DataRowView CurrentRow() { return (System.Data.DataRowView)_bdsnv.Current; } private void Savedata() { DataTable _tbl = new DataTable(); string _ma = txtma.Text.Trim(); string _ten = txtten.Text.Trim(); string _dg = txtdg.Text.Trim(); try { if (_chon == "M") { SqlParameter[] _para; _para = new SqlParameter[] { new SqlParameter("@_Property","M"), new SqlParameter("@_Ma_ngvon",_ma), new SqlParameter("@_ten_ngvon",_ten), new SqlParameter("@_Dien_giai",_dg)}; _tbl = _cn.FillData("Save_DM_ngvon", _para); } if (_chon == "S") { SqlParameter[] _para; _para = new SqlParameter[] { new SqlParameter("@_Property","S"), new SqlParameter("@_Ma_ngvon",_ma), new SqlParameter("@_ten_ngvon",_ten), new SqlParameter("@_Dien_giai",_dg)}; _tbl = _cn.FillData("Save_DM_ngvon", _para); } } catch { MessageBox.Show("Không lưu dữ liệu"); } } private void Delete() { if (MessageBox.Show("Bạn có chắc chắn muốn xóa danh mục này ko", "Thong bao", MessageBoxButtons.YesNo) == DialogResult.Yes) { DataTable _tbl = new DataTable(); SqlParameter[] _para; _para = new SqlParameter[] { new SqlParameter("@_Ma_nv", maid().Trim()) }; _tbl = _cn.FillData("Delete_DM_ngvon", _para); this._bdsnv.RemoveCurrent(); MessageBox.Show("Xoa thanh cong", "Thong bao"); } else { return; } } private void frm_dmpb_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Return) SendKeys.Send("{TAB}"); } private void frm_ngv_Load(object sender, EventArgs e) { hienthi(); formatgrid(); } private void cmdthem_Click_1(object sender, EventArgs e) { this.AddNew(); _chon = "M"; } private void cmdsua_Click(object sender, EventArgs e) { if (maid() == "") { MessageBox.Show("Không có bản ghi để sửa"); return; } this.Edit(); _chon = "S"; } private void cmdluu_Click(object sender, EventArgs e) { if (txtma.Text.Trim() == "" || this.txtten.Text.Trim() == "") { MessageBox.Show("Bạn phải nhập đầy đủ thông tin trước khi lưu", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Question); this.txtma.Focus(); return; } if (_chon == "M") { int dem; SqlParameter[] _para1; _para1 = new SqlParameter[]{new SqlParameter("@_Ten_bang","Dm_ngvon"), new SqlParameter("@_Ma",this.txtma.Text.Trim()), new SqlParameter("@_Ma_code","Ma_nv")}; _so_bg.DataSource = _cn.FillData("Display_tinh", _para1); DataRowView _drv2 = (System.Data.DataRowView)_so_bg.Current; dem = Convert.ToInt32(_drv2["So_bg"].ToString()); if (dem != 0) { MessageBox.Show("Mã số đã tồn tại, không thể lưu !", "Thong bao", MessageBoxButtons.OK, MessageBoxIcon.Warning); this.txtma.Clear(); this.txtma.Focus(); return; } } Savedata(); this.Refresh(); this.LockObject(); } private void cmdxoa_Click(object sender, EventArgs e) { if (this.maid() == "") { MessageBox.Show("Không có bản ghi để xóa"); return; } this.Delete(); this.Refesh(); } private void cmdthoat_Click(object sender, EventArgs e) { this.Close(); } private void frm_ngv_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Return) SendKeys.Send("{TAB}"); } } } Code cho việc xử lý form danh mục phòng ban using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Text; using DataConnect; using System.Windows.Forms; namespace QLTS { public partial class frm_dmpb : Form { public Connection _cn = new Connection(); public BindingSource _bdspb = new BindingSource(); public string _chon; public BindingSource _so_bg = new BindingSource(); public frm_dmpb() { InitializeComponent(); } public void hienthi() { SqlParameter[] _para; _para = null; _bdspb.DataSource = _cn.FillData("dbo.Display_DM_Pb", _para); this.dgv_dmpb.DataSource = _bdspb; this.txtma.DataBindings.Add("Text", _bdspb, "Ma_pb"); this.txtten.DataBindings.Add("Text", _bdspb, "Ten_pb"); this.txtdg.DataBindings.Add("Text", _bdspb, "Dien_giai"); } private void frm_dmpb_Load(object sender, EventArgs e) { hienthi(); formatgrid(); } public void formatgrid() { this.dgv_dmpb.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; } private void LockObject() { this.cmdthem.Enabled = true; this.cmdxoa.Enabled = true; this.cmdsua.Enabled = true; this.cmdluu.Enabled = false; this.txtma.Enabled = false; this.txtten.Enabled = false; this.txtdg.Enabled = false; this.cmdthem.Focus(); } private void UnLockObject() { this.cmdthem.Enabled = false; this.cmdxoa.Enabled = false; this.cmdsua.Enabled = false; this.cmdluu.Enabled = true; this.txtma.Enabled = true; this.txtten.Enabled = true; this.txtdg.Enabled = true; this.txtma.Focus(); } public void AddNew() { this.UnLockObject(); this._bdspb.CurrencyManager.AddNew(); this._bdspb.MoveLast(); } public void Edit() { this.UnLockObject(); } private string maid() { string _maid = ""; DataRowView _drv = (System.Data.DataRowView)_bdspb.Current; try { _maid = _drv["Ma_pb"].ToString().Trim(); } catch { _maid = ""; } return _maid; } private void Refesh() { this._bdspb.CurrencyManager.Refresh(); } private DataRowView CurrentRow() { return (System.Data.DataRowView)_bdspb.Current; } private void Savedata() { DataTable _tbl = new DataTable(); string _ma = txtma.Text.Trim(); string _ten = txtten.Text.Trim(); string _dg = txtdg.Text.Trim(); try { if (_chon == "M") { SqlParameter[] _para; _para = new SqlParameter[] { new SqlParameter("@_Property","M"), new SqlParameter("@_Ma_pb",_ma), new SqlParameter("@_ten_pb",_ten), new SqlParameter("@_Dien_giai",_dg)}; _tbl = _cn.FillData("Save_DM_pb", _para); } if (_chon == "S") { SqlParameter[] _para; _para = new SqlParameter[] { new SqlParameter("@_Property","S"), new SqlParameter("@_Ma_pb",_ma), new SqlParameter("@_ten_pb",_ten), new SqlParameter("@_Dien_giai",_dg)}; _tbl = _cn.FillData("Save_DM_pb", _para); } } catch { MessageBox.Show("Không lưu dữ liệu"); } } private void cmdthem_Click(object sender, EventArgs e) { this.AddNew(); _chon = "M"; } private void cmdsua_Click(object sender, EventArgs e) { if (maid() == "") { MessageBox.Show("Không có bản ghi để sửa"); return; } this.Edit(); _chon = "S"; } private void cmdluu_Click(object sender, EventArgs e) { if (txtma.Text.Trim() == "" || this.txtten.Text.Trim() == "") { MessageBox.Show("Bạn phải nhập đầy đủ thông tin trước khi lưu", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Question); this.txtma.Focus(); return; } if (_chon == "M") { int dem; SqlParameter[] _para1; _para1 = new SqlParameter[]{new SqlParameter("@_Ten_bang","Dm_nhts"), new SqlParameter("@_Ma",this.txtma.Text.Trim()), new SqlParameter("@_Ma_code","Ma_nhts")}; _so_bg.DataSource = _cn.FillData("Display_tinh", _para1); DataRowView _drv2 = (System.Data.DataRowView)_so_bg.Current; dem = Convert.ToInt32(_drv2["So_bg"].ToString()); if (dem != 0) { MessageBox.Show("Mã số đã tồn tại, không thể lưu !", "Thong bao", MessageBoxButtons.OK, MessageBoxIcon.Warning); this.txtma.Clear(); this.txtma.Focus(); return; } } Savedata(); this.Refresh(); this.LockObject(); } private void Delete() { if (MessageBox.Show("Bạn có chắc chắn muốn xóa danh mục này ko", "Thong bao", MessageBoxButtons.YesNo) == DialogResult.Yes) { DataTable _tbl = new DataTable(); SqlParameter[] _para; _para = new SqlParameter[] { new SqlParameter("@_Ma_pb", maid().Trim()) }; _tbl = _cn.FillData("Delete_DM_pb", _para); this._bdspb.RemoveCurrent(); MessageBox.Show("Xoa thanh cong", "Thong bao"); } else { return; } } private void cmdxoa_Click(object sender, EventArgs e) { if (this.maid() == "") { MessageBox.Show("Không có bản ghi để xóa"); return; } this.Delete(); this.Refesh(); } private void cmdthoat_Click(object sender, EventArgs e) { this.Close(); } private void frm_dmpb_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Return) SendKeys.Send("{TAB}"); } } } Code cho việc xử lý form danh mục mục đích sử dụng using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using DataConnect; using System.Drawing; using System.Text; using System.Windows.Forms; namespace QLTS { public partial class frm_mdsd : Form { public Connection _cn = new Connection(); public BindingSource _bdsmd = new BindingSource(); public string _chon; public BindingSource _so_bg = new BindingSource(); public frm_mdsd() { InitializeComponent(); } private void frm_mdsd_Load(object sender, EventArgs e) { hienthi(); formatgrid(); } public void hienthi() { SqlParameter[] _para; _para = null; _bdsmd.DataSource = _cn.FillData("dbo.Display_DM_Mdsd", _para); this.dgv_dmmd.DataSource = _bdsmd; this.txtma.DataBindings.Add("Text", _bdsmd, "Ma_Mucdich"); this.txtten.DataBindings.Add("Text", _bdsmd, "Ten_Mucdich"); this.txtdg.DataBindings.Add("Text", _bdsmd, "Dien_giai"); } public void formatgrid() { this.dgv_dmmd.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; } private void LockObject() { this.cmdthem.Enabled = true; this.cmdxoa.Enabled = true; this.cmdsua.Enabled = true; this.cmdluu.Enabled = false; this.txtma.Enabled = false; this.txtten.Enabled = false; this.txtdg.Enabled = false; this.cmdthem.Focus(); } private void UnLockObject() { this.cmdthem.Enabled = false; this.cmdxoa.Enabled = false; this.cmdsua.Enabled = false; this.cmdluu.Enabled = true; this.txtma.Enabled = true; this.txtten.Enabled = true; this.txtdg.Enabled = true; this.txtma.Focus(); } public void AddNew() { this.UnLockObject(); this._bdsmd.CurrencyManager.AddNew(); this._bdsmd.MoveLast(); } public void Edit() { this.UnLockObject(); } private string maid() { string _maid = ""; DataRowView _drv = (System.Data.DataRowView)_bdsmd.Current; try { _maid = _drv["Ma_ngvon"].ToString().Trim(); } catch { _maid = ""; } return _maid; } private void Refesh() { this._bdsmd.CurrencyManager.Refresh(); } private DataRowView CurrentRow() { return (System.Data.DataRowView)_bdsmd.Current; } private void Savedata() { DataTable _tbl = new DataTable(); string _ma = txtma.Text.Trim(); string _ten = txtten.Text.Trim(); string _dg = txtdg.Text.Trim(); try { if (_chon == "M") { SqlParameter[] _para; _para = new SqlParameter[] { new SqlParameter("@_Property","M"), new SqlParameter("@_Ma_mucdich",_ma), new SqlParameter("@_ten_mucdich",_ten), new SqlParameter("@_Dien_giai",_dg)}; _tbl = _cn.FillData("Save_DM_mdsd", _para); } if (_chon == "S") { SqlParameter[] _para; _para = new SqlParameter[] { new SqlParameter("@_Property","S"), new SqlParameter("@_Ma_mucdich",_ma), new SqlParameter("@_ten_mucdich",_ten), new SqlParameter("@_Dien_giai",_dg)}; _tbl = _cn.FillData("Save_DM_mdsd", _para); } } catch { MessageBox.Show("Không lưu dữ liệu"); } } private void Delete() { if (MessageBox.Show("Bạn có chắc chắn muốn xóa danh mục này ko", "Thong bao", MessageBoxButtons.YesNo) == DialogResult.Yes) { DataTable _tbl = new DataTable(); SqlParameter[] _para; _para = new SqlParameter[] { new SqlParameter("@_Ma_mucdich", maid().Trim()) }; _tbl = _cn.FillData("Delete_DM_mdsd", _para); this._bdsmd.RemoveCurrent(); MessageBox.Show("Xoa thanh cong", "Thong bao"); } else { return; } } private void cmdthem_Click(object sender, EventArgs e) { this.AddNew(); _chon = "M"; } private void cmdsua_Click(object sender, EventArgs e) { if (maid() == "") { MessageBox.Show("Không có bản ghi để sửa"); return; } this.Edit(); _chon = "S"; } private void cmdluu_Click(object sender, EventArgs e) { if (txtma.Text.Trim() == "" || this.txtten.Text.Trim() == "") { MessageBox.Show("Bạn phải nhập đầy đủ thông tin trước khi lưu", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Question); this.txtma.Focus(); return; } if (_chon == "M") { int dem; SqlParameter[] _para1; _para1 = new SqlParameter[]{new SqlParameter("@_Ten_bang","Dm_ngvon"), new SqlParameter("@_Ma",this.txtma.Text.Trim()), new SqlParameter("@_Ma_code","Ma_nv")}; _so_bg.DataSource = _cn.FillData("Display_tinh", _para1); DataRowView _drv2 = (System.Data.DataRowView)_so_bg.Current; dem = Convert.ToInt32(_drv2["So_bg"].ToString()); if (dem != 0) { MessageBox.Show("Mã số đã tồn tại, không thể lưu !", "Thong bao", MessageBoxButtons.OK, MessageBoxIcon.Warning); this.txtma.Clear(); this.txtma.Focus(); return; } } Savedata(); this.Refresh(); this.LockObject(); } private void cmdxoa_Click(object sender, EventArgs e) { if (this.maid() == "") { MessageBox.Show("Không có bản ghi để xóa"); return; } this.Delete(); this.Refesh(); } private void cmdthoat_Click(object sender, EventArgs e) { this.Close(); } private void frm_mdsd_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Return) SendKeys.Send("{TAB}"); } } } Code cho việc xử lý form danh mục lý do phát sinh tài sản using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Text; using DataConnect; using System.Windows.Forms; namespace QLTS { public partial class frm_ldps : Form { public Connection _cn = new Connection(); public BindingSource _bdsldps = new BindingSource(); public string _chon; public BindingSource _so_bg = new BindingSource(); public frm_ldps() { InitializeComponent(); } private void frm_ldps_Load(object sender, EventArgs e) { hienthi(); formatgrv(); } public void hienthi() { SqlParameter[] _para; _para = null; _bdsldps.DataSource = _cn.FillData("Display_dm_psts", _para); this.dgv_dmmd.DataSource=_bdsldps; this.txtma.DataBindings.Add("Text", _bdsldps, "Ma_ps"); this.txt_ld.DataBindings.Add("Text", _bdsldps, "Lydo_ps"); this.txt_kieu.DataBindings.Add("Text",_bdsldps,"Kieu_ps"); LockObject(); } private void formatgrv() { this.dgv_dmmd.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; } private void LockObject() { this.cmdthem.Enabled = true; this.cmdxoa.Enabled = true; this.cmdsua.Enabled = true; this.cmdluu.Enabled = false; this.txtma.Enabled = false; this.txt_ld.Enabled = false; this.txt_kieu.Enabled = false; this.cmdthem.Focus(); } private void UnLockObject() { this.cmdthem.Enabled = false; this.cmdxoa.Enabled = false; this.cmdsua.Enabled = false; this.cmdluu.Enabled = true; this.txtma.Enabled = true; this.txt_ld.Enabled = true; this.txt_kieu.Enabled = true; this.txtma.Focus(); } private void AddNew() { UnLockObject(); this._bdsldps.CurrencyManager.AddNew(); this._bdsldps.MoveLast(); } private void Edit() { UnLockObject(); } private string ma_id() { string _maid = ""; DataRowView _drv = (System.Data.DataRowView)_bdsldps.Current; try { _maid = _drv["Ma_ps"].ToString().Trim(); } catch { _maid = ""; } return _maid; } private void Refesh() { this._bdsldps.CurrencyManager.Refresh(); } private DataRowView CurrentRow() { return (System.Data.DataRowView)_bdsldps.Current; } private void Savedata() { DataTable _tbl = new DataTable(); string _ma = txtma.Text.Trim(); string _lydo =txt_ld.Text.Trim(); string _kieu =txt_kieu.Text.Trim(); try { if (_chon == "M") { SqlParameter[] _para; _para = new SqlParameter[] { new SqlParameter("@_Property","M"), new SqlParameter("@_Ma_ps",_ma), new SqlParameter("@_lydo_ps",_lydo), new SqlParameter("@_kieu_ps",_kieu)}; _tbl = _cn.FillData("Save_DM_psts", _para); } if (_chon == "S") { SqlParameter[] _para; _para = new SqlParameter[] { new SqlParameter("@_Property","S"), new SqlParameter("@_Ma_ps",_ma), new SqlParameter("@_lydo_ps",_lydo), new SqlParameter("@_kieu_ps",_kieu)}; _tbl = _cn.FillData("Save_DM_psts", _para); } } catch { MessageBox.Show("Không lưu dữ liệu"); } } private void Delete() { if (MessageBox.Show("Bạn có chắc chắn muốn xóa danh mục này ko", "Thong bao", MessageBoxButtons.YesNo) == DialogResult.Yes) { DataTable _tbl = new DataTable(); SqlParameter[] _para; _para = new SqlParameter[] { new SqlParameter("@_Ma_ps", ma_id().Trim()) }; _tbl = _cn.FillData("Delete_DM_psts", _para); this._bdsldps.RemoveCurrent(); MessageBox.Show("Xoa thanh cong", "Thong bao"); } else { return; } } private void cmdthem_Click(object sender, EventArgs e) { this.AddNew(); _chon = "M"; } private void cmd_huy_Click(object sender, EventArgs e) { if(this.ma_id()=="") { LockObject(); this._bdsldps.RemoveCurrent(); this._bdsldps.MoveLast(); } } private void cmdsua_Click(object sender, EventArgs e) { if (ma_id() == "") { MessageBox.Show("Không có bản ghi để sửa"); return; } this.Edit(); _chon = "S"; } private void cmdluu_Click(object sender, EventArgs e) { if (txtma.Text.Trim() == "" || this.txt_ld.Text.Trim() == ""||this.txt_kieu.Text.Trim()=="") { MessageBox.Show("Bạn phải nhập đầy đủ thông tin trước khi lưu", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Question); this.txtma.Focus(); return; } if (_chon == "M") { int dem; SqlParameter[] _para1; _para1 = new SqlParameter[]{new SqlParameter("@_Ten_bang","Dm_psts"), new SqlParameter("@_Ma",this.txtma.Text.Trim()), new SqlParameter("@_Ma_code","Ma_ps")}; _so_bg.DataSource = _cn.FillData("Display_tinh", _para1); DataRowView _drv2 = (System.Data.DataRowView)_so_bg.Current; dem = Convert.ToInt32(_drv2["So_bg"].ToString()); if (dem != 0) { MessageBox.Show("Mã số đã tồn tại, không thể lưu !", "Thong bao", MessageBoxButtons.OK, MessageBoxIcon.Warning); this.txtma.Clear(); this.txtma.Focus(); return; } } Savedata(); this.Refresh(); this.LockObject(); } private void cmdxoa_Click(object sender, EventArgs e) { if (this.ma_id() == "") { MessageBox.Show("Không có bản ghi để xóa"); return; } this.Delete(); this.Refesh(); } private void cmdthoat_Click(object sender, EventArgs e) { this.Close(); } private void frm_ldps_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Return) SendKeys.Send("{TAB}"); } } }

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

  • doc33157.doc