1. Trang chủ
  2. » Giáo Dục - Đào Tạo

dự án quản lý việc mua bán phụ kiện thức ăn và ký gửi thú cưng aka huế

165 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Dự Án Quản Lý Việc Mua Bán Phụ Kiện – Thức Ăn Và Ký Gửi Thú Cưng Aka -Huế
Tác giả Cao Xuân Phước, Nguyễn Vũ Nhật Quang, Văn Đình Nhật, Đỗ Nhật Quang, Mai Công Quang, Nguyễn Viết Nam, Nguyễn Nhật Minh
Người hướng dẫn Lê Văn Tường Lân
Trường học Đại Học Huế
Chuyên ngành Công Nghệ Thông Tin
Thể loại Kiểm Định Phần Mềm
Năm xuất bản 2023-2024.1
Thành phố Huế
Định dạng
Số trang 165
Dung lượng 4,5 MB

Cấu trúc

  • PHẦN 1: QUẢN LÝ NHÓM (4)
    • A) Đánh giá quá trình làm việc nhóm (4)
      • I) Thành viên (4)
      • II) Quản lý các tuần (5)
        • 1) Tuần 1 (5)
        • 2) Tuần 2 (5)
        • 3) Tuần 3 (6)
        • 4) Tuần 4 (6)
        • 5) Tuần 5 (7)
    • C) Tổng kết (8)
  • PHẦN 2: NỘI DUNG (8)
    • A) Tài liệu phác thảo dự án (8)
      • I. TÀI LIỆU YÊU CẦU (8)
        • 1) Yêu cầu nghiệp vụ của phần mềm (8)
        • 2) Chi tiết yêu cầu các chức năng (9)
        • 3) Yêu cầu của người sử dụng (10)
        • 1) Tài Liệu Mô Tả UC và Đặt Tả bằng tài liệu AD (11)
        • 3) Biểu Đồ Tuần Tự (Sequence Diagram) (30)
        • 4) Tài Liệu Mô Tả Về Dữ Liệu (46)
        • 5) Tài Liệu Thiết Kế Giao Diện (52)
      • III) CÀI ĐẶT MỘT SỐ CHỨC NĂNG CHO DỰ ÁN (60)
      • IV). MÃ NGUỒN HAI CHỨC NĂNG KIỂM THỬ (90)
        • 1) Chức năng thêm nhân viên (90)
        • 2) Chức năng ký gửi (100)
    • B) Kiểm thử hộp đen (121)
      • I) CHỨC NĂNG KÝ GỬI (121)
        • 1) Phân lớp tương đương (121)
        • 2) Phân tích giá trị biên (124)
        • 3) Đồ thị nguyên nhân kết quả (124)
      • II) CHỨC NĂNG THÊM NHÂN VIÊN (131)
    • C) Kiểm thử hộp trắng (142)
      • 1) Xác định các nút (142)
      • 2) Đồ thị đường diễn tiến (143)
      • 3) Xác định số đường kiểm thử (143)
      • 4) Xác định TestCase (144)
      • 3) Xác định số đường kiểm thử V(G) (149)
      • III) Các hàm phụ trợ (150)
        • 1) Kiểm tra ngày (150)
        • 2) Hàm lưu trữ (152)
        • 3) Kiểm tra mã nhân viên (154)
        • 4) Hiển thị (156)
    • D) Kiểm thử Module (158)
      • I) Chức năng ký gửi (158)
      • II) Chức năng thêm nhân viên (160)

Nội dung

2 Chi tiết yêu cầu các chức nănga Quản lý hàng hoá - Mỗi loại hàng hóa sẽ được ràng buộc bởi các thông tin chính: Mã Hàng, Tên Hàng, Nhà Cung Cấp, Số Lượng.. - Hàng được nhập kho được rà

QUẢN LÝ NHÓM

Đánh giá quá trình làm việc nhóm

II) Quản lý các tuần

- Thời gian: Từ ngày: 10/07/2023 đến ngày 16/07/2023

- Nội dung: Thảo luận tìm đề tài, phân chia nhóm theo từng chức năng với đề tài cần kiểm thử Thực hiện trao đổi thảo luận, đọc, hiểu tài liệu thiết kế phục vụ cho việc kiểm thử hộp đen.

Stt Họ tên Đánh giá

- Thời gian: Từ ngày: 17/07/2023 đến ngày 23/07/2023

- Trao đổi làm bài tập nhằm hoàn thành kiểm thử hộp đen.- Lên đồ thị nguyên nhân kết quả, bảng quyết định và các trường hợp kiểm thử của chức năng ký gửi và thêm nhân viên.

Stt Họ tên Đánh giá

- Thời gian: Từ ngày: 24/07/2023 đến ngày 30/07/2023

- Nội dung: Hoàn thành kiểm thử hộp đen, tiến hành đánh giá

Kiểm thử hộp trắng thực hiện tìm source code của chức năng, xác định các nút, đồ thị đường diễn tiến, xác định trường hợp kiểm thử và xác định testcase.

Stt Họ tên Đánh giá

- Thời gian: Từ ngày: 31/07/2023 đến ngày 6/08/2023

- Nội dung: Hoàn thành kiểm thử hộp trắng, tổ chức ôn luyện cho kỳ thi giữa kỳ, chuẩn bị kiến thức làm kiểm thử module

Stt Họ tên Đánh giá

- Thời gian: Từ ngày: 1/08/2023 đến ngày 9/08/2023

- Nội dung: Hoàn thành kiểm thử module của 2 chức năng chính và các hàm phụ thuộc.

Stt Họ tên Đánh giá

Tổng kết

Stt Họ tên Đánh giá

NỘI DUNG

Tài liệu phác thảo dự án

1) Yêu cầu nghiệp vụ của phần mềm

Hệ thống chức năng phần mềm bao gồm các phần:

- Quản lý việc nhận ký gửi

2) Chi tiết yêu cầu các chức năng a) Quản lý hàng hoá

- Mỗi loại hàng hóa sẽ được ràng buộc bởi các thông tin chính: Mã Hàng, Tên Hàng, Nhà Cung Cấp, Số Lượng.

