2. Phơng pháp thiết kế sử dụng:
Phơng pháp thiết kế đợc sử dụng là phơng pháp thiết kế từ đỉnh xuống (Top
down design).
Đây là một phơng pháp thiết kế giải thuật dựa trên t tởng module hoá. Nội
dung của phơng pháp nh sau:
Trớc hết ngời ta xác định các vấn đề chủ yếu nhất mà việc giải quyết bài
toán yêu cầu, bao quát đợc toàn bộ bài toán. Sau đó phân chia nhiệm vụ cần giải
quyết thành các nhiệm vụ cụ thể hơn, tức là chuyển dần từ module chính xuống
các module con từ trên xuống dới, do vậy phơng pháp có gọi là thiết kế từ đỉnh
xuống (Top down design).
3. Thiết kế các module.
Chương trình quản lý tiền gửi NH
Gửi tiền
Mở TK mới
Gửi thêm tiền
Vào TK đã có
Rút tiền
Rút tiền lãi
Rút tiền gốc
Tất toán
Huỷ tài khoản
Tìm kiếm thông
tin về KH
Báo cáo
Danh sách KH
Thông tin về KH
Thông tin về TK
Tổng tiền gửi
trong ngân hàng
4. Lý do lựa chọn phơng pháp thiết kế trên.
Chơng trình đợc thiết kế nhằm mục đích quản lý tiền gửi trong một ngân
hàng vì thế khi lựa chọn phơng pháp thiết kế trên ta có thể bao quát đợc toàn bộ
công việc. Với phơng pháp thiết kế này ta có thể nắm bắt đợc những yêu cầu
chính của công việc từ đó chia ra các module chính. Sau khi thiết kế đợc các
module chính ta có thể đi vào giải quyết từng yêu cầu trong mỗi module một
cách riêng rẽ qua việc thiết kế các module con. Nh vậy việc lựa chọn phơng
pháp trên sẽ giúp cho việc thiết kế phần mềm đạt hiệu quả cao.
5. Ngôn ngữ lập trình và cấu trúc dữ liệu sử dụng.
Ngôn ngữ lập trình sử dụng:
Sử dụng ngôn ngữ lập trình PASCAL, đây là ngôn ngữ có cấu trúc
tiền định đủ mạnh sẽ cho phép chúng ta biểu diễn các giải thuật một cách
ngắn gọn, dễ dàng hình dung ra các công đoạn thiết kế giải thuật.
PASCAL có các cấu trúc dữ liệu đầy đủ, có thể biểu diễn các loại cấu trúc
dữ liệu từ đơn giản đến phức tạp, từ cấu trúc tuyến tính đến cấu trúc phi
tuyến tính.
Cấu trúc dữ liệu sử dụng:
Sử dụng cấu trúc dữ liệu danh sách liên kết. Danh sách liên kết là
danh sách trong đó các phần tử đợc kết nối với nhau bởi vùng liên kết của
chúng. Đây là loại cấu trúc dữ liệu thích hợp cho phép thêm vào, loại bỏ
hoặc ghép nối các phần tử của danh sách.
Nguyên tắc tổ chức danh sách liên kết nh sau: Vùng liên kết của
phần tử thứ i chứa địa chỉ của phần tử thứ i+1 (i=1 n-1), vùng liên kết của
phần tử cuối cùng n mang giá trị rỗng (nil). Mỗi phần tử của danh sách
liên kết gồm hai phần chính:
- Vùng chứa dữ liệu (data).
- Vùng địa chỉ của các phần tử khác (gọi là vùng liên kết Link).
Ngoài ra, ngời ta còn sử dụng các chỉ điểm Fisrt, Last (kiểu Pointer) để
chứa địa chỉ của phần tử đầu, cuối .
Ch ơng 3:
Nội dung chơng trình.
1. Diễn đạt nội dung chơng trình đã đợc thiết kế bằng ngôn ngữ lập
trình.
Chơng trình đợc viết bằng ngôn ngữ lập trình PASCAL và đợc viết trong th
mục C:\DEANPAS vì thế để chạy chơng trình cần Copy toàn bộ th mục
DEANPAS vào th mục gốc của ổ đĩa C.
Sau đây là toàn bộ chơng trình:
{ chuong trinh tu dong tao ra trong thu muc C:\DEANPAS cac tep KH.dat,
TK.dat, GDgui.dat, GDrut.dat va THDL.dat neu trong thu muc khong co
cac tep do hoac khi chay chuong trinh lan dau tien. Neu trong thu muc
da ton tai cac tep neu tren thi chuong trinh se lay du lieu tu cac tep do.
CHUONG TRINH QUAN LY TIEN GUI TRONG MOT NGAN
HANG
*************************************************
}
{$N+}
uses crt;
const ls=0.2;
type
khPointer=^khachhang;
khachhang=record
SoHSKH:string[7];
hoten:string[30];
diachi:string[50];
soCMT:string[9];
Ngaycap:string[10];
Next:khPointer;
end;
tkPointer=^taikhoan;
taikhoan=record
SoTaiKhoan:string[7];
SoHSKH:string[7];
SoTienTrongTK:double;
laisuat:real;
Next:tkPointer;
end;
guiPointer=^GDgui;
GDgui=record
Ngaygui:string[10];
Sotaikhoan:string[7];
tiengui:double;
Next:guiPointer;
end;
rutPointer=^GDrut;
GDrut=record
Ngayrut:string[10];
SoTaikhoan:string[7];
tienrut:double;
Next:rutPointer;
end;
TongHopDL=record
TongsoHSKH:longint;
TongsoTK:longint;
Tongtiengui:double;
end;
var
dsKH:file of khachhang;
dsTK:file of taikhoan;
dsGDgui:file of GDgui;
dsGDrut:file of GDrut;
TongHop:file of TongHopDL;
i,SoBanGhiKH,SoBanGhiTK:longint;
tongsotien:double;
kyhan:byte;s:string;
chuoi:string[10];
chon0,chon1,chon2:byte;
traloi:char;ktraNgay:boolean;
lsuat:real;
THDL:TongHopDL;
motKH:khachhang;
motTK:taikhoan;
motGDgui:GDgui;
motGDrut:GDrut;
FirstKH,LastKH,pKH,qKH:khPointer;
FirstTK,LastTK,pTK,qTK:tkPointer;
FirstGui,LastGui,pGui,qGui:guiPointer;
FirstRut,LastRut,pRut,qRut:rutPointer;
{ CAC PROCEDURE }
procedure Main_Menu(var chon:byte);
begin
clrscr;
window(18,7,80,25);
textcolor(2);
writeln('****************************************');
write('*');textcolor(7);
write(' MAIN MENU ');
textcolor(2);writeln('*');
write('*');textcolor(7);
write(' 1.Mo tai khoan moi ');
textcolor(2);writeln('*');
write('*');textcolor(7);
write(' 2.Gui tien vao tai khoan ');
textcolor(2);writeln('*');
write('*');textcolor(7);
write(' 3.Rut tien tu tai khoan ');
textcolor(2);writeln('*');
write('*');textcolor(7);
write(' 4.Sua chua thong tin ve KH ');
textcolor(2);writeln('*');
write('*');textcolor(7);
write(' 5.Tim kiem ');
textcolor(2);writeln('*');
write('*');textcolor(7);
write(' 6.In bao cao ');
textcolor(2);writeln('*');
write('*');textcolor(7);
write(' 7.Ket thuc chuong trinh ');
textcolor(2);writeln('*');
write('* ***');textcolor(7);
write(' Chon so: ');
textcolor(2);writeln('*');
writeln('****************************************');
textcolor(7);
gotoxy(19,10);readln(chon);
window(1,1,80,25);
end;
procedure Menu_In(var chon:byte);
begin
clrscr;
window(18,7,80,25);
textcolor(2);
writeln(' IN BAO CAO');
writeln(' ');
writeln;textcolor(7);
writeln(' 1. In danh sach khach hang.');
writeln(' 2. In thong tin ve 1 khach hang.');
writeln(' 3. In thong tin ve 1 tai khoan.');
writeln(' 4. Bao cao tong tien gui trong NH.');
writeln(' 5. Quay ve Main menu.');
write(' ** Chon so: ');
readln(chon);
window(1,1,80,25);
end;
procedure Nap_KH;
begin
FirstKH:=nil;
end;
procedure Nap_TK;
begin
FirstTK:=nil;
end;
procedure Nap_GDgui;
begin
FirstGui:=nil;
end;
procedure Nap_GDrut;
begin
FirstRut:=nil;
end;
procedure DuyetKH;
var ptr:khPointer;
i:longint;
begin
i:=0;
ptr:=FirstKH;
while ptr<>nil do
begin
ptr:=ptr^.next;
i:=i+1;
end;
SoBanGhiKH:=i;
end;
procedure DuyetTK;
var ptr:tkPointer;
i:longint;
begin
i:=0;
ptr:=FirstTK;
while ptr<>nil do
begin
ptr:=ptr^.next;
i:=i+1;
end;
SoBanGhiTK:=i;
end;
procedure ThemKH;
var ptrKH:khPointer;
begin
new(ptrKH);
ptrKH^.SoHSKH:=motKH.SoHSKH;
ptrKH^.hoten:=motKH.hoten;
ptrKH^.diachi:=motKH.diachi;
ptrKH^.SoCMT:=motKH.SoCMT;
ptrKH^.Ngaycap:=motKH.ngaycap;
ptrKH^.next:=nil;
if FirstKH=nil then
FirstKH:=ptrKH
else
LastKH^.next:=ptrKH;
LastKH:=ptrKH;
end;
procedure ThemTK;
var ptrTK:tkPointer;
begin
new(ptrTK);
ptrTK^.SoTaiKhoan:=motTK.SoTaiKhoan;
ptrTK^.SoHSKH:=motTK.SoHSKH;
ptrTK^.SotientrongTK:=motTK.SotientrongTK;
ptrTK^.laisuat:=motTK.laisuat;
ptrTK^.next:=nil;
if FirstTK=nil then
FirstTK:=ptrTK
else
LastTK^.next:=ptrTK;
LastTK:=ptrTK;
end;
procedure ThemGDgui;
var ptr:guiPointer;
begin
new(ptr);
ptr^.Ngaygui:=motGDgui.Ngaygui;
ptr^.Sotaikhoan:=motGDgui.Sotaikhoan;
ptr^.tiengui:=motGDgui.tiengui;
ptr^.next:=nil;
if FirstGui=nil then
FirstGui:=ptr
else
LastGui^.next:=ptr;
LastGui:=ptr;
end;
procedure ThemGDrut;
var ptr:rutPointer;
begin
new(ptr);
ptr^.Ngayrut:=motGDrut.Ngayrut;
ptr^.Sotaikhoan:=motGDrut.SoTaikhoan;
ptr^.tienrut:=motGDrut.tienrut;
ptr^.next:=nil;
if FirstRut=nil then
FirstRut:=ptr
else
LastRut^.next:=ptr;
LastRut:=ptr;
end;
function XulySo(var so:longint):string;
var s:string[7];
begin
s:='';
if (0<so) and (so<10) then
begin
str(so,s);
s:='00000'+s;
end;
if (10<=so) and (so<100) then
begin
str(so,s);
s:='0000'+s;
end;
if (100<=so) and (so<1000) then
begin
str(so,s);
s:='000'+s;
end;
if (1000<=so) and (so<10000) then
begin
str(so,s);
s:='00'+s;
end;
if (10000<=so) and (so<100000) then
begin
str(so,s);
s:='0'+s;
end;
if so>=1000000 then
str(so,s);
XulySo:=s;
end;
procedure Menu_MoTK;
begin
window(5,2,80,25);
textcolor(2);
gotoxy(25,2);writeln('MO TAI KHOAN MOI');
gotoxy(25,3);writeln(' ');writeln;
textcolor(7);
writeln('Ngay (dd/mm/yyyy): ');
write('So ho so KH: ');
gotoxy(45,6);writeln('Ky han: Thang.');
writeln('Ten khach hang: ');
writeln('Dia chi lien he: ');
write('So chung minh thu: ');
gotoxy(45,9);writeln('Ngay cap: ');
writeln('So tien gui:');
end;
function KTraKyHan(var kh:byte):boolean;
var k:boolean;
begin
k:=false;
if kh=0 then
begin
k:=true;lsuat:=0.2;
end;
if kh=1 then
begin
k:=true;lsuat:=0.4;
end;
if kh=2 then
begin
k:=true;lsuat:=0.48;
end;
if kh=3 then
begin
k:=true;lsuat:=0.53;
end;
if kh=6 then
begin
k:=true;lsuat:=0.56;
end;
if kh=9 then
begin
k:=true;lsuat:=0.58;
end;
if kh=12 then
begin
k:=true;lsuat:=0.6;
end;
if kh=24 then
begin
k:=true;lsuat:=0.64;
end;
if kh=18 then
begin
k:=true;lsuat:=0.62;
end;
if kh=36 then
begin
k:=true;lsuat:=0.66
end;
KTraKyHan:=k;
end;
procedure MoTK;
var kt,ktra:boolean;
ptrTK:tkPointer;
ptrKH:khPointer;
sotk:longint;
Không có nhận xét nào:
Đăng nhận xét