GIỚI THIỆU ĐỀ TÀI
Viết và nói, như những hình thức truyền thông tiên tiến của con người, không chỉ là những kỹ năng đặc biệt mà còn là công cụ mạnh mẽ giúp chúng ta lưu giữ, chia sẻ và truyền đạt kiến thức Trong ngữ cảnh của người làm nghiên cứu, việc viết trở thành một khía cạnh quan trọng, giúp họ ghi lại di sản tư liệu của thành tựu và chia sẻ kết quả nghiên cứu với cộng đồng đồng nghiệp
Mặc dù sự quan trọng của việc viết bài báo khoa học là không thể phủ nhận, việc quản lý và thống kê các bài báo khoa học vẫn đối mặt với những thách thức do thiếu hụt sự hỗ trợ từ các ứng dụng và công nghệ hiện đại Đó là lý do tại sao, để đáp ứng nhu cầu ngày càng cao về hiệu quả quản lý, chúng tôi đã kết hợp kiến thức từ các môn học nền tảng như Phân tích và thiết kế giải thuật,
Cơ sở dữ liệu, Lập trình hướng đối tượng, và áp dụng ngôn ngữ lập trình C++, để xây dựng một ứng dụng quản lý bài báo khoa học với giao diện đơn giản và dễ sử dụng. Trong quá trình phát triển ứng dụng này, chúng tôi không chỉ tập trung vào việc giải quyết vấn đề mà còn đặt sự chú trọng vào việc tạo ra một trải nghiệm người dùng thoải mái và hiệu quả.
Với ứng dụng này, chúng em hy vọng có thể giúp khắc phục những bất cập trong quản lý bài báo khoa học và hỗ trợ cho việc nghiên cứu của các học giả ở các thế hệ tiếp theo.
PHÂN TÍCH CHỨC NĂNG HỆ THỐNG
Hiển thị thông tin
Một trong những chức năng chính của hệ thống quản lý bài báo khoa học mà chúng em đã phát triển là khả năng hiển thị thông tin chi tiết của bài báo Chức năng này giúp người sử dụng dễ dàng truy cập và xem xét mọi thông tin quan trọng liên quan đến một bài báo cụ thể bao gồm : Bài báo , Tác giả , Tạp Chí, Nhà Xuất Bản
Hình 2 Chức năng hiển thị thông tin
Chỉnh sửa thông tin
Để đáp ứng nhu cầu linh hoạt và cá nhân hóa của người sử dụng, chúng tôi đã tích hợp chức năng Chỉnh Sửa Thông Tin vào ứng dụng quản lý bài báo khoa học của chúng tôi Chức năng này cung cấp khả năng tự do trong việc điều chỉnh và cập nhật thông tin liên quan đến Bài báo , Tác giả , Tạp Chí, Nhà Xuất Bản.
Hình 3 Chức năng chỉnh sửa thông tin
Hệ thống quản lý bài báo khoa học của chúng tôi cung cấp khả năng thêm thông tin một cách thuận tiện Người quản trị có thể dễ dàng nhập liệu cho Bài báo , Tác giả ,Tạp Chí, Nhà Xuất Bản mở rộng cơ sở dữ liệu một cách nhanh chóng và chính xác.
Hình 4 Chức năng thêm thông tin
Chức năng Xóa Thông Tin trong hệ thống bao gồm việc xóa thông tin bài báo theo mã hoặc vị trí, xóa thông tin tác giả theo mã hoặc vị trí, và xóa thông tin nhà xuất bản theo mã NXB Điều này giúp người quản trị dễ dàng quản lý cơ sở dữ liệu bằng cách loại bỏ thông tin không cần thiết hoặc lỗi và duy trì tính toàn vẹn của dữ liệu.
Hình 5 Chức năng xóa thông tin
2.5 Thống kê số lượng bài báo
Chức năng Thống Kê Số Lượng Bài Báo trong hệ thống chúng tôi cung cấp khả năng đặc biệt để người quản trị có thể theo dõi thông tin chi tiết về số lượng bài báo.Chức năng này bao gồm thống kê theo tác giả , tạp chí, nhà xuất bản và năm xuất bản giúp tạo ra cái nhìn toàn diện về hoạt động nghiên cứu và xuất bản trong hệ thống.
PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
Hình 6 Chức năng thống kê thông tin
Chức năng Tìm Kiếm Bài Báo trong hệ thống của chúng tôi mang đến khả năng linh hoạt để người dùng có thể dễ dàng tìm kiếm thông tin cụ thể Bằng cách sử dụng các tiêu chí như tên bài báo, mã bài báo, tên tác giả, mã tác giả, mã tạp chí, tên tạp chí, mã NXB, và tên nhà xuất bản người dùng có thể nhanh chóng định vị thông tin cần tìm, tối ưu hóa trải nghiệm tìm kiếm trên hệ thống.
Hình 7 Chức năng tìm kiếm thông tin
Chức năng Sắp Xếp Bài Báo trong hệ thống của chúng em giúp người dùng tổ chức thông tin một cách thuận tiện Có thể sắp xếp bài báo theo tên tác giả để nhóm thông tin theo tác giả cụ thể Sắp xếp theo tên bài báo giúp dễ dàng tìm kiếm thông tin theo tiêu đề Ngoài ra, chức năng sắp xếp theo năm giúp người dùng theo dõi và so sánh thông tin theo thời gian.
Hình 8 Chức năng sắp xếp thông tin
THIẾT KẾ CẤU TRÚC DỮ LIỆU
Phát biểu bài toán
Chương trình quản lý bài báo khoa học có thể được thiết kế để nhận đầu vào chính là thông tin liên quan đến bài báo, cụ thể là cáo bài báo khoa học Dưới đây là một mô tả về các thông tin có thể được nhập vào chương trình:
Thông tin của bài báo (Mã bài báo, tên bài báo, tạp chí, nhà xuất bản, …)
Hình 9 File đầu vào gồm thông tin của bài báo
Thông tin của tác giả ( Mã tác giả, tên tác giả, lĩnh vực, …)
PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
Hình 10 File đầu vào gồm thông tin của tác giả
Thông tin của tạp chí (Mã tạp chí, tên tạp chí, tổng biên tập, nhà xuất bản, )
Hình 11 File đầu vào gồm thông tin của tạp chí
Thông tin của nhà xuất bản (Mã nhà xuất bản, tên nhà xuất bản).
Hình 12 File đầu vào gồm thông tin của nhà xuất bản
Tài khoản ( Tên đăng nhập , mật khẩu).
Hình 13 File đầu vào gồm thông tin của tài khoản.
Phân tích và ứng dụng cấu trúc dữ liệu trong hệ thống
3.2.1 Tìm kiếm tuyến tính (linear search)
Là phương pháp tìm kiếm một phần tử cho trước trong một danh sách bằng cách duyệt lần lượt từng phần từ của danh sách đó đến khi nào tìm được giá trị mong muốn hay đã duyệt hết qua hết danh sách.
Bắt đầu từ bản ghi đầu tiên của mảng, duyệt từ đầu mảng đến cuối mảng với x
Nếu phần tử đang duyệt bằng x thì trả về vị trí
Nếu không tìm thấy phần từ nào khi đã duyệt hết thì trả về -1.
Hình 14: Mô tả thuật toán tìm kiếm tuần tự
Độ phức tạp thời gian: O(n) khi phần tử tìm kiếm nằm cuối danh sách hoặc không có trong danh sách
Thời gian chạy tốt nhất: O(1) khi phần tử cần tìm nằm ngay đầu danh sách
Độ phức tạp không gian: O(n)
Trong source code của chương trình, thuật toán tìm kiếm tuần tự được sử dụng rộng rãi để tìm một phần tử thỏa điều kiện trong một mảng Cụ thể trong hình được nêu bên dưới , hàm sẽ nhận Input và kiểm tra xem đã nằm trong mảng dữ liệu hay chưa, nếu rồi thì chương trình bắt đầu tìm kiếm tuần tự bằng for :
PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
Hình 15 Mô tả thuật toán tìm kiếm tuần tự
3.2.2 Sắp xếp lựa chọn ( Selection sort )
Sắp xếp lựa chọn là một thuật toán đơn giản, dễ cài đặt , được sử dụng để sắp xếp một danh sách các phần tử Selection Sort chọn phần tử nhỏ nhất từ phần chưa được sắp xếp và đưa nó về vị trí đầu tiên Quá trình này được lặp lại cho đến khi toàn bộ mảng được sắp xếp.
Duyệt qua từng phần tử của mảng.
Tại mỗi vòng lặp, tìm phần tử nhỏ nhất trong phần chưa được sắp xếp.
Lặp lại quá trình trên cho đến khi không còn sự đổi chỗ nào xảy ra trong một lượt duyệt Quá trình này lặp đến khi mảng được sắp xếp.
Hình 16 Mô tả thuật toán tìm kiếm tuần tự
Độ phức tạp thời gian: O(n 2 ) trong mọi trường hợp
Độ phức tạp không gian: O(n)
Trong hàm Sắp xếp theo Tên báo, ta có thể Selection Sort để sắp xếp bằng cách so sánh các Tên báo bằng con trỏ hàm Compare để có thể sắp xếp tăng dân hoặc giảm dần
Hình 17 Mô tả thuật toán tìm kiếm tuần tự.
PHÂN TÍCH HƯỚNG ĐỐI TƯỢNG VÀ TRIỂN KHAI HỆ THỐNG
Cấu trúc hệ thống hướng đối tượng (class, object, relation)
- Lớp là một kiểu dữ liệu trừu tượng trong lập trình hướng đối tượng, được sử dụng để tạo ra các đối tượng Trong một lớp, các thuộc tính thường được mô tả bằng các biến, và các hành vi được mô tả bằng các phương thức Hàm tạo (constructor) thường được sử dụng để tạo ra các đối tượng từ lớp, giúp định nghĩa cách mà một đối tượng mới được khởi tạo.
- Phương thức là các hàm được định nghĩa trong lớp để mô tả hành vi của đối tượng hoặc của lớp đó Các thao tác thực hiện hành vi đó được viết trong nội dung của phương thức Phương thức thường đóng vai trò quan trọng trong việc tương tác với đối tượng và thực hiện các hành động cụ thể.
- Thuộc tính của một lớp bao gồm các biến, hằng số, hoặc tham số nội tại của lớp Các thuộc tính này có thể có kiểu dữ liệu cổ điển như số nguyên, chuỗi, hay kiểu dữ liệu là một lớp khác đã được định nghĩa từ trước Thuộc tính định nghĩa các đặc điểm, trạng thái của đối tượng, và chúng có thể được truy cập và sửa đổi thông qua các phương thức của lớp.
PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
- Đối tượng là một thể hiện cụ thể của một lớp Nó bao gồm cả phương thức và thuộc tính của lớp đó Đối tượng được tạo ra từ một lớp thông qua quá trình gọi hàm tạo (constructor) của lớp Mỗi đối tượng có thể có trạng thái (thông tin hiện tại của nó) và hành vi (các hành động mà nó có thể thực hiện).
IS-A (Là Một) : Khi lớp A quan hệ IS-A với lớp B, có nghĩa là mọi đối tượng của lớp A cũng là một đối tượng của lớp B
Ví dụ: Nếu có lớp "Hình Tròn" và lớp "Hình Học," nếu Hình Tròn IS-A Hình Học, thì mọi đối tượng hình tròn cũng là một đối tượng hình học.
HAS-A (Có Một) : Khi lớp A quan hệ HAS-A với lớp B, có nghĩa là lớp A chứa một đối tượng của lớp B hoặc sử dụng lớp B làm một phần của nó.
Ví dụ: Một lớp "Ô tô" có thể có HAS-A quan hệ với lớp "Động Cơ," vì ô tô có một động cơ là một phần của nó.
- Tính chất của Hệ Thống Hướng Đối Tượng :
Tính Trừu Tượng cho phép chương trình tập trung vào những khía cạnh quan trọng và bỏ qua những chi tiết không cần thiết Được thể hiện qua lớp trừu tượng, là lớp cơ sở không thể được khởi tạo trực tiếp và thường định nghĩa các phương thức mà lớp con phải triển khai.
Tính đóng gói 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 trực tiếp Chỉ có các phương thức nội tại của đối tượng mới có thể thay đổi trạng thái, bảo vệ tính toàn vẹn của đối tượng.
Tính đa hình thể hiện qua việc gửi các thông điệp (message) tới các đối tượng, và phản ứng của đối tượng phụ thuộc vào đối tượng cụ thể nhận thông điệp Các đối tượng có thể thực hiện cùng một hành động (gửi cùng một thông điệp), nhưng cách hành động được thực hiện sẽ tùy thuộc vào loại đối tượng cụ thể.
Tính kế thừa cho phép một đối tượng có sẵn các đặc tính mà đối tượng khác đã có thông qua kế thừa.Các đối tượng có thể chia sẻ hay mở rộng các đặc tính đã có mà không cần định nghĩa lại, tăng tính linh hoạt và tái sử dụng mã nguồn.
- Hệ thống có các lớp và phương thức :
TacGia *tg; // mang Tác Gia
TapChi *tc; // mang Tạp Chí
NXB *nxb; // mang Nhà Xuất Ban static int CountX; // biến đếm số lượng các phấ& n tư từng class
Các phương thức : void get_initialNum(); //lấy số lượng các phấ& n tư ban đấ& u cua từng class void updateCount();// cập nhật lại số lượng các phấ& n tư cua từng class. void getX(); // lấy thống tin thuộc tính X void displayX();// xuất thống tin cua X void soLuongBaoTheoX() ;// xuất ra số lượng báo theo X void timBaoTheoX();// tìm và in ra báo theo điế& u kiện X void sapXepTheoX();// sắp xếp theo thuộc tính X void setX();// chỉnh sưa thống tin cua X bool isNewX();// kiếm tra xem phấ& n tư X đã tố& n tại trong mang hay chưa. void themX();// thếm X vào cuối mang void insertBao();// chèn báo mới vào một vị trí bất kỳ void outX();// xuất các giá trị mới ra file. void xoaTheoX();// xóa một phấ& n tư theo điế& u kiện X
Các thuộc tính : string TacGia_id; string TacGia_ho; string TacGia_ten; string TacGia_congtac; string TacGia_linhvuc; string TacGia_trinhdo; int Bao_count=0;// biến đếm số lượng Báo
Các phương thức : void TacGia_docfile(ifstream&); string getTacGiaX();// lấý thuộc tính X cua Tác Gia void setTacGia_X();// điế& u chỉnh thống tin X cua Tác Gia friend istream &operator>>(istream&,TacGia&); friend ostream &operator(istream&,Bao&); friend ostream &operator(istream&,TapChi&); friend ostream& operator