Tải bản đầy đủ (.pdf) (42 trang)

báo cáo bài tập lớn tìm hiểu về mô hình xoắn ốc và viết tài liệu đặc tả hệ thống quản lý sách trong thư viện trường đại học công nghiệp hà nội

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.45 MB, 42 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

Hoàng Nam Trường - 2020607253 - 2020602815 Phạm Văn Tú

- 2020603124 Bùi Duy Văn

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<small>3 </small>

<b>Lời cảm ơn </b>

Bộ môn Nhập Môn Công Nghệ Phần Mềm là môn học thú vị, vơ cùng bổ ích và có tính thực tế cao. Đảm bảo cung cấp đủ kiến thức, gắn liền với nhu cầu thực tiễn của sinh viên.

<i>Em xin gửi lời cảm ơn đến các thầy cô bộ môn và thầy Vũ Đình Minh - </i>

giảng viên học phần đã truyền đạt những kiến thức quý báu cho chúng em trong suốt thời gian học tập vừa qua. Trong thời gian tham gia lớp học Nhập môn công nghệ phần mềm của thầy, chúng em đã có thêm cho mình nhiều kiến thức bổ ích, tinh thần học tập tích cực và tinh thần làm việc nhóm hiệu quả, nghiêm túc. Đây chắc chắn sẽ là những kiến thức quý báu, là hành trang để em có thể

<i>vững bước sau này. </i>

Chúng em xin chân thành cảm ơn!

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<small>5. Cấu trúc tài liệu báo cáo ... 7 </small>

<small>6. Kế hoạch thực hiện đề tài ... 7 </small>

<b><small>KẾT QUẢ NGHIÊN CỨU ... 8 </small></b>

<small>Chương 1. Tìm hiểu về quy trình phát triển phần mềm và mơ hình quy trình phát triển xoắn ốc ... 8 </small>

<small>1.1. Quy trình phát triển phần mềm: ... 8 </small>

<small>1.1.1. Khái niệm: ... 8 </small>

<small>1.1.2. Các hoạt động cơ bản của quy trình phát triển phần mềm: ... 8 </small>

<small>1.2. Mơ hình quy trình phát triển xoắn ốc: ... 8 </small>

<small>1.2.1. Giới thiệu mô hình ... 8 </small>

<small>1.2.2 Các pha trong mơ hình ... 9 </small>

<small>1.2.3 Đánh giá ... 12 </small>

<small>Chương 2. Phân tích đặc tả yêu cầu phần mềm. ... 15 </small>

<small>2.1. Các tác nhân và nhiệm vụ ... 15 </small>

<small>2.2. Các chức năng của hệ thống (web) và nhiệm vụ ... 16 </small>

<small>2.3. Biểu đồ Use case tổng quan ... 17 </small>

<small>2.4. Biểu đồ Use case phân rã theo tác nhân ... 17 </small>

<small>2.5. Đặc tả các Use case ... 19 </small>

<small>2.5.1. Mơ tả use case tìm kiếm ... 19 </small>

<small>2.5.2. Mơ tả use case mượn trả sách ... 20 </small>

<small>2.5.3. Mô tả use case xem thông tin sách ... 21 </small>

<small>2.5.4. Mô tả use case quản lý sách... 21 </small>

<small>2.5.5. Mô tả use case quản lý sinh viên ... 23 </small>

<small>2.5.6. Mô tả use case quản lý mượn và trả sách ... 24 </small>

<small>2.5.7. Mô tả use case đăng nhập hệ thống ... 25 </small>

<small>2.5.8. Mô tả use case cấp tài khoản ... 29 </small>

<small>2.5.9. Mô tả use case phân quyền ... 29 </small>

<small>Chương 3. Quy trình nghiệp vụ ... 31 </small>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<small>5 </small>

<b>Danh mục hình ảnh </b>

Hình 2 <small>:</small>Mơ hình xoắn ốc với 5 vùng làm việc Hình 3 <small>:</small>Mơ hình xoắn ốc với 4 vùng làm việc

