Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 25 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
25
Dung lượng
524,9 KB
Nội dung
ĐẠI HỌC ĐÀ NẴNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN CƠ SỞ Đề tài 702: XÂY DỰNG ỨNG DỤNG ĐẶT MĨN ĂN VÀ THANH TỐN ĐƠN HÀNG SINH VIÊN THỰC HIỆN: Nguyễn Duy Thịnh LỚP: 19TCLC-DT4 NHÓM: 19.13A Võ Văn Thành LỚP: 19TCLC-DT4 NHÓM: 19.13A GVHD: Trần Hồ Thủy Tiên Đà Nẵng - Năm 2020 GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở LỜI MỞ ĐẦU Đầu tiên, chúng em xin gửi lời cảm ơn chân thành tới ThS Trần Hồ Thủy Tiên giúp đỡ chúng em hoàn thành tốt đề tài đồ án Cơ sở Trong trình hướng dẫn chúng em làm đồ án, cô bảo hướng dẫn tận tình cho chúng em lý thuyết, kỹ lập trình, cách giải vấn đề đề tài,… Chân thành cảm ơn bạn bè lớp hỗ trợ để hoàn thành tốt đề tài báo cáo Mặc dù cố gắng hoàn thành đồ án phạm vi khả cho phép chắn khơng tránh khỏi thiếu sót Chúng em mong nhận thơng cảm, góp ý tận tình bảo q Thầy Cơ Nguyễn Duy Thịnh Võ Văn Thành Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở MỤC LỤC LỜI MỞ ĐẦU .2 MỤC LỤC DANH MỤC HÌNH VẼ GIỚI THIỆU ĐỀ TÀI CƠ SỞ LÝ THUYẾT 2.1 Ý tưởng 2.2 Cơ sở lý thuyết .6 TỔ CHỨC CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN .7 3.1 Phát biểu toán 3.2 Cấu trúc liệu 3.2.1 Danh sách đặc 3.2.2 Kĩ thuật thao tác với file 3.2.3 Đệ quy .12 3.3 Thuật toán 13 CHƯƠNG TRÌNH VÀ KẾT QUẢ 18 4.1 Tổ chức chương trình 18 4.2 Kết 20 4.2.1 Giao diện chương trình 20 4.2.2 Kết thực thi chương trình 24 4.2.3 Nhận xét 25 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 25 a Kết luận 25 b Hướng phát triển 25 TÀI LIỆU THAM KHẢO 26 Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở DANH MỤC HÌNH VẼ Hình Cấu trúc file chứa danh sách tài khoản mật Hình Mơ cấu trúc danh sách đặc Hình Mơ tả cách đệ quy làm việc C .11 Hình Giao diện mở đầu đồ án 19 Hình Giao diện đăng nhập thành công 19 Hình Giao diện đăng nhập thất bại 20 Hình Nhập mã giao dịch để bắt đầu phiên làm việc 20 Hình Menu cửa hàng 20 Hình Hồn tất chọn in hóa đơn 21 Hình 10 Giao diện nhập thêm số lượng gọi .21 Hình 11 Các trường hợp nhập báo lỗi 22 Hình 12 Giao diện xác nhận mã giao dịch để kết thúc phiên làm việc .22 Hình 13 Giao diện báo nhập sai mã giao dịch 22 Hình 14 Giao diện in hóa đơn cuối ngày sau nhập mã giao dịch .23 Hình 15 Hóa đơn khách hàng .23 Hình 16 Hóa đơn khách hàng thứ hai .23 Hình 17 Hóa đơn ngày làm việc 12/06/2020 .24 DANH MỤC BẢNG BIỂU Bảng Các chế độ mở file văn C .9 Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở GIỚI THIỆU ĐỀ TÀI Trong thời buổi công nghệ phát triển nay, nhiều nhà hàng, quán ăn sử dụng phương pháp đặt món, tốn đơn hàng phương pháp thủ công thô sơ, tốn nhiều thời gian thiếu xác Vì vậy, đề tài xây dựng ứng dụng đặt ăn tốn đơn hàng điều hoàn toàn phù hợp cần thiết CƠ SỞ LÝ THUYẾT 2.1 Ý tưởng - Bắt đầu ngày, thu ngân nhập vào mã giao dịch - Chương trình in Menu ăn nhà hàng Cho phép khách hàng nhập vào ăn cần đặt với số lượng tương ứng Chương trình tính tổng, giảm giá có in hóa đơn - Khách hàng phép nhập tối đa nhập vào 0 khơng chọn thêm Vì vậy, khách hàng chọn đủ tiến trình chọn kết thúc in Hóa đơn mà không cần khách hàng phải nhập vào 0 - Khách hàng giảm giá 25% tổng đơn hàng >= triệu - Kết thúc ngày thu ngân nhập vào mã giao dịch Chương trình thống kê in toàn đơn hàng có ngày ghi file 2.2 Cơ sở lý thuyết - Sử dụng kiểu cấu trúc (struct) để lưu trường: tên món, giá, số món; mã món, số lượng, tổng số món, tổng tiền struct Menu{ char TenMon[10][100] = {…}; int Gia[10] = {…}; int SoMon = 6; }; Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang GVHD: Trần Hồ Thủy Tiên struct HoaDon{ Đồ án Cơ sở int MaMon[10]; int SoLuong[10]; int soMon; int TongTien[10]; }; - Sử dụng mảng chiều để lưu giá trị mã - Sử dụng thuật toán thao tác với mảng - Các thao tác với file: mở file, đóng file, đọc file, ghi file, xuất file - Các hàm xử lí chuỗi: nhập chuỗi, lấy độ dài chuỗi, so sánh hai chuỗi, chép chuỗi, ghép chuỗi TỔ CHỨC CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN 3.1 Phát biểu tốn - Nhập vào tài khoản, mật để thực đăng nhập vào hệ thống làm việc, danh sách tài khoản mật nằm file đường dẫn D:\DACS\account.txt Hình Cấu trúc file chứa danh sách tài khoản mật Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở + Nếu nhập tài khoản mật chương trình hiển thị thơng báo: “Dang nhap cong!” + Nếu nhập sai chương trình báo lỗi: “Sai tai khoan hoac mat khau! Vui long thu lai.” - Nhập mã giao dịch ngày, sau nhập mã giao dịch, chương trình hiển thị menu ăn cửa hàng - Nhập vào mã số lượng theo dạng “x y” với x mã ăn y số lượng: + Nếu nhập sai định dạng ví dụ như: “a 5”, “a b”, “5 a” chương trình báo lỗi: “Da xay loi, vui long thu lai: ” + Nếu nhập mã khơng tồn chương trình báo lỗi: “Ma mon khong ton tai, vui long thu lai: ” + Nếu nhập số lượng quy định cửa hàng chương trình báo lỗi: “Vuot qua so luong quy dinh, vui long thu lai!!!” + Sau nhập đủ nhập vào “0 0” chương trình kết thúc phần chọn tiến hành in hóa đơn đơn hàng - Nhập vào “c” để tiếp tục phiên làm việc với hóa đơn tiếp theo, nhập phím để kết thúc ngày - Nhập vào mã giao dịch để xác nhận kết thúc ngày làm việc: + Nếu chương trình in tất đơn hàng ngày + Nếu sai chương trình hiển thị thơng báo: “Ma giao dich khong khop vui long thu lai!” 3.2 Cấu trúc liệu 3.2.1 Danh sách đặc Danh sách đặc danh sách mà phần tử lưu trữ nhớ mảng Mảng tập hợp phần tử có kiểu liệu phần tử lưu trữ dãy ô nhớ liên tục nhớ Các phần tử mảng truy cập cách sử dụng “chỉ số” Mảng có kích thước N có số từ tới N – Ví dụ, với N = 5, số danh sách số mảng có giá trị từ đến tương ứng với phần tử Các phần tử danh sách đặc truy cập cách tên_mảng[chỉ_số] Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở Hình Mơ cấu trúc danh sách đặc Ưu điểm danh sách đặc dễ sử dụng, tốc độ truy xuất nhanh Nhược điểm kích thước mảng cố định, việc chèn xóa phần tử nhiều thời gian, chương trình báo lỗi ta khai báo kích thước mảng lớn lí khơng đủ vùng nhớ liên tục cho mảng 3.2.2 Kĩ thuật thao tác với file File sử dụng để lưu trữ liệu cần thiết chương trình để ngừng chạy liệu không bị dùng để lưu trữ liệu đầu vào lớn sử dụng lại cần chạy chương trình Có hai kiểu file file văn (text files) file nhị phân (binary files), đồ án liên quan chủ yếu với phần thao tác với file văn nên tìm hiểu thao tác với file văn C/C++ Khai báo file: Khi làm việc với file, bạn cần khai báo trỏ kiểu FILE Việc khai báo cần thiết để có kết nối chương trình tập tin bạn cần thao tác Ví dụ: FILE *f; Thao tác mở file: Để đọc ghi file C/C++ ngôn ngữ lập trình , việc cần làm mở file mà bạn muốn làm việc Trong C/C++, mở file cách sử dụng hàm fopen() thư viện stdio.h sau: f = fopen(“filename”, “mode”); Trong đó: filename tên file đường dẫn đến file cần mở Mode chế độ mở file, chế độ mở file nằm bảng sau: Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở Bảng Các chế độ mở file văn C Mode Ý nghĩa Ghi r Mở file cho phép đọc Nếu file không tồn tại, fopen() trả NULL w Mở file cho phép ghi Nếu file tồn tại, nội dung bị ghi đè Nếu file khơng tồn tại, tạo tự động a Mở file chế độ ghi “append” Tức Nếu file khơng tồn tại, sẽ ghi vào cuối nội dung có tạo tự động r+ Mở file cho phép đọc ghi Nếu file không tồn tại, fopen() trả NULL w+ Mở file cho phép đọc ghi Nếu file tồn tại, nội dung bị ghi đè Nếu file không tồn tại, tạo tự động a+ Mở file cho phép đọc ghi “append” Nếu file không tồn tại, tạo tự động Thao tác đóng file: để đóng file, sử dụng hàm: int fclose(FILE *f); Ví dụ: fclose(f); Đọc file văn C: Để làm việc với file văn bản, ta sử dụng fprintf( ) fscanf( ) Hàm fscanf( ) dùng để đọc liệu từ file, đọc từ tập tin gặp eof (end of file) fscanf( ) có dạng: int fscanf(FILE *f, const char *format [, argument, …]); Ví dụ: chương trình đọc file test.txt, file có dạng: Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang GVHD: Trần Hồ Thủy Tiên #include Đồ án Cơ sở #include main(){ FILE *f; int a[100][100], m, n; f = fopen("test.txt","r"); if (f == NULL) printf(“File khong ton tai!”); else{ fscanf(f,"%d %d",&m,&n); for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) fscanf(f, "%d", &a[i][j]); } fclose(f); } Chương trình đọc hai phần tử m hàng, n cột từ dòng file, sau đọc liệu vào mảng hai chiều a[ ][ ] Ghi file văn C: Hàm fprintf() thường sử dụng ghi liệu vào tập tin, fprintf() có dạng: int fprintf(FILE *f, const char *format [, argument, …]); Ví dụ: ghi liệu từ mảng a[5] = {1, 2, 3, 4, 5} vào file test.txt #include #include main(){ FILE *f; int a[5] = {1, 2, 3, 4, 5}; f = fopen("test.txt","w"); for (int i = 0; i < 5; i++) fprintf(f, "%d", a[i]); fclose(f); } Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang 10 GVHD: Trần Hồ Thủy Tiên 3.2.3 Đệ quy Đồ án Cơ sở Hàm đệ quy hàm có xuất dịng lệnh tự gọi lại thân hàm Hình Mơ tả cách đệ quy làm việc C Có thể thấy, hàm đệ quy gọi (ở ví dụ hàm main gọi) thay hàm thực thi lần thân hàm gọi lại => Nó tự chạy lại số lần Ưu điểm đệ quy: Đệ quy thêm rõ ràng (đôi khi) giảm thời gian cần thiết để viết gỡ lỗi mã (nhưng không thiết phải giảm yêu cầu không gian tốc độ thực hiện) Thực tốt việc giải vấn đề dựa cấu trúc Nhược điểm đệ quy: Sử dụng nhiều nhớ Thời gian thực chậm so với vòng lặp Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang 11 GVHD: Trần Hồ Thủy Tiên 3.3 Thuật toán Đồ án Cơ sở Sơ đồ khối hàm login: Hình Sơ đồ khối hàm login Độ phức tạp thuật toán: O(n) Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang 12 GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở Sơ đồ khối hàm int stack(int MaMon[ ], int SoMon, int Mamon): Hình Sơ đồ khối hàm stack Độ phức tạp thuật toán: O(n) Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang 13 GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở Sơ đồ khối int check_bug(Menu &menu, HoaDon &hoadon): Hình Sơ đồ khối hàm check_bug Độ phức tạp thuật toán: O(1) Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang 14 GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở Sơ đồ khối int check_cp(float inpt): Hình Sơ đồ khối hàm check_cp Độ phức tạp thuật toán: O(1) Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang 15 GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở Sơ đồ khối void ChonMon(HoaDon &hoadon, Menu &menu): Hình Sơ đồ khối hàm ChonMon Độ phức tạp thuật toán: O( ) Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang 16 GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở Sơ đồ làm việc toàn chương trình: Main DACS_Info login passinp nhapmgd ChonMon check_cp intien InMenu thoigian check_bug Menu TongTien endday inhd check Add_Sl HoaDon stack Hình Sơ đồ làm việc tồn chương trình CHƯƠNG TRÌNH VÀ KẾT QUẢ 4.1 Tổ chức chương trình #include #include #include #include #include FILE *f, *f1, *f2; char fname[100], name[100], ans; int TongNgay = 0; Hàm in thông tin đồ án: void DACS_Info(); Hàm nhập vào mật không hiển thị mật lên hình: void passinp(char pass[100], char user[100]); Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang 17 GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở Hàm đăng nhập tài khoản để vào phiên làm việc: void login(FILE *f); Hàm nhập mã giao dịch đầu ngày: void nhapmgd(char fname[], char tg[]); Hàm in thời gian tốn hóa đơn vào file: void thoigian(FILE *f); Hàm in hóa đơn từ file hình: void inhd(const char *file); Hàm thêm dấu phẩy để ngăn cách hàng nghìn, triệu, tỉ… : trả chuỗi thêm dấu phẩy ngăn cách hàng nghìn, triệu, tỉ… char* intien(int a); Hàm in menu ăn hình: void InMenu(Menu &menu, int n); Hàm kiểm tra ăn đặt hay chưa: trả đặt ngược lại trả Int stack(int MaMon[], int SoMon, int Mamon); Hàm kiểm tra mã có tồn menu khơng đồng thời kiểm tra số lượng có vượt quy định không: trả báo lỗi ngược lại trả Int check_bug(Menu &menu, HoaDon &hoadon); Hàm kiểm tra liệu nhập vào có định dạng số nguyên dương không: trả số thực, -1 chuỗi kí tự; trả -1 trả giá trị số nhập vào định dạng int check_cp(float inpt); Hàm cộng dồn số lượng nhập nhập: void Add_Sl(HoaDon &hoadon, Menu &menu); Hàm chọn món, lưu thơng tin việc chọn vào struct HoaDon: void ChonMon(Menu &menu, HoaDon &hoadon); Hàm kiểm tra xác nhận kết thúc chọn nhập “0 0”: trả nhận lệnh kết thúc, ngược lại trả Int check(Menu &menu, HoaDon &hoadon, int maxofmon); Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang 18 GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở Hàm tính tốn tổng tiền, ghi hóa đơn khách hàng hóa đơn ngày vào file, in hóa đơn khách hàng hình: Void TongTien(Menu &menu, HoaDon &hoadon, int &TongNgay, FILE *f1, FILE *f2); Hàm nhập mã giao dịch để xác nhận kết thúc ngày, in hóa đơn ngày hình: void endday(char name[100], char fname[100], FILE *f2, int TongNgay); 4.2 Kết 4.2.1 Giao diện chương trình Hình 10 Giao diện mở đầu đồ án Hình 11 Giao diện đăng nhập thành công Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang 19 GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở Hình 12 Giao diện đăng nhập thất bại Hình 13 Nhập mã giao dịch để bắt đầu phiên làm việc Hình 14 Menu cửa hàng Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang 20 GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở Hình 15 Hồn tất chọn in hóa đơn Hình 16 Giao diện nhập thêm số lượng gọi Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang 21 GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở Hình 17 Các trường hợp nhập báo lỗi Hình 18 Giao diện xác nhận mã giao dịch để kết thúc phiên làm việc Hình 19 Giao diện báo nhập sai mã giao dịch Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang 22 GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở Hình 20 Giao diện in hóa đơn cuối ngày sau nhập mã giao dịch 4.2.2 Kết thực thi chương trình Kết hóa đơn khách hàng lưu vào file đường dẫn D:\DACS\hdkh.txt, file ghi đè liên tục suốt trình làm việc nên không phát sinh vấn đề đầy nhớ sử dụng Hình 21 Hóa đơn khách hàng Hình 22 Hóa đơn khách hàng thứ hai Kết hóa đơn cuối ngày ghi vào file đường dẫn D:\DACS\“Tên mã giao dịch nhập vào đầu ngày”.txt, ví dụ như: D:\DACS\12062020.txt Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang 23 GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở Hình 23 Hóa đơn ngày làm việc 12/06/2020 4.2.3 Nhận xét Đồ án sở lần giúp chúng em hiểu rõ cách xây dựng chương trình ứng dụng hồn thiện, thao tác với file mảng, thao tác xử lí chuỗi; đồng thời rèn luyện cẩn thận, tỉ mỉ xếp ngăn nắp Mặc dù gặp nhiều khó khăn nhờ sợ giúp đỡ tận tình, chu đáo Trần Hồ Thủy Tiên giúp chúng em hoàn thành đồ án giao KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết luận Chương trình hoạt động theo yêu cầu đặt đề tài Ngồi ra, chương trình cịn có phần đăng nhập tài khoản để vào phiên làm việc, phần in số tiền có dấy phẩy ngăn cách hàng nghìn, triệu, tỉ phần kiểm tra nhập lỗi với trường hợp liệu đầu vào khơng u cầu tốn Hướng phát triển - Tiếp tục sửa lỗi tồn chương trình (nếu có) - Phát triển ứng dụng có sử dụng thêm hàm đồ họa để người dùng thao tác cách thuận tiện xác - Phát triển thêm nhiều tính tiện ích để làm phong phú chức ứng dụng Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang 24 GVHD: Trần Hồ Thủy Tiên Đồ án Cơ sở TÀI LIỆU THAM KHẢO [1] Nguyễn Văn Hiếu, Cấp phát nhớ động C, https://nguyenvanhieu.vn/cap-phat-bo-nho-dong-trong-c/ [2] Stackoverflow, Convert int to string, https://stackoverflow.com/questions/8257714/how-to-convert-an-int-tostring-in-c/23840699 Nguyễn Duy Thịnh - Võ Văn Thành – 19TCLC_DT4 Trang 25