Diễn đàn    Window Form programming    Mã nguồn phần mềm xếp thời khóa biểu đại học : Unisched 4 (source)

Thành viênTrả lời
khanhjin

khanhjin
17  bài
12-5-2009 16:51:54
Đây là mã nguồn mình viết ngày xưa tham dự trí tuệ việt nam, mọi người xem qua thử

http://coder.awas.vn/downloads.ashx?id=e621736be060432599770bb38f348712
 
khanhjin

khanhjin
17  bài
12-5-2009 16:56:47
Phần mềm xếp thời khóa biểu University Scheduling 4.0
Giao diện chương trình.

Từ một bài tập lớn nghiên cứu các thuật toán xếp thời khoá biểu cho các trường đại học (môn trí tuệ nhân tạo), kết hợp việc tìm hiểu nguyên tắc xây dựng TKB chung của một số lượng các trường Đại Học trên toàn Hà Nội. Tôi đã quyết định xây dựng sản phẩm University Scheduling 4.0.

Bài toán TKB không phải là một bài toán mới, nó là một bài toán cũ nhiều người đã dày công và tìm kiếm lời giải chung để giải quyết cho tất cả mọi trường hợp. Tuy nhiên do tính chất của bài toán là quy hoạch lõm nên chúng không bao giờ tìm ra bài toán giải quyết được tất cảc các trường hợp.

Chương trình của tôi đưa ra cũng không nhắm vào mục tiêu ấy mà nhắm vào mục tiêu là một nhóm các trường đại học có quy chế đào tạo giống với với mô hình trường Đại Học Bách Khoa Hà Nội.

Giao diện thân thiện đẹp – Các chức năng thường dùng được đưa ra màn hình chính.

Các tính năng nổi bật:

* Giao diện thân thiện dễ dùng
* Tốc độ thuật toán rất nhanh
* Có khả năng sử lý với dữ liệu rất lớn (theo thử nghiệm là > 10.000 đối tượng)
* Có khả năng kết hợp nhiều phòng ban trong việc xây dựng một thời khoá biểu lớn.
* Phân quyền rõ ràng
* Chức năng ghép các lớp (hầu hết các chương trình trước đây không có chức năng này)
* Các loại báo cáo đa dạng, đẹp
* Sử dụng bảng mã chuẩn UNICODE trong hiển thị tiếng Việt
* Nhiều công nghệ được tích hợp với chương trình (bảo mật , backup …)

Sáng tạo lớn nhất trong chương trình đó là việc đưa ra một qui chuẩn của việc xếp lịch. Đó là định nghĩa ra đơn vị sự kiện. Đó là đơn vị nhỏ nhất thông suốt sử dụng quá trình xếp lịch. Các chương trình phần mềm trước đây không đưa ra được định nghĩa cho các sự kiện cần xếp lịch nên không thể có một qui chuẩn cho việc qui tất cả các bài toán của hầu hết các trường thành một bài toán chung.

Sau khi có định nghĩa của các sự kiện, bài toán với các mô hình đào tạo khác nhau đều qui về bài toán tối ưu tô màu bản đồ. Tất nhiên đối với mỗi mô hình đào tạo chúng ta đều phải xây dựng một thuật toán khác. Nhưng xây dựng được khung cơ sở để dựa vào đó chúng ta có thể viết các thuật toán đã chiếm 70% công việc của quá trình xếp lịch.

Trong chương trình dự thi tôi đã đưa ra 2 cách để xếp thời khoá biểu

* Tự động hoàn toàn
* Xếp lịch bằng tay tuỳ theo các yêu cầu bên ngoài khác.

Chúng ta biết rằng các yêu cầu đối với một TKB là rất đa dạng, nhiều nên việc xây dựng một chương trình thông minh:

* nhận yêu cầu của con người
* Tự động sử lý đáp ứng với yêu cầu đó

Là không thể. Vì trong quá trình ấy chúng ta phải đơn vị hoá các yêu cầu của con người thành số mà máy tính hiểu được. Nên việc đó là không thể. Nên tôi đã đưa ra một cách mà con người có thể tác động vào đó để có thể đưa ra kết quả như mong muốn. Đó là xếp lịch = tay.

Đối với các chương trình tuyên bố chương trình có thể tự động hoàn toàn đáp ứng mọi nhu cầu của người dùng là không khả thi.

Ví dụ:

* Sau khi chạy xong thuật toán xếp lịch. Trưởng khoa yêu cầu tôi không dạy vào các tiết đầu tiên trong ngày (1,2) vì tôi phải chủ trì các buổi họp.
* Nếu không có xếp lịch = tay chúng ta không có cách nào thay đổi được kết quả cần in ra của TKB. Chỉ có một cách là cách chức ông trưởng khoa đó và để một ông nào khác lên thay.

