Phân công nhiệm vụ coi thi

Trạng thái
Không mở trả lời sau này.

huutinh85

Yêu THVBA nhất
dạ bác @vbano1 về việc giám thị hàng lang thì chủ yếu là quan tâm số nhóm thôi các bác ạ ( hiện tại có 9 nhóm) nên việc tạo nhóm này tuỳ thuộc cơ sở vật chất của từng đơn vị tổ chức thi, nhóm không nhất thiết là 2p/nhóm. tuỳ thuộc nhóm đó để phân công giám thị hành lang, và cũng không yêu cầu gì về sự trùng lặp đơn vị. Vì trong thực tế khi pc giám thị hành lang có thể lấy ra 1 đơn vị 2-3 người, không cố định
- chỉ cần đảm bảo mỗi nhóm có 1 giám thị phụ trách là ok, và như bác nói giống việc sắp xếp hs ( gthl ) vào chỗ ngồi ( nhóm) và sau đó luôn chuyển, nên cách của bác ok rồi. Nhưng em có thể tuỳ biến số nhóm được không. Nếu không thì em có thể xếp tay tịnh tiến như giải pháp sắp giám thị của bác cũng ok rồi.
- còn giám thị vp thì không cần sắp xếp bác ạ, việc lấy ra giám thị vp là để phụ trách công việc sắp xếp hồ sơ, biên bản nên không yêu cầu gì
cảm ơn bác nhiều ạ
* qua bài toán phân công gt này em nghĩ có thể áp dụng vào một quá trình phân công thanh tra kiểm tra chéo giữa các đơn vị hoặc các phân xưởng trong công ty...
 

vbano1

SMod
Thành viên BQT
Nhưng em có thể tuỳ biến số nhóm được không.
Trả lời: Mình không hiểu số nhóm là gì. Input số nhóm được thể hiện ở đâu trong các file bạn đã diễn đạt trong topic này ạ? Có phiền không nếu mình nhờ bạn thuyết minh về số nhóm? Nếu có thời gian, bạn có thể nói về nhóm là gì, nó thể hiện ở đâu trên data input được không ạ?

Bạn có thể tùy biến số lượng người. Đầu vào là 9 người, hay 10 người, hay 20 người...
Code sẽ sắp xếp ngẫu nhiên mỗi người vào một vị trí.
 

huutinh85

Yêu THVBA nhất
@vbano1
- số nhóm là thế này bác: hiện tại có 18p và chia ra mỗi gt hành lang phụ trách 2 phòng như vậy 18p/2 = 9 nhóm phòng đó bác. Tuy nhiên trong thực tê thì số nhóm này tuỳ theo quy ước, ví dụ: hội đồng thi này có 19p thì nếu chia 2p/ nhóm thì lẻ,nên có thẻ chia 9 nhóm trong đó có 1 nhóm gồm 3 phòng đó bác, vậy là sẽ có 9 nhóm , cần 9 gv hành lang. Khi đó chủ tịch hội đồng se lấy ra 9 gv để làm gthl. việc này không ảnh huỏng gì đến pc gtcoi thi, cũng không quan trọng là 9 người này ở cung đơn vị cũng được khác đơn vị cũng được. Đôi khi tuỳ theo luọng giám thị ít chẳng hạn 6 gthl thì chủ tịch hội đồng có thể quy định mỗi nhóm có nhiều phòng hơn ( 18/3=6 nhóm) khi đó chỉ cần luôn chuyển 6gv này lần lượt qua 6 nhóm theo tùng môn thi,. gt hành lang có thể phụ trách lại nhóm phòng cũng không sao. nên code của bác ok rồi ạ
 

vbano1

