Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 70 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
70
Dung lượng
3,08 MB
Nội dung
MỤC LỤC MỞ ĐẦU CHƯƠNG TỔNG QUAN VỀ LẬP TRÌNH C# NET .5 1.1 Giới thiệu NET FrameWork 1.2 Ngôn ngữ C# 1.2.1 Cấu trúc chương trình ngôn ngữ C# 1.2.2 Những kiểu sở ngôn ngữ C# 1.2.3 Các lệnh điều khiển 1.2.4 C# hướng đối tượng 10 1.3 Mô hình đối tượng ADO.NET 14 1.3.1 Các Namespace 14 1.3.2 Các lớp dùng chung 14 1.3.3 Các lớp sở liệu chuyên biệt .15 CHƯƠNG 19 MỘT SỐ LÝ THUYẾT CƠ SỞ ỨNG DỤNG CHO BÀI TOÁN .19 XẾP THỜI KHÓA BIỂU 19 2.1 Khái quát hệ chuyên gia .19 2.1.1 Những thành phần hệ chuyên gia .19 2.1.2 Kỹ thuật suy luận hệ chuyên gia 19 2.1.3 Biểu diễn tri thức hệ chuyên gia 20 2.2 Khái quát tập hợp 21 2.3 Bài toán tìm kiếm .21 2.3.1 Giải vấn đề tìm kiếm 21 2.3.2 Các chiến lược tìm kiếm không gian trạng thái 22 2.4 Cây tìm kiếm 26 2.5 Thuật toán quay lui 27 CHƯƠNG 30 BÀI TOÁN THỜI KHÓA BIỂU - GIẢI PHÁP ĐỀ XUẤT 30 VÀ THIẾT KẾ HỆ THỐNG .30 3.1 Mô hình đào tạo theo tín 30 3.2 Quy trình xếp thời khóa biểu theo đào tạo tín 30 3.3 Các đối tượng liên quan đến thời khóa biểu theo đào tạo tín 31 3.4 Phân tích toán .33 3.5 Một số khái niệm áp dụng để xếp thời khóa biểu theo tín 35 3.6 Các vấn đề khó khăn giải pháp .38 3.6.1 Các khó khăn .38 3.6.2 Các giải pháp 40 3.7 Thuật toán xếp thời khóa biểu 46 3.7.1 Ý tưởng 46 3.7.2 Các bước thuật toán XTKBTC 47 3.7.3 Lưu đồ thuật toán .50 3.8 Thiết kế hệ thống 51 3.8.1 Biểu đồ phân cấp chức .52 3.8.2 Biểu đồ luồng liệu mức khung cảnh .53 3.8.3 Biểu đồ luồng liệu mức đỉnh 53 3.8.4 Thiết kế sở liệu .54 3.8.5 Lược đồ liệu quan hệ 55 CHƯƠNG 56 KẾT QUẢ THỰC NGHIỆM .56 4.1 Tính chương trình 56 4.2 Các bước sử dụng chương trình 56 4.3 Các giao diện chương trình .57 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 65 TÀI LIỆU THAM KHẢO 66 PHỤ LỤC 67 MỞ ĐẦU Chúng ta thấy thực tế đơn vị, quan hay tổ chức hoạt động kinh tế, xã hội cần phải xậy dựng cho lịch biểu Thậm chí, tất quy trình sản xuất cần có lịch biểu để đảm bảo công việc hoàn thành theo kế hoạch đặt Đối với trường học lịch biểu dạy học (hay gọi Thời khóa biểu) quan trọng hết Nó trở thành xương sống kết nối hoạt động nhà trường Chính vậy, toán xếp Thời khóa biểu toán quan tâm trọng hàng đầu trường học Đối với nước ta, mô hình đào tạo trường phổ thông thống nước, sử dụng chung phần mềm xếp Thời khóa biểu cho trường Tuy nhiên, trường đại học, cao đẳng trung học chuyên nghiệp mô hình đào tạo lại khác Do đó, việc xậy dựng Thời khóa biểu chung cho tất trường khó Đó lí để giải thích đa số trường xếp Thời khóa biểu tay Mặt khác, việc xây dựng phần mềm xếp Thời khóa biểu không dễ dàng toán có độ phức tạp hàm mũ Rất nhiều nhóm nghiên cứu nước nghiên cứu toán theo hướng tiếp cận khác mạng nơron, fuzzy logic kết hợp với giải thuật di truyền có thành công đáng kể Qua tìm hiểu thực tế Khoa em biết, Khoa áp dụng quy chế đào tạo tín cho sinh viên đại học hệ quy Do công việc xếp thời khóa biểu khác với niên chế Nên em chọn đề tài “Xây dựng chương trình xếp thời khóa biểu phục vụ đào tạo tín cho Khoa Công Nghệ Thông Tin” đồ án tốt nghiệp Trong trình làm đề tài em kế thừa vận dụng thuật toán xếp Thời khóa biểu theo hướng tiếp cận cô giáo Ngô Thị Vinh môn Điện tử viễn thông là: Kết hợp hệ chuyên gia, lý thuyết tập hợp đồ thị Để thực đề tài mình, em kết hợp với thầy giáo, cô giáo, cán phòng đào tạo, cán Bộ phận triển khai đào tạo tín Khoa công nghệ thông tin – Đại học Thái Nguyên Báo cáo đồ án tốt nghiệp em gồm chương sau: Chương 1: Tổng quan C# NET Trong chương trình bày sơ lược môi trường NET, ngôn ngữ C# đối tượng truy cập sở liệu môi trường NET Chương 2: Một số lý thuyết sở ứng dụng cho toán xếp thời khóa biểu Chương trình bày sơ lược hệ chuyên gia, tập hợp, toán tìm kiếm số thuật toán tìm kiếm, tư tưởng thuật toán quay lui hướng ứng dụng toán xếp Thời khóa biểu Chương 3: Sơ lược toán xếp Thời khóa biểu giải pháp đề xuất Chương tập chung phân tích toán xếp Thời khóa biểu, xây dựng thuật toán xếp Thời khóa biểu, thiết kế hệ thống Chương 4: Kết thực nghiệm CHƯƠNG TỔNG QUAN VỀ LẬP TRÌNH C# NET 1.1 Giới thiệu NET FrameWork Hạt nhân NET Frame work CRL (Common Language Runtime) CRL quản lý thực thi đoạn mã NET cung cấp dịch vụ tạo trình phát triển ứng dụng dễ dàng Các chương chình biên dịch công cụ làm cho chức thư viện thực thi Runtime trở nên phong phú hiệu CRL quản lý đoạn mã mức thực thi thấp nhất, kết hợp khả sử dụng đồng thời nhiều ngôn ngữ đan xen nhau, tích hợp quản lý lỗi ngoại lệ, khởi động chấm dứt tiểu trình mức thấp, hỗ trợ bảo mật, quản lý phiên bản, đóng gói cài đặt CRL cung cấp dễ dàng cho nhà phát triển VB.NET thiết kế xây dựng ứng dụng mà thay đổi đối tượng chúng tương tác với đối tượng viết ngôn ngữ khác Sự tương tác trình biên dịch ngông ngữ công cụ phát triển hướng đến sử dụng CRL với hệ thống kiểu liệu chung định nghĩa thư viện Runtime FrameWork, Languages, Tools Visual Basic C++ C# … CLS – Common Language Specification Web Service User Interface Visual Studio NET Data and XML Base Class Library CLR – Common Language Runtime Hình 1.1 Các thành phần cấu thành NET Framework 1.2 Ngôn ngữ C# C# thiết kế riêng để dùng cho Microsoft's NET Framework (Một mạnh cho phát triển, triển khai, thực phân phối ứng dụng) C# ngôn ngữ hoàn toàn hướng đối tượng thiết kế dựa kinh nghiệm ngôn ngữ hướng đối tượng khác Một điều quan trọng cần nhớ C# ngôn ngữ độc lập Nó thiết kế để sinh mã đích môi trường NET, phần NET có vài đặc trưng hỗ trợ NET C# không hỗ trợ có đặc trưng C# hỗ trợ mà NET không hỗ trợ (chẳng hạn tải toán tử) 1.2.1 Cấu trúc chương trình ngôn ngữ C# +) Lớp Lớp khuôn mẫu thiết yếu mà cần tạo đối tượng Mỗi đối tượng chứa liệu phương thức chế tác truy cập liệu Lớp định nghĩa mà liệu hàm đối tượng riêng biệt (được gọi thể hiện) lớp chứa +) Các lớp thành viên Dữ liệu hàm lớp đượp biết lớp thành viên +) Thành phần liệu Thành phần liệu (Data members) thành phần chứa liệu cho lớp – trường (fields), số (constants), kiện (events) +) Hàm thành phần (Function Members): Bao gồm thuộc tính phương thức Chúng ta sử dụng từ khoá sau để bổ nghĩa cho phương thức: Từ khóa Diễn giải new Phương thức ẩn phương thức kế thừa với kí hiệu public Phương thức truy cập protected internal Phương thức bị truy xuất không từ lớp thuộc từ lớp dẫn xuất Phương thức truy cập không assembly private static Phương thức truy cập từ bên lớp phụ thuộc Phương thức không tính trên lớp thể hiển cụ thể virtual Phương thức bị ghi đè lớp dẫn xúât abstract Phương thức trừu tượng override sealed extern Phương thức ghi đè phương thức ảo kế thừa trừu tượng Phương thức ghi đè phương thức ảo kế thừa, bị ghi đè từ lớp kế thừa Phương thức thực thi theo bên từ ngôn ngữ khác Bảng 1.1 Danh sách từ khóa 1.2.2 Những kiểu sở ngôn ngữ C# C# buộc phải khai báo kiểu đối tượng tạo Khi kiểu khai báo rõ ràng, trình biên dịch giúp ngăn ngừa lỗi cách kiểm tra liệu gán cho đối tượng có hợp lệ không, đồng thời cấp phát kích thước nhớ cho đối tượng C# phân thành hai loại: loại liệu dựng sẵn loại người dùng định nghĩa C# chia tập liệu thành hai kiểu: giá trị tham chiếu Biến kiểu giá trị lưu vùng nhớ stack, biến kiểu tham chiếu lưu vùng nhớ heap C# hỗ trợ kiểu trỏ C++, sử dụng Thông thường trỏ sử dụng làm việc trực tiếp với hàm API windows hay đối tượng COM +) Loại liệu định sẵn C# có nhiểu kiểu liệu định sẵn, kiểu ánh xạ đến kiểu hổ trợ CLS (Commom Language Specification), ánh xạ để đảm bảo đối tượng tạo C# không khác đối tượng tạo ngôn ngữ .NET khác kiểu byte, long, char, float, double, bool +) Chuyển đổi kiểu định sẵn Một đối tượng chuyển từ kiểu sang kiểu theo hai hình thức ngầm tường minh Hình thức ngầm chuyển tự động hình thức tường minh cần can thiệp trực tiếp người lập trình (giống với C++ Java) short x = 5; int y ; y = x; // chuyển kiểu ngầm định - tự động x = y; // lỗi, không biên dịch x = (short) y; // OK +) Kểu người dùng định nghĩa Để định nghĩa kiểu liệu ta sử dụng từ khóa struct struct Tenkieu { Kieu1 …… Kieun } 1.2.3 Các lệnh điều khiển Các từ khóa if-else, while, do-while, for, switch-case, dùng để điều khiển dòng chảy chương trình C# giữ lại tất cú pháp C++, ngoại trừ switch có vài cải tiến +) Lệnh If else … Cú pháp: if ( biểu thức logic ) khối lệnh; if ( biểu thức logic ) khối lệnh 1; else khối lệnh 2; Biểu thức logic biểu thức cho giá trị dúng sai (true false) Nếu “biểu thức logic” cho giá trị “khối lệnh” hay “khối lệnh 1” thực thi, ngược lại “khối lệnh 2” thực thi Một điểm khác biệt với C++ biểu thức câu lệnh if phải biểu thức logic, biểu thức số +) Lệnh switch Cú pháp: switch ( biểu_thức_lựa_chọn ) { case biểu_thức_hằng : khối lệnh; lệnh nhảy; [ default : khối lệnh; lệnh nhảy; ] } Biểu thức lựa chọn biểu thức sinh trị nguyên hay chuỗi Switch so sánh biểu_thức_lựa_chọn với biểu_thức_hằng để biết phải thực với khối lệnh Lệnh nhảy break, goto…để thoát khỏi câu switch bắt buộc phải có +) Lệnh lặp C# cung cấp lệnh lặp giống C++ for, while, do-while lệnh lặp foreach Nó hổ trợ câu lệnh nhảy như: goto, break, continue return +) Lệnh goto Lệnh goto dùng để tạo lệnh nhảy nhiều nhà lập trình chuyên nghiệp khuyên không nên dùng câu lệnh phá vỡ tính cấu trúc chương trình Cách dùng câu lệnh sau: Tạo nhãn goto đến nhãn +) Vòng lặp while Cú pháp: while ( biểu_thức_logic ) khối_lệnh; Khối_lệnh thực biểu thức Nếu từ đầu biểu thức sai, khối lệnh không thực thi +) Vòng lặp … while Cú pháp: khối_lệnh while ( biếu_thức_logic ) Khác với while khối lệnh thực trước, sau biểu thức kiểm tra Nếu biểu thức khối lệnh lại thực +) Vòng lặp for Cú pháp: for ( [khởi_tạo_biến_đếm]; [biểu_thức]; [gia_tăng_biến_đếm] ) khối lệnh; +) Câu lệnh break, continue, return Cả ba câu lệnh break, continue, return quen thuộc C++ Java, C#, ý nghĩa cách sử dụng chúng hoàn toàn giống với hai ngôn ngữ 1.2.4 C# hướng đối tượng +) Lớp thừa kế Lớp C# định nghĩa với cú pháp sau: Class MyClass { private int someField; Publich string SomeMethod(bool parameter) { } } Các lớp bao gồm nhiều thành viên, thành viên thuật ngữ(term) dùng để đến liệu hay chức định nghĩa lớp Ví dụ dùng thuật ngữ Function để thành viên chứa mã phương thức(methods), thuộc tính(properties), constructor, hay nạp chồng toán hạng(Operator Overloads) Tất lớp C# kiểu tham khảo Tức bạn khai báo kiểu lớp có biến lưu trữ tham khảo đến thể (instance) lớp Và sử dụng lệnh new để tạo đối tượng 10 CHƯƠNG KẾT QUẢ THỰC NGHIỆM 4.1 Tính chương trình Chương trình “Xếp Thời khóa biểu theo đào tạo tín chỉ” em xây dựng có tính sau: Cho phép người dùng nhập liệu, chỉnh sửa thông qua giao diện chương trình Đáp ứng chức xếp thời khóa biểu tự động, khả chỉnh sửa thời khóa biểu giáo viên Quản lý danh sách khoa năm học Quản lý danh sách ngành, chuyên ngành Quản lý danh sách khóa học năm học Quản lý danh sách môn năm học Quản lý danh sách giáo viên môn Quản lý danh sách môn học môn Quản lý danh sách giảng đường Quản lý chương trình đào tạo Quản lý bảng phân công giảng dạy môn Quản lý Thời Khóa Biểu giáo viên Quản lý Thời Khóa Biểu giảng đường Quản lý Thời Khóa Biểu ngành/chuyên ngành Ngoài chương trình có chức thống kê thống kê thời khóa biểu giáo viên, thống kê thời khóa biểu giảng đường, thời khóa biểu toàn khóa học 4.2 Các bước sử dụng chương trình Bước 1: Đăng nhập hệ thống Bước 2: Nhập liệu đầu vào cho công việc xếp thời khóa biểu việc chọn menu “Nhập liệu” tiếp tiến hành theo bước sau: B1: Nhập niên khóa B2: Nhập danh sách khoa B3: Nhập danh sách ngành học B4: Nhập danh sách chuyên ngành 56 B5: Nhập danh sách môn B6: Nhập danh sách giáo viên B8: Nhập danh sách môn học B9: Nhập thông tin đào tạo B10: Nhập chương trình đào tạo B11: Nhập giảng đường B12: Nhập trạng thái giảng đường B13: Nhập phân công giảng dạy B14: Nhập nguyện vọng giáo viên Bước 3: Sau hoàn tất việc nhập liệu đầu vào Ta kích chọn menu “Lệnh chính” tiếp tục bước dưới: B1: Đặt tên lớp môn học B2: Cập nhật NVGV-TTGĐ: Ta cập nhật nguyện vọng giáo viên trạng thái giảng đường vào thời khóa biểu giáo viên giảng đường B3: Phân bố giảng đường B4: Xếp thời khóa biểu B5: Xếp thời khóa biểu thảo luận B6: Xem thời khóa biểu: Ta có nhiều tùy chọn để chọn lựa xem thời khóa biểu giáo viên, giảng đường,… Bước 4: Nếu bạn muốn xem thông tin thống kê thống kê thời khóa biểu giáo viên, thống kê thời khóa biểu giảng đường, thống kê thời khóa biểu theo khóa học Bạn chọn menu “Thống kê” 4.3 Các giao diện chương trình Từ trình phân tích xậy dựng thuật toán, em tiến hành cài đặt thuật toán ngôn ngữ lập trình C#.NET Qua việc kiểm nghiệm thuật toán chương trình đào tạo Khoa công nghệ thông tin – Đại học Thái Nguyên Chương trình đạt kết sau: 57 Hình 4.1: Form nhập chương trình đào tạo Hình 4.2: Form nhập thông tin đào tạo 58 Hình 4.3: Form đặt tên lớp môn học Hình 4.4: Form nhập giảng đường 59 Hình 4.5: Form nhập trạng thái giảng đường Hình 4.6: Form nhập phân công dạy 60 Hình 4.7: Form nhập nguyện vọng giáo viên Hình 4.8: Form cập nhật trạng thái giảng đường nguyện vọng giáo viên vào CSDL 61 Hình 4.9: Form xếp giảng đường để đảm bảo giảng đường chứa đủ số sinh viên học giảng đường Hình 4.10 Form xếp thời khóa biểu 62 Hình 4.11 Xem thời khóa biểu giảng đường Hình 4.12 Xem thời khóa biểu giáo viên 63 Hình 4.13 Form xem thời khóa biểu theo ngành học Hình 4.14 Form xem TKB giáo viên-giảng đường-lớp môn học 64 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Qua thời gian làm đồ án tốt nghiệp em tiến hành xậy dựng thuật toán xếp Thời khóa biểu cài đặt thuật toán Thông qua thực nghiệm đạt kết sau: Thời khóa biểu giáo viên hoàn toàn trùng lặp Tại thời điểm giáo viên dạy cho lớp môn học với môn lớp không học ghép môn xét Nếu giáo viên có nguyện vọng có mức ưu tiên lớn nguyện vọng giáo viên thỏa mãn số tiết nghỉ dạy không vượt số tiết mà giáo viên phải dạy Việc phân mảnh Thời khóa biểu giáo viên hạn chế Sinh viên lựa chọn hết tất môn học Đảm bảo sức chứa giảng đường lớn tổng số sinh viên Thời gian xếp thuật toán chấp nhận Chương trình bắt lỗi xử lý hầu hết lỗi người dùng hỗ trợ người xếp Thời khóa biểu nhập liệu xác nhằm tạo nên thành công cho thuật toán trình săp xếp Mặc dù em cố gắng để hoàn thành đồ án thật tốt toán xếp Thời khóa biểu lớn phức tạp với thời gian có hạn nên thuật toán hạn chế sau: Thuật toán chưa giải triệt để tình trạng phân mảnh cho Thời khóa biểu giáo viên Chương trình chưa đáp ứng xếp Thời khóa biểu cho lớp học ghép, chưa xếp môn giáo dục thể chất, chưa đáp ứng nhiều ràng buộc Do vậy, để tiếp tục phát triển đề tài em tiếp tục cải tiến hạn chế thuật toán, phát triển chương trình để đáp ứng yêu cầu đặt Thời khóa biểu 65 TÀI LIỆU THAM KHẢO [1] Báo cáo ứng dụng hệ chuyên gia lý thuyết tập hợp toán xếp Thời khóa biểu thầy Vũ Thành Vinh, Phạm Việt Bình, Trần Đình ChúcKhoa CNTT-ĐHTN [2] Phạm Việt Bình, Vũ Thành Vinh, Trần Đình Chúc, Ngô Thị Vinh “Báo cáo hội thảo khoa học xây dựng chương trình xếp Thời khóa biểu theo hương kết hợp lý thuyết đồ thị, hệ chuyên gia tập hợp” hội thảo ngày 6,7/12/2007 Khoa công nghệ thông tin-Đại học Thái Nguyên [3] Chương trình xếp Thời khóa biểu TKB 6.5 cho trường phổ thông thầy Bùi Việt Hà, Công ty Công nghệ Tin học Nhà trường Email: habv@vnschool.net [4] Hệ chuyên gia – Đỗ Trung Tuấn – NXB Giáo dục năm 1999 [5] http://www.mimosasoftware.com Đan mạch [6] http://www.grupet.at CHLB Đức [7] A RANDOM HOP-AND-FIT COMPUTER ALGORITHM TO SCHEDULE ACADEMIC COURSES IN UPM địa chris@agri.upm.edu.my [8] Mô hình lập lịch hệ thống tính toán lưới Buyya đề xuất Ks Nguyễn Long - Nguyễn Huy Văn – Ks Lê Công Trung [9] Giáo trình trí tuệ nhân tạo – TS.Đinh Mạnh Tường [10] Toán rời rạc – Nguyễn Đức Nghĩa 66 PHỤ LỤC Các bảng sở liệu Bảng tblnamhoc: Lưu trữ năm học Bảng tblbomon: Lưu danh sách môn năm học Bảng tblkhoa: Lưu danh sách khoa năm học Bảng tblnganh: Lưu danh sách ngành thuộc khoa năm học Bảng tblchuyennganh: Lưu danh sách chuyên ngành ngành khoa năm học Bảng tblkhoahoc: Lưu danh sách khóa học khoa năm học 67 Bảng tblgiaovien: Lưu danh sách giáo viên thuộc môn năm học Bảng tblmonhoc: Lưu danh sách môn học thuộc môn năm học Bảng tblquydinhdaotao: Lưu thông tin việc đào tạo chuyên ngành tuần bắt đầu học, tuần kết thúc, số lượng lớp mở chuyên ngành, số lượng sinh viên lớp Bảng tblchuongtrinhdaotao: Lưu thông tin danh sách môn học chuyên ngành, phân phối môn số tín lý thuyết, số tín thực hành, số tín thảo luận, môn phụ trách giảng dạy 68 Bảng tblnguyenvonggiaovien: Lưu thời gian bận giáo viên học kỳ năm học (nếu giáo viên có nguyện vọng) Bảng tblgiangduong: Lưu thông tin giảng đường sử dụng học kỳ năm học Bảng tblphanconggiangday: Lưu thông tin phân công dạy giáo viên học kỳ năm học Bảng tbluutien: Lưu thông tin mức ưu tiên giáo viên (nếu giáo viên gán mức ưu tiên) Bảng tblquydoiten: Theo đào tạo tín môn học mở nhiều lớp tùy thuộc vào chương trình đào tạo ngành/chuyên ngành Do bảng tạo để làm cho việc hiển thị thời khóa biểu rõ ràng dễ hiểu Ví dụ môn: Toán rời rạc (học kỳ khóa 7) có tận lớp học đó: Ngành công nghệ thông tin lớp, ngành điện tử viễn thông lớp, ngành tin học kinh tế lớp, ngành điều khiển tự động lớp Ta quy môn toán rời rạc 69 thành toán rời rạc_1, toán rời rạc_2, ,toán rời rạc_9 Bảng tblTKBGV: Lưu thời khóa biểu giáo viên học kỳ năm học Bảng tblTKBGD: Lưu thời khóa biểu giảng đường học kỳ năm học Bảng tblTKBLOP: Lưu thời khóa biểu lớp chuyên ngành học kỳ năm học (Lưu ý khái niệm lớp khác với khái niệm lớp theo niên chế Đã giải thích trên) 70