- Ngoài ra còn có thể có thêm Loại Hàng, Đơn vị,… tuỳ thuộc hàng hoá

- Thực hiện thêm mới khi nhập sản phẩm, Thay Đổi Bổ Sung cho một loại hàng hoá nào đó, Xoá thông tin hàng hóa khi có lỗi sản phẩm hay gặp sự cố sản phẩm… b) Quản lý nhập hàng

- Hàng nhập từ các công ty.

- Đặt hàng qua điện thoại hoặc Gmail, sau khi thanh toán tiền qua thẻ ngân hàng thì sẽ được nhân viên công ty giao đến shop Shop có nhiệm vụ kiểm tra hàng rồi nhập kho.

- Hàng được nhập kho được ràng buộc với các thông tin: Tên Nhà Cung Cấp, Ngày Nhập, Số Lượng, Giá Thành, Nguồn Gốc, Mã Nhập Hàng, Gói Hàng, Mã Chi Tiết Nhập

- Có các chức năng thêm/xóa/sửa phiếu nhập đó c) Quản lý nhà cung cấp

- Ràng buộc bởi các thông tin: Mã NCC, Tên NCC, Địa Chỉ, Số TK, Liên Hệ

- Các tính năng hệ thống:

+ Thêm mới NCC: Khi làm hợp đồng nhập hàng từ công ty mới

+ Sửa thông tin NCC: Khi nhập sai hoặc một vài NCC thay đổi thông tin + Xóa NCC: Khi không hợp tác nhập hàng từ NCC hoặc sai thông tin NCC. e) Quản lý bán hàng

- Sau khi khách hàng đặt mua sản phẩm thì sẽ lập hoá đơn (2 hoá đơn – 1 cho khách – 1 giữ lại) Sau khi thanh toán đủ tiền thì sẽ giao sản phẩm cho Khách Hàng

- Ràng buộc các sản phẩm khách hàng chọn phải còn hàng, Khách Hàng phải thanh toán Tiền Mặt hoặc chuyển khoản cho Shop rồi mới nhận sản phẩm.

- Hoá đơn có các thông tin: Mã HĐ, Ngày Lập, Tổng Giá, Chi Tiết hoá đơn có các thông tin hàng hoá,… ->Đại loại như siêu thị f) Quản lý Ký gửi và Chăm sóc

- Là các dịch vụ của shop, thích hợp với các “SEN” không có nhiều thời gian với “BOSS” thì có thể đến shop ký gửi nhờ chăm sóc trong thời gian ngắn

- Các Ràng buộc Chính về thông tin Chủ khi đến gửi “BOSS”: Tên SEN,

CMNN/CCCN, Địa Chỉ, SĐT, Thông tin của BOSS

+ Ràng buộc về thông tin của BOSS: Tên, Cân Nặng, Giấy tờ tiêm chủng.

- Sau khi Lấy thông tin xong thì “SEN” chọn chuồng cho “BOSS” và thống nhất giá COMBO duy nhất.

- Ký gửi có ngày gửi ngày trả

- Có cả tên nhân viên chăm sóc BOSS.

- Sau khi hoàn tất sẽ có 2 phiếu Gửi giống nhau với các ràng buộc thông tin: Tên BOSS,Tên SEN, số chuồng, ghi chú.

+Ràng buộc: Sau này nhận BOSS thì SEN phải đưa shop phiếu gửi BOSS.

- Chuồng sẽ được ràng buộc các thông tin: Mã chuồng, Tên chuồng, Diện Tích, các trạng thái Có/Chưa Có pet.

- Đương nhiên có các chứng năng Thêm/Sửa/Xóa khi ký gửi cho khách/thay đổi thông tin/xóa thông tin hoặc đã xong ngày ký gửi g) Kiểm Kho

- Chủ hoặc nhân viên kiểm tra sản phẩm trong kho để đặt hàng mới

+ Ràng buộc: số lượng sản phẩm < 5 Thì cần hiển thị cần nhập hàng.

- Gồm các báo cáo theo Ngày/Tuần/Tháng/Năm về doanh thu, hàng hoá,… h) Quản Lý nhân viên

- Nhân Viên nhận lương theo tháng.

+ Nếu nghỉ ca nào sẽ trừ ca đó

+ Trừ lương nếu vi phạm hoặc làm thất thoát

+ Thưởng sẽ tuỳ Chủ shop.

- Ràng buộc về mặt thông tin: Mã NV, Tên NV, CMND/CCCN, Địa Chỉ, SĐT

- Các thủ tục: Lưu/Sửa/Xoá nhân viên.

+ Lưu: tạo mới nhân viên, nhập thông tin rồi lưu lại

+ Sửa: thay đổi thông tin nhân viên

+ Xoá thông tin nhân viên khỏi hệ thống (có thể nhân viên nghỉ làm…)

=>Có thể chứa các chức năng khác (các phần chức năng nhỏ hơn) không theo tài liệu yêu cầu này nhưng vẫn phù hợp hỗ trợ cho phần mềm và các chức năng chính miễn sao nó giúp cho shop một phần nào đó chuyển đổi số (***) Đó là sự sáng tạo và kinh nghiệm từng trải của các bạn.

3) Yêu cầu của người sử dụng

- PM Thân thiện dễ sử dụng

- Câu từ dùng trong PM ngắn gọn rõ ràng

- Dùng ngôn ngữ chuyên ngành và từ ngữ toàn dân

- Rõ ràng, gọn không rườm rà quá hoa hoè

- Giao diện thân thiện dễ dùng.

II TÀI LIỆU PHÂN TÍCH VÀ THIẾT KẾ GIAO DIỆN

1) Tài Liệu Mô Tả UC và Đặt Tả bằng tài liệu AD

1.2.4) Quản Lý Báo Cáo Thống Kê

1.2.5) Quản Lý Ký Gửi và Chăm Sóc

✔ Tên trường hợp sử dụng

+ NHẬP HÀNG cho phép cửa hàng nhập thêm các loại hàng hóa cho chó, mèo từ các nhà cung cấp.