SMod
Thành viên BQT
@huutinh85 : Đây là yêu cầu hoàn toàn mới.
1. Số nhóm là do người qui định. Vậy thì data input cần phải có thông tin này để chương trình thực thi.
Hiện nay cứ có 9 hay 10 người thì code sẽ xếp vào 9 hay 10 vị trí mà không quan tâm có bao nhiêu phòng thi.
Bạn có 18 phòng, muốn một người coi hành lang hai phòng thi, thì nhập vào 9 người để chương trình xếp.
Bạn có 20 phòng, thì nhập vào 10 giáo viên để chương trình xếp.
2. Trường hợp bạn muốn tùy chỉnh:
Số người: x (trường hợp của bạn là x=9)
Một người làm việc hành lang của số phòng thi: y (trường hợp của bạn, y = 2)
Số phòng thi: p (trường hợp của bạn p = 18).
Như vậy code phải đếm số người x.
Code phải đọc thông tin y.
Code phải đọc thông tin số phòng thi p.
Rồi kiểm tra x>= p/y hay không. Nếu thiếu thì không làm.
Nếu thừa thì sao? => Ý tưởng của bạn là gì?
Nếu đủ, quay về code tôi đã chia sẻ, bạn tùy ý chỉnh sửa.

Trong trường hợp 2., bạn phải đưa ra giao diện chương trình. Nơi nhập x như thế nào. Hiện tại bạn đang để là list trên excel.
Nơi nhập y ở đâu. Hiện tại không có, bạn tự hiểu trong đầu, 1 người coi hành lang 2 người. Cái này chương trình không hiểu, không có số liệu.
Nơi nhập p ở đâu? Lại phải quay về bài toán 1 để lấy thông tin phải không?

Tóm lại giao diện tổng thể của cả bài toán 1 và bài toán 2 là như thế nào? Hãy thiết kế và mang lên đây để mọi người xem.
 

giaiphapvba

Administrator
Thành viên BQT
Ở bài toán số 2, theo data tác giả đưa lên, danh sách có 9 người. Kết quả cũng thể hiện là 9 người này được xếp vào các vị trí công việc khác nhau. Vậy hiểu là tạo ngẫu nhiên 9 vị trí cho 9 người này.

Giả thiết danh sách có 20 người. Cần tạo 9 nhóm. Thì bài toán này sẽ tách ra làm hai bài toán:
1. Chọn ngẫu nhiên 9 người từ danh sách 20 người.
2. Trong 9 người, tạo ngẫu nhiên 9 vị trí cho họ.

Tuy nhiên, theo data tác giả đưa lên, danh sách chỉ có 9 người, và kết quả mà tác giả đưa ra cũng là 9 vị trí. Vì vậy hiểu là, chúng ta chỉ phải giải quyết mục số 2. Có nghĩa là nhập bao nhiêu người thì tạo ngẫu nhiên cho ngần ấy con người.
Nếu có ý kiến nào khác, tác giả nên trình bày rõ ý tưởng. Nói là không thể code, nhưng không thể nói là không có ý tưởng thiết kế nào.

Bây giờ vấn đề lẻ, thì tôi bày cho bạn như thế này:
Giả sử có 19 phòng thi. Nhưng chỉ có 9 giám thị.
Bạn cứ chia nhóm cho 9 giám thị bình thường. Cái người nằm ở vị trí cuối cùng thì coi thêm một phòng thi nữa.
Ai rơi vào cái nhãn cuối cùng thì mặc định coi thêm phòng thi nữa.
Bạn cần đăng nhập để thấy hình ảnh


Chứ bây giờ ý tưởng không rõ ràng, mỗi lúc một ý kiến. Người code không thể trở tay được.

Bài toán số 2, đã đáp ứng yêu cầu ban đầu, tôi nghĩ không nên bàn luận thêm để làm rối topic. Nếu có ý kiến nào khác, nên lập ra topic mới.
Bài toán số 1, vấn đề chính đã được giải quyết rồi, còn những thứ râu ria thì giải quyết dần dần khi mọi người có thời gian.
Trong trường hợp, cần tạo một file duy nhất, thì ít nhất tác giả cũng nên đưa ra một file input chung.

