2, đó là về hệ điều hành mỗi máy gồm có Windows và Solaris còn các phầnmềm ứng dụng đã được cài đặt sẵn trên Server, hoặc sinh viên có thể cài đặtthêm các phần mềm mình cần sử dụng.Vì vậ
Trang 1GIỚI THIỆU
1.Mục đích của chương trình
Ngày nay với sự phát triển mạnh mẽ của nghành công nghệ thông tin thì nhucầu học hỏi nâng cao kiến thức ngày càng tăng Đặc biệt đối với những sinh viênnghành tin học thì việc nâng cao kiến thức để đáp ứng yêu cầu của công việc làmột điều cần thiết Quá trình học hỏi này luôn gắn liền với máy tính cá nhân.Trong điều kiện hiện nay khi mà hầu hết các sinh viên không trang bị cho mìnhmột máy tính hoặc nếu có thì cũng không tham gia các tiện ích của máy tính nhưmạng Intenet thì việc học trở nên khó khăn với sự thay đổi từng ngày của cáccông nghệ cũng như kỹ thuật
Để giải quyết tình trạng trên khoa CNTT trường Đại Học Kỹ Thuật Tp HồChi Minh đã cố gắng trang bị cho các phòng máy để tạo điều kiện cho các sinhviên thực tập máy
Nhưng vấn đề cũng phải đặt ra là làm sao tạo điều kiện tốt nhất cho các sinhviên thực tập cũng như cũng như sử dụng hết công suất của phòng máy Đồngthời cũng cần phải quản lý một số lượng lớn các sinh viên của khoa ra vào phòngmáy để thực tập và bảo vệ cơ sở vật chất đã được trang bị mà ở đây là các máytính Ngòai ra cũng cần phải giám sát chặt chẽ các họat động của sinh viên trongphòng máy để ngăn ngừa tình trạng quấy phá máy server Cuối cùng là khi phânphối lịch đăng ký của từng sinh viên cũng cần đảm bảo sự công bằng, hợp lý vàtính tự do của sinh viên.
2.Nhiệm vụ
Từ mục đích được nêu ra ở trên ta thấy cần thiết phải xây dựng một chương trình thực hiện việc đăng ký giờ thực tập qua Web Chương trình này phải có
tính năng như sau :
Trang 2 Đối với sinh viên chương trình phải cho phép sinh viên đăng ký máyvà tự động phân phối máy cho sinh viên đó và trả kết quả về lại cho sinhviên.
Và có những công cụ để trợ giúp người quản lý phòng máy theo dõiđược tiến trình thực tập của từng sinh viên cũng như quản lý các tình trạngcủa các máy tính thuộc phòng máy
Cung cấp một công cụ tự động để kiểm tra chính xác rằng một sinhviên vào giờ đó đã thực hành đúng như lịch đăng ký hay không
Trong giới hạn của đề tài này chưa thực hiện phần tự động kiểm tra sinh viêncó được phép thực tập đúng giờ và đúng máy của mình hay không
3.Các ứng dụng trên mạng Internet
3.a.Ích lợi của mạng Internet
Trao đổi dữ liệu đã trở thành một phần căn bản của nghành máy tính.Trong giới khoa học thì trao đổi dữ liệu trên mạng cũng cần thiết bởi vì nócho phép các nhà khoa học gởi dữ liệu và chương trình đến mộtsupercomputer từ xa để xử lí, hoặc tìm kiếm kết quả và thực hiện việc traođổi thông tin của những người cùng quan tâm đến vấn đề khoa học Trong nềnkinh tế hiện nay mạng máy tính ngày càng trở nên quan trọng với sự pháttriển của thương mại điện tử Người ta có thể thực hiện các cuộc mua bán quamạng mà không cần phải tới siêu thị, thực hiện các giao dịch chuyển tiềnngay tại nhà mình Đối với lĩnh vực văn hóa, giáo dục và giải trí mạng máytính cũng cung cấp nhiều tiện ích ví dụ như dạy học từ xa, hoặc có thểdownload một bài hát ưa thích về máy của mình hoặc thực hiện các cuộc tròchuyện qua hay cũng có thể gởi thư cho một người nào đó bằng email
3.b.Các ứng dụng trên mạng Internet
Sau đây sẽ giới thiệu về các ứng dụng được sử dụng rộng rãi trên mạngInternet
Thư điện tử ( Electronic mail )
Trang 3Electronic mail cho phép người sử dụng sọan thảo một lá thư và gởichúng đến một cá nhân hay mộ nhóm người nào đó Electronic mail cũngcho phép người sử dụng đọc những lá thư của người khác gởi cho họ.
Truyền file ( File transfer )
Mặc dù thỉnh thoảng thì người sử dụng truyền file bằng cách sử dụngelectronic mail nhưng chỉ để gởi các file text ngắn Dịch vụ truyền file chophép người sử dụng nhận và gởi một file chương trình hoặc dữ liệu lớn.Hệ thống sẽ có cách để kiểm tra các người sử dụng được phép hoặc làngăn ngừa sự truy cập
Remote login
Đây là một ứng dụng rất hay của mạng Internet, remote login chophép người sử dụng ngồi trên một máy và kết nối đén một máy từ xa vàthiết lập một quá trình login tương tác Người sử dụng giao tiếp với máytính từ xa qua bàn phím và màn hình của mình còn các công việc tính toánthì thực hiện trên máy mà họ kết nối vào
World Wide Web – WWW
WWW là một kiến trúc cho phép truy cập vào các tài liệu liên kếtđược phân bố rộng rãi trên hàng triệu máy tính trên mạng Internet Các tàiliệu này cũng rất đa dạng từ những trang tài liệu thông thường cho đếnnhững hình ảnh âm thanh cũng như các công cụ để trao đổi dữ liệu quaWorld Wide Web Mô hình CGI được sử dụng để giao tiếp với Webserver cho phép mở rộng các chức năng của Web server
Ứng dụng mà chúng em hiện thực cũng là một ứng dụng Web thựchiện theo mô hình CGI Nó cho phép một sinh viên thông qua mạngInternet có thể thực việc đăng ký giờ thực tập của mình một cách dễ dàng.Đồng thời cũng cho phép quản lý các thông tin về phòng máy và sinhviên qua Web đây là một hình thức quản trị cơ sở dữ liệu qua mạng
Trang 4PHẦN A PHÂN TÍCH
CHƯƠNG I CÁC VẤN ĐỀ CÓ LIÊN QUAN
1.Thực tế tình hình sử dụng máy tại khoa Công Nghệ Thông Tin trường Đại Học Kỹ Thuật –Tp Hồ Chí Minh.
Hiện nay khoa có ba phòng máy dành cho sinh viên thực tập Mỗi phòng máycó khoảng 30 máy
Các sinh viên thuộc khoa có làm Luận văn tốt nghiệp, Thực tập tốtnghiệp hoặc Đồ án môn học, muốn sử dụng máy phải đăng ký với ngườiquản lí phòng máy và được sắp xếp máy để sử dụng
Các máy thuộc của khoa đều nối mạng nên việc sử dụng các phầnmềm khá dể dàng Tuy nhiên về Hệ Điều Hành thì có một số máy có càiSolaris(có cài Windows) và một số máy cài Windows(Không cài Solaris)
Mỗi sinh viên của khoa đều được cấp một account, sinh viên muốn sửdụng được máy phải sử dụng account của mình (như ở phòng máy số 2),tuy nhiên các máy ở phòng số 1, số 3 chưa làm được như vậy
Hiện nay khoa có hệ thống các máy sử dụng NIS+ của Solaris đểquản lí account của sinh viên, sinh viên ngồi ở bất cứ máy nào trên hệ
Trang 5thống máy của khoa đều có thể login vào với một account và đều sử dụng một home, nên rất thuận tiện cho việc thực tập của sinh viên
Việc quản lí số giờ sử dụng máy cho sinh viên hiện nay không đựochợp lí nên có tình trạng một số sinh viên sử dụng quá số giờ cho phép củasinh viên đó và ngược lại một số sinh viên không có máy sử dụng
Số lượng sinh viên của khoa hiện nay rất nhiều , bao gồm nhiều loạihình đào tạo (Chính Qui,Kỹ Sư 2,Giáo Viên ,Cao Đẳng)
Thời gian bắt đầu và kết thúc học kỳ của mỗi loại hình đào tạo (ChínhQui, Kỹ Sư 2, Giáo Viên, Cao Đẳng) có sự chênh lệnh nên thời gian sửdụng máy của mỗi loại hình đào tạo cũng khác biệt với nhau Do đóthường thì phòng máy luôn có nhóm sinh viên làm đề tài sử dụng máy caođiểm một cách liên tục
Tùy theo đề tài sinh viên đang làm thuộc loai hình gì (thực tập tốtnghiệp ,luận văn tốt nghiệp,đồ án môn học) mà số giờ sử dụng máy sẽđược cấp sẽ khác nhau
Nếu trong cùng một khoảng thời gian 1 sinh viên làm cùng lúc 2 loạihình (vừa thực tập tốt nghiệp và đồ án môn học) thì chỉ được tiêu chuẩnmáy của một loại hình có số giờ lớn hơn
Không có sự ưu tiên giữa các loại hình đào tạo (Chính Qui, Kỹ Sư 2,Giáo Viên, Cao Đẳng) về sự sắp xếp lịch đăng ký cũng như số ca đượccấp giữa các loại hình đào tạo này
Tuy nhiên có sự ưu tiên về số ca sử dụng máy giữa các loại hình Luậnvăn tốt nghiệp, Thực tập tốt nghiệp, Đồ án môn học
2.Các vấn đề cần đặt ra đối với một chương trình đăng ký và xếp máy cho sinh viên.
Sinh viên sử dụng chương trình để đăng ký và được xếp máy nếu máycòn trống
Sau khi xếp máy cho sinh viên sẽ lưu các thông tin cần thiết vàodatabase, để hệ thống giám sát việc sử dụng máy của sinh viên sẽ truy
Trang 6xuất database này và cho phép sử dụng nếu xét thấy việc login của sinhviên đó là đúng.
Việc xếp máy cho sinh viên sao cho sinh viên ít phải thay đổi máy khisử dụng các ca liên tiếp
Sau xếp máy cho sinh viên thì các máy còn lại có số ca trống ít bị phânmảnh nhất
Sinh viên đăng ký được máy mình mong muốn (hệ điều hành vàchương trình chạy trên máy đó)
Sinh viên được phép thay đổi lịch đăng ký của mình
Administrator sẽ phân bổ tài nguyên có được như thế nào để đảm bảomọi sinh viên đều có thể sử dụng máy và tài nguyên của phòng máy đượcsử dụng với hiệu suất cao nhất
Administrator có một số công cụ để giám sát việc sử dụng máy củasinh viên trước hoăc sau đó
Administrator có thể thu hồi một số máy vào các thời điểm nhất định
3.Một số khó khăn khi thực hiện các vấn đề trên
Thông thường mỗi đề tài mà sinh viên thực hiên ,sẽ được làm trên mộtmôi trường hệ điều hành nào đó và cần một số phần mềm nào đó Tất nhiênđiều này sẽ ảnh hưởng đến việc đăng ký máy thực tập của sinh viên ,chẳnghạn sinh viên sẽ đăng ký vào những máy có cài những chương trình mà sinhviên cần để làm đề tài chứ không đăng ký vào những máy không có chươngtrình này Như vậy để phân bổ máy thích hợp cho sinh viên chúng ta cần phảilưu giữ các thông tin về mỗi máy, chẳng hạn như hệ điều hành, phần mềmđược cài đặt trên máy đó Nhưng trên thực tế là chúng ta không biết trước sựphân bổ chẳng hạn các đề tài yêu cầu về môi trường hệ điều hành cũng nhưnhững phần mềm nào Hơn nữa những điều này đối với mỗi máy có thểthường xuyên thay đổi nên để lưu giữ và cập nhật những thông tin này vàotrong database là một điều hết sức khó khăn Tuy nhiên chúng ta hoàn toàn cóthể tổ chức các máy theo cách mà hiện nay chúng ta đã làm ở phòng máy số
Trang 72, đó là về hệ điều hành mỗi máy gồm có Windows và Solaris còn các phầnmềm ứng dụng đã được cài đặt sẵn trên Server, hoặc sinh viên có thể cài đặtthêm các phần mềm mình cần sử dụng.
Vì vậy đề tài của chúng ta sẽ thực hiện trên giả thiết rằng :các máy là nhưnhau về mọi mặt
Do các học kỳ ở các loại hình đào tạo lệch nhau về thời gian bắt đầuvà kết thúc Thường thì chu kỳ của các loại hình là một năm do đó ngay từđầu năm nếu Administrator không có thông tin về sinh viên sử dụng máy củanăm đó thì việc phân bổ giờ thực tập sẽ không thể chính xác được
Vấn đề sử dụng tài nguyên với hiệu suất cao nhất điều đó có nghĩa làtất cả các máy đều được sử dụng vào mọi thời điểm Điều này dẫn đến vấnđề khi có một nhóm sinh viên mới đăng ký sử dụng máy thì phải có một số camáy nhất định còn trống cho nhóm đó (Thu hồi lại một số máy, khi tất cả cácmáy đó điều đã có sinh viên sử dụng trước đó mà vẫn chưa hết thời gian thựctập của các sinh viên đó)
Một giải pháp để phòng máy đạt hiệu suất cao là vào các thời điểmphòng máy còn máy trống Administrator có thể cho phép các sinh viên đăngký sử dụng máy, tuy nhiên các máy này có thể bị thu hồi vào các thời điểmcần thiết
Để tạo sự linh động cho sinh viên đăng ký (lịch đăng ký ở các tuần cóthể khác nhau) Nếu sinh viên đăng ký lại ở các tuần sau (lúc cao diểm củaphòng máy) có thể sẽ không được chấp nhận (do hết máy)
Như vậy tùy vào tình hình thực tế sử dụng máy mà sinh viên nên chọncách đăng ký phù hợp (đăng ký đều ở các tuần hoặc đăng ký dồn vào một sốtuần nhất định) Việc này hoàn toàn tùy thuộc vào sinh viên chứ bản thânchương trình chỉ khuyến cáo cho sinh viên biết mà thôi
Việc tính số ca sử dụng máy để phân bổ cho sinh viên chỉ đảm bảonếu tất cả các sinh viên đăng ký đều đặn vào các tuần thì mọi sinh viên đềucó máy sử dụng
Trang 8 Khi Administrator thu hồi máy vì một lý do nào đó Bản thân chươngtrình có thể tự động sắp xếp lại các máy, sinh viên sẽ bị xoá các ca có máy bịthu hồi và sẽ được chuyển đến đăng ký các máy khác Lúc đó sinh viên sẽ
nhận được lịch mới hoặc login vào trang đăng ký để biết lịch mới.
Nếu thời gian bắt đầu ,kết thúc của mỗi ca có sự thay đổi thì rất khókhăn cho việc tìm kiếm các sinh viên sử dụng máy trong một khoảng thời giannào đó vì lúc này ta không thể biết các ca trước khi thay đổi có thời gian bắtđầu, kết thúc bằng bao nhiêu
Tập tin thể hiện mối liên quan giữa sinh viên làm đề tài được cung cấpbởi phòng Đào Tạo của trường, tuy nhiên hiện nay format của các tập tin dữliệu này vẫn chưa được cung cấp một cách đầy đủ
4.Các điều kiện cần thiết để xây dựng chương trình
Tất cả các máy là như nhau ,các sinh viên không cần phải đăng kýphần mềm để sử dụng cũng như vị trí của phòng máy
Có những đề tài phải sử dụng hai máy,sinh viên được phép sử dụng 2máy (sẽ sắp xếp cho sinh viên hai máy), sinh viên không cần phải đăng kýhai máy Tuy nhiên số ca sử dụng của sinh viên thì vẫn được tính như là sửdụng một máy
Mỗi tuần có 6 ngày sinh viên được thực tập ,mỗi ngày có 6 ca máy,khoảng thời gian sử dụng máy của mỗi ca là 2 giờ Ca đầu tiên bắt đầu từ 8h
Vào đầu năm học Administrator phải có một số thông tin nhất định
các hệ số đối với từng loại hình (LVTN, ĐAMH, TTTN… )
thời gian bắt đầu và kết thúc của từng loại hình (LVTN, ĐAMH, TTTN)và khóa thực hiện (chính khóa)
số lượng sinh viên của từng loại hình (LVTN, ĐAMH, TTTN) và khóathực hiện (chính khóa)
số lượng máy hiện có
Từ Database của phòng đào tạo Administrator có thể nhận được tậptin dữ liệu theo một format biết trước Điều này hoàn toàn có thể thực hiện
Trang 9được vì hiện nay các DBMS điều có kèm theo các công cụ cho phépInport/Export các file dữ liệu vào database và ngược lại từ các file dữ liêu tacó thể đưa vào các table (DBMS Oracle có kèm theo công cụ SQL *Loader ).
Trang 10CHƯƠNG II PHÂN TÍCH VÀ ĐƯA RA GIẢI PHÁP
HIỆN THỰC
1.Phân tích chiến lược sắp xếp.
Khi nhận lịch đăng ký của sinh viên chúng ta có thể:
Nhận lịch và tìm các máy trống thích hợp rồi sắp xếp ngay.
Trong quá trình tìm hiểu và phân tích chúng em nhận thấy với cách sắp xếpnày có những điểm không hợp lí như sau:
Thông thường các sinh viên đều muốn đăng ký sớm để được lịch đăngký hợp lí (không bị tách các ca đăng ký liên tiếp trên một máy) Do đó cóthể xảy ra tình trạng vào đầu mỗi đợt thực tập sẽ có rất nhiều sinh viênđăng ký (có thể đăng ký tại phòng máy của khoa) nên rất lộn xộn
Mặt khác với cách sắp xếp này nếu số lượng sinh viên đăng ký cùngmột thời điểm nhiều sẽ dẫn đến tình trạng Web Server sẽ quá tải do nhậnquá nhiều yêu cầu từ Browser và thực thi các yêu cầu này Có thể để giảiquyết việc đăng ký đồng thời chúng ta phải dùng một cơ chế lock cáctable của database lại ,như vậy việc đăng ký cho sinh viên sẽ bị chậm đirất nhiều
Khi chúng ta sắp xếp cho một lịch đăng ký của sinh viên thì chắc chắnrằng việc sắp xếp như vậy sẽ không thể tối ưu được Tuy chúng ta có thểthực hiện công việc giải phân mảnh máy trống ở mỗi thời điểm trước khisắp xếp, nhưng kèm theo với công việc này là việc chúng ta phải thôngbáo đến các sinh viên việc thay đổi máy của các sinh viên đó Nếu việcgiải phân mảnh này thường xuyên xảy ra thì việc thông báo đến sinh viênsẽ trở ngại (do sinh viên nhận được quá nhiều thông báo trong một ngàyvề việc thay đổi máy)
Trang 11Ưu điểm của cách sắp xếp này:
Tuy nhiên đứng về phía sinh viên thì cách sắp xếp này tỏ ra rất thuậntiện, vì sinh viên khi nhận được lịch đăng ký sẽ xác định được các cakhông đăng ký được ngay tức thời và sẽ đăng ký lại
Chờ đến một thời gian nhất định rồi hãy sắp xếp.
Với cách sắp xếp này sinh viên sẽ không biết được các ca mà mình khôngđăng ký được để từ đó đăng ký lại (chỉ biết được sau một thời gian nhất định)
Ưu điểm của cách sắp xếp này :
Chúng ta hoàn toàn có thể chủ động cho việc sắp xếp vào giờ Serverrảnh rỗi
Chương trình sắp xếp còn có thể để trên một máy nào đó khác vớiWeb Server
Tạo ra được lịch sắp xếp hợp lý (lịch thực tập của sinh viên ít bị tách ratrên nhiều máy và sau khi sắp xếp các ca còn trông ít bị phân mảnh)
Tạo tâm lý cho sinh viên đăng ký không tập trung vào một thời điểm
Việc đăng ký của sinh viên có hai thời điểm quan trọng mà chúng ta cần chú ý đến đó là:
Sinh viên đăng ký trong đợt đăng ký thực tập quy định
Sinh viên đăng ký sau thời điểm kết thúc đăng ký quyđịnh (có thể xem như sinh viên đăng ký lại)
Do cách sắp xếp tức thời không thích hợp với một số lượng sinh viên đăng kýnhiều
Như vậy ứng với hai thời điểm đăng ký của sinh viên ta có thể đưa ra hai cáchsắp xếp khác nhau để đạt được hiệu quả cao nhất và đồng thời tiện lợi cho sinhviên nhất
Nếu sinh viên đăng ký trong khoảng thời gian cho phép đăng ký (bắtđầu đăng ký đến kết thúc đăng ký) thì sẽ được sắp xếp lịch đăng ký vàocuối ngày kết thúc đăng ký Với cách sắp xếp này chương trình sẽ nhậnđược nhiều lịch sau đó mới sắp xếp Trong thời gian chương trình sắp xếp
Trang 12nếu sinh viên đăng ký sẽ không được xếp tức thời (cho dù sau thời điểmkết thúc đăng ký) mà chỉ nhận lịch đăng ký mà thôi, việc nhận lịch đăngký thì không ảnh hưởng đến các giao dịch đồng thời Sau này sinh viên
dùng chức năng search hoặc login để xem kết quả đăng ký của mình.
Nếu sinh viên đăng ký sau thời điểm kết thúc đăng ký có thể xem nhưđã đăng ký lại Sinh viên sẽ nhận được lịch đăng ký ngay sau đó Như vậy
ở trường hợp này chúng ta phải giải quyết vấn đề về giao dịch đồng thời
2.Phân tích giải thuật sắp xếp.
Dữ liệu chúng ta nhận được đó là các liên ca mà sinh viên đăng ký và các
liên ca trốâng trên các máy (liên ca : để chỉ các ca liên tiếp).
Như vậy công việc sắp xếp có thể trở thành việc tập hợp các liên ca của cácsinh viên đăng ký để đưa vào các liên ca có máy trống
Nếu việc tập hợp này không thành công (vẫn còn dư ở một số ca ) thìphải chọn được trường hợp nào là tốt nhất
Nếu một số liên ca không đăng ký được thì ta phải tách các liên ca đó
ra thành nhiều liên ca, việc tách phải đảm bảo được hai yếu tố:
Sinh viên ít phải chuyển qua các máy khác ở các ca liên tiếp
Sau khi tách thì các ca trống còn lại là ít phân mảnh
Để tập hợp được các liên ca đăng ký của các sinh viên đưa vào các liên cacủa các máy trống chúng ta có thể thực hiện theo hai hướng sau đây:
Chọn một liên ca của một sinh viên và tìm một liên catrống trong các máy trống thích hợp nhất (kết hợp với các liên ca củacác sinh viên khác)
Chọn một liên ca có máy trống, tìm các liên ca thích hợpcủa các sinh viên đăng ký vào liên ca có máy trống đó
Mỗi hướng thực hiện đều có những khía cạnh hay của nó Từng trườnghợp cụ thể khác biệt sẽ mang đến những kết quả tích cực khác nhau
Trang 13Để hiện thực việc sắp xếp chúng em xin chọn hướng thứ nhất Vớihướng này chúng ta cần lưu ý một số điểâm sau:
Các ca sinh viên đăng ký thì được INSERT vào table nhận đăng kýtheo thứ tự thời gian do đó khi SELECT ta cũng nhận được lịch đăngký của sinh viên theo thứ tự thời gian Việc xét từng liên ca cũng sẽtheo thứ tự đó
Khi xét liên ca trống có thể đăng ký được cho liên ca của sinh viênđó, ta sẽ xét liên ca trống từ nhỏ đến lớn
Ví dụ: nếu sinh viên đăng ký 12 ta sẽ xét liên ca trống 12 rồi mới đến
123,
Nếu xét đến một liên ca trống nào đó mà vừa đủ cho các liên cađăng ký thì chọn ngay vì nếu xét tiếp thì kết quả thu được (có thể saukhi đăng ký số ca trống ) cũng không thay đổi
Ví dụ: các liên ca đăng ký 12, 34, 56 Các liên ca có máy trống 1234,
123456 Khi đó nếu xét liên ca 12 sẽ chọn liên ca trống 1234 (vì 12 và 34vừa đủ cho 1234) mà không cần xét tiếp Sau đó xét tiếp 56 nếu không cósự kết hợp nào vừa đủ thì đăng ký 123456 Như vậy cuối cùng liên ca còn
dư vẫn là 1234
Nếu các liên ca trống sau khi đăng ký cho sinh viên vẫn còn dư ,thì ta nên chọn liên ca nào : liên ca có số ca dư nhiều, liên ca có số ca
dư ít
ca trống còn lại sẽ ít bị phân mảnh hơn cả
Ví dụ:liên ca đăng ký 12, 123 liên ca trống 123, 1234 Xét liên ca
12 sẽ chọn liên ca trống 1234, sau đó xét tiếp 123 sẽ chọn liên catrống 123 Như vậy sau khi đăng ký liên ca trống còn lại là 34
Ngược lại với cách chọn liên ca trống có số ca dư ít nhất thì liên catrống sau đăng ký sẽ là 3, 4
Trang 14Tuy nhiên với cách chọn này thì một số trường hợp liên ca đăng kýcủa sinh viên sẽ bị tách ra làm nhiều liên ca
Ví dụ:liên ca đăng ký 123, 12345 Liên ca có máy trống 1234,
123456 Khi xét liên ca 123 sẽ đăng ký vào 123456 còn dư 456, sau đóxét tiếp 12345 không đăng ký được phải tách ra 1234 và 5 Như vậysau khi đăng ký các ca trống sẽ là 4 và 6
Ngược lại với cách chọn liên ca trống có số ca dư ít nhất thì liên catrống sau đăng ký sẽ là 4 và 6 Tuy nhiên liên ca sinh viên đăng ký sẽkhông bị tách ra
ca đăng ký của sinh viên sẽ ít bị tách ra hơn cách chọn trên
Nhưng ngược lại thì liên ca trống sau khi sẵp xếp sẽ bị phânmảnh nhiều hơn Tuy nhiên việc giải phân mảnh ta có thể thựchiện một cách dễ dàng
Nếu một liên ca đang xét mà không có liên ca trống nào có thể đăngký cho liên ca đó ta thực hiện việc kiểm tra xem các ca nào không thểđăng ký được (hết máy ở ca đó), tách liên ca ban đầu thành nhiều liên catrong đó có các ca không đăng ký được
Nếu một liên ca đăng ký được xét mà không có liên ca trống nào cóthể đăng ký cho liên ca đó và các ca đều có thể đăng ký được
Ta thực hiên việc tách liên ca này thành nhiều liên ca :
thành hai liên ca Ứng với mỗi cách tách ta sẽ tính số ca dư tốt nhấtcủa các liên ca trống sau khi đăng ký cho hai liên ca này
Nếu ta gặp một trường hợp nào làm cho số ca dư sau khi đăng ký củacác liên ca trống = 0 (đăng ký vừa đủ) thì ta sẽ dừng công việc tách.Nếu số ca dư tốt nhất vẫn khác không (liên ca trống đăng ký vẫn còndư) Sẽ tiếp tục tách thành 3 liên ca
Trang 153.Phân tích việc phân bổ số ca sử dụng cho sinh viên
Vấn đề này được đặt ra nhằm đảm bảo tính công bằng cho mọi sinh viên và đápứng nhu cầu sử dụng máy đối với từng sinh viên khác nhau (làm luận văn tốt nghiệp,đồ án môn học, thực tập tốt nghiệp ) Việc đăng ký sử dụng máy của sinh viêndựa vào quan điểm :
Sinh viên sẽ được cấp một số ca nhất định cho cả đợt thực tập, sinh viênđược phép tuỳ ý đăng ký trong số ca đó và trong thời gian cho phép thực tập
Do đó có thể dẫn đến khả năng sinh viên không có máy để sử dụng vào mộtsố tuần đăng ký dồn, việc này rất khó giải quyết một cách triệt để vì đây làsự sắp xếp riêng của từng sinh viên Chương trình của chúng ta tính toán số
ca sử dụng cho cả đợt thực tập dựa vào nhu cầu sử dụng máy đều đặn vào cáctuần Như vậy khi tính số ca sử dụng ta không quan tâm đến việc đăng ký dồnvào một số tuần của sinh viên
Như chúng ta cũng biết, hiện tại khoa có nhiều loại hình đào tạo (chính quy,kỹ sư II, cao đẳng, giáo viên) và mỗi loại hình đào tạo thì thời gian sử dụngmáy cũng khác nhau Tuy nhiên việc phân bổ máy cho sinh viên lại tuỳ thuộcvào lịch của các đợt thực tập của một năm học
Giả sử chúng ta có được một lịch phân bố thực tập như sau:
100sv 100sv
Trang 16Giả sử chúng ta có N máy, 1 tuần có 36 ca sử dụng Tổng số ca có được trong
Số ca được cấp cho mỗi sinh viên làm LVTN là : a.M.i
Số ca được cấp cho mỗi sinh viên làm TTTN là : b.M.j
Số ca được cấp cho mỗi sinh viên làm DAMH là : c.M.k
Với i, j, k là số tuần qui định sử dụng máy cho từng loại hình đó
Tuy nhiên với cách tính như trên chúng ta có thể nhận thấy hạn chế nhưsau:
Vào một số tuần tuy chỉ có một nhóm sử dụng máy nhưng việc phân bổ giờmáy cho các sinh viên thuộc nhóm này vẫn được tính theo nhu cầu ở tuần caođiểm nhất Việc này dẫn đến tình trạng sinh viên được phân bổ ít số giờ hơn
so với tài nguyên mà chúng ta có được
Để giải quyết vấn đề trên chúng em xin đưa ra giải pháp sau:
Tính số ca sử dụng cho từng giai đoạn (từ tuần n đến tuần m) Trong từng
giai đoạn sinh viên chỉ được đăng ký và sử dụng tối đa số ca được cấp tronggiai đoạn đó Do đó chúng ta phải lưu vào database số ca sinh viên sử dụngcho từng giai đoạn, trong giới hạn của đề tài chúng em chưa hiện thực đượcvấn đề này
Theo chúng em nghĩ việc quản lí thực tập máy củasinh viên không thể giải quyết hoàn toàn bằng máy mà phải có sự hỗ trợcủa con người, đó có thể là Administrator Tuỳ theo tình hình cụ thể màAdministrator có thể tăng số ca được cấp cho sinh viên để đảm bảo tínhhiệu quả và đúng với nhu cầu sử dụng thực tế đối với từng sinh viên (có
Trang 17một số sinh viên không sử dụng máy hoặc sử dụng rất ít không cần phảităng thêm).
Như vậy đòi hỏi phải có một công cụ cho phép Administrator thayđổi số ca được cấp cho sinh viên
4.Sinh viên thay đổi lịch đăng ký và nhận được kết quả tức thời.
Khi sinh viên muốn thay đổi lịch đăng ký khác với lịch đăng ký ở lần đầu củamỗi đợt làm đề tài, thì sẽ nhận được kết quả sau đó
Như vậy nếu có nhiều sinh viên thay đổi lịch cùng một lúc có thể cac sinhviên này đều được nhận được cùng một máy trống Tuy nhiên khi đăng ký thì chỉcó một máy trông được đăng ký mà thôi, ở đây vấn đề giao dịch đồng thời phảiđược giải quyết
Khi sinh viên gởi lịch đăng ký đến chương trình, chương trình sẽ so sánh vàlấy ra được các ca sinh viên mới đăng ký của sinh viên,các ca cũ không có tronglịch này sẽ bị xoá đi Lần lượt xét đến các ca mới đăng ký của sinh viên chọn rađược liên ca (máy tương ứng) tốt nhất để đăng ký cho sinh viên Lúc đăng ký
(thao tác INSERT vào TABLE dangky ) nếu nhận được mã lỗi trả về ( ràng buộc
tính duy nhất –tức là đã có một sinh viên đăng ký trước đó ) thì thực hiện việcchọn máy tiếp theo và tiếp tục đăng ký cho đến lúc được mới thôi (nếu đã xét hếtmáy mà không đăng ký được thì kết quả là không đăng ký được) Nếu INSERTkhông được do hết máy thì kết quả trả về cho sinh viên là không đăng ký đượccác ca đó
5.Giải phân mảnh các máy trống
Theo giải thuật sắp xếp đã trình bày ở phần trên ,có một số trường hợp gây rasự phân mảnh ở các máy sau khi đăng ký Do đó việc giải phân mảnh các ca ởcác máy trống luôn cần thiết
Giả sử ta có các ca đã sắp xếp như sau:
Trang 18Ta có bảng đăng ký sau khi giải phân mảnh như sau
Trang 19PC001 PC002 PC003
Hình chữ nhật biểu diễn liên ca từ ca 1 -> ca 6,số trong hình chữ nhật thể hiện
ca còn trống, các chữ ở trong hình chữ thể hiện các sinh viên đăng kýù.Theo lưuđồ như hình vẽ sau khi giải phân mảnh máy PC003 sẽ trống các ca 3,4,5 là liêntiếp
Từ ví dụ trên ta nhận thấy nếu các máy trống ở các liên ca kế tiếp nhau thìviệc giả phân mảnh chúng sẽ thực hiện được
Tuy nhiên cũng nảy sinh vấn đề đó là khi giải phân mảnh thì lịch đăng ký sửdụng máy của các sinh viên có sự thay đổi như vậy phải thông báo về cho cácsinh viên đó Ta phải lưu vào database địa chỉ email của từng sinh viên
6.Administrator thu hồi và chỉ định xếp máy cho sinh viên.
Administrator sẽ làm công việc thu hồi máy.Hoặc Administrator có thể thuhồi các ca máy theo đề tài (lúc cho phép sinh viên đăng ký sử dụng để tối ưu hiệusuất phòng máy)
Tuy nhiên do việc thu hồi máy đơn thuần chỉ là việc delete các ca đăng kýcủa các sinh viên trên bảng đăng ký , nên tức thời sau khi thu hồi máy một sinhviên nào đó vẫn có thể đăng ký lại và vẫn được cấp vào máy đó.Do đó nếuAdministrator muốn thu hồi máy để cấp cho một nhóm sinh viên nào đó thì saukhi thu hồi máy Administrator lập tức xếp cho các sinh viên đó
Đối với một số trường hợp , chúng ta không nên dùng chương trình tự độngsắp xếp , mà Administrator sẽ tự sắp xếp cho sinh viên vào một số máy nhất địnhnào đó Trường hợp này Administrator sẽ cập nhật vào bảng đăng ký máy
Chúng ta sẽ sử dụng chức năng này khi :
Vào một số thời điểm phòng máy còn trốngAdministrator cho phép các sinh viên đăng ký sử dụng Sau này khi có
Trang 20một đợt thực tập mới đăng ký thực tập Administrator sẽ thu hồi các máyđó lại để cho các sinh viên đợt mới sử dụng
Có một nhóm sinh viên có nhu cầu sử dụng một sốcác máy nhất định (để sinh viên thi thực hành .).Thông thường chỉ sửdụng một số ít ca mà thôi , Administrator sẽ sắp xếp nhóm sinh viên vàocác máy đó
7.Giải thuật sắp xếp
Để các máy còn trống sau khi đăng ký ít bị phân mảnh Đối với các trườnghợp đăng ký lần đầu cho một đợt thực tập ta nhận các lịch đăng ký của sinh viênrồi sắp 1 lần
Như vậy với giả thiết đó ta sẽ có các lịch đăng ký của các sinh viên và cácmáy trống
Để đảm bảo sắp xếp các ca liên tiếp (gọi là liên ca) cho sinh viên trên cùng
một máy,ta sẽ thực hiện việc ánh xạ các liên ca đăng ký của sinh viên vào cácliên ca trống
Nếu liên ca mà Sinh viên A đăng ký và liên ca các Sinh viên khác làkết hợp đầy đủ đối với máy X, X là máy đầu tiên thỏa có liên ca trốngnhỏ nhất thỏa
Nếu liên ca mà Sinh viên A đăng ký và liên ca các Sinh viên khác còn
dư thì đối với máy X là nhỏ nhất
Nếu không có máy nào có thể đăng ký cho liên ca này ta phải táchliên ca này ra nhiều liên ca.Việc tách này phải đảm bảo 2 yêu cầu:
Liên ca của Sinh Viên A không đăng ký được nếu có ca không thể đăngký được thì loại bỏ ca đó ra và tiếp tục xét liên ca kế tiếp sau khi tách ca
Trang 21đó Ví dụ liên ca 12345 có ca 3 không còn máy , như vậy xét hai liên ca 12 và45.
Liên ca của sinh viên A không đăng ký được nhưng tất cả các ca đều cóthể đăng ký được ta lần lượt tách liên ca này thành hai liên ca:
Trong quá trình tách ta chọn cách tách thành hai hoặc ba liên ca:
Nếu việc tách liên ca thành hai liên ca mà vẫn không tìm đượccách tách nào kết hợp với các liên ca của sinh viên khác là tổ hợpđầy đủ đối với các liên ca trống của các máy ,thì mới tách thành baliên ca và cũng tiếp tục chọn cách tách nào tối ưu nhất
Nếu việc tách thành hai và ba liên ca không thành công, takhông nên tách tiếp nữa mà sẽ xét liên ca kế tiếp của sinh viên
Ta nhận thấy rằng để các máy sau khi sắp xếp ít bị phân mảnh
ta cần có hàm chọn ca dư tốt.Hàm chọn ca dư dùng để chọn giữa
ca dư trước (trong các lần xét trước) so với ca dư ở lần xét hiệntại Hàm này thể hiện một cách chọn như sau:
Nếu ca dư sau khi kết hợp với các máy = 0 (tức là kết hợpvừa đủ) thì chọn liên ca trống này
Nếu ca dư sau khi kết hợp với các máy khác 0 thì chọn liên
ca trống nào có số ca dư liên tiếp ít nhất
Nếu ca dư là không liên tiếp sẽ được chọn cuối cùng
Sau đây là một ví dụ minh hoạ cho việc tìm liên ca trống thích hợp
Trang 22123456 12345 123
3456
dư 3
dư 0 tốt hơn dư 3, chọn liên ca 123456 1234
dư 0,chọn liên ca 1234
liên ca sinh viên
đăng ký Liên ca các máy trống
7.a.Viết một số hàm chính bằng mã giả
Dưới đây chỉ là đoạn chương trình bằng mã giả mô tả ý tưởng của giảithuật,tuy nhiên để hiện thực chương trình cần thực hiện nhiều chương trìnhcon ,và nhiều cấu trúc dữ liệu phức tạp để hổ trợ cho công việc sắp xếp
Danh sách các sinh viên đăng ký được sắp theo thứ tự đăng ký củasinh viên(theo dạng các ca liên tiếp gọi là liên ca )
Ở mỗi liên ca chứa danh sách các sinh viên đăng ký liên ca này
Danh sách các máy ,ứng với mỗi máy có những liên ca trống tươngứng
Trang 23 Ứng với mỗi liên ca có các máy trống nào.
Xét một sinh viên (theo thứ tự)
xét một liên ca của sinh viên này
Xét các máy mà liên ca này có thể đăng ký(dựa vào bảngxét từ phải sang),tính cadư ở mỗi máy sau khi đăng ký liên ca
này (kết hợp với các sinh viên khác),máy được chọn do(hoặc dùng FUNCTION choncadu(cadutruoc,cadu) để chọn máy nào đăng ký cho sinh viên):
máy có cadư=0,xếp cho các sinh viên ,xét liên ca kế tiếpmà không cần tính cadư của các máy khác
/*nếu có nhiều máy có cùng cadư chọn máy trước đó có hai liên
ca trống trở lên*/
sau mỗi lần xếp máy cập nhật lại danh sách máy trống vàdanh sách sinh viên đăng ký
xét liên ca kế tiếp của sinh viên này
nếu không có máy nào đăng ký được cho liên ca này=>táchliên ca thành nhiều liên ca khác:
tách liên ca thành 2 liên ca tính tổng số ca dư ở mỗi lầntách,chọn lần tách nào tối ưu nhất
nếu việc tách không thành công=>tách thành 3 liên ca,…,cứtiếp tục cho đến lúc nào đó tách thành n liên ca lẻ mà khôngthành công=>báo cho user biết không còn ca trống(không tách
ra mà gởi trả cả liên ca ban đầu)
xét sinh viên kế tiếp.
Giả sử ta có một liên ca S ta cần xếp các sinh viên vào liên ca này sao chohợp lí nhất (theo hàm chọn,sẽ viết sau).Xét mọi sinh viên có thể đăng ký vào liên
ca này ,chọn ra các sinh viên đăng ký hợp lí nhất
Trang 25if choncadu(cadutruoc,cadu) then svdklienca=insert(dssvbdau,dstam);
UNTIL (chonsv là phần tử thuộc hàng cuối hoac cadu.socadu=0)
END;
So sánh giữa cadưtrước và cadư bên nào tốt hơn nếu cadư là tốt hơn trả vềTRUE ngược lại FALSE
Trang 26CHƯƠNG III PHÂN TÍCH VÀ ĐƯA RA MỘT SỐ TÍNH NĂNG CẦN THIẾT CỦA CHƯƠNG
TRÌNH
1.Ứng dụng dành cho Sinh viên
Phải kiểm tra được MSSV,Password (dùng account trên hệ thống NIS+)
Hệ thống NIS+ hoạt động trên hệ điều hành Solaris cung cấp hàm đểlấy thông tin về account của sinh viên , do cần kiểm tra Password nên tachỉ cần lấy Password của sinh viên ,Password này đã được mã hoá theogiải thuật HASH đặc điểm của cách mã hoá này là: mã hoá “một chiều”tức là không thể giải mã ngược trở lại để được Password ban đầu
Hệ thống NIS+ lưu giữ thông tin về account của các user ,trong đópassword được lưu ở dạng đã crypt (mọi password đều được crypt khi đặtpassword)
Sử dụng hàm Crypt để mã hoá Password do sinh viên nhập vào và sosánh với Password lấy từ hệ thống , ta sẽ được kết quả
Checklogin
username,
encrypt password yes/no
Trang 27Sử dụng hàm Getpwnam() để lấy các thông tin về username , trong đó thông tin cần thiết cho việc kiểm tra login đó là password đã crypt.
Trên thực tế chương trình của chúng ta sẽ gởi username/password đến
một server thuộc hệ thống NIS+ ,server này sẽ kiểm tra
username/password có đúng hay không.Sau đó thông báo kết quả về cho
client (Chương trình theo mô hình CGI)
Sinh viên cần có hệ thống trợ giúp để biết cách đăng ký
Hệ thống giúp đỡ sinh viên đăng ký gồm các thông tin hướng dẫn cáchđăng ký
Sinh viên cần biết thông tin về tình hình sử dụng hiện tại của các máynhằm có sự đăng ký hợp lý
Các thông tin này gồm :số lượng máy trống ở mỗi ca,lịch sử dụng của từngmáy
Cần có chức năng xem lịch đăng ký của một sinh viên khác
Thực tế cho thấy có nhiều sinh viên muốn biết lịch làm việc của bạn mìnhtại trường để cần liên hệ như vậy phải cho phép xem được lịch của sinh viênđó
Nếu sinh viên chọn mục hướng dẫn sẽ được giới thiệu về cách thức đăngký
Dùng chức năng Xem Lịch để xem lịch đăng ký của sinh viên khác.
Dùng chức năng Xem Máy Trống để xem số lượng máy trống ở mỗi ca
hoặc các ca trống của một máy
Nhập MSSV,Password để login vào và đăng ký
Nếu login thành công sinh viên sẽ nhận được lịch đăng ký của mình trướcđó các ca có đăng ký thì được check(nếu đăng ký lần đầu thì không có ca nàocheck ).Sau khi check các ca mình cần đăng ký sinh viên click vào nút
Đăngký để gởi lịch đăng ký của mình cho chương trình.
Nếu sinh viên đăng ký lần đầu thì sẽ được báo ngày có kết quả đăng ký
và sinh viên dùng chức năng Xem Lịch để xem kết quả đăng ký của mình.
Trang 28Nếu sinh viên đăng ký lại sẽ nhận được kết quả tức thời.
2.Ứng dụng dành cho Administrator
Reset Database:
Cập nhật các tên,hệ số của từng loại hình (LVTN,TTTN,ĐAMH)
Cập nhật các tên đề tài ,số máy cần cho mỗi đề tài
Cập nhật thời gian đăng ký và thời gian sử dụng cho mỗi Khóa làmĐề tài
Cập nhật mã số máy , tên máy,vị trí ,các mô tả về máy (chỉ đểtham khảo)
Import các files data của phòng đào tạo vào database
Nếu có giả thuyết rằng phòng đào tạo sẽ cung cấp file data mô tảviệc đăng ký làm đề tài của từng sinh viên (nếu không có file nàyAdministrator sẽ nhập dữ liệu cho từng sinh viên)
Khi phòng máy có nhu cầu mở rộng ,Administrator được phép thêm cácmáy này vào danh sách các máy sử dụng
Khi một số máy bị hỏng, Administrator có thể đưa các máy này vào danhsách các máy hỏng hoặc sử dụng với mục đích khác.Lúc đó toàn bộ các cađăng ký trên các máy đó sẽ bị hủy và các ca của các sinh viên sẽ được đăng
ký lại trên các máy khác ,sinh viên sẽ phải dùng chức năng search để xem lại
lịch đăng ký của mình hoặc đăng ký lại
Khi cần sử dụng một số máy vào một số ca nhất định Administrator sẽ thuhồi các máy ở các ca đó.Administrator sẽ chỉ định các máy đó cho các sinhviên cần thiết
Nếu có sinh viên nào đó vi phạm nội quy của phòng máy Administrator cóthể cấm user sử dụng máy trong 1 khoảng thời gian ,trong khoảng thời giannày sinh viên không thể đăng ký lại máy.Sau khi hết bị cấm sinh viên mớiđược đăng ký lại
Trang 29 Trong quá trình giám sát sử dụng máy của sinh viên, khi có sự số về mấtmát thiết bị hoặc có sự quấy phá Server Administrator cần xem các user nàođã thực tập trên máy A trong 1 khoảng thời gian
Đến hết hạn thực tập máy của các sinh viên,các daemon tự động thu hồimáy,Administrator có thể cho phép tiếp tục
Cho phép một số sinh viên sử dụng máy nếu cần thiết (có thể lúc nàyphòng máy còn trống)
Change password của Administrator
Password của Administrator được lưu trong file text trên máy ,kiểm trangay tại máy đó
Nếu login thành công
Trang Administrator tool
Mô tả về hệ thống giúp Administrator hiểu rõ hơn về hệ thống và quảntrị dễ dàng hơn
3.Một số Daemon để sắp xếp ,thu hồi hoặc thực hiện các công việc định kỳ.
Hệ thống có chức năng giám sát:
Thời gian sử dụng máy của sinh viên đến hết thời gian sử dụng củađợt làm đề tài đó
Số ca mà sinh viên đã sử dụng có vượt quá số ca tiêu chuẩn củasinh viên hay không
Cần có các daemon chạy độc lập với chương trình đăng ký,daemonnày thực hiện công việc kiểm tra vào lúc bắt đầu một ca ,hoặc bắt đầumột ngày
Vào cuối mỗi tuần sẽ cập nhật số ca mà sinh viên sẽ được sử dụngtrong tuần tới
Đối với mỗi đợt làm đề tài sẽ việc sắp xếp máy cho sinh viên sẽ đượcthực hiện một cách tự động.Vì mỗi đợt làm đề tài sẽ có thời hạn kết thúc đăng
Trang 30ký ,vào cuối ngày này sẽ là thời điểm xếp máy cho sinh viên của khoá đề tàiđó.
Một sinh viên khi bị cấm sử dụng máy (do vi phạm nội quy )
Administrator sẽ đưa vào thời hạn kết thúc cấm(INSERT vào Table cam_sd)
Đến thời hạn này sinh viên sẽ được phép đăng ký lại.Daemon sẽ DELETE trong table này các sinh viên hết hạn cấm
Trang 31PHẦN B THIẾT KẾ
MÔ HÌNH CỦA CHƯƠNG TRÌNH ĐĂNG KÝ
VÀ SẮP XẾP MÁY CHO SINH VIÊN
User
Browser
Webserver
CG I
DatabaseInternet working
Protocol Stack Protocol StackOracle Protocol Adapter Oracle Protocol Adapter
Oracle 8 DBMS
Physical Network
Trang 32Thông qua Net 8 của Oracle ta sử dụng công cụ OCI ( Oracle Call Interface )
rất mạnh ,hiện đang được sử dụng khá phổ biến để truy xuất vào database cần sửdụng
Để sử dụng Net 8 , máy chứa CGI phải có Net 8 Client ,máy có chứa database có Net 8 Server (Oracle 8.0.4 luôn cung cấp 2 chương trình này cho
chúng ta sử dụng khi cài đặt Oracle Server).Net 8 Server có thể hoạt động trênmôi trường WIN NT hoặc UNIX đều được.Măc dù Net 8 Client cũng có ở WIN
NT và UNIX và đồng thời cách lập trình OCI (Oracle Call Interface) , một côngcụ lập trình cho phép nhúng các lệnh SQL (sẽ trình bày sau) hoàn toàn giốngnhau trên cả hai môi trường (WIN NT và UNIX) ,theo yêu cầu của đề tài chúng
em sẽ phát triển hệ thông trên môi trường WIN NT
Tuy nhiên chúng em cũng sẽ cố gắng thực hiện chương trình một cách độc lậpnhằm hạn chế thay đổi khi phải chuyển đổi giữa hai môi trường.Để thực hiệnđược công việc này chúng em đã hạn chế không sử dụng các thư viện củaMicrosoft mà chỉ lập trình theo ANSI C
Trang 33CHƯƠNG I THIẾT KẾ DATABASE CHO
Database được thiết kế không dư thừa dữ liệu,truy xuất nhanh
Trong quá trình phân tích chúng em đưa ra các thực thể của hệ thống như sau:
Thực thể sinh viên :do mỗi sinh viên có những thông tin riêng ví dụ
mssv,đề tài mà sinh viên đó làm ,địa chỉ email của sinh viên đó ,số ca sinhviên đã sử dụng đến thời điểm hiện tại
Thực thể Đềtài :do mỗi đề tài cần có thông tin mô tả đề tài
đó ,số máy cần cho đề tài đó v.v
Thực thể LoạiHình :Mô tả các hệ số ,để từ đó tính ra số ca cho mỗi
loại hình
Thực thể Ca :Mô tả thời gian bắt đầu và kết thúc ca thực tập.
Thực thể Máy :Mô tả thông tin về máy ,tình trạng của máy đó.
Thực thể Khoá :Chính khoá thực hiện đề tài vì theo hệ tín chỉcác sinh viên thuộc khóa khác nhau có thể đăng ký đề tài của các khóakhác
2.Phân tích và đưa ra các mối quan hệ giữa các thực thể.
Hiện nay theo quy chế tín chỉ mỗi sinh viên có thể làm nhiều đề tài trongcùng một học kỳ Tuy nhiên khi đăng ký sử dụng máy sinh viên chỉ được đăng kýdựa theo tiêu chuẩn của đề tài nào có số ca cho phép sử dụng lớn nhất
Trang 34Việc thể hiện một ca đăng ký của sinh viên trong một tuần được thể hiện bằng ca và thứ trong tuần Một ngày có 6 ca và một tuần có 6 ngày thực tập như vậy trong một tuần có 36 ca.Ta đánh số ca từ 1 đến 36 để thể hiện việc đăng ký của sinh viên trong 1 tuần.
Do đó mỗi sinh viên chỉ thực hiện một đề tài để đăng ký sử dụng máy
Mỗi đề tài thuộc một loại hình :luận văn tốt nghiệp ,thực tập tốt nghiệp , đồán môn học …
Mỗi đề tài được thực hiện bởi chính khóa sinh viên làm đề tài đó
Với mỗi loại hình và khóa đề tài thì có một ngày bắt đầu , kết thúc đăngký,bắt đầu , kết thúc thực tập
Tuy nhiên để thể hiện khóa làm đề tài ta chỉ cần duy nhất một thông tin vềkhóa ví dụ MT95,MT96,MT97,CD97…Do đó ta có thể đưa khoá này vào thànhmột thuộc tính của thực thể khác
Vào một thời điểm , trên một máy chỉ có một sinh viên sử dụng máy đó
2.a.Sơ đồ ERD
2.b.Chú thích các thuộc tính
Trang 35MSSV Lưu mã số sinh viên của sinh viên,là thuôc tính
khóa của table SinhvienHoTen Chứa họ tên của sinh viên đó
Socasd Số ca sinh viên đã sử dụng cho đến thời điểm
cuối tuần hiện tại (được cập nhật vào cuối tuầntự động hoặc khi sinh viên thay đổi lịch đăngký)
Email Địa chỉ Email của sinh viên
May(MSMay,Pmay,TinhTrang,Mota)
Thuộc tính Mô tả
MSMay Mã số của của một máy tính trong tòan bộ các
phòng máy Pmay Tên phòng đặt máy đó
TinhTrang Tình trạng sử dụng của máy đó (tốt, hỏng)Mota Mô tả thông tin tối thiểu của máy (cấu hình)
Ca(MSCa,BdCa,KtCa)
Thuộc tính Mô tả
MSCa Lưu mã số của một ca đăng ký
BdCa Thời gian bắt đầu của ca đó
KtCa Thời gian bắt đầu của ca đó
DeTai(MSDtai,Tdtai,Lhinh,KhoaDtai,SoMay)
Thuộc tính Mô tả
MSDtai Mã số đề tài mà sinh viên đó đang thực hiện.KhoaDtai Khóa làm đề tài đo.ù
Somay Số máy cần thiết để làm đề tài đó
Tdtai Tên tương ứng với đề tài đó
Lhinh Đề tài đó thuộc lọai nào
LoaiHinh(LHinh,Hso,ScaTda)
Trang 36Thuộc tính Mô tả
Lhinh Đề tài đó thuộc lọai nào
Hso Hệ số của một loại hình đề tài để cung cấp số
ca tương ứng cho đề tài đó
ScaTda Số ca tối đa mà sinh viên làm lọai hình đề tài
này được cung cấp
LHinh_Kdtai(LHinh,KhoaDtai,NgBdau,NgKthuc,BdDky,KtDky,Sosv)
Thuộc tính Mô tả
LHinh Đề tài đó thuộc lọai nào
KhoaDtai Khóa làm đề tài đó
NgBdau Ngày bắt đầu lịch đăng ký có hiệu lực
NgKthuc Ngày lịch đăng ký hết hiệu lực
BdDky Ngày sinh viên bắt đầu đăng ký
KtDky Ngày sinh viên kết thúc đăng ký
Sosv Số sinh viên thực tập trong đợt đó (dự kiến)
2.c.Từ mô hình thực thể ERD thiết kế các Table
Trang 37Thực thể sinh viên khóa chính là MSSV là mã số dùng để phân biệt các
sinh viên ,mỗi sinh viên chỉ có một mã số duy nhất tối đa gồm 8 ký tự Đâychính là mã số của sinh viên do trường thiết kế và hiện đang sử dụng
Table Sinhvien:
Trang 38Table Dangky:
Thực thể Máy khóa chính là MSMay dùng phương pháp đánh mã theo cách
đánh mã phân đoạn (theo phòng máy) như cách đánh mã hiện nay chúng ta đangsử dụng trong các phòng máy Có thể đưa ra một ví dụ cho việc đánh mã củakhóa chính này như sau:
PC101,PC102,PC103, ,PC201,PC202,PC203
Tuy cách đánh mã trên đây chưa thật tối ưu nhưng với một số lượng máy không lớn thì việc lãng phí cũng không đáng kể ,nhưng ngược lại với cách đánh mã này rất tiện lợi cho sinh viên và Administrator trong sử dụng
Table May:
Thực thể Ca khóa chính là MSCa thể hiện ca trong 1 tuần , như vậy ta có 36
ca trong 1 tuần ta đánh mã từ 1 đến 36.
Table Ca:
Trang 39Thực thể Detai khóa chính là MSDtai mã này được lấy từ phòng đào tạo đưa
sang và không phải thiết kế lại
Table Detai:
Thực thể LoaiHinh khóa chính là LHinh ta có thể đánh mã dựa vào tên của
Loại đề tài , ví dụ : Luận Văn Tốt Nghiệp (mã : LVTN) , Thực Tập Tốt Nghiệp(TTTN) , Đồ Aùn Môn Học (mã : DAMH)…
Table LoaiHinh:
Để đảm bảo việc tính toán số ca cấp cho sinh viên một cách chính xác chúng
ta đưa vào thuộc tính Sosv nhằm xác định được thời điểm sinh viên sử dụng nhiềunhất (chỉ cách tương đối mà thôi )
Trang 40Do đó cần phải lưu lại history đăng ký của sinh viên.Vào mỗi thời điểm mỗisinh viên chỉ có một lịch đăng ký mà thôi và mỗi lịch đăng ký của một sinh viêncó một thời điểm bắt đầu thực tập (theo lịch đó).
Table nhan_dangky
Table His_dangky