✔ Actor : Chủ shop, Nhà cung cấp.

+ Nhà cung cấp gởi hàng tới, chủ cửa hàng sẽ thực hiện các công việc liên quan đến NHẬP HÀNG trong gói QUẢN LÝ NHẬP HÀNG.

+ Khi nhà cung cấp gởi hàng đến Chủ cửa hàng sẽ thực hiện công việc kiểm hàng và thanh toán.

[ngoại lệ] Mặt hàng không đảm bảo về số lượng hoặc chất lượng.

+ Chủ cửa hàng sẽ thông báo lại cho nhà cung cấp về tình trạng hàng hóa và yêu cầu lại mặt hàng khác hoặc bổ sung thêm số lượng.

[Ngoại lệ] Nhà cung cấp mới chưa được đăng kí.

[Ngoại lệ] Hàng hóa mới chưa được đăng kí.

Mặt hàng không đảm bảo về số lượng hoặc chất lượng

+ Nếu hàng nhà cung cấp giao đến không đảm bảo chất lượng sẽ từ chối nhận hàng.

+ Nếu nhà cung cấp giao hàng không đủ số lượng cửa hàng yêu cầu, sẽ yêu cầu nhà cung cấp bổ sung đủ số lượng hàng theo yêu cầu.

+ Đăng ký nhà cung cấp mới.

+ Đăng ký mặt hàng mới.

✔ Cách thoát khỏi trường hợp sử dụng

+ Sau khi hoàn tất việc cập nhật thông tin hàng hóa cho nhà cung cấp, chủ cửa hàng sẽ thực hiện thoát ra khỏi phần mềm trên giao diện Form NHẬP HÀNG.

✔ Các điều kiện đặc biệt

+ Chủ cửa hàng phải có mặt tại cửa hàng lúc nhà cung cấp gởi hàng tới.

+ Sau khi nhập hàng xong phải tiến hành cập nhật lại các mặt hàng.

*Biểu Đồ Hoạt Động AD

✔ Tên trường hợp sử dụng

+ Cho phép khách hàng mua đồ theo nhu cầu của mình, nhân viên cửa hàng sẽ đáp ứng yêu cầu của khách hàng.

✔ Actor : Khách hàng, Chủ shop, Nhân viên.

+ Khách hàng yêu cầu mua đồ tại cửa hàng, nhân viên quản lý việc bán hàng sẽ thực hiện chức năng bán hàng cho khách.

+ Khách hàng nêu thông tin loại hàng mà mình muốn mua, với nhân viên bán hàng Nhân viên sẽ thực hiện chức năng bán hàng của mình.

[Ngoại lệ] loại phụ kiện mà khách hàng yêu cầu không có trong cửa hàng hoặc hết hàng

+ Nhân viên bán hàng ghi lại yêu của khách hàng, cho khách hàng xem hàng theo yêu cầu, lập hóa đơn, in hóa đơn và thanh toán tiền.

+ Nhân viên bán hàng cập nhật lại thông tin hàng hóa.

[Ngoại lệ] loại sản phẩm mà khách hàng yêu cầu không đủ số lượng

+ Nếu khách hàng có nhu cầu đặt hàng, nhân viên bán hàng sẽ lập hóa đơn đặt hàng cho khách, liên hệ tới nhà cung cấp Nhân viên bán hàng sẽ gửi thông tin đến nhân viên phụ trách nhập hàng để cập nhật lại thông tin hàng cần nhập.

Phụ kiện mà khách hàng yêu cầu không có trong cửa hàng

+ Nhân viên bán hàng sẽ thông báo cho khách hàng và tư vấn cho khách hàng một số mặt hàng khác.

Phụ kiện khách yêu cầu đã hết hoặc không đủ số lượng

+ Nhân viên sẽ thông báo cho khách hàng và hỏi khách hàng có muốn mua đặt mua các sản phẩm khác hay không.

✔ Cách thoát khỏi trường hợp sử dụng:

+ Sau khi đã thực hiện các yêu cầu của khách hàng, lập hóa đơn, in hóa đơn và thanh toán, nhân viên bán hàng sẽ chọn thoát ra khỏi phần mềm trên giao diện Form BÁN HÀNG.

✔ Các điều kiện đặc biệt

+ Số lượng của hàng mà được khách hàng lựa chọn phải bằng hoặc lớn hơn số lượng yêu cầu của khách hàng.

+ Sau khi thanh toán, cập nhật thông tin hóa đơn, in hóa đơn và giao hóa đơn lại cho khách hàng.

*Biểu Đồ Hoạt Động AD

* Tên trường hợp sử dụng:

NHÂN VIÊN cho phép nhập thêm thông tin nhân viên mới

✔ Actor : Chủ shop, Nhân viên

Khi có nhân viên mới, quản lý thực hiện chức năng cập nhật thông tin nhân viên mới trong gói Nhân viên

Nhà quản lý truy cập danh sách nhân viên, kiểm tra thông tin nhân viên, cập nhật và lưu thông tin nhân viên mới

Bước 1:Truy cập danh sach nhân viên.

Bước 2: Nhấn Thêm nhân viên

Bước 3: Kiểm tra thông tin nhân viên

Bước 4: Cập nhật thông tin nhân viên

Bước 5: Lưu thông tin nhân viên

+Thông tin nhân viên không hợp lệ.

+ Nếu thông tin nhập vào không hợp lệ thì kick vào ô báo lỗi rồi nhập lại.

✔ Cách thoát khỏi trường hợp sử dụng

+ Sau khi hoàn tất việc cập nhật thông tin Nhân viên dùng bấm “Thoát” để thoát khỏi giao diện Quản lý nhân viên.

✔ Các điều kiện đặc biệt

+ Người dùng phải thực hiện đăng nhập thành công.

1.3.4) Quản lý báo cáo thống kê:

✔ Tên trường hợp sử dụng

+ Quản lý báo cáo thống kê.

+ NHẬP HÀNG cho phép cửa hàng xem,cập nhật,báo cáo, thống kê về doanh thu ,Hàng nhập và hàng bán trong 1 khoảng thời gian nhất định

