- Mỗi người dùng có thể đăng ký 1 tài khoản với email của họ vàpassword.- Người dùng có thể thêm vào danh sách những quyển sách muốnbán/trao đổi với các thông tin: tên sách, loại sách ti
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
Hà Nội, 11-2012
Trang 2MỤC LỤC
MỤC LỤC 1
LỜI NÓI ĐẦU 2
PHÂN CÔNG THÀNH VIÊN TRONG NHÓM 5
CHƯƠNG 1 KHẢO SÁT, ĐẶC TẢ YÊU CẦU BÀI TOÁN 7
1.1 Mô tả yêu cầu bài toán 7
1.2 Biểu đồ use case 7
1.3 Đặc tả use case 9
CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ BÀI TOÁN 15
2.1 Biểu đồ trình tự 15
2.2 Biểu đồ lớp 22
2.4 Thiết kế Cơ sở dữ liệu 30
CHƯƠNG 3 CÔNG NGHỆ VÀ THUẬT TOÁN SỬ DỤNG 35
CHƯƠNG 4 XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA 38
4.1 Kết quả chương trình minh họa
4.2 Giao diện chương trình
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
TÀI LIỆU THAM KHẢO
Trang 3LỜI NÓI ĐẦU
Nhu cầu về giáo trình học tập, sách tham khảo trong năm học mới đối vớisinh viên là rất lớn Để giải quyết vấn đề này, đa số sinh viên đều phải lựa chọnphương án mua sách mới, chỉ một số ít sinh viên mượn sách từ thư viện trường haymua lại sách cũ từ các sinh viên khóa trước
Với phương án mua sách mới, ta có thể nhận ra ngay là phương án này khá là tốnkém so với hai phương án mượn sách từ thư viện và mua lại sách cũ
Với phương án mượn sách từ thư viện, tuy phương án này là phương án kinh tếnhất trong số ba phương án, nhưng nó vẫn có một số hạn chế như: thư viện chomượn với số lượng nhất định, giới hạn thời gian mượn sách, không thể ghi chú trênsách…
Với phương án còn lại, mua lại sách từ các sinh viên khóa trước, tuy rằng phương
án này có nhược điểm là đòi hỏi sinh viên phải quen biết với các sinh viên khóatrước Nhưng nếu giải quyết được nhược điểm này, đây có thể là phương án tốtnhất để giải quyết nhu cầu về sách của sinh viên
Ngoài ra, đối với tất cả các loại sách khác như sách khoa học, văn học, truyện…trong xã hội thì việc đưa vào lưu thông trở lại giúp tránhlãng phí cũng không hềđơn giản.Trong khi nhu cầu sử dụng sách của mọi người là rất lớn
Đứng trước những khó khăn nêu trên, thành viên trong nhóm thảo luận và quyết
định nhanh chóng ngay từ những tuần đầu tiên là chọn đề tài:xây dựng website
mua bán sách cũ.Website sẽ là cầu nối liên kết giữa người cung cấp sách cũ và
người cần sách
Cùng với sự hoạt động trên internet, website còn kết hợp hoạt động với kho sáchngoài đời thực, giúp cho việc lưu thông sách được dễ dàng hơn và tạo sự tin cậycho người dùng hơn
Rất nhiều ý kiến đóng góp đã được đưa ra nhằm đưa đề tài từ chỗ chỉ là nhữngphác thảo trên giấy thành những dòng code trên máy.Mục tiêu của nhóm khi thựchiện đề tài này đó là xây dựng được một phần mềm đảm bảo được các tiêu chí:
Trang 4- Mỗi người dùng có thể đăng ký 1 tài khoản với email của họ vàpassword.
- Người dùng có thể thêm vào danh sách những quyển sách muốnbán/trao đổi với các thông tin: tên sách, loại sách (tiểu thuyết, tin học, kinh tế, ),tác giả, năm xuất bản, giá trị sách, mục đích bán (kèm giá bán) hay trao đổi (có thểđưa vào các quyển sách muốn trao đổi)
- Đưa ra danh sách các sách theo chủ đề
-Tìm sách theo tên sách, theo tác giả
-Nếu người dùng tìm thấy quyển sách mong muốn, có thể yêu cầu bánhoặc trao đổi với những quyển sách mà họ có Và người dùng cũng có thể chọnphương thức mua bán, trao đổi (gặp trực tiếp, qua bưu điện, chuyển khoản, v v)
-Vote về độ tin cậy của người dùng khi trao đổi/mua bán sách theo thang
từ 1 (rất tệ, không đáng tin cậy) đến 5 (rất tốt, rất có uy tín)
* Cơ sở lý thuyết của đề tài: Các tài liệu về cấu trúc dữ liệu và giải thuật, phân tíchthiết kế hướng đối tượng, các kỹ thuật xây dựng ứng dụng với giao diện đồ họa
Nội dung công việc được xác định bao gồm:
Khảo sát ,đặc tả yêu cầu
Phân tích,Thiết kế phần mềm theo phương pháp hướng đối tượng (sửdụng ngôn ngữ UML)
Xây dựng chương trình theo mô hình MVC (Model-View-Control)
Sử dụng công cụ hỗ trợ :
IDE :Visual studio 2010
Hệ quản trị cơ sở dữ liệu : SQL server 2008 Kiểm thử , sửa lỗi với bộ dữ liệu thực
Trang 5Ban đầu,với vốn kiến thức chưa nhiều,các thành viên trong nhóm đã gặpphải không ít khó khăn,trở ngại.Nhưng bằng việc học hỏi ở thầy cô và bạn bè cũngnhư nỗ lực của bản thân,các thành viên trong nhóm dần bắt nhịp với công việc vàđịnh hình được những vấn đề cần giải quyết.Rất nhiều những buổi họp nhóm đãđược tiến hành và cả nhóm đã cùng nhau trực tiếp xây dựng và hoàn thiện dần chochương trình.Việc trao đổi thông tin liên quan được tiến hành qua việc online trêngroup facebook riêng của nhóm.Trao đổi tài liệu cần thiết cho nhau qua gmail.Cácchức năng cũng như giao diện của hệ thống ngày một được nâng cấp và được testlại cẩn thận nhằm cố gắng tối ưu hóa chương trình.
Sau rất nhiều cố gắng,thời gian cũng như công sức,phần mềm demo củachương trình đã được hoàn tất sẵn sàng đưa vào chạy thử nghiệm.Đề tài được cảnhóm hoàn thành theo đúng tiến độ được giao.Mặc dù chúng em đã rất cố gắng đểxây dựng phần mềm này nhưng vì là lần đầu làm một chương một chương trìnhlớn,cũng như lần đầu làm đề tài theo nhóm nên còn nhiều bỡ ngỡ nên vài chứcnăng vẫn chưa được ưng ý và hoạt động tốt.Chúng em rất mong nhận được những
sự đánh giá,góp ý của thầy và cô để tiếp tục hoàn thiện website của mình.Chúng
em xin chân thành cám ơn và sẽ tiếp thu ý kiến của thầy cô
Hà Nội tháng 11 năm 2012
Nhóm 4 đề tài 12
Trang 6PHÂN CÔNG CÔNG VIỆC TRONG NHÓM
Giai
đoạn
Thời gian Công Việc
1 Tuần 4-> 6 Phân tích yêu cầu bài toán, tìm tài liệu tham
khảo
2 Tuần 6->8 Hoàn thành thiết kế, giao diện chương trình
3 Tuần 8->12 Lập trình,xây dựng chương trình
4 Tuần 12->13 Hoàn thiện toàn bộ chương trình, viết báo cáo
1.1 Giai đoạn 1 :
Đưa ra thiết kế khung chương trình
Tìm hiểu,thiết kế giao diện chương trình
Tìm hiểu việc liên kết, tổ chức dữ liệuchương trình
Tìm kiếm tài liệu liên quan1.2 Giai đoạn 2:
Tiếp tục hoàn thiện thiết kế chương trình
Hỗ trợ thiết kế Database
Thiết kế DatabaseHoàn thiện thiết kế giao diện
Trang 71.3 Giai đoạn 3:
Xử lý sự kiện người dùng tại màn hìnhchơi,màn hình, màn hình default (sau khilogin )
Xử lý menu chính chương trình
Hoàn thiện thiết kế Object Ô chữ để hiển thịtrên màn hình
- Xây dựng các class trong gói Model
- Viết xử lý tính điểm cho chức năng giải ôchữ
Trang 8chương trình, database,kiểm thử tổngquan…
Báo cáo lại phần việc đã làm
CHƯƠNG 1:KHẢO SÁT, ĐẶC TẢ YÊU CẦU BÀI TOÁN
1.1 MÔ TẢ YÊU CẦU BÀI TOÁN
- Đăng sách lên để bán hoặc trao đổi (upload sách): hoạt động này chỉ dànhcho người sử dụng khi đã đăng ký là thành viên của trang web Để đăng mộtcuốn sách, thành viên cần phải cung cấp các thông tin về cuốn sách đó nhưtiêu đề, tác giả, nhà xuất bản, năm xuất bản, số trang, giá bìa,giá bán lại,hình ảnh của sách
- Tìm kiếm theo tên sách,tên tác giả(Không bắt buộc là thành viên): Người sửdụng nhập tên sách,hoặc tên tác giả để tìm kiếm.Trong kết quả trả về có cácthông tin của sách như: Tên sách,tên tác giả, giá bìa, giá bán.Người dùng sẽthấy nút trao đổi dưới mỗi quyển sách.Nếu tìm thấy quyển sách muốn traođổi hoặc mua thì người dùng nhấn vào nút trao đổi này để thực hiện mộtphiên trao đổi (Chỉ áp dụng với thành viên)
- Tìm kiếm sách cần trao đổi hoặc mua (không bắt buộc là thành viên) : người
sử dụng sẽ nhập các thông tin về cuốn sách cần mua Trong các kết quả tìmkiếm ra sẽ có các thông tin về người đăng bán cuốn sách đó và nó có trongkho của hệ thống hay không Nếu trong kho thì người sử dụng tới kho để
Trang 9 Kết quả khảo sát:
1.2 Biểu đồ use case
1.2.1 Biểu đồ use case tổng quan
Trang 10 Tim kiem sach: Người dùng hoặc khách muốn trao đổi sách thì sẽ dùngchức năng tìm kiếm để tìm ra cuốn sách mà mình cần trao đổi,khi tìmđược cuốn sách ưng ý thì sẽ tiến hành phiên trao đổi
Thêm vào giỏ hàng: Khi chọn được sách muốn đổi thì người dùng sẽthêm vào giỏ hàng,tại đây lưu tất cả các cuốn sách đã thêm trong phiêngiao dịch của mình
Trao đổi: người chọn sách muốn trao đổi và nhấn nút trao đổi,form traođổi được hiện ra,tại đây người dùng sẽ nhập thông tin sách muốn trao đổi
và gửi đi,hệ thống sẽ gửi thông báo đến chủ cuốn sách
Vote: Sau mỗi phiên giao dịch,hệ thống sẽ gửi mail đến mail của 2 người
và tại đây người dùng sẽ vote về độ tin cậy của người kia theo thangđiểm từ 1 đến 5
Thay đổi thông tin tài khoản: Người dùng muốn chỉnh sửa thông tin nhưmật khẩu,địa chỉ,số điện thoại thì sẽ dùng chức năng này
Thêm sách:Người dùng có sách cũ muốn bán hoặc trao đổi thì sẽ upload
sách lên hệ thống,đưa thông tin về cuốn sách như: tên sách,tên tác giả,giábìa,giá muốn bán,thể loại sách, hình ảnh sách
Xóa sách: Khi không muốn trao đổi hoặc sách đã bán rồi thì người dùng
có thể xóa sách của mình ra khỏi hệ thống
Sửa thông tin sách: Dùng khi khách hàng muốn đính chính thay đổi
thông tin về sách của mình
Đăng ký: khách hàng ghé thăm trang web muốn trao đổi hoặc up sách để
bán thì sẽ phải đăng ký thành viên
1.3 Đặc tả use case
a Đặc tả chức năng đăng ký:
Trang 11 Bước 1: Người dùng nhấn vào link đăng ký,hệ thống sẽ chuyển đếntrang đăng ký
Bước 2: Người dùng nhập thông tin cần để đăng ký gồm email,họ tên,mật khẩu, địa chỉ,số điện thoại.Hệ thống sẽ kiểm tra thông tin tàikhoản trong cơ sở dữ liệu,nếu thông tin chưa có ai đăng ký thì hệthống sẽ lưu thông tin đăng ký vào cơ sở dữ liệu và chuyển về trangđăng nhập thành công
b Đặc tả chức năng đăng nhập
Trang 12Bước 1: Người dùng chọn link login,hệ thống sẽ tự chuyển sang tranglogin,tại đó,người dùng nhập đầy đủ thông tin tài khoản của mình
Bước 2: Hệ thống kiểm tra sự đúng đắn của thông tin tài khoản,nếu đúngbáo đăng nhập thành công
c Đặc tả chức năng thêm sách
Trang 13 Bước 1: Người dùng nhấn vào link upload.Hệ thống sẽ chuyển vềtrang upload sách
Bước 2: Người dùng nhập các thông tin về sách mà form upload yêucầu (tên sách,tên tác giả,giá bìa,giá bán,hình ảnh,mô tả sơ lược ).Hệthống kiểm tra tính đúng đắn của dữ liệu nhập vào,nếu đúng thì lưuvào cơ sở dữ liệu và hiện thông báo upload thành công
d Đặc tả chức năng trao đổi
Bước 1: Người dùng tìm thấy quyển sách mình muốn trao đổi hoặc mua,sau
đó chọn thêm vào giỏ hàng
Bước 2: Hệ thống chuyển đến trang giỏ hàng,tại đây người dùng có 3 lựachọn, xóa sách khỏi giỏ hàng, tiếp tục mua hàng, thanh toán.Với lựa chọnxóa sách thì sách sẽ bị xóa khỏi giỏ hàng.Lựa chọn tiếp tục mua hàng thì hệthống sẽ chuyển về trang chủ để người dùng tiếp tục tìm thêm sách Còn nếuchọn thanh toán thì hệ thống sẽ chuyển đến trang thanh toán
Bước 3: Người dùng nhập các thông tin trong form thanh toán,sau đó nhấnđồng ý
Hệ thống sẽ gửi mail đến cả hai người (cả người mua và người chủ sách),với người chủ sác thì hệ thống sẽ thông báo với chủ sách là có người muốntrao đổi với sách của bạn,nếu đồng ý thì nhấn vào link,hệ thống sẽ tự động
Trang 14xóa sách ra khỏi hệ thống Còn đối với người mua sách thì sẽ có một mailvới nội dung là: Bạn đã trao đổi với người dùng abc hãy nhấn vào link đểvote độ tin cậy cho người dùng này
e Đặc tả chức năng tìm theo tên tác giả
ng
f Đặc tả chức năng tìm theo tên sách
Trang 15g Đặc tả chức năng vote
Trang 16 Bước 1: Sau khi người dùng thực hiện phiên trao đổi,hệ thống sẽ tự động gửimail cho người dùng yêu cầu người dùng vote độ tin cậy cho người kia
Bước 2: Người dùng nhấn vào link để vote,hệ thống sẽ tự động chuyển đến trang vote
Bước 3: Người dùng chọn mức vote và nhấn gửi đi,hệ thống tự động lưu thông tin vote vào cơ sở dữ liệu
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ BÀI TOÁN
2.1 Biểu đồ trình tự
a Biểu đồ trình tự chứng năng đăng ký
b Biểu đồ trình tự chức năng đăng nhập
Trang 17c Biểu đồ trình tự chức năng tìm theo tên tác giả
Trang 18d Biểu đồ trình tự chức năng tìm theo tên sách
Trang 19e Biểu đồ trình tự tìm theo tên tác giả
Trang 20f Biểu đồ trình tự thêm sách
Trang 21g Biểu đồ trình tự vote điểm
Trang 22h Biểu đồ trình tự chức năng trao đổi
Trang 232.2 Biểu đồ lớp
Biểu đồ lớp khái quát
I.namespace Controllers
Trang 241.Lớp AccountController : là tầng trung gian giữa Model và View,
là thành phần dùng để quản lý tương tác với người dùng, luồng ứng dụng tổng thể và các logic ứng dụng cụ thể
a Thuộc tính :private Customer customer
b Các ActionResult
public ActionResult Register()
[ HttpPost ]
public ActionResult Register( Register ctm)
Chức năng : Để người dùng đăng kí toài khoản ở hệ thố, ng.
public ActionResult Login()
[ HttpPost ]
public ActionResult Login( Login ctm)
Chức Năng : Để người dùng đăng nhập vào hệ thố, ng.
[ HttpGet ]
public ActionResult InfoAccount()
Chức Năng : Để người dùng xem thống tin tài khoản cuả mình.
Trang 25a Các thuộc tính : private
Product : tạo đối tượng sách
productDB: kết nối với cơ sở dữ liệu
listpd: tạo danh sách những cuốn sách
gh : Lưu trữ giỏ hàng của người dùng
b Các ActionResult
public ActionResult Index()
Chức năng : Hiển thị trang chủ
public ActionResult Seảrch()
Chức năng : Tìm kiếm sách
public ActionResult ViewCảtegory()
Chức năng : Hiện thị sách theo chủ đề
public ActionResult chitietsảch()
Chức năng : Hiển thị chi tiết cuốn sách theo bookID
public ActionResult Giohảng()
Chức năng : quản lý giỏ hàng của người dùng chưa đăng nhập
public ActionResult XoảMotSảnPhảmGioHảng( UploảdBook uploảd)
Chức năng : xóa 1 sản phẩm trong giỏ hàng
publicvoid loảdgiohảng()
Chức năng tạo session giỏ hàng
3.Lớp CustomerController :Điều khiển người dùng đã đăng nhập vào hệ thống gồm các chức năng có ở HomeController và thêm sách, xóa sách, quản lý sách, xem thông tin tài khoản,thực hiện giao dịch trao đổi, vote
a. Các thuộc tính : private
Product : tạo đối tượng sách
productDB: kết nối với lớp ProductDB
exchangeDB : kết nối với lớp ExchangeDB
gh : Lưu trữ giỏ hàng của người dùng
b. Các ActionResult
public ActionResult uploảdBook()
Chức năng: người dùng upload những cuốn sách mà mình muốn trao đổi vào hệ thống
public ActionResult ViewMyProduct()
Chức năng :hiển thị những cuốn sách người dùng
public ActionResult Delete( UploảdBook uploảd)
Chức năng : xóa sách của mình
public ActionResult ThảnhToảnGioHảng()
Trang 26Chức năng : khi tìm những cuốn sách muốn trao đổi, người dùng thanh toán giỏ hàng của mình thực hiện trao đổi.
public ActionResult DongYBảnHảng()
Chức năng: Khi người dùng nhận 1 email từ hệ thống có giao dịch cuốn sách này, Nếu người dùng đồng ý bán, cuốn sách sẽ được đánh dấu là bánhàng, và không xuất hiện ở trên trang web nữa
public ActionResult DảMuảHảng_Vote()
Chức năng: người mua hàng Vote độ tin cậy cho chủ sách
II NameSapec Models
1.NameSpace Models.entity :Các thực thể từ cơ sở dữ liệu
Trang 272 Namespace Models.DB : chức năng kết nối cơ sở dữ liệu
Trang 29III NameSpace Models.CheckInput
Chức năng của các Lớp này là kiểm tra dữ liệu đầu vào đúng hay sai
Ví dụ để kiểm tra độ dữ liệu Số điện thoại khi người dùng đăng ký thì
[ Required (ErrorMessảge = "Vui lòng nhấp Số, điện thoại" )]
[ RegulảrExpression ( "[0-9]{10,11}" , ErrorMessảge = "Số, điện thoại có 10, 11
Trang 30IV NameSpace Model
1.Class Tiện ích : chức năng gửi mail, Tạo chuỗi ngẫu nhiên dùng để đăng kí tài khoản, khôi phục mật khẩu, chuyển đổi String có dấu thành không dấu trong chức năng tìm kiếm
publicstảticbool guimảil( string toi, string chude, string noidung);
publicstảticstring CheckSum();
publicstảticstring convertString( string s)
2.Clảss Gio hàng: lưu trữ gio hàng người dùng