TỔNG QUAN
Đề tài
Lập trình ứng dụng quản lý thư viện
Lý do chọn đề tài
Sinh viên thường gắn bó với sách và thư viện, vì vậy việc quản lý thư viện là rất cần thiết để tránh thất lạc tài liệu Đề tài này nhằm phát triển một hệ thống quản lý thư viện đơn giản, giúp người dùng làm quen với mã code và phần mềm lập trình Đồng thời, nó cũng khơi dậy cảm hứng và tư duy sáng tạo, từ đó giúp họ có khả năng xây dựng ứng dụng riêng phục vụ cho bản thân và cộng đồng.
Mục tiêu
Trong đồ án kỹ thuật lập trình, người học sẽ trải nghiệm tư duy và hành động theo tiếp cận CDIO, giúp phát triển kỹ năng giải quyết vấn đề kỹ thuật Họ sẽ hình thành ý tưởng, thiết kế, triển khai và vận hành sản phẩm trong môi trường làm việc nhóm hiện đại, đồng thời rèn luyện kỹ năng giao tiếp kỹ thuật Qua đó, người học sẽ cảm nhận được khát khao học hỏi, sự nhiệt tình và say mê, cũng như tư duy sáng tạo và đổi mới Điều này giúp họ yêu thích ngành kỹ thuật đã chọn, hình thành động cơ học tập đúng đắn và xây dựng mục tiêu nghề nghiệp rõ ràng.
Nội dung
Ứng dụng quản lý thư viện đơn giản cho phép người dùng nhập thông tin người mượn và chọn loại sách đã được lập trình sẵn Nó tự động lưu trữ thông tin chi tiết về ngày mượn và hạn trả, tạo ra một danh sách đầy đủ Bên cạnh đó, ứng dụng còn hỗ trợ xóa danh sách người mượn đã trả sách, giúp tối ưu hóa dữ liệu hiệu quả.
Các quy định chung
Sinh viên tham gia vào việc làm việc nhóm để thiết kế, lập trình và vận hành phần mềm, đồng thời viết báo cáo và trình bày trên lớp dưới sự hướng dẫn của giảng viên Mỗi sinh viên sẽ đảm nhận trách nhiệm riêng đối với phần đồ án mà mình thực hiện.
- Thời gian thực hiện đồ án: từ tuần thứ 05 đến tuần 15 (theo kế hoạch thời gian đào tạo của Nhà trường).
- Nhóm sinh viên gặp nguời hướng dẫn ít nhất 01 lần/tuần Bộ môn và nguời hướng dẫn quy định thời gian và địa điểm để gặp sinh viên.
Sinh viên hoặc nhóm sinh viên cần chuẩn bị đầy đủ các tính toán, thiết kế và nội dung nghiên cứu đã thực hiện để báo cáo cho người hướng dẫn Người hướng dẫn sẽ đưa ra ý kiến, yêu cầu sinh viên hoàn thiện hơn và hướng dẫn các nội dung cần thực hiện tiếp theo.
Người hướng dẫn sẽ đánh giá và nhận xét quá trình thực hiện của sinh viên, và bộ môn sẽ dựa vào những nhận xét này để quyết định xem sinh viên có tiếp tục thực hiện đề án môn học hay sẽ bị đình chỉ.
Trong trường hợp sinh viên không gặp người hướng dẫn trong 3 tuần liên tiếp mà không có lý do chính đáng, người hướng dẫn có quyền ngừng việc hướng dẫn Họ sẽ thông báo cho bộ môn để xem xét Bộ môn sẽ quyết định xem sinh viên có được tiếp tục thực hiện đồ án môn học hay sẽ bị đình chỉ.
Sau một thời gian thực hiện, bộ môn sẽ kiểm tra kế hoạch thực hiện đồ án, yêu cầu đạt ít nhất 50% khối lượng công việc Nếu sinh viên không hoàn thành đủ khối lượng quy định, bộ môn hoặc khoa sẽ đình chỉ việc thực hiện đồ án của sinh viên.
- Công việc in ấn đồ án được thực hiện bằng máy tính, cách trình theo quy định (có hướng dẫn kèm theo).
Kết quả của đồ án môn học được xác định dựa trên điểm đánh giá của người hướng dẫn và hội đồng đánh giá, căn cứ vào các tiêu chí đánh giá cụ thể.
+ Kết quả đánh giá của người hướng dẫn đối với sinh viên phải được nạp cho bộ môn trước 02 ngày tổ chức đánh giá đồ án.
+ Trường hợp sinh viên thực hiện đề tài do cơ quan quản lý, phải được sự đồng ý và xác nhận của cơ quan quản lý lý đề tài đó.
Nhiệm vụ của nhóm
- Thiết kế mô hình của ứng dụng
- Hoàn thiện code và sử dụng
Python là gì? Lịch sử hình thành python
Python là ngôn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, được phát triển bởi Guido van Rossum Với cú pháp rõ ràng và dễ hiểu, Python trở thành một trong những ngôn ngữ lập trình tốt nhất cho người mới bắt đầu Ngôn ngữ này có kiểu dữ liệu động và cơ chế cấp phát bộ nhớ tự động, giúp lập trình viên dễ dàng hơn trong việc phát triển ứng dụng Python cũng nổi bật với cấu trúc dữ liệu mạnh mẽ và cách tiếp cận đơn giản, hiệu quả trong lập trình hướng đối tượng, làm cho nó trở thành lựa chọn lý tưởng cho việc viết script và phát triển ứng dụng trên nhiều nền tảng.
Các đặc điểm của Python:
- Ngữ pháp đơn giản, dễ đọc.
- Vừa hướng thủ tục (procedural-oriented), vừa hướng đối tượng (object oriented)
- Hỗ trợ module và hỗ trợ gói (package)
- Xử lý lỗi bằng ngoại lệ (Exception)
- Kiểu dữ liệu động ở mức cao.
- Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu lập trình.
- Có khả năng tương tác với các module khác viết trên C/C++ (Hoặc Java cho Jython, hoặc Net cho IronPython).
- Có thể nhúng vào ứng dụng như một giao tiếp kịch bản (scripting interface).
Lịch sử hành thành python
Python là một ngôn ngữ lập trình cổ điển do Guido Van Rossum phát triển Quá trình thiết kế ngôn ngữ này bắt đầu vào cuối thập niên 1980, và phiên bản đầu tiên được phát hành vào tháng 2 năm 1991.
Vào cuối những năm 1980, Guido Van Rossum làm việc trong hệ điều hành Amoeba và muốn sử dụng một ngôn ngữ thông dịch dễ hiểu như ABC để truy cập các cuộc gọi hệ thống Ông đã quyết định tạo ra một ngôn ngữ mới, dẫn đến sự ra đời của Python.
Hình 1.1: Hình ảnh logo python
Hàm trong Python
Trong Python, hàm là tập hợp các lệnh liên quan được sử dụng để thực hiện một nhiệm vụ cụ thể, giúp chia nhỏ chương trình thành các mô-đun dễ quản lý Khi chương trình trở nên phức tạp hoặc cần mở rộng, việc sử dụng hàm giúp tổ chức mã nguồn một cách hiệu quả hơn.
Hàm đóng vai trò quan trọng trong việc giảm thiểu sự lặp lại code cho các tác vụ tương tự, từ đó giúp mã nguồn trở nên gọn gàng hơn và dễ dàng tái sử dụng.
Cú pháp của hàm Python def ten_ham(các tham số/đối số):
"""Chuỗi văn bản để mô tả cho hàm (docstring)"""
Về cơ bản, một định nghĩa hàm Python sẽ bao gồm các thành phần sau[2]:
1 Từ khóa def: Đánh dáu sự bắt đầu của tiêu đề hàm.
2 Ten_ham: Là định danh duy nhất dành cho hàm Việc đặt tên hàm phải tuân thủ theo quy tắc viết tên và định danh trong Python.
3 Các tham số/đối số: Chúng ta truyền giá trị cho hàm thông qua các tham số này Chúng là tùy chọn.
4 Dấu hai chấm (:): Đánh dấu sự kết thúc của tiêu đề hàm.
5 Docstring: Chuỗi văn bản tùy chọn để mô tả chức năng của hàm.
6 Các câu lệnh: Một hoặc nhiều lệnh Python hợp lệ tạo thành khối lệnh Các lệnh này phải có cùng một mức thụt đầu dòng (thường là 4 khoảng trắng).
7 Lệnh return: Lệnh này là tùy chọn, dùng khi cần trả về giá trị từ hàm.
Ví dụ về hàm Python
Dưới dây là một định nghĩa hàm đơn giản, gồm tên hàm, tham số của hàm, mô tả hàm và một câu lệnh: def chao(ten):
"""Hàm này dùng đểchào một nguời được truyền vào như một tham số""" print("Xin chào, " + ten + "!")
Khi một hàm được định nghĩa, bạn có thể gọi nó từ một hàm khác, chương trình khác hoặc tại dấu nhắc lệnh Để gọi hàm, chỉ cần nhập tên hàm cùng với các tham số phù hợp Ví dụ, để gọi hàm chao() đã được định nghĩa trước đó, bạn chỉ cần gõ lệnh tại dấu nhắc lệnh.
Lập trình giao diện trong python
Chương trình có giao diện đồ họa là loại phần mềm hoạt động liên tục cho đến khi người dùng quyết định thoát Chương trình này cung cấp trải nghiệm trực quan, cho phép người dùng tương tác dễ dàng thông qua các biểu tượng và menu.
Chương trình đồ họa hoạt động trong một vòng lặp vô hạn, được gọi là main loop, để liên tục hiển thị giao diện người dùng Nó phản ứng với các tương tác của người dùng, thực hiện công việc tương ứng khi người dùng bấm nút Đây là một ví dụ điển hình của mô hình lập trình "Event-driven programming".
Chương trình có giao diện đồ họa sử dụng các thao tác của người dùng, được gọi là event, để kích hoạt các hành động tương ứng trong chương trình, gọi là callback Các callback này được gắn vào các bộ phận giao diện, như nút bấm, chữ, và ô nhập ký tự, được gọi là các widget Khi người dùng thực hiện thao tác, callback sẽ được gọi để thực hiện chức năng tương ứng.
So sánh chương trình có giao diện kiểu dòng lệnh (Command Line Interface - CLI) và chương trình có giao diện đồ họa (Graphical User Interface - GUI)
- Người dùng có nhiều quyền xử lý hệ thống.
- Chỉ việc gõ một vài dòng để thực hiện một việc - Dễ dàng hơn cho người dùng khi tương tác với ứng dụng.
- Có khả năng hoạt động đa nhiệm[1].
Lập trình GUI với Tkinter
Code gõ trực tiếp trên IPython:
In [1]: import tkinter as tk
In [2]: tk.Frame(tk.Tk()).mainloop()
Nếu Tk hoat động trên máy bạn, ngay lập tức một cửa sổ trắng tinh sẽ hiện ra.
Tk() tạo ra một cửa sổ chính, trong khi Frame là một widget có khả năng chứa các widget khác Để duy trì giao diện cho đến khi người dùng đóng lại, hãy gọi hàm mainloop().
Button Canvas Checkbutton Entry Frame Label Listbox Menu Menubutton Message BooleanVar Radiobutton Scale Scrollbar Text Spinbox LabelFrame PanedWindow
Trong bài viết này, chúng ta sẽ xây dựng một ứng dụng GUI đơn giản, bao gồm một tiêu đề (Label), một ô nhập địa chỉ trang web (Entry) và một nút bấm (Button) để kiểm tra trạng thái của trang web.
This article presents a simple Python application using the Tkinter library to create a website checker The application features a user interface with a label, an entry field for URL input, and buttons to check the site or quit the application When the user enters a URL and presses the return key or clicks the "Check site" button, the application validates the URL, ensuring it starts with "http," and then makes a GET request to the specified URL The response status code is printed to the console, providing feedback on the accessibility of the entered website The app is initialized with a minimum window size and runs in a main loop, allowing for user interaction.
- Phần init chỉ là thủ tục
- Tạo một label với text cần hiển thị
Create an entry for users to input content, assign the entered value to `self.contents`, bind the entry widget to the Enter key (referred to as Return on MacOS), and execute the `check_site` method when the user presses Enter.
- Tạo nút bấm với dòng chữ "Check site", gọi method check_site khi người dùng bấm nút
- Tạo nút bấm "Quit" để thoát chương trình
- Set thanh tiêu đề title và kích thước cho chương trình qua app.master[1].
THỰC HIỆN ĐỒ ÁN VÀ KẾT QUẢ
Ý tưởng thiết kế
Sau khi tìm hiểu về Python và những lợi ích của nó trong cuộc sống, chúng tôi quyết định phát triển một ứng dụng quản lý thư viện Đầu tiên, chúng tôi sẽ thiết kế một cửa sổ giao diện, sau đó tạo các label để hiển thị thông tin và sử dụng các widget để nhận dữ liệu từ bàn phím Để tương tác với thông tin, chúng tôi sẽ thêm các button cho phép người dùng thao tác trực tiếp.
Cấu trúc chương trình và sơ đồ minh họa
Import các thư viển cần sử dụng: from tkinter import* from tkinter import ttk import random from datetime import datetime import tkinter.messagebox
+ Tạo các hàm xử lý thông tin[1]: def iExit(): def iReceipt(): def iDisplayData(): def iDelete(): def iReset():
Ví dụ: scrollbar = Scrollbar(DataFrameRIGHT) scrollbar.grid(row=0, column=1, sticky='ns')
ListOfBooks = ['Cinderella','Ky Thuat Lap Trinh','Game Design','Viet Nam Ky Su','Ancient Rome','Toan Ky Thuat','Harry Potter','Tuoi Tre','Dreamer',\
'Trump Tu Truyen','Good Boy','The Hell','Draculas',] def SelectedBook(evt): value=str(booklist.get(booklist.curselection())) w = value if (w == "Cinderella"):
DaysOnLoan.set(14) iReceipt() import datetime d1etime.date.today() d2etime.timedelta(days) d3 = (d1 + d2)
DateOverDue.set("No") Ảnh minh họa:
In the user interface, a label titled "Member Type:" is created using a bold Arial font and positioned within a grid layout Next to this label, a read-only combobox is implemented to allow users to select their member type from options including 'Student', 'Teacher', and 'Admin', with the default selection set to the first option This setup ensures a clear and organized presentation of member type choices in the application.
In a user interface, a label for "Sex" is created using a bold Arial font, positioned in the left section of the layout Below the label, a read-only combo box is implemented, allowing users to select their sex from options including 'Female' and 'Male', with the default selection set to an empty string This combo box is also styled with a bold font and is designed to enhance user experience by providing a clear and accessible way to input gender information.
Hình 2.1 Sơ đồ minh họa
Kết quả thực hiện
Hình 2.2 Giao diện khi chạy code
Giao diện khi sử dụng:
Hình 2.3 Giao diện sử dụng
Giao diện thoát chương trình:
Hình 2.4 Giao diện thoát chương trình
Kết Luận
Trong quá trình thực hiện đề tài xây dựng phần mềm quản lý thư viện, chúng em nhận thấy rằng chương trình vẫn còn chưa hoàn thiện và còn nhiều thiếu sót cần khắc phục.
+ Nhập xuất dữ liệu từ file có sẵn như danh sách sinh viên, thư viện sách
+ Phần mềm còn chưa thực sự hiệu quả
+ Giao diện chưa hoàn thiện
Mặt khác chúng em đã đạt được:
+ Biết cách xây dựng chương trình trong python và tham khảo các thư viện và mã nguồn mở
+ Nhận thấy sự đa dạng về ứng dụng của ngôn ngữ python
+ Cải thiện kỹ năng soạn thảo văn bản, kỹ năng viết và sử dụng máy tính