2010-10-25 4 views
5

Tôi phải tạo một hệ thống bỏ phiếu cho trường với java, hệ thống sẽ được sử dụng để bình chọn cho phim. Nó sẽ có tất cả người dùng và phim được thiết lập trước tay bởi ai đó.Hệ thống bỏ phiếu Java

Đây là ứng dụng bảng điều khiển và nó sẽ được chạy trên nhiều máy tính. Một số trong những câu hỏi tôi có về vấn đề này là:

  1. giáo viên của tôi muốn chúng ta sử dụng một tập tin văn bản để duy trì tất cả các dữ liệu này sẽ là một vấn đề? Nó sẽ là tốt hơn để chuyển sang một cơ sở dữ liệu như MySQL và tại sao?

  2. Khi người dùng nhập thông tin đăng nhập của họ, chương trình (a) chỉ tra cứu thông tin của người đó trong tệp văn bản và sau đó tạo lại đối tượng cho người hoặc (b). của người dùng sau đó chỉ cần kiểm tra với danh sách mảng cho người dùng và kiểm tra mật khẩu?

Hoặc cho # 2 Có cách nào tốt hơn để làm điều đó không?

Trả lời

2

Vì đó là một bài tập/dự án trường học, bạn nên làm theo hướng dẫn của giáo viên & thông số kỹ thuật (để có điểm tốt hơn). Nếu đây là dự án của riêng bạn, thì đề xuất của tôi sẽ là tránh hoàn toàn tệp cơ sở dữ liệu.

Trong kịch bản thế giới thực,

  • Nếu bạn muốn lưu trữ mật khẩu trong một cơ sở dữ liệu, tôi khuyên bạn nên băm mật khẩu với một thuật toán băm tốt như SHA-512 (một phần của gia đình SHA-2). Ngoài ra, nếu bạn quyết định không làm cho nó trở thành một ứng dụng web, bạn sẽ gửi bí mật đến/từ ứng dụng/máy chủ của bạn trong một giao thức bảo mật như HTTPS.
+0

cảm ơn câu trả lời nhưng việc chuyển sang cơ sở dữ liệu sẽ không gây ra vấn đề gì nhiều, giáo viên của tôi rất cởi mở với bài tập này. – SR4801

+0

Sau đó, bằng mọi cách, hãy chọn tùy chọn cơ sở dữ liệu. –

+0

Tôi sẽ đồng ý với giải pháp cơ sở dữ liệu, tuy nhiên chúng tôi hiện đang đi vào thế giới chuyển mạng. Bởi vì nó phải là một cơ sở dữ liệu trung tâm mà tất cả các máy khách kết nối và nhập dữ liệu. – Woot4Moo

0

Tôi khuyên bạn nên sử dụng XStream là cách thực sự nhanh chóng và dễ dàng để duy trì dữ liệu của bạn vào đĩa. XStream chỉ chuyển đổi POJO của bạn thành XML và cho phép cả hai marshalling/unmarshalling. Lợi thế của XStream là dữ liệu của bạn sẽ vẫn có thể đọc được bởi con người có thể hữu ích khi bạn đang học lập trình và thực hiện gỡ lỗi.

Bạn cần phải có một lượng lớn dữ liệu trước khi điều này biến thành nút cổ chai hiệu suất và vì đó là bài tập về nhà tôi nghi ngờ bạn sẽ có nhiều điều đó. Tôi không biết bạn biết bao nhiêu lập trình, nhưng việc thêm một cơ sở dữ liệu quan hệ thích hợp sẽ làm tăng thêm sự phức tạp cho hệ thống của bạn. Lời khuyên của tôi là bạn làm một bước tại một thời điểm ở đây. Nhiều thời gian cho cơ sở dữ liệu :)

+0

Cảm ơn bạn đã trả lời, tôi chắc chắn sẽ sử dụng XStream – SR4801

+0

Nó thực sự tuyệt vời cho các dự án nhỏ hơn :) – willcodejavaforfood

0
  1. Cơ sở dữ liệu thường có chức năng tích hợp để giữ toàn vẹn dữ liệu trong một tình huống nhiều người dùng. Hãy xem xét trong ứng dụng của bạn điều gì sẽ xảy ra với tệp văn bản nếu hai người dùng bỏ phiếu chính xác cùng một lúc từ hai máy tính khác nhau. Trừ khi bạn có một quá trình "máy chủ" duy nhất xử lý cập nhật tệp văn bản, thì bạn sẽ cần phải bằng cách nào đó phối hợp giữa hai người dùng để đảm bảo tệp văn bản không bị hỏng và cả hai phiếu đều được tính. Nó có thể được thực hiện (có lẽ bằng cách sử dụng một "khóa" tập tin) và thậm chí có thể đáng giá vì sự phức tạp thêm mà giới thiệu một cơ sở dữ liệu yêu cầu.

  2. Không rõ bạn đang hỏi gì, nhưng nếu bạn có thể "quét/tìm kiếm" tệp văn bản cho người dùng (tên) mà bạn quan tâm, thì điều đó có vẻ hiệu quả hơn ở cái nhìn đầu tiên so với xây dựng mọi đối tượng người dùng chỉ để kiểm tra mật khẩu phù hợp.

+0

cảm ơn bạn đã trả lời, đặc biệt là # 2 mà tôi hơi bối rối về mặt hiệu quả – SR4801

1

Cho # 2. Nếu bạn chỉ cần biết về một người dùng tại một thời điểm, thì sẽ không có lợi gì khi tải tất cả người dùng vào bộ nhớ. Cách tiếp cận của tôi cho một cái gì đó như thế này sẽ là phân tích cú pháp tên người dùng, tìm nó trong tệp, sau đó kiểm tra xem mật khẩu được phân tích cú pháp có khớp với mật khẩu được ghi lại cho người dùng đó hay không. Nếu có, hãy tạo đối tượng. Bạn nên kiểm tra và bắt lỗi ở từng giai đoạn (ví dụ: tên người dùng không phù hợp được cung cấp, người dùng không tồn tại, v.v.)

Lưu trữ và truyền mật khẩu thô luôn là ý tưởng tồi. Nó có thể không phải là một yêu cầu cho nhiệm vụ này, nhưng hãy xem xét hashing mật khẩu trước khi lưu chúng. Sau đó, thay vì tìm kiếm văn bản mật khẩu thực được cung cấp, hãy băm và so sánh nó với băm đã lưu.