2010-03-17 25 views
12

Trong ứng dụng của chúng tôi có danh sách khách hàng và danh sách từ khóa (trong số những thứ khác). Mỗi khách hàng có thể có một số từ khóa, nhưng nó không bắt buộc. Vì vậy, ví dụ, một khách hàng có thể có các từ khóa "bán lẻ" và "chuỗi", người ta có thể chỉ có "nhà thầu" và một người thứ ba có thể không có gì cả.Cách để người dùng trung bình thiết kế biểu thức boolean đồ họa

Tôi muốn cho phép người dùng thực hiện một sự lựa chọn của khách hàng dựa trên các từ khóa này, nhưng không phải viết (retail AND chain) or contractor and not wholesale

tôi muốn thực hiện nó như sử dụng càng tốt, và lý tưởng với chỉ "đơn giản" điều khiển, như hộp kiểm, hộp tổ hợp, v.v.

Có ai có bất kỳ đề xuất nào về cách thiết kế này không? Hoặc có thể một số ví dụ về các ứng dụng có chức năng tương tự?

Trả lời

11

lẽ giao diện người dùng đơn giản nhất sẽ là một cái gì đó như:

Find customers with 

All of these   Any of these   None of these 
[] retail    [] retail    [] retail 
[] chain    [] chain    [] chain 
[] contractor   [] contractor   [] contractor 
[] wholesale   [] wholesale   [] wholesale 
+0

Rực rỡ và đơn giản. Nó sẽ giới hạn "người dùng điện", vì họ không thể xây dựng các biểu thức phức tạp, nhưng đối với 99% người dùng thì điều này là đủ. Cảm ơn :-) –

+1

Bạn nên thêm nút '{use advanced query}' ở dưới cùng. –

+1

Để chiếm 99% các trường hợp, tôi cá là bạn có thể đơn giản hóa nó nhiều hơn và có một danh sách các giá trị và một danh sách thả xuống cho một toán tử (Tất cả, Bất kỳ, Không). Tôi nghĩ bạn sẽ thấy rằng rất hiếm khi người dùng cần nhiều hơn một toán tử cho cùng một trường/thuộc tính (ví dụ: Tất cả các giá trị này HOẶC Bất kỳ giá trị nào trong số đó). Bạn mất một chút linh hoạt nhưng nó ngăn chặn các lỗi logic giống như cùng một giá trị được chọn trong cả Bất kỳ và Không. –

0

cơ sở dữ liệu MS Access có một thuật sĩ để tạo báo cáo. Người dùng được hướng dẫn để xây dựng một truy vấn SQL một cách trực quan. TOAD cũng có trình hướng dẫn để lọc truy vấn.

Tôi hy vọng nó sẽ giúp bạn.

1

Có thể bạn có thể sử dụng cách tìm kiếm nâng cao của Google để chỉ định tìm kiếm. Với bất kỳ may mắn nào, người dùng sẽ quen thuộc với điều này.

5

Người dùng cuối gặp sự cố nghiêm trọng với cấu trúc boolean phức tạp. Đã có một số nghiên cứu về điều này (AND là khá dễ dàng cho họ để hiểu, nhưng OR là khó). Cung cấp cho người dùng cuối của bạn quyền truy cập vào trình tạo biểu thức boolean có mục đích chung và bạn đang nhảy xuống một lỗ thỏ không có kết thúc.

  • Giải pháp của JacobM là đơn giản hóa tốt đẹp.
  • Một hệ thống mà tôi đã sử dụng trước đây là có sàng lọc tìm kiếm: chỉ cho phép một hoặc hai quyết định cho tìm kiếm đầu tiên, sau đó cho phép người dùng cuối chia nhỏ kết quả bằng một loạt các quyết định đơn lẻ ("chỉ hiển thị các nhà thầu", "không bán lẻ", v.v.) Để làm việc tốt, bạn thường cần một cách dễ dàng để họ duy trì các tìm kiếm gần đây, hoặc thông qua danh sách cửa sổ theo thẻ hoặc thứ gì đó khác.
  • Suy nghĩ kỹ về người dùng cuối của bạn. Họ có thực sự cần trình tạo tìm kiếm boolean hoàn chỉnh không? Dữ liệu thực tế mà họ muốn là gì? Việc truy cập dữ liệu đó có yêu cầu tìm kiếm không phức tạp hơn so với giới hạn tùy ý không? Nếu vậy, hãy thiết kế giao diện người dùng của bạn để chỉ hỗ trợ tối đa giới hạn đó. Giải pháp của JacobM là một ví dụ về điều này ở một mức độ nào đó.
+0

Điểm 1) Tôi đồng ý :-) Điểm 2) Đó là một cách trực quan và dễ dàng để làm điều đó, nhưng nó đòi hỏi phải trải qua danh sách sau mỗi lần lặp lại. Quá tốn thời gian trong trường hợp này. Điểm 3) Bạn hoàn toàn chính xác. Người dùng của tôi không cần phải thực hiện các biểu thức phức tạp. Tôi có lẽ sẽ đi với giải pháp của JacobM. Nó đủ linh hoạt, ít nhất là cho nhu cầu hiện tại của tôi. –

2

Để có nhiều quyền lực và linh hoạt hơn bạn có thể đạt được với danh sách trường cố định, có query-by-example, một phương pháp được thiết lập tốt cho phép xây dựng các biểu thức Boolean phức tạp.

Đối với sự đồ họa cách để xác định biểu thức Boolean tùy ý không giới hạn, có là một cặp vợ chồng mà sử dụng phép ẩn dụ con đường:

Mặc dù tốt hơn các biểu thức Boolean kiểu SQL, tất cả đều là giao diện người dùng tương đối phức tạp, có thể yêu cầu ít nhất một số thực hành để sử dụng tốt. Do đó, bất kỳ khả năng truy vấn đặc biệt nào như vậy có thể được cách ly như một tính năng "nâng cao". Trong hầu hết các ứng dụng, người dùng có một số loại truy vấn rất cụ thể chiếm phần lớn công việc của họ (ví dụ: các tài khoản có nợ dài hơn n ngày). Một hộp thoại đơn giản để chọn các truy vấn đóng hộp hoặc bán đóng hộp là tốt nhất cho điều này và phải là giao diện người dùng mặc định.

Các vấn đề liên quan