Hình 5: Biểu đồ use case tổng quan

Hình 6: Biểu đồ use case phân rã theo sinh viên Hình 7: Biểu đồ use case phân rã theo giáo viên Hình 8: Biểu đồ use case phân rã theo người quản trị Hình 9: Sơ đồ quy trình hoạt động của hệ thống Hình 10: Sơ đồ quy trình quản lí sách

Hình 11: Sơ đồ quy trình quản lý việc mượn và trả sách

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

Trường ĐH Công Nghiệp Hà Nội là một trong những trường có số lượng sinh viên lớn nhất cả nước. Do vậy nhu cầu tiếp cận với tài liệu học tập có trong thư viện của trường là rất lớn. Bên cạnh đó diện tích thư viện có hạn, do vậy ý tưởng xây dựng một hệ thống website thư viện trực tuyến là cần thiết và hữu dụng cho sinh viên nhất là trong bối cảnh 2 năm gần đây, dịch bệnh lan rộng, việc tương tác trực tuyến của sinh viên với nhà trường và thư viện lại càng trở nên quan trọng.

Với ý tưởng trên nhóm 1 chúng em sẽ cung cấp các yêu cầu chức năng của hệ thống website thư viện gồm tất cả thông tin cần thiết về các đầu sách hiện có trong thư viện trường Đại Học Công Nghiệp Hà Nội, cho phép sinh viên tra cứu, tìm kiếm những cuốn sách cần thiết, đặt mượn mà không cần trực tiếp đến thư viện trường. Qua đó tiết kiệm thời gian, công sức và giảm thiểu nguy cơ dịch bệnh chung.

2. Mục đích

Mục đích đề tài : Tìm hiểu các mơ hình quy trình và tập trung vào mơ hình xoắn ốc, từ đó ứng dụng để viết tài liệu đặc tả hệ thống quản lý sách trong thư viện trường đại học Công Nghiệp Hà Nội.

4. Ý tưởng sơ bộ

<i>(không xây dựng mà chỉ viết tài liệu đặc tả các chức năng) </i>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<small>7 </small>Mô tả hệ thống quản lý sách trong thư viện của trường Đại Học Công Nghiệp Hà Nội với ý tưởng sau :

+ Website chứa tất cả các thơng tin chi tiết về các cuốn sách hiện có trong thư viện trường đại học Công Nghiệp Hà Nội như: Tên sách, Tên tác giả, Nhà xuất bản, Năm xuất bản, Số Trang, Tiền đặt cọc, Số lượng có trong thư viện…

+ Phân loại chi tiết các đầu sách theo danh mục: Sách dùng trong giảng dạy tại trường, Sách dùng để tham khảo thêm, Phân loại sách theo Khoa quản lý của sinh viên (Oto, QTKD, CNTT…)

+ Sách có bản PDF sẽ có thể cho phép sinh viên đọc trực tuyến. Việc phân loại cụ thể sẽ giúp sinh viên dễ dàng hơn trong việc tìm kiếm các cuốn sách cần thiết

5. Cấu trúc tài liệu báo cáo

6. Kế hoạch thực hiện đề tài

<small>Xem biểu mẫu 02 (BM02) </small>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<small>8 </small>

Chương 1. Tìm hiểu về quy <b>trình </b>phát triển phần

<b>mềm và mơ hình quy trình phát triển xoắn ốc 1.1. Quy trình phát triển phần mềm: </b>

1.1.1. Khái niệm:

+ Vòng đời phát triển phần mềm (SDLC-Software Development Life Cycle) là một quá trình bao gồm một loạt các hoạt động được lên kế hoạch để phát triển hoặc thay đổi Sản phẩm Phần mềm. SDLC còn được gọi là Quy trình phát triển phần mềm.

1.1.2. Các hoạt động cơ bản của quy trình phát triển phần mềm:

+ Stage 1: Planning and Requirement Analysis (Lập kế hoạch và Phân tích Yêu cầu)