Bài toán số 2, giám thị hành lang, kết quả mà bạn thể hiện nằm ở cột A là không hợp lý.
Bạn cần đăng nhập để thấy hình ảnh

Làm thế nào để chương trình đọc được dữ liệu input khi mà cả input và output đều được ghi trên các cột A,B,C,D.

Ngoài ra, theo như sơ đồ dưới:
Bạn cần đăng nhập để thấy hình ảnh

thì chỉ có phần nền vàng chữ đỏ là bạn không làm được. Vậy thì các phần còn lại, bạn nên làm rõ, để mọi người trợ giúp được trơn tru.
 

Euler

Administrator
Thành viên BQT
Theo như code hiện tại của bài toán 2 thì:
Bạn cần đăng nhập để thấy hình ảnh


Chương trình thì có thể tính được là dư người hay không, cũng có thể tính được một người phải coi hành lang bao nhiêu phòng, dựa vào công thức:
phòng/ người. (phòng > người).
hoặc nếu người > phòng. Ví dụ 40 người. 20 phòng thi.
Vậy cứ 2 người coi một hành lang. Công thức lúc đảo lại:
người/phòng.

Trong data bạn đưa lên cũng không nói rõ người > phòng hay phòng> người, và cũng không nói dư hay đủ. Định nghĩa nhóm là gì.
Bạn cũng không nói dư ra thì tiến hành như thế nào.
Bây giờ có một câu chuyện là ông chủ tịch quyết định, macro không hiểu quyết định của ông chủ tịch là gì. Macro chỉ hiểu là có bao nhiều người thì nó sắp xếp. Người code khi code cũng đã không biết định nghĩa nhóm của bạn là gì. Điều này cũng vì vội vã code mà chưa chờ phản hồi xác nhận của bạn.

Những điều này không được thể hiện trong yêu cầu ban đầu của bài toán số 2, cho nên macro đưa ra là hoàn toàn hợp lệ. Hoặc là bạn có thể tùy chỉnh code theo ý của bạn. Hoặc là bạn cứ chạy lệnh sắp xếp, rồi dùng tay sửa lại nội dung các nhãn ở dưới như ảnh trên. Topic này sẽ không thảo luận thêm về bài toán số 2 nữa. Các bài viết về bài toán số 2 trong topic này sẽ bị xóa. Bạn nên lập ra topic mới để thảo luận về bài toán số 2 nếu muốn, trong trường hợp đó, hãy nêu rõ ràng mọi thứ.
Về bài toán số 1, khi nào rảnh, tôi xin phép được tiếp tục. Các thành viên nếu muốn thảo luận topic này, hãy quay về bài toán số 1.
 

huutinh85

Yêu THVBA nhất
@Euler , @vbano1 , @giaiphapvba , @tuhocvba @Snow24
bài toán số 1 về tối ưu giao diện em muốn như sau:
- Phần màu xám sẽ ẩn như trên hình chỉ để lại phần màu sáng
Bạn cần đăng nhập để thấy đính kèm

- thêm nút "lưu" trên sheet "tuhocvba"
Bạn cần đăng nhập để thấy đính kèm

- Khi bấm "lưu" thì dữ liệu sẽ xuất sang " BANGPHANCONG", Có 2 dạng giao diện, các bác muốn chọn giao diện nào phù hợp cho việ code
Bạn cần đăng nhập để thấy đính kèm

- Code Xoá thì hiện tai đang xoá hết bảng. trong thực tế thì khi thi xong 1 môn thì toàn bộ phân công của môn đó lập thành biên bản , không được thay đổi. Vì vậy chỉ có thể điều chỉnh phân công ngay trong môn thi đang tiến hành. Nên Code xoá toàn bộ chưa phù hợp. Vì vậy em mói đề xuất nút " LƯU" để khi có phương án ok thì mình lưu lại và các môn sau không can thiệp vào phân công môn trước nữa, và các bảng đó cũng là dữ liệu để các đối chiếu các dữ liệu phân công tiếp theo. Còn hiện tại muốn xoá phân công hiện tại thì em vào vùng để xoá
Bạn cần đăng nhập để thấy đính kèm