✔ Actor : Chủ shop, Nhân viên

Khi muốn thống kê doanh thu, Chủ Shop và Nhân Viên có thể truy cập vào gói THỐNG KÊ để xem đầy đủ dữ liệu đã được thống kê của cửa hàng.

+ Bước 1 : Chủ shop hoặc nhân viên gửi yêu cầu thống kê

+ Bước 2 : Hệ thống hiển thị giao diện thống kê

+ Bước 3 : Chủ shop hoặc nhân viên chọn loại hình thống kê (Thống kê doanh thu, thống kê hàng nhập, thống kê bán hàng)

+ Bước 4 : Chủ shop hoặc nhân viên chọn hình thức thống kê(Thống kê theo ngày, thống kê theo tháng, thống kê theo năm)

[Ngoại lệ] Người dùng Đăng nhập không thành công.

+Không thể thực hiện thống kê.

+ Bước 1 Nếu người dùng đăng nhập không thành công thì hệ thống sẽ yêu cầu đăng nhập lại hoặc nhấn vào quên mật khẩu.

+ Bước 2 : Nhập thông tin để lấy mã xác minh

✔ Cách thoát khỏi trường hợp sử dụng

+ Sau khi hoàn tất việc xem xét báo cáo thống kê Người dùng bấm “Thoát” để thoát khỏi giao diện Thống Kê.

✔ Các điều kiện đặc biệt

+ Người dùng phải thực hiện đăng nhập thành công.

1.3.5) Quản lý Kí Gửi Và Chăm Sóc:

✔ Tên trường hợp sử dụng

+Quản lý kí gửi và chăm sóc.

+Quản lý tất cả các hoạt động liên quan đến việc kí gửi , chăm sóc.

✔ Actor : Khách hàng, Chủ shop, Nhân viên

+ Khi có yêu cầu kí gửi thú cưng của khách hàng.

+ Bước 1 : Khách yêu cầu kí gửi.

+ Bước 2 : Nhân viên kiểm tra tình trạng của thú cưng

+ Bước 3 : Nhân viên nhập thông tin thú cưng.

+ Bước 4 : Khách hàng chọn loại dịch vụ ( theo combo hoặc dịch vụ bình thường) + Bước 5 : Khách hàng chọn chuồng.

+ Bước 6 : Nhân viên nhập thông tin chuồng.

+ Bước 7 : Nhân viên nhập thông tin khách hàng

+ Bước 8 : Xuất phiếu kí gửi

[Ngoại lệ] Tình trạng thú cưng không đủ tiêu chuẩn về sức khỏe

+Không thể thực hiện kí gửi.

+Shop không còn chuôfng trống.

+Thức ăn phù hợp cho thú cưng thiếu

Nếu tình trạng sức khỏe của thú cưng không đảm bảo để có thể gửi ký gửi, khách hàng có thể mang thú cưng về hoặc ký cam kết miễn trừ trách nhiệm từ phía cửa hàng đối với bất kỳ tình trạng xấu đi của thú cưng nếu vẫn muốn tiến hành ký gửi.

+ Nếu thức ăn phù hợp cho thú cưng thiếu shop sẽ thực hiện liên hệ với nhà cung cấp để cung cấp thêm thức ăn

✔ Cách thoát khỏi trường hợp sử dụng

+ Sau khi hoàn tất việc xem xét báo cáo thống kê Người dùng bấm “Thoát” để thoát khỏi giao diện Kí Gửi.

✔ Các điều kiện đặc biệt

+ Thú cưng đủ tiêu chuẩn về sức khỏe

+ Shop còn chuồng trống, thức ăn

+Khách phải mang theo đúng phiếu kí gửi khi nhận lại thú cưng.

✔ Tên trường hợp sử dụng

+ Cho phép Nhân viên nhập thêm thông tin khách hàng đã đến mua hàng hoặc sữ dụng dịch vụ của shop.

✔ Actor : Khách hàng, Chủ shop, Nhân viên

+ Nhập thêm thông tin khách hàng.

+ Bước 1: Nhân viên yêu cầu nhập thông tin khách hàng.

+ Bước 2 : Hiển thị giao diện thêm thông tin khách hàng.

+ Bước 3 : Kiểm tra thông tin khách hàng.

[ngoại lệ] Ở bước 3 nếu thông tin khách hàng đã tồn tại thì báo khách hàng đã tồn tại.

+Thông tin nhập vào không hợp lệ.

+ Khách hàng đã tồn tại thì nhấn thoát.

+ Nếu thông tin nhập vào không hợp lệ thì kick vào ô báo lỗi rồi nhập lại.

✔ Cách thoát khỏi trường hợp sử dụng

+ Sau khi hoàn tất việc them thông tinNgười dùng bấm “Thoát” để thoát khỏi giao diện Quản lý nhân viên.

✔ Các điều kiện đặc biệt

+ Người dùng phải thực hiện đăng nhập thành công.

3) Biểu Đồ Tuần Tự (Sequence Diagram)

13 Xem Danh Sách Nhân Viên

23 Xem Danh Sách Khách Hàng

28 In Phiếu Thống Kê Báo Cáo

4) Tài Liệu Mô Tả Về Dữ Liệu a) Biểu đồ lớp b) Thiết kế trên SQL c) Chi tiết

5) Tài Liệu Thiết Kế Giao Diện

3.Thệ Thống-Thông Tin Tài Khoản

III) CÀI ĐẶT MỘT SỐ CHỨC NĂNG CHO DỰ ÁN