+ Stage 2: Defining Requirements (Xác định/Định nghĩa yêu cầu) + Stage 3: Designing the Product Architecture (Thiết kế Kiến trúc Sản

phẩm)

+ Stage 4: Building or Developing the Product (Xây dựng/phát triển sản phẩm)

+ Stage 5: Testing the Product (Kiểm tra sản phẩm)

+ Stage 6: Deployment in the Market and Maintenance (Triển khai/phát hành trên thị trường và duy trì/bảo trì)

<b>1.2. Mơ hình quy trình phát triển xoắn ốc: </b>

1.2.1. Giới thiệu mơ hình

có hệ thống, được kiểm sốt của mơ hình thác nước. Mơ hình xoắn ốc này là sự kết hợp giữa mơ hình quá trình phát triển lặp đi lặp lại và mơ hình phát triển tuyến tính tuần tự. Mơ hình với sự nhấn mạnh rất cao vào phân tích rủi ro. Nó

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<small>9 </small>cho phép phát hành gia tăng sản phẩm hoặc cải tiến gia tăng thông qua mỗi lần lặp lại theo vòng xoắn ốc.

Đường phát triển xoắn ốc, tính từ trong ra được phân chia thành các nhiệm vụ:

<i>Phát triển ý tưởng (Concept Development); Phát triển hệ thống (System Development); Cải tiến hệ thống(System Enhancement); Bảo trì hệ thống (System Maintenance). </i>

<b>1.2.2 Các pha trong mơ hình </b>

Các pha (các vùng làm việc) được phân chia thành các cung. Mỗi một biến thể của mơ hình xoắn ốc có thể có từ 3 đến 6 vùng.

hàng để tìm hiểu yêu cầu, ý kiến;

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<small>10 </small>

▪ Phân tích rủi ro;

<i>Hình 2 <small>:</small></i>Mơ hình xoắn ốc với 5 vùng làm việc

hàng để tìm hiểu yêu cầu, ý kiến;

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<small>11 </small>

<i>Hình 3 <small>:</small></i>Mơ hình xoắn ốc với 4 vùng làm việc

được thu thập từ khách hàng và các mục tiêu được xác định, xây dựng và phân tích khi bắt đầu mọi giai đoạn. Sau đó, các giải pháp thay thế có thể cho giai đoạn được đề xuất trong góc phần tư này;

giải pháp khả thi được đánh giá để chọn ra giải pháp tốt nhất có thể;

ba, các tính năng đã xác định được phát triển và xác minh thông

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<small>12 </small>qua thử nghiệm. Ở cuối góc phần tư thứ ba, phiên bản tiếp theo của phần mềm đã có sẵn;

phần tư thứ tư, Khách hàng đánh giá phiên bản đã phát triển cho đến nay của phần mềm. Cuối cùng, lập kế hoạch cho giai đoạn tiếp theo được bắt đầu.

1.2.3 Đánh giá

Mơ hình xoắn ốc chú trọng vào phân tích rủi ro dự án: Rủi ro là bất kỳ tình huống bất lợi nào có thể ảnh hưởng đến việc hồn thành thành cơng một dự án phần mềm. Tính năng quan trọng nhất của mơ hình xoắn ốc là xử lý những rủi ro chưa biết này sau khi dự án đã bắt đầu. Việc giải quyết rủi ro như vậy được thực hiện dễ dàng hơn bằng cách phát triển một mẫu thử nghiệm. Mơ hình xoắn ốc hỗ trợ đối phó với rủi ro bằng cách cung cấp phạm vi để xây dựng một nguyên mẫu ở mọi giai đoạn phát triển phần mềm. Mỗi giai đoạn trong mơ hình

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<small>13 </small>được bắt đầu với yêu cầu/mục tiêu thiết kế và kết thúc với việc khách hàng kiểm tra tiến độ của từng giai đoạn.