-hôm trước em đã up lại file không biết các bác có nhận được không? giờ em up lại
 

Euler

Administrator
Thành viên BQT
Vâng. Cảm ơn bạn đã bỏ thời gian để sắp xếp lại thông tin dễ hiểu hơn.Nếu có chỗ nào không hiểu, hãy cho phép tôi liên lạc lại với bạn sau.
Đây là yêu cầu không có kỳ hạn, vậy khi nào xong, tôi sẽ liên lạc sau.
 

huutinh85

Yêu THVBA nhất
@Euler cảm ơn bác nhiều. cũng xin lỗi các bác vì nhiều khi em có làm file demo nhưng một số diễn đạt chưa rõ nội dung nên các bác khó khăn trong việc code.
 

Euler

Administrator
Thành viên BQT
Tool cập nhật ngày 4/8/2019: Ra thông báo nếu phát hiện thấy có phòng không đủ hai người.
Về cách làm bằng tay của @huutinh85 cũng là một giải pháp nhưng không phải là cách làm chính xác.
Bạn cần đăng nhập để thấy hình ảnh

Cần phải backup dữ liệu hai cái chỗ khoanh vàng. Vì dù chạy sai nhưng chỗ này cũng đã bị cập nhật.
Giải pháp là trước khi chạy code, tôi dự định sẽ cho backup data này ra cột khác. Cũng may là thiết kế dữ liệu, tôi để khoảng 10 cột trống rồi mới ghi kết quả. Nếu không thì không biết ghi vào đâu.
Có lẽ phải cuối tuần tới, tôi mới có thời gian tiếp tục hỗ trợ bạn.
Ngoài lề: Bạn có thể chia sẻ link diễn đàn lên facebook cá nhân ở chế độ public được không?
 

huutinh85

Yêu THVBA nhất
cảm ơn bác @Euler , em định là dùng ý tưởng này.
Bạn cần đăng nhập để thấy đính kèm

- em muốn hoàn thiện giao diện để trực quan hơn có thể thấy lịch sử đã gác phòng nào, chức danh gì? ai dự bị, ở môn nào?
Ngoài lề đã chia sẻ trang của diễn đàn
Việc hoàn thiện giao diện em hiểu có thời gian, mong được sự chung tay, chia sẻ của các thành viên trong diễn đàn!
 

Euler

Administrator
Thành viên BQT
Cho thêm đoạn code này vào chạy cho đỡ lỗi vặt:
Mã:
stt_tem = 0
            Do Until stt_tem > 0
                stt_tem = selectrandom(i, dsct)
            Loop
Ưu điểm: Giảm thiểu lỗi như là phòng chỉ có một giảm thị. Nó sẽ chạy cho tới khi nào tìm ra thì thôi.
Nhược điểm: Nếu mà không tìm ra thì cứ chạy hoài.
Tuy nhiên với số lượng 18 phòng thi và 39 giám thị, tôi chạy mượt mà được 8 môn (8 lần chạy).
Nếu 9 môn là đơ. Có lẽ phải cần thêm giám thị nữa. Tôi cho thêm một vị giám thị nữa vào, chạy được 10 lần. Cái này cần phải có một nhà toán học đưa ra được công thức tính. Bởi vì thực tế cũng không thể nào chạy vô hạn lần. Bao nhiêu điều kiện ràng buộc, người không quay lại phòng, người không gặp lại nhau, cho nên số lần coi thi của một vị cũng phải có con số giới hạn nào đó, mình thì không tính được, mà cho máy tính chạy thì nó cứ chạy hoài thôi.
Tôi đang suy nghĩ fix 10s. Nếu mà tới 10s mà không ra được kết quả thì tốt nhất ra thông báo dừng, tới đây máy tính chịu thua ^^.
Tool ngày 6/8/2019: Fix cho chạy tự động tới khi tìm ra kết quả.
 

tuhocvba

