Sơ đồ 3.5. Mức 1 - Chức năng lờn bỏo cỏo 3.2 Thiết kế
Từ kết quả của quỏ trỡnh phõn tớch, sau khi mụ hỡnh húa thu được cỏc sơ đồ sau. 2.2 Tớnh toỏn Cơ sở dữ liệu yờu cầu bỏo cỏo Ban giỏm đốc 2.1 Truy xuất dữ liệu 3.3 Lờn bỏo cỏo
yờu cầu dữ liệu Dữ liệu kết quả bỏo cỏo kết quả Kết quả tớnh toỏn yờu cầu tớnh toỏn NgayThanhToan
3.2.1 Sơ đồ quan hệ thực thể (ERD)
Sau khi nghiờn cứu về cỏc thực thể và mối quan hệ giữa cỏc thực thể trong hoạt động kinh doanh của cụng ty thu được sơ đồ sau:
Sơ đồ 3.6. Quan hệ thực thể Khỏch hàng Hàng húa Xuất bỏn TenNCC Dia Chi #Ma NCC DVT DonGia # MaHang TenHang Nhõn viờn MaNV Ten NV DiaChi DienThoai NgayThanhToan
3.2.2 Sơ đồ cấu trỳc dữ liệu (DSD)
Sơ đồ 3.7. Cấu trỳc dữ liệu
#Mahang DVT Mahang #SohieuHD Soluong #SoHHD NgayThanhToan MaNV MaKH #SoHHD SoPhieu TenNV #MaNV DiaChi Dongia NgayLap DienThoai TenKH
#MaKH DiaChi DienThoai Tenhang
(Hàng húa)
(Húa đơn chi tiờt)
(Khỏch hàng)
(Húa đơn bỏn hàng)
(Nhõn viờn)
(Phiếu thu khỏch hàng)
3.2.3 Thiết kế cơ sở dữ liệu:
Cơ sở dữ liệu được thiết kế bằng phương phỏp chuyển đổi từ sơ đồ quan hệ thực thể. Mụ tả chi tiết từng bảng cỏc tệp dữ liệu đầu vào.
Bảng 3.1. Danh mục hàng húa
Stt Tờn trường Kiểu Độ rộng Ghi chỳ
1 Mahang Text 10 Mó hàng
2 Tenhang Text 50 Tờn hàng
3 MaNCC Text 10 Mó NCC
4 Donvitinh Text 5 Đơn vị tớnh
5 SoLuong Number LongInteger Số Lượng 6 Dongia Number Decimal Giỏ bỏn
Bảng 3.2. Danh mục khỏch hàng
Stt Tờn trường Kiểu Độ rộng Ghi chỳ
1 MaKH Text 5 Mó KH
2 TenKH Text 45 Tờn KH
3 Diachi Text 45 Địa chỉ
4 Dienthoai Text 10 Điện thoại
Bảng 3.3. Danh mục nhõn viờn
Stt Tờn trường Kiểu Độ rộng Ghi chỳ
1 MaNV Text 7 Mó nhõn viờn
2 TeNV Text 50 Tờn nhõn viờn
3 DiaChi Text 45 Địa chỉ
4 DienThoai Text 10 Điện thoại
Bảng 3.4. Hoỏ đơn bỏn hàng
Stt Tờn trường Kiểu Độ rộng Ghi chỳ
1 SoHHD Text 7 Số hiệu hoỏ đơn
2 MaKH Text 7 Mó khỏch hàng
3 MaNV Text 7 Mó Nhõn viờn
4 Ngaylap Date-time 17 Ngày lập
Stt Tờn trường Kiểu Độ rộng Ghi chỳ
1 SoHHD Text 7 Số hiệu hoỏ đơn
2 Mahang Text 5 Mó hàng hoỏ
3 SoLuong Numberdouble Lượng bỏn
Bảng 3.6. Thanh toỏn với khỏch hàng
Stt Tờn trường Kiểu Độ rộng Ghi chỳ
1 SohieuPT Text 7 Số hiệu
phiếu thu
2 SoHHD Text 7 Mó KH
3 Ngaynhan Date-time Ngày nhận
Thụng bỏo người dựng nhập sai mật khẩu
Kiểm tra mật khẩu
Mối quan hệ giữa cỏc bảng
Sơ đồ 3.8. Mối quan hệ giữa cỏc bảng
Thụng bỏo người dựng nhập sai mật khẩu
Kiểm tra mật khẩu
Kiểm tra hoỏ
3.2.3 Thiết kế giải thuật
3.2.3.1 Thuật toỏn đăng nhập hệ thống
Sơ đồ 3.9. Thuật toỏn đăng nhập hệ thống Bắt đầu Đếm=1 Nhập tờn người dựng và mật khẩu Đếm = Đếm+1 Thụng bỏo người dựng nhập sai mật khẩu Kiểm tra mật khẩu Đếm<=3 Kết thỳc Khởi động và thực hiện chương trỡnh T F F T
Kiểm tra hoỏ
3.2.3.2 Thuật toỏn cập nhật hoỏ đơn
Kiểm tra tớnh hợp lệ của hoỏ đơn và cập nhật đờn khi nào người sử dụng muốn dừng, khụng nhập hoỏ đơn nữa thỡ thoỏt ra.
Sơ đồ 3.10. Thuật toỏn cập nhập hoỏ đơn Bắt đầu
Lưu dữ liệu hoỏ đơn
Cập nhật tiếp Kết thỳc F T T F Nhập dữ liệu của hoỏ đơn
Kiểm tra hoỏ
đơn cú hợp lệ? T Lựa chọn hỡnh thức bỏo cỏo Kiểm tra mốc thời gian?
3.2.3.3 Thuật toỏn xoỏ dữ liệu
Xoỏ bỏ những hoỏ đơn khụng hợp lệ ra khỏi CSDL.
Sơ đồ 3.11. Thuật toỏn xoỏ dữ liệu Bắt đầu Kết thỳc Chọn bản ghi cần xoỏ Cú xoỏ bản ghi hiện hành Cú xoỏ tiếp ko? Chắc chắn xoỏ? Nhấn nỳt xoỏ Hiện thụng bỏo Khụng xoỏ bản ghi hiện hành T F F T Lựa chọn hỡnh thức bỏo cỏo Kiểm tra mốc thời gian?
3.2.3.4 Thuật toỏn lập bỏo cỏo
Sơ đồ 3.12. Thuật toỏn lập bỏo cỏo Bắt đầu
Kết thỳc
Lựa chọn hỡnh thức bỏo cỏo
Nhập mốc thời gian
Tiến hành in bỏo cỏo Nhấn nỳt in bỏo cỏo
Thụng bỏo lỗi Kiểm tra mốc thời
gian? F
3.2.3.5 Thiết kế kiến trỳc hệ thống.
Sơ đồ 3.13. Thiết kế kiến trỳc hệ thống Thanh toỏn với KH Hệ thống Đăng nhập lại Danh mục Danh mục KH Danh mục HH Cập nhật Húa đơn bỏn hàng DT theo Khỏch hàng DT theoHàng bỏn DT theo Nhõn viờn Lập bỏo cỏo Kết thỳc Danh mục NV Quản lý bỏn hàng
3.3 Một số giao diện chớnh3.3.1 Form chớnh 3.3.1 Form chớnh
3.3.8 Cỏc form bỏo cỏo
3.3.81 Bỏo cỏo doanh thu theo khỏch hàng
3.3.8.3 Bỏo cỏo doanh thu theo nhõn viờn
3.4 Một số đoạn code tiờu biểu:3.4.1 Code Form bỏo cỏo: 3.4.1 Code Form bỏo cỏo:
Private Sub cmdin_Click() 'Bat dau
sql = "select ct.sohhd,ct.MaHang,TenHang,ct.SoLuong,DonGia,ngaylap from DMHangHoa as DM,HoaDonBanHang as HD,ChiTietHoaDon as ct where ct.mahang=dm.mahang and hd.sohhd=ct.sohhd and ct.mahang='" & DBCMa.Text & "'" & _
" and datediff('d',NgayLap,date()) <" & DateDiff("d", TuNgay, Date) & _
" and datediff('d',NgayLap,date()) >" & DateDiff("d", DenNgay, Date) Set myrs = mydb.OpenRecordset(sql)
If myrs.RecordCount = 0 Then
If MsgBox("Mặt hàng : " & txtten & " khụng được bỏn trong khoảng thời gian trờn. Bạn cú muốn tiếp tục nữa khụng?", vbCritical + vbQuestion + vbYesNo, "Bỏo lỗi") = vbYes Then
DBCMa.SetFocus Else
Unload Me End If
Else
'Doi dinh dang month -> day truoc khi in 'Tu ngay
Ngay = Day(TuNgay) Thang = Month(TuNgay) Nam = Year(TuNgay) If Day(TuNgay) < 10 Then
Ngay = 0 & Day(TuNgay) End If
If Month(TuNgay) < 10 Then Thang = 0 & Month(TuNgay) End If
ngay1 = Ngay & "/" & Thang & "/" & Nam 'Den ngay
Ngay = Day(DenNgay) Thang = Month(DenNgay) Nam = Year(DenNgay) If Day(DenNgay) < 10 Then Ngay = 0 & Day(DenNgay) End If
If Month(DenNgay) < 10 Then Thang = 0 & Month(DenNgay) End If
ngay2 = Ngay & "/" & Thang & "/" & Nam 'Bat dau in
rptbcdshb.ReportFileName = App.Path & "\reports\bcdshb.rpt" rptbcdshb.SetTablePrivateData 0, 3, myrs
rptbcdshb.Formulas(1) = "Tenhang='" & txtten & "'" rptbcdshb.Formulas(2) = "TuNgay='" & ngay1 & "'" rptbcdshb.Formulas(3) = "DenNgay='" & ngay2 & "'" rptbcdshb.PrintReport
End If End Sub
Private Sub cmdThoat_Click() Unload Me
End Sub
Private Sub DBCMa_Click(Area As Integer)
sql = "select tenhang from DmHanghoa where mahang='" & DBCMa.BoundText & "'"
Set myrs = mydb.OpenRecordset(sql) If Not myrs.EOF Then
txtten = myrs!TenHang End If
myrs.Close End Sub
Private Sub DenNgay_lostfocus() If IsDate(DenNgay) = False Then
If MsgBox("Ngày(thỏng) khụng hợp lệ, xin vui lũng nhập lại", vbCritical + vbQuestion + vbOKOnly, "Bỏo lỗi") = vbOK Then
DenNgay.SetFocus End If
ElseIf IsNull(DenNgay) = True Then
If MsgBox("Ngày tỡm kiếm khụng được bỏ trống, xin vui lũng nhập vào.", vbCritical + vbQuestion + vbOKOnly, "Bỏo lỗi") = vbOK Then
DenNgay.SetFocus End If
End Sub
Private Sub Form_Load()
Data1.DatabaseName = App.Path & "\data\FM.mdb" DenNgay.Enabled = False
End Sub
Private Sub TuNgay_lostfocus() If IsDate(TuNgay) = False Then
If MsgBox("Ngày(thỏng) khụng hợp lệ, xin vui lũng nhập lại.", vbCritical + vbQuestion + vbOKOnly, "Bỏo lỗi") = vbOK Then
TuNgay.SetFocus End If
ElseIf IsNull(TuNgay) = True Then
If MsgBox("Ngày tỡm kiếm khụng được bỏ trống, xin vui lũng nhập vào.", vbCritical + vbQuestion + vbOKOnly, "Bỏo lỗi") = vbOK Then
TuNgay.SetFocus End If Else DenNgay.Enabled = True DenNgay.SetFocus End If End Sub
3.4.2 Code form hàng húa
Private Sub cmdadd_Click() them = True
sua = False Data1.Recordset.AddNew cmdadd.Enabled = False cmdedit.Enabled = False cmddel.Enabled = False cmdupdate.Enabled = True txtma.Enabled = True txtten.Enabled = True txtdg.Enabled = True txtdvt.Enabled = True txtsl.Enabled = True txtma.SetFocus End Sub
Private Sub cmddel_Click()
Connection.OpenData ("ChiTietHoaDon") Do Until rs.EOF
If txtma.Text = rs!MaHang Then
MsgBox ("Bạn khụng thể xoỏ được!") Exit Sub
End If
rs.MoveNext Loop
Connection.Closedata
Xacnhan = MsgBox("Bạn cú thực sự muốn xúa khụng?", vbYesNo + vbDefaultButton2, "Xỏc nhận xoỏ!")
Data1.Recordset.Delete Data1.Recordset.MoveLast End If
End Sub
Private Sub cmdedit_Click() sua = True them = False Data1.Recordset.Edit cmdedit.Enabled = False cmdadd.Enabled = False cmddel.Enabled = False cmdupdate.Enabled = True txtma.Enabled = True txtten.Enabled = True txtdvt.Enabled = True txtdg.Enabled = True txtsl.Enabled = True txtma.SetFocus End Sub
Private Sub cmdend_Click() Unload frmDMHangHoa MDIFormmain.Show End Sub
Private Sub cmdKiemTra_Click() Dim sql As String
sql = "select * from DMHangHoa where soluong<=" & TxtGioiHan Data1.RecordSource = sql
Data1.Refresh End Sub
Private Sub cmdTim_Click()
sql = "select * from DMHangHoa where MaHang like '" & txttim & "*'" & _ " or TenHang like '" & txttim & "*'" & ""
Data1.RecordSource = sql Data1.Refresh
End Sub
Private Sub cmdupdate_Click() cmdedit.Enabled = True cmdadd.Enabled = True cmddel.Enabled = True cmdupdate.Enabled = False txtma.Enabled = False txtten.Enabled = False txtsl.Enabled = False txtdg.Enabled = False txtdvt.Enabled = False Data1.Recordset.Update Data1.Refresh End Sub
Private Sub Command1_Click() Unload Me
frmDMHangHoa.Show 1 End Sub
Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then
SendKeys "{TAB}" KeyAscii = 0
End If End Sub
Private Sub Form_Load()
Data1.DatabaseName = App.Path & "\data\FM.mdb" cmdupdate.Enabled = False txtma.Enabled = False txtten.Enabled = False txtdg.Enabled = False txtdvt.Enabled = False txtsl.Enabled = False End Sub
Private Sub txtma_LostFocus() Dim dem1 As Integer
If sua = True Then If txtma = "" Then
If MsgBox("Bạn chưa nhập mó hàng!", vbOKOnly + vbCritical + vbQuestion, "Xỏc nhận") = vbOK Then
txtma.SetFocus
cmdupdate.Enabled = True End If
End If
If txtma <> Data1.Recordset.Fields("MaHang") Then
sql = "select count(MaHang) as dem from DMHangHoa where MaHang='" & txtma & "'"
Set myrs = mydb.OpenRecordset(sql) myrs.MoveFirst
dem1 = myrs!dem myrs.Close
If dem1 > 0 Then
If MsgBox("Mó vừa nhập đó tồn tại, xin vui lũng nhập mó mới!", vbOKOnly + vbCritical + vbQuestion, "Chỳ ý") = vbOK Then
txtma.SetFocus cmdupdate.Enabled = True cmddel.Enabled = False cmdedit.Enabled = False cmdadd.Enabled = False End If End If End If End If
If them = True Then If txtma = "" Then
If MsgBox("Bạn chưa nhập mó hàng!", vbOKOnly + vbCritical + vbQuestion, "Xỏc nhận") = vbOK Then
txtma.SetFocus
cmdupdate.Enabled = True End If
End If
sql = "select MaHang from DMHangHoa where MaHang='" & txtma & "'" Set myrs = mydb.OpenRecordset(sql)
If myrs.RecordCount > 0 Then dem1 = 1 Else dem1 = 0 End If myrs.Close If dem1 = 1 Then
If MsgBox("Mó vừa nhập đó tồn tại, xin vui lũng nhập mó mới!", vbOKOnly + vbCritical + vbQuestion, "Chỳ ý") = vbOK Then
txtma.SetFocus cmdupdate.Enabled = True cmddel.Enabled = False cmdedit.Enabled = False cmdadd.Enabled = False End If End If End If End Sub
Private Sub TxtTim_Change() If chkhienthi = 1 Then
sql = "select * from DMHangHoa where TenHang like '" & txttim & "*'" & _ " or MaHang like '" & txttim & "*'" & ""
Data1.RecordSource = sql Data1.Refresh
End If End Sub
3.4.3 Code form login
Dim dem As Integer Dim ten As String Dim mk As String
Private Sub cmdend_Click() End
End Sub
Private Sub cmdok_Click() ten = txtten.Text
mk = txtmk.Text
sql = "select * from DangNhap where Username='" & ten & "' and Password='" & mk & "'"
Set myrs = mydb.OpenRecordset(sql) If myrs.AbsolutePosition = 0 Then Unload frmlogin
MDIFormmain.Show Else
dem = dem + 1 If dem >= 3 Then
MsgBox "Bạn đã đăng nhập sai quá 3 lần. Chơng trình tự động kết thúc" End
Else
MsgBox "Tên hoặc mật khẩu không đúng.Xin vui lòng nhập lại!" txtten.SetFocus
End If myrs.Close End If End Sub
Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then
SendKeys "{TAB}" KeyAscii = 0
End If End Sub
Private Sub Form_Load() dem = 0
Set myrs = mydb.OpenRecordset("Ghinhomatkhau") If myrs.RecordCount > 0 Then
myrs.MoveLast
txtten = myrs!TenTruyCap txtmk = myrs!MatKhau
txtten = "" txtmk = "" End If myrs.Close End Sub
Private Sub Form_Unload(Cancel As Integer) If chklogin.Value = 1 Then
sql = "insert into Ghinhomatkhau values('" & ten & "','" & mk & "')" mydb.Execute sql
Else
sql = "delete * from Ghinhomatkhau" mydb.Execute sql
End If End Sub
Kết luận
Việc ứng dụng cụng nghệ thụng tin trong quản lý thực sự là rất cần thiết để cỏc doanh nghiệp tăng cường ưu thế cạnh tranh. Phần mềm quản lý hoạt động kinh doanh đú làm thay đổi rất nhiều hoạt động của bộ phận được sử dụng theo hướng tiện dụng hơn, xử lý cỏc nghiệp vụ nhanh chỳng hơn. Với chức năng phõn quyền người sử dụng, mỗi nhõn viờn sẽ được cấp một tài khoản đăng nhập tạo điều kiờn dễ dàng quản lý húa đơn lập theo nhõn viờn. Xõy dựng được cỏc danh mục tương ứng với cỏc thực thể xưởng sản xuất, khỏch hàng…
Em hy vọng phần mềm này cú thể giải quyết được những khú khăn và vướng mắc trong cụng tỏc quản lý bỏn hàng của cụng ty và giảm được những chi phớ phỏt sinh khụng đỏng cú, nõng cao hiệu quả nguồn nhõn lực.
Em xin gửi lời cảm ơn tới Phũng Bỏn Hàng Cụng Ty Việt Nam Stanley đó nhiệt tỡnh giỳp đỡ em trong quỏ trỡnh tỡm hiểu và thiết kế phần mềm.. Xin gửi lời cảm ơn đến Giảng Viờn Bựi Thế Ngũ, thầy đó giỳp đỡ và hướng dẫn tận tỡnh, cung cấp nhiều kinh nghiệm quý bỏu trong cụng tỏc để em cú thể hoàn thành chuyờn đề này. Tuy vậy do thời gian cú hạn và hạn chế của người thực hiện cú thể đề tài cú nhiều thiếu sút, mong được cỏc thầy gúp ý cho chuyờn đề được thực hiện thành cụng !
Tài liệu tham khảo
Giỏo trỡnh “Hệ thống thụng tin quản lý” xuất bản năm 2000 nhà xuất bản Thống Kờ của cỏc tỏc giả: T.S Trương Văn Tỳ và T.S Trần Thị Song Minh.
Bài giảng mụn Cụng Nghệ Phần Mềm của PGS.TS Hàn Viết Thuận.. Bài giảng mụn Hệ Thống Thụng Tin Quản Lý của TS Trương Văn Tỳ. Bài giảng mụn Lập Trỡnh của Th.S Trỡnh Hoài Sơn.