Mơ hình ngun mẫu cũng hỗ trợ xử lý rủi ro, nhưng rủi ro phải được xác định hồn tồn trước khi bắt đầu cơng việc phát triển của dự án. Nhưng trong thực tế, rủi ro của dự án có thể xảy ra sau khi cơng việc phát triển bắt đầu, trong trường hợp đó, chúng ta không thể sử dụng mô hình tạo mẫu. Trong mỗi giai đoạn của mơ hình xoắn ốc, các tính năng của sản phẩm được xác định ngày tháng và phân tích, cũng như các rủi ro tại thời điểm đó được xác định và được giải quyết thơng qua q trình tạo mẫu. Do đó, mơ hình này linh hoạt hơn nhiều so với các mơ hình quy trình khác. Cụ thể như sau:

Mơ hình sử dụng prototyping như một cơ chế giảm rủi ro và cho phép phát triển các prototype ở bất kỳ giai đoạn nào của quá trình phát triển.

Mỗi giai đoạn trong mơ hình được bắt đầu với u cầu/mục tiêu thiết kế và kết thúc với việc khách hàng kiểm tra tiến độ của từng giai đoạn.

Mơ hình xoắn ốc được gọi là Meta model vì nó thay thế tất cả các mơ hình SDLC khác.

Mơ hình xoắn ốc là một cách tiếp cận thực tế để phát triển các sản phẩm phần mềm quy mơ lớn bởi vì phần mềm phát triển khi quá trình tiến triển (the software evolves as the process progresses). Ngoài ra, nhà phát triển và khách hàng hiểu rõ hơn và phản ứng với các rủi ro ở mỗi cấp độ phát triển.

Nó duy trì cách tiếp cận có tính hệ thống, giống như mơ hình vịng đời (Life Cycle model) nhưng kết hợp nó thành một framework lặp lại và được phản ánh nhiều hơn từ thế giới thực.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<small>14 </small>Nếu được sử dụng đúng cách, mô hình này sẽ giảm thiểu rủi ro trước khi chúng trở thành vấn đề. Vì các rủi ro kỹ thuật được xem xét ở tất cả các giai đoạn.

<b>Mô hình Spiral thích hợp với dự án phần mềm: </b>

▪ Khi việc đánh giá (phân tích) các chi phí và các rủi ro là quan trọng;

hàng;

thận).

<b>Ưu điểm: </b>

quá trình phát triển, trong trường hợp đó, Mơ hình xoắn ốc là mơ hình phát triển tốt nhất để tuân theo do phân tích rủi ro và xử lý rủi ro ở mọi giai đoạn.

dự án lớn và phức tạp.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<small>15 </small>

cầu ở giai đoạn sau có thể được kết hợp chính xác bằng cách sử dụng mơ hình này.

▪ Sự hài lòng của khách hàng: Khách hàng có thể thấy sự phát triển của sản phẩm ở giai đoạn đầu của quá trình phát triển phần mềm và do đó, họ quen với hệ thống bằng cách sử dụng nó trước khi hồn thành tổng sản phẩm.

<b>Hạn chế: </b>

hình SDLC( Vòng đời phát triển phần mềm còn được gọi là Quy trình phát triển phần mềm) khác.

nó đắt.

thành cơng phụ thuộc rất nhiều vào Phân tích rủi ro. Nếu khơng có các chun gia dày dặn kinh nghiệm, sẽ là một thất bại trong việc phát triển một dự án sử dụng mơ hình này.

không được biết trước khi bắt đầu dự án nên việc ước tính thời gian là rất khó khăn..

Chương 2. Phân tích đặc tả yêu cầu phần mềm.

<b>2.1. Các tác nhân và nhiệm vụ </b>

+ Người quản trị: Người thiết lập hệ thống, thay đổi thông tin, cập nhật và phân quyền thành viên

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<small>16 </small>

<b>2.2. Các chức năng của hệ thống (web) và nhiệm vụ </b>

+ Ký hiệu tác nhân:

+ Các chức năng:

trong cơ sở dữ liệu

Sinh viên, Giáo viên

sách

