{"id":19482996,"url":"https://github.com/pnv2003/hcmut-ssps","last_synced_at":"2025-04-15T11:19:59.853Z","repository":{"id":206749259,"uuid":"717344225","full_name":"pnv2003/hcmut-ssps","owner":"pnv2003","description":"HCMUT Student Smart Printing Service, Software Engineering Assignment, Fall 2023","archived":false,"fork":false,"pushed_at":"2023-12-13T04:13:35.000Z","size":5014,"stargazers_count":2,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-15T11:19:52.462Z","etag":null,"topics":["mysql","react","rest-api","software-engineering","spring-boot","uml-diagram","web"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pnv2003.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-11T07:12:26.000Z","updated_at":"2025-03-16T04:23:58.000Z","dependencies_parsed_at":"2024-09-14T16:24:48.336Z","dependency_job_id":"1d07c3d7-6695-4365-8fe9-1b00a9ed159a","html_url":"https://github.com/pnv2003/hcmut-ssps","commit_stats":null,"previous_names":["phuongngo0320/hcmut-ssps","pnv2003/hcmut-ssps"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnv2003%2Fhcmut-ssps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnv2003%2Fhcmut-ssps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnv2003%2Fhcmut-ssps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnv2003%2Fhcmut-ssps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pnv2003","download_url":"https://codeload.github.com/pnv2003/hcmut-ssps/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249058388,"owners_count":21205911,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mysql","react","rest-api","software-engineering","spring-boot","uml-diagram","web"],"created_at":"2024-11-10T20:12:58.186Z","updated_at":"2025-04-15T11:19:59.836Z","avatar_url":"https://github.com/pnv2003.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca id=\"readme-top\"\u003e\u003c/a\u003e\n\n\n\n\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/phuongngo0320/hcmut-ssps\"\u003e\n    \u003cimg src=\"hcmut.png\" alt=\"Logo\" width=\"160\" height=\"160\"\u003e\n  \u003c/a\u003e\n\n\u003ch3 align=\"center\"\u003eStudent Smart Printing Service\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    Ứng dụng cung cấp dịch vụ in ấn tiện lợi cho sinh viên\n    \u003cbr /\u003e\n    \u003ca href=\"#getting-started\"\u003e\u003cstrong\u003eXem hướng dẫn »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/phuongngo0320/hcmut-ssps/releases\"\u003eTải xuống\u003c/a\u003e\n    ·\n    \u003ca href=\"mailto:phuong.ngo0320@hcmut.edu.vn\"\u003eBáo lỗi\u003c/a\u003e\n    ·\n    \u003ca href=\"mailto:phuong.ngo0320@hcmut.edu.vn\"\u003eĐề xuất tính năng\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003c!-- \u003cdetails\u003e\n  \u003csummary\u003eMục lục\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eVề dự án này\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eCông nghệ sử dụng\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003eBắt đầu\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#prerequisites\"\u003eĐiều kiện\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#installation\"\u003eCài đặt\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#usage\"\u003eHướng dẫn sử dụng\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#notes\"\u003eMột số lưu ý\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#functions\"\u003eThao tác trong ứng dụng\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#errors\"\u003eLỗi có thể xảy ra khi sử dụng\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eLiên hệ\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eTài liệu tham khảo\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e --\u003e\n\n\n\n\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n\u003ca id=\"about-the-project\"\u003e\u003c/a\u003e\n\n## Về dự án này\n\nỨng dụng này được hiện thực để phục vụ cho môn học Công nghệ phần mềm, thuộc về Trường Đại học Bách khoa, ĐHQG TP.HCM. Dự án hướng đến mục tiêu xây dựng nên một trang web cung cấp dịch vụ in ấn tiện lợi cho sinh viên của trường.\n\nThành viên phát triển dự án:\n\n- Ngô Văn Phương - phát triển frontend\n- Kiều Đặng Quốc Tuấn - phát triển backend\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n### Công nghệ sử dụng\n\u003ca id=\"built-with\"\u003e\u003c/a\u003e\n\n- [React](https://react.dev/)\n- [React Bootstrap](https://react-bootstrap.github.io/)\n- [React Router](https://reactrouter.com/en/main)\n- [Font Awesome](https://fontawesome.com/)\n- [Spring](https://spring.io/projects/spring-framework)\n- [Spring Boot](https://spring.io/projects/spring-boot/)\n- [Spring JPA](https://spring.io/projects/spring-data-jpa)\n- [MySQL](https://www.mysql.com/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\n\n\u003c!-- GETTING STARTED --\u003e\n\u003ca id=\"getting-started\"\u003e\u003c/a\u003e\n\n## Bắt đầu\n\n\u003ca id=\"prerequisites\"\u003e\u003c/a\u003e\n### Điều kiện\n\nTrước khi sử dụng ứng dụng, bạn cần cài đặt trước một số phần mềm sau:\n\n- [Node.js](https://nodejs.org/en) (phiên bản LTS)\n- [Java](https://www.oracle.com/java/technologies/downloads/) (phiên bản JDK 21)\n- [Apache Maven](https://maven.apache.org/download.cgi) (Link - binary zip archive)\n- [MySQL](https://dev.mysql.com/downloads/installer/) (phiên bản Community)\n\n\u003ca id=\"installation\"\u003e\u003c/a\u003e\n### Cài đặt\n\nVì ứng dụng chưa được triển khai tên miền, bạn có thể sử dụng nó bằng localhost với các bước sau:\n\n1. Truy cập đường dẫn [https://github.com/phuongngo0320/hcmut-ssps/releases](https://github.com/phuongngo0320/hcmut-ssps/releases/tag/v1.0.0).\n\n2. Tải về source code và giải nén, lưu vào nơi bạn muốn\n\n3. Mở một chương trình shell (Command Prompt, Powershell, Bash...) \n\n4. Thay đổi đường dẫn tới thư mục của ứng dụng (hcmut-ssps) bằng lệnh `cd \u003cdir\u003e`\n\n5. Tại thư mục gốc, chạy các lệnh sau để khởi động chương trình phía client (giao diện ứng dụng sẽ tự động hiển thị sau bước này)\n\n```bash\ncd client\nnpm install\nnpm start\n```\n\n6. Tại vị trí thư mục gốc của ứng dụng (`hcmut-ssps`), mở file cấu hình ứng dụng tại đường dẫn `server/src/main/resources/application.properties`, thay đổi các dòng sau với username và password của tài khoản MySQL mà bạn muốn sử dụng:\n\n```properties\nspring.datasource.username=...\nspring.datasource.password=...\n```\n\n7. Tại thư mục gốc, chạy các lệnh sau để khởi động chương trình phía server\n\n```bash\ncd server\nmvn clean install\nmvn spring-boot:run\n```\n\n8. Sử dụng dữ liệu mẫu trong file `cnpm_db.sql`\n\n- Mở phần mềm MySQL Workbench (đi kèm khi tải MySQL Community)\n\n- Đăng nhập vào cơ sở dữ liệu bạn muốn (mặc định: Local Instance MySQL80).\n\n- Chọn __Server -\u003e Data Import__ \n\n- Chọn __Import from Self-Contained File__, chọn đường dẫn tới file `cnpm_db.sql`\n\n- Chọn Default Target Schema là `cnpm_db`\n\n- Mở Tab __Import Progress__ và nhấn __Start Import__.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\n\n\u003c!-- USAGE --\u003e\n\u003ca id=\"usage\"\u003e\u003c/a\u003e\n\n## Hướng dẫn sử dụng\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n__Lưu ý__: vì ứng dụng vẫn đang trong giai đoạn phát triển nên một số chức năng sẽ không được đầy đủ như mong muốn\n\n### Tài khoản để sử dụng ứng dụng\n\nCác tài khoản có sẵn trong dữ liệu mẫu:\n\n- Tài khoản sinh viên:\n\n    - Username: tuan\n    - Password: 123\n\n- Tài khoản nhân viên quản lý:\n\n    - Username: phuong\n    - Password: 321\n\nTài khoản sinh viên có sẵn số dư page balance là 2000.\n\n### Nhóm chức năng của sinh viên\n\n__Chú ý__: Đăng nhập với username `tuan` và password `123` để sử dụng nhóm chức năng này\n\n#### In tài liệu\n\nỞ giao diện __In tài liệu__, bạn có thể gửi một yêu cầu in tới server với các bước sau:\n\n1. Đăng tải file (có thể đăng nhiều file một lúc)\n\n    - Các ràng buộc về định dạng và kích thước được hiển thị trên giao diện (có thể cấu hình phía nhân viên), nếu vi phạm thì file sẽ bị xóa\n\n    - Có thể xóa file khi cần\n\n2. Thiết lập cấu hình in\n\n    - Có thể chọn biểu tượng Info để xem cấu hình đang được áp dụng cho từng file\n\n    - Có thể chọn một file và điền vào biểu mẫu để thiết lập cấu hình mới (có 2 lựa chọn: \"Lưu\" - áp dụng cho file đang chọn, \"Áp dụng cho tất cả\" - áp dụng cho toàn bộ file đã đăng)\n\n    - Số trang in có thể vượt quá số dư (được hiển thị trên giao diện), nếu vậy thì yêu cầu in sẽ bị từ chối\n\n    - Đơn vị trang in mặc định là A4: \n\n        - 1 trang A1 = 8 trang A4\n        - 1 trang A2 = 4 trang A4\n        - 1 trang A3 = 2 trang A4\n        - 1 trang A5 = 0.5 trang A4 (số thập phân được làm tròn lên)\n\n3. Chọn vị trí máy in \n\n    - Lưu ý rằng máy in đang ngưng hoạt động sẽ không được hiển thị\n\n4. Nhấn __Xác nhận yêu cầu__\n\n__Chú ý__: Tính năng tự động đếm số trang, chọn trang cần in hay bản in xem trước chưa được hiện thực.\n\n#### Mua trang in\n\nỞ giao diện __Mua trang in__, bạn có thể gửi một yêu cầu mua trang tới server với các bước sau:\n\n1. Chọn phương thức thanh toán\n\n2. Chọn số trang cần mua\n\n    Hệ thống sẽ tự động tính toán tổng tiền dựa trên đơn giá (có thể được cấu hình phía nhân viên)\n\n3. Xác nhận thanh toán\n\n__Chú ý__: Tính năng liên kết tới hệ thống thanh toán trực tuyến chưa được hiện thực.\n\n#### Lịch sử in\n\nỞ giao diện __Lịch sử in__, bạn có thể xem lại toàn bộ các yêu cầu in đã gửi từ giao diện __In tài liệu__.\n\n### Nhóm chức năng của nhân viên quản lý (SPSO)\n\n__Chú ý__: Đăng nhập với username `phuong` và password `321` để sử dụng nhóm chức năng này\n\n#### Dashboard\n\nỞ giao diện __Dashboard__, bạn có thể xem các thống kê liên quan tới hệ thống, bao gồm:\n\n- Số trang A4 đã in ứng với từng máy in\n\n- Số yêu cầu in được gửi tới từng máy in\n\n- Phần trăm số trang đã in ứng với từng kích thước trang\n\n- Doanh thu hằng tháng từ giao dịch mua trang in\n\n#### Quản lý máy in\n\nỞ giao diện __Quản lý máy in__, bạn có thể sử dụng các chức năng như:\n\n- Thêm máy in mới\n\n- Xóa máy in\n\n- Chỉnh sửa máy in\n\n- Tìm kiếm máy in\n\n#### Thông số máy in\n\nỞ giao diện __Thông số máy in__, bạn có thể sử dụng các chức năng như:\n\n- Xem các thông số hoạt động của máy in (lượt in, diện tích giấy in, hiệu suất)\n\n- Bật/tắt máy in\n\n#### Cấu hình cấp phát\n\nỞ giao diện __Cấp phát__, bạn có thể sử dụng các chức năng như:\n\n- Thêm lịch cấp phát trang in\n\n- Xóa lịch cấp phát trang in\n\n#### Cấu hình liên quan tới file\n\nỞ giao diện __Cấu hình file__, bạn có thể sử dụng các chức năng như:\n\n- Thêm/xóa định dạng file cho phép\n\n- Chỉnh sửa kích thước file lớn nhất cho phép\n\n- Chỉnh sửa đơn giá trang in\n\n#### Cấu hình vị trí\n\nỞ giao diện __Vị trí__, bạn có thể sử dụng các chức năng như:\n\n- Thêm/xóa cơ sở\n\n- Thêm/xóa tòa tại cơ sở được chọn\n\n- Thêm/xóa phòng tại tòa được chọn\n\n#### Lịch sử in \u0026 thanh toán\n\nỞ giao diện __Vị trí__, bạn có thể xem lại toàn bộ các yêu cầu in được thực hiện tại giao diện __In tài liệu__ và yêu cầu thanh toán được thực hiện tại giao diện __Mua trang in__.\n\n\u003c!-- CONTACT --\u003e\n\u003ca id=\"contact\"\u003e\u003c/a\u003e\n\n## Liên hệ\n\nMọi thắc mắc, báo lỗi, đề xuất tính năng cho ứng dụng xin hay liên hệ qua địa chỉ email:\n\n- Ngô Văn Phương - phuong.ngo0320@hcmut.edu.vn\n- Kiều Đặng Quốc Tuấn - tuan.kieudangquoc03@hcmut.edu.vn\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\u003c!-- ACKNOWLEDGMENTS --\u003e\n\u003ca id=\"acknowledgments\"\u003e\u003c/a\u003e\n\n## Tài liệu tham khảo\n\n1. Sommerville, I. (2016). Software Engineering 10th Edition. Boston: Pearson Education Limited.\n\n2. Thinh, N. H. P. (2019). _Use Case Diagram và 5 sai lầm thường gặp_.\nRetrieved from Thinhnotes: https://thinhnotes.com/chuyen-nghe-ba/use-case-diagram-va-5-sai-lam-thuong-gap\n\n3. Thinh, N. H. P. (2019). _Viết đặc tả Use Case sao đơn giản nhưng hiệu quả?_\nRetrieved from Thinhnotes: https://thinhnotes.com/chuyen-nghe-ba/viet-dac-ta-use-case-sao-don-gian-nhung-hieu-qua\n\n4. [Spring Framework Documentation :: Spring Framework](https://docs.spring.io/spring-framework/reference/index.html)\n\n5. [Spring Boot Reference Documentation](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/)\n\n6. [React Reference Overview – React](https://react.dev/reference/react)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpnv2003%2Fhcmut-ssps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpnv2003%2Fhcmut-ssps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpnv2003%2Fhcmut-ssps/lists"}