Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 51 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
51
Dung lượng
1,58 MB
Nội dung
TRƢỜNG ĐẠI HỌC VINH VIỆN KỸ THUẬT VÀ CÔNG NGHỆ BÁO CÁO ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: ỨNG DỤNG THUẬT TỐN TƠ MÀU ĐỒ THỊ CHO BÀI TỐN XẾP LỊCH THI Giáo viên HD : ThS Trần Thị Kim Oanh SV thực :Đặng Tố Lộc MSSV : 1251075295 Lớp : 53K2- CNTT NGHỆ AN, 5/2017 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP LỜI MỞ ĐẦU Những năm tháng đƣợc học tập dƣới mái trƣờng Đại học Vinh năm tháng tƣơi đẹp đời sinh viên em Năm năm quãng thời gian ngắn, em học tập rèn luyện để trở thành ngƣời kĩ sƣ Công nghệ thông tin dƣới mái trƣờng Qua em xin cảm ơn thầy, cô viện Kỹ thuật Công nghệ, ngƣời trực tiếp giảng dạy, đặt móng cho chúng em Em xin cảm ơn nhà trƣờng viện Kỹ thuật Công nghệ tạo điều kiện cho em đƣợc phép làm Đồ án tốt nghiệp đề tài “Ứng dụng thuật tốn tơ màu đồ thị cho toán xếp lịch thi” Đồ án tốt nghiệp bƣớc để em sâu vào tìm hiểu lĩnh vực cơng nghệ thơng tin, sở kiến thức đƣợc học năm học vừa qua.Để hoàn thành Đồ án tốt nghiệp chuyên ngành này, cố gắng nỗ lực thân cịn có tận tình giúp đỡ giảng dạy thầy, cô giáo viện Kỹ thuật Công nghệ Trƣờng Đại học Vinh, đặc biệt giảng viên ThS Trần Thị Kim Oanh nhiệt tình hƣớng dẫn em trình thực đề tài Vì thời gian trình độ cịn hạn chế nên chắn em không tránh khỏi thiếu sót Em mong nhận đƣợc góp ý thầy cô bạn đểđề tài đƣợc hoàn thiện hơn! Sinh viên thực Đặng Tố Lộc ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN TỐT NGHIỆP MỤC LỤC LỜI MỞ ĐẦU PHẦN MỞ ĐẦU .1 Lý chọn đề tài Đối tƣợng phạm vi nghiên cứu .1 Cách tiếp cận đề tài Mục tiêu đề tài .2 Dự kiến kết đạt đƣợc PHẦN NỘI DUNG CHƢƠNG BÀI TỐN TƠ MÀU ĐỒ THỊ .3 1.1 Nêu tốn tơ màu đồ thị .3 1.2 Thuật toán 1.3 Giải toán 1.4 Các ứng dụng thuật tốn tơ màu đồ thị CHƢƠNG ÁP DỤNG BÀI TỐN TƠ MÀU ĐỒ THỊ ĐỂ GIẢI QUYẾT BÀI TOÁN XẾP LỊCH THI 2.1 Bài tốn xếp lịch thi theo tín trƣờng Đại học 2.2 Quy tốn xếp lịch thi tốn tơ màu đồ thị 2.3 Thuật toán xếp lịch thi 2.4 Khung chƣơng trình CHƢƠNG 3.XÂY DỰNG CHƢƠNG TRÌNH XẾP LỊCH THI 10 3.1 Công cụ sử dụng để xây dựng chƣơng trình 10 3.2 Giao diện chƣơng trình hƣớng dẫn sử dụng 11 3.2.1 Chức tạo tài khoản, đăng nhập 11 3.2.2 Chức đổi mật 12 3.2.3 Chức load tập tin 13 3.2.4 Chức quản lý phòng 13 3.2.5 Chức quản lý bậc học 14 3.2.6 Chức quản lý thi 15 3.2.7 Chức chọn nhóm 16 ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN TỐT NGHIỆP 3.2.8 Chức chọn phòng 17 3.2.9 Chức xếp lịch 19 3.2.10 Chức lƣu kết file excel 20 3.2.11 Chức in ấn 20 3.3 Cài đặt thuật toán 21 3.4 Kết luận 46 3.4.1 Kết đạt đƣợc 46 3.4.2 Khó khăn gặp phải .46 3.4.3 Hƣớng phát triển 46 TÀI LIỆU THAM KHẢO .47 ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN TỐT NGHIỆP PHẦN MỞ ĐẦU Lý chọn đề tài Hiện phát triển thuật toán đồ thị mối quan tâm ngành khoa học máy tính Đề án đổi giáo dục đại học Việt Nam đƣợc thực thi, nội dung quan trọng xây dựng mơ hình đào tạo bậc đại học theo học chế tín Quản lý xếp lịch thi cho học chế tín ln quan tâm nhiều trƣờng đại học Vấn đề nghiên cứu quản lý học chế tín đƣợc phát triển Hƣớng nghiên cứu kết đề tài nhằm đóng góp phần vào việc đƣa giải pháp thuật toán để xây dựng phần mềm xếp lịch thi cho học chế tín Với hình thức học chế tín chỉ, sinh viên trƣờng đại học chủ động chọn đăng kí mơn học theo kế hoạch học tập Điều làm cho việc xếp lịch thi trở nên khó khăn Giáo vụ khoa phải xếp lịch thi cho khơng có sinh viên thi nhiều môn thời điểm Việc xếp lịch thủ công nhƣ trƣớc không khả thi Do đó, đề tài nàycó mục đích xây dựng chƣơng trình xếp lịch thi, góp phần tin học hóa cơng tác đào tạo Trong đề tài em trình bày thuật tốn tơ màu đồ thị, sau áp dụng thuật tốn để xây dựng chƣơng trình xếp lịch thi học kỳ với môn học đỉnh thời gian thi màu Dữ liệu áp dụng mơn học có lịch thi viện Kỹ thuật Công nghệ học kỳ gần 2.Đối tƣợng phạm vi nghiên cứu Đối tƣợng nghiên cứu cụ thể thuật tốn tơ màu đồ thị, tốn tơ màu ứng dụng thuật tốn tơ màu để xếp lịch thi Lý thuyết đồ thị ngành khoa học đƣợc phát triển từ lâu nhƣng lại có nhiều ứng dụng đại Một đồ thị tập hợp đỉnh đƣờng nối đỉnh gọi cạnh (cung) Tô màu đồ thị phép gán màu cho đỉnh cho khơng có hai đỉnh kề đƣợc gán màu Bài toán xếp lịch thi đƣợc mơ hình hóa thành tốn tơ màu đồ thị nhƣ sau: lập đồ thị có đỉnh môn thi, hai môn thi kề có sinh viên thi hai mơn Thời điểm thi môn đƣợc biểu thị màu khác ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang BÁO CÁO ĐỒ ÁN TỐT NGHIỆP Phạm vi nghiên cứu đề tài xếp lịch thi cho viện Kỹ thuật Công nghệ trƣờng Đại học Vinh Trong phạm vi giới hạn nghiên cứu đề tài, đồ án nghiên cứu cách xếp lịch thi trƣờng Đại học.Từ ứng dụng triển khai thiết kế xây dựng phần mềm xếp lịch thi trƣờng đại học máy tính dựa sở thuật tốn tơ màu đồ thị Cách tiếp cận đề tài Đề tài hƣớng đến cách nhìn tổng qt thuật tốn tơ màu Ứng dụng thuật tốn tơ màu để xây dựng chƣơng trình xếp lịch thi với phạm vi viện Kỹ thuật Công nghệ Yêu cầu nghiệp vụ phần mềm không cao 4.Mục tiêu đề tài Nghiên cứu thuật tốn tơ màu đồ thị Ứng dụng thuật tốn tơ màu đồ thị để xây dựng chƣơng trình xếp lịch thi với tiêu chí: phân bổ thời gian cho môn học hệ mơn thi sử dụng chung phịng thi không thi trùng nhau, thời gian rải cho sinh viên thời gian thi Dữ liệu thực nghiệm lấy viện Kỹ thuật Công nghệ Dự kiến kết đạt đƣợc Chƣơng trình xếp lịch thi cho viện Kỹ thuật Công nghệ trƣờng đại học Vinh với chức quản lý phòng, quản lý bậc học, quản lý thi Ý nghĩa thực tiễn Phần nghiên cứu cung cấp cách nhìn tổng qt thuật tốn tơ màu đồ thị Kết nghiên cứu áp dụng cho khoa trƣờng đại học ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang BÁO CÁO ĐỒ ÁN TỐT NGHIỆP PHẦN NỘI DUNG CHƢƠNG BÀI TỐN TƠ MÀU ĐỒ THỊ 1.1.Nêu tốn tô màu đồ thị Đồ thị làm tập hợp đỉnh đƣợc nối với cạnh Tùy vào việc xem đỉnh cạnh đối tƣợng mà ngƣời ta cần quan tâm Đến nhân loại ứng dụng lý thuyết đồ thị để giải nhiều toán sống.Bài toán tơ màu đồ thị ví dụ điển hình Cho đồ thị vơ hƣớng G=(E,V), E cạnh, V số đỉnh đồ thị, tốn tơ màu đồ thị phép gán màu cho đỉnh cho khơng có đỉnh kề đƣợc gán màu Ví dụ: Đồ thị G=(E,V) V={v1,v2,v3,v4,v5,v6} E={(v1,v2),(v2,v3);(v2,v4);(v2,v5);(v3,v4);(v3,v6);(v4,v5);(v5,v6)} Hình Ví dụ tơ màu đồ thị 1.2.Thuật toán Input: Đồ thị G=(E,V) Output: Đồ thị G=(E,V) có đỉnh đƣợc tơ màu Bƣớc1: Lập danh sách đỉnh đồ thị E’:=[v1,v2,…,vn] đƣợc xếp theo thứ tự bậc giảm dần: d(v1) ≥ d(v2) ≥ … ≥ d(vn), Đặt i: = 1; ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang BÁO CÁO ĐỒ ÁN TỐT NGHIỆP Bƣớc 2: Tô màu i cho đỉnh danh sách Duyệt lần lƣợt đỉnh tô màu i cho đỉnh không kề đỉnh đƣợc tô màu i Bƣớc 3: Nếu tất đỉnh đƣợc tơ màu kết thúc, đồ thị đƣợc tơ i màu Ngƣợc lại, sang bƣớc Bƣớc 4: Loại khỏi E’ đỉnh tô màu Sắp xếp lại đỉnh E’ theo thứ tự bậc giảm dần Đặt i: = i + quay lại bƣớc 1.3.Giải toán Cho đồ thi G=(E,V) E tập hợp cạnh đồ thị V tập hợp đỉnh đồ thị V={v1,v2 ,v3,v4,v5,v6} E={(v1,v2),(v2,v3);(v2,v4);(v2,v5);(v3,v4);(v3,v6);(v4,v5);(v5,v6)} Hình 2: Đồ thị chưa tơ màu Bƣớc 1: Ta có d(v1)=1 ; d(v2)=4; d(v3)=3;d(v4)=3;d(v5)=3; d(v6)=2 Sắp xếp đỉnh theo thứ tự bậc giảm dần d(v2) > d(v3) > d(v4) > d(v5) > d(v6) > d(v1) Bƣớc 2: Tô màu I cho đỉnh v2 Và tô màu I cho đỉnh không kề đỉnh v2 đỉnh v6 Bƣớc 3: Xét bậc đỉnh lại chƣa đƣợc tô màu d(v1)=0 ; d(v3)=2; d(v4)=2; d(v5)=2 Sắp xếp bậc chúng giảm dần d(v3)> d(v4)> d(v5)> d(v1) Tô màu II cho đỉnh v3 ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang BÁO CÁO ĐỒ ÁN TỐT NGHIỆP Và tô màu II cho đỉnh v1 v5( không kề đỉnh v3) Bƣớc 4: Tơ màu III cho đỉnh v4 cịn lại Vậy ta tô Màu I cho đỉnh v2, v6 Màu II cho đỉnh v3,v1,v5 Màu III cho đỉnh v4 Hình 3: Đồ thị sau tơ màu tơ màu 1.4 Các ứng dụng thuật tốn tơ màu đồ thị - Xếp lịch thi cho trƣờng Đại học - Bài tốn điều khiển đèn nút giao thơng - Bài tốn phân chia tần số - Tơ màu đồ ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang BÁO CÁO ĐỒ ÁN TỐT NGHIỆP CHƢƠNG 2.ÁP DỤNG BÀI TỐN TƠ MÀU ĐỒ THỊ ĐỂ GIẢI QUYẾTBÀI TỐN XẾP LỊCH THI 2.1 Bài tốn xếp lịch thi theo tín trƣờng Đại học Các trƣờng đại học tổ chức học theo tín Nếu sinh viên tích lũy đủ số tín số mơn quy định có quyền nhận tốt nghiệp ngành Đối với đại học nhƣ thế, việc học thi không tổ chức theo lớp mà theo môn học Hàng năm nhà trƣờng thông báo mơn để sinh viên tự đăng kí học mơn theo ngành chọn.Cuối kì cuối năm nhà trƣờng tổ chức thi môn giảng năm.Mỗi mơn thi ngày nhƣng ngày tổ chức nhiều mơn thi Do sinh viên đăng kí thi nhiều mơn nên lịch thi cần phải bố trí để có sinh viên đăng kí thi nhiều mơn mơn khơng đƣợc thi ngày Mỗi sinh viên phải thi số môn thi Hãy lập lịch thi cho sinh viên khơng có mơn thi thời gian phân bố thời gian Mỗi đợt thi giới hạn khoảng thời gian định.Trong ngày, phịng tổ chức nhiều ca thi 2.2 Quy toán xếp lịch thi toán tơ màu đồ thị Lập đồ thị có đỉnh môn thi, đỉnh liền kề đỉnh đƣợc thi thời điểm Màu tô cho đồ thị thời điểm thi tƣơng ứng Mỗi môn thi đỉnh Hai mơn thi ngày thi đƣợc nối cạnh(cung) ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang BÁO CÁO ĐỒ ÁN TỐT NGHIỆP { public frmFormMain() { InitializeComponent(); } string saveFileName = ""; Thread TienTrinh; publicdelegatevoidHienThi(string Text); void ShowText(string Text) { lbStatus.Text = Text; } void HideStatus() { Thread.Sleep(2000); this.Invoke(newHienThi(ShowText), ""); TienTrinh.Abort(); } void ShowStatus(string Text) { try { this.Invoke(newHienThi(ShowText), Text); TienTrinh = newThread(HideStatus); TienTrinh.Start(); } catch (Exception) { } } ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang 33 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP privatevoid frmXepLichThi_Load(object sender, EventArgs e) { pnTitle.Left = (this.Width - pnTitle.Width) / 2; rtMain.Select(); lblTime.Text = DuLieu.GetDay(); if (XuLyXml.DaTaoTaiKhoan()) Active_Form(false); else if (BatLoi.DgResul("Ứng dụng chƣa đăng kí tài khoản, bạn có muốn tạo tài khoản kơ")) TaoTaiKhoan(); else { Active_Form(false); btnDangNhap.Text = "Tạo tài khoản"; } } #region RibonControl privatevoid rtChucNang_Click(object sender, EventArgs e) { if (!DangNhap) { rtMain.Select(); ShowStatus("Vui lòng đăng nhập để sử dụng chƣơng trinh"); ShowDangNhap(); } } privatevoid btnExpand_Click(object sender, EventArgs e) { if (ribon.Expanded) { ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang 34 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP ribon.Expanded = false; btnExpand.Image = XepLichThi.Properties.Resources.a; } else { btnExpand.Image = XepLichThi.Properties.Resources.col; ribon.Expanded = true; } } privatevoid ribbonTabItem_DClick(object sender, EventArgs e) { if (ribon.Expanded) { btnExpand.Image = XepLichThi.Properties.Resources.col; } else { btnExpand.Image = XepLichThi.Properties.Resources.a; } } #endregion #region Chuc nang====================== privatevoid btnDangNhap_TextChanged(object sender, EventArgs e) { if (btnDangNhap.Text == "Đăng Nhập") { this.btnDangNhap.Image = global::XepLichThi.Properties.Resources.open_key_icon; btnDoiMatKhau.Enabled = false; } if (btnDangNhap.Text == "Đăng Xuất") ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang 35 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP { this.btnDangNhap.Image = global::XepLichThi.Properties.Resources.Button_Log_Off_icon; btnDoiMatKhau.Enabled = true; } } void Active_Form(bool active) { DangNhap = active; if (active) { ShowStatus("Đăng nhập thành công!"); btnDangNhap.Text = "Đăng Xuất"; if (!XuLyXml.DaTaoBacHoc()) if (BatLoi.DgResul("Bậc học chƣa đƣợc cài đặt, bạn có muốn cài đặt khơng?")) { frmQlBacHoc qlbh = newfrmQlBacHoc(); qlbh.ShowDialog(); } } else this.btnDangNhap.Text = "Đăng Nhập"; } privatevoid btnThoatCT_Click(object sender, EventArgs e) { DialogResult rs = MessageBox.Show("Thốt khỏi chƣơng trình", "Thốt chƣơng trình", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (rs == DialogResult.OK) Application.Exit(); } ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang 36 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP privatevoid btnLoadFile_Click(object sender, EventArgs e) { op = newOpenFileDialog(); DialogResult rs = op.ShowDialog(); try { if (rs == DialogResult.OK) { XuLyDataGridView.LoadData(grwDanhSach, op.FileName); grwDanhSach.Columns[2].Width = 300; btnChonNhom.Enabled = btnXuatExcel.Enabled = btnInKetQua.Enabled = true; btnChonPhong.Enabled = btnXepLichThi.Enabled = false; ShowStatus("Load Dữ Liệu Thành Công"); } } catch (Exception) { BatLoi.ThongBao2("Lỗi! Không thể load liệu từ file chọn"); } } privatevoid btnXuatExcel_Click(object sender, EventArgs e) { try { if (grwDanhSach.Rows.Count == 0) { BatLoi.ThongBao2("Chƣa có liệu để lƣu"); return; } if (saveFileDialog.ShowDialog() == DialogResult.OK) ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang 37 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP { saveFileName = saveFileDialog.FileName; DataColumn c = ((DataTable)grwDanhSach.DataSource).Columns["NHÓM"]; ((DataTable)grwDanhSach.DataSource).Columns.Remove(c); Excel.Export((DataTable)grwDanhSach.DataSource, saveFileName, "KẾT QUẢ XẾP LỊCH THI"); ((DataTable)grwDanhSach.DataSource).Columns.Add(c); ShowStatus("Lƣu Kết Quả Thành Công"); } } catch (Exception) { ShowStatus("Đã xảy lỗi Dữ liệu chƣa đƣợc lƣu"); } } privatevoid btnInKetQua_Click(object sender, EventArgs e) { if (grwDanhSach.Rows.Count > 0) { Printer pr = newPrinter(); DataGridViewColumn c = grwDanhSach.Columns["NHÓM"]; grwDanhSach.Columns.Remove(c); pr.print(grwDanhSach); grwDanhSach.Columns.Add(c); } } privatevoid btnDangXuat_Click(object sender, EventArgs e) { Active_Form(false); } void ShowDangNhap() ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang 38 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP { if (XuLyXml.DaTaoTaiKhoan()) { frmDangNhap frm = newfrmDangNhap(); if (frm.ShowDialog() == DialogResult.OK) { Active_Form(true); btnDangNhap.Text = "Đăng Xuất"; } else Active_Form(false); } else TaoTaiKhoan(); } privatevoid btnDangNhap_Click(object sender, EventArgs e) { if (btnDangNhap.Text == "Đăng Nhập") ShowDangNhap(); else { Active_Form(false); btnDangNhap.Text = "Đăng Nhập"; btnXepLichThi.Enabled = btnXuatExcel.Enabled = btnInKetQua.Enabled = grwDanhSach.Visible = false; } } privatevoid btnXepLichThi_Click(object sender, EventArgs e) { LenLichThi llt = newLenLichThi(DsMonThi(), GioThi.GetAll); if (llt.ThucHien()) ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang 39 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP XuLyDataGridView.ShowData(llt.DsMonThiDaXep, grwDanhSach, "NGÀY", "GIỜ THI"); } privatevoid btnQlNhom_Click(object sender, EventArgs e) { frmQlBacHoc ql = newfrmQlBacHoc(); ql.ShowDialog(); } privatevoid btnQlPhong_Click(object sender, EventArgs e) { frmQlPhongHoc ql = newfrmQlPhongHoc(); ql.ShowDialog(); } privatevoid btnQlGioThi_Click(object sender, EventArgs e) { frmQlTiet qlt = newfrmQlTiet(); qlt.ShowDialog(); } privatevoid btnDoiMatKhau_Click(object sender, EventArgs e) { frmDoiMatKhau frm = newfrmDoiMatKhau(); frm.ShowDialog(); } void TaoTaiKhoan() { frmDangKi frm = newfrmDangKi(); if (frm.ShowDialog() == DialogResult.OK) Active_Form(true); else { Active_Form(false); ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang 40 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP btnDangNhap.Text = "Tạo tài khoản"; } } bool DangNhap = false; #endregion #region DataGridView======================= privatevoid grwDanhSach_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e) { try { grwDanhSach.CurrentCell = grwDanhSach.Rows[e.RowIndex].Cells[e.ColumnIndex]; } catch (Exception) { } } DanhSachMonThiDsMonThi() { DanhSachMonThi Dsmt = newDanhSachMonThi(newList()); foreach (DataGridViewRow r in grwDanhSach.Rows) if (Convert.ToString(r.Cells["NHÓM"].Value) != "") { MonThi mt = newMonThi(Convert.ToString(r.Cells["MÃ HP"].Value)); string phong1 = Convert.ToString(((DataGridViewTextBoxCell)r.Cells["PHÒNG"]).Value); string nhom1 = Convert.ToString(r.Cells["NHÓM"].Value); if (phong1 != "") mt.DungPhongMay = true; ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang 41 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP foreach (DataGridViewRow r2 in grwDanhSach.Rows) { if (r2.Index != r.Index) { string nhom2 = Convert.ToString(r2.Cells["NHĨM"].Value); string phong2 = Convert.ToString(((DataGridViewTextBoxCell)r2.Cells["PHỊNG"]).Value); if (DuLieu.KiemTraTrung(nhom1, nhom2) || DuLieu.KiemTraTrung(phong1, phong2)) mt.ThemMonCungNhom(Convert.ToString(r2.Cells[1].Value)); } } Dsmt.ds.Add(mt); } return Dsmt; } #endregion privatevoid btnChonNhom_Click(object sender, EventArgs e) { DataTable kq = XuLyDataGridView.GetTable(newstring[] { "MÃ HP", "TÊN HỌC PHẦN", "LỚP", "NHÓM" }, (DataTable)grwDanhSach.DataSource); frmChonNhom fcn = newfrmChonNhom(kq); if (fcn.ShowDialog() == DialogResult.OK) { XuLyDataGridView.ShowData(fcn.dgrDanhSach, grwDanhSach, "NHÓM", "NHÓM"); btnChonPhong.Enabled = btnXepLichThi.Enabled = true; } } void MonXepPhong(DataTable tb) ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang 42 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP { for (int i = 0; i < tb.Rows.Count; i++) if (tb.Rows[i]["HT THI"].ToString().ToLower().CompareTo("Thi Máy".ToLower()) != && tb.Rows[i]["HT THI"].ToString().ToLower().CompareTo("Vấn Đáp".ToLower()) != && tb.Rows[i]["HT THI"].ToString().ToLower().CompareTo("Tự luận".ToLower()) != 0) { tb.Rows.RemoveAt(i); i ; } } privatevoid btnChonPhong_Click(object sender, EventArgs e) { DataTable kq = XuLyDataGridView.GetTable(newstring[] { "MÃ HP", "TÊN HỌC PHẦN", "SỐ SV", "HT THI", "PHÕNG" }, (DataTable)grwDanhSach.DataSource); MonXepPhong(kq); frmChonPhong fcp = newfrmChonPhong(kq); if (fcp.ShowDialog() == DialogResult.OK) XuLyDataGridView.ShowData(fcp.dgrDanhSach, grwDanhSach, "PHÒNG", "PHÒNG"); } privatevoid grwDanhSach_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { DateTime columnValue; if (e.ColumnIndex == 8) ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang 43 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP if (e.Value != null&&DateTime.TryParse((e.Value.ToString()), out columnValue)) e.Value = DateTime.Parse(e.Value.ToString()).ToShortTimeString(); if (e.ColumnIndex == 7) if (e.Value != null&&DateTime.TryParse((e.Value.ToString()), out columnValue)) e.Value = DateTime.Parse(e.Value.ToString()).ToShortDateString(); } publicvoid frmFormMain_SizeChanged(object sender, EventArgs e) { if (this.WindowState != FormWindowState.Maximized &&this.WindowState != FormWindowState.Minimized) this.WindowState = FormWindowState.Maximized; } privatevoid btnLuuBieuMau_Click(object sender, EventArgs e) { try { SaveFileDialog sv = newSaveFileDialog(); sv.FileName = "BieuMau.xls"; sv.Filter = "Excel Worksheet|*.xls;*.xlsx"; if (sv.ShowDialog() == DialogResult.OK) { Assembly Assemb = Assembly.GetExecutingAssembly(); FileStream fs; BinaryWriterbw; if (File.Exists(sv.FileName)) File.Delete(sv.FileName); fs = newFileStream(sv.FileName, FileMode.CreateNew); ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang 44 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP bw = newBinaryWriter(fs); bw.Write(global::XepLichThi.Properties.Resources.BieuMau, 0, global::XepLichThi.Properties.Resources.BieuMau.Length); bw.Flush(); bw.Close(); } } catch (Exception) { } } privatevoid btnHuongDanSuDung_Click(object sender, EventArgs e) { if (File.Exists("Help.chm")) Process.Start("Help.chm"); else BatLoi.ThongBao2("Lỗi: Khơng tìm thấy file Help.chm"); } } } ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang 45 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP 3.4 Kết luận Qua thời gian dài nghiên cứu xây dựng ứng dụng, gặp nhiều khó khăn, song hồn thành đƣợc chƣơng trình với kết nhƣ sau: 3.4.1 Kết đạt - Nghiên cứu lý thuyết đồ thị hiểu rõ đƣợc số vấn đề liên quan đến đồ thị thuật tốn tơ màu đồ thị - Từ lý thuyết thuật tốn tơ màu đồ thị,đề xuất thuật tốn xếp lịch thi với mơn thi nút, thời điểm thi màu đƣợc tô - Xây dựng hồn chỉnh chƣơng trình xếp lịch thi 3.4.2 Khó khăn gặp phải - Sinh viên tìm hiểu đề tài khoa học sinh viên năm cuối, mẻ,phải nghiên cứu từ đầu nên nhiều thiếu sót - Các chức chƣơng trình chƣa thật linh động, gây khó khăn cho ngƣời sử dụng - Chƣa có kinh nghiệm nhiều việc thiết lập phần mềm ứng dụng kiến thức cịn nhiều hạn chế - Tính bảo mật liệu chƣơng trình cịn thơ sơ 3.4.3 Hướng phát triển - Một số chức chƣơng trình cịn chƣa thực tối ƣu hóa Em phấn đấu để thay đổi cải tiến chƣơng trình cho việc xếp lịch tự động hoàn toàn: tự động phân nhóm, tự động xếp phịng thực hành, điều muốn hƣớng tới phần bổ thời gian thi cho sinh viên ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang 46 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP TÀI LIỆU THAM KHẢO [1]Nguyễn Văn Ba, Phát triển hệ thống hướng đối tượng với UML, ĐHBKHN, 2004 [2]Nguyễn Minh Hiệp, Giáo trình Cơng cụ & Mơi trường lập trình 1, Đại học Đà Lạt, 2009 [3] Phạm Hữu Khang, Lập trình C#, NXB Lao động xã hội, 2006 [4] Trần Nguyên Phong,SQL Server 2000, ĐHKH Huế, 2004 [5] Nguyễn Tô Thành, Nguyễn Đức Nghĩa,Giáo trình tốn rời rạc, ĐHBKHN, 1994 ĐẶNG TỐ LỘC LỚP 53K2 – KỸ SƢ CÔNG NGHỆ THÔNG TIN Trang 47 ... TƠ MÀU ĐỒ THỊ ĐỂ GIẢI QUYẾT BÀI TOÁN XẾP LỊCH THI 2.1 Bài tốn xếp lịch thi theo tín trƣờng Đại học 2.2 Quy toán xếp lịch thi tốn tơ màu đồ thị 2.3 Thuật toán xếp lịch thi. .. đến đồ thị thuật tốn tơ màu đồ thị - Từ lý thuyết thuật tốn tơ màu đồ thị, đề xuất thuật tốn xếp lịch thi với mơn thi nút, thời điểm thi màu đƣợc tô - Xây dựng hồn chỉnh chƣơng trình xếp lịch thi. .. loại ứng dụng lý thuyết đồ thị để giải nhiều toán sống .Bài tốn tơ màu đồ thị ví dụ điển hình Cho đồ thị vơ hƣớng G=(E,V), E cạnh, V số đỉnh đồ thị, tốn tơ màu đồ thị phép gán màu cho đỉnh cho