Chuyên đề Tin học hoá công tác quản lý tiền gửi tiết kiệm cho các Ngân hàng thương mại quốc doanh và hệ thống Ngân hàng Việt Nam

“ Tin học hoá công tác quản lý tiền gửi tiết kiệm cho các Ngân hàng thương mại quốc doanh và hệ thống Ngân hàng Việt nam ” là một vấn đề đang được quan tâm và đang nằm trong dự án cải tạo, nâng cấp và phát triển của ngành Ngân hàng. Chương trình quản lý tiền gửi tiết kiệm không chỉ áp dụng được với các Ngân hàng thương mại quốc doanh mà còn có thể áp dụng được cho hệ thống Ngân hàng nói chung. Hiện tại đề tài đã đi sâu vào phân tích, thiết kế và xây dựng được hệ thống thông tin quản lý tiết kiệm từ khái quát đến chi tiết, những phần chính đã được kế thừa và phát triển của hệ thống cũ, bao gồm: ã Quản lý tiền gửi gửi khách hàng. ã Quản lý khách hàng. ã Xử lý các yêu cầu gửi, rút tiền hàng ngày của khách hàng. ã Quản lý các loại kỳ hạn gửi, mức lãi suất, đăng ký rút trước hạn, đăng ký các loại tiền sử dụng ã Tính lãi cho khách hàng, quản lý tổng số tiền gửi, rút của khách hàng. ã Theo dõi và tổng hợp được tình hình hoạt động gửi, rút tiền hàng ngày, định kỳ tháng, năm để lập báo cáo cần thiết cho bộ phận lãnh đạo. Hệ thống mới đã hoàn thiện thêm được những nội dung sau: ã Cho phép huy động được nhiều loại tiền gửi khác ngoài tiền gửi Việt nam ã Hoàn thiện chức năng tiền gửi rút lãi trước ã Hoàn thiện chức năng quản lý kỳ hạn gửi. ã Bổ sung chức năng rút trước hạn với loại sổ có kỳ hạn. ã Tận dụng được tối đa khả năng về đồ hoạ, giao diện và in ấn trong môi trường Windows(bằng cơ sở dữ liệu Microsoft Access 97 &ngôn ngữ lập trình Visual Basic 6.0) nhằm cho chương trình có giao diện đẹp hơn trước, các bản in được việt hoá 100% và có thể sử dụng nhiều loại máy in khác nhau. ã Đề tài đã tận dụng được những ưu điểm của việc sử dụng hệ thống mạng bằng việc xây dựng hệ chương trình thống nhất chạy trên mạng, có các dữ liệu dùng chung cùng được chia sẻ có các dữ liệu riêng của mỗi người dùng. Tuy nhiên với thời gian hạn hẹp, lại chưa có nhiều kinh nghiệm cho nên dù có cố nhiều cố nhưng chương trình không tránh những thiếu sót. Vì vậy tôi rất mong nhận được những ý kiến đóng góp để chương trình được hoàn thiện hơn nữa. Hướng phát triển của chương trình trong tương lai là tiếp tục hoàn thiện những chức năng đã có; khắc phục những sai sót phát sinh; xây dựng thêm những modul quản lý phân cấp hệ thống; kết hợp với các chương trình quản lý vốn để tạo thành phân hệ quản lý vốn tại các Ngân hàng này.