-Chức năng thêm 1 nhân viên import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.table.DefaultTableModel; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTextField; import javax.swing.JMenuBar; import javax.swing.JMenu; import java.awt.Color; import java.awt.SystemColor; import java.awt.TextField; import javax.swing.UIManager; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import java.awt.Component; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import javax.swing.JCheckBoxMenuItem; import javax.swing.ImageIcon; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JTable; import java.awt.Font; public class nhanvien extends JFrame { private JPanel contentPane; private JTextField textField; private JTextField textField_1; private JTextField textField_2; private JTextField textField_3; private JTextField textField_4; private JTextField textField_5; private JTextField textField_6; private JTable table;

*/ public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() { public void run() { try { nhanvien frame = new nhanvien(); frame.setVisible(true);

*/ public ArrayList a=new ArrayList(); public ArrayList b=new ArrayList(); public int d=-1; public void nhapdulieusql()

String sql="select * from nhanvien";

PreparedStatement cmd= ketnoi.cn.prepareStatement(sql); ResultSet rs= cmd.executeQuery(); while(rs.next())

String s=rs.getString(1)+";"+rs.getString(2)+";"+rs.getString(3)+";"+rs.getStrin g(4)+";"+rs.getString(5); a.add(s);

} rs.close(); ketnoi.cn.close();

Bảng mẫu mặc định mh = mới Bảng mẫu mặc định (); mh.addColumn ("Mã nhân viên"); mh.addColumn ("Tên nhân viên"); mh.addColumn ("Chứng minh thư"); mh.addColumn ("Địa chỉ"); mh.addColumn ("Số điện thoại"); cho (int i = 0; i < a.size (); i ++)

Object[] t=new Object[5]; t=s; mh.addRow(t);

} public void luu(String st)

String sql="insert into nhanvien values(?,?,?,?,?)"; PreparedStatement cmp=ketnoi.cn.prepareStatement(sql);

String[] s=st.split("[;]"); cmp.setString(1, s[0]); cmp.setString(2, s[1]); cmp.setString(3, s[2]); cmp.setString(4, s[3]); cmp.setString(5, s[4]); cmp.executeUpdate(); cmp.close();

} } public void xoa(String st)

PreparedStatement cmp=ketnoi.cn.prepareStatement("Delete From nhanvien Where manv=?"); cmp.setString(1, st); cmp.executeUpdate();

} } public int ktmanv(String stt)

String[] st1=a.get(i).split("[;]"); if ( stt.equalsIgnoreCase(st1[0])==true) return 0;

Kiểm thử hộp đen

1) Phân lớp tương đương a) Xác định lớp tương đương

Giá trị kiểm thử Lớp tương đương hợp lệ Lớp tương đương không hợp lệ

Ký tự nhập vào -Mã ký gửi là một chuỗi ký tự bao gồm chữ số và chữ cái (1) Bắt đầu bằng chữ cái (2) độ dài mã bằng 5

-Tên chủ là một chuỗi ký tự có dạng ký tự (4) và độ dài nằm trong khoảng [1,30]

-Liên hệ là chuỗi ký tự có dạng chữ số (6) có độ dài là 10 ký tự (7).

-Số CMND là chuỗi ký tự các chữ số (8) có độ dài là

- Tên pet là ký tự có dạng

-Mã ký gửi có ký tự đặc biệt

(28) bắt đầu bằng chữ số (29) có độ dài 30 (20)

- Một trong các ký tự nhập vào chuỗi số CMND là ký tự dạng chữ

- hoặc có chứa kí tự đặc biệt (22) hoặc có độ dài khác 9 (23)

-Địa chỉ là chuỗi có độ dài 100

- Một trong các ký tự nhập vào trong chuỗi số điện thoại là ký tự dạng chữ (26) hoặc ký tự đặc biệt (27) hoặc có độ dài khác 10 (28) b) Các ca kiểm thử

+ Các ca kiểm thử hợp lệ là các ca kiểm thử bao phủ các lớp tương đương hợp lệ (1), (2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)

Mã nhân viên: NV01 Tên nhân viên : Nguyễn Văn A

Số CMND : 192012345 Địa chỉ: 1 Hùng Vương

Số điện thoại: 0912345678 + Các ca kiểm thử không hợp lệ

(16) Mã nhân viên:NV01 (NV01 đã tồn tại)

(17) Tên nhân viên: Nguyễn Văn 4

(18) Tên nhân viên: Nguyễn Hữu @

(19) Tên nhân viên là 1 chuỗi rỗng.

(20) Tên nhân viên: Nguyễn Trần Hữu Hoàng Huỳnh Lê Bảo Thiên (21) CMND: 1972A5673

(24) Địa chỉ: là 1 chuỗi rỗng

(25) Địa chỉ: 1806/127/2/6/15/48/2A khu phố 6 đường Huỳnh Tấn Phát, thị trấn Nhà Bè, huyện Nhà Bè, thành phố Hồ Chí Minh

2) Phân tích giá trị biên

Phân tích giá trị biên có 77 trường hợp kiểm thử cho chức năng thêm nhân viên

3) Đồ thị nguyên nhân kết quả a) Đồ thị nguyên nhân kết quả

1 Mã nhân viên là một chuỗi các ký tự dạng chữ và dạng số, phải bắt đầu bằng chữ cái và có độ dài bằng 4.

2 Mã nhân viên chưa tồn tại trong dữ liệu.

3 Tên nhân viên là một chuỗi ký tự dạng chữ có độ dài thuộc

4 Số CMND là chuỗi ký tự dạng số có độ dài bằng 9

5 Địa chỉ là chuỗi ký tự có độ dài thuộc [1,100].

6 Số điện thoại là chuỗi ký tự dạng số có độ dài bằng 10

R1 Thông báo “ Mã nhân viên không hợp lệ ”.

R2 Thông báo “ Mã nhân viên đã tồn tại”.

R3 Thông báo “ Tên nhân viên không hợp lệ ”

R4 Thông báo “ Số CMND không hợp lệ ”.

R5 Thông báo “ Địa chỉ không hợp lệ ”.

R6 Thông báo “ Số điện thoại không hợp lệ ”.

R7 Thông báo “ Thêm nhân viên thành công” Hệ thống thêm mới một nhân viên vào CSDL”. Đồ thị nguyên nhân kết quả b) Bảng quyết định

Bảng quyết định c) Các trường hợp kiểm thử

STT Các điều kiện Các ca kiểm thử Hành động

1 Mã nhân viên là dữ liệu rỗng

2 Mã nhân viên chứa ký tự đặc biệt

3 Mã nhân viên là một chuỗi bắt đầu bằng chữ số