Cho phép sinh viên xem thông tin

trả

Cho phép giáo viên quản lý việc

hệ thống

Sinh viên, Giáo viên, Người quản

trị

khoản cho sinh viên và giáo viên

Người quản trị

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<small>17 </small>

khoản cho người dùng

Người quản trị

<b>2.3. Biểu đồ Use case tổng quan </b>

<i>Hình 5: Biểu đồ use case tổng quan </i>

<b>2.4. Biểu đồ Use case phân rã theo tác nhân </b>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<small>18 </small>

<i>Hình 6: Biểu đồ use case phân rã theo sinh viên </i>

<i>Hình 7: Biểu đồ use case phân rã theo giáo viên </i>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<small>19 </small>

<i>Hình 8: Biểu đồ use case phân rã theo người quản trị </i>

<b>2.5. Đặc tả các Use case </b>

2.5.1. Mô tả use case tìm kiếm

+ Use case này cho người dùng tìm kiếm sách theo tên + Luồng sự kiện:

3. Dữ liệu hiển thị mỗi sách bao gồm : Tiêu đề, tên tác giả, tên NXB, năm XB, tóm tắt nội dung.

<b>● Luồng rẽ nhánh: </b>

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<small>20 </small>o Tại bước 2 trong luồng cơ bản, nếu dữ liệu người dùng nhập vào không tồn tại trong CSDL, hệ thống đưa ra thơng báo “Khơng tìm thấy sách ”. Quay trở lại bước 1.

o Tại bất kì bước nào của use case, nếu không kết nối được với CSDL, hệ thống hiển thị 1 thông báo lỗi “Lỗi kết nối ! ” Use case kết thúc.

+ Các u cầu đặc biệt: khơng có

+ Hậu điều kiện: khơng có + Điểm mở rộng: khơng có 2.5.2. Mơ tả use case mượn trả sách

+ Use case này cho phép sinh viên mượn trả sách + Luồng sự kiện:

● Luồng cơ bản:

1. Use case này bắt đầu khi sinh viên kích vào nút mượn trả sách trên màn hình hệ thống. Hệ thống hiển thị lên màn hình hình form mượn trả sách.

2. Sinh viên nhập thông tin đăng nhập vào form mượn trả sách gồm những thông tin: tên sách, tên sinh viên, ngày mượn, ngày trả sách rồi kích vào nút đặt mượn sách. Hệ thống lấy thông tin: tên sách, tên sinh viên, ngày mượn, ngày trả sách gửi lên hệ thông rồi ghi vào Bảng MUON_TRA_SACH. Hệ thống gửi thông báo mượn sách thành công, use case kết thúc.

● Luồng rẽ nhánh:

o Tại bước 1 trong luồng cơ bản nếu trong bảng SACH chưa có bản ghi nào thì hệ thống sẽ hiển thị thơng báo “Chưa có bản ghi nào trong cơ sở dữ liệu” và use case kết thúc.

o Tại bước 2 trong luồng cơ bản nếu sinh viên kích vào nút “Đặt mượn sách”, hệ thống sẽ kiểm tra bảng SACH nếu số lượng sách đã

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<small>21 </small>hết thì hệ thống sẽ hiển thị thông báo “sách đã mượn hết ” và use case kết thúc.

o Tại bất kỳ bước nào trong luồng cơ bản, nếu không kết nối được với cơ sở dữ liệu thì hệ thống sẽ hiển thị một thông báo lỗi và use case kết thúc.

+ Các u cầu đặc biệt: khơng có

+ Tiền điều kiện: Để mượn trả sách thành công sinh viên cần phải cấp tài khoản bởi quản trị với quyền truy cập là sinh viên trước.

+ Hậu điều kiện: khơng có + Điểm mở rộng : khơng có 2.5.3. Mơ tả use case xem thơng tin sách

+ Use case này cho phép người dùng xem thông tin chi tiết về 1 cuốn sách + Luồng sự kiện:

● Luồng cơ bản:

