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

MỤC LỤC DANH MỤC CÁC CHỮ VIẾT TẮT UBNN Ủy ban nhân dân DKKD Đăng ký kinh doanh KH & DT Kế hoạch và đầu tư PC Máy vi tính cá nhân CNTT Công nghệ thông tin HTTT Hệ thống thông tin CSDL Cơ sở dữ liệu TSCĐ Tài sản cố định QLTSCĐ Quản lý tài sản cố định TS Tài sản DM Danh mục Dm_Tscd Danh mục tài sản cố định Dm_Nhts Danh mục nhóm tài sản Dm_Ngvon Danh mục nguồn vốn Dm_Psts Danh mục các lý do phát sinh tài sản Dm_Mdsd Danh mục mục đích sử dụng Dm_Pb Danh mục phòng ba

doc128 trang | Chia sẻ: huyen82 | Lượt xem: 2657 | Lượt tải: 3download
Tóm tắt tài liệu 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
n Gt_Khts Giá trị khấu hao tài sản Ma_Nhts Mã nhóm tài sản Ten_Nhts Tên nhóm tài sản Dien_Giai Diễn giải Ma_Mucdich Mã mục đích Ten_Mucdich Tên mục đích Ma_Ngvon Mã nguồn vốn Ten_Ngvon Tên nguồn vốn Ma_Pb Mã phòng ban Ten_Pb Tên phòng ban Ma_Ps Mã phát sinh Lydo_Ps Lý do phát sinh Kieu_Ps Kiểu phát sinh Ma_Ts Mã tài sản Ten_Ts Tên tài sản Ma_Ts_0 Mã tài sản mức 0 DVT Đơn vị tính Cong_suat Công suất So_Luong Số lượng Nuoc_Sx Nước sản xuất Nam_Sx Năm sản xuất Ngay_Ps Ngày phát sinh Gt_Ng Giá trị nguyên giá Gt_Kh Giá trị khấu hao Gt_Cl Giá trị còn lại Ng_Kh Ngày khấu hao So_Th_Kh Số tháng khấu hao He_So_Kh Hệ số khấu hao Ghi_Chu Ghi chú Nam Năm khấu hao Thang Tháng khấu hao Gt_Kh_Th Giá trị khấu hao tháng Sua_Kh_Th Sửa khấu hao tháng Gt_Cl_Th Giá trị còn tháng Gt_Kh_Nam Giá trị khấu hao năm Sua_Kh_Nam Sửa khấu hao năm Gt_Cl_Nam Giá trị còn lại năm DANH MỤC HÌNH VẼ Hình 1.1: Sơ đồ cơ cấu tổ chức 12 Hình 1.2: Các bộ phận của công ty 13 Hình 1.3: Các phòng ban của công ty trụ sở miền Bắc 13 Hình 1.4: Các phòng ban của công ty trụ sở Đà Nẵng 14 Hình 1.5: Các phòng ban công ty trụ sở miền Nam 14 Hình 2.1: Các bộ phận chức năng của HTTT 24 Hình 2.2: Phân loại hệ thống thông tin theo nghiệp vụ và mức ra quyết định 29 Hình 2.3 : Các ký pháp của IFD 33 Hình 2.4: Các ký pháp dùng cho DFD 34 Hình 2.5: Thiết kế vật lý trong các xử lý 38 Hình 3.1: Mô hình chức năng nghiệp vụ của của bộ phận QLTSCĐ 50 Hình 3.2: Sơ đồ IFD phát sinh tài sản từ phong ban 51 Hình 3.3: Sơ đồ IFD phát sinh tài sản từ ban lãnh đạo 52 Hình 3.4: Sơ đồ IFD quá trình quản lý tài sản 53 Hình 3.5 Sơ đồ luồng thông tin mức ngữ cảnh 54 Hình 3.6: Sơ đồ IFD quá trình quản lý tài sản 54 Hình 3.7: Sơ đồ DFD mức 1 của hoạt động quản lý danh mục 55 Hình 3.8: Sơ đồ DFD mức 1 của hoạt động quản lý phát sinh tài sản 56 Hình 3.9: Sơ đồ DFD mức 1 của hoạt động thống kê báo cáo 57 Hình 3.10: Mô hình quan hệ thực thể của hoạt động quản lý tài sản 61 Hình 3.11 :Sơ đồ cấu trúc dữ liệu 62 Hình 3.12 : bảng danh mục nhóm tài sản 63 Hình 3.13 : Bảng danh mục mục đích sử dụng 63 Hình 3.14: Bảng danh mục nguồn vốn 63 Hình 3.15 : Bảng danh mục phòng ban 64 Hình 3.16: Bảng Danh Mục Phát Sinh Tài Sản 64 Hình 3.17: Bảng danh mục tài sản cố định 65 Hình 3.18: Bảng giá trị khấu hao tài sản 66 Hình 3.19 : sơ đồ quan hệ giữa các bảng 67 Hình 3.20: Các ký hiệu trong thiết kế giải thuật 68 Hình 3.21 :Thuật toán thêm mới dữ liệu 69 Hình 3.22: Thuật toán sửa dữ liệu 70 Hình 3.23: Thuật toán tìm kiếm dữ liệu 71 Hình 3.24: Thuật toán xóa dữ liệu 72 Hình 3.25: Thuật toán in báo cáo 73 Hình 3.26: Form đăng nhập 75 Hình 3.27: Form đổi mật khẩu 76 Hình 3.28: Form chính của chương trình 77 Hình 3.29: Form danh mục nhóm tài sản 78 Hình 3.30: Form danh mục nhóm nguồn vốn 79 Hình 3.31: Form danh mục nhóm phòng ban 80 Hình 3.32: Form danh mục mục đích sử dụng 81 Hình 3.33: Form danh mục lý do phát sinh 83 Hình 3.34: Form quan lý hành hóa 83 Hình 3.35: Form hướng dẫn sử dụng 84 Hình 3.36: Form thông tin liên hệ 85 Hình 3.37: Form thư giãn 86 Hình 3.38: Form tìm kiếm các tài sản phát sinh 87 Hình 3.39: Form lọc khấu hao tài sản theo phòng ban 87 Hình 3.40: Bảng tính khấu hao theo phòng ban 89 Hình 3.41 :Báo cáo tăng giảm tài sản 90 LỜI MỞ ĐẦU Ngày nay dưới sự phát triển nhanh chóng của ngành khoa học máy tính, máy tính đã trở thành một công cụ đắc lực giúp cho các lĩnh vực khác có những bước phát triển nhảy vọt trong đó ta phải kể đến lĩnh vực kinh tế. Dưới sự trợ giúp của các phần mềm thì việc quản lý các doanh nghiệp đã trở nên dễ dàng, chính xác và nhanh chóng giúp cho các cán bộ quản lý đưa ra những quyết định kịp thời. Trong công tác quản lý của cơ quan, doanh nghiệp có rất nhiều nghiệp vụ cần quản lý vì thế việc dùng phần mềm nào để quản lý có hiệu quả là một lựa chọn khó khăn. Việc lựa chọn phần mềm phụ thuộc vào rất nhiều yếu tố trong đó phải chú trọng đến: yêu cầu của việc quản lý, tình hình tài chính của công ty,trình độ cán bộ công nhân viên trong công ty...Dựa vào các yếu tố đó ta lựa chọn các giải pháp như mua phần mền đại trà (office, AutoCad,...), đi thuê công ty phần mềm chuyên nghiệp phát triển, tự phát triển… Trong quá trình thực tập, em đã được tiếp xúc với nhiều nghiệp vụ, nhiều bài toán do công ty BRAVO đặt ra…trong đó đề tài: “ xây dựng phần mềm quản lý tài sản cố định ”là đề tài em tâm đắc nhất. Do thời gian có hạn nên phần mềm xây ở mức đơn giản với những chức năng chính là trợ giúp một phần trong việc quản lý tài sản ở các doanh nghiệp nhỏ dùng trên máy đơn. Qua đây em xin chân thành cảm ơn sự quan tâm giúp đỡ tận tình của cô Ts.Trần Thi Song Minh người trực tiếp hướng dẫn em và anh Nguyễn Mạnh Cường cùng các anh, các chị ở phòng triển khai của công ty cổ phần phần mềm kế toán BRAVO đã hướng dẫn và tạo mọi điều kiện cho em hoàn thành báo cáo chuyên đề thực tập tốt nghiệp này. Với sự nỗ lực của bản thân, trong thời gian thực tập kết hợp với kiến thức được học trong nhà trường và tự học trong quá trình thực tập đã giúp em hoàn thành đề tài một cách tốt nhất. Nhưng do thời gian và kinh nghiệm trong lĩnh vực thiết kế và lập trình còn nhiều hạn chế nên không thể tránh khỏi những thiếu sót. Vì vậy em rất mong được sự góp ý giúp đỡ của các thầy cô, các anh, các chị và các bạn để đề tài được hoàn thiện hơn. Em xin chân thành cảm ơn Hà nội, ngày 28 tháng 4 năm 2008 Sinh viên Phạm Kiên Quyết CHƯƠNG 1 GIỚI THIỆU VỀ CÔNG TY CỔ PHẦN PHẦN MỀM KẾ TOÁN BRAVO VÀ ĐỀ TÀI NGHIÊN CỨU 1.1 Tổng quan về công ty cổ phần phần mềm Bravo Phần này nói về các khía cạnh liên quan đến công ty Bravo như vai trò chức năng, lĩnh vực hoạt động, chiến lược kinh doanh, cơ cấu tổ chức,... Tên công ty: Công ty cổ phần phần mềm Bravo. Tên tiếng Anh: Bravo Software Join Stock Company. Giấy phép thành lập: Số 4667/GP_UB ngày 07/10/1999 của UBND Hà Nội. Giấy chứng nhận ĐKKD: Số 056682 ngày 18/10/1999 của sở KH & ĐT Hà Nội. Lĩnh vực hoạt động: Sản xuất phần Tài khoản: Số 0011000413245 tại Sở giao dịch Ngân hàng ngoại thương Việt Nam. Mã số thuế: Số 0100947771 tại Cục thuế Hà Nội. Giám đốc công ty: Ông Đào Mạnh Hùng. Địa chỉ: Trụ sở chính tại 48 Láng Hạ, Đống Đa, Hà Nội. Điện thoại: 04.776 2472 (7 lines). Fax: 04.7760 2470. Email: bravosoft@vnn.vn. Website: www.bravo.com.vn Chi nhánh công ty: Văn phòng đại diện công ty tại Đà Nẵng. Đại diện: Ông Nguyễn Đức Sơn. Địa chỉ: Số 480-482 Trưng Nữ Vương, Hải Châu, Đà Nẵng. Điện thoại: 0511.633 733 (04 lines). Fax: 0511.633 734. Email: bravo@dng.vnn.vn Chi nhánh công ty: Văn phòng đại diện công ty tại Thành phố Hồ Chí Minh. Đại diện: Ông Tôn Minh Thiên. Địa chỉ: Số 97 Nguyễn Công Trứ, Quận 1, Tp Hồ Chí Minh. Điện thoại: 08.914 2636 (06 lines). Fax: 08.914 3870. Email: bravo@hcm.fpt.vn 1.1.1 Chức năng của công ty Công ty chuyên sâu trong việc phát triển phần mềm kế toán và phần mềm quản trị tài chính. Với những kinh nghiệm thực tế giúp công ty hiểu một cách sâu sắc những yêu cầu quản lý của các đơn vị và đây cũng là nền tảng để công ty phát triển phần mềm kế toán Bravo với những đặc điểm và chức năng đáp ứng những yêu cầu ngày càng cao về kế toán và chức năng quản trị . Phần mềm Bravo được thiết kế theo tư tưởng “Hệ thống mở”, cho phép dễ dàng bổ sung và hiệu chỉnh chương trình theo yêu cầu của người sử dụng. Trải qua một quá trình phát triển lâu dài từ những phiên bản phần mềm kế toán đầu tiên BRAVO 3.0, 4.0, 5.0, 6.0 và hiện nay là BRAVO 6.3, nó được xem là phần mềm dễ sử dụng nhất, đáp ứng được các đòi hỏi khắt khe của thực tế và mang tính quản trị cao. Điều này xuất phát từ chính nục tiêu phát triển của Công ty: “Trở thành nhà cung cấp phần mềm số 1 trong lĩnh vực phần mềm kế toán quản trị” 1.1.2 Sơ đồ cơ cấu tổ chức 1.1.2.1 Sơ đồ tổ chức Hội đồng quản trị Ban giám đốc Trụ sở Hà Nội Trưởng chi nhánh Chi nhánh Đà Nẵng Chi nhánh TP HCM Phòng kinh doanh Phòng phát triển Phòng triển khai Phòng Test sản phẩm Phòng bảo hành Phòng kinh doanh Phòng Test sản phẩm Phòng bảo hành Phòng kinh doanh Phòng triển khai Phòng triển khai Phòng Test sản phẩm Phòng bảo hành Phòng kế toán Phòng HC - NS Hình 1.1: Sơ đồ cơ cấu tổ chức 1.1.2.2 Tình hình nhân sự Hiện nay đội ngũ nhân lực của Bravo có 93 người (62 nhân viên kỹ thuật), trong đó 1/3 số nhân viên đã có kinh nghiệm làm việc trên 6 năm về lĩnh vực, 1/3 có ít nhất 4 năm kinh nghiệm, số còn lại đều có ít nhất 1 năm kinh nghiệm trong lĩnh vực. Đây là đội ngũ nhân viên có nhiều kinh nghiệm trong việc chuyển giao, thiết kế, sửa đổi chương trình phần mềm theo những yêu cầu thực tiễn của khách hàng. Những nhân viên này đều là các kỹ sư tin học đã tốt nghiệp đại học chuyên nghành về tin học kinh tế vừa hiểu biết sâu về kế toán, tài chính, vừa có khả năng lập trình tốt. Phòng ban Bộ phận Chức năng, nhiệm vụ Ban giám đốc Giám đốc Điều hành chung toàn công ty Phó giám đốc Điều hành chung các hoạt động phòng kinh doanh miền Bắc Trưởng CN Đà Nẵng Điều hành chung hoạt động của CN Đà Nẵng Trưởng CN Tp HCM Điều hành chung hoạt động của CN Tp HCM Hình 1.2: Các bộ phận của công ty Trụ sở Miền Bắc (41 người) TT Phòng ban Số lượng Chức năng, nhiệm vụ 1 Phòng kinh doanh 06 người Phát triển thị trường tại miền Bắc 2 Phòng phát triển 04 người Nghiên cứu và phát triển sản phẩm 3 Phòng triển khai 22 người Triển khai dự án trên địa bàn các tỉnh miền Bắc 4 Phòng bảo hành 06 người Phụ trách bảo hành sản phẩm các tỉnh miền Bắc 5 Phòng kế toán 02 người Phụ trách hệ thống kế toán tài chính 6 Phòng HC – NS 01 người Quản lý hành chính nhân sự toàn công ty Hình 1.3: Các phòng ban của công ty trụ sở miền Bắc Chi nhánh công ty tại Đà Nẵng (18 người) TT Phòng ban Số lượng Chức năng, nhiệm vụ 1 Phòng kinh doanh 03 người Phát triển thị trường tại miền Trung 2 Phòng triển khai 10 người Triển khai dự án trên địa bàn các tỉnh miền Trung 3 Phòng bảo hành 03 người Phụ trách bảo hành sản phẩm các tỉnh miền Trung 4 Phòng kế toán 01 người Quản lý thống kê toán tài chính và báo cáo lên Công ty 5 Phòng HC - NS 01 người Quản lý hành chính nhân sự Chi nhánh Hình 1.4: Các phòng ban của công ty trụ sở Đà Nẵng Chi nhánh công ty tại TP Hồ Chí Minh (34 người) TT Phòng ban Số lượng Chức năng, nhiệm vụ 1 Phòng kinh doanh 05 người Phát triển thị trường tại miền Nam 2 Phòng phát triển 03 người Nghiên cứu và phát triển sản phẩm 3 Phòng triển khai 20 người Triển khai dự án trên địa bàn các tỉnh miền Nam 4 Phòng bảo hành 04 người Phụ trách bảo hành sản phẩm các tỉnh miền Nam 5 Phòng kế toán 01 người Phụ trách hệ thống kế toán tài chính 6 Phòng HC – NS 01 người Quản lý hành chính nhân sự toàn Chi nhánh Hình 1.5: Các phòng ban công ty trụ sở miền Nam 1.1.3 Chiến lược hoạt động kinh doanh của công ty Bravo 1.1.3.1 Quan điểm của Bravo Khách hàng là người đánh giá trung thực và khách quan nhất về các sản phẩm phần mềm nói chung do vậy việc thỏa mãn một cách tốt nhất các nhu cầu về phần mềm để phục vụ sản xuất kinh doanh của họ là tiêu thức được đặt ra hàng đầu với công ty. Một phần mềm tốt không những phải đáp ứng được yêu cầu của khách hàng mà còn phải là một sản phẩm tuân thủ các qui định chung của chế độ, ứng dụng tốt trong thực tế, có nhiều tiện ích, thao tác dễ dàng, giao diện thân thiện ... làm cho khách hàng gắn bó như là bạn đường trong quá trình công tác. Mỗi thành viên trong công ty BRAVO là một nhân tố mắt xích tạo nên sức mạnh và thành công của công ty. Do vậy chúng tôi luôn mong muốn tập hợp được những thành viên (mắt xích) có tinh thần làm việc tập thể, có sức sáng tạo cao, có tinh thần trách nhiệm với công việc. Để tạo được niềm tin và lòng hăng say trong công việc của các thành viên trong công ty, ngoài các giá trị tinh thần đích thực chúng tôi còn không ngừng phấn đấu nâng cao đời sống vật chất của các thành viên trong công ty. Các mục tiêu cụ thể đó được thể hiện rõ nét trong các qui định, qui chế và các chính sách định hướng về nhân sự của công ty. 1.1.3.2 Cam kết chất lượng của BRAVO Ý thức được tầm quan trọng của chất lượng dịch vụ nhất là trong lĩnh vực công nghệ thông tin do vậy công ty đã triển khai hệ thống quản lý chất lượng theo tiêu chuẩn ISO 9001 : 2000 và đã áp dụng thành công hệ thống này từ tháng 10 năm 2004 đến nay. Với hệ thống quản lý này, công ty đã chuẩn hóa tất cả các quy trình làm việc trong các phòng ban của công ty. Công ty cam kết sẽ mang đến cho khách hàng những sản phẩm dịch vụ và các giải pháp hoàn chỉnh cho hệ thống kế toán cũng như là công tác quản trị tài chính. Công ty thực hiện: Nhận biết quá trình cần thiết trong hệ thống quản lý chất lượng và áp dụng chúng trong toàn bộ công ty. Xác định trình tự và sự tương tác của các quá trình này. Xác định chuẩn mực và phương pháp cần thiết để đảm bảo việc tác nghiệp và kiểm soát các quá trình có hiệu lực. Đảm bảo sự sẵn sàng các nguồn lực và thông tin cần thiết để hỗ trợ hoạt động tác nghiệp và theo dõi các quá trình. Đo lường theo dõi và phân tích các quá trình. Thực hiện các hoạt động cần thiết để đạt được kết quả dự định và cải tiến liên tục các quá trình này. Khi chọn nguồn lực bên ngoài cho quy trình nào đó ảnh hưởng đến sự phát triển sản phẩm đối với các yêu cầu thì công ty đảm bảo kiểm soát tốt những quy trình đó. 1.1.4. Sản phẩm và dịch vụ của công ty 1.1.4.1. Sản phẩm BRAVO là một hệ thống các sản phẩm được thiết kế theo tư tưởng hệ thống mở “sẵn sàng mở rộng và update cho tương lai”. Với các sản phẩm phần mềm của BRAVO, tính mềm dẻo, linh hoạt không chỉ thể hiện rõ bằng việc dễ dàng hiệu chỉnh phần mềm để đáp ứng nhu cầu hiện tại của doanh nghiệp mà còn sẵn sàng cho các yêu cầu của sự phát triển trong tương lai và những biến động khách quan của chính sách, chế độ kế toán tài chính của nhà nước. Hệ thống chương trình được thiết kế mở còn có mục đích dễ dàng bổ sung, hiệu chỉnh các chức năng cho phù hợp với yêu cầu đa dạng của thực tế. “Những doanh nghiệp tiên tiến không còn hài lòng với các phần mềm kế toán và vật tư riêng lẻ nữa, họ mong muốn có các giải pháp quản trị tài chính toàn diện”. Sản phẩm: Phần mềm Quản trị - Tài chính - Kế toán (BRAVO) Với hệ thống quản trị tài chính, công ty BRAVO đã sáng tạo ra sản phẩm “Phần mềm quản trị tài chính BRAVO”. Phần mềm BRAVO là phần mềm kế toán, quản trị được thiết kế và viết theo quy định của Bộ Tài chính cùng với các chuẩn mực kế toán. Với phần mềm BRAVO thì người sử dụng chỉ cần cập nhật các số liệu đầu vào còn chương trình sẽ tự động tính toán và lên các sổ sách, báo cáo theo yêu cầu. Chức năng của chương trình là theo dõi các chứng từ đầu vào (Phiếu thu, Phiếu chi, Phiếu nhập kho, Phiếu xuất kho, Hoá đơn bán hàng, Phiếu thanh toán,...). Dựa trên các chứng từ đó chương trình sẽ lên các báo cáo về Quản trị - Tài chính - Kế toán. Phần mềm kế toán Bravo đã được đăng ký, chứng nhận: Giấy chứng nhận bản quyền tác giả số 321/2001/QTG do Cục bản quyền tác giả - Bộ Văn hóa thông tin cấp ngày 24/10/2001 về phần mềm kế toán BRAVO. Giấy chứng nhận đăng ký nhãn hiệu hàng hóa số 53916 theo quyết định số A1794/QĐ – ĐK ngày 28/04/2004 của Cục sở hữu công nghệ và môi trường về việc bảo hộ nhãn hiệu hàng hóa: Phần mềm kế toán BRAVO. Những đặc điểm nổi bật của Phần mềm Tài chính - Kế toán (BRAVO) Công nghệ tiên tiến: hệ thống chương trình được thiết kế và xây dựng dựa trên công nghệ tiên tiến về lập trình xây dựng và cơ sở dữ liệu bằng nhiều ngôn ngữ khác nhau: Cơ sở dữ liệu SQL Server 2000 được sử dụng cùng với hệ thống được thiết kế theo mô hình 3 lớp cho phép làm việc tốt với khối lượng dữ liệu lớn (500Mb trở lên). Chất lượng ISO 9001 : 2000: Lập trình theo các quy trình kiểm soát chất lượng chặt chẽ và toàn diện làm cho BRAVO là sản phẩm ổn định và có độ tin cậy cao. Có quy trình để khách hàng có thể kiểm soát chất lượng đào tạo, sử dụng phần mềm. Là sản phẩm của hệ thống quản lý chất lượng ISO 9001 : 2000. Phần mềm kế toán sản xuất: tính giá thành chi tiết cho từng sản phẩm, từng nhóm sản phẩm theo nhiều phương pháp tính giá thành khác nhau. Phân tích giá thành theo khoản mục và yếu tố. Hỗ trợ quản lý vật tư với số lượng lớn. Chức năng theo vết (Trace): cho phép truy cập từ báo cáo Tổng hợp (Bảng cân đối tài khoản) --> Chi tiết (Sổ chi tiết) --> Chứng từ nghiệp vụ phát sinh. Từ hóa đơn truy ngược lại các chứng từ thanh toán. Chất lượng chuyên nghiệp: Lập trình theo các quy trình kiểm soát chất lượng chặt chẽ và toàn diện làm cho BRAVO là sản phẩm ổn định và có độ tin cậy cao. Có quy trình để khách hàng có thể kiểm soát chất lượng đào tạo sử dụng phần mềm. Phần mềm kế toán quản trị: công cụ trợ giúp các nhà quản lý phân tích và đưa ra các quyết định kinh doanh kịp thời, hiệu quả. Quản lý đa cấp, nhiều chiều, xem xét thông tin trên nhiều giác độ để giúp nhà quản lý có được cái nhìn tổng thể. Tính toàn diện: tuân thủ các quy định về chế độ kế toán. Đầy đủ các phân hệ phù hợp với các phần hành kế toán trong doanh nghiệp. Chạy mạng đa người dùng, bảo mật và phân quyền chi tiết với từng người sử dụng đến từng chức năng, thao tác. Tính xác thực: Hệ thống phần mềm được thiết kế chi tiết các màn hình nhập liệu riêng, phù hợp với từng nghiệp vụ cụ thể, quản lý phân quyền và định nghĩa đến từng chứng từ, báo cáo linh động, mềm dẻo khai báo năm tài chính (không bắt buộc phải đầu từ ngày 1 tháng 1). Hệ thống mở: mềm dẻo, linh hoạt để có thể điều chỉnh không chỉ phù hợp với yêu cầu hiện tại của doanh nghiệp mà còn sẵn sàng cho các yêu cầu của sự phát triển trong tương lai và sự biến động khách quan của chính sách, chế độ kế toán tài chính của nhà nước. 1.1.4.2. Dịch vụ phần mềm BRAVO Dịch vụ tư vấn: + Khảo sát hệ thống tài chính kế toán hiện tại. + Đánh giá tính khả thi. + Tư vấn thực hiện. Dịch vụ phần mềm: Khảo sát, hiệu chỉnh và cài đặt chương trình: Công ty Phần mềm BRAVO sẽ cử cán bộ kỹ thuật đến văn phòng làm việc của khách hàng để tiến hành khảo sát chi tiết các nghiệp vụ về kế toán và quy trình luân chuyển chứng từ, đồng thời sẽ hiệu chỉnh chương trình (nếu có) cho phù hợp với thực tế. Sau khi hiệu chỉnh xong chương trình theo yêu cầu của khách hàng cán bộ kỹ thuật của công ty BRAVO sẽ cài đặt phần mềm vào hệ thống máy tính của Quý khách. Cung cấp khóa đào tạo từ 6 đến 2 tuần: Công ty Phần mềm BRAVO sẽ cử cán bộ kỹ thuật đến văn phòng làm việc của quý khách để hướng dẫn, đào tạo cách thức nhập dư liệu và sử dụng phần mềm BRAVO, đồng thời tư vấn và trao đổi với khách hàng về việc ứng dụng nghiệp vụ kế toán thực tế vào máy tính. Hỗ trợ sau đào tạo: Sau khóa đào tạo cho khách hang Công ty tiếp tục hỗ trợ thực hiện công tác hỗ trợ khách hàng trong việc sử dụng phần mềm và giải thích những tính năng của phần mềm đó trong vòng 03 tháng. Trong thời gian này những thắc mắc của quý khách hàng và những vấn đề phát sinh khi sử dụng chương trình sẽ được cán bộ kỹ thuật của Công ty giải quyết tức thời. Bảo hành phần mềm:Các sản phẩm mà công ty Phần mềm BRAVO đã cung cấp cho khách hang sẽ được Công ty bảo hành với các nội dung cụ thể như sau: Phần mềm BRAVO sẽ được bảo hành miễn phí trong thời gian 18 tháng. Trong thời gian bảo hành nếu có sự thay đổi về mẫu biểu, chế độ, chính sách của nhà nước thì công ty Phần mềm BRAVO sẽ cập nhật (update) , hiệu chỉnh phần mềm đã cài đặt cho khách hàng mà Quý khách sẽ không phải chịu bất kỳ khoản chi phí nào. Phương thưc bảo hành: Ngay sau khi có thông báo của Quý khách hàng về sự cố hoặc lỗi của chương trình, chúng tôi sẽ căn cứ vào tính chất, tầm quan trọng của thông báo, thực hiện khắc phục, giải quyết sự cố hoặc lỗi của chương trình theo một trong các phương pháp sau: Cử cán bộ đến trực tiếp khắc phục sự cố hoặc lỗi đối với phần mềm đã cài đặt. Thông qua điện thoại, Email hoặc Fax sẽ hướng dẫn cho cán bộ sử dụng chương trình phần mềm cách thức khắc phục, giải quyết sự cố hoặc lỗi đối với phần mềm đó. Gửi chương trình khắc phục sự cố hoặc lỗi cho quý khách hàng theo đường bưu chính. Với những nguyên nhân chủ quan gây lỗi phát sinh từ phía khách hàng như: virus, sự cố về điện, hỏng ổ đĩa cứng… công ty đề có trách nhiệm cài đặt lại phần mềm tại trụ sở của Quý khách hàng. 1.2. Thực trạng tin học hóa tại công ty phần mềm Bravo và bài toán quản lý tài sản cố định Phần này giới thiệu về những vấn đề liên quan đến tin học hóa của doanh nghiệp và về phần mềm như lý do chọn phần mềm và các giải quyết phần mềm 1.2.1 Thực trạng tin học hóa tại bộ phận quản lý tài sản cố định tại công ty Vì BRAVO là công ty sản xuất phần mềm chuyên nghiệp nên trong việc quản lý mọi mặt trong công ty đều đã được tin học hóa. Không những thế công nghệ tại công ty là các công nghệ hàng đầu hiện nay. Mọi hoạt động đều được quản lý bởi phần mềm có tính chuyên nghiệp rất cao do chính công ty tự xây dựng. Trong phần mềm kế toán của BRAVO bao gồm cả phần mềm kế toán tài sản cố định nhưng do nó nằm trong bộ phần mềm nên đôi khi việc quản lý riêng tài sản cố định còn nhiều bất cập và khó khăn chưa khắc phục được. 1.2.2. Lý do chọn đề tài quản lý tài sản cố định Tài sản cố định thường chiếm tỉ trọng lớn trong một doanh nghiệp. Quản lý tốt các hoạt động liên quan tới tài sản sẽ giúp doanh nghiệp nắm bắt trạng thái tài sản một cách nhanh chóng để đưa ra các kế hoạch và quyết định kịp thời, hỗ trợ nâng hiệu quả hoạt động sản xuất kinh doanh, giảm chi phí, bảo vệ đầu tư và tăng khả năng cạnh tranh của doanh nghiệp. Trong quá trình thực tập tại BRAVO, sau khi nghiên cứu các phân hệ mà BRAVO đã xây dựng em thấy phân hệ quản lý tài sản cố định còn nhiều bất cập vì thế em đã chọn đề tài là: “Xây dựng phần mềm quản lý tài sản cố định ” Các công ty ngày nay nhất là các công ty tin học có số lượng tài sản tương đối nhiều và có giá trị cao. Do đó việc quản lý chặt chẽ trong việc tính khấu hao tài sản nên việc quản lý tài sản cố định là một yêu cầu cần thiết. Đây là vấn đề mang tính thực tiễn cao, giúp cho cán bộ quản lý tài sản được chặt chẽ hơn từ đó sẽ tính được giá thành sản phẩm, dịch vụ và hiệu quả họat động sản xuất kinh doanh của mình tốt hơn 1.2.3. Giải pháp tin học giải quyết vấn đề quản lý tài sản cố định Với yêu cầu thực tiễn của đề tài cũng như yêu cầu của công ty BRAVO, em đã lựa chọn ngôn ngữ lập trình là Microsoft Visual Studio C# để thực hiện phần mềm với sự trợ giúp của hệ quản trị cơ sở dữ liệu Microsoft SQL Server vì đó là công nghệ mới hỗ trợ nhiều tính năng trong việc phát triển những ứng dụng trên máy PC. Hệ quản trị cơ sở dự liệu SQL Server là một trong những hệ quản trị tiên tiến nhất hiện nay và được nhiều người sử dụng để phát triển phần mềm trên máy PC đơn hay trên mang cục bộ LAN. SQL Server cung cấp nhiều công cụ hỗ trợ cho người phát triển như công cụ thiết kế CSDL trực quan, công cụ hỗ trợ lập trình truy vấn có cấu trúc, công cụ tạo báo cáo…Nói chung khi xây dựng phần mềm thì lựa chọn hệ quản trị cơ sở dữ liệu SQL là sự lựa chọn tối ưu. Ngôn ngữ lập trình Visual C# là một ngôn ngữ lập trình mới nhất được Microsoft phát triển với nhiều tính năng ưu viết so với các ngôn ngữ hiện nay như Visual Basic, Visual Foxpro… Là ngôn ngữ hướng đối tượng hoàn toàn Là ngôn ngữ hỗ trợ Unicode hoàn toàn Lập trình trực quan … 1.2.4. Đánh giá chung về việc thực hiện đề tài : 1.2.4.1 Yêu cầu của đề tài là quản lý tài sản Việc quản lý tài sản cố định tại công ty gồm các chức năng sau: Quản lý các danh mục liên quan Quản lý tăng tài sản cố định Quản lý giảm tài sản cố định Tính giá trị khấu hao tài sản theo phương pháp khấu hao đều In các báo cáo liên quan 1.2.4.2. Thuận lợi Do thực tập tại một công ty sản xuất phần mềm chuyên nghiệp nên được sự giúp đỡ tận tình của các anh chị tại công ty trong việc thiết kế cơ sở dữ liệu và thiết kế giao diện liên quan. Đây mới chỉ là phần mềm quản lý tài sản đơn thuần chứ không liên quan đến kế toán nhiều nên phần mềm cũng không quá phức tạp. 1.2.4.3 Khó khăn Phụ thuộc nhiều vào phần mềm kế toán tại công ty như cách bố trí giao diện, kiểu dữ liệu và độ dài dữ liệu. Do việc vừa hoặc ngôn ngữ lập trình và hệ quản trị cơ sở dữ liệu nên việc xây dựng phần mềm tương đối đơn giản chỉ phục vụ những yêu cầu quản lý chính. CHƯƠNG 2 CƠ SỞ PHƯƠNG PHÁP LUẬN CHO VIỆC PHÂN TÍCH THIẾT KẾ HỆ THỐNG THÔNG TIN QUẢN LÝ TÀI SẢN CỐ ĐỊNH Việc phát triển một hệ thống thống tin quản lý là một việc rất khó khăn và phức tạp. Để có thể xây dựng được một hệ thống thông tin hiểu quả, trước hết ta phải nắm bắt được cơ sở lý thuyết làm tiền đề phương pháp luận cho đề tài. Vì thế trong chương này chúng ta sẽ tập trung tìm hiểu về cơ sở lý thuyết cho việc phát triển một hệ thống thông tin. 2.1 Thông tin quản lý Từ trước đến nay, chúng ta vẫn nhắc đến thông tin như là một yếu tố quan trọng trong cuộc sống đặc biệt là trong kinh doanh, chỉ cần nắm bắt được thông tin về thị hiếu khách hàng là ta có thể tung ra hàng loạt sản phẩm mới đáp ứng được thị hiếu khách hàng và thu lợi nhuận lớn. Hay khi nắm bắt được các thông tin về các đối thủ cạnh tranh ta sẽ có trước các phương án đáp trả mà đối thủ sẽ không ngờ tới và từ đó ta cũng thu được lợi nhuận lớn… Ngày nay, trong thời đại công nghệ thông tin thì thông tin càng trở thành yếu tố quan trọng, quyết định đến sự thành công của chúng ta. Vậy để hiểu hết giá trị của thông tin, ta phải hiểu thông tin là gì ? Thông tin có rất nhiều cách định nghĩa khác nhau. Một định nghĩa khái quát hơn cả xem thông tin là dữ liệu được đặt vào một ngữ cảnh với một hình thức thích hợp và có lợi cho người sử dụng cuối cùng hay nói cách khác thông tin là những dữ liệu đã được chọn lọc để phục vụ cho một mục đích nào đó.(Dữ liệu là những mô tả về sự vật, con người, sự kiện trong thế giới mà chúng ta gặp bằng nhiều cách thể hiện khác nhau) . Đối với công tác quản lý, thông tin cũng vô cùng quan trọng. Các nhà quản lý sử dụng thông tin nhằm xây dựng chiến lược, mục tiêu để tồn tại và phát triển, lập kế hoạch, bố trí cán bộ, kiểm tra, kiểm soát công việc, và chỉ huy công tác quản lý. Do đó ta có định nghĩa thông tin quản lý như sau: Thông tin quản lý là thông tin mà có ít nhất một cán bộ quản lý cần hoặc có ý muốn dùng vào việc ra quyết định quản lý của mình. Thông tin nói chung là rời rạc, nếu không được sắp xếp, lưu trữ một cách khoa học thì không thể phát huy hết tầm quan trọng của nó. Đây là nguyên do dẫn đến HTTT ra đời. 2.2. Hệ thống thông tin quản lý 2.2.1. Định nghĩa hệ thống thông tin Hệ thống thông tin (HTTT) là là một tập hợp các yếu tố cùng hoạt động là nhiệm vụ thu thập, lưu trữ, xử lý,truyền đạt, phân phát thông tin để phục vụ cho việc phân tích tình hình, ra quyết định, lập kế hoạch, điều hành, kiểm soát các hoạt động trong một cơ quan. Các yếu tố của một HTTT có thể là hoàn toàn thủ công hay dựa trên máy tính điện tử. Ngoài máy tính điện tử, HTTT còn bao gồm con người, phương tiện thông tin liên lạc, các thiết bị phần cứng, phần mềm, các quy tắc, thủ tục, phương pháp, mô hình toán học để xử lý, quản lý dữ liệu. HTTT quản lý là HTTT phục vụ cho công tác quản lý, hầu hết các HTTT đều được gọi là HTTT quản lý. Nguồn Thu Thập Xử lý và lưu trữ Phân phát Đích Kho luu trữ Hình 2.1: các bộ phận chức năng của HTTT Theo hình trên, mọi hệ thống thông tin có bốn bộ phận: bộ phận đưa dữ liệu vào, bộ phận xử lý, bộ phận lưu trữ và bộ phận đưa dữ liệu ra. Đầu ra (Input) của hệ thống thông tin được lấy từ các nguồn (Sources) và được xử lý bởi hệ thống sử dụng chúng cùng với các dữ liệu đã được lưu trữ từ trước. Kết quả xử lý (Outputs) được chuyển đến các đích (Destination) hoặc cập nhật vào kho dữ liệu (Storage). 2.2.2. Tầm quan trọng của hệ thống thông tin Hoạt động của tổ chức chịu nhiều tác động của hệ thống thông tin trong đó hoạt động của HTTT được đánh giá thông qua chất lượng của thông tin mà nó cung cấp. Những người thiết kế hệ thống quản lý dữ liệu cần phải hiểu các nhà quản lý sử dụng thông tin như thế nào. Tiêu chuẩn chất lượng của thông tin được đánh giá qua các tiêu chí sau: Độ tin cậy : Độ tin cậy thể hiện các mặt về độ xác thực và độ chính xác. Thông tin ít độ tin cậy dĩ nhiên sẽ gây cho tổ chức những hậu quả tồi tệ. Chẳng hạn hệ thống chuyển tiền điện tử của một ngân hàng thường xuyên có hiện tượng nhầm lẫn giữa các tài khoản, hay hệ thống không đảm bảo tính kịp thời của các lệnh chuyển tiền sẽ dẫn tới suy giảm lòng tin và thái độ không tốt của khách hàng. Tính đầy đủ: Tính đầy đủ của thông tin thể hiện tính bao quát các vấn đề đáp ứng yêu cầu của nhà quản lý. Nhà quản lý sử dụng các thông tin không đầy đủ có thể dẫn đến các quyết định và hành động không đáp ứng với đòi hỏi của tình hình thực tế. Chẳng hạn hệ thống báo cáo của một ngân hàng không thể lấy đủ số liệu báo cáo tín dụng thu nợ của một chi nhánh, điều này dẫn tới việc không tổng hợp được đầy đủ dữ liệu cho toàn ngành. Tính thích hợp và dễ hiểu: Nhiều nhà quản lý nói rằng ông ta không dùng báo cáo này hay báo cáo kia mặc dù chúng có liên quan đến những hoạt động thuộc trách nhiệm của ông. Nguyên nhân chủ yếu là chúng chưa thích hợp và khó hiểu. Có thể là có quá nhiều thông tin không thích ứng cho người nhận, thiếu sự sáng sủa, có quá nhiều từ viết tắt hoặc đa nghĩa hoặc sự bố trí chưa thích hợp của các phần tử thông tin. Điều đó dẫn đến hoặc là tốn phí cho việc tạo ra những thông tin không đúng hoặc là ra quyết định sai vì thiếu thông tin cần thiết. Tính được bảo vệ: Thông tin là một nguồn nhân lực quý báu của tổ chức cũng như vốn và nguyên vật liệu. Thật hiếm có doanh nghiệp nào mà bất kỳ ai cũng có thể tiếp cận được tới vốn và nguyên liệu. Và cũng phải như vậy với thông tin. Thông tin phải được bảo vệ và chỉ những người được quyền mới được phép tiếp cận tới thông tin. Sự thiếu an toàn về thông tin có thể gây ra những thiệt hại lớn hơn cho tổ chức, nhất là với một ngân hàng thì yêu cầu bảo mật thông tin rất cao. Tính kịp thời: Giá trị của thông tin sẽ giảm và mai một theo thời gian. Vì thế, thông tin dù có tin cậy, dễ hiểu, thích ứng và được bảo vệ an toàn nhưng vẫn không có ích khi nó không được gửi tới người sử dụng vào lúc cần thiết.Ví dụ điện báo của ngân hàng cần phải thực hiện vào thời điểm cuối ngày nhanh chóng để thông báo tình hình hoạt động tín dụng trong một ngày ._.một cách kịp thời. 2.2.3. Nguyên nhân phát triển hệ thống thông tin Câu hỏi đầu tiên khi một tổ chức muốn phát triển một HTTT là có thật sự cần thiết phát triển một hệ thông thông tin không ? Có thể mỗi tổ chức đưa ra những lý do khác nhau cho vấn đề phát triển hệ thống thông tin mới này, tuy nhiên ta có thể liệt kê một số nguyên nhân chính sau đây: Trước hết là các vấn đề về quản lý kinh tế, những luật mới của Chính phủ ban hành, những thay đổi trong chiến lược tăng thu nhập như giảm chi phí, tăng chất lượng sản phẩm, giảm chi phí giao dịch, tăng chất lượng dịch vụ và hỗ trợ sau bán hàng có thể dẫn đến sự cần thiết của một dự án phát triển một HTTT mới Những yêu cầu mới của nhà quản lý. Đó là những chỉ thị của nhà nước hay cấp trên đối với việc thay đổi hệ thống Sự xuất hiện của công nghệ mới. Việc xuất hiện các công nghệ mới cũng có thể dẫn đến việc một tổ chức phải xem xét lại những thiết bị mình có trong HTTT cũ. Công nghệ mới được sử dụng có thể mang lại hiệu quả gấp nhiều lần so với công nghệ hiện tại. Áp lực của cạnh tranh. Các hành động mới của doanh nghiệp cạnh tranh cũng là một tác động mạnh làm cho các doanh nghiệp buộc phải có những hành động đáp ứng. Yêu cầu của cấp dưới. Những yêu cầu nhằm cải thiện môi trường các nghiệp vụ từ cấp dưới cũng cần được tổ chức xem xét vì nó đảm bảo được tính khách quan trong quản lý. Sách lược chính trị của người lãnh đạo cơ quan.Những thách thức về chính trị cũng không nên bỏ qua trong việc thay đổi HTTT hiện đại. Mục tiêu cuối cùng của những cố gắng phát triển HTTT là cung cấp cho các thành viên của tổ chức những công cụ quản lý tốt nhất. 2.2.4. Phân loại hệ thống thông tin Có hai cách phân loại hệ thống thông tin trong các tổ chức hay được dùng. Một cách lấy mục đích phục vụ của thông tin đầu ra để phân loại và một cách lấy nghiệp vụ mà nó phục vụ là cơ sở để phân loại 2.2.4.1 Phân loại theo mục đích phục vụ của thông tin đầu ra Mặc dù các hệ thống thông tin thường sử dụng các công nghệ khác nhau nhưng chúng phân biệt nhau trước hết bởi loại hoạt động mà chúng trợ giúp. Theo cách này có năm loại: Hệ thống thông tin xử lý giao dịch, hệ thống thông tin quản lý, hệ thống thông tin trợ giúp ra quyết định, hệ thống chuyên gia và hệ thống tăng cường khả năng cạnh tranh. Hệ thống thông tin xử lý giao dịch TPS (Transaction Processing System): Hệ thông này sử lý giao dịch xử lý các dữ liệu từ các giao dịch mà tổ chức thực hiện hoặc với khách hàng hoặc với nhà cung cấp, những người cho vay hoặc những nhân viên của nó.Các giao dịch sản sinh ra những giấy tờ, tài liệu thể hiện những giao dịch của đó. Các hệ thống xử lý giao dịch có nhiệm vụ tập hợp tất cả các dữ liệu cho phép theo dõi các hoạt động của tổ chức. Chúng trợ giúp các hoạt động ở mức tác nghiệp. Các hệ thống thuộc loại này như: hệ thống trả lương, lập đơn đặt hàng, làm hóa đơn… Hệ thống thông tin quản lý MIS (Management Information System): Là những hệ thống trợ giúp các hoạt động quản lý của tổ chức, các hoạt động này nằm ở mức điều khiển tác nghiệp. Chúng dựa chủ yếu vào các cơ sở dữ liệu được tạo ra bởi các hệ xử lý giao dịch cũng như từ các nguồn dư liệu ngoài tổ chức. Nói chung chúng tạo ra các báo cáo cho các nhà quản trị một cách định kỳ hoặc theo yêu cầu. Các báo cáo này tóm lược tình hình về một mặt đặc biệt nào đó của tổ chức. Báo cáo này thường có tính so sánh, chúng làm tương phản tình hình hiện tại với tình hình được dự kiến trước. Vì các hệ thống thông tin quản lý phần lớn dựa vào các hệ thống xử lý giao dịch nên chất lượng thông tin mà chúng sản sinh cũng phụ thuộc rất nhiều vào việc vận hành tốt hay xấu của hệ xử lý giao dịch. Các hệ thống thông tin quản lý như hệ thống phân tích chức năng bán hàng, theo dõi chi tiêu… Hệ thống trợ giúp ra quyết định DSS (Decision Support System): là những hệ thông được thiết kế với mục đích rõ ràng là trợ giúp các hoạt động ra quyết định. Về nguyên tắc hệ thống trợ giúp ra quyết định phải cung cấp thông tin cho phép người ra quyết định xác định rõ tình hình một quyết định mà mình phải ra. Hệ thống chuyên gia ES (Expert System): Đó là những hệ thống cơ sở trí tuệ, có nguồn gốc từ nghiên cứu trí tuệ nhân tạo, trong đó có sự biểu diễn bằng các công cụ tin học những tri thức của một chuyên gia về một lĩnh vực nào đó. Hệ thống thông tin tăng cường khả năng cạnh tranh ISCA (Information System for Competitive Advantage): Hệ thống thông tin loại này được sử dụng như một trợ giúp chiến lược. Hệ thống thông tin tăng cường khả năng cạnh tranh được thiết kế cho những người sử dụng là những người ngoài tổ chức, có thể là một khách hàng, một nhà cung cấp và cũng có thể là một tổ chức khác. Hệ thống tăng cường cạnh tranh là những công cụ thể hiện ý đồ chiến lược nên có thể gọi chúng là HTTT chiến lược. 2.2.4.2 Phân loại theo nghiệp vụ và mức ra quyết định Các thông tin trong một tổ chức được phân theo cấp quản lý và trong mỗi cấp quản lý chúng lại được chia theo nghiệp vụ mà chúng phục vụ. Có thể xem bảng phân loại các hệ thống thông tin trong một doanh nghiệp sản xuất để hiểu các phân chia này. Tài chính chiến lược Marketing chiến lược Nhân lực chiến lược Kinh doanh và sản xuất chiến lược Hệ thống thông tin văn phòng Tài chính chiến thuật Marketing chiến thuật Nhân lực chiến thuật Kinh doanh và sản xuất chiến thuật Tài chính tác nghiệp Marketing tác nghiệp Nhân lực tác nghiệp Kinh doanh và sản xuất tác nghiệp Hình 2.2: Phân loại hệ thống thông tin theo nghiệp vụ và mức ra quyết định 2.2.5 Phương pháp phát triển hệ thống thông tin 2.2.5.1 Một số nguyên tắc phát triển hệ thống thông tin Một phương pháp được định nghĩa như một tập hợp các bước và các công cụ cho phép tiến hành một quá trình phát triển hệ thống thông chắt chẽ nhưng dễ quản lý hơn. Phương pháp phát triển hệ thống thông tin dựa vào ba nguyên tắc: Nguyên tắc 1: Sử dụng các mô hình Nguyên tắc 2: Chuyển từ cái chung sang cái riêng Nguyên tắc 3: Chuyển từ môi trường vật lý sang môi trường logic khi phân tích và từ mô hình logic sang mô hình vật lý khi thiết kế 2.2.5.2 Các công đoạn phát triển hệ thống thông tin Để xây dựng một hệ thống thông tin đáp ứng tốt nhất mọi yêu cầu của nhà quản lý cũng như bảo dảm tối ưu về chi phí và thời gian người ta thường sử dụng phương pháp thác nước.Phương pháp này mô tả vòng đời của một dự án phát triển HTTT với ý nghĩa giai đoạn trước sẽ tác động và làm tiền đề cho giai đoạn sau. Mô hình này được thực hiện qua bảy giai đoạn. Mỗi giai đoạn kèm theo việc ra quyết định về việc tiếp tục hay chấm dứt sự phát triển của hệ thống. Giai đoạn 1: Đánh giá yêu cầu Giai đoạn này cung cấp cho lãnh đạo tổ chức những dữ liệu đích thực để ra quyết định về thời cơ, tính khả thi và hiệu quả của mộ dự án phát triển hệ thống. Nó bao gồm các công đoạn sau: Lập kế hoạch: Gồm các công việc như làm quen với hệ thống đang xét, xác định thông tin cần thu thập cũng như nguồn và phương pháp thu thập. Làm rõ yêu cầu: Giúp cho phân tích viên hiểu rõ yêu cầu của người có yêu cầu, xác định chính xác đối tượng yêu cầu, thu thập những yếu tố cơ bản của môi trường hệ thống và định dạng khung cảnh nghiên cứu. Đánh giá khả thi: Tìm xem những yếu tố nào ngăn cản sự thành công của dự án, đánh giá khả thi về tổ chức, về tài chính, về thời hạn và về kỹ thuật Chuẩn bị và trình bày báo cáo đánh giá yêu cầu Giai đoạn 2: Phân tích chi tiết Giai đoạn này làm rõ những vấn đề của hệ thống đang nghiên cứu, xác định nguyên nhân đích thực của vấn đề đó, những đòi hỏi và những ràng buộc áp đặt với hệ thống và xác định mục tiêu mà hệ thống thông tin mới phải đạt được. Từ đó sẽ quyết định có tiếp tục phát triển hệ thông hay không. Các công đoạn của giai đoạn này bap gồm: Lập kế hoạch phân tích Nghiên cứu môi trường của hệ thống thực tại Nghiên cứu hệ thống thực tại Chuẩn đoán và xác định các yếu tố giải pháp Đánh giá lại tính khả thi Sửa đổi đề xuất của dự án Chuẩn bị và trình bày báo cáo phân tích chi tiết Để có thể nghiên cứu chính xác được môi trường của hệ thống cũ, trước tiên ta phải tiến hành thu thập thông tin về hệ thống cũ. Các phương pháp thu thập thông tin gồm: Phỏng vấn: Đây là công cụ đắc lực, ta có thể thu được những nội dung cơ bản khái quát về hệ thống mà tài liệu không thể có được hay gặp được những người có trách nhiệm, nắm được mục tiêu của tổ chức. Sử dụng phiếu điều tra: Phương pháp này được sử dụng khi phải lấy thông tin từ một số lượng lớn các đối tượng và trên phạm vi địa lý rộng lớn. Nhưng để vận dụng phương pháp này thì người gửi phải là những người cấp trên của các đối tượng nhận phiếu. Quan sát: Đây là phương pháp khó khăn và tốn thời gian vì người bị quan sát có thể hoạt động không giống thực tế mà người sử dụng có vai trò rất quan trọng khi tham gia vao đội ngũ phân tích. Sau bước thu thập thông tin, dữ liệu được tập trung và được chuẩn bị cho việc phân tích. Nhưng trước khi phân tích những dữ liệu này nhất thiết phải mã hóa chúng để ta dễ dàng nhận biết và quản lý. Mã hóa được xem là việc xây dựng một tập hợp những hàm thức mang tính quy ước và gán cho một tập hợp này một ý nghĩa bằng cách liên hệ với tập hợp những đối tượng cần biểu diễn. Hay nói một cách khác, việc mã hóa thông tin là thay thế thông tin ở dạng “tự nhiên” thành một dãy ký hiệu thích ứng với mục tiêu của người sử dụng. Mục tiêu đó là nhận diện nhanh và không nhầm lẫn các đối tượng, mô tả nhanh chóng các đối tượng, tiết kiệm không gian lưu trữ và thời gian xử lý, thực hiện những phép kiểm tra logic hình thức hoặc thể hiện vài dặc tính của đối tượng. Sau đây là một số phương pháp mã hóa: Phương pháp mã hóa phân cấp: nguyên tắc tạo bộ mã hóa là người ta phân cấp đối tượng từ trên xuống. Và mã số được xây dựng từ trái qua phải các chữ số được kéo dài về phía bên phải để thể hiện chi tiết sự phân cấp sâu hơn. Phương pháp mã hóa liên tiếp: Mã kiểu này được tao ra bởi nguyên tắc tạo mã nhất định. Chẳng hạn một đối tượng có mã 98 thì đối tượng đứng sau nó sẽ có mã 99. Phương pháp mã hóa theo xeri: Phương pháp chính này là sử dụng một tập hợp theo dãy gọi là xeri. Xeri được coi như một giấy phép theo mã quy định. Phương pháp mã hóa gợi nhớ: Phương pháp này căn cứ vào đặc tính của đối tượng dể xây dựng. Chẳng hạn dùng việc viết tắt các chữ cái đầu làm mã nhu mã tiền tệ quốc tệ quốc tế: VND, USD… Phương pháp mã hóa ghép nối: Phương pháp này chia mã ra làm nhiều trường. Mỗi trường tương ứng với một đặc tính, những liên hệ có thể có giữa những tập hợp con khác nhau với đối tượng được gán mã. Phương pháp tổng hợp: Phương pháp này là kết hợp của một số phương pháp trên. Ví như nó là tổng hợp của phương pháp mã hóa ghép nối và phương pháp mã hóa liên tiếp chẳng hạn. Cách thức tiến hành mã hóa: Xác định tập hợp các đối tượng cần mã hóa Xác định các xử lý cần thực hiện Lựa chọn giải pháp mã hóa Xác định trật tự đẳng cấp các tiêu chuẩn lựa chọn Kiển tra lại những bộ mã hiện hành Tham khảo ý kiến của người đã sử dụng Kiểm tra độ ổn định của các thuộc tính Kiểm tra khả năng thay đổi của các đối tượng Các công cụ sử dụng trong giai đoạn phân tích chi tiết Để có cái nhìn tổng quan với một HTTT, cán bộ phân tích phải tiến hành mô hình hóa hệ thống đó. Có nghĩa là phải biểu diễn hệ thống đó dưới dạng các mô hình, sơ đồ hay hình họa nhằm giúp cho tất cả mọi người có thể hiểu một cách tổng quát và nhanh chóng đối với hệ thông. Hiện nay có các công cụ phổ biến để mô hình hóa hệ thông đó là: Sơ đồ luồng thông tin (information flow diagram–IFD), sơ đồ luồng dữ liệu (Data flow diagram– DFD), sơ đồ luồng thông tin (IFD) Được dùng để mô ta hệ thống thông tin theo cách thức động. Tức là mô tả sự di chuyển của dữ liệu, việc xử lý,lưu trư trong thế giới vật lý bằng các sơ đồ Các ký pháp của IFD Xử lý Thủ công Giao tác người - máy Tin học hóa toàn diện Kho dữ liệu Thủ công Tin học hóa Dòng thông tin - Điều khiển Tài liệu Hình 2.3 : các ký pháp của IFD Các phích vật lý Phích luồng thông tin Phích kho chứa dữ liệu Phích chứa xử lý Sơ đồ luồng dữ liệu (DFD) DFD dùng để mô tả chính HTTT nhưng trên góc độ trừu tượng. Trên sơ đồ chỉ bao gồm các luồng dữ liệu, các xử lý, các lưu trữ dữ liệu, nguồn và đích nhưng không hề quan tâm tới nơi, thời điểm và đối tượng chịu trách nhiệm xử lý. Sơ đồ DFD đơn thuần chỉ mô tả hệ thống làm gì và để làm gì. Các ký pháp dùng cho DFD Nguồn hoặc đích Dòng dữ liệu Tiến trình xử lý Kho dữ liệu Tên người/bộ phận phát/nhận thông tin Tên dòng dữ liệu Tên tiến trình xử lý Tệp dữ liệu Hình 2.4: Các ký pháp dùng cho DFD Các mức của DFD Sơ đồ ngữ cảnh (Context diagram) thể hiện nội dung tổng quát nhất của hệ thống thông tin. Trong sơ đồ này có thể bỏ qua các xử lý cập nhật, các kho dữ liệu. Sơ đồ phân rã: Để mô tả hệ thống một cách chi tiết hơn người ta dùng kỹ thuật phân rã sơ đồ. Bắt đầu từ sơ đồ ngữ cảnh người ta phân ra làm các sơ đồ mức 0, tiếp sau mức 0 là mức 1,… Các phích logic Giống như phích vật lý, phích logic hoàn chỉnh tài liệu cho hệ thống. Có 5 loại phích logic. Phích luồng dữ liệu Phích phần tử thông tin Phích kho dữ liệu Phích tệp dữ liệu Giai đoạn 3: Thiết kế logic Giai đoạn này nhằm xác định tất cả các thành phần logic của hệ thống thông tin, gồm nội dung của các đầu ra của hệ thống, nội dung của cơ sở dữ liệu, các xử lý và hợp thức hóa sẽ phải thực hiện. Thiết kế logic gồm những công đoạn sau: Thiết kế cơ sở dữ liệu Thiết kế xử lý Thiết kế các dòng vào Hoàn chỉnh tài liệu logic Hợp thức hóa mô hình logic Thiết kế cơ sở dữ liệu là công việc rất khó khăn và phức tạp, bởi phân tích viên sẽ gặp gỡ những người sử dụng và hỏi họ danh sách dữ liệu mà họ cần. Việc hỏi này thường không đạt hiệu quả cao và sẽ dễ dàng làm cho hệ thống có những phần không đạt yêu cầu. Để khắc phục tình tình trạng này, phân tích viên bắt buộc phải nghiên cứu kỹ lưỡng cơ sở dữ liệu của hệ thống, thậm chí có thể phải làm việc đơn độc và sẽ tùy trường hợp mà có những phương pháp thu thập thích hợp. Tuy nhiên, phân tích viên có thể áp dụng một trong những phương pháp sau: Thiết kế dữ liệu từ các thông tin đầu ra: Đây là phương pháp cổ điển và cơ bản của việc thiết kế cơ sở dữ liệu (CSDL). Phương pháp này dựa trên các văn bản hay báo cáo đầu ra để từ đó xác định các trường dữ liệu cần thiết. Vấn đề quan trọng nhất của phương pháp này đó là áp dụng các chuẩn hóa trong quá trình lọc dữ liệu. Các mức chuẩn hóa như sau: Chuẩn hóa mức 1 quy định: Trong mỗi danh sách không cho phép chứa những thuộc tính lặp. Nếu có thuộc tính lặp thì phải tách các thuộc tính lặp đó thành các danh sách con, có một ý nghĩa dưới góc độ quản lý đồng thời gắn tên và thuộc tính định danh riêng của nó. Chuẩn hóa mức 2 quy định: Trong một danh sách mỗi thuộc tính phải phụ thuộc hàm vào toàn bộ khóa chứ không chỉ phụ thuộc vào một phần của khóa. Nếu có sự phụ thuộc như vậy thì phải tách những thuộc tính đó thành một dánh sách con mới. Đồng thời đặt tên và chọn khóa chính cho danh sách mới. Chuẩn hóa mức 3 quy định: Trong một danh sách không có sự phụ thuộc bắc cầu giữa các thuộc tính. Phải tách chúng thành các thuộc tính riêng rẽ và gắn tên, xác định khóa cho chúng. Thiết kế cơ sở dữ liệu bằng phương pháp mô hình hóa: Đây là phương pháp dựa trên sự thể hiện giữa các thực thể với nhau thông qua các liên kết. Sự thể hiện này được biểu diễn trên mô hình quan hệ thực thể. Mối quan hệ giữa các thực thể với nhau có thể ở dưới dạng một - một (1@1), một – nhiều (1@N), nhiều – nhiều (N@N) Giai đoạn 4: Đề xuất một số phương án và giải pháp Sau khi có được mô hình logic thì cần cụ thể hóa bằng nhiều phương án khác nhau. Mỗi phương án là một phác họa của mô hình vật lý ngoài của hệ thống nhưng chưa phải là chi tiết. Người sử dụng sẽ chọn một phương án đáp ứng tốt nhất yêu cầu của họ. Các công đoạn của giai đoạn đề xuất các phương án và giải pháp: Xác định các ràng buộc tin học và tổ chức Xây dựng các phương án và giải pháp Đánh giá các phương án và giải pháp Chuẩn bị và trình bày báo cáo Công việc quan trọng nhất của giai đoạn này là đánh giá phương án của giải pháp. Bởi thực chất đó là quá trình phân tích và đánh giá chi phí và lợi ích của phương pháp. Kết quả của việc đánh giá này sẽ quyết định là dự án có tiếp tục triển khai nữa hay dừng lại hay phải thay đổi theo phương pháp thực hiện khác. Nếu như việc đánh giá bị sai lệch thì sẽ gây hao tổn rất lớn và ảnh hưởng tới kết quả về sau của dự án. Giai đoạn 5: Thiết kế vật lý ngoài Thiết kế vật lý ngoài bao gồm tài liệu có tất cả các đặc trưng của hệ thống mới cần cho việc thực hiện kỹ thuật và tài liệu cho người sử dụng. Những công đoạn chính của giai đoạn này là: Lập kế hoạch thiết kế vật lý ngoài Thiết kế chi tiết các giao diện vào ra Thiết kế cách thức tương tác với phần tin học hóa Thiết kế các thủ tục thủ công Chuẩn bị và trình bày báo cáo Giai đoạn 6: Triển khai kỹ thuật hệ thống Nhiệm vụ của giai doạn này là cung cấp các tài liệu như các bản hướng dẫn sử dụng và các thao tác cũng như các tài liệu mô tả hệ thống. Các hoạt động chính gồm: Lập kế hoạch triển khai Thiết kế vật lý trong Lập trình Thử nghiệm Hoàn thiện hệ thống và các tài liệu Đào tạo người sử dụng Trong giai đoạn này ta cần phải tìm hiểu một số khái niệm sau đây: Sự kiện (Evenement): là việc thực thi đến nó làm khởi sinh việc thực hiện của một hoặc nhiều xử lý nào đó. Có những sự kiện nằm ngay trong cơ chế của tổ chức hoặc có những sự kiện nằm ngoài. Công việc (Operation): là một dãy xử lý có chung một sự kiện khởi sinh. Tiến trình ( Process): là một dãy các công việc mà các xử lý bên trong của nó nằm trong cùng một lĩnh vực nghiệp vụ. Nếu tiến trình quá lớn thì nên chia cắt thành những lĩnh vực nhỏ hơn. Nhiệm vụ: là một xử lý được xác định thêm các yếu tố về tổ chức: ai? ở đâu? Khi nào thực hiện nó? Pha xử lý: là tập hợp các nhiệm vụ có tính đến các yếu tố tổ chức và thực hiện chúng, không phụ thuộc vào sự kiện nào khác mà chỉ phụ thuộc vào sự kiện khởi sinh ban đầu. Mô đun xử lý: là một xử lý cập nhật hoặc tra cứu bên trong của một pha và thao tác với một số lượng tương đối ít số liệu. Đây là cách chia nhỏ các xử lý. Tiến trình 1 Tiến trình 2 Tiến trình 3 Công việc Pha 1 Pha 1 Pha 1 Hình 2.5: Thiết kế vật lý trong các xử lý Lập trình là công việc quan trọng nhất trong giai đoạn này, đây là công đoạn mà lập trình đưa tất cả những thiết kế từ đầu đến nay vận dụng vào chương trình và trực tiếp xây dựng chương trình. Công đoạn này đòi hỏi lập trình viên phải có một trình độ hiểu biết cao về ngôn ngữ lập trình được áp dụng cũng như các công cụ khác được sử dụng kèm theo. Giai đoạn 7: Cài đặt và khai thác hệ thống Đây là giai đoạn chuyển đổi từ hệ thống cũ sang hệ thống mới và bao gồm các công đoạn: Lập kế hoạch cài đặt Chuyển đổi Khai thác và bảo trì Đánh giá Cài đặt là quá trình chuyển đổi từ hệ thống cũ sang hệ thống mới. Mục tiêu của giai đoạn này là thích hợp hệ thống được phát triển vào các hoạt động của tổ chức một cách ít va vấp nhất và đáp ứng với những thay đổi có thể xảy ra trong suốt quá trình sử dụng. Giai đoạn này có hai khối công việc: Chuyển đổi về mặt kỹ thuật Chuyển đổi về mặt con người Trong thực tế chuyển đổi, người ta hay mắc sai lầm khi xem nhẹ mặt chuyển đổi con người của hệ thống. Cần phải lưu ý rằng thái độ tích cực ủng hộ của những người sử dụng là nhân tố quan trọng cho sự thành công của hệ thống mới. Tuy nhiên việc khích lệ tâm lý cho người sử dụng đón nhận hệ thống mới phải được chuẩn bị trong tất cả các giai đoạn phát triển hệ thống, chứ không chỉ thực hiện trong giai đoạn cuối cùng này. Có bốn kiểu cài đặt hệ thống cơ bản: Cài đặt trực tiếp Theo phương pháp này, người ta dừng hoạt động của hệ thống cũ và đưa ngay hệ thống mới vào sử dụng. Với phương pháp này bất cứ lỗi nào do hệ thống mới gây ra đều ảnh hưởng trực tiếp tới những người sử dụng. Phương pháp này tương đối mạo hiểm và đòi hỏi cài đặt đồng bộ toàn bộ hệ thống. Đối với những hệ thống lớn cần một thời gian tương đối dài để có thể cài đặt xong hệ thống mới. Trong một số trường hợp phương pháp cài đặt trực tiếp là lựa chọn duy nhất, vì lý do không thể chấp nhận sự tồn tại song song của cả hai hệ thống cũ và mới. Phương pháp này có ưu điểm là ít tốn kém nhất. Cài đặt song song Theo phương pháp này cả hai hệ thống mới và cũ đều cùng hoạt động, cho tới khi có thể quyết định dừng hệ thống cũ lại, tức là khi người sử dụng và bộ phận quản lý nhận thấy hệ thống đã đáp ứng yêu cầu nhiệm vụ kết quả của hai hệ thống được so sánh với nhau nhằm giúp để xác định xem hệ thống mới có hoạt động tốt như hệ thống cũ hay không. Lỗi của hệ thống mới, nếu có sẽ không ảnh hưởng lắm tới tổ chức, vì chúng sẽ được khoanh vùng và hoạt động nghiệp vụ sẽ được hỗ trợ bởi hệ thống cũ. Nhưng nó có một số nhược điểm là: Gây ra sự phân tán đối với người sử dụng, vì cùng một lúc phải sử dụng cả hai hệ thống . Chi phí cho hệ thống là rất tốn kém vì một lúc phải duy trì hai nguồn lực cũ và mới Cài đặt thí điểm cục bộ Đây là phương pháp trung hòa giữa cài đặt trực tiếp và cài đặt song song. Cài đặt cục bộ chỉ thực hiện chuyển đổi từ hệ sang hệ thống mới cục bộ một hoặc một vài bộ phận. phương pháp chuyển đổi tại bộ phận thí nghiệm lại có thể là một trong các phương pháp cài đặt quen biết trực tiếp, song song, hay theo giai đoạn. Ưu điểm: việc cài thí điểm cục bộ là hạn chế tối đa chi phí và các sự cố khác vì chỉ giới hạn ảnh hưởng trong một hoặc một vài bộ phận mà thôi, thêm vào đó là bộ phận quản lý hệ thống thông tin có thể ưu tiên tập chung nỗ lực của mình vì sự thành công tại bộ phận chuyển đổi thử nghiệm. khi bộ phận quản lý nhận thấy quá trình chuyển đổi đã thành công ở mỗi bộ phận có thể tiến hành triển khai cho bộ phận còn lại của tổ chức. Chuyển đổi theo giai đoạn Đây là phương pháp chuyển đổi từ hệ thống thông tin cũ sang hệ thống thông tin mới một cách dần dần, bắt đầu một hay một vài bộ phận và sau đó là mở rộng dần việc chuyển đổi sang toàn bộ hệ thống mới. Những phần khác nhau của hệ thống cũ và mới được sử dụng phối hợp với nhau cho tới tận khi toàn bộ hệ thống mới được cài đặt xong. Cũng giống như phương pháp thí điểm cục bộ, chuyển đổi theo giai đoạn cũng nhằm hạn chế thấp nhất rủi ro có thể xảy ra, vì nếu có thì chúng cũng phân tán đều theo thời gian và không gian. Mặt khác phương pháp này cho phép tận dụng một số lợi thế của hệ thống mới trước khi hệ thống được cài đặt hoàn chỉnh. Trong phương pháp này, hệ thống mới và hệ thống cũ cần thay thế phải có khả năng cùng tồn tại chia sẻ dữ liệu nên cần phải viết những chương trình cầu nối giữa các cơ sở dữ liệu và các chương trình của hệ thống cũ và hệ thống mới, quá trình chuyển đổi được lặp lại ở từng giai đoạn và cần một thời gian chuyển đổi tương đối dài. 2.2.6. Ứng dụng tin học vào công tác quản lý Ngày nay, việc áp dụng thông tin vào quản lý ngày càng nhiều và đa dàng, các phương pháp quản lý thủ công đơn điệu một cách máy móc không thể đáp ứng được nhu cầu thực tế, nhiều khi nó có thể dẫn đến những quyết định sai lầm làm ảnh hưởng đến những hoạt động của hệ thống,và hơn nữa có thể đưa doanh nghiệp vào tình trạng phá sản. Cùng với sự pháp triển ồ ạt của các thành phần kinh tế là sự phát triển cao của công nghệ thông tin thì việc áp dụng tin học vào trong công tác quản lý sẽ nâng cao hoạt động của doanh nghiệp mà chi phí cho việc làm mới và lắp đặt hệ thống là không đáng kể so với lợi ích thu được sau này. Có hai phương pháp để ứng dụng tin học trong việc quản lý đó là: Phương pháp tin học hóa toàn bộ Đó là đồng thời thay thế toàn bộ công việc thủ công hoặc bán thủ công của các chức năng quản lý bằng cách thiết lập một cấu trúc hoàn toàn tự động. Ưu điểm: Các chức năng quản lý được tin học hóa một cách triệt để, đảm bảo tính nhất quán trong toàn bộ hệ thống tránh dư thừa thông tin và lãng phí thời gian và sức lao động. Nhược điểm: Phương pháp này thực hiện khó, đầu tư ban đầu lớn, hệ thống không có tính mềm dẻo dễ dàng phát sinh lỗi mà khi thiết kế chưa lường hết được. Phương pháp tin học hóa từng phần Đây là quá trình tin học từng chức năng quản lý theo một trình tự nhất định, theo yêu cầu của từng bộ phận trong tổ chức. Phương pháp này thường được ứng dụng trong các hệ phân tán. Ưu điểm: Đơn giản, khi thực hiện phải đầu tư ban đầu không lớn và việc phát triển, thay đổi phân hệ sẽ không ảnh hưởng đến hoạt động của hệ thống khác nên có tính mềm dẻo cao. Nhược điểm: Tính nhất quán không cao trong toàn bộ hệ thống dễ dẫn tới dư thừa và trùng lặp thông tin. Trong điều kiện hiện tại việc tin học hóa toàn bộ phụ thuộc vào khả năng tài chính của tổ chức do vậy phương pháp tin học hóa từng phần được sử dụng phổ biết hơn cả. 2.3. Giới thiệu về hệ quản trị cơ sở dữ liệu và ngôn ngữ lập trình Để có một sản phẩm đầu ra là một phần mềm chúng ta cần có các công cụ chuyên nghiệp hỗ trợ về thiết kế cơ sở dữ liệu và thiết kế giao diện người – máy. Ngày nay, trong sự phát triển ồ ạt của các công cụ lập trình, việc chọn lựa công cụ nào phù hợp để phát triển phần mềm theo ý tưởng của người lập trình là một công việc không đơn giản. Qua quá trình tìm hiểu một vài công cụ hỗ trợ, tôi đã chọn hệ quản trị cơ sở dữ liệu Microsoft SQLServer 2005 và ngôn ngữ lập trình Microsoft Visual C# 2005. Sau đây là một số thông tin. 2.3.1. Hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2005 2.3.1.1. Microsoft SQL Server 2005 là như thế nào ? SQL Server 2005 là phiên bản sau phiên bản SQL Server 2000 của hệ quản trị cơ sở dữ liệu (CSDL) quan hệ SQL Server hoạt động theo mô hình Client – Server của Microsoft. SQL Server 2005 có nhiều tính năng mới giúp bạn quản lý CSDL quan hệ cùng với chức năng khai thác thông tin vô cùng hiệu quả. SQL Server 2005 nói một các đơn giản là mạnh hơn và tốt hơn SQL Server 2000. Nó đưa ra những chức năng và giá cả phù hợp theo nhu cầu cũng như độ lớn của doanh nghiệp, giúp quản lý dữ liệu kinh doanh nhạy cảm ngày càng hiệu quả hơn. Chất lượng của cỗ máy CSDL trong SQL Server đóng vai trò quyết định đến khả năng tin cậy của SQL Server 2005 trong việc quản lý khối lượng lớn dữ liệu. Tuy nhiên. SQL Server 2005 còn hơn cả một cỗ máy CSDL và bao gồm một bộ các công cụ và thành phần hỗ trợ bạn thiết kế, quản lý, bảo trì,… cũng như các công cụ mới và cải tiến để khai thác thông tin. 2.3.1.2. Các phiên bản của SQL Server 2005 SQL Server 2005 nâng cao hiệu năng, độ tin cậy, khả năng lập trình đơn giản và dễ sử dụng hơn so với SQL Server 2000. SQL Server 2005 tập chung vào khả năng xử lý giao dịch trực tuyến trên diện rộng (OLTP), ứng dụng thương mại điện tử (E-Commerce) và kho dữ liệu (Data Ware Housing). Ngoài ra nhưng cải tiến quan trọng trong SQL Server 2005 là thêm các dịch vụ mới như: dịch vụ báo cáo (Reporing Services), Service Broker và sự thay đổi dáng kể trong cỗ máy CSDL. Bởi vì SQL Server 2005 được sử dụng rộng rãi cho nhiều đối tượng khác nhau trong doanh nghiệp, trong trường học, trong các tổ chức chính phủ nên Microsoft cung cấp nhiều phiên bản khác nhau phù hợp với các yêu cầu về chi phí thời gian thực hiện, hiệu năng của các tổ chức, cá nhân. Sau đây là 5 phiên bản SQL Server 2005: Microsoft SQL Server 2005 Enterprise Edition. Microsoft SQL Server 2005 Standard Edition. Microsoft SQL Server 2005 Workgroup Edition. Microsoft SQL Server 2005 Developer Edition. Microsoft SQL Server 2005 Express Edition. Các phiên bản được sử dụng phổ biến nhất là Enterprise, Standard, Workgroup. Trong khuân khổ đề tài nghiên cứu em sử dụng phiên bản Express. Sau đây là một số thông tin về phiên bản này: Microsoft SQL Server 2005 Express Edition (32 bit): SQL Server 2005 Express là hệ quản trị CSDL miễn phí, dễ sử dụng và quản lý đơn giản. Nó không có nhiều tính năng như các phiên bản khác, chỉ bao gồm: Management Studio, Notification Services, Analysis Service, Entegration Services và Report Builder SQL Server 2005 Express có thể dùng như cơ sở dữ liệu máy khách hoặc cơ sở dữ liệu máy chủ đơn giản. Nó là lựa chọn tốt nếu bạn chỉ cần một phiên bản SQL Server 2005 nhỏ gọn, dùng trên máy chủ cấu hình thấp, những nhà phát triển ứng dụng Web không chuyên hay những người yêu thích xây dựng ứng dụng nhỏ. 2.3.1.3. Những tính năng mới trong SQL Server 2005 Nâng cao bảo mật Mở rộng T-SQL Tăng cường hỗ trợ người phát triển Tăng cường khả năng quản lý Nâng cao độ sẵn sàng của CSDL Nâng cao khả năng mở rộng của CSDL Tăng cường khả năng khai thác thông tin 2.3.2. Ngôn ngữ lập trình Microsof Visual C# 2005 2.3.2.1 Các phiên bản của Visual C# Đầu năm 1998, sau khi hoàn tất phiên bản Version 4 của Internet Information Server (IIS), các đội ngũ lập trình ở Microsoft nhận thấy họ còn rất nhiều sáng kiến để kiện toàn IIS. Họ bắt đầu xây dựng một kiến trúc mới trên nền tảng ý tưởng đó và đặt tên là Next Generation Windows Services (NGWS). Sau khi Visual Basic được trình làng vào cuối 1998, dự án kế tiếp mang tên Visual Studio 7 được xác nhập vào NGWS. Công việc này được xúc tiến một cách hoàn toàn bí mật mãi cho đến hội nghị Professional Developers’ Conference ở Orlado vào tháng 7/2000. Đến tháng 11/2000 thì Microsoft đã phát hành bản Beta 1 của .NET gồm 3 đĩa CD. Tính đến lúc này thì Microsoft đac cho phát hành 3 phiên bản Visual C# nằm trong 3 bộ phiên bản Visual Studio .Net đó là: Microsoft Visual Studio 2003 hay Microsoft Visual Studio 7 Microsoft Visual Studio 2005 hay Microsoft Visual Studio 8 Microsoft Visual Studio 2008 hay Microsoft Visual Studio 9 Để phù hợp hơn với từng đối tượng sử dụng cụ thể mà trong mỗi bản Visual Studio Microsoft cũng phát hành nhiều phiên bản khác nhau. Ví dụ trong Microsoft Visual Studio 2005 có các phiên bản sau: Microsoft Visual Studio 2005 Enterprise Edition. Microsoft Visual Studio 2005 Standard Edition. Microsoft Visual Studio 2005 Workgroup Edition. Microsoft Visual Studio 2005 Developer Edition. Microsoft Visual Studio 2005 Express Edition 2.3.2.2. Một số ưu điểm của C# so với các ngôn ngữ lập trình khác Nhiều người tin rằng không cần thiết có một ngôn ngữ lập trình mới. Java, C++, Perl, Microsoft Visual Basic, và những ngôn ngữ khác được nghĩ rằng đã cung cấp tất cả những chức năng cần thiết. Ngôn ngữ C# là một ngôn ngữ được dẫn xuất từ C và C++, nhưng nó được tạo từ nền tảng phát triển hơn. Microsoft bắt đầu với công việc trong C và C++ và t._.ep = _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
Tài liệu liên quan