4 - Mã nhân viên là một chuỗi ký tự chỉ bao gồm chữ cái và chữ số, bắt đầu bằng chữ cái và có độ dài khác

5 - Mã nhân viên là một chuỗi ký tự chỉ bao gồm chữ cái và chữ số, bắt đầu bằng chữ cái và có độ dài bằng

- Mã nhân viên nhập vào đã tồn tại trong dữ liệu

Mã nhân viên: NV01 Trong CSDL đã tồn tại NV01

Mã nhân viên phải thỏa mãn các tiêu chí sau: Gồm chữ cái và chữ số, bắt đầu bằng chữ cái, có độ dài 4 ký tự và chưa từng tồn tại trong hệ thống.

- Tên nhân viên có độ dài không thuộc [1,30]

Mã nhân viên: NV1 Tên nhân viên: “”

7 - Mã nhân viên là một chuỗi ký tự chỉ bao gồm chữ cái và chữ số, phải bắt đầu bằng chữ cái và có độ dài bằng 4, chưa tồn tại

Mã nhân viên: NV1 Tên nhân viên: Nguyễn 1

- Tên nhân viên chứa chữ số

8 - Mã nhân viên là một chuỗi ký tự chỉ bao gồm chữ cái và chữ số, phải bắt đầu bằng chữ cái và có độ dài bằng 4, chưa tồn tại

- Tên nhân viên chứa ký tự đặc biệt

Mã nhân viên: NV1 Tên nhân viên: Nguyễn @

9 - Mã nhân viên là một chuỗi ký tự chỉ bao gồm chữ cái và chữ số, phải bắt đầu bằng chữ cái và có độ dài bằng 4, chưa tồn tại

- Tên nhân viên là một chuỗi ký tự có dạng chữ và có độ dài thuộc

- Số CMND là chuỗi ký tự có chứa chữ cái

Mã nhân viên: NV1 Tên nhân viên : Nguyễn Văn An

10 - Mã nhân viên là một chuỗi ký tự chỉ bao gồm chữ cái và chữ số, phải bắt đầu bằng chữ cái và có độ dài bằng 4, chưa tồn tại

- Tên nhân viên là một chuỗi ký tự có dạng chữ và có độ dài thuộc

Mã nhân viên: NV1 Tên nhân viên : Nguyễn Văn An

Số CMND là chuỗi ký tự có chứa kí tự đặc biệt

11 - Mã nhân viên là một chuỗi ký tự chỉ bao gồm chữ cái và chữ số, phải bắt đầu bằng chữ cái và có độ dài bằng 4, chưa tồn tại

- Tên nhân viên là một chuỗi ký tự có dạng chữ và có độ dài thuộc

Số CMND là chuỗi ký tự có dạng số và có độ dài khác 9

Mã nhân viên: NV1 Tên nhân viên : Nguyễn Văn An

12 - Mã nhân viên là một chuỗi ký tự chỉ bao gồm chữ cái và chữ số, phải bắt đầu bằng chữ cái và có độ dài bằng 4, chưa tồn tại

- Tên nhân viên là một chuỗi ký tự có dạng chữ và có độ dài thuộc

- Số CMND là chuỗi ký tự có dạng số và có độ dài bằng 9

- Địa chỉ là chuỗi ký tự có chứa kí tự đặc biệt

Mã nhân viên: NV1 Tên nhân viên : Nguyễn Văn An

13 - Mã nhân viên là một Mã nhân viên: NV1 R5 chuỗi ký tự chỉ bao gồm chữ cái và chữ số, phải bắt đầu bằng chữ cái và có độ dài bằng 4, chưa tồn tại

- Tên nhân viên là một chuỗi ký tự có dạng chữ và có độ dài thuộc

- Số CMND là chuỗi ký tự có dạng số và có độ dài bằng 9

- Địa chỉ là chuỗi ký tự chỉ bao gồm chữ cái và chữ số và có độ dài không thuộc [1,100]

Tên nhân viên : Nguyễn Văn An

14 - Mã nhân viên là một chuỗi ký tự chỉ bao gồm chữ cái và chữ số, phải bắt đầu bằng chữ cái và có độ dài bằng 4, chưa tồn tại

- Tên nhân viên là một chuỗi ký tự có dạng chữ và có độ dài thuộc [1,30]

- Số CMND là chuỗi ký tự có dạng số và có độ dài bằng 9

- Địa chỉ là chuỗi ký tự chỉ bao gồm chữ cái và chữ số và có độ dài thuộc [1,100]

Mã nhân viên: NV1 Tên nhân viên : Nguyễn Văn An

Số CMND : 192045127 Địa chỉ: 1 Phan Đình Phùng

- Số điện thoại là chuỗi ký tự có chứa kí tự chữ cái

15 - Mã nhân viên là một chuỗi ký tự chỉ bao gồm chữ cái và chữ số, phải bắt đầu bằng chữ cái và có độ dài bằng 4, chưa tồn tại

- Tên nhân viên là một chuỗi ký tự có dạng chữ và có độ dài thuộc [1,30]

- Số CMND là chuỗi ký tự có dạng số và có độ dài bằng 9

- Địa chỉ là chuỗi ký tự chỉ bao gồm chữ cái và chữ số và có độ dài thuộc [1,100]

- Số điện thoại là chuỗi ký tự có chứa kí tự đặc biệt

Mã nhân viên: NV1 Tên nhân viên : Nguyễn Văn An

Số CMND : 192045127 Địa chỉ: 1 Phan Đình Phùng

16 - Mã nhân viên là một chuỗi ký tự chỉ bao gồm chữ cái và chữ số, phải bắt đầu bằng chữ cái và có độ dài bằng 4, chưa tồn tại

- Tên nhân viên là một chuỗi ký tự có dạng chữ và có độ dài thuộc [1,30]

Mã nhân viên: NV1 Tên nhân viên : Nguyễn Văn An

Số CMND : 192045127 Địa chỉ: 1 Phan Đình Phùng

- Số CMND là chuỗi ký tự có dạng số và có độ dài bằng 9

- Địa chỉ là chuỗi ký tự chỉ bao gồm chữ cái và chữ số và có độ dài thuộc [1,100]