Ví dụ về việc không thể tìm ra kết quả:

* Khoa Triết học của hầu hết các trường Đại Học là khoa có mật độ giảng dạy lớn nhất. Do đó các giáo viên ở khoa này thường phải dạy rất nhiều. Có những tuần số tiết mà các giáo viên đó giảng dạy vượt quá khả năng của giáo viên đó (80 tiết / tuần) chẳng hạn.
* Trong khi chúng ta có 1 tuần có 6 ngày. Mỗi ngày 12 tiết (6 sáng, 6 chiều) tức là có 6x12=72 tiết. Nhưng giáo viên đó phải dạy đến 80.
* Suy nghĩ khi có máy tính mọi việc đều được giải quyết là không khả thi. Và đó là một trong các lý do không thể tự động hoàn toàn giải quyết. Vì việc các chương trình máy tính cố tìm cách xếp 80 tiết vào 72 ô là việc không thể. Cố tìm sẽ dẫn đến treo máy.
* Có một cách giải quyết không mang tính máy tính mà mang tính hành chính đó là trong tuần đó tìm người giảng dạy thay.

Với tất cả các yêu cầu đó chương trình của tôi có mục tiêu khiêm tốn hơn:

* Tự động tìm cách xếp lịch cho đại đa số các trường hợp
* Những trường hợp khó nhiều ràng buộc sẽ được người dùng tự xếp bằng tay.

Với mục tiêu như thế để sử dụng tối đa khả năng của chương trình. Người sử dụng nên tuân thủ các bước:

* Xếp tay cho các trường hợp yêu cầu đặc biệt, khó trước.
* Các trường hợp đơn giản xếp tự động sau.

Một trong những điểm khó khác của phần mềm đó là việc hiển thị TKB. Do nhóm các tiết học là không giống nhau có thể là 2, 3, 4 tiết liên tiếp nên để hiển thị TKB kéo theo chúng ta phải trộn các cột. Khi sử dụng các phần mềm Crystal Report, Active Report, C1 Report chúng ta không thể xây dựng các báo cáo động dạng này. Chương trình đã giải quyết bằng cách Export dữ liệu ra Excel. Và công việc in ấn thực hiện trên Excel. Đó là một điểm rất mạnh của chương trình.

Với việc sử dụng tính năng này chúng ta có thể sinh ra rất nhiều các loại báo cáo khác nhau.

tài liệu download tại đây

http://coder.awas.vn/downloads.ashx?id=430b42fff34940b0b50156c404532fb5

# Yahoo: ngk_succ
# Email : khanhnd@awas.vn
# phone : (04) 2247 1200
# mobile : 093 690 6900
 
kaola


1  bài
10-12-2009 23:3:5
cám ơn nhiều
 
sunz1990


1  bài
26-2-2010 0:17:12
thanks bạn :D bài hay quá
 
nhbach2203


2  bài
6-5-2010 10:26:5
thanks, rất bổ ích đấy.
Best regards.
 
dctamtn


1  bài
24-6-2010 18:7:8
Gioi thiệu khá hấp dẩn, không biết nội dung như thế nào? xem thử đả!!!
 
bemap18


2  bài
5-9-2010 8:22:33
Cảm ơn anh đã chia sẻ tài liệu.Chúc anh công tác tốt:)
 
bemap18


2  bài
5-9-2010 8:23:2
Cảm ơn anh đã chia sẻ tài liệu.Chúc anh công tác tốt
 
khietboog


1  bài
16-6-2011 10:19:31
thanks.Chuc anh thanh cong voi phan mem nay
 
ducba


1  bài
20-6-2011 10:13:40
CAM ON NHIEU
 
ngocthovcef


1  bài
12-7-2011 4:35:55
Cám ơn khạnhin nhiều.
Nhưng mình không chạy được chương trình sau khi down về.
Hướng dẫn lại dùm mình nhé!
 
tucvlk1


1  bài
3-9-2011 10:43:56
cảm ơn anh và gia gình anh
 
khanhjin

khanhjin
17  bài
3-9-2011 21:48:46
tucvlk1: cảm ơn anh và gia gình anh

tucvlk1 = Tức vãi lúa

Hướng dẫn cái này khó bỏ cha, code bỏ đi từ 4-6 năm nay nhớ thế quái nào được ngày xưa mình viết gì. Đọc lại thì mất cả ngày. Có code tham khảo là tốt rồi bạn ạ
 
thanhee


3  bài
27-9-2011 15:10:56
Phần mềm xếp thời khóa biểu University Scheduling 4.0
Giao diện chương trình.

