Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 63 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
63
Dung lượng
2,03 MB
Nội dung
ĐẠI HỌC ĐÀ NẴNG TRƢỜNG ĐẠI HỌC SƢ PHẠM KHOA TIN HỌC Đề Tài: TÌM HIỂU VÀ SỬ DỤNG QT PHÁT TRIỂN ỨNG DỤNG COMPETION MANAGER Giảng viên hƣớng dẫn : ThS Hồ Ngọc Tú Sinh viên thực : Võ Thị Lời Lớp : 10CNTT3 Niên khóa : 2010 - 2014 Đà Nẵng – 05/2014 DANH MỤC HÌNH ẢNH HÌNH TRANG Hình 2.1 Giao diện ứng dụng Notepad Hình 2.2 Tạo project với wizard Hình 2.3 Chọn nơi lƣu tên thƣ mục lƣu Hình 2.4 Chọn Qmake 11 Hình 2.5 Tạo chi tiết project 11 Hình 2.6 Project Notepad 12 Hình 2.7 Thiết kế giao diện ngƣời dùng 12 Hình 2.8 Hộp thoại mở file 14 Hình 2.9 Demo hồn chỉnh 15 Hình 3.1 Chức ứng dụng 16 Hình 3.2 Sơ đồ UseCase tổng quát 18 Hình 3.3 Sơ đồ đặc tả liệu 20 Hình 4.1 Giao diện hình đầu 22 Hình 4.2 Giao diện competition 23 Hình 4.3 Giao diện competitor 24 Hình 4.4 Giao diện competing school 25 Hình 4.5 Giao diện families 26 Hình 4.6 Giao diện Add new competition 27 Hình 4.7 Giao diện add new competitor 28 Hình 4.8 Giao diện remove competition 29 Hình 4.9 Giao diện report 30 Hình 4.10 Mẫu trang in 31 DANH MỤC BẢNG BIỂU BẢNG TRANG Bảng 3.1 Mô tả Actor 19 Bảng 3.2 Mô tả UseCase 19 LỜI CAM ĐOAN Tôi xin cam đoan: Những nội dung báo cáo thực hướng dẫn trực tiếp thầy Th.S Hồ Ngọc Tú phận training công ty HTK – INC Mọi tham khảo dùng báo cáo trích dẫn rõ ràng tên tác giả, tên cơng trình, thời gian, địa điểm công bố Mọi chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tơi xin chịu hồn tồn trách nhiệm Sinh viên Võ Thị Lời MỤC LỤC CHƢƠNG 1: MỞ ĐẦU 1.1 BỐI CẢNH CỦA ĐỀ TÀI .2 1.1.1 Tên đề tài .2 1.1.2 Lý chọn đề tài 1.2 MỤC ĐÍCH NGHIÊN CỨU 1.3 ĐỐI TƢỢNG NGHIÊN CỨU 1.4 PHƢƠNG PHÁP NGHIÊN CỨU 1.5 MỤC TIÊU CẦN ĐẠT ĐƢỢC 1.6 Ý NGHĨA CỦA ĐỀ TÀI CHƢƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 TỔNG QUAN VỀ QT .6 2.1.1 Qt lịch sử phát triển .6 2.1.2 Chức Qt .7 2.1.3 Lƣu trữ liệu QT .7 2.2 XÂY DỰNG ỨNG DỤNG NOTEPAD VỚI QT .8 2.2.1 Tải cài đặt Qt 2.2.2 Xây dựng ứng dụng Notepad với Qt .9 CHƢƠNG 3: XÂY DỰNG HỆ THỐNG QUẢN LÝ CÁC CUỘC THI – COMPETITION MANAGER 17 3.1 MƠ TẢ BÀI TỐN .17 3.2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 19 3.2.1 Đặc tả hệ thống (UseCase) 19 3.2.2 Mô tả 20 3.2.3 Sơ đồ đặc tả liệu 21 CHƢƠNG 4: KẾT QUẢ ĐẠT ĐƢỢC .22 4.1 Giao diện chƣơng hoàn chỉnh .22 4.2 Các lớp chƣơng trình 32 KẾT LUẬN .56 ƢU ĐIỂM 56 HẠN CHẾ 56 HƢỚNG PHÁT TRIỂN 56 TÀI LIỆU THAM KHẢO .57 LỜI CẢM ƠN Trước hết,em xin gửi lời cảm ơn chân thành đến thầy cô khoa tin học, tận tình truyền đạt kiến thức trường, bạn tập thể lớp 10CNTT3 giúp đỡ em q trình học tập Em xin gởi lịng biết ơn sâu sắc đến ba, mẹ, bạn bè ủng hộ, giúp đỡ, động viên em suốt trình học thời gian thực tập đầy khó khăn, thử thách Em xin chân thành cảm ơn thầy Hồ Ngọc Tú nhiệt tình hướng dẫn việc nghiên cứu thực đề tài Mặc dù em cố gắng nổ lực để thực đề tài này, song chắn khó tránh khỏi thiếu sót Do đó, em mong nhận thơng cảm bảo tận tình q thầy Một lần nữa, em xin chân thành cảm ơn! Sinh viên Võ Thị Lời Khóa luận tốt nghiệp GVHD: Th.S Hồ Ngọc Tú CHƢƠNG 1: MỞ ĐẦU 1.1 BỐI CẢNH CỦA ĐỀ TÀI 1.1.1 Tên đề tài “Tìm hiểu sử dụng Qt phát triển ứng dụng Competition Manager.” 1.1.2 Lý chọn đề tài Công nghệ thông tin giữ vai trò quan trọng phát triển lồi ngƣời nói chung phát triển kinh tế, trị, xã hội đất nƣớc nói riêng, Việt Nam không ngoại lệ Việc nắm bắt đƣợc công nghệ thông tin giúp bắt kịp với thời đại, nắm bắt đƣợc xu phát triển giới, đƣa dự báo, dự đốn, góp phần vào phát triển chung giới Ngơn ngữ lập trình C ngôn ngữ mệnh lệnh đƣợc phát triển từ đầu thập niên 1970 Ken Thompson Dennis Rithchie để dùng hệ điều hành UNIX Từ ngơn ngữ lan rộng nhiều hệ điều hành khác trở thành ngôn ngữ phổ dụng C ngơn ngữ có hiệu đƣợc ƣa chuộng để viết phần mềm hệ thống, đƣợc dùng cho việc viết ứng dụng Đến năm 1980, Bjarne Stroustrup Bell Labs phát triển C++ (mà tên nguyên thủy "C với lớp" suốt thập niên 1980nhƣ nâng cao ngôn ngữ C Những bổ sung nâng cao bắt đầu với thêm vào khái niệm lớp, khái niệm hàm ảo, chồng toán tử, đa kế thừa, tiêu bản, xử lý ngoại lệ Tiêu chuẩn ngôn ngữ C++ đƣợc thông qua năm 1998 nhƣ ISO/IEC 14882:1998 Phiên lƣu hành phiên 2003,ISO/IEC 14882:2003 Hiện tiêu chuẩn ngôn ngữ C++ C++11 (ISO/IEC 14882:2011) Với kĩ sƣ phần mềm, C++ ngôn ngữ tiềm đầy thách thức Hiện nay, thị trƣờng có nhiều cơng cụ phát triển dạng mơi trƣờng tích hợp Võ Thị Lời – 10CNTT3 Khóa luận tốt nghiệp GVHD: Th.S Hồ Ngọc Tú (IDE - Integrated Development Environment, kết hợp chức soạn thảo, biên dịch, sinh mã gỡ lỗi chƣơng trình), nhiên để chọn cho IDE thích hợp, dễ sử dụng trình trải nghiệm lâu dài Trong suốt năm học trƣờng, với đam mê thích thú với C++, em tìm hiểu sử dụng số IDE nhƣ Turbo C++ 3.0, DevCpp, Visual C++ 6.0, Visual C++ 2005 Express Edition… gần Qt Creator Theo quan điểm cá nhân, em nhận thấy Qt Creator IDE có nhiều ƣu điểm thích hợp cho việc phát triển ứng dụng C++ Tuy nhiên, Qt đƣợc sử dụng việc giảng dạy việc phát triển ứng dụng C++ cho nhà phát triển Ngay Interet tài liệu nƣớc nói cơng cụ Chính vậy, em thực đề tài “Tìm hiểu sử dụng Qt để phát triển ứng dụng Competition Manager – phần mềm quản lý thi dancing toàn Bắc Mỹ” với mong muốn tìm hiểu xu hƣớng xây dựng thử nghiệm phần mềm nhỏ với công cụ 1.2 MỤC ĐÍCH NGHIÊN CỨU Mục đích em nghiên cứu đề tài là: ● Áp dụng kiến thức học đƣợc trƣờng nhƣ: ○ Phân tích thiết kế hệ thống thơng tin ○ Cơng cụ mơi trƣờng phát triển phần mềm ○ Trí tuệ nhân tạo ○ Công nghệ phần mềm ● Nghiên cứu tìm hiểu lập trình ứng dụng C++ với phần mềm Qt Creator o Thành phần ứng dụng C++ o Giao diện ngƣời dùng o Hình ảnh o Lƣu trữ liệu, kết nối liệu o Lập trình quy tắc lập trình ứng dụng với C++ Võ Thị Lời – 10CNTT3 Khóa luận tốt nghiệp GVHD: Th.S Hồ Ngọc Tú 1.3 ĐỐI TƢỢNG NGHIÊN CỨU ● Khách thể nghiên cứu : ○ Hệ điều hành Window 7, công cụ SQLite ● Đối tƣợng nghiên cứu o Khách hàng, học viên công ty Feis – Bắc Mỹ Những ngƣời đăng kí trang web trực tuyến cơng ty eFeis.com o Yêu cầu ban quản lý công ty – ngƣời sử dụng phần mềm 1.4 PHƢƠNG PHÁP NGHIÊN CỨU 1.4.1 Đọc hiểu tài liệu qua sách, báo, tài liệu Qt 1.4.2 Tìm hiểu, phân tích u cầu ngƣời dùng – ban quản lý công ty Feis 1.4.3 Thực hành thiết kế giao diện, xây dựng chức phần mềm dƣới hỗ trợ ngƣời hƣớng dẫn, tham khảo ý kiến ngƣời hƣớng dẫn dựa yêu cầu khách hàng - ban quản lý công ty Feis 1.4.4 Tiến hành tổng hợp thông tin, phân loại Kết hợp với kiến thức cơng nghệ có sẵn, tiến hành việc thiết kế xây dựng phần mềm “Competition Manager” 1.5 MỤC TIÊU CẦN ĐẠT ĐƢỢC 1.5.1 Hoàn thành ứng dụng Hoàn thiện chức ứng dụng nhƣ sau: Cho phép ngƣời sử dụng xem chi tiết thông tin thi, thành viên… Cho phép ngƣời sử dụng thêm, sửa xóa thơng tin thi, thành viên… Cho phép in báo cáo thơng tin ngƣời sử dụng cần Cho phép tìm kiếm tồn CSDL theo từ khóa ngƣời sử dụng nhập vào Võ Thị Lời – 10CNTT3 Khóa luận tốt nghiệp GVHD: Th.S Hồ Ngọc Tú if (competition.load(DQWhere("CompetitionID") == competition_id)) { QString competition_name = competition.AlternateID->toString() + ": " + competition.CompetitionName->toString() + "\n"; stream JudgeID->toInt(); if (judge.load(DQWhere("JudgeID") == judge_id)) { judge_name = judge.JudgeName->toString(); stream CompetitionID->toInt()) { competition_id = records.at(i)->CompetitionID->toInt(); Võ Thị Lời – 10CNTT3 43 Khóa luận tốt nghiệp GVHD: Th.S Hồ Ngọc Tú judge_id = records.at(i)->JudgeID->toInt(); if (competition.load(DQWhere("CompetitionID") == competition_id)) { QString competition_name = "\n" + competition.AlternateID>toString() + ": " + competition.CompetitionName->toString() + "\n"; stream toString(); stream JudgeID->toInt()) { judge_id = records.at(i)->JudgeID->toInt(); if (judge.load(DQWhere("JudgeID") == judge_id)) { judge_name = judge.JudgeName->toString(); stream Name->toString(); // Solo Fees, Figure Fees & Excluded Fees double solo = 0, figure = 0, excluded = 0; DQQuery query1; DQList records1 = query1.filter(DQWhere("FamilyID = ", family_id)).all(); if (records1.size() > 0) { for (int j = 0; j < records1.size(); j++) { int competitor_id = records1.at(j)->CompetitorID->toInt(); QSqlQuery query; QString query_string; // Solo Fees query_string = "SELECT SUM(Fee) FROM COMPETITION WHERE COMPETITION.TeamEvent = AND CompetitionID IN (SELECT Võ Thị Lời – 10CNTT3 49 Khóa luận tốt nghiệp GVHD: Th.S Hồ Ngọc Tú CompetitionID FROM REGISTRATION WHERE CompetitorID = " + QString::number(competitor_id) + ")"; query.exec(query_string); while (query.next()) { solo += query.value(0).toDouble(); break; } // Figure Fees query_string = "SELECT SUM(Fee) FROM COMPETITION WHERE COMPETITION.TeamEvent = AND CompetitionID IN (SELECT CompetitionID FROM REGISTRATION WHERE CompetitorID = " + QString::number(competitor_id) + ")"; query.exec(query_string); while (query.next()) { figure += query.value(0).toDouble(); break; } // Excluded Fees query_string = "SELECT SUM(Fee) FROM COMPETITION WHERE COMPETITION.ExcludeMax = AND CompetitionID IN (SELECT CompetitionID FROM REGISTRATION WHERE CompetitorID = " + QString::number(competitor_id) + ")"; query.exec(query_string); Võ Thị Lời – 10CNTT3 50 Khóa luận tốt nghiệp GVHD: Th.S Hồ Ngọc Tú while (query.next()) { excluded += query.value(0).toDouble(); break; } } } solo_fees = QString::number(solo); figure_fees = QString::number(figure); excluded_fees = QString::number(excluded); // Entry Fee entry_fees = QString::number(solo + figure - excluded); // List Item Sales double total_item = 0; if (!list_item.trimmed().isEmpty() && records_item.size() > 0) { QStringList items; for (int t = 0; t < records_item.size(); t++) { int item_sale_id = records_item.at(t)->ItemID->toInt(); double item_sale_price = records_item.at(t)->Price->toDouble(); double item_summary = 0; Võ Thị Lời – 10CNTT3 51 Khóa luận tốt nghiệp GVHD: Th.S Hồ Ngọc Tú DQQuery query_item_sales; DQList records_item_sales = query_item_sales.filter(DQWhere("FamilyID = ", family_id) && DQWhere("ItemID = ", item_sale_id)).all(); if (records_item_sales.size() > 0) { for (int k = 0; k < records_item_sales.size(); k++) { item_summary += records_item_sales.at(k)->Quantity>toInt() * item_sale_price; } total_item += item_summary; } items += "\"" + QString::number(item_summary) + "\""; } list_item_sales = items.join(","); } // Processing Fee processing_fee = records.at(i)->ProcessingFee->toString(); // Amount Due amount_due = QString::number(records.at(i)->AmountPaid>toDouble() + records.at(i)->AmountDue->toDouble() + total_item); //Amount Paid Võ Thị Lời – 10CNTT3 52 Khóa luận tốt nghiệp GVHD: Th.S Hồ Ngọc Tú amount_paid = records.at(i)->AmountPaid->toString(); // Payment Date payment_date = QDateTime::fromString(records.at(i)->PaymentDate>toString(), "yyyy-MM-dd HH:mm:ss").toString("dd-MM-yyyy"); // Balance balance = QString::number(records.at(i)->AmountDue->toDouble() + total_item); // Payment Method PaymentTypes payment; if (payment.load(DQWhere("PaymentID") == records.at(i)>PaymentType->toInt())) { payment_method = payment.PaymentMethod->toString(); } else { payment_method = ""; } // eFeis Transaction Fee eFeis_transaction_fee = "0"; // Late Fee if (records.at(i)->AddLateFee->toInt() == 1) { Võ Thị Lời – 10CNTT3 53 Khóa luận tốt nghiệp GVHD: Th.S Hồ Ngọc Tú DQQuery query_config; DQList config = query_config.all(); if (config.size() > 0) { late_fee = config.at(0)->LateFee->toString(); } } else { late_fee = "0"; } // Export data if (!list_item.trimmed().isEmpty() && records_item.size() > 0) { line = "\"" + family_name + "\",\"" + solo_fees + "\",\"" + figure_fees + "\",\"" + excluded_fees + "\",\"" + entry_fees + "\"," + list_item_sales + ",\"" + processing_fee + "\",\"" + amount_due + "\",\"" + amount_paid + "\",\"" + payment_date + "\",\"" + balance + "\",\"" + payment_method + "\",\"" + eFeis_transaction_fee + "\",\"" + late_fee + "\"\n"; } else { line = "\"" + family_name + "\",\"" + solo_fees + "\",\"" + figure_fees + "\",\"" + excluded_fees + "\",\"" + entry_fees + ",\"" + processing_fee + "\",\"" + amount_due + "\",\"" + amount_paid + "\",\"" + payment_date + "\",\"" + balance + "\",\"" + payment_method + "\",\"" + eFeis_transaction_fee + "\",\"" + late_fee + "\"\n"; } Võ Thị Lời – 10CNTT3 54 Khóa luận tốt nghiệp GVHD: Th.S Hồ Ngọc Tú stream