1. Use case bắt đầu khi khách hàng click vào tên hoặc hình ảnh mình hoạ của một cuốn sách bất kì. Hệ thống sẽ lấy tất cả thơng tin về cuốn sách đó trong CSDL và hiển thị lên màn hình. Use case kết thúc.

+ Use case này cho phép giáo viên thực hiện thao tác quản lý sách trong thư viện

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<small>22 </small>+ Luồng sự kiện:

● Luồng cơ bản:

lý sách trên màn hình hệ thống. Hệ thống sẽ hiển thị ra các thao tác quản lý sách gồm thêm sách, xóa sách , sửa và lấy thông tin các sách trong bảng SACH và hiển thị lên màn hình danh sách các đầu sách cùng các thao tác thêm sách , xóa sách, sửa lên màn hình.

hình form thêm sách gồm các thông tin của sách. Giáo viên điền đầy đủ thơng tin của sách và kích vào nút “Thêm sách”. Hệ thống sẽ lấy dữ liệu để lưu vào bảng SACH trong CSDL.

hình các thể loại sách, thơng tin sách và có thêm nút “Xóa sách” ở mỗi loại sách. Người dùng kích vào nút “Xóa sách” ở mỗi cuốn sách cần xóa.Hệ thống sẽ xóa dữ liệu của sách đó trong bảng SACH trong CSDL.

sách trong bảng SACH cho phép giáo viên chỉnh sữa. Giáo viên chỉnh sữa xong nội dung cần thiết rồi kích vào nút “Sửa”. Hệ thống sẽ lưu dữ liệu vào bảng SACH trong CSDL.

Use case kết thúc. ● Luồng rẽ nhánh:

o Tại bước 1 trong luồng cơ bản nếu trong bảng SACH chưa có bản ghi nào thì hệ thống sẽ thơng báo “ Chưa có bản ghi nào trong CSDL: và use case kết thúc.

o Tại bất kỳ bước nào trong luồng cơ bản, nếu không kết nối được với cơ sở dữ liệu thì hệ thống sẽ hiển thị một thông báo lỗi và use case kết thúc.

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<small>23 </small>+ Các u cầu đặc biệt: khơng có

+ Tiền điều kiện: Giáo viên cần đăng nhập trước khi thao tác tại các bước. + Hậu điều kiện: khơng có

+ Điểm mở rộng : khơng có 2.5.5. Mơ tả use case quản lý sinh viên

+ Use case này cho phép giáo viên thực hiện thao tác quản lý sinh viên mượn sách trong thư viện

+ Luồng sự kiện: ● Luồng cơ bản:

1. Use case này bắt đầu khi giáo viên kích vào chức năng quản lý sinh viên trên màn hình hệ thống. Hệ thống sẽ hiển thị các thao tác quản lí sinh viên gồm thêm sinh viên mượn sách, xóa sinh viên khi đã trả sách và thông tin sinh viên đang mượn sách.

2. Giáo viên kích vào “Thêm sinh viên mượn sách”. Hệ thống hiển thị lên màn hình form thêm sách gồm các thông tin của sinh viên. Giáo viên điền đầy đủ thông tin của sinh viên và kích vào nút “Thêm ”. Hệ thống sẽ lấy dữ liệu để lưu vào bảng SINH_VIEN trong CSDL. 3. Giáo viên kích vào “Xóa sinh viên”. Hệ thống hiển thị lên màn hình

các thơng tin sinh viên và có thêm nút “Xóa sinh viên”. Người dùng kích vào nút “Xóa sinh viên” ở mỗi sinh viên đã mượn xong.Hệ thống sẽ xóa dữ liệu của sinh vien đó trong bảng SINHVIEN trong CSDL.

use case kết thúc. ● Luồng rẽ nhánh:

o Tại bước 2 trong luồng cơ bản, nếu khơng có sinh viên nào đang mượn sách. Hệ thống sẽ báo “ khơng có sinh viên nào đang mượn sách”. Quay trở lại bước 1.

</div>

×