Từ một bài tập lớn nghiên cứu các thuật toán xếp thời khoá biểu cho các trường đại học (môn trí tuệ nhân tạo), kết hợp việc tìm hiểu nguyên tắc xây dựng TKB chung của một số lượng các trường Đại Học trên toàn Hà Nội. Tôi đã quyết định xây dựng sản phẩm University Scheduling 4.0.

Bài toán TKB không phải là một bài toán mới, nó là một bài toán cũ nhiều người đã dày công và tìm kiếm lời giải chung để giải quyết cho tất cả mọi trường hợp. Tuy nhiên do tính chất của bài toán là quy hoạch lõm nên chúng không bao giờ tìm ra bài toán giải quyết được tất cảc các trường hợp.

Chương trình của tôi đưa ra cũng không nhắm vào mục tiêu ấy mà nhắm vào mục tiêu là một nhóm các trường đại học có quy chế đào tạo giống với với mô hình trường Đại Học Bách Khoa Hà Nội.

Giao diện thân thiện đẹp – Các chức năng thường dùng được đưa ra màn hình chính.

Các tính năng nổi bật:

* Giao diện thân thiện dễ dùng
* Tốc độ thuật toán rất nhanh
* Có khả năng sử lý với dữ liệu rất lớn (theo thử nghiệm là > 10.000 đối tượng)
* Có khả năng kết hợp nhiều phòng ban trong việc xây dựng một thời khoá biểu lớn.
* Phân quyền rõ ràng
* Chức năng ghép các lớp (hầu hết các chương trình trước đây không có chức năng này)
* Các loại báo cáo đa dạng, đẹp
* Sử dụng bảng mã chuẩn UNICODE trong hiển thị tiếng Việt
* Nhiều công nghệ được tích hợp với chương trình (bảo mật , backup …)

Sáng tạo lớn nhất trong chương trình đó là việc đưa ra một qui chuẩn của việc xếp lịch. Đó là định nghĩa ra đơn vị sự kiện. Đó là đơn vị nhỏ nhất thông suốt sử dụng quá trình xếp lịch. Các chương trình phần mềm trước đây không đưa ra được định nghĩa cho các sự kiện cần xếp lịch nên không thể có một qui chuẩn cho việc qui tất cả các bài toán của hầu hết các trường thành một bài toán chung.

Sau khi có định nghĩa của các sự kiện, bài toán với các mô hình đào tạo khác nhau đều qui về bài toán tối ưu tô màu bản đồ. Tất nhiên đối với mỗi mô hình đào tạo chúng ta đều phải xây dựng một thuật toán khác. Nhưng xây dựng được khung cơ sở để dựa vào đó chúng ta có thể viết các thuật toán đã chiếm 70% công việc của quá trình xếp lịch.

Trong chương trình dự thi tôi đã đưa ra 2 cách để xếp thời khoá biểu

* Tự động hoàn toàn
* Xếp lịch bằng tay tuỳ theo các yêu cầu bên ngoài khác.

Chúng ta biết rằng các yêu cầu đối với một TKB là rất đa dạng, nhiều nên việc xây dựng một chương trình thông minh:

* nhận yêu cầu của con người
* Tự động sử lý đáp ứng với yêu cầu đó

Là không thể. Vì trong quá trình ấy chúng ta phải đơn vị hoá các yêu cầu của con người thành số mà máy tính hiểu được. Nên việc đó là không thể. Nên tôi đã đưa ra một cách mà con người có thể tác động vào đó để có thể đưa ra kết quả như mong muốn. Đó là xếp lịch = tay.

Đối với các chương trình tuyên bố chương trình có thể tự động hoàn toàn đáp ứng mọi nhu cầu của người dùng là không khả thi.

Ví dụ:

* Sau khi chạy xong thuật toán xếp lịch. Trưởng khoa yêu cầu tôi không dạy vào các tiết đầu tiên trong ngày (1,2) vì tôi phải chủ trì các buổi họp.
* Nếu không có xếp lịch = tay chúng ta không có cách nào thay đổi được kết quả cần in ra của TKB. Chỉ có một cách là cách chức ông trưởng khoa đó và để một ông nào khác lên thay.

Ví dụ về việc không thể tìm ra kết quả:

* Khoa Triết học của hầu hết các trường Đại Học là khoa có mật độ giảng dạy lớn nhất. Do đó các giáo viên ở khoa này thường phải dạy rất nhiều. Có những tuần số tiết mà các giáo viên đó giảng dạy vượt quá khả năng của giáo viên đó (80 tiết / tuần) chẳng hạn.
* Trong khi chúng ta có 1 tuần có 6 ngày. Mỗi ngày 12 tiết (6 sáng, 6 chiều) tức là có 6x12=72 tiết. Nhưng giáo viên đó phải dạy đến 80.
* Suy nghĩ khi có máy tính mọi việc đều được giải quyết là không khả thi. Và đó là một trong các lý do không thể tự động hoàn toàn giải quyết. Vì việc các chương trình máy tính cố tìm cách xếp 80 tiết vào 72 ô là việc không thể. Cố tìm sẽ dẫn đến treo máy.
* Có một cách giải quyết không mang tính máy tính mà mang tính hành chính đó là trong tuần đó tìm người giảng dạy thay.

