Danh sách liên kết là danh sách mà phần tử (Node) liên kết với nhau nhờ vào vùng liên kết của chúng. Mỗi Node bao gồm 2 phần: Phần Data dung để chứa dữ liệu cần xử lý và phần liên kết dùng để liên kết với node khác.
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ SÀI GÒN KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN MÔN CÔNG NGHỆ PHẦN MỀN TÊN ĐỀ TÀI: QUẢN LÝ MÔN HỌC VÀ ĐĂNG KÝ MÔN DẠY HỌC CHO GIÁO VIÊN Sinh viên thực hiện: Nguyễn Thị Thu Sương MSSV:DH51201926 Tp.Hồ Chí Minh, tháng 1/2015 SVTH: Nguyễn Thị Thu Sương Trang BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực LỜI CẢM Em xin gửi lời cảm ơn đến quý thầy cô khoa Công Nghệ Thông tin trường Đại Học Công Nghệ Sài Gòn (STU) giúp đỡ tận tình truyền ƠN dạy kiến thức để em thực bai tậ lớn môn công nghệ phần mền Và em xin gửi lời cảm ơn đến cô Lê Thị Kim Dung Thầy Nguyễn Trung Trực tận tình giúp đỡ để em hoàn thành tập lớn Cũng có hội áp dụng học vào thực tế SVTH: Nguyễn Thị Thu Sương Trang BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực PHẦN MỞ ĐẦU Lý đề tài: Là sinh viên học nghành công nghệ thông tin Việc ứng dụng kiên thức học để tạo chương trình chạy thực tế vô quan trọng Để cố kiến thức nhằm áp dụng kiến thức học vào thực tế nên em chọn đề tài quản lý môn học đăng ký môn học cho giáo viên làm tập lớp Mục tiêu đề tài: - Cũng cố kiến thức học danh sách liên kết nói chung danh sách liên kết đơn nói riêng từ suy danh sách liên kết đơn lồng - Rèn luyện kỹ lập trình C++ - Ứng dụng lý thuyết học giải toán cụ thể Phạm vi nghiên cứu - Lý thuyết danh sách liên kết đơn - Bài toán quản lý đăng ký môn học Phương pháp nghiên cứu: - Nghiên cứu từ tài liệu cấu trúc liệu giải thuật sách - Tìm kiếm nghiên cứu Internet SVTH: Nguyễn Thị Thu Sương Trang BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực CHƯƠNG 1:CƠ SỞ LÝ THUYẾT Tổng quan danh sách liên kết 1.1 Định nghĩa : Danh sách liên kết danh sách mà phần tử (Node) liên kết với nhờ vào vùng liên kết chúng Mỗi Node bao gồm phần: Phần Data dung để chứa liệu cần xử lý phần liên kết dùng để liên kết với node khác 1.2 Phân loại: Tùy cách liên kết phần tử, danh sách liên kết gồm có nhiều loại khác nhau: - Danh sách liên kết đơn: phần tử liên kết với phần tử đứng sau - danh sách Danh sách liên kết đôi/kép: phần tử liên kết với phần tử đứng trước - sau danh sách Danh sách liên kết vòng: phần tử cuối danh sách liên kết với phần tử đầu danh sách Danh sách liên kết đơn: 1.2.1.Khái niệm: Danh sách liên kết đơn cấu trúc lưu trữ phần tử danh sách không cố định, phần tử danh sách truy cập trực tiếp Muốn truy cập phần tử phải xuất phát từ phần tử Mỗi Node phần tử biểu diễn sau: Data Next Trong đó: Data :thường chứa nội dung thông tin phần tử Next: chứa địa node hay gọi vùng liên kết Cú pháp: Struct Node{ Kiểu_dữ_liệu Data; Node * Next; } SVTH: Nguyễn Thị Thu Sương Trang BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực Hình 1.1 Danh sách liên kết 1.2.2.Thao tác Node: - Khai báo biến trỏ p biến trỏ kiểu Node:Node * p - Cấp phát vùng nhớ cho Node- trỏ p: p= new Node - Truy cập vào trường Data: p-> data - Truy cập vào trường trỏ Next: p-> next - Hủy Node trỏ p: delete (p) 1.2.3.Các thao tác danh sách liên kết: Thao tác danh sách liên kết khác với thao tác mảng, cần thêm node vào danh sách liên kết ta cần xin cấp phát vùng nhớ cho Node nối node vào danh sách không sử dụng ta giải phóng khỏi danh sách Truy cập danh sách khác so với mảng Nếu mảng ta truy cập trực tiếp thông qua số mảng (thông qua địa ô nhớ) danh sách liên kết ta phải truy cập cách Khi làm việc danh sách liên kết đơn nên ta cần ý điểm sau: - Danh sách có trỏ đầu danh sách: trỏ plist - Danh sách có giá trị báo kết thúc danh sách: NULL - Trường next node chứa địa node sau nó, trừ node cuối - Trường next node cuối phải chứa giá trị NULL - Không tách danh sách thành danh sách danh sách phần sau chưa có trỏ tới - khởi tạo danh sách rỗng: plist = NULL 1.3.3.1 Duyệt danh sách liên kết đơn: Duyệt Node danh sách: Mục_đích (Node & plist ) { Node p = plist ; // cho trỏ p vào đầu danh sách While (điều kiện dừng) { [xử lý p-> dat];// xuất màng hình, thực phép toán p=p-> next;// cho trỏ tới phần tử SVTH: Nguyễn Thị Thu Sương Trang BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực } 1.3.3.2 Chèn phần tử vào danh sách: Để chèn phần tử vào X danh sách ta cấp phát vùng nhớ cho Node trỏ q gán giá trị X cho trường Data; Node q; q= new Node; q-> data= X; chèn node vào danh sách có trường hợp: Trường hợp 1:chèn Node q vào đầu danh sách: Bước 1: cho vùng liên kết q chứa địa Node đầu danh sách q-> next = plist;(1) Bước 2: cho plist trỏ tới q: cập nhật lại trỏ danh sách đâu plist = p;(2) Hình 1.2: Chèn đâu danh sách Trường hợp 2: Chèn Node trỏ q vào sau Node trỏ p danh sách Bước 1: cho vùng liên kết Node trỏ q chứa địa Node sau Node trỏ p q-> next = p -> next; (1) SVTH: Nguyễn Thị Thu Sương Trang BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực Bước 2: cho vùng liên kết Node trỏ bỏi q chứa địa Node trỏ p p-> next = q; (2) Hình 1.3: Chèn node vào sau node Trường hợp 3: chèn Node trỏ q vào cuối danh sách Bước 1: danh sách rỗng danh sách có phần tủ q vừa chèn vào, return Bước 2: ngược lại danh sách không rỗng: Cho trỏ p chứa địa Node đầu danh sách Node p = list; • Duyệt danh sách từ đầu tới cuối While ( p-> next !- NULL) p= p-> next; • Cho phần tử liên kết Node trỏ p chứa địa q p-> next = q; • Cập nhật lại Node cuối q vừa tạo q-> next = NULL; • 1.3.3.3 Xóa phần tử khỏi danh sách: có trường hợp xảy ra: Trường hợp 1: thực xóa đầu danh sách p chứa địa node đầu danh sách (plist) Bước 1: cho trỏ đầu danh sách plist trỏ vào node sau p = p-> next Bước 2: giải phóng node p khỏi danh sách Delete (p); SVTH: Nguyễn Thị Thu Sương Trang BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực Hình 1.4: xóa đầu danh sách Trường hợp 2: trỏ p chứa địa Node Node đầu Bước 1: cho trỏ q trỏ đầu danh sách plist,dùng vòng lập cho trỏ tới địa node trước node trỏ p dan sách Node q = plist ; while (q-> next != p) q = q-> next; (1) Bước 2: gán địa Node sau Node trỏ p vào ô nhớ next node trỏ q q-> next = p-> next; (2) Bước 3: giải phóng Node trỏ p Delete (p); Hình 1.5: xóa node danh sách 1.3.3.4 Tìm kiếm phần tử danh sách Bước 1:cho p trỏ vào đầu danh sách plist SVTH: Nguyễn Thị Thu Sương Trang BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực Node p = plist; Bước 2: thực vòng lập để duyệt p chạy từ đầu danh sách tới cuối danh sách, node trường data node trỏ p = X trả Node p dừng vong lập Ngược lại p != X cho p trỏ tới Node while ((p!=NULL) && strcmp(p->info._maGV,x._maGV)!=0) p=p->next; Hình 1.6: tim kiếm node danh sách CHƯƠNG 2: CÁC NGHIỆP VỤ CỦA VIỆC QUẢN LÝ MÔN HỌC VÀ ĐĂNG KÝ MÔN DẠY CỦA GIÁO VIÊN 2.1 Đặc tả toán: Quản lý môn hoc việc đăng ký môn dạy giáo viên trường học gồm: Thông tin giáo viên: mã giáo viên, tên giáo viên, môn học đăng ký Thông tin môn học có trường: tên môn hoc, mã môn học… Những thông tin cần xác rõ ràng nhanh chóng, mà công việc làm thủ công phức tạp tốn nhiều công sức thời gian Chính lý nên toán SVTH: Nguyễn Thị Thu Sương Trang 10 BÀI TẬP LỚN MÔN CNPM SVTH: Nguyễn Thị Thu Sương GVHD: Thầy Nguyễn Trung Trực Trang 39 BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực 3.3 Xuất danh sách môn hoc trường: 3.4 Xóa môn học danh sách môn học trường: Xóa môn học nhập mã môn học có danh sách môn học Xóa môn học nhập mã môn học danh sách môn học: SVTH: Nguyễn Thị Thu Sương Trang 40 BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực 3.5 Tìm môn học danh sách môn học trường: Tìm thấy môn hoc danh sách môn học: SVTH: Nguyễn Thị Thu Sương Trang 41 BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực Tìm không thấy môn học danh sách môn học trường: 3.6 Nhập thông tin giáo viên: SVTH: Nguyễn Thị Thu Sương Trang 42 BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực 3.7 Xuất thông tin giáo viên: 3.8 Thêm môn học cho giáo viên: SVTH: Nguyễn Thị Thu Sương Trang 43 BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực Thêm môn học không thành công: SVTH: Nguyễn Thị Thu Sương Trang 44 BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực 3.9 Xuất danh sách giáo viên danh sách môn học mà giáo viên đăng ký: 3.10 Nhập mã môn học xuất thông tin giáo viên: SVTH: Nguyễn Thị Thu Sương Trang 45 BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực 3.11 Xóa giáo viên khỏi danh sách giáo viên: Xóa giáo viên thất bại: SVTH: Nguyễn Thị Thu Sương Trang 46 BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực 3.12 Xóa môn học mà giáo viên đăng ký: 3.13 Sữa thông tin giáo viên: SVTH: Nguyễn Thị Thu Sương Trang 47 BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực 3.14 nhập mã giáo viên xuất môn học mà giáo viên đăng ký: Ưu khuyết điểm đề tài: 4.1 Ưu điểm: - Chương trình thân thiện đễ sử dụng: - kết hợp danh sách liên kết cấu trúc lồng danh sách vào ưu điểm 4.2 Khuyết điểm: - Chưa có đọc file/ghi file nên gây bất lợi trình lưu giữ liệu - chương trình dài chưa tối ưu v c ác ràng buộc nghiệp v ụ chưa chặc chẽ 4.3 Hướng phát triển: Cần có ghi file đọc file, ràng buộc nghiệp vụ cần ch ặc chẽ hơn, c ần có s ắp xếp thông tin giáo viên thông tin môn học theo mã số môn học: NHẬN XÉT CỦA GIẢNG VIÊN SVTH: Nguyễn Thị Thu Sương Trang 48 BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực MỤC LỤC: PHẦN MỞ ĐẦU Lý đề tài SVTH: Nguyễn Thị Thu Sương Trang 49 BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực Mục tiêu đề tài Phạm vi nghiên cứu Phương pháp nghiên cứu CHƯƠNG 1:CƠ SỞ LÝ THUYẾT 1.1 1.2 Tổng quan danh sách liên kết Định nghĩa : Phân loại: Danh sách liên kết đơn: 1.2.1 Khái niệm: 1.2.2 Thao tác Node: 1.2.3 Các thao tác danh sách liên kết: 1.3.3.1 Duyệt danh sách liên kết đơn: 1.3.3.2 Chèn phần tử vào danh sách: 1.3.3.3 Xóa phần tử khỏi danh sách: 1.3.3.4 Tìm kiếm phần tử danh sách CHƯƠNG 2: CÁC NGHIỆP VỤ CỦA VIỆC QUẢN LÝ MÔN HỌC VÀ ĐĂNG KÝ MÔN DẠY CỦA GIÁO VIÊN 2.1 Đặc tả toán: 2.2 Yêu cầu hệ thống: CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG QUẢN LÝ MÔN HỌC VÀ ĐĂNG KÝ MÔN HỌC CỦAGIÁO VIÊN Lược đồ quan hệ thực thể chương trình: thiết kế sở liệu: 2.1 Các thuộc tính đối tượng: 2.2 Từ diễn tả liệu cho thực thể: 2.3 Lược đồ quan hệ: Cơ sở liệu: 3.1 Danh sách bảng: CHƯƠNG 4: THỰC HIỆN VÀ ƯU KHUYẾT ĐIỂM Chương trình chức cụ thể: 1.1 Cấu trúc chương trình: SVTH: Nguyễn Thị Thu Sương Trang 50 BÀI TẬP LỚN MÔN CNPM 1.1.1 GVHD: Thầy Nguyễn Trung Trực Danh sách môn học: 1.1.2 Danh sách giáo viên: 1.2 Các chức chương trình: Môn học: - Nhập danh sách môn học (thêm môn học vào danh sách môn học - nhà Hiển thị thông tin môn học: Xóa môn học mà nhà trường: Tìm môn học danh sách môn học nhà trường: Giáo viên: Nhập thông tin giáo viên (thêm giáo viên vào danh sách): Xuất danh sách giáo viên tất môn học mà giáo viên đăng ký: Thêm môn học mà giáo viên đăng ký: Tìm giáo viên Xóa giáo viên: Tìm tất giáo viên nhập mã môn học.: Tìm môn học biết mã giá viên: Sữa thông tin giáo viên: Xóa môn học mà giáo viên đăng ký: Cài đặt chương trình: 2.1 Định nghĩa cấu trúc chương trình quản lý môn học đăng ký môn học - 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 cho giáo viên: Khởi tạo danh sách môn học nhà trường: Kiểm tra danh sách môn học có rỗng không: Tạo Node môn học danh sách môn học trường: Chèn cuối môn học vào cuối danh sách môn học trường Xóa môn học đầu danh sách môn học trường Xóa môn học bất ký danh sách môn học trường Tìm môn học mà trường học có dạy Thêm môn học( nhập danh sách môn học) vào danh sách môn học trường Xuất danh sách môn học nhà trường Khởi tạo danh sách giáo viên: Kiểm tra danh sách giáo viên có rỗng không: Tạo Node giáo viên: Chèn Node giáo viên vào cuối danh sách giáo viên: Xóa Node giáo viên đầu danh sách giáo viên: Xóa Node giáo viên danh sách giáo viên: 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17 Nhập (thêm) thông tin giáo viên vào danh sách giáo viên: SVTH: Nguyễn Thị Thu Sương Trang 51 BÀI TẬP LỚN MÔN CNPM 2.18 GVHD: Thầy Nguyễn Trung Trực Xuất danh sách giáo viên danh sách môn học mà giáo viên đăng ký: Tìm giáo viên: Xuất giáo viên biết mã môn hoc: Tìm môn học biết mã giáo viên: Xóa môn học mà giáo viên đăng ký: Thêm môn học mà giáo viên đăng ký dạy: Hàm menu hàm main (): Màn hình kết quả: 3.1 Menu chương trình: 3.2 Nhập danh sách môn học trường: 3.3 Xuất danh sách môn hoc trường: 3.4 Xóa môn học danh sách môn học trường: 3.5 Tìm môn học danh sách môn học trường: 3.6 Nhập thông tin giáo viên: 3.7 Xuất thông tin giáo viên: 3.8 Thêm môn học cho giáo viên: 3.9 xuất danh sách giáo viên danh sách môn học mà giáo viên đăng 2.19 2.20 2.21 2.22 2.23 2.24 ký: 3.10 Nhập mã môn học xuất thông tin giáo viên: 3.11 Xóa giáo viên khỏi danh sách giáo viên: 3.12 Xóa môn học mà giáo viên đăng ký: 3.13 Sữa thông tin giáo viên: 3.14 nhập mã giáo viên xuất môn học mà giáo viên đăng ký: Ưu khuyết điểm đề tài: 4.1 Ưu điểm: 4.2 Khuyết điểm: 4.3 Hướng phát triển: SVTH: Nguyễn Thị Thu Sương Trang 52 BÀI TẬP LỚN MÔN CNPM SVTH: Nguyễn Thị Thu Sương GVHD: Thầy Nguyễn Trung Trực Trang 53 [...]... dữ liệu cho bài toán trên và thực hiện các yêu cầu sau: - Nhập 1 danh sách giáo viên và danh sách các môn học mà giáo viên đăng ký dạy - Cho phép thêm, xóa, sửa giáo viên - Cho phép tìm giáo viên khi biết mã số môn học hay tên môn học - Khi biết mã giáo viên ta có thể thêm 1 môn học mới mà giáo viên đó đăng ký CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG QUẢN LÝ MÔN HỌC VÀ ĐĂNG KÝ MÔN HỌC CỦAGIÁO VIÊN 1... thấy môn học ngược lại xuất ra không có môn học này Giáo viên: - - Nhập thông tin giáo viên (thêm 1 giáo viên vào danh sách): + Nhập thông tin của giáo viên gồm: mã giáo viên, tên giáo viên, địa chỉ Xuất danh sách giáo viên và tất cả môn học mà giáo viên đó đăng ký: + Duyệt danh sách giáo viên + In ra danh sách giáo viên + Duyệt danh sách môn học mà giá viên đó đăng ký + In ra danh sách mà giáo viên. .. không có giáo viên này Xóa một môn học mà giáo viên đó đăng ký: + Nhập mã môn học + Tìm mã môn học trong danh sách môn học mà giáo viên đăng ký + Nếu có thì xóa môn học đó khỏi danh sách môn học mà giáo viên đó đăng ký. Ngược lại xuất ra không có môn học trong danh sách 2 Cài đặt chương trình: 2.1 Định nghĩa cấu trúc chương trình quản lý môn học và đăng ký môn học cho giáo viên: void Khoi_tao_MH (NODEPTR_MH... viên đó đăng ký ( nếu có) Thêm một môn học mà giáo viên đó đăng ký: + Nhập mã môn học mà giá viên muốn đăng ký + Duyệt danh sách môn học của nhà trường + nếu có mã môn học trong danh sách môn học nhà trường thì thêm vào danh sách môn học mà giáo viên đăng ký Ngược lại xuất ra không có môn - - - này trong trường + Nếu bạn muốn đăng ký thêm thì nhấn 1 Ngược lại ấn 0 Tìm giáo viên: + Nhập mã giáo viên cần... tin môn học gồm mã môn học và tên môn học Hiển thị thông tin môn học: + Duyệt danh sách môn học + In ra tất cả môn học mà nhà trường có dạy Xóa môn học mà của nhà trường: + Nhập mã môn học cần xóa + Duyệt hết danh sách môn học +Nếu có môn học thì xóa môn học ngược lại xuất không có môn học này Tìm môn học trong danh sách môn học của nhà trường: + Nhập mã môn học cần tìm + Duyệt hết danh sách mmoon học. .. mà giáo viên đó đăng ký + Nếu tìm thấy thì xuất thông tin giáo viên đó Tìm môn học khi biết mã giá viên: + Nhập mã giáo viên + Duyệt danh sách giáo viên + Duyệt danh sách môn học mà giáo viên đó đăng ký + Nếu tìm thấy thì xuất thông tin môn học đó Sữa thông tin giáo viên: + Nhập mã giáo viên + Tìm giáo viên + Nếu tìm thấy nhập lại thông tin giáo viên Ngược lại xuất ra không có giáo viên này Xóa một môn. .. trình: Môn học Đăng ký 2 Thiết kế cơ sở dữ liệu: 2.1 Các thuộc tính của đối tượng: Môn học: Mã môn học: m_maMH SVTH: Nguyễn Thị Thu Sương Trang 11 Giáo Viên BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực Tên môn học: m_tenMH Giáo Viên: Mã giáo viên: _maGV Tên giáo viên: _tenGV địa chỉ: _diachi Danh sách môn học mà giáo viên đăng ký: #Mã môn hoc m_maMH 2.2 Từ diễn tả dữ liệu cho các thực thể: - Môn học: ...BÀI TẬP LỚN MÔN CNPM GVHD: Thầy Nguyễn Trung Trực quản quản lý môn học và đăng ký môn dạy của giáo viên đã ra đời để thực hiện những công việc trên 1 cách nhanh chóng và thuận tiện 2.2 Yêu cầu hệ thống: Thông tin của một giáo viên dạy ở trung tâm gồm: Mã giáo viên, tên giáo viên, địa chỉ Một giáo viên có 1 danh sách các môn đăng ký dạy Biết rằng thông tin của một môn học như sau: Hãy sử dụng... giáo viên. Nhập mã giáo viên muốn đăng ký thêm môn học và mã môn học ( môn học muốn đăng ký thêm) Nếu tìm có mã giáo viên thì xét nếu có mã môn học này trong danh sách môn học thì không thêm vào nữa ngược lại thì thêm vào danh sách môn học mà giáo viên đăng ký dạy nếu không tìm thấy mã giáo viên xuấ ra không tìm thấy giáo viên trong danh sách 2.24 Hàm menu và hàm main (): void menu () { cout