Đồng thời em cũng bày tỏ lòng cảm ơn của mình đối với các anh chị khóa trên đã hết lòng chỉ bảo em để hoàn thiện đồ án một cách tốt nhất.Tuy có nhiều cố gắng trong quá trình thực hiện đồ
GIỚI THIỆU TỔNG QUAN
G IỚI THIỆU NHÀ SÁCH FAHASA
Tên đơn vị: Công ty cổ phần phát hành sách-FAHASA (Nhà sách FAHASA)
Hình 1-1 Logo nhà sách FAHASA
Lĩnh vực hoạt động: Liên kết xuất bản, in ấn, phát hành sách
FAHASA là thương hiệu hàng đầu trong ngành Phát hành sách Việt Nam, ngay từ thời bao cấp cho đến thời kỳ kinh tế thị trường, đổi mới, hội nhập quốc tế.
FAHASA ngày càng phát triển mạnh mẽ và giờ đây đã trở nên thân quen và tin cậy với tất cả người đọc ở mọi độ tuổi khác nhau từ trẻ em cho đến những cụ già trong những năm qua Có thể nói, hệ thống gần 60 nhà sách của FAHASA là những điểm sinh hoạt văn hóa thân quen dành cho mọi đối tượng bạn đọc Để tiếp tục thực hiện sứ mệnh “MANG TRI THỨC, VĂN HÓA ĐỌC ĐẾN VỚI MỌI NHÀ”! FAHASA đã và đang ngày càng nỗ lực hơn trong hoạt động sản xuất kinh doanh, tiếp tục góp phần vào sự nghiệp phát triển “văn hóa đọc”, làm cho những giá trị vĩnh hằng của sách ngày càng thấm sâu vào đời sống văn hóa tinh thần của xã hội, nhằm góp phần tích cực, đáp ứng yêu cầu nâng cao dân trí, bồi dưỡng nhân tài và nguồn nhân lực cho sự nghiệp công nghiệp hóa, hiện đại hóa đất nước.
Bởi vì, quy mô hoạt động của nhà sách lớn, với đội ngủ nhân viên đông đảo cùng với khả năng thời gian có hạn Vì vậy, trong đề tài này em đã chọn 1 chi nhánh ở TP HCM có địa chỉ 138 Lê Văn Việt, P Hiệp Phú, Q.9, TP.HCM
Hình 1-2 Hình ảnh nhà sách FAHASA quận 9
T ÍNH CẤP THIẾT CỦA ĐỀ TÀI
Ở bất kỳ thời kỳ lịch sử nào, sách cũng được coi là kho trí thức của con người Nhu cầu sử dụng sách ngày càng rộng rãi, ở bất kỳ lĩnh vực nào cũng cần sách Hiện nay tại nhà sách FaHaSa đã có hàng ngàn, hàng vạn loại sách, báo, tạp chí khác nhau để nhằm phục vụ nhu cầu khách hàng Ngày trước, việc quản lý sách tại nhà sách đều được thực hiên thủ công Tuy nhiên, cùng với quá trình phát triển công nghiệp hóa, hiện đại hóa đất nước để đáp ứng nhu cầu tri thức ngày càng cao của con người, hiện nay quy mô nhà sách Nhã Nam ngày càng mở rộng, khách hàng ngày càng đông, số lượng sách về càng nhiều nên việc quản lý sách ở đây rất cần thiết có một công cụ hỗ trợ quản lý tốt hơn và xử lý nhanh hơn, tối ưu được các quá trình trong việc xử lý sách Trong khi hệ thống cũ thực sự chưa đáp ứng được mong muốn xử lý nhanh và hiệu quả, vẫn còn những thiếu xót Do đó, thấu hiểu được nhu cầu thực tế hiện tại của nhà sách và cũng là mong muốn của khách hàng, tôi đã tiến hành xây dựng một chương trình quản lý sách tốt hơn Và đó cũng là lý do tôi chọn đề tài “Xây dựng chương trình quản lý sách tại nhà sách FaHaSa”.
M ỤC TIÊU ĐỀ TÀI
Trong thời đại bùng nổ công nghệ 4.0 như hiện nay, một chương trình giúp quản lý sách là không thể thiếu trong hoạt động kinh doanh của nhà sách Việc quản lý của chương trình sẽ được kiểm soát một cách rõ ràng và chặt chẽ, giúp chương trình quản lý sách trở nên nhanh chóng hiệu quả, đem lại doanh thu lợi nhuận cho nhà sách. Đồ án sẽ xây dựng một chương trình quản lý sách tại nhà sách FAHASA với các chức năng như:
Quy trình quản lý sách tại nhà sách.
Quản lý thông tin sách bao gồm: Mã sách, tên sách, số lượng, giá bán, …
Quản lý nhập sách từ nhà cung cấp.
Quản lý xuất sách từ kho để bán cho khách hàng.
N ỘI DUNG ĐỀ TÀI
Những nội dung em dự định hoàn thành bao gồm:
Các thông tin về quy trình nghiệp vụ quản lý bán hàng của cửa hàng.
Giới thiệu và sử dụng các công cụ hỗ trợ xây dựng chương trình.
Phân tích hệ thống và tiến hành thiết kế hệ thống.
Phân tích và thiết kế các lớp.
Viết chương trình: Tạo các Form cho phép người dùng thực hiện các thao tác(đăng nhập; thêm, sửa, xóa; tìm kiếm).
P HƯƠNG PHÁP NGHIÊN CỨU
Để nghiên cứu quy trình quản lý sách và xây dựng chương trình quản lý phù hợp với yêu cầu thực tế ở nhà sách FAHASA quận 9 và để đảm bảo an toàn trong điều kiện dịch bệnh phức tạp, nnhóm em đã sử dụng các phương pháp trong quá trình thực hiện đề tài thông qua việc tìm kiếm các tài liệu, thông tin liên quan đến nhà sách FAHASA cũng như quy trình quản lý của nhà sách FAHASA và các nhà sách khác.
Đ ỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
Đối tượng nghiên cứu: Quản lý sách tại nhà sách Fahasa quận 9
Phạm vi đề tài: Đồ án được thực hiện dựa trên cơ sở phạm vi môn học lập trìnhJava Do khả năng và phạm vi có hạn nên em chỉ xây dựng chương trình quản lý sách ở qui mô nhỏ tại nhà sách Fahasa quận 9.
CƠ SỞ LÝ THUYẾT
T ỔNG QUAN VỀ NGÔN NGỮ J AVA
2.1.1 Giới thiệu về ngôn ngữ
2.1.1.1 Lịch sử ngôn ngữ Java
James Gosling , Mike Sheridan và Patrick Naughton đã khởi xướng dự án ngôn ngữ lập trình Java vào tháng 6 năm 1991 Nhóm các kỹ sư của Sun được gọi là Green Team Ban đầu James Gosling đặt tên là ‘Greentalk’ và phần mở rộng tập tin là gt Sau đó, nó được gọi là Oak và được phát triển như một phần của dự án Green.
Các phiên bản ngôn ngữ Java:
Nền tảng J2SE (Java Standard Edition) tiêu chuẩn
Nền tảng J2EE (Java Enterprise Applications Edition) cho các ứng dụng doanh nghiệp.
Nền tảng J2ME (Java Mobile Applications Edition) cho các ứng dụng di động
Java là ngôn ngữ lập trình tĩnh, hướng đối tượng, hoạt động trên nhiều nền tảng.
JavaScript là ngôn ngữ lập trình động (hay ngôn ngữ kịch bản – scripted language) được sử dụng để làm cho các trang web và ứng dụng trở nên sinh động.
Java dựa trên lớp (class), còn JavaScript thì động.
Java là một ngôn ngữ độc lập JavaScript phụ thuộc nhiều hơn, nghĩa là nó hoạt động với HTML và CSS trên các trang web để tạo nội dung động.
Đơn giản: Java được thiết kế để dễ đọc, quen thuộc Nếu hiểu được những khái niệm cơ bản về OOP, sẽ dễ dàng làm chủ Java.
Hướng đối tượng: Mọi thứ là một đối tượng Java có thể dễ dàng mở rộng kể từ khi nó được dựa trên mô hình đối tượng.
Độc lập phần cứng và hệ điều hành: Khi Java được biên dịch, nó không được biên dịch vào một nền tảng cụ thể mà là bytecode Bytecode này được thông dịch bởi máy ảo (JVM) tùy vào nền tảng mà nó đang thực thi không cần biên dịch lại mã nguồn.
Bảo mật: Quản lý thực thi chương trình ở nhiều mức:
Dữ liệu và phương thức được đóng gói bên trong lớp.
Trình biên dịch kiểm soát mã an toàn và kiểm soát tuân thủ đúng quy tắc của Java.
Trình thông dịch kiểm soát bytecode đảm bảo quy tắc an toàn trước khi thực thi.
Kiểm soát việc nạp vào bộ nhớ, giới hạn truy xuất trước khi nạp vào hệ thống.
Mạnh mẽ: Java nỗ lực loại trừ tình huống dễ bị lỗi bằng cách nhấn mạnh chủ yếu vào việc kiểm tra lỗi thời điểm biên dịch và thực thi.
Khai báo kiểu dữ liệu tường minh.
Không dùng con trỏ và phép toán con trỏ.
Kiểm soát việc truy xuất ngoài phạm vi dữ liệu mảng.
Cấp phát và giải phóng bộ nhớ được thực hiện tự động (garbage collection).
Cơ chế bẫy lỗi giúp kiểm soát và đơn giản trong xử lý lỗi và phục hồi sau lỗi.
Đồng bộ: Có thể viết chương trình có thể làm nhiều việc cùng một lúc Cho phép các nhà phát triển xây dựng các ứng dụng tương tác chạy đồng thời và đồng bộ.
Hiệu suất cao: Nhờ vào trình thu gom rác, giải phóng bộ nhớ đối với các đối tượng không được dùng đến.
Phân tán: Java được thiết kế để hỗ trợ ứng dụng chạy trên mạng, cho môi trường phân tán, chạy trên nhiều nền khác nhau của Internet.
Linh động: Java được coi là linh động hơn so với C hoặc C++ vì nó được thiết kế để thích ứng với môi trường phát triển mở.
Java cho phép bạn tạo các chương trình mô-đun và mã có thể tái sử dụng để giữ cho hệ thống có thể mở rộng cũng như linh hoạt.
Con đường học tập đối với ngôn ngữ lập trình Java là cực kỳ ngắn Java dễ viết, dễ biên dịch và gỡ lỗi hơn các ngôn ngữ lập trình chính khác như C + +, C # Đó là một thế mạnh to lớn, bởi vì điều này đảm bảo rằng các lập trình viên Java có thể làm việc hiệu quả trong một khoảng thời gian không quá dài để học tập Bên cạnh đó, những điều cũng làm cho Java hấp dẫn hơn là cú pháp giống như tiếng Anh viết và nói hàng ngày Điều này có nghĩa là Java rất dễ đọc và logic.
Số lượng lớn các thư viện nguồn mở và trưởng thành với sự hỗ trợ công nghiệp cũng đảm bảo rằng Java được sử dụng ở mọi nơi.
Công cụ thu gom rác dọn dẹp đồ vật một khi chúng không còn được sử dụng, vì vậy bạn không phải tự mình theo dõi mọi thứ.
Nếu chương trình gặp sự cố, nó sẽ báo cho người dùng biết mã trong đó ở đâu và tại sao, hiển thị dấu vết ngăn xếp bao gồm số dòng (nếu biểu tượng gỡ lỗi được bật hoặc một cái gì đó tương tự) hoặc có thể được đổ vào tệp nhật ký lỗi.
Trình biên dịch Java chưa được tối ưu hóa tốt so với C++.
Không có sự tách biệt đặc điểm kỹ thuật khi triển khai.
Quản lý bộ nhớ với Java là khá tốn kém.
Việc thiếu các template có thể hạn chế khả năng của Java để tạo ra các cấu trúc dữ liệu chất lượng cao.
Người ta có thể tìm thấy một số lỗi trong trình duyệt và các chương trình ví dụ.
2.1.2 Hướng đối tượng trong Java
2.1.2.1 Các khái niệm về hướng đối tượng
Lập trình hướng đối tượng là một phương pháp lập trình có 4 tính chất chính sau:
Tính trừu tượng (abstraction): Đây là khả năng của chương trình bỏ qua hay không chú ý đến một số khía cạnh của thông tin mà nó đang trực tiếp làm việc lên, nghĩa là nó có khả năng tập trung vào những cốt lõi cần thiết.
Mỗi đối tượng phục vụ như là một "động tử" có thể hoàn tất các công việc một cách nội bộ, báo cáo, thay đổi trạng thái của nó và liên lạc với các đối tượng khác mà không cần cho biết làm cách nào đối tượng tiến hành được các thao tác Tính chất này thường được gọi là sự trừu tượng của dữ liệu.
Tính trừu tượng còn thể hiện qua việc một đối tượng ban đầu có thể có một số đặc điểm chung cho nhiều đối tượng khác như là sự mở rộng của nó nhưng bản thân đối tượng ban đầu này có thể không có các biện pháp thi hành Tính trừu tượng này thường được xác định trong khái niệm gọi là lớp trừu tượng hay lớp cơ sở trừu tượng.
Tính đóng gói (encapsulation) và che giấu thông tin (information hiding):
Tính chất này không cho phép người sử dụng các đối tượng thay đổi trạng thái nội tại của một đối tượng Chỉ có các phương thức nội tại của đối tượng cho phép thay đổi trạng thái của nó Việc cho phép môi trường bên ngoài tác động lên các dữ liệu nội tại của một đối tượng theo cách nào là hoàn toàn tùy thuộc vào người viết mã Đây là tính chất đảm bảo sự toàn vẹn của đối tượng.
Tính đa hình (polymorphism): Thể hiện thông qua việc gửi các thông điệp (message) Việc gửi các thông điệp này có thể so sánh như việc gọi các hàm bên trong của một đối tượng Các phương thức dùng trả lời cho một thông điệp sẽ tùy theo đối tượng mà thông điệp đó được gửi tới sẽ có phản ứng khác nhau Người lập trình có thể định nghĩa một đặc tính (chẳng hạn thông qua tên của các phương thức) cho một loạt các đối tượng gần nhau nhưng khi thi hành thì dùng cùng một tên gọi mà sự thi hành của mỗi đối tượng sẽ tự động xảy ra tương ứng theo đặc tính của từng đối tượng mà không bị nhầm lẫn.
Tính kế thừa (inheritance): Đặc tính này cho phép một đối tượng có thể có sẵn các đặc tính mà đối tượng khác đã có thông qua kế thừa Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại Tuy nhiên, không phải ngôn ngữ định hướng đối tượng nào cũng có tính chất này.
Mô hình hóa các đối tượng trong thế giới thực thành đối tượng phần mềm:
Chương trình = Đối tượng + Thông điệp
Một đối tượng gồm có:
Thuộc tính: các đặc điểm, trạng thái của đối tượng.
Hành vi: các hành vi/ chức năng của đối tượng.
Lớp đối tượng (class): định nghĩa danh sách các thuộc tính (dữ liệu) và các phương thức chung của một nhóm đối tượng nào đó.
Lớp là khái niệm trung tâm của OOP, là sự mở rộng của khái niệm cấu trúc (struct)
Lớp = thuộc tính + phương thức
C ÁC CÔNG CỤ SỬ DỤNG KHÁC
2.2.1 Tổng quan về Netbeans IDE
NetBeans IDE là một công cụ hỗ trợ lập trình viết mã code miễn phí được cho là tốt nhất hiện nay, được sử dụng chủ yếu cho các lập trình viên phát triển Java.
NetBeans IDE là môi trường phát triển tích hợp và cực kỳ cần thiết cho các lập trình viên, công cụ này có thể hoạt động tốt với rất nhiều nền tảng hệ điều hành khác nhau như Linux, Windows, MacOS, là một mã nguồn mở cung cấp các tính năng cần thiết nhất nhằm tạo ra các ứng dụng web, thiết bị di động,desktop.
Hình 2-5 Giao diện phần mềm Netbeans IDE 12.0
Hỗ trợ nhiều loại ngôn ngữ lập trình.
Chỉnh sửa mã nguồn thông minh.
Giao diện trực quan, dễ thao tác, sử dụng,
Là một công cụ lập trình phần mềm máy tính hoặc phần mềm trên các thiết bị di động.
Gỡ lỗi mạng nội bộ và từ xa.
Thử nghiệm tính năng xây dựng giao diện đồ họa.
Tính năng QuickSearch (Tìm kiếm nhanh), tự động biên dịch, hỗ trợ các Framework cho website, trình ứng dụng máy chủ GlassFish và cơ sở dữ liệu.
Giao diện kéo thả trực quan, thư viện động và tĩnh.
Hỗ trợ soạn thảo chương trình với nhiều ngôn ngữ khác nhau như: C, C+
Giao diện vô cùng đơn giản, dễ dàng sử dụng cho người mới bắt đầu.
Tự động báo lỗi trong quá trình viết chương trình.
Tiêu thụ rất nhiều bộ nhớ, do đó có thể chạy rất chậm trên một số máy.
2.2.2 Tổng quan về Hệ quản trị CSDL MySQL
Hệ quản trị CSDL MySQL được hiểu như là chương trình dùng để quản lý hệ thống CSDL, trong đó, cơ sở dữ liệu là một hệ thống lưu trữ thông tin được sắp xếp rõ ràng, phân lớp ngăn nắp Nó giúp bạn có thể truy cập dữ liệu một cách thuận lợi và nhanh chóng nhất Vì hỗ trợ đa số các ngôn ngữ lập trình nên MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (RDBMS) hoạt động theo mô hình client-server RDBMS là một phần mềm hay dịch vụ dùng để tạo và quản lý các cơ sở dữ liệu (Database) theo hình thức quản lý các mối liên hệ giữa chúng.
MySQL là CSDL tốc độ cao, ổn định hoạt động trên nhiều hệ điều hành, cung cấp một hệ thống lớn các hàm tiện ích rất mạnh Đặc biệt, hệ quản trị CSDL MySQL hoàn toàn miễn phí nên người dùng có thể thoải mái tải về từ trang chủ Nó có rất nhiều những phiên bản cho các hệ điều hành khác nhau MySQL được sử dụng cho việc bỗ trợ PHP, Perl và nhiều ngôn ngữ khác Là nơi lưu trữ những thông tin trên các trang web viết bằng framework PHP hay Perl…
Hệ quản trị CSDL MySQL chính là một trong những phần mềm quản trị CSDL dạng server based, hệ gần giống với SQL server of Microsoft.
MySQL là phần mềm quản lý dữ liệu thông qua CSDL Và mỗi một CSDL đều có bảng quan hệ chứa dữ liệu riêng biệt.
MySQL có cơ chế quản lý sử dụng riêng giúp cho mỗi người sử dụng đều có thể quản lý cùng lúc một hay nhiều CSDL khác nhau Và mỗi người dùng đều có 1 username và password để truy nhập và truy xuất đến CSDL Khi truy vấn đến CSDL của MySQL, bạn phải cung cấp tài khoản và mật khẩu có quyền sử dụng cơ sở dữ liệu đó.
MySQL tương thích tốt với môi trường PHP, giúp hệ thống hoạt động mạnh mẽ Bạn có thể viết hoặc chỉnh sửa code MySQL trên các IDE dành cho PHP.
2.2.2.3 Ưu điểm và nhược điểm
Dễ sử dụng: MySQL là cơ sở dữ liệu tốc độ cao, ổn định, dễ sử dụng và hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.
Độ bảo mật cao: MySQL rất thích hợp cho các ứng dụng có truy cập
CSDL trên Internet khi sở hữu nhiều nhiều tính năng bảo mật thậm chí là ở cấp cao.
Đa tính năng: MySQL hỗ trợ rất nhiều chức năng SQL được mong chờ từ một hệ quản trị cơ sở dữ liệu quan hệ cả trực tiếp lẫn gián tiếp.
Khả năng mở rộng và mạnh mẽ: MySQL có thể xử lý rất nhiều dữ liệu và hơn thế nữa nó có thể được mở rộng nếu cần thiết.
Hiệu năng cao: Nhiều server clusters sử dụng MySQL Bất kể bạn lưu trữ dữ liệu lớn của các trang thương mại điện tử hoặc những hoạt động kinh doanh nặng nề liên quan đến công nghệ thông tin, MySQL cũng có thể đáp ứng được với tốc độ cao, mượt mà.
Nhanh chóng: Việc đưa ra một số tiêu chuẩn cho phép MySQL để làm việc rất hiệu quả và tiết kiệm chi phí, do đó nó làm tăng tốc độ thực thi.
Giới hạn: Theo thiết kế, MySQL không có ý định làm tất cả và nó đi kèm với các hạn chế về chức năng mà một vào ứng dụng có thể cần.
Độ tin cậy: Cách các chức năng cụ thể được xử lý với MySQL (ví dụ tài liệu tham khảo, các giao dịch, kiểm toán, …) làm cho nó kém tin cậy hơn so với một số hệ quản trị cơ sở dữ liệu quan hệ khác.
Dung lượng hạn chế: Nếu số bản ghi của bạn lớn dần lên thì việc truy xuất dữ liệu của bạn là khá khó khăn, khi đó chúng ta sẽ phải áp dụng nhiều biện pháp để tăng tốc độ truy xuất dữ liệu như là chia tải database này ra nhiều server, hoặc tạo cache MySQL.
PHÂN TÍCH VÀ THIẾT KẾ CHƯƠNG TRÌNH
P HÂN TÍCH THIẾT KẾ HỆ THỐNG
Nhà sách FaHaSa quận 9 là một trong những nhà sách được nhiều người biết đến ở TP.
Hồ Chí Minh, được quản lý bởi một đội ngũ nhân viên khá đông Mỗi nhân viên sẽ bao gồm các thông tin: Mã nhân viên, họ tên nhân viên, số điện thoại, căn cước công dân, gmail, giới tính, địa chỉ, ngày vào làm Mỗi mã nhân viên chỉ dành cho một nhân viên duy nhất Hệ thống quản lý của nhà sách đầu tiên sẽ quản lý sách Mỗi cuốn sách sẽ có các thông tin cần được lưu giữ, bao gồm: Mã sách, tên sách, số lượng, đơn giá, năm xuất bản, mã nhà xuất bản, mã loại sách, mã tác giả Mỗi cuốn sách như vậy sẽ được phân biệt bởi mã sách Mỗi cuốn sách chỉ thuộc về một loại sách Một loại sách có thể có một hoặc nhiều cuốn sách Thông tin của loại sách được lưu trữ trong hệ thống bao gồm các thông tin: Mã loại sách, tên loại sách Mỗi cuốn sách chỉ được sáng tác bởi một tác giả Nhưng một tác giả có thể sản xuất một hoặc nhiều cuốn sách Mỗi tác giả cũng có thông tin của mình và được lưu trữ trong hệ thống: Mã tác giả, tên tác sách cũng chỉ có thể được xuất bản bởi một nhà xuất bản Tuy nhiên một nhà xuất bản có thể sản xuất một hoặc nhiều cuốn sách Thông tin của nhà xuất bản bao gồm: Mã nhà xuất bản để phân biệt các nhà xuất bản với nhau, tên nhà xuất bản, địa chỉ, số điện thoại, email, địa chỉ trang web.
Bên cạnh đó, hệ thống quản lý của nhà sách còn quản lý việc xuất nhập sách Mỗi khi khách hàng đến mua hàng, nhân viên của cửa hàng sẽ tạo ra phiếu xuất để gửi đến nhân viên thủ kho thực hiện việc xuất sách ra khỏi kho và gửi đến khách hàng Thông tin phiếu xuất bao gồm: Số phiếu xuất, mã nhân viên, tổng số lượng xuất ra, ngày xuất.
Cuối ngày, nhân viên sẽ kiểm tra số lượng sách trong kho Nếu số lượng sách còn lại không đáp ứng được nhu cầu mua của khách hàng, nhân viên kho sẽ tạo ra phiếu nhập kho để ra lệnh nhập thêm sách vào kho Thông tin phiếu nhập bao gồm: Số phiếu nhập, mã nhân viên, ngày nhập, số lượng nhập.
3.1.2 Giới hạn phạm vi hệ thống
Chương trình quản lý sách được sử dụng trong phạm vi:
Tại nhà sách FAHASA chi nhánh quận 9
Được dùng trong quản lý thông tin sách, quản lý tác giả, quản lý nhà xuất bản, quản lý loại sách, quản lý nhập sách và xuất sách.
G IỚI THIỆU VỀ CSDL
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MaNV nchar (5) Mã nhân viên
2 HoTen nvarchar(30) Họ tên nhân viên
3 SĐT nvarchar (10) Số điện thoại nhân viên
4 CCCD nvarchar (9) Căn cước công dân của nhân viên
5 GioiTinh nvarchar (10) Giới tính nhân viên
6 DiaChi nvarchar (100) Địa chỉ nhân viên
7 Email nvarchar (100) Email của nhân viên
8 NgayVaoLam date Ngày vào làm
3.2.1.2 Bảng NhaXuatBan (Nhà xuất bản)
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MaNXB nchar (6) Mã nhà xuất bản
2 TenNXB nvarchar (50) Tên nhà xuất bản
3 DiaChi nvarchar (100) Địa chỉ nhà xuất bản
4 SDT nvarchar (10) Số điện thoại nhà xuất bản
5 Email nvarchar (100) Địa chỉ email của nhà xuất bản
6 Website nvarchar (100) Địa chỉ website của nhà xuất bản
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MaTG nchar (5) Mã tác giả
2 HoTenTG nvarchar (30) Họ tên tác giả
3 SDT nvarchar (10) Số điện thoại tác giả
4 GioiTinh nvarchar (10) Giới tính tác giả
6 DiaChi nvarchar (100) Địa chỉ tác giả
7 Email nvarchar (100) Địa chỉ email của tác giả
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MaLoaiSach nchar (5) Mã loại sách
2 TenLoaiSach nvarchar (30) Tên loại sách
STT Thuộc tính Kiểu dữ liệu Diễn giải
3 SoLuong integer Số lượng sách
4 DonGia float Đơn giá từng quyển sách
5 NamXuatBan nchar (4) Năm xuất bản
6 MaNXB nvarchar (6) Mã nhà xuất bản
7 MaLoaiSach nvarchar (5) Mã loại sách
8 MaTG nvarchar (5) Mã tác giả sáng tác
3.2.1.6 Bảng PhieuNhapSach (Phiếu nhập sách)
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MaPhieuNhap nchar (5) Mã phiếu nhập kho
2 MaNV nvarchar (5) Mã nhân viên
4 SLNhap integer Số lượng nhập
3.2.1.7 Bảng PhieuXuatSach (Phiếu xuất sách)
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MaPhieuXuat nchar (5) Mã phiếu xuất kho
2 MaNV nvarchar(5) Mã nhân viên
4 SLXuat integer Số lượng xuất
3.2.1.8 Bảng CTPNS (Chi tiết phiếu nhập sách)
STT Thuộc tính Kiểu dữ liệu Diễn giải
2 MaPhieuNhap nchar(5) Mã phiếu nhập kho
3 SLnhap integer Số lượng nhập
3.2.1.9 Bảng CTPXS (Chi tiết phiếu xuất sách)
STT Thuộc tính Kiểu dữ liệu Diễn giải
2 MaPhieuXuat nchar(5) Mã nhân viên
3 SLxuat integer Số lượng xuất
Mô tả: Lớp KetNoi được dùng để kết nối CSDL từ MySQL tới chương trình quản lý Truy xuất dữ liệu từ database rồi nạp dữ liệu vào từng form ghi có câu lệnh truy xuất dữ liệu để hiển thị thông tin Từ đó giúp chúng ta có dữ liệu để thực hiện các chức năng của chương trình.
Các thuộc tính trong lớp:
STT Thuộc tính Kiểu /lớp Diễn giải
1 DB_URL String Đường dẫn đến CSDL
2 USER_NAM String Tên đăng nhập của CSDL
3 PASSWORD String Mật khẩu đăng nhập
Bảng 3-11 Bảng thuộc tính lớp KetNoi Định nghĩa thuộc tính trong lớp KetNoi: private static final String DB_URL = "jdbc:mysql://localhost:3306/QUANLYSACH"; private static final String USER_NAME = "root"; private static final String PASSWORD = "dinhhuynhypha190201";
Các phương thức trong lớp:
Phương thức getConnection (): Dùng để kết nối CSDL với chương trình quản lý.
Mô tả: Lớp đăng nhập dùng để kiểm tra các thông tin về mật khẩu và tên đăng nhập để cấp quyền truy cập vào hệ thống cho người dùng Bên cạnh đó, còn có chức năng thay đổi mật khẩu
Các thuộc tính của lớp:
STT Thuộc tính Kiểu /lớp Ràng buộc Diễn giải
1 TenTaiKhoan Chuỗi ký tự Tối đa 10 ký tự Tên đăng nhập 2 MatKhau Chuỗi ký tự Tối đa 30 ký tự Mật khẩu
Bảng 3-12 Bảng thuộc tính lớp ThongTinDangNhap Định nghĩa thuộc tính trong lớp ThongTinDangNhap
Hình 3-8 Định nghĩa thuộc tính lớp ThongTinDangNhap
Các phương thức của lớp:
Phương thức getter, setter: Lấy giá trị và cập nhật giá trị thuộc tính.
ThongTinDangNhap (): Phương thức khởi tạo
TaiKhoan (): Dùng để lưu danh sách các tài khoản hiện có để đăng nhập vào chương trình.
doiMatKhau (ThongTinDangNhap dn): Dùng để đổi mật khẩu mới.
3.3.1.3 Lớp Thông tin tác giả (ThongTinTacGia)
Mô tả: Thực hiện lấy danh sách từ CSDL và trả về bảng chức danh sách tác giả. Để từ đó có dữ liệu để thực hiện các chức năng thêm, xóa, sửa, tìm kiếm và Reset.
STT Thuộc tính Kiểu /lớp Ràng buộc Diễn giải
1 MaTG Chuỗi ký tự Tối đa 5 ký tự Mã tác giả 2 HoTenTG Chuỗi ký tự Tối đa 30 ký tự Họ tên tác giả 3 SDTTG Chuỗi ký tự Bao gồm 10 ký tự số Số điện thoại tác giả
4 GioiTinh Chuỗi ký tự Tối đa 10 ký tự Giới tính tác giả
5 NgaySinh Chuỗi ký tự Ngày sinh tác giả
6 DiaChi Chuỗi ký tự Tối đa 100 ký tự Địa chỉ tác giả 7 Email Chuỗi ký tự Tối đa 100 ký tự Email tác giả
Bảng 3-13 Thuộc tính lớp ThongTinTacGia Định nghĩa các thuộc tính trong lớp:
Hình 3-9 Định nghĩa thuộc tính lớp ThongTinTacGia
Phương thức getter, setter: Lấy giá trị và cập nhật giá trị thuộc tính.
ThongTinTacGia (): Phương thức khởi tạo.
TacGia (): Lưu danh sách tác giả từ CSDL để đưa lên bảng.
ThemDuLieu (ThongTinTacGia tg): Dùng để thêm mới 1 tác giả.
suaDuLieu (ThongTinTacGia tg): Dùng để sửa bất kỳ cột thông tin nào của 1 tác giả trừ mã tác giả.
XoaDuLieu (String MaTG): Dùng để xóa 1 tác giả.
TimKiemMTG (String MaTG): Tìm kiếm tác giả theo mã tác giả.
TimKiemHTTG (String HoTenTG): Tìm kiếm tác giả theo họ tên tác giả.
TimKiemDiaChi (String DiaChi): Tìm kiếm tác giả theo địa chỉ.
3.3.1.4 Lớp Thông tin loại sách (ThongTinLoaiSach)
Mô tả: Thực hiện lấy danh sách từ CSDL và trả về bảng chức danh sách loại sách Để từ đó có dữ liệu để thực hiện các chức năng thêm, xóa, sửa, tìm kiếm và Reset.
STT Thuộc tính Kiểu /lớp Ràng buộc Diễn giải
1 MaLoaiSach Chuỗi ký tự Tối đa 5 ký tự Mã loại sách 2 TenLoaiSach Chuỗi ký tự Tối đa 30 ký tự Tên loại sách
Bảng 3-14 Bảng thuộc tính lớp ThongTinLoaiSach
Hình 3-10 Định nghĩa thuộc tính lớp ThongTinLoaiSach
Phương thức getter, setter: Lấy giá trị và cập nhật giá trị thuộc tính.
ThongTinLoaiSach (): Phương thức khởi tạo.
LoaiSach (): Lưu danh sách loại sách từ CSDL để đưa lên bảng.
ThemDuLieu (ThongTinLoaiSach ls): Dùng để thêm 1 loại sách mới.
suaDuLieu (ThongTinLoaiSach ls): Dùng để sửa tên loại sách.
XoaDuLieu (String MaLoaiSach): Dùng để xóa 1 loại sách.
TimKiemMLS (String MaLoaiSach): Tìm kiếm loại sách theo mã loại sách.
TimKiemTLS (String TenLoaiSach): Tìm kiếm loại sách theo tên loại sách.
3.3.1.5 Lớp Thông tin nhà xuất bản (ThongTinNXB)
Mô tả: Thực hiện lấy danh sách từ CSDL và trả về bảng chức danh sách nhà xuất bản Để từ đó có dữ liệu để thực hiện các chức năng thêm, xóa, sửa, tìm kiếm và Reset.
STT Thuộc tính Kiểu /lớp Ràng buộc Diễn giải
1 MaNXB Chuỗi ký tự Tối đa 6 ký tự Mã nhà xuất bản 2 TenNXB Chuỗi ký tự Tối đa 50 ký tự Tên nhà xuất bản 3 DiaChi Chuỗi ký tự Tối đa 100 ký tự Địa chỉ nhà xuất bản
4 SDT Chuỗi ký tự Bao gồm 10 ký tự số
Số điện thoại nhà xuất bản
5 Email Chuỗi ký tự Tối đa 100 ký tự Email nhà xuất bản 6 Website Chuỗi ký tự Tối đa 1000 ký tự Địa chỉ website nhà xuất bản
Bảng 3-15 Thuộc tính lớp ThongTinNXB Định nghĩa thuộc tính trong lớp ThongTinNXB
Hình 3-11 Định nghĩa thuộc tính lớp ThongTinNXB
Phương thức getter, setter: Lấy giá trị và cập nhật giá trị thuộc tính.
ThongTinNXB (): Phương thức khởi tạo.
NXB (): Lưu danh sách nhà xuất bản từ CSDL và đưa lên bảng danh sách nhà xuất bản.
ThemDuLieu (ThongTinNXB nxb): Dùng để thêm dữ liệu 1 nhà xuất bản mới.
suaDuLieu (ThongTinNXB nxb): Dùng để sửa thông tin một nhà xuất bản trừ mã nhà xuất bản.
XoaDuLieu (String MaNXB): Dùng để xóa thông tin 1 nhà xuất bản.
TimKiemMaNXB (String MaNXB): Dùng để tìm kiếm thông tin nhà xuất bản theo mã nhà xuất bản.
TimKiemTenNXB (String TenNXB): Dùng để tìm kiếm thông tin nhà xuất bản theo tên nhà xuất bản.
TimKiemDiaChi (String DiaChi): Dùng để tìm kiếm thông tin nhà xuất bản theo địa chỉ nhà xuất bản.
Mô tả: Thực hiện lấy danh sách từ CSDL và trả về bảng chức danh sách nhà xuất bản Để từ đó có dữ liệu để thực hiện các chức năng thêm, xóa, sửa, tìm kiếm và Reset.
STT Thuộc tính Kiểu /lớp Ràng buộc Diễn giải
1 MaSach Chuỗi ký tự Tối đa 5 ký tự Mã sách
2 TenSach Chuỗi ký tự Tối đa 50 ký tự Tên sách
3 SoLuong Số nguyên Lớn hơn 0 Số lượng sách
4 DonGia Số thực Lớn hơn 0 Đơn giá sách
5 NamXuatBa n Chuỗi ký tự Bao gồm 4 số Năm xuất bản
6 MaNXB Chuỗi ký tự Phải nằm trong danh sách nhà xuất bản (Khóa ngoại bảng NhaXuatBan)
7 MaLoaiSach Chuỗi ký tự Phải nằm trong danh sách loại sách.
8 MaTG Chuỗi ký tự Phải nằm trong danh sách tác giả (Khóa ngoại bảng TacGia).
Bảng 3-16 Bảng thuộc tính lớp ThongTinSach Định nghĩa thuộc tính trong lớp ThongTinSach
Hình 3-12 Định nghĩa thuộc tính trong lớp ThongTinSach
Phương thức getter, setter: Lấy giá trị và cập nhật giá trị thuộc tính.
ThongTinSach (): Phương thức khởi tạo.
Sach (): Dùng để lưu danh sách sách từ CSDL, sau đó nạp dữ liệu vào bảng danh sách sách trên giao diện.
ThemDuLieu (ThongTinSach s): Được dùng để thêm dữ liệu cho 1 quyển sách mới.
suaDuLieu (ThongTinSach s): Được dùng để sửa dữ liệu 1 quyển sách trừ mã sách.
XoaDuLieu (String MaSach): Dùng để xóa dữ liệu 1 quyển sách.
TimKiemMaSach (String MaSach, String TenSach, String MaTG, String MaNXB, String MaLoaiSach): Dùng để tìm kiếm dữ liệu sách theo mã sách, tên sách, mã tác giả, mã nhà xuất bản hoặc mã loại sách.
3.3.1.7 Lớp Thông tin phiếu nhập (ThongTinPhieuNhap)
Mô tả: Thực hiện lấy danh sách từ CSDL và trả về bảng chức danh sách phiếu nhập sách Để từ đó có dữ liệu để thực hiện các chức năng thêm, xóa, sửa, tìm kiếm và Reset.
STT Thuộc tính Kiểu /lớp Ràng buộc Diễn giải
Chuỗi ký tự Tối đa 5 ký tự Mã phiếu nhập
2 MaNV Chuỗi ký tự Phải nằm trong danh sách sách (Khóa ngoại bảng Sach).
3 NgayNhap Chuỗi ký tự Ngày nhập
4 TSLNhap Số nguyên Lớn hơn 0 Tổng số lượng nhập
Bảng 3-17 Thuộc tính lớp ThongTinPhieuNhap Định nghĩa thuộc tính trong lớp ThongTinPhieuNhap
Hình 3-13 Định nghĩa thuộc tính lớp ThongTinPhieuNhap
Phương thức getter, setter: Lấy giá trị và cập nhật giá trị thuộc tính.
ThongTinPhieuNhap (): Phương thức khởi tạo.
PhieuNhap (): Lưu danh sách phiếu nhập sách từ CSDL và đưa lên bảng danh sách phiếu nhập.
ThemDuLieu (ThongTinPhieuNhap pn): Dùng để thêm dữ liệu 1 phiếu nhập mới.
suaDuLieu (ThongTinPhieuNhap pn): Dùng để sửa thông tin một phiếu nhập trừ mã phiếu nhập.
TimKiemMa (String MaNV, String MaPhieuNhap): Dùng để tìm kiếm thông tin phiếu nhập theo mã nhân viên hoặc mã phiếu nhập.
TimKiemSL (int SoLuong): Dùng để tìm kiếm thông tin phiếu nhập theo tên số lượng.
3.3.1.8 Lớp Thông tin phiếu xuất (ThongTinPhieuXuat)
Mô tả: Thực hiện lấy danh sách từ CSDL từ MYSQL Để từ đó có dữ liệu để thực hiện các chức năng thêm, xóa, sửa, tìm kiếm và Reset.
STT Thuộc tính Kiểu /lớp Ràng buộc Diễn giải
1 MaPhieuXuat Chuỗi ký tự Tối đa 5 ký tự Mã phiếu xuất
2 MaNV Chuỗi ký tự Phải nằm trong danh sách nhân viên (Khóa ngoại bảng NhanVien).
3 NgayXuat Chuỗi ký tự Ngày xuất
4 TSLXuat Số nguyên Lớn hơn 0 Tổng số lượng xuất
Bảng 3-18 Thuộc tính lớp ThongTinPhieuXuat Định nghĩa thuộc tính trong lớp ThongTinPhieuXuat
Hình 3-14 Định nghĩa thuộc tính lớp ThongTinPhieuXuat
Phương thức getter, setter: Lấy giá trị và cập nhật giá trị thuộc tính.
ThongTinPhieuXuat (): Phương thức khởi tạo.
PhieuXuat (): Lưu danh sách phiếu xuất sách từ CSDL và đưa lên bảng danh sách phiếu xuất.
ThemDuLieu (ThongTinPhieuXuat px): Dùng để thêm dữ liệu 1 phiếu xuất mới.
suaDuLieu (ThongTinPhieuXuat px): Dùng để sửa thông tin một phiếu xuất trừ mã phiếu xuất.
XoaDuLieu (String MaPhieuXuat): Dùng để xóa thông tin 1 phiếu xuất.
TimKiemMa (String MaNV, String MaPhieuXuat): Dùng để tìm kiếm thông tin phiếu xuất theo mã nhân viên hoặc mã phiếu xuất.
TimKiemSL (int SoLuong): Dùng để tìm kiếm thông tin phiếu xuất theo số lượng.
TimKiemNTN (int ngay, int thang): Dùng để tìm kiếm thông tin phiếu xuất theo ngày hoặc tháng của phiếu xuất.
3.3.1.9 Lớp Thông tin chi tiết phiếu nhập (ThongTinCTPN)
Mô tả: Thực hiện lấy danh sách từ CSDL và trả về bảng chứa danh sách chi tiết phiếu nhập sách Để từ đó có dữ liệu để thực hiện các chức năng thêm, xóa, sửa, tìm kiếm và Reset.
STT Thuộc tính Kiểu /lớp Ràng buộc Diễn giải
1 MaSach Chuỗi ký tự Phải nằm trong danh sách sách (Khóa ngoại bảng Sach).
Chuỗi ký tự Phải nằm trong danh sách phiếu nhập (Khóa ngoại bảng PhieuNhap).
3 SLnhap Số nguyên Lớn hơn 0 Số lượng nhập
4 DonGia Số thực Lớn hơn 0 Đơn giá
Bảng 3-19 Thuộc tính lớp ThongTinCTPN Định nghĩa thuộc tính trong lớp ThongTinCTPN
Hình 3-15 Định nghĩa thuộc tính lớp ThongTinCTPN
Phương thức getter, setter: Lấy giá trị và cập nhật giá trị thuộc tính.
ThongTinCTPN (): Phương thức khởi tạo.
CTPN (): Lưu danh sách chi tiết phiếu nhập sách từ CSDL và đưa lên bảng danh sách chi tiết phiếu nhập.
ThemDuLieu (ThongTinCTPN ctpn): Dùng để thêm dữ liệu 1 chi tiết phiếu nhập mới.
suaDuLieu (ThongTinCTPN ctpn): Dùng để sửa thông tin một chi tiết phiếu nhập trừ mã phiếu nhập và mã sách.
XoaDuLieu (String MaPhieuNhap, String MaSach): Dùng để xóa thông tin 1 chi tiết phiếu nhập theo mã phiếu nhập và mã sách.
TimKiemMaSach (String MaSach, String MaPhieuNhap): Dùng để tìm kiếm thông tin chi tiết phiếu xuất theo mã sách hoặc mã phiếu nhập.
TimKiemSL (int SoLuong): Dùng để tìm kiếm thông tin chi tiết phiếu nhập theo số lượng.
3.3.1.10 Lớp Thông tin chi tiết phiếu xuất (ThongTinCTPX)
Mô tả: Thực hiện lấy danh sách từ CSDL và trả về bảng chứa danh sách chi tiết phiếu xuất sách Để từ đó có dữ liệu để thực hiện các chức năng thêm, xóa, sửa, tìm kiếm và Reset.
STT Thuộc tính Kiểu /lớp Ràng buộc Diễn giải
1 MaSach Chuỗi ký tự Phải nằm trong danh sách sách (Khóa ngoại bảng Sach).
2 MaPhieuXuat Chuỗi ký tự Phải nằm trong danh sách phiếu xuất (Khóa ngoại bảng PhieuXuat).
3 SLnhap Số nguyên Lớn hơn 0 Số lượng nhập
4 DonGia Số thực Lớn hơn 0 Đơn giá
Bảng 3-20 Thuộc tính lớp ThongTinCTPX Định nghĩa thuộc tính trong lớp ThongTinCTPX
Hình 3-16 Định nghĩa thuộc tính lớp ThongTinCTPX
Phương thức getter, setter: Lấy giá trị và cập nhật giá trị cho thuộc tính.
ThongTinCTPX (): Phương thức khởi tạo.
CTPX (): Lưu danh sách chi tiết phiếu nhập sách từ CSDL và đưa lên bảng danh sách chi tiết phiếu xuất.
ThemDuLieu (ThongTinCTPN ctpx): Dùng để thêm dữ liệu 1 chi tiết phiếu xuất mới.
suaDuLieu (ThongTinCTPX ctpx): Dùng để sửa thông tin một chi tiết phiếu nhập trừ mã phiếu nhập và mã sách.
XoaDuLieu (String MaPhieuXuat, String MaSach): Dùng để xóa thông tin 1 chi tiết phiếu xuất theo mã phiếu xuất và mã sách.
TimKiemMaSach (String MaSach, String MaPhieuXuat): Dùng để tìm kiếm thông tin chi tiết phiếu xuất theo mã sách hoặc mã phiếu xuất.
TimKiemSL (int SoLuong): Dùng để tìm kiếm thông tin chi tiết phiếu xuất theo số lượng.
3.3.1.11 Lớp Thông tin nhân viên (ThongTinNhanVien)
Mô tả: Thực hiện lấy danh sách từ CSDL và trả về bảng chức danh sách nhân viên Để từ đó có dữ liệu để thực hiện các chức năng thêm, xóa, sửa, tìm kiếm và Reset.
STT Thuộc tính Kiểu /lớp Ràng buộc Diễn giải
HIỆN THỰC ỨNG DỤNG
Q UẢN LÝ NHÂN VIÊN
Nếu bạn muốn dữ liệu bảng trở về dạng đầy đủ, thì hãy nhấn nút “Quay lại” ở cuối bảng.