- Số điện thoại là chuỗi ký tự có dạng số và có độ dài khác 10

Kiểm thử hộp trắng

2) Đồ thị đường diễn tiến.

3) Xác định số đường kiểm thử

4) Xác định TestCase Đường kiểm thử

Giá trị đầu vào Kết quả mong đợi

1 - pp = 0 Hiện thị thông báo:

“Chưa chọn đăng ký ký gửi”

Lưu và thêm vào CSDL

Hiển thị thông báo nhập mã nhân viên

Hiển thị thông báo “chưa nhập đủ thông tin” lưu và thêm và CSDL

Hiển thị:”Chưa nhập đầy đủ thông tin”

Lưu và thêm vào CSDL

Hiển thị:”Chưa nhập đầy đủ thông tin”

Lưu và thêm vào CSDL

Hiển thị: “Chưa nhập đầy đủ thông tin”

Lưu và thêm vào CSDL

-TextField.getText khác rỗng -TextField_1.getText khác rỗng -TextField_2.getText khác rỗng -TextField_3.getText khác rỗng -TextField_4.getText khác rỗng -TextField_6.getText bằng rỗng

Hiển thị thông báo “chưa nhập đủ thông tin” lưu và thêm và CSDL

Hiển thị: “Chưa nhập đầy đủ thông tin”

Lưu và thêm vào CSDL

Hiển thị: “Chưa nhập đầy đủ thông tin”

Lưu và thêm vào CSDL

Hiển thị: “Chưa nhập đầy đủ thông tin”

Lưu và thêm vào CSDL

Hiển thị: “Chưa nhập đầy đủ thông tin”

Lưu và thêm vào CSDL

- kiem tra ngay textField_7.getText == 0

Hiển thị : “Số ngày trả không hợp lệ”

Lưu và thêm vào CSDL

Lưu và thêm vào CSDL

II) CHỨC NĂNG THÊM NHÂN VIÊN

2) Đồ thị đường diễn tiến.

3) Xác định số đường kiểm thử V(G)

Các đường kiểm thử là:

4) Xác định TestCase Đường kiểm thử Giá trị đầu vào Kết quả mong đợi

1 - Nhập dữ liệu vào các -TextField 2,3,4,5,6,7

2 - Nhập dữ liệu vào các -TextField 2,3,4,5,6,7

Hiển thị thông báo nhập mã nhân viên

3 - Nhập dữ liệu vào các -TextField 2,3,4,5,6,7

2 đã trùng mã nhân viên

Hiển thị thông báo mã nhân viên đã tồn tại

4 - Nhập dữ liệu vào các -TextField 2,3,4,5,6,7

- kiểm tra TextField2.getText không trùng mã nhân viên

Thêm thông tin nhân viên,lưu thông tin nhân viên và hiển thị public void actionPerformed(ActionEvent e) {

JOptionPane.showMessageDialog(btnNewButton_4, "Nhập mã nhân viên"); else if ((ktmanv(s1)==0))

JOptionPane.showMessageDialog(btnNewButton_4, "Mã nhân viên đã tồn tại Yêu cầu nhập lại"); else

{ a.add(st); luu(st); hienthi();

III) Các hàm phụ trợ

1) Kiểm tra ngày a) Xác định các nút b) Đồ thị đường diễn tiến c) Xác định số đường kiểm thử

Các đường kiểm thử là:

Ca kiểm thử Giá trị đầu vào Kết quả mong đợi

1 chuỗi st Trả về giá trị đúng,nếu là 1

2 chuỗi st Trả về giá trị sai,nếu là 0

2) Hàm lưu trữ a) Xác định các nút b) Đồ thị đường diễn tiến c) Xác định số đường kiểm thử

Ca kiểm thử Giá trị đầu vào Kết quả mong đợi

1 chuỗi st Lưu trữ vào CSDL

3) Kiểm tra mã nhân viên a) Xác định các nút b) Đồ thị đường diễn tiến c) Xác định số đường kiểm thử

1-2-3-8-9-10 d) Xác định TestCase Đường kiểm thử

Giá trị đầu vào Kết quả mong đợi

1 i=0 i= a.size() table.setModel(mh)

Hiển thị thông báo: Hiển thị các nhân viên vừa thêm

2 mh i=0 i < a.size() String[] s=a.get(i).split("[;]");

Object[] t=new Object[5]; t=s; mh.addRow(t);

Hiển thị thông báo: Hiển thị các nhân viên vừa thêm

Kiểm thử Module

Hàm xử lý ký gửi:

Ta cần phải khẳng định chương trình trên đúng với yêu cầu đặt ra.

Thật vậy, gọi mệnh đề thể hiện tính chất dữ liệu vào của chương trình {A} và mệnh đề thể hiện tính chất dữ liệu ra cần có {B}, ta có

{B: e C { True, False}, S = S1…Sn N, textfleid1…TexFleid11 String, Nếu tồn∈ ∈ tại TextFleid[i] bằng “” thì hàm kết thúc dữ liệu không thay đổi.

- , textfleid1…TexFleid11 String, Nếu không tồn tại TextFleid[i] bằng “” và∈ textFleid7 bằng “0” thì dữ liệu không thay đổi

Dữ liệu được lưu} xét {A, E1: } P {B}

1 Với {A ,E1:} P1 {B} = { A [ShowMessage| “Chưa chọn đăng ký ký gửi”] }

Xét 2.2.2 với {A , !E1: !E2, !E3} P6 {C} ta có C1= {C[S | textField.getText()+”;”+textField_1.getText()+”;”+textField_2.getText()

+”;”+comboBox_1.getSelectedItem.toString()+”;”+textField_6.getText()

+textField_7.getText()+textField_8.getText()+”;”+textField_9.getText()

+comboBox_2.getSelectedItem.toString()+textField_11.getText()]

Dễ dàng ta thấy {A} ==L=> {B} điều phải chứng minh.

II) Chức năng thêm nhân viên

- Mệnh đề vào / ra của chức năng thêm nhân viên:

+ MĐ vào: {A: s1,s2,s3,s4,s5,st ∈ String; textField_2.getText() ,textField_3.getText() , textField_4.getText() ,textField_5.getText() ,textField_6.getText() ∈ String}

+ MĐ ra : {B: s1,s2,s3,s4,s5,st ∈ String; textField_2.getText() ,textField_3.getText() , textField_4.getText() ,textField_5.getText() ,textField_6.getText() ∈ String Nếu (d = -1 và s1 trống) thì không thay đổi

Nếu (d = -1, s1 không trống và hàm ktmanv(s1) trả về giá trị khác 0), chuỗi st sẽ được thêm vào danh sách a, chuỗi st được lưu, hàm hienthi() được gọi.

Nếu (d = -1, s1 không trống và hàm ktmanv(s1) == 0) thì không thay đổi

Nếu (d khác -1) thì không thay đổi

Ta có : {A}P1{C} xét mệnh đề {C:s1,s2,s3,s4,s5,st ∈ String; textField_2.getText() ,textField_3.getText() , textField_4.getText() ,textField_5.getText() ,textField_6.getText() ∈ String } theo tính chất phép gán:

{C2} = {C1 [s5 | textField_6.getText()]: s1, s2, s3, s4, textField_6.getText() ∈ String ; s1+”;”+s2+”;”+s3+”;”+s4+”;”+textField_6.getText() ∈ String }

{C3} ={C2 [s4 | textField_5.getText()]: s1, s2, s3, textField_5.getText(), textField_6.getText() ∈ String ; s1+”;”+s2+”;”+s3+”;”+textField_5.getText()

{C4} = {C3 [s3 | textField_4.getText()]: s1, s2, textField_4.getText(), textField_5.getText(), textField_6.getText() ∈ String; s1+”;”+s2+”;”+textField_4.getText() +”;”+textField_5.getText()+”;”+textField_6.getText() ∈ String}

{C5} = {C4 [s2 | textField_3.getText()]: s1, textField_3.getText(), textField_4.getText(), textField_5.getText(), textField_6.getText() ∈ String ; s1+”;”+textField_3.getText()

+”;”+textField_4.getText()+”;”+textField_5.getText()+”;”+textField_6.getText() ∈ String } {C6} = {C5 [s1 | textField_2.getText()]: textField_2.getText(), textField_3.getText(), textField_4.getText(), textField_5.getText(), textField_6.getText() ∈ String ; textField_2.getText()+”;”+textField_3.getText()+”;”+textField_4.getText()

+”;”+textField_5.getText()+”;”+textField_6.getText() ∈ String }

Rõ ràng ta có {A}=>L{C6} nên {A}P1{C}

Tiếp tục chương trình, ta có :

{C,E: d==-1}P6{B} a1) {C,E,E1:d==-1,s1.equalsIgnoreCase("")==true}P2{B} a2) {C,E,!E1:d==-1,s1.equalsIgnoreCase("")==false}P3{B} b1){C,E,!E1,E2:d==-1,s1.equalsIgnoreCase("")==false, ktmanv(s1)==0}P4{B} b2){C,E,!E1,!E2:d==-1,s1.equalsIgnoreCase("")==false, ktmanv(s1)!

Vậy {A} P {B} hay chương trình trên là đúng.

III) Các hàm phụ trợ

- Mệnh đề vào / ra của chức năng kiểm tra mã nhân viên:

+ MĐ ra: {B: { KiemTraNgay() ∈ int}} Để chứng minh hàm trên đúng ta cần chứng minh {A} P {B}

Theo tính chất phép gán ta có

{A4}={A3 [ sim | new SimpleDateFormat(“dd//MM/yyyy”)]; SimpleDateFormat} {A}={A4 [date | new Date()];date ∈ Date }

Xét { C} If (t >t2) return 0 else return 1 {B}

Suy ra { C} If (t >t2) return 0 else return 1 {B} là đúng

- Mệnh đề vào / ra của chức năng kiểm tra mã nhân viên:

+ MĐ ra: {B: [DataBase | st ] } Để chứng minh hàm trên đúng ta cần chứng minh {A} P1 {B}

Theo tính chất phép gán ta có

{A1} ={B [ cmd |cmd.close()]; cmd ∈ PreparedStatement}

{A2} ={A1 [ cmd |cmd.executeUpdate()]; cmd ∈ PreparedStatement} {A3} ={A2 [ cmd |cmd.setString(5,s[4])]; cmd ∈ PreparedStatement} {A4} ={A3 [ cmd |cmd.setString(4,s[3])]; cmd ∈ PreparedStatement} {A5} ={A4 [ cmd |cmd.setString(3,s[2])]; cmd ∈ PreparedStatement} {A6} ={A5 [ cmd |cmd.setString(2,s[1])]; cmd ∈ PreparedStatement} {A7} ={A6 [ cmd |cmd.setString(1,s[0])]; cmd ∈ PreparedStatement} {A8} ={A7 [ s |st.split(“;”)]; s ∈ String }

{A9} ={A8 [ cmd |ketnoi().cn.PreparedStatement(sql)]; cmd ∈ PreparedStatement}

{A10} ={A9 [sql | “insert into nhanvien values(?,?,?,?,?,)”]; sql ∈ String} {A} ={A9 [ketnoi | ketnoi.Connect()”];}

3) Kiểm tra mã nhân viên

- Mệnh đề vào / ra của chức năng kiểm tra mã nhân viên:

Hàm trả về 0 khi tìm thấy một chuỗi trong mảng a (đặt tên là st1) sao cho stt.equalsIgnoreCase(st1[0])==true

Hàm trả về 1 khi không tìm thấy một chuỗi nào trong mảng a (đặt tên là st1) thỏa mãn stt.equalsIgnoreCase(st1[0])==true

Xét mệnh đề: {C: a∈String, i ∈ N; a.get(0).split(“[;]”), …, a.get(a.size()-1).split(“[;]”) ∈ String;)

Ta có {A} i=0; {C} Để chứng tỏ {C} là bất biến của đoạn chương trình {P}

Ta cần có {C, i

Ngày đăng: 14/08/2024, 18:18

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w