Với tất cả các yêu cầu đó chương trình của tôi có mục tiêu khiêm tốn hơn:

* Tự động tìm cách xếp lịch cho đại đa số các trường hợp
* Những trường hợp khó nhiều ràng buộc sẽ được người dùng tự xếp bằng tay.

Với mục tiêu như thế để sử dụng tối đa khả năng của chương trình. Người sử dụng nên tuân thủ các bước:

* Xếp tay cho các trường hợp yêu cầu đặc biệt, khó trước.
* Các trường hợp đơn giản xếp tự động sau.

Một trong những điểm khó khác của phần mềm đó là việc hiển thị TKB. Do nhóm các tiết học là không giống nhau có thể là 2, 3, 4 tiết liên tiếp nên để hiển thị TKB kéo theo chúng ta phải trộn các cột. Khi sử dụng các phần mềm Crystal Report, Active Report, C1 Report chúng ta không thể xây dựng các báo cáo động dạng này. Chương trình đã giải quyết bằng cách Export dữ liệu ra Excel. Và công việc in ấn thực hiện trên Excel. Đó là một điểm rất mạnh của chương trình.

Với việc sử dụng tính năng này chúng ta có thể sinh ra rất nhiều các loại báo cáo khác nhau.

tài liệu download tại đây

http://coder.awas.vn/downloads.ashx?id=430b42fff34940b0b50156c404532fb5

# Yahoo: ngk_succ
# Email : khanhnd@awas.vn
# phone : (04) 2247 1200
# mobile : 093 690 6900
 
thanhee


3  bài
27-9-2011 15:11:31
lam sao de chay day po??????
 
thanhee


3  bài
27-9-2011 15:12:19
Cám ơn khạnhin nhiều.
Nhưng mình không chạy được chương trình sau khi down về.
Hướng dẫn lại dùm mình nhé!

sAo? chay dc chua? co the chi cho tui ko?
 
black777


1  bài
26-12-2011 10:7:37
phần mềm cc gì mà ko làm dc gì, zo coi dc có 2 tấm hình vl như Lê Văn Luyện
 
benkianuadem123


1  bài
23-3-2012 11:19:13
Ban oj.
Banj co the cho minh xin code cua phan mem xep thoi khoa bieu nay k? Minh cung dang lam ve chuong trinh xep thoi khoa bieu.
Cam on ban nhiu nha.
 
dakmil_cf


3  bài
5-4-2012 12:57:0
Cám ơn!
 
dotatthoai


1  bài
6-5-2012 4:10:39
Đây là mã nguồn mình viết ngày xưa tham dự trí tuệ việt nam, mọi người xem qua thử

http://coder.awas.vn/downloads.ashx?id=e621736be060432599770bb38f348712
 

Chủ đề gần đây :

Cùng loại :

Tên file Mô tả chi tiết Ngày
KydientuPdf.zip (9) Ky dien tu file PDF su dung itextsharp4/9/2019 3:30:37 PM
GooglePlusLogin.zip (11) Login Google Plus account, C#, web asp.net ver2.0. Simple connect google APIs. Send key, get token, get full account info6/1/2018 10:41:12 AM
WebApplication1.rar (8) Sample su dung thuat toan ma hoa tripDES, co khoa bi mat (privateKey)3/30/2018 10:06:35 PM
NETMdbToolsTestApp.rar (1) dotNet MdbTools for Access 2003/2007/2016 without Microsoft Jet Engine, source C#, https://www.codeproject.com/Articles/283626/MsAccess-MdbTools-with-MFC-and-NET3/26/2018 11:43:16 PM
Cryptography_MD5_TriDES_src.zip (3) Thuật toán mã hóa 2 chiều TriDES, gồm Encrypt và Decrypt, aspnet 2.03/22/2018 11:20:44 AM
mvc.rar (9) sample project MVC on C#3/20/2018 9:25:36 AM
EduPortal.rar (13) Edu portal frame work for VB.NET3/14/2018 12:00:41 AM
AutoEntity.rar (2) Gencode vb.net visual studio 2015. dotnet v2.03/13/2018 11:59:16 PM
GenCode.rar (9) Gencode XML, XSLT, Info, DAL .. engine enterprise for quick app database2/5/2018 9:37:28 AM
DataXml.rar (4) Read DB from SQL to XML file, Convert string TCVN to Unicode1/29/2018 2:15:45 PM