Administrator
Thành viên BQT
Những việc tỉa tót output khá mất thời gian. Cập nhật ngày 8/8: Đã load output ra sheet mới:
Bạn cần đăng nhập để thấy hình ảnh


Link download:
 

Euler

Administrator
Thành viên BQT
Cập nhật ngày 9/8/2019 đã tô vàng các giám thị còn trống.
Link download:
Bạn cần đăng nhập để thấy hình ảnh
 

tuhocvba

Administrator
Thành viên BQT
Cập nhật Tool ngày 11/8/2019. Về cơ bản những tính năng @huutinh85 yêu cầu đã hoàn thành. Bây giờ chỉ còn chỉnh lại định dạng output cho đẹp hơn mà thôi.
Chức năng Ctr_Z đã hoàn thành, dùng để backup lại dữ liệu khi có lỗi xảy ra.
Ngoài ra sửa lại vòng lặp, để không chạy vô hạn lần.
Nếu có lỗi xảy ra -> nó chạy lại thêm 2 lần nữa. Nếu vẫn lỗi thì sẽ báo lỗi bằng thông báo. Người dùng phải dùng nút Ctr_Z trên giao diện để khôi phục lại trạng thái trước khi chạy tạo ra lỗi.
Link download:
Bạn cần đăng nhập để thấy hình ảnh
 

Euler

Administrator
Thành viên BQT
Tôi thông báo cho bạn @huutinh85 biết, diễn đàn đã hoàn thành Tool theo yêu cầu của bạn.
Bạn có 7 ngày để phản hồi lại là thỏa mãn/chưa thỏa mãn. Trong trường hợp không có phản hồi nào, cho phép chúng tôi khóa topic này.
Link download :
Chi tiết xem ở sheet Manual để biết cách dùng, nói chung không có gì khác so với nội dung đã bàn luận trong topic này.
Bạn cần đăng nhập để thấy hình ảnh
 

huutinh85

Yêu THVBA nhất
@Euler ,@vbano1 ,@tuhocvba ,@Snow24 ,@giaiphapvba .....chân thành cảm ơn các bác đã hỗ trợ rất nhiệt tình trên diên đàn. EM xin lõi các bác vì không kịp phản hồi , Vì mấy hôm nay em đang có công viêc cá nhân nên không cập nhật kịp thời chủ đề thảo luận. File cuối cùng em mới tải về và em sẽ test nếu có gì em sẽ phản hồi kịp thời cùng diễn đàn ạ.! Một lần nữa xin chân thành các bác cùng xây dựng diễn đàn thêm hữu ích!!!
 

huutinh85

Yêu THVBA nhất
Em xin chân thành cảm ơn các thành viên của diễn đàn tuhocvba.net đã hỗ trợ rất nhiệt tình để có được một tool ứng dụng rất đầy đủ. Em hy vọng tool này sẽ giúp ích rất nhiều cho các thành viên, hiện tại tool đã đáp ứng nhu cầu nên bác AD có thể Close toppic này rồi ạ,nếu các thành viên khác trong quá trình sử dụng tool muốn cải tiến thì hy vọng các bác trong diễn đàn có thể tiép tục hỗ trợ. Cảm ơn diễn đàn tuhocvba.net !.
 

giaiphapvba

Administrator
Thành viên BQT
Em hi vọng anh @huutinh85 giữ lời hứa, chia sẻ link diễn đàn trên fb cá nhân của anh. Và hy vọng tool trên được anh chia sẻ rộng rãi cho đồng nghiệp. Chỉ có như vậy sản phẩm mới được nhiều người biết tới, góp ý, để hoàn thiện hơn nữa. So sánh với Tool đã có trên internet, em nhận thấy từ ý tưởng thiết kế của anh, Tool do tuhocvba.net làm ra là gọn gàng, dễ sử dụng, không bị rối mắt. Chúc anh sức khỏe và gắn bó với diễn đàn.
 
Trạng thái
Không mở trả lời sau này.
Top