Bài tập mô phỏng ứng dụng đặt và điều phối xe cơ bản

Bài viết này của tôi nằm trong series ‘các bài tập tham khảo’. Series này chia sẻ một số cách tiếp cận, hiện thực mức căn bản nhất, tóm tắt nhất các bài tập, bài tập lớn ngành Khoa học máy tính, trường ĐH Mở Tp.HCM. Tôi hy vọng sẽ hữu ích với các bạn sinh viên IT đang chập chững trong học tập.

Bài viết này mình hướng đến các bạn sinh viên năm 1-2, có mong muốn hiện thực / mô phỏng được những ý tưởng / mô hình thực tế. Ví dụ là ứng dụng đặt xe và điều phối xe như Grab, Uber,… Và có thể đây cũng là bài tập lớn / đồ án môn học của chính các bạn. Nhưng vì kiến thức về nền tảng công nghệ còn khá hẹp, có thể là ta mới chỉ biết lập trình C++ trên console, chưa biết gì về OOP, chưa biết gì về database, về HTTP hay mobile… và suy nghĩ mình sẽ luôn là cần học thêm gì để hiện thực nó đây? không biết có đủ thời gian không đây? Rất nhiều tình huống là cố gắng học tất cả rồi vẫn chưa thể viết ra được chương trình hoặc là viết ra được nhưng hết thời gian nộp bài.

Nhưng thật ra các bạn hoàn toàn có thể tự tin rằng với kiến thức đã học sẽ có thể hoàn thành 90% yêu cầu. 10% còn lại là tham khảo, là vận dụng tư duy vào giải quyết vấn đề. Ngay từ ban đầu, thay vì tìm từ khóa công nghệ và học chúng thì mình đi vào phân tích yêu cầu và tìm giải pháp trong giới hạn của mình trước.

Ví dụ đối với bài tập mô phỏng ứng dụng đặt và điều phối xe. Ta có thể suy nghĩ được những tính năng cốt lõi của nó cần mô phỏng chính là:

  • Hành khách có thể gửi yêu cầu đặt xe, nhận được báo giá và được điều phối xe rảnh gần mình nhất đến đón mình
  • Tài xế có thể đồng ý lượt book hoặc chuyển qua cho tài xế khác xa dần

Ta sẽ mô phỏng tính năng trên bằng 2 ứng dụng console cho tài xế và cho hành khách hiện thực trên C++ hướng thủ tục. Việc giao tiếp giữa 2 user/ứng dụng chưa cần thiết phải tìm hiểu các cơ chế gửi nhận realtime, websocket, web service, mà mình có thể suy nghĩ đơn giản dùng 1 nơi để lưu trữ chung ví dụ dùng hệ thống File để lưu. Mỗi lần cần cập nhật thông tin thì user phải chủ động lấy thông tin. Và với chỉ với kiến thức về lập trình căn bản (if else, hàm, mảng, con trỏ, struct, sort) thì hoàn toàn có thể hiện thực hệ thống này:

Sơ đồ thành phần của hệ thống này tóm tắt như sau:

Sơ đồ thành phần của hệ thống

Vì để mô phỏng 1 cách đơn giản nhất, tôi chỉ định ra sẵn 1 danh sách các địa điểm cố định chứ không dùng hệ tọa độ địa lý, cũng như phần tính toán khoảng cách giữa 2 địa điểm, tôi cũng sẽ tính sẵn 1 cách tương đối và lưu vào file _place_distance.txt mà thực tế có thể là cần phải tính bằng thuật toán tìm đường đi ngắn nhất (dijkstra, A*, thorup,…) hay là lấy kết quả bằng 1 dịch vụ bản đồ số (google map, openstreet map,…)

Các hàm của ứng dụng dành cho hành khách
Các hàm của ứng dụng dành cho tài xế

Với giải pháp và cách xử lý như thế, thì tôi nghĩ chúng ta hoàn toàn có thể hoàn thành bài tập lớn này trong vòng 1 tuần.

Source code tham khảo: https://github.com/chungvinhkhang/goixenao

Dĩ nhiên, nếu ta đã có kiến thức về thiết kế oop, ddd, database, web service, web socket, google api, mobile… thì cũng đừng ngại đưa vào để hoàn thiện chương trình hơn và để việc mô phỏng thuyết phục hơn.

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Google photo

Bạn đang bình luận bằng tài khoản Google Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s