doc126 trang | Chia sẻ: oanh_nt | Lượt xem: 1248 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Chuyên đề Tin học hoá công tác quản lý tiền gửi tiết kiệm cho các Ngân hàng thương mại quốc doanh và hệ thống Ngân hàng Việt Nam, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
sang bảng thuộc thư mục . Bản ghi được sửa đổi, cập nhật vào đầu ngày khi máy tính thực hiện tính lãi đầu ngày hoặc tiến hành nhập lãi vào gốc khi đến hạn. bản ghi cũng được sửa đổi, cập nhật khi có yêu cầu gửi, rút tiền từ phía khách hàng. Trường lai được dùng trong bảng nhằm lưu lãi cộng dồn của sổ tiết kiệm cho loại sổ không kỳ hạn. nếu là sổ có kỳ hạn, lãi sẽ được tính và lưu vào trường này khi khách hàng gửi tiền, trừ trường hợp với sổ rút lãi trước, khách hàng sẽ được thông báo số lãi ngay khi gửi tiền và lãi được đặt bằng 0. Các khoá ngoại lai LOAI_GUI, LOAI_TIEN được dùng làm tham chiếu đến bảng chứa thông tin về lãi suất, loại tiền, loại gửi nhằm có thông tin đầy đủ hơn, quan trọng nhất là thông tin về lãi suất để máy tính tính lãi cho khách hàng. Bảng LOAI_TIEN(loại tiền): Cấu trúc: Tên trường Kiểu trường Độ rộng Mô tả *Ma_TIEN Text 3 Mã loại tiền gửi. Mo_ta Text 25 Mô tả loại tiền gửi. Ti_gia Numeric Single Tỉ giá tiền so với tiền Việt nam Bảng này chứa thông tin về những loại tiền mà các Ngân hàng được sử dụng. Bảng này hoạt động chỉ cho phép Admin được phép cập nhật, sửa chữa còn các bàn chỉ được tra cứu, sử dụng. Theo quy định, loại tiền gửi được ký hiệu bằng 3 ký tự. để thuận tiện cho việc tra cứu và so sánh, ta quy định “VND” là ký hiệu của tiền gửi bằng đồng Việt nam. Trường TI_GIA được quy định là số tiền Việt nam được dùng để mua một đơn vị ngoại tể thời điểm hiện tại.. do vậy tỉ giá luôn bằng 1. Tỉ giá được cập nhật thông qua hệ thống mạng nếu các Ngân hàng sử dụng nối mạng nếu không, thông qua hệ thống báo chí hoặc dịch vụ 1080. Chỉ khi có quyết định của lãnh đạo về việc tăng thêm loại tiền gửi, phòng kế toán mới được bổ sung loại tiền gửi mới. Hàng ngày, phòng kế toán chỉ được phép cập nhật những biến động về tỉ giá trên thị trường. Bảng KY_HAN(kỳ hạn): Tên trường Kiểu trường Độ rộng Mô tả *Loai_kh Text 2 Loại gửi. Mo_ta Text 45 Chú giải về loại kỳ hạn. Rut_truoc Boolean 1 Rút lãi trước hay sau. So_thang Number Byte Số tháng của loại gửi. Đây là bảng được cập nhật, thay đổi bởi admin, còn bàn sử dụng chỉ được phép sử dụng. Khoá chính của tệp này là LOAI_KH. Mã hiệu kỳ hạn được quy định thống nhất là hai ký tự số, “00” là quy ước cho loại sổ không kỳ hạn. Với loại sổ không kỳ hạn, trường RLTRUOC có giá trị mặc định là FALSE trường SOTHANG có giá trị bằng 0 vì trưòng này không cần sử dụng cho loại không kỳ hạn. Mỗi bản ghi của tệp này chứa một loại kỳ hạn, phòng kế toán chỉ có thao tác bổ sung loại kỳ hạn mới khi có quyết định từ cấp lãnh đạo. Kỳ hạn vẫn được để ngay cả khi nó không còn được áp dụng nữa vì nó vẫn còn sử dụng cho các sổ tiết kệm cũ hoặc sử dụng tra cứu những thông tin trong quá khứ. Khi bảng được khởi tạo(cài đặt hệ thống), loại không kỳ hạn được bổ sung vào ngay và được coi là một bản ghi ngầm định. Chỉ có loại xử lý duy nhất cho tệp là bổ sung một bản ghi khi có thêm loại kỳ hạn mới. Bảng LAI_SUAT(lãi suất): Tên trường Kiểu trường Độ rộng Mô tả Ma_tien Text 3 Loại tiền gửi. Ngay_ad Date 8 Ngày áp dụng mức lãi suất. Ngay_kt Date 8 Ngày kết thúc mức lãi suất. Loai_kh Text 2 Loại gửi. Lai_suat Number Single Lãi suất tính theo tháng(đơn vị %). Bảng này chứa thông tin quy định về lãi suất, bảng này chỉ có phòng kế toán được phép thêm, bớt, cập nhật và được chia sẻ cho các bàn gửi được sử dụng. Các mức lãi suất là khác nhau ứng với mỗi loại tiền gửi, mỗi loại kỳ hạn tại một thời điểm nhất định. Sự thay đổi lãi suất cần được phản ánh toàn bộ trong hệ thống do yêu cầu của nghiệp vụ. Nó được sử dụng khi khách hàng yêu cầu rút trước hạn. khi đó sổ tiết kiệm sẽ được chuyển sang loại gửi không kỳ hạn. căn cứ vào lãi suất hiện hành của mỗi ngày tính lãi. Chính vì yêu cầu này mà mỗi khi thực hiện thay đổi về lãi suất, ngày bắt đầu áp dụng cũng phải được ghi vào trong bảng LAI_SUAT. Để xác định mức lãi suất, cần có đủ 3 yếu tố: Ngày áp dụng, ngày kết thúc, loại tiền gửi, loại kỳ hạn. Khi có quyết định của lãnh đạo về việc thay đổi mức lãi suất, ngày áp dụng mới cùng với mức lãi suất cho các loại tiền, loại kỳ hạn sẽ được bổ sung và bảng LAI_SUAT. Lãi suất cũng được cập nhật sau khi có thêm loại tiền gửi hoặc loại kỳ hạn mới. Ta phải thiết lập mức lãi suất cho tất cả loại tiền gửi(kỳ hạn) ứng với loại kỳ hạn(tiền gửi) mới này. Bảng NGUOI_SD(người sử dụng): Tên trường Kiểu trường Độ rộng Mô tả TEN_LOGIN Text 8 Tên truy cập của người sử dụng. Mo_ta Text 45 Tên bàn huy động/Phòng kế toán. Dia_chi Text 45 Địa chỉ của bàn huy động/Phòng kế toán. Dien_thoai Text 12 Điện thoại để liên lạc. Level Text 1 Thẩm quyền truy cập. *Password Text 8 Mật khẩu truy cập. Đây là bảng quản lý những người sử dụng trong hệ thống(người sử dụng tại phòng kế toán và bàn gửi). Trường TEN_LOGIN chứa tên truy cập của người sử dụng, tên truy cập là một chuỗi tối đa 8 ký tự, không có dấu cách. Nêu người sử dụng truy cập đúng mật khẩu của mình, tên login được lấy làm căn cứ để truy cập thư mục chứa dữ liệu(tên truy cậo cùng với tên thư mục). Mật khẩu được lưu trong bảng NGUOI_SD. Để đảm bảo an toàn, mật khẩu được mã trước khi lưu trữ để tránh bị phát hiện. Các thông tin về người sử dụng, địa chỉ, điện thoại là phần dữ liệu chung, bàn huy động và phòng kế toán có thể cùng tra cứu(trừ mật khẩu) để thuận tiện cho việc liên lạc thông tin với nhau Trong hệ thống huy động tiết kiệm có 2 cấp người sử dụng: Cấp 1 là người sử dụng tại phòng kế toán, nhiệm vụ là quản lý các thông tin về lãi suất, kỳ hạn; quản lý người sử dụng (cài đặt và loại bỏ người sử dụng.); tổng hợp các báo cáo từ các bàn gửi. Người dùng cấp 2 là người dùng tại các bàn gửi, làm nhiệm vụ quản lý sổ tiết kiệm, tính lãi, quản lý giao dịch/rút tiền với khách hàng. Lập báo cáo, sao kê theo quy định. Để thuận tiện cho việc quản lý và đơn giản mã hoá lệnh, người sử dụng cấp 1 có tên truy cập là ADMIN, đượccài đặt khi tiến hành cài đặt hệ thống. Với thẩm quyền này, người sử dụng sẽ tiến hành cài đặt các bàn huy động vốn (người dùng cấp 2) trước khi đưa hệ thống vào làm việc. hệ thống không có chức năng đổi tên truy cập, địa chỉ, điện thoại song người quản trị hệ thống có thể thay đổi bàng cách cùng đổi tên thư mục chứa dữ liệu của người dùngvới việc thay đổi thông tin trong bảng này. Bảng được bổ sung bản ghi mới khi cài đặt thêm một bàn sử dụng, bản ghi được loại bỏ khi tiến hành loại bỏ người sử dụng trong hệ thống, (ngoại trừ ADMIN ). Thông tin trong tệp chỉ được sửa chữa khi người sử dụng thay đổi mật khẩu của mình. Bảng NGUOI_DA_SD(người sử dụng): Tên trường Kiểu trường Độ rộng Mô tả Password Text 8 Mật khẩu truy cập. Gio Time Long time Giờ mà mật khẩu(Password) đã truy cập. Ngay Date Short date Ngày mà mật khẩu(Password) đã truy cập. Đây là bảng theo giõi những người sử dụng trong hệ thống (người sử dụng tại phòng kế toán và tại bàn huy động vốn) . GIO, NGAY có tác dụng theo giõi giờ và ngày mà người sử dụng đã truy cập hệ thống. Ta cần tạo một số bảng và query để lập báo cáo: Bảng PSNGAY(phát sinh ngày): Tên trường Kiểu trường Độ rộng Mô tả SO_SO Text 9 Số hiệu sổ tiết kệm. LOAI_PS Number Byte Loại phát sinh. LOAI_TIEN Text 3 Loại tiền gửi. NGAY_PS Date 8 Ngày xảy ra phát sinh. SO_TIEN Number Double Tổng số tiền phát sinh. Bảng này chứa các bản ghi theo dõi mỗi nghiệp vụ phát sinh trong ngày của bàn huy động, do vậy nó là bảng dữ liệu riêng được đặt trong thư mục riêng của bàn huy động. Các nghiệp vụ phát sinh sẽ được phản ánh vào tệp phát sinh ngày. theo quy định, có 4 loại phát sinh: 1 = “Gửi gốc”: Gửilần đầu, gửi thêm. Số dư gốc của sổ tiết kệm sẽ tăng lên. 2 = “Rút gốc”: Rút gốc toàn bộ hay một phần. Số dư gốc sẽ giảm đi. = “Rút lãi”: Rút toàn bộ hay toàn bộ số lãi hiện có. = “Lãi nhập gốc”: Chuyển toàn bộ Lãi vào gốc, chỉ thực hiện khi đến hạn (vào đầu năm cho loại sổ không kỳ hạn hoặc với sổ có kỳ hạn mà đến hạn khách hàng không đến rút). Nếu khách hàng thực hiện tất toán, sẽ có 2 phát sinh “Rút gốc” và “Rút lãi” cho toàn bộ số dư gốc và lãi được ghi nhận vào tệp phát sinh ngày, trước khi sổ tiết kệm được tất toán. Trường NGAY_PS có tác dụng ghi ngày phát sinh để lập báo cáo. Query KY_HAN QUERY Tên trường Kiểu trường Độ rộng Mô tả Loai_kh Text 2 Loại gửi. Mo_ta Text 45 Chú giải về loại kỳ hạn. So_thang Number Byte Số tháng của loại gửi. Rut_truoc Boolean 1 Rút lãi trước hay sau. Ngay_ad Date 8 Ngày áp dụng mức lãi suất. Lai_suat Number Single Lãi suất tính theo tháng(đơn vị %). Ma_TIEN Text 3 Mã loại tiền gửi. Mo_ta Text 25 Mô tả loại tiền gửi. 3.6. Bước 7. Mô tả mối quan hệ bằng Microsoft Access 97 như sau: III. Xây dựng sơ đồ khối thuật toán tổng quát. BĐ Bắt đầu thuật toán KT Kết thúc thuật toán Định hướng trình tự xử lý Mô tả xử lý Mô tả xử lý lấy từ thuật toán khác Khối điều kiện rẽ nhánh Một số quy ước: 1. Thuật toán đăng nhập mật khẩu BĐ Nhập mật khẩu Kiểm tra Truy nhập bảng NGUOI_SD Đ Mở chương trình S I=I+1 I<=3 S Đ I=1 Thoát khỏi chương trình KT 2. Thuật toán đổi mật khẩu BĐ Nhập mật khẩu mới Truy nhập vào bảng NGUOI_SD Mkhau=Mkhaumoi KT Khẳng định Đ S Kiểm tra ? Vào mật khẩu cũ Đ S 3. Thuật toán xử lý đầu ngày tại bàn gửi. BĐ Truy nhập bảng SO_TKIEM EOF()? KT Đ Sổ có kỳ hạn ? S Quá hạn ? Nhập lãi vào gốc và chuyển sang kỳ hạn mới Cập nhật vào bảng PS_NGAY và bảng SO_TKIEM Thuật toán 3.1 Tính lãi đầu ngày Đ S Đ S I = 1 (I: Số thứ tự bản ghi thứ I) I=I+1 I=I+1 3.1.Thuật toán 3.1. Tính lãi đầu ngày từ ngày số dư đến ngày làm việc cho sổ tiết kiệm không kỳ hạn: BĐ Ngay = Ngaysd +1 Ngay <= Ngaylv KT Đ S Tính lãi ngày, cộng dồn vào trường lãi. Gốc = Gốc + Lãi Lãi = 0 Đ Ngay = 01/01/* Cập nhật vào bảng PS_NGAY & SO_TKIEM Ngay = Ngay +1 S 4. Thuật toán nhập chứng từ gửi tiền. BĐ Nhập số sổ tiết kiệm Số sổ rỗng ? KT S C Hiện thông tin trong sổ tiết kiệm S Có kỳ hạn ? Nhập số tiền gửi thêm S Tồn tại số sổ ? Gốc = gốc + số tiền gửi thêm Đ Cập nhật bảng PS_NGAY &SO_TKIEM Đ Tiếp? Đ K Thuật toán 4.1 Nhập các thông tin cần thiết cho sổ tiết kiệm . 4.1. Thuật toán 4.1 Nhập các thông tin cần thiết cho sổ tiết kiệm . BĐ Nhập họ tên, địa chỉ, số chứng minh, loại tiền gửi, loại kỳ hạn, ngày gửi, số tiền gửi. Sổ có kỳ hạn ? KT Đ S Lãi = Gốc * Số tháng * Lãi suất tháng Lãi = 0 Đ Rút lãi trước ? S 5. Thuật toán nhập chứng từ rút tiền: BĐ Nhập số sổ tiết kiệm Số sổ rỗng ? KT S Đ Đ Có kỳ hạn ? S Tồn tại số sổ ? Đ S Đến hạn ? Tất toán sổ tiết kiệm Thuật toán 5.1. Xử lý rút trước hạn. Thuật toán 5.2. Rút tiền gửi không kỳ hạn. Đ Hỏi rút trước hạn Đ S S Tiếp? Đ S Đ BĐ Tính và yêu cầu khách hàng nộp lãi đã rút Sổ rút lãi trước và Lãi = 0 KT Nộp tiền đã rút? Chuyển sang loại sổ không kỳ hạn. Tính lại lãi cho loại sổ không kỳ hạn theo thuật toán 3.1 (từ ngày gửi đến ngày hiện hành) Thực hiện rút tiền gửi cho loại sổ không kỳ hạn theo thuật toán 5.2 S Đ S 5.1. Thuật toán 5.1. Xử lý rút trước hạn. 5.2. Thuật toán 5.2. Rút tiền gửi không kỳ hạn BĐ Chọn rút gốc/rút lãi/tất toán. Chọn loại tiền rút . Chọn số tiền rút (t). Rút VND KT Đ S Tiền rút trên sổ (r) = (t) Rút lãi S Tiền rút trên sổ (r) = (t)/tỉ giá hối đoái Rút gốc Tất toán S Rút lãi Rút gốc Tất toán Đ Đ Đ Cập nhật bảng PSNGAY & SO_TKIEM IV. thiết kế chương trình. 1. Yêu cầu với hệ thống mới. Về mặt hệ thống: - Tập trung quản lý thống nhất cơ sở dữ liệu và chương trình, thực hiện phân chia quyền hạn hợp lý nhằm làm cho hệ thống không bị rối loạn. - Mỗi người sử dụng đều có một tên (username) và mật khẩu (Password) để tránh truy nhập trái phép. Mật khẩu cần được mã hoá. - Khả năng cập nhật các thay đổi từ môi trường ngoài (Tỉ giá hối đoái) và môi trường bên trong (các quy định mới về lãi suất, kỳ hạn,…) linh hoạt hơn. - Thường xuyên có những thông báo cần thiết trong quá trình làm việc để người sử dụng biết mình đang thao tác gì, trạng thái của hệ thống ra sao. Chương trình phải có những tính năng tra cứu cần thiết để cung cấp thêm các thông tin cho người sử dụng (VD: Thông tin về những người sử dụng trong hệ thống, thông tin về tỉ giá, lãi suất…). - Ngoài các báo cáo, sao kê theo quy định, chương trình quản lý tiền gửi tiết kệm cần phải có những tiện ích cho phép người sử dụng tra cứu các tập thông tin cần thiết (Tỉ giá, lãi suất, thông tin người sử dụng). Các thông tin này giúp người sử dụng có thể đối chiếu, so sánh với các chứng từ khi cần thiếthoặc giải quyết những thắc mắc, khiếu nại từ phía khách hàng. - Giao diện đẹp, thuận tiện cho mọi thao tác, gây thiện cảm với người sử dụng. - Hệ thống phải được thiết kế mềm dẻo, thông minh, thuận tiện cho việc cải tiến, nâng cấp về sau. Về mặt nhập liệu: - Tự động điền những tham số cần thiết. - Kiểm tra chặt chẽ các bước nhập nhằm tránh sai sót. - Giảm thiểu những thao tác không đáng có (Tự động chuyển sang phần khác khi nhập xong một phần). Về mặt truy cập thông tin: Đảm bảo truy cập thông tin nhanh chóng, an toàn. Về mặt in ấn: - Tận dụng tối đa khả năng in ấn trong Windows với nhiều loại máy in, font chữ. Có khả năng xem trước khi in (Preview). 2. Tổ chức chương trình quản lý tiền gửi tiết kiệm. Căn cứ vào yêu cầu của hệ thống về nguyên tắc tổ chức, phân quyền và phạm vi sử dụng, hệ chương trình quản lý tiền gửi tiết kiệm được tổ chức theo nguyên tắc sau: Chương trình và dữ liệu được tập trung, thống nhất tại máy tính phòng kế toán, các bàn gửi sử dụng hệ thống mạng để khai thác dữ liệu. Mỗi người sử dụng có một mức (level) truy cập tài nguyên khác nhau được khai báo từ khi cài đặt. Mỗi người sử dụng có một thư mục riêng chứa các dữ liệu riêng của mình, khi truy cập, căn cứ vào tên truy cập (loginname) và đúng mật khẩu (password), người sử dụng được truy cập dữ liệu trong thư mục của mình. Các dữ liệu dùng chung như các thông số về lãi suất, kỳ hạn, loại tiền gửi,… được lưu trong thư mục riêng của phòng kế toán, các bàn gửi chỉ được tra cứu, sử dụng. Thư mục chứa chương trình, các mẫu báo cáo, sao kê có thư mục riêng để mọi người trong hệ thống cùng được sử dụng. Phòng kế toán được quyền khai thác, tổng hợp các dữ liệu của các bàn gửi để lập ra các báo cáo cần thiết. Cấu trúc của hệ chương trình như sau: Thư mục chứa chương trình có các thư mục con và các tệp sau: + : Thư mục chứa các biểu mẫu dùng chung. + : Thư mục chứa các modul chương trình. + : Thư mục chứa các báo cáo dùng chung. + : Thư mục chứa một số thư mục con bao gồm ADMIN, thư mục chứa dữ liệu bàn gửi dùng để chứa các dữ liệu đã bị xoá. + Tệp qltk.exe đã mã hoá ra ngôn ngữ máy dùng để chạy chương trình. Như vậy, khi sử dụng hệ chương trình, người sử dụng sẽ truy cập vào mạng, ánh xạ(map) thư mục QLTK từ Server làm ổ đĩa mạng rồi sau đó khai báo tên(username) khi login vào mạng và khi bắt đầu chạy chương trình thì người dùng đã có tên sẵn, do đó chỉ phải nhập password để chạy chương trình. 3. Thiết kế các giao diện vào/ra 3.1. Hệ thống thực đơn. 3.1.1. Thực đơn chính. Thực đơn này bao gồm những phần sau: Hệ thống, Giao dịch, Thông tin chung, Thông tin về bàn gửi, Thông tin chung, In báo cáo, sao kê. 3.1.2. Thực đơn hệ thống. Thực đơn này chứa các mục chọn sau đây: Vào hệ thống: Chức năng này cho phép người sử dụng có thể vào lại hệ thống, vì vậy người sử dụng có thể vào hệ thống với các Username và Password khác nhau. Sao lưu dữ liệu, phục hồi dữ liệu: Chức năng này cho phép Admin sao lưu và phục hồi dữ liệu cho hệ thống. Người sử dụng không có quyền sử dụng(thực đơn này sẽ bị mờ với người sử dụng). Thay đổi mật khẩu người sử dụng: Cho phép người sử dụng hiện thời thay đổi mật khẩu. Cài đặt thêm bàn gửi tiết kiệm, Thay đổi quyền người sử dụng, Nhập thêm người sử dụng, Nhập thêm loại gửi, Thay đổi lãi suất, nhập thêm tiền sử dụng, Thay đổi tỉ giá ngoại tệ: Có tác dụng cho phép Admin thay đổi các thông số như trên. Người sử dụng không có quyền sử dụng(thực đơn này sẽ bị mờ với người sử dụng). Thoát khỏi hệ thống: Cho phép người sử dụng thoát khỏi hệ thống. 3.1.3. Thực đơn giao dịch. Thực đơn này chứa các mục chọn sau: Công việc đầu ngày : Vào đầu ngày mới người sử dụng phải chọn mục này để tạo hồ sơ ngày mới và tính lãi cho các sổ tiết kiệm không kỳ hạn và tính lãi cho các sổ tiết kiệm đã đến hạn. Gửi có kỳ hạn, Gửi không kỳ hạn ( trong mục này có thêm thực đơn gửi mới và gửi thêm), Rút tiết kiệm( mục này có thêm thực đơn rút không kỳ hạn và rút có kỳ hạn : Vào trong ngày khi khách hàng đến giao dịch người sử dụng chọn mục này để có thể gửi và rút cho khách hàng. Công việc cuối ngày (mục này có thực đơn chuyển sổ đến hạn ): Vào cuối ngày người sử dụng phải chọn mục này để chuyển gốc vào lãi cho những sổ đến hạn mà khách hàng không đến rút và cho các sổ không kỳ hạn nếu là ngày 1/1. 3.1.4. Thực đơn thông tin chung. Thực đơn này chứa các mục chọn sau: Giới thiệu chương trình, Tình trạng hệ thống : Có tác dụng giới thiệu chương trình và tình trạng hệ thống đang sử dụng. Các thực đơn còn lại có tác dụng cho phép người dùng truy cập các thông tin cần thiết để họ có thể truy cập thêm thông tin cần thiết những thông tin này chỉ có phòng kế toán mới được biết, còn với những người sử dụng thuộc bàn gửi, mục chọn này bị mờ đi. 3.1.5. Thực đơn thông tin về bàn gửi. Thực đơn này cho phép bàn gửi có thể xem được thông tin cụ thể về tình trạng bàn gửi hiện thời. 3.1.6. Thực đơn in báo cáo, sao kê. Thực đơn này chứa các chức năng tạo báo cáo, sao kê của cả bàn huy động vốn và phòng kế toán. Chức năng lập báo cáo tình hình huy động vốn được dùng chu cho cả bàn gửi lẫn phòng kế toán vì chúng có cùng mẫu, chỉ khác nguồn dữliệu và cách tổng hợp. Bốn loại sao kê chi tiết chỉ có tác dụng cho bàn gửi còn phòng kế toán không có tác dụng, ba loại sao kê danh sách chỉ có tác dụng phòng kế toán còn không có tác dụng với bàn gửi. 4. Một số form chính. 4.1. Form thông tin sổ tiết kiệm. 4.2. Form gửi tiết kiệm. 4.3. Form rút tiết kiệm. 5. Mẫu báo cáo đầu ra. 5.1. Báo cáo tình hình huy động vốn. Đây là mẫu báo cáo cơ sở để lập các báo cáo đầu ra về tình hình huy động vốn ngày, tình hình huy động tháng, tình hình huy động vốn năm được lập dựa trên các mẫu báo cáo sẵn có của Ngân hàng. Đây mới chỉ là mẫu cơ bản, còn một số mẫu khác: Sao kê phát sinh rút gốc, Sao kê chi tiết sổ tiền gửi, Sao kê danh sách khách hàng… Sau đây là sao kê phát sinh lãi nhập gốc: 5.1. Sao kê phát sinh lãi nhập gốc. V. Giải pháp kỹ thuật cho hệ thống. 1. Giải pháp về phần mềm. Chương trình cần được cài đặt trên mạng máy tính để quản lý tập trung thống nhất cơ sở dữ liệu cho các bàn gửi cũng như phòng kế toán. Yêu cầu về phần mềm hệ điều hành: Hệ điều hành Microsoft Windows 9X cho các máy khách. Hệ điều hành mạng Windows NT 4.0 cho hệ thống máy chủ. ã Công cụ ngôn ngữ thiết kế hệ thống: + Công cụ thiết kế: Visual Basic 6.0 + Công cụ lập trình: Visual Basic 6.0 + Cơ sở dữ liệu: Microsoft Access 97 Hệ quản trị cơ sở dữ liệu: + Microsoft Access 97 cho các máy khách. + Microsoft Access 97 cho các máy chủ 2. Giải pháp về phần cứng ã Môi trường mạng LAN, hệ điều hành mạng Windows NT Server 4.0 Cấu trúc Client - server: + Môi trường máy chủ: Cấu hình tối thiểu: 1. Cấu hình tối thiểu Pentium Pro 233 MHz 2. Bộ nhớ Ram 32 MB, ổ cứng 3.2 GB HDD Cấu hình tiêu chuẩn: 1. Cấu hình tối thiểu Pentium Pro - 450 2. Bộ nhớ Ram 64 MB, ổ cứng 4.3 GB HDD 3. Máy chủ chỉ nên dùng cho hệ thống, việc cài các ứng dụng khác có thể làm ảnh hưởng đến hệ thống. 4. Có ổ bằng từ để Backup + Môi trường máy trạm: Cấu hình tối thiểu: 2. Pentium 133 MHZ 3. 16 MB RAM 4. 1.7 GB HDD (trên 100 MB ổ cứng còn trống trước khi cài ứng dụng) 5. 1 card mạng Cấu hình tiêu chuẩn: 1. Hệ điều hành Windows 95 2. Pentium 233 MHZ 3. 32 MB RAM 4. 3.2 GB HDD (trên 250 MB ổ cứng còn trống trước khi cài ứng dụng) 5. 1 card mạng Kết luận “ Tin học hoá công tác quản lý tiền gửi tiết kiệm cho các Ngân hàng thương mại quốc doanh và hệ thống Ngân hàng Việt nam ” là một vấn đề đang được quan tâm và đang nằm trong dự án cải tạo, nâng cấp và phát triển của ngành Ngân hàng. Chương trình quản lý tiền gửi tiết kiệm không chỉ áp dụng được với các Ngân hàng thương mại quốc doanh mà còn có thể áp dụng được cho hệ thống Ngân hàng nói chung. Hiện tại đề tài đã đi sâu vào phân tích, thiết kế và xây dựng được hệ thống thông tin quản lý tiết kiệm từ khái quát đến chi tiết, những phần chính đã được kế thừa và phát triển của hệ thống cũ, bao gồm: Quản lý tiền gửi gửi khách hàng. Quản lý khách hàng. Xử lý các yêu cầu gửi, rút tiền hàng ngày của khách hàng. Quản lý các loại kỳ hạn gửi, mức lãi suất, đăng ký rút trước hạn, đăng ký các loại tiền sử dụng… Tính lãi cho khách hàng, quản lý tổng số tiền gửi, rút của khách hàng. Theo dõi và tổng hợp được tình hình hoạt động gửi, rút tiền hàng ngày, định kỳ tháng, năm để lập báo cáo cần thiết cho bộ phận lãnh đạo. Hệ thống mới đã hoàn thiện thêm được những nội dung sau: Cho phép huy động được nhiều loại tiền gửi khác ngoài tiền gửi Việt nam Hoàn thiện chức năng tiền gửi rút lãi trước Hoàn thiện chức năng quản lý kỳ hạn gửi. Bổ sung chức năng rút trước hạn với loại sổ có kỳ hạn. Tận dụng được tối đa khả năng về đồ hoạ, giao diện và in ấn trong môi trường Windows(bằng cơ sở dữ liệu Microsoft Access 97 &ngôn ngữ lập trình Visual Basic 6.0) nhằm cho chương trình có giao diện đẹp hơn trước, các bản in được việt hoá 100% và có thể sử dụng nhiều loại máy in khác nhau. Đề tài đã tận dụng được những ưu điểm của việc sử dụng hệ thống mạng bằng việc xây dựng hệ chương trình thống nhất chạy trên mạng, có các dữ liệu dùng chung cùng được chia sẻ có các dữ liệu riêng của mỗi người dùng. Tuy nhiên với thời gian hạn hẹp, lại chưa có nhiều kinh nghiệm cho nên dù có cố nhiều cố nhưng chương trình không tránh những thiếu sót. Vì vậy tôi rất mong nhận được những ý kiến đóng góp để chương trình được hoàn thiện hơn nữa. Hướng phát triển của chương trình trong tương lai là tiếp tục hoàn thiện những chức năng đã có; khắc phục những sai sót phát sinh; xây dựng thêm những modul quản lý phân cấp hệ thống; kết hợp với các chương trình quản lý vốn để tạo thành phân hệ quản lý vốn tại các Ngân hàng này. Tài liệu tham khảo. Các văn bản pháp quy về hệ thống Ngân hàng thương mại – Lưu hành nội bộ. Phân tích và thiết kế hệ thống – TG: Trương Văn Tú - NXB Khoa học & kỹ thuật – 1994. Cấu trúc dữ liệu & giải thuật – TG: PTS. Hàn Viết Thuận - NXB Thống kê - 1999. Cơ sở dữ liệu – TG: Đỗ Trung Tuấn – NXB Giáo dục – 1998. Microsoft Access 97 & Visual Basic for Applications từ A đến Z – TG: Trần ThanhPhong - NXB Thống kê - 1998. Kỹ năng lập trình Visual Basic 6.0 – TG: PTS. Nguyễn Tiến Dũng - NXB Thống kê - 1999. Mạng căn bản – TG: Lê Phụng Long & Nguyễn Lam Trung - NXB Thống kê - 1998. Phụ lục chương trình Mã lệnh của Module chương trình Global Loctext As String Global SNSD As String Global SMK As String Global db As Database Global db1 As Database Global rs As Recordset Global rs1 As Recordset Global nut As Integer Global ma As String Global ten As String Public Sub Main() Loctext = App.Path If Right(Loctext, 1) "\" Then Loctext = Loctext & "\" MDIForm1.Show End Sub ************************************************************************** Mã lệnh của MDIFORM. Private Sub MDIForm_Load() MDIForm1.Height = 6800 MDIForm1.Left = 0 MDIForm1.Top = 0 MDIForm1.Width = 9620 End Sub Private Sub mnuban_Click() frmban_sd.Show End Sub Private Sub mnuguithem_Click() Form1.Show End Sub Private Sub MDIForm_Unload(Cancel As Integer) Unload frmgioithieu End Sub Private Sub mnugui_them_Click() frmso_tkiem.Show End Sub Private Sub mnuguikyhan_moi_Click() frmguimoi_cokhan.Show End Sub Private Sub mnuguikyhan_them_Click() frmso_tkiem.Show End Sub Private Sub mnubc_ngay_Click() DataReport1.Show End Sub Private Sub mnugiaodich_guikyhan_Click() frmguimoi_cokhan.Show End Sub Private Sub mnuhethong_laisuat_Click() Form3.Show End Sub Private Sub Mnuhethong_loaigui_Click() frmds_kyhan.Show End Sub Private Sub mnuhethong_vao_Click() frmmatkhau.Show End Sub Private Sub mnuthongtinb_so_Click() frmso_tkiem.Show End Sub Private Sub mnuthongtinc_gioithieu_Click() frmgioithieu.Timer1.Interval = 7000 frmgioithieu.Show End Sub Private Sub Timer1_Timer() frmmatkhau.Show End Sub ************************************************************************** Mã lệnh Form gửi tiết kiệm. Option Explicit Private Sub Command1_Click(Index As Integer) If Index = 2 Then Label2(14).Visible = True text3(13).Visible = True text3(13).SetFocus End If End Sub Private Sub Form_Load() Dim i As Byte Dim data As Database Dim rec As Recordset Set data = OpenDatabase(loctext + "qltk.mdb", dbOpenDynaset) Set rec = data.OpenRecordset("so_tkiem") For i = 1 To 4 Command1(i).Enabled = False Next rec.MoveFirst Do While Not rec.EOF List1.AddItem rec.Fields("so_so") rec.MoveNext Loop rec.MoveFirst text1.Text = "" End Sub Private Sub List1_Click() Dim i As Byte Dim so As Single Dim data As Database Dim rec As Recordset Dim rec1 As Recordset Dim rec2 As Recordset Dim rec3 As Recordset Set data = OpenDatabase(Loctext + "qltk.mdb", dbOpenDynaset) Set rec = data.OpenRecordset("so_tkiem") Command1(1).Enabled = True Command1(2).Enabled = True text1.Text = List1.Text Text4.Text = List1.Text rec.MoveFirst Do While Not rec.EOF If List1.Text = rec.Fields(0).Value Then For i = 0 To 5 text2(i).Text = rec.Fields(i) Next i For i = 0 To 4 text3(i).Text = rec.Fields(6 + i) Next i text3(11).Text = Val(text3(3).Text) + Val(text3(4).Text) rec.MoveNext Else rec.MoveNext End If Loop rec.MoveFirst Set rec1 = data.OpenRecordset("loai_gui") rec1.MoveFirst Do While Not rec1.EOF If text3(2).Text = rec1.Fields(0).Value Then text3(5).Text = rec1.Fields(3).Value text3(6).Text = rec1.Fields(1).Value End If rec1.MoveNext Loop rec1.MoveFirst Set rec2 = data.OpenRecordset("tien_sd") rec2.MoveFirst Do While Not rec2.EOF If text3(5).Text = rec2.Fields(0).Value Then text3(7).Text = rec2.Fields(1).Value text3(8).Text = Val(text3(3).Text) * rec2.Fields(2).Value text3(9).Text = Val(text3(4).Text) * rec2.Fields(2).Value text3(12).Text = Val(text3(8).Text) + Val(text3(9).Text) End If rec2.MoveNext Loop rec2.MoveFirst Set rec3 = data.OpenRecordset("lai_suat") Do While Not rec3.EOF If text3(2).Text = rec3.Fields(0).Value And so < rec3.Fields(2).Value Then so = rec3.Fields(2).Value text3(10).Text = so End If rec3.MoveNext Loop End Sub Private Sub Data1_Validate(Action As Integer, Save As Integer) Select Case Action Case vbDataActionMoveFirst kt = True Case vbDataActionMovePrevious kt = True Case vbDataActionMoveNext kt = True Case vbDataActionMoveLast kt = True Case vbDataActionAddNew kt = False Case vbDataActionUpdate kt = False Case vbDataActionDelete kt = False Case vbDataActionFind kt = False Case vbDataActionBookmark Case vbDataActionClose End Select End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) Dim i As Byte Dim data As Database Dim rec As Recordset Set data = OpenDatabase(loctext + "qltk.mdb", dbOpenDynaset) Set rec = data.OpenRecordset("so_tkiem") If KeyAscii = 13 Then Do While Not rec.EOF If text1.Text = rec.Fields(0).Value Then List1.Text = text1.Text End If rec.MoveNext Loop If text1.Text List1.Text Then MsgBox ("Không có số sổ này, hãy vào lại ") End If End If rec.MoveFirst End Sub Private Sub MaskEdBox1_GotFocus() MaskEdBox1.SelStart = 0 MaskEdBox1.SelLength = Len(MaskEdBox1.Text) End Sub Private Sub MaskEdBox1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text1.SetFocus End If End Sub Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text12.SetFocus End If End Sub Private Sub Text12_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text12.Text) End Sub Private Sub Text12_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text13.SetFocus End If End Sub Private Sub Text13_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text13.Text) End Sub Private Sub Text13_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text2.SetFocus End If End Sub Private Sub Text2_GotFocus() Dim dk As String Set db = OpenDatabase(Loctext + "hethong.mdb") Set rs = db.OpenRecordset("dmkh") dk = "makh='" & Text13.Text & "'" rs.FindFirst dk If rs.NoMatch = False Then Text2.Text = rs.Fields(1).Value Command1.SetFocus Else If Len(Text2.Text) = 0 Then ttt.Show 1 Text13.Text = ma Text2.Text = ten Text5.SetFocus End If End If rs.Close db.Close End Sub Private Sub Text2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command1.SetFocus End If End Sub Private Sub Text5_GotFocus() Text5.SelStart = 0 Text5.SelLength = Len(Text5.Text) End Sub Private Sub Text5_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text6.SetFocus End If End Sub Private Sub Text6_GotFocus() Set db = OpenDatabase(Loctext + "hethong.mdb") Set rs = db.OpenRecordset("DMVT") dk = "mavt='" & Text5.Text & "'" rs.FindFirst dk If rs.NoMatch = False Then Text6.Text = rs.Fields(1).Value Text7.SetFocus Else If Len(Text5.Text) = 0 Then tt.Show 1 Text5.Text = ma Text6.Text = ten Text7.SetFocus End If End If rs.Close db.Close End Sub Private Sub Text6_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text17.SetFocus End If End Sub Private Sub Text7_GotFocus() Text7.SelStart = 0 Text7.SelLength = Len(Text7.Text) End Sub Private Sub Text7_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text8.SetFocus End If End Sub Private Sub Text8_GotFocus() Text8.SelStart = 0 Text8.SelLength = Len(Text8.Text) End Sub Private Sub Text8_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command1.SetFocus End If End Sub ************************************************************************** Mã lệnh Form Cập nhật kỳ hạn. Private Sub Check1_LostFocus() Text2(1).SetFocus End Sub Private Sub Command1_Click() Check1.SetFocus End Sub Private Sub Command3_Click() Set db = OpenDatabase(Loctext + "qltk.mdb", dbOpenDynaset) Set rs = db.OpenRecordset("Ky_han") rs.MoveFirst Do Until rs.EOF If Text2(0).Text = rs.Fields(0) Then rs.Edit rs.Fields(0) = rs.Fields(0) rs.Fields(2) = Text2(1).Text If Check1.Value = 1 Then rs.Fields(1) = True Else rs.Fields(1) = False rs.Update End If End If rs.MoveNext Loop End Sub Private Sub Command4_Click() Unload Me End Sub Private Sub Form_Load() Dim newitem As String Set db = OpenDatabase(Loctext + "qltk.mdb", dbOpenDynaset) Set rs = db.OpenRecordset("Ky_han") Command1.Enabled = False Command2.Enabled = False Command3.Enabled = False Text1.Text = "" rs.MoveFirst Do While Not rs.EOF newitem = rs.Fields("loai_kh") List1.AddItem newitem rs.MoveNext Loop rs.MoveFirst End Sub Private Sub Form_Resize() Me.Top = MDIForm1.Top + 670 Me.Left = MDIForm1.Left + 100 End Sub Private Sub List1_Click() Dim field As String Set db = OpenDatabase(Loctext + "qltk.mdb", dbOpenDynaset) 3Set rs = db.OpenRecordset("Ky_han") Command1.Enabled = True Command2.Enabled = True Command3.Enabled = True field = List1.Text rs.MoveFirst Do While Not rs.EOF If field = rs.Fields(0).Value Then For i% = 0 To 3 If i = 0 Then Text2(i).Text = rs.Fields(i) If i = 1 Then Label5.Caption = rs.Fields(i).Value If i = 2 Then If rs.Fields(i) Then Check1.Value = 1 Else Check1.Value = 0 End If End If If i = 3 Then Text2(1) = rs.Fields(i).Value Next i End If rs.MoveNext Loop rs.MoveFirst Command1.SetFocus End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) Dim i As Byte Set db = OpenDatabase(Loctext + "qltk.mdb", dbOpenDynaset) Set rs = db.OpenRecordset("ky_han") If KeyAscii = 13 Then Do While Not rs.EOF If Text1.Text = rs.Fields(0).Value Then List1.Text = Text1.Text End If rs.MoveNext Loop If Text1.Text List1.Text Then MsgBox ("Không có số sổ này, hãy vào lại ") End If End If rs.MoveFirst End Sub Private Sub Text2_LostFocus(Index As Integer) If Index = 1 Then Command3.SetFocus Else If Index = 0 Then Check1.SetFocus End If End If End Sub ***************************************************************************** Mã lệnh Form cập nhật sổ tiết kiệm. Dim kt As Boolean Public Function tim(ByVal db1 As Database, rs1 As Recordset, st As String, i, j As Integer) As String Dim Str$ With rs1 Do Until .EOF If st = .Fields(i).Value Then Str = .Fields(j).Value tim = Str Exit Function End If .MoveNext Loop End With End Function Private Sub Data1_Validate(Action As Integer, Save As Integer) Select Case Action Case vbDataActionMoveFirst kt = True Case vbDataActionMovePrevious kt = True Case vbDataActionMoveNext kt = True Case vbDataActionMoveLast kt = True Case vbDataActionAddNew kt = False Case vbDataActionUpdate kt = False Case vbDataActionDelete kt = False Case vbDataActionFind kt = False Case vbDataActionBookmark Case vbDataActionClose End Select End Sub Private Sub cboloaitien_Change() Dim st$, xau$ Set db = OpenDatabase(Loctext + "admin.mdb", dbOpenDynaset) Set rs = db.OpenRecordset("loai_tien") st = cboloaitien.Text xau = tim(db, rs, st, 0, 1) Label5.Caption = xau End Sub Private Sub cboloaitien_Click() Dim st$, xau$ Set db = OpenDatabase(Loctext + "qltk.mdb", dbOpenDynaset) Set rs = db.OpenRecordset("tien_sd") st = cboloaitien.Text xau = tim(db, rs, st, 0, 1) Label5.Caption = xau End Sub Private Sub Command1_Click() On Error GoTo loi If txt(0) = "" Or txt(1) = "" Or txt(2) = "" Or txt(3) = "" Or txt(4) = "" Or txt(5) = "" Then MsgBox ("Bạn cưa nhập đầy đủ dữ liệu, hãy nhập lại") txt(0).SetFocus Exit Sub End If Dim i% Set db = OpenDatabase(Loctext + "qltk.mdb", dbOpenDynaset) Set rs = db.OpenRecordset("so_tkiem") rs.AddNew For i = 0 To 5 rs.Fields(i).Value = txt(i).Text Next rs.Fields(6).Value = txt1(0).Text rs.Fields(7) = txt1(0).Text rs.Fields(8).Value = txt1(1).Text rs.Fields(9).Value = cboloaitien.Text rs.Fields(10).Value = Val(txt1(2).Text) rs.Update Data1.Refresh rs.Close Exit Sub loi: MsgBox (Err.Description) End Sub Private Sub Data2_Reposition() On Error GoTo loi Dim i% If kt = False Then Exit Sub For i = 0 To 5 If Not IsNull(Data2.Recordset.Fields(i).Value) Then txt(i).Text = Data2.Recordset.Fields(i).Value Else txt(i) = "" End If Next If Not IsNull(Data2.Recordset.Fields(i + 1).Value) Then txt1(0) = Data2.Recordset.Fields(i + 1).Value Else MaskEdBox1.Text = "" End If If Not IsNull(Data2.Recordset.Fields(i + 2).Value) Then txt1(1).Text = Data2.Recordset.Fields(i + 2).Value Else txt1(1) = "" End If If Not IsNull(Data2.Recordset.Fields(i + 3).Value) Then cboloaitien.Text = Data2.Recordset.Fields(i + 3).Value Else cboloaitien = "" End If If Not IsNull(Data2.Recordset.Fields(i + 4).Value) Then txt1(2).Text = Data2.Recordset.Fields(i + 4).Value Else txt1(2) = "" End If chuyen Exit Sub loi: If Err.Number = 3021 Then Exit Sub End If End Sub Private Sub Form_Load() Set db = OpenDatabase(Loctext + "admin.mdb", dbOpenDynaset) Set rs = db.OpenRecordset("loai_tien") Data1.DatabaseName = Loctext + "admin.mdb" Data1.RecordSource = "so_tkiem" With rs Do Until .EOF cboloaitien.AddItem .Fields(0).Value .MoveNext Loop cboloaitien.Text = cboloaitien.List(0) End With txt1(1).Text = "01" End Sub Private Sub txt1_Change(Index As Integer) Dim st$, xau$ If Index = 1 Then Set db = OpenDatabase(Loctext + "qltk.mdb", dbOpenDynaset) Set rs = db.OpenRecordset("ky_han") st = txt1(1).Text xau = tim(db, rs, st, 0, 1) Label4.Caption = xau End If End Sub Private Sub Command1_Click() On Error Resume Next Text3(0).Text = Date For i = 1 To 2 Text3(i).Text = "" Next i Text3(0).SetFocus End Sub Private Sub Command3_Click() 'On Error Resume Next Dim data As Database Dim rec As Recordset Dim i As Byte Set data = OpenDatabase (Loctext + "qltk.mdb", dbOpenDynaset) Set rec = data.OpenRecordset("lai_suat") Dim field As String Label2(0).Caption = "Lần khai báo cuối cùng :" rec.MoveLast rec.AddNew rec.Fields(0) = Item For i = 0 To 1 If Text3(i).Text = "" Then MsgBox ("Nhập giá trị của " + rec.Fields(i).Name) Else field = Val(Text3(i).Text) rec.Fields(i + 1) = field rec.Update End If Next i End Sub Private Sub Form_Load() Set db = OpenDatabase(Loctext + "qltk.mdb", dbOpenDynaset) Set rs = db.OpenRecordset("ky_han") Dim newitem As String Command1.Enabled = False Command2.Enabled = False Command3.Enabled = False Text1.Text = "" rs.MoveFirst Do While Not rs.EOF newitem = rs.Fields("loai_kh") List1.AddItem newitem rs.MoveNext Loop rs.MoveFirst End Sub Private Sub Form_Resize() Me.Top = MDIForm1.Top + 670 Me.Left = MDIForm1.Left + 100 End Sub Private Sub List1_Click() Dim rs1 As Recordset Dim field As String Set db = OpenDatabase(Loctext + "qltk.mdb", dbOpenDynaset) Set rs = db.OpenRecordset("Ky_han query") Set rs = db.OpenRecordset("loai_tien") Command1.Enabled = True Command2.Enabled = True Command3.Enabled = True field = List1.Text rs.MoveFirst Do While Not rs.EOF If field = rs.Fields(0).Value Then For i% = 0 To 7 If i = 0 Or i = 2 Then Text2(i).Text = rs.Fields(i) If i = 1 Then Label5.Caption = rs.Fields(i) If i = 4 Or i = 5 Then Text3(i - 4).Text = rs.Fields(i) If i = 3 Then If rs.Fields(i) Then Check1.Value = 1 Else Check1.Value = 0 End If End If Next i End If rs.MoveNext Loop rs.MoveFirst End Sub Private Sub Text1_Change() List1.Text = Text1.Text End Sub Private Sub Data1_Validate(Action As Integer, Save As Integer) Select Case Action Case vbDataActionMoveFirst kt = True Case vbDataActionMovePrevious kt = True Case vbDataActionMoveNext kt = True Case vbDataActionMoveLast kt = True Case vbDataActionAddNew kt = False Case vbDataActionUpdate kt = False Case vbDataActionDelete kt = False Case vbDataActionFind kt = False Case vbDataActionBookmark Case vbDataActionClose End Select End Sub Private Sub Text3_LostFocus(Index As Integer) If Index = 2 Then Command2.SetFocus Else Text3(Index + 1).SetFocus End If End Sub ************************************************************************** Mã lệnh Form rút tiết kiệm. Option Explicit Private Sub Form_Load() Dim i As Byte Dim rec As Recordset Dim data As Database Set data = OpenDatabase(Loctext + "qltk.mdb", dbOpenDynaset) Set rec = data.OpenRecordset("so_tk") For i = 1 To 4 Next rec.MoveFirst Do While Not rec.EOF List1.AddItem rec.Fields("so_so") rec.MoveNext Loop rec.MoveFirst text1.Text = "" End Sub Private Sub Form_Resize() Me.Top = 500 End Sub Private Sub List1_Click() Dim i As Byte Dim so As Single Dim data As Database Dim Data1 As Database Dim rec As Recordset Dim rec1 As Recordset Dim rec2 As Recordset Dim rec3 As Recordset Set data = OpenDatabase(Loctext + "qltk.mdb", dbOpenDynaset) Set rec = data.OpenRecordset("so_tk") text1.Text = List1.Text Text4.Text = List1.Text rec.MoveFirst Do While Not rec.EOF If List1.Text = rec.Fields(0).Value Then For i = 0 To 5 text2(i).Text = rec.Fields(i) Next i For i = 0 To 4 text3(i).Text = rec.Fields(6 + i) Next i text3(11).Text = Val(text3(3).Text) + Val(text3(4).Text) rec.MoveNext Else rec.MoveNext End If Loop rec.MoveFirst Set Data1 = OpenDatabase(Loctext + "qltk.mdb") Set rec1 = Data1.OpenRecordset("ky_han") rec1.MoveFirst Do While Not rec1.EOF If text3(2).Text = rec1.Fields(0).Value Then text3(5).Text = rec1.Fields(3).Value text3(6).Text = rec1.Fields(1).Value End If rec1.MoveNext Loop rec1.MoveFirst Set rec2 = Data1.OpenRecordset("loai_tien") rec2.MoveFirst Do While Not rec2.EOF If text3(5).Text = rec2.Fields(0).Value Then text3(7).Text = rec2.Fields(1).Value text3(8).Text = Val(text3(3).Text) * rec2.Fields(2).Value text3(9).Text = Val(text3(4).Text) * rec2.Fields(2).Value text3(12).Text = Val(text3(8).Text) + Val(text3(9).Text) End If rec2.MoveNext Loop rec2.MoveFirst Set rec3 = Data1.OpenRecordset("lai_suat") Do While Not rec3.EOF If text3(2).Text = rec3.Fields(0).Value And so < rec3.Fields(2).Value Then so = rec3.Fields(2).Value text3(10).Text = so End If rec3.MoveNext Loop End Sub Private Sub Data1_Validate(Action As Integer, Save As Integer) Select Case Action Case vbDataActionMoveFirst kt = True Case vbDataActionMovePrevious kt = True Case vbDataActionMoveNext kt = True Case vbDataActionMoveLast kt = True Case vbDataActionAddNew kt = False Case vbDataActionUpdate kt = False Case vbDataActionDelete kt = False Case vbDataActionFind kt = False Case vbDataActionBookmark Case vbDataActionClose End Select End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) Dim i As Byte Dim data As Database Dim rec As Recordset Set data = OpenDatabase(Loctext + "qltk.mdb", dbOpenDynaset) Set rec = data.OpenRecordset("so_tk") If KeyAscii = 13 Then Do While Not rec.EOF If text1.Text = rec.Fields(0).Value Then List1.Text = text1.Text End If rec.MoveNext Loop If text1.Text List1.Text Then MsgBox ("Không có số sổ này, hãy vào lại ") End If End If rec.MoveFirst End Sub Mã lệnh Form Người sử dụng Private Sub Form_Unload(Cancel As Integer) Screen.MousePointer = vbDefault End Sub Private Sub datPrimaryRS_Error(ByVal ErrorNumber As Long, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, fCancelDisplay As Boolean) MsgBox "Data error event hit err:" & Description End Sub Private Sub datPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) datPrimaryRS.Caption = "Record: " & CStr(datPrimaryRS.Recordset.AbsolutePosition) End Sub Private Sub datPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) Dim bCancel As Boolean Select Case adReason Case adRsnAddNew Case adRsnClose Case adRsnDelete Case adRsnFirstChange Case adRsnMove Case adRsnRequery Case adRsnResynch Case adRsnUndoAddNew Case adRsnUndoDelete Case adRsnUndoUpdate Case adRsnUpdate End Select If bCancel Then adStatus = adStatusCancel End Sub Private Sub cmdAdd_Click() On Error GoTo AddErr datPrimaryRS.Recordset.AddNew Exit Sub AddErr: MsgBox Err.Description End Sub Private Sub cmdDelete_Click() On Error GoTo DeleteErr With datPrimaryRS.Recordset .Delete .MoveNext If .EOF Then .MoveLast End With Exit Sub DeleteErr: MsgBox Err.Description End Sub Private Sub cmdRefresh_Click() 'This is only needed for multi user apps On Error GoTo RefreshErr datPrimaryRS.Refresh Exit Sub RefreshErr: MsgBox Err.Description End Sub Private Sub cmdUpdate_Click() On Error GoTo UpdateErr datPrimaryRS.Recordset.UpdateBatch adAffectAll Exit Sub UpdateErr: MsgBox Err.Description End Sub Private Sub cmdClose_Click() Unload Me End Sub ************************************************************************** Mã lệnh Form đăng nhập mật khẩu Option Explicit Private Sub Command1_Click() Dim data As Database Dim rec As Recordset Dim st As String, bien$ Dim kt As Boolean Set data = OpenDatabase(Loctext + "Dulieu.mdb") Set rec = data.OpenRecordset("nhan_vien") Static i As Integer kt = False If Text1.Text "" Then st = Text2.Text rec.MoveFirst Do While Not rec.EOF If st = rec.Fields(0).Value Then kt = True rec.MoveNext Loop If Not kt Then If i >= 2 Then Unload frmmatkhau Else i = i + 1 bien = MsgBox("Sai mật mã, vào lại lần thứ : " & Str(i + 1), vbCritical) Text2.Text = "" Text2.SetFocus End If Else Unload frmmatkhau End If Else MsgBox ("Bạn chưa nhập tên người sử dụng") End If End Sub Private Sub Command2_Click() Unload frmmatkhau End Sub Private Sub Form_Load() Command1.Enabled = False Command2.Enabled = True Text1.Text = "" Text2.Text = "" End Sub Private Sub Form_Unload(Cancel As Integer) MDIForm1.Timer1.Enabled = False End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) Command1.Enabled = True If KeyAscii = 13 Then Text2.SetFocus End If End Sub Private Sub text2_KeyPress(KeyAscii As Integer) Command1.Enabled = True If KeyAscii = 13 Then Command1.SetFocus End If End Sub ***************************************************************************** Mã lệnh Form cập nhật lãi suất Private Sub Form_Resize() On Error Resume Next 'This will resize the grid when the form is resized grdDataGrid.Height = Me.ScaleHeight - datPrimaryRS.Height - 30 - picButtons.Height End Sub Private Sub Form_Unload(Cancel As Integer) Screen.MousePointer = vbDefault Form2.Command1.Enabled = True Form2.Command2.Enabled = True Form2.Command3.Enabled = True Form2.Command4.Enabled = True Form2.Text1.SetFocus End Sub Private Sub datPrimaryRS_Error(ByVal ErrorNumber As Long, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, fCancelDisplay As Boolean) MsgBox "Data error event hit err:" & Description End Sub Private Sub datPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) 'This will display the current record position for this recordset datPrimaryRS.Caption = "Record: " & CStr(datPrimaryRS.Recordset.AbsolutePosition) End Sub Private Sub datPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) 'This is where you put validation code 'This event gets called when the following actions occur Dim bCancel As Boolean Select Case adReason Case adRsnAddNew Case adRsnClose Case adRsnDelete Case adRsnFirstChange Case adRsnMove Case adRsnRequery Case adRsnResynch Case adRsnUndoAddNew Case adRsnUndoDelete Case adRsnUndoUpdate Case adRsnUpdate End Select If bCancel Then adStatus = adStatusCancel End Sub Private Sub cmdAdd_Click() On Error GoTo AddErr datPrimaryRS.Recordset.MoveLast grdDataGrid.SetFocus SendKeys "{down}" Exit Sub AddErr: MsgBox Err.Description End Sub Private Sub cmdDelete_Click() On Error GoTo DeleteErr With datPrimaryRS.Recordset .Delete .MoveNext If .EOF Then .MoveLast End With Exit Sub DeleteErr: MsgBox Err.Description End Sub Private Sub cmdRefresh_Click() 'This is only needed for multi user apps On Error GoTo RefreshErr datPrimaryRS.Refresh Exit Sub RefreshErr: MsgBox Err.Description End Sub Private Sub cmdUpdate_Click() On Error GoTo UpdateErr datPrimaryRS.Recordset.UpdateBatch adAffectAll Exit Sub UpdateErr: MsgBox Err.Description End Sub Private Sub cmdClose_Click() Unload Me End Sub Private Sub grdDataGrid_Click() End Sub ************************************************************************** Mã lệnh Form đăng nhập thêm người sử dụng. Private Sub Form_Load() Set grdDataGrid.DataSource = datPrimaryRS.Recordset("ChildCMD").UnderlyingValue End Sub Private Sub Form_Resize() On Error Resume Next 'This will resize the grid when the form is resized grdDataGrid.Width = Me.ScaleWidth grdDataGrid.Height = Me.ScaleHeight - grdDataGrid.Top - datPrimaryRS.Height - 30 - picButtons.Height End Sub Private Sub Form_Unload(Cancel As Integer) Screen.MousePointer = vbDefault End Sub Private Sub datPrimaryRS_Error(ByVal ErrorNumber As Long, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, fCancelDisplay As Boolean) MsgBox "Data error event hit err:" & Description End Sub Private Sub datPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) 'This will display the current record position for this recordset datPrimaryRS.Caption = "Record: " & CStr(datPrimaryRS.Recordset.AbsolutePosition) End Sub Private Sub datPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) Dim bCancel As Boolean Select Case adReason Case adRsnAddNew Case adRsnClose Case adRsnDelete Case adRsnFirstChange Case adRsnMove Case adRsnRequery Case adRsnResynch Case adRsnUndoAddNew Case adRsnUndoDelete Case adRsnUndoUpdate Case adRsnUpdate End Select If bCancel Then adStatus = adStatusCancel End Sub Private Sub cmdAdd_Click() On Error GoTo AddErr datPrimaryRS.Recordset.AddNew Exit Sub AddErr: MsgBox Err.Description End Sub Private Sub cmdDelete_Click() On Error GoTo DeleteErr With datPrimaryRS.Recordset .Delete .MoveNext If .EOF Then .MoveLast End With Exit Sub DeleteErr: MsgBox Err.Description End Sub Private Sub cmdRefresh_Click() 'This is only needed for multi user apps On Error GoTo RefreshErr datPrimaryRS.Refresh Set grdDataGrid.DataSource = datPrimaryRS.Recordset("ChildCMD").UnderlyingValue Exit Sub RefreshErr: MsgBox Err.Description End Sub Private Sub cmdUpdate_Click() On Error GoTo UpdateErr datPrimaryRS.Recordset.UpdateBatch adAffectAll Exit Sub UpdateErr: MsgBox Err.Description End Sub Private Sub cmdClose_Click() Unload Me End Sub

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

  • docP0043.doc