Mục lục
Phần I
NộI dung
GiớI thiệu về ngôn ngữ Visual Basic
Lập trình vớI ngôn ngữ Visual Basic
Cấu trúc của một chương trình viết bằng ngôn ngữ Visual Basic
Phần II
Mục đích và yêu cầu của phần mềm
Chức năng chính của Phần mềm Quản lý thu mua chè
Cơ sở dữ liệu
Phần III Mã nguồn chương trình
1
LỜI CẢM ƠN
Đồ án này là kết quả học tập, rèn luyện của em trong hơn bốn
năm học tại trường Đại Học Quản lý và Kinh doanh Hà Nội. Để
có được kết quả này, em đã nhận được rất nhiều sự động
viên, giúp đỡ và chỉ bảo của các thầy cô, gia đình,bạn bè…
Trước hết, em xin được chân thành cảm ơn Thầy giáo Đoàn
Hữu Vượng đã tận tình hướng dẫn và giúp đỡ em hoàn thành
đề tài luận văn tốt nghiệp này.
Em xin chân thành cảm ơn các thầy, cô giáo trường Đại Học
Quản lý và Kinh doanh Hà Nội, đặc biệt là Khoa Tin Học, đã
giảng dạy, truyền thụ cho em những kiến thức quý báu và tạo
mọi điều kiện thuận lợi cho em trong suốt quá trình học tập tại
trường.
Xin được gửi lời cảm ơn đến những người thân trong gia đình,
bạn bè gần xa đã giúp đỡ, động viên tôi trong quá trình thực
hiện luận văn .
2
Lời nói đầu
Ở nước ta, những năm gần đây, công nghệ thông tin đã phát
chương trình, bạn thấy ngay được kết quả qua từng thao tác. Visual Basic
cho phép chỉnh sửa một cách đơn giản, nhanh chóng giao diện của các đốI
tượng trong ứng dụng. Đó là một thuận lợI cho ngườI lập trình.
VớI Visual Basic, việc lập trình trong Windows đã trở nên hiệu quả hơn và
đơn giản hơn rất nhiều. Một khả năng nữa của Visual Basic là khả năng kết
hợp các thư viện liên kết động DLLl (Dynamic Link Library). DLL chính là
phần mở rộng cho Visual Basic, tức là khi xây dựng một chương trình có
một số yêu cầu mà Visual Basic không đáp ứng đầy đủ ta có thể viết các
DLL để phụ thêm cho chương trình.
1 Các công cụ để thiết kế giao diện:
Như chúng ta đã biết Visual Basic là ngôn ngữ lập trình có tính hướng đốI
tượng nên công việc thiết kế giao diện là rất đơn giản. Chúng ta chỉ việc
tiến hành đưa các đốI tượng cần thiết trong thanh công cụ vào Form bằng
cách kích – kéo sau đó thay đổI các thuộc tính của chúng trên cửa sổ
Properties cho phù hợp vớI mục đích lập trình.
1.1 Form:
Form là một biểu mẫu của mỗI ứng dụng trong Visual Basic. Ta dùng Form
nhằm mục đích định vị và sắp xếp các bộ phận trên nó khi thiết kế giao
diện vớI ngườI sử dụng. Ta có thể xem Form như một bộ phận mà nó có
thể chứa các bộ phận khác. Các thành phần trong Form chính của ứng
dụng tương tác vớI các Form khác và các bộ phận của chúng tạo nên giao
tiếp cho ứng dụng. Form chính là giao diện chính của ứng dụng, các Form
khác có thể chứa các công cụ để nhập dữ liệu, xem xét v.v…
4
Trong nhiều ứng dụng của Visual Basic, kích cỡ và vị trí của biểu mẫu lúc
thiết kế là kích cỡ mà ngườI dùng sẽ gặp vào lúc sử dụng. Điều này, có
nghĩa là Visual Basic cho phép ta thay đổI kích cỡ và di chuyển vị trí Form
đến bất cứ nơi nào trên màn hình khi chạy một đề án, bằng cách thay đổI
một số thuộc tính của nó trên cửa sổ thuộc tính đốI tượng (Properties
Windows ). Thực tế, một trong tính năng thiếu của Visual Basic là khả năng
5
1.7 Picturebox, Image ( hộp ảnh, điều khiển ảnh );
Đối tượng Image và Picturebox dùng để hiển thị ảnh . Nó cho phép người
thiết kế đưa hình ảnh từ các file ảnh ( .bmp , .gif …) lên Form
1.8 Textbox ( hộp văn bản );
Đối tượng Textbox dùng làm hộp nhập dữ liệu cho phép đưa các chuỗi ký
tự vào Form. Có thể dùng hộp văn bản để nhập dữ liệu hoặc hiển thị văn
bản . Tất cả các công cụ trong windows về chỉnh sửa văn bản như : cut ,
copy , paste đều dùng trong hộp văn bản
1.9 Command Button ( nút lệnh ):
Khi người dùng kích vào 1 nút lệnh trong biểu mẫu, một thao tác nào đó sẽ
được thực hiện tuỳ theo thủ tục sự kiện được viết để đáp ứng sự kiện kích
chuột đó .
1.10 Listbox ( hộp danh sách ):
Đối tượng Listbox cho phép kết xuất các thông tin về nhiều chuỗi kí tự vào
trong nó thông qua phương thức additem. Thường được dùng để hiển thị
thông tin dưới dạng danh sách có liên quan với nhau. Listbox không cho
phép người dùng nhập dữ liệu vào.
1.11 Combo box ( hộp kết hợp );
Công cụ này cho phép người dùng gõ vào thông tin và hiển thị thông tin . nó
có tác dụng như hộp danh sách và hộp văn bản . Hộp kết hợp có 3 loại:
- Hộp kết hợp thả xuống ( drop-down combo ) : là 1 hộp văn bản cho phép
người dùng gõ vào, kế bên có 1 mũi tên mà khi nhấn vào nó sẽ xổ ra 1
danh sách cho phép người sử dụng chọn lựa .
- Hộp kết hợp đơn giản ( simple combo ) : luôn hiển thị danh sách và cho
phép người dùng gõ vào hộp văn bản.
- Hộp danh sách thả xuống ( drop- down list box) : tương tự như hộp kết
hợp thả xuống. Danh sách sẽ không hiển thị sẵn nếu người dùng không
nhấn vào mũi tên bên cạnh. người sử dụng chỉ có thể chọn từ danh
sách, gõ vào hộp văn bản thì danh sách sẽ cuộn đúng đến phần tử yêu
được gõ vào trong cửa sổ code.
2.1 Cửa sổ code:
Cửa số code bao gồm các thành phần sau:
Thanh tách: cửa sổ code có một thanh tách (Split bar) nằm đầu thanh cuộn
dọc. Mục đích của nó là: khi các dòng mã trở nên nhiều, ta có thể chia cửa
sổ code thành 2 phần.
7
Hộp liệt kê Object: nằm ở đầu cửa sổ code bên trái, nó liệt kê tất cả các
điều khiển có trên biểu mẫu và thêm vào một đối tượng có tên là: General.
Khi thả hộp liệt kê và nhắp vào một đối tượng nào đó thì sẽ đưa ta đến
phần mã viết cho đối tượng đó.
Hộp Procedure: hộp này cung cấp mọi sự kiện mà đối tượng đã được lựa
chọn trong hộp liệt kê object.
2.2 Intellisence:
Intellisence là một công cụ thông minh, nó giúp ta đỡ mất công gõ và tra
cứu. Intellisence mở các hộp liệt kê cùng với các thông tin về đối tượng mà
ta đang tiếp cận. Nó có 3 phần:
- QuickInfo: cho ta thông tin về cú pháp của 1 lệnh Visual Basic. Mỗi khi
nhập một từ khoá theo sau là một dấu cách hoặc dấu chấm. . .một hộp
thoại sẽ hiện ra cung cấp cú pháp của thành phần đó.
- List properties/Methods: tính năng này đưa ra một danh sách các tính
chất và phương pháp của đối tượng ngay khi ta gõ dấu chấm.
- Available constant : tính năng này cung cấp một danh sách các hằng sẵn
có.
2.1 Biến:
Trong Visual Basic, tên biến có thể dài tối đa 255 kí tự. Kí tự đầu tiên phải
là một chữ cái và tên biến có thể là một tổ hợp chữ cái, chữ số và dấu gạch
dưới. Không được dùng các từ khoá trong Visual Basic ( như end, print. . .)
làm tên biến. Visual Basic không phân biệt chữ hoa, chữ thường.
Cách khai báo biến: Dim <Tên biến> as <Kiểu biến>
\ Chia lấy nguyên X=3\2(x=1)
Mod Chia lấy dư X=7 mod 4 (x=3)
^ Lấy luỹ thừa X=y^3 (X=y
3
)
2.3.2 Các toán tử so sánh:
Toán tử Ý nghĩa
> So sánh xem số thứ nhất có lớn hơn số thứ 2 không
< So sánh xem số thứ nhất có nhỏ hơn số thứ 2 không.
= So sánh số thứ nhất có bằng số thứ 2 không.
<> So sánh số thứ nhất có khác số thứ 2 không.
>= So sánh số thứ nhất có lớn hơn hay bằng số thứ 2 không
<= So sánh số thứ nhất có nhỏ hơn hay bằng số thứ 2 không
2.3.3 Các toán tử Boolean:
Toán tử Ý nghĩa
And Chỉ nhận giá trị True nếu cả 2 số hạng đều là True
Or Chỉ nhận giá trị False nếu cả 2 số hạng đều là False
Not Phủ định giá trị của số hạng
9
2.4 Cấu trúc điều khiển:
2.4.1 Các cấu trúc chọn:
2.4.1.1 Cấu trúc If….Then…
Dạng 1: If <Biểu thức logic> then < lệnh> End If
Khi gặp một điều lệnh If…..then, Visual Basic sẽ kiểm tra <Biểu thức logic>,
nếu là True thì máy sẽ thực hiện <lệnh> nếu kêt quả là False thì máy sẽ bỏ
qua lệnh và thực hiện những lệnh sau End If.
Dạng 2: If <Biểu thức logic> then <lệnh 1> else <lệnh 2>
Khi gặp lệnh này, nếu <Biểu thức logic> lấy giá trị True thì thực hiện < lệnh
1> bỏ qua <lệnh 2>, còn nếu <Biểu thức logic> lấy giá trị False thì bỏ qua
<lệnh 1> và thực hiện <lệnh 2>.
<Các câu lệnh> được thực hiện lặp đi lặp lại nếu <Biểu thức điều kiện> vẫn
nhận giá trị True. Do đó, để thoát khỏi vòng lặp thì trong <Các câu lệnh phải
có lệnh thay đổi gia trị của <Biểu thức điều kiện>. Trong cú pháp 1, thì
<Biều thức điều kiện> được xét trước khi thực hiện các câu lệnh, còn trong
cú pháp 2 thì các câu lệnh được thực hiện trước khi xét đến <Biểu thức
điều kiện>.
2.5.2 Cấu trúc For …Next:
Cú pháp:
For <biến> = <giá trị đầu> to <giá trị cuối> [Step <bước nhẩy>]
<Các câu lệnh>
Next biến
Đây là lệnh lặp biết trước số lần lặp. Khi gặp cấu trúc lệnh này, Visual Basic
sẽ gán giá trị <biến> cho <giá trị đầu>, thực hiện <Các câu lệnh>, rồi tăng
<biến> lên một giá trị tuỳ theo <bước nhẩy>. Vòng lặp này sẽ kết thúc khi
<biến> có giá trị lớn hơn <giá trị cuối>
2.5.3 Cấu trúc For Each….Next:
For Each <phần tử> In <nhóm>
<Khối lệnh>
Next <phần tử>
Khi gặp cấu trúc này, Visual Basic sẽ lặp lại <Khối lệnh> cho từng phần tử
của mảng, hay các điều khiển…Người ta thường dùng cấu trúc này để
duyệt nhiều đối tượng điều khiển.
2.6 Thủ tục:
Trong Visual Basic, một thủ tục mà trước khi ta muốn sử dụng nó thì ta phải
định nghĩa nó và ta phải dùng từ khoá “Sub” để khai báo nó.
Private/Public Sub <Tên thủ tục>
<Các câu lệnh>
End Sub <phần tử>
Nếu dùng từ khoá Public, thủ tục có thể được dùng trong bất kì Form nào
trong chương trình.
- Chọn phông (Font).
- Trợ giúp (Help).
- In ấn (Print).
2.7.4 Hộp thoại hiệu chỉnh (Custom Dialog).
Đây là loại hộp đối thoại do người lập trình định nghĩa để tương thích với
yêu cầu nhận thông tin của người sử dụng. Nó có ưu điểm là ta có thể thiết
kế theo ý thích. Trở ngại của nó là khi thi hành từng biểu mẫu thì sẽ sử
dụng tài nguyên hệ thống như bộ nhớ, thời gian CPU. Nếu dùng nhiều hộp
thoại hiệu chỉnh trong ứng dụng có thể mất tài nguyên hệ thống và dễ bị
treo máy.
12
Phần 2 :PHẦN MỀM QUẢN LÝ THU MUA CHÈ
I. MỤC ĐÍCH VÀ NHU CẦU THỰC TẾ CỦA PHẦN MỀM
Hiện nay, các phần mềm đang được sử dụng rộng rãi trong các doanh
nghiệp tư nhân hay các cơ quan nhà nước , nó giúp cho họ dễ dàng quản lýn
được công việc kinh doanh của mình .
Vì vậy phần mềm "Quản lý Thu mua Chè" này được viết ra nhằm giúp
cho công việc thu mua chè có nhiều thuận lợi, chặt chẽ hơn. Nó cũng giúp
cho doanh nghiệp tránh được các thất thoát không đáng có . Nếu như thực
hiện công việc này theo những cách viết tay và tinh toán cổ điển bằng giấy
tờ, sổ sách thì sẽ cần đến rất nhiều nhân lực, vật lực cho việc nhập số liệu,
tính toán, lưu giữ hóa đơn. Và cho dù có đầy đủ nhân lực, vật lực, thì công
việc trên sẽ tiêu tốn một thời gian rất lớn. Khi ta cần một bản báo cáo hay
hóa đơn chi tiết nếu làm bằng thủ công với một đống giấy hóa đơn , báo
cáo thì sẽ rất mất thời gian . Trong khi đấy, ta vẫn không đảm bảo là sẽ
tránh được các sai sót không đáng sảy ra.
Vì vậy, việc áp dụng công nghệ thông tin vào công việc trên là một điều tất
yếu và vô cùng cần thiết . Khi phần mềm “Quản lý thu mua Chè ” xuất hiện
nó sẽ khắc phục được các nhược điểm của cách làm việc cổ điển.
Chính là :
TRÌNH
QL người sử dụng
chương trình
Quản lý thu mua
Chè
Báo báo cáo thu
mua chè
Quản lý công nợ
Người quản trị: Đây là nhóm người có quyền cao nhất. Ngoài
các quyền hạn của nhóm người quản lý thu mua Chè, nhóm
này còn được phép quản lý nhóm người kia (Như : có thể xóa
bỏ người sử dụng “UserName” hay sửa chữa dữ liệu hoặc tạo
mới ra các Username mới ) . In ra các báo cáo tùy vào lựa
chọn của Admnistrator hay khách hàng , cập nhật tiền trong
quỹ ………..
2. Quản lý thu mua Chè:
Đây là chức năng cho phép người quản lý thu mua chè có thể nhập
các thông tin cần thiết liên quan đến các khách đến bán chè cho
doanh nghiệp.
Nó có thể tự động phân loại chè theo trình tự (A , B , C ……) , tính
khối lượng chè , tính tổng số tiền phải trả cho khách hàng , in hóa
đơn và hủy hóa đơn của khách hàng khi không cần thiết đến hóa
đơn đó nữa .
3. Quản lý công nợ:
Chức năng này giúp người quản lý dễ ràng thực hiện công việc thanh
toán các hợp đồng mà doanh nghiệp còn nợ hoặc chưa trả đủ
tiền trong khi thu mua chè vì nó có thể tự động cập nhật những
thông tin chi tiết về ngày tháng thanh tóan và còn nợ hay đã thanh
toán hoàn toàn.
4. Báo cáo thu mua Chè :
3 SoTien Text Số tiền dược trả
4 LanTra Text Lần trả
Bảng 5: Nội dung mua
16
STT Tên trường Kiểu dữ liệu Mô Tả
1 MaHD Text Mã hóa đơn
2 LoaiChe Text Phân loại chè
3 GiaChe Text Giá chè
4 KhoiLuongBD Text Khối lượng ban đầu
5 PhantramChe Text Phần trăm chè
6 TyleNuoc Text Tỷ lệ hao hụt
7 Baobi Text Bao bì
8 KhoiluongSau Text Khối lượng sau
9 Giatri Text giá trị
Bảng 6: OldData
STT Tên trường Kiểu dữ liệu Mô Tả
1 LoaiChe Text Loại chè
2 OldPrice Text Giá chè cũ
3 LastUser Text Người sử dụng cuối
4 LastDay Date/Time Ngày cập nhật cuối
5 LastTyleNuoc Text Tỷ lệ nước cuối
6 YearNow Text Năm hiện tại
7 MaxSTT Text Max stt của bảng Price
Bảng 7: Price
STT Tên trường Kiểu dữ liệu Mô Tả
1 SoTT Text Số thứ tự
2 LoaiChe Text Loại chè
3 Gia Date/Time giá chè
4 NgayCapnhat Text Ngày cập nhật
5 UserName Text Tên người sử dụng
sBorder.Left = 0
i = 0
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
i = i + 1
Dim start
If i = 2 Then
start = Timer
Do While Timer < start + 2
DoEvents
Loop
20
End If
If i = 4 Then
start = Timer
Do While Timer < start + 2
DoEvents
Loop
End If
If i > 4 Then
lblStatus.Caption = "... Ready"
start = Timer
Do While Timer < start + 1
DoEvents
Loop
Timer1.Enabled = False
Unload Me
frmLogin.Show
Exit Sub
End If
RsUser.MoveFirst
Do While Not RsUser.EOF
If LCase(RsUser.Fields(0)) = LCase(txtName.Text) Then
UserExist = True
If LCase(RsUser.Fields(1)) <> LCase(txtPass.Text) Then
MsgboxC "Mật khẩu bạn vừa nhập bị sai . Xin vui lòng nhập lại
mật khẩu !"
txtPass.SetFocus
Exit Sub
Else
If CInt(RsUser.Fields(2)) = 1 Then
frmMainUser.cmdCapNhat.Enabled = True
End If
If CInt(RsUser.Fields(3)) = 1 Then
frmMainUser.cmdNo.Enabled = True
End If
Exit Do
End If
End If
RsUser.MoveNext
Loop
If UserExist = False Then
MsgboxC "Tên truy nhập của bạn hiện không có . Xin vui lòng liên hệ
với ngời quản lý !"
22
Exit Sub
End If
Private Sub Form_Load()
Call CreateControls ' Hµm nµy dïng ®Ó khëi t¹o Controls
End Sub
Public Sub CreateControls()
Call InitTitleBar(Me)
imgList.ListImages.Add , , LoadResPicture("logon", 1)
imgList.ListImages.Add , , LoadResPicture("window", 1)
23
imgList.ListImages.Add , , LoadResPicture("help2", 1)
Set cmdLogOn.Picture = imgList.Overlay(1, 1) 'D¸n Icon len 2
Command Button
Set cmdExit.Picture = imgList.Overlay(2, 2)
Set cmdHelp.Picture = imgList.Overlay(3, 3)
End Sub
3) frmMainUser:
Dim C As Boolean
Private Sub InitForm()
lblDay.Caption = "H«m nay, ngµy " & Day(Now) & ", th¸ng " &
Month(Now) & ", n¨m " & Year(Now)
ani1.LoadFile App.Path & "\animation\daihung1.gif", False
End Sub
Private Sub DisplayNhap()
SetParent frmNhap.hWnd, frMain.hWnd
frmNhap.Show
MoveWindow frmNhap.hWnd, 0, -35, 900, 600, 1
End Sub
Private Sub chameleonButton2_Click()
End
Else
RsUserLog.MoveLast
RsUserLog.Fields(2) = Now
RsUserLog.update
End If
End
End If
End Sub
Private Sub cmdHelp_Click()
25