“ 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.
126 trang |
Chia sẻ: oanh_nt | Lượt xem: 1339 | Lượt tải: 0
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:
- P0043.doc