Đề án Quản lý điểm thi sinh viên tại Khoa Tin học kinh tế

Đây là form đưa ra báo cáo về bảng điểm thi học phần môn học cho một môn bất kỳ của một lớp bất kỳ. Cho phép việc xem báo cáo và in ra khi có yêu cầu - Form này chỉ cho phép người có tài khoản đăng nhập vào hệ thống mới có thể đăng nhập được. - Để đưa ra báo cáo yêu cầu người sử dụng phải khai báo đầy đủ các thông tin: Lớp: Chọn lớp bất kỳ từ ComboBox. Khoá học: Chọn khoá học bất kỳ. Môn học: Chọn môn học bất kỳ. Học kỳ: Chọn học kỳ đã có trong ComboBox đó. Khi đã khai báo song đầy đủ các thông tin thì mới có thể lên báo cáo. Ấn vào các nút lệnh trên Form giao diện để thực thi theo yêu cầu người sử dụng.

doc87 trang | Chia sẻ: oanh_nt | Lượt xem: 1453 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đề án Quản lý điểm thi sinh viên tại Khoa Tin học kinh tế, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
phần, DS thi lại, Phiếu điểm sinh viên HSSV HSSV đã duyệt Bài thi Phiếu điểm Yêu cầu thống kê Trả lời yêu cầu Yêu cầu ĐN Cho phép ĐN Yêu cầu thống kê DS môn học, lớp học,khoá học Điểm thi SV Điểm thi SV 3. 3 Thiết kế HTTT 3.3.1 Thiết kế CSDL cho HTTT quản lý điểm 3.3.1.1 Thiết kế CSDL bằng phương pháp mô hình hoá dữ liệu: Để biểu diễn mối quan hệ giữa các thực thể ta sử dụng các hình sau: Liên kết Tên thực thể Trong hệ thống quản lý điểm thi có các thực thể sau: - Thực thể sinh viên - Thực thể dân tộc - Thực thể tôn giáo - Thực thể khoá học - Thực thể môn học - Thực thể lý lịch sinh viên - Thực thể điểm - Thực thể lớp. Từ các thực thể này ta xây dựng được mối liên hệ của tập hợp các thực thể nối trên. Được biểu diễn bằng sơ đồ quan hệ thực thể ERD như sau Có # Mã tôn giá Dân tộc N N Có N Thuộc Thi Sinh viên N #Mã SV #Mã lớp Lớp học 1 Khóa học #Mã khoá học 1 Thuộc N Tôn giáo 1 #Mã môn hoc #Mã dân tộc Môn học N Từ mô hình liên kết các thực thể của hệ thống ta xây dựng được các tệp cơ sở dữ liệu: Sinhvien(#MaSV, malop,makh,hodem,ten....) LylichSV(#MaSV, tongiao, dantoc, tỉnh, quequan...) Lop(#Malop, tenlop,....) Khoahoc(#MaKH,tenKH) Monhoc(#Mamonhoc,tenmonhoc,chuyennganh......) Diem(MaSV,malop, mamon, lanhoc,hocky, diem....) Dantoc(#Madt, tendt) Tongiao(#Matg, tentg) Sơ đồ cấu trúc dữ liệu (DSD) Madantoc MaTG Ten tongiao MaDT Tendantoc MaKH TenKH Tôn giáo Dân tộc Sinh viên Lớp Khoá học Điểmm Môn học MaSV Malop MaTG Hodem Ten... MaDT Malop Tenlop MaKH... Masv MaMH Malop TenHK. MaHK TenHK MaMH TenMH Chuyennganh Soht...... 3.3.1.2 Tạo lập CSDL * Từ sơ đồ quan hệ thực thể(ERD) và sơ đồ cấu trúc dữ liệu ta có các bảng biểu chủ yếu cho chương trình quản lý điểm. Bảng Sinh viên Sinhvien(MaSV,Malop,Tenlop, MaKH, Hodem, Ten, Ngaysinh...) {Sinh viên(Mã sinh viên, mã lớp, tên lớp, mã khoá học, họ đêm.)} Khoá chính: MaSV. Chi tiết về kiểu dữ liệu, độ dài của từng trường cho được chỉ ra trong hình sau SINHVIEN Field Name Data type Field Size Format Key MaSV Text 15 Primary Ho ten Text 10 Ten Text 30 MaKH Text 10 Ma Lop Text 30 Ten lop Text 15 Ngaysinh Date/Time Short Data Gioi Text 5 Hinh Text 250 Ghichu Text 250 MaDT Text 10 MaTG Text 10 SoCMT Text 50 Quoctich Text 30 Tinh Text 30 Noisinh Text 150 Quequan Text 150 HKTT Text 150 NgayKNDoan Date/Time 40 HotenBo Text 40 Tuoibo Number Integer HotenMe Text 40 Tuoime Number Integer Bảng dân tộc Dantoc(Madt, tendt) {Dân tộc(Mã dân tộc, tên dân tộc) Khóa chính là : Mã dân tộc DANTOC Field Name Data Type Field Size Format Key Madt Text 10 Primary Tendt Text 50 Bảng Môn học Monhoc(Mamon,Tenmon,sotrinh,sotietLT,sotietTH,CNganh) {Mônhọc(Mã môn học, Tên môn học, số học trình, số tiết lý thuyết, số tiết thực hành, chuyên ngành) } Khoá chính: Mamon MONHOC Field Name Data Type Field Size Format Key Mamon T ext 10 Primary Tenmon Text 30 Sotrinh Number LongInteger SotietLT Number LongInteger SotietTH Number LongInteger CNganh Text 20 Bảng Điểm Diem(MaSV,Mamon,Lanhọc,Hocky,Lanthi,Diem,Bangchu,Ngaythi,Khoahoc,Namhoc,Ghichu) {Điểm(Mã sinh viên, lần học, học kỳ, lần thi, điểm, bằng chữ, ngày thi, khoá học, năm học, ghi chú)} Khoá ngoại lai: MaSV, Mamon DIEM Field Name Data Type Field Size Format Key MaSV Text 15 Secondary Mamon Text 10 Secondary Hocky Text 10 Lanhoc Number LongInteger Lanthi Number LongInteger Diem Number Decimal Bangchu Text 15 Ngaythi Date/Time dd/mm/yyyy Khoahoc Text 20 Namhoc Text 20 Ghichu Text 250 Bảng Lớp Lop(Malop, tenlop, GVchunhiem,siso,makhoahoc) {Lớp(Mã lớp, tên lớp, giáo viên chủ nhiệm, sĩ số, mã khoá học)} Khoá chính: Mã lớp LOP Field Name Data Type Field Size Format Key Malop Text 10 Primary Tenlop Text 30 Gvchunhiem Text 20 Siso Number LongInteger MaKH Text 50 Bảng Khoahọc Khoahoc(MaKH, TenKH) {Khoáhọc(Mã khoá học, Tên khoá học)} Khoá chính : MaKH KHOAHOC Field Name Data Type Field Size Format Key MaKH Text 50 Primary TenKH Text 30 Bảng tôn giáo Tongiao (TonGiao,tenTG) {Tongiao(Tôn giáo, tên tôn giáo )} Khoá chính: TonGiao TONGIAO Field Name Data Type Field Size Format Key MaTG Text 50 Primary TemTG Text 50 Bảng học kỳ Hoc kỳ(Ma hoc kỳ, ten học kỳ) {Hoc ky(Học kỳ, tên học kỳ)} Field Name Data Type Field Size Format Key MaHK Text 10 Primary TemHK Text 50 * Sơ đồ quan hệ các bảng 3.3.2 Thiết kế chương trình: 3.3.2.1 Thiết kế theo các Module Yêu cầu của chương trình là quản lý điểm thi của sinh viên. Cho nên các chức năng chính của chương trình bao gồm: Cập nhật, Tra cứu, Lập báo cáo....Tiến trình hoạt động của chương trình tuân theo sơ đồ dưới đây Module hệ thống của chương trình: Quản lý điểm thi sinh viên Trợ giúp Báo cáo Tra cứu Cập nhật Danh mục Hệ thống Các module chức năng lại được phân cấp như sau: MODULE : Hệ thống gồm 2 menu con đó là Menu Thay đổi mật khẩu và Menu Thoát khỏi chương trình. Hệ thống Thay đổi mật khẩu Thoát khỏi chưong trình Module: CậpNhật Cập nhật Cập nhật sinh viên Cập nhật điểm thi MODULE: DanhMục Danh mục DS dân tộc DS tôn giáo DS khoá học DS lớp DS môn học DS học kỳ MODULE: Báo Cáo Báo cáo Bảng điểm thi học phần DS SV thi lại Bảng điểm SV MODULE : Tra cứu Tra cứu Tra cứu HSSV Tra cứu điểm thi SV MODULE: Trợ giúp Trợ giúp Thông tin Hướng dẫn sử dụng 3.3.2.2 Một số thuật toán sử dụng trong chương trình Thuật toán đăng nhập vào hệ thống Thuật toán cập nhật môn học, cập nhật sinh viên.Và một số các thuật toán cập nhật khác tương tự khác như: cập nhật dân tộc, cập nhật tôn giáo, cập nhật điểm thi sinh viên, cập nhật khoá học, cập nhật lớp học. Thuật toán tìm kiếm Thuật toán in ra báo cáo của chương trình. ThuậtY Bắt đầu Vào chương trình quản lý điểm Kiểm soát số lần đăng nhâp sai ? Kiểm tra tên, mật khẩu Kết thúc Nhập tên , mật khẩu người sử dụng N toán đăng nhập vào chương trình: Để đăng nhập vào chương trình người dùng phải cung cấp User name và Password. Sau khi thông tin này đã được nhập vào các text box, chương trình sẽ thực hiện việc kiểm tra tính đúng đắn của User name và Password đó. Nếu User name và Password đã có trong cơ sở dữ liệu thì người dùng đã đăng nhập thành công vào hệ thống. Trường hợp ngược lại sẽ yêu cầu người dùng phải đăng nhập lại. Thuật toán cập nhập môn học Bắt đầu Mở Form môn học Nhập mã môn học Mã MH rỗng? Môn học đã có Thông báo Nhập thông tin môn học Tiếp tục Y Đóng tệp Ghi dữ liệu N Kết thúc N Y Y N Hiệu chỉnh Huỷ bỏ N Y Y Thông báo Thuật toán này cho phép thực hiện việc cập nhật môn học. Các bước thực hiện việc cập nhật như sau: Mở form môn học sau đó tiến hành thực hiện việc nhập thông tin cho môn học này. Bắt đầu là việc nhập mã môn học. Mã môn học sẽ được kiểm tra với các điều kiện đưa ra là mã đó phải không rỗng hoặc không trùng với mã môn học đã có. Nếu thông tin cung cấp cho trường này không thỏa mãn thì người dùng không thể thực hiện nhập tiếp các thông tin cho các trường tiếp theo: Tên môn học; Số học trình; Số tiết thực hành; Số tiết lý thuyết… Còn nếu thông tin chính xác thì người dùng sẽ quyết định có thực hiện ghi dữ liệu tiếp hay không. Thuật toán cập nhật sinh viên Bắt đầu Mở Form SV Nhập Mã SV Rỗng ? Mã đã có Thông báo Nhập thông tin cho sinh viên Tiếp tục Y Đóng Form Ghi dữ liệu N Kết thúc N Y Y N Hiệu chỉnh Huỷ bỏ N Y Y Thông báo Thuật toán này cho phép việc cập nhật thông tin về sinh viên. Các bước của thuật toán này như sau: Người dùng thực hiện nhập thông tin về sinh viên đó bắt đầu là mã sinh viên. Chương trình sẽ thực hiện kiểm tra xem mã sinh viên có hợp lệ hay không bằng việc kiểm tra xem mã sinh viên cung cấp có bị rỗng hay bị trùng với các mã đã có hay không. Khi thông tin cung cấp đã thỏa mãn thì thực hiện việc nhập các thông tin tiếp theo như: Họ tên; Ngày sinh; Giới tính; Lớp; Hộ khẩu thường trú; Nơi sinh; Quê quán; Thông tin bố; Thông tin mẹ. Sau khi các thông tin này được nhập đầy đủ người dùng sẽ quyết định có lưu thông tin về sinh viên này hay không và có thực hiện việc cập nhật tiếp hay không. Thuật toán đưa ra báo cáo: B¾t ®Çu KÕt thóc Y Më form b¸o c¸o NhËp c¸c ®iÒu kiÖn b¸o c¸o KiÓm tra hîp lÖ In b¸o c¸o N Th«ng b¸o HiÖn c¸c b¸o c¸o §ång ý in Lùa chän b¸o c¸o N Y 3.3.3. Thiết kế màn hình giao diện của chương trình quản lý điểm 3.3.3.1 Form đăng nhập hệ thống: Yêu cầu người dùng nhập đúng - Đây là Form đăng nhập chính vào chương trình quản lý điểm. - Form này cho phép đối tượng sử dụng là người quản lý điểm. - Với cách thức sử dụng Form như sau: + Khi hệ thống đã có người sử dụng đăng ký trước thông qua tên và mật khẩu. Để đăng nhập vào chương trình người sử dụng phải khai báo tên người sử dụng:Bằng cách khai báo bằng kiểu ký tự, và tên ngừời dùng đã mặc định từ trước Ví dụ: Tên người sử dụng đã khai báo trước trong chương trinh là KTQD, khi đó người sử dụng phải khai báo đúng tên này. Sau đó người dùng phải khai báo Password thông qua các kiểu mặc định cho ký tự khai báo từ trước. Trong bài các ký tự khai báo Password mặc định là * + Khi hệ thống chưa có người sử dụng đăng ký từ trước thì tên và password sẽ để trống 3.3.3.2 Form giao diện chính của chương trình: Form màn hình giao diện chính của chương trình quản lý điểm thi Khoa Tin Học Kinh Tế. Form này sẽ hiển thị ra sau khi người dùng đã đăng nhập thành công vào hệ thống. Để thực hiện các chức năng tiếp theo: Cập nhât, Hệ thống, Tìm kiếm.... Người dùng chỉ việc thực hiện động tác kích chụp vào menu mà ngừời dùng định thực hiện. 3.3.3.3 Form thay đổi mật khẩu -Form này dùng để tạo ra tài khoản mới cho người sử dụng hệ thống và thay đổi tài khoản cho người dùng khi người dùng đó đã có tài khoản từ trước. - Đối tượng sử dụng là người quản lý trực tiếp đăng nhập và chương trình. Từ đây người quản lý chương trình mới cho phép nhiều người dùng đăng nhập vào chương trình thông qua tài khoản mà người quản lý cho phép. - Cách sử dụng: + Trường hợp ngừơi sử dụng chưa có tài khoản: Người sử dụng chỉ việc đăng nhập các ký tự vào Text box: Tên người dùng mới. Và khai báo Mật khẩu mới vào Textbox đó. Theo mặc định của kiểu Pass đã mặc định từ trước. + Trường hợp người dử dụng có tài khoản từ trước: Người sử dụng chỉ việc đăng nhập tên tài khoản và mật khẩu đã có của mình vào lần lượt hai Textbox: Tên người sử dụng cũ và Mật khẩu người sử dụng cũ.Sau đó người sử dụng sẽ đăng nhập tên và mật khẩu mới vào hai Textbox: Tên người sử dụng mới và Mật khẩu mới. 3.3.3.4 Form Cập nhật Môn học: - Đây là Form cập nhập môn học với các chức năng chủ yếu: Thêm mới môn học, sửa đổi môn học, xoá môn học. - Để thực hiện các chức năng cập nhật môn học, sau khi người sử dụng đăng nhập được vào hệ thống thì người sử dụng chỉ việc kích chuột vào nút Thêm mới(hoặc phím nóng: Alt+T), xuất hiện giao diện cho phép thêm mới môn học. Bằng cách nhập vào Mã môn học, tên môn học, số học trình, chuyên ngành. Nhấp vào nút Lưu thì thông tin môn học đó sẽ được lưu vào. Và danh sách môn học được bổ sung. Các nút Sửa đổi , Xoá cũng thực hiện như cách cập nhật thêm mới môn học. Ấn nút thoát thì ta sẽ thoat khỏi chương trình. 3.3.3.5 Form DS dân tộc: - Đây là Form thực hiện việc cập nhật dânt tộc: Với các chức năng Thêm mới dân tộc, Sửa , Xoá, Thoát khỏi Form cập nhật. - Để thực hiện cập nhật dân tộc, sau khi đã vào được Form giao diện như dưới đây, tuỳ theo mục đích cụ thể mà người sử dụng có thể thực hiện việc Thêm mới, Sửa đổi, Xoá dân tộc. Ví dụ: Để sửa dân tộc đã có trong danh sách dân tộc đã có. Người sử dụng chỉ việc kích chuột vào 1 dòng bất kỳ trong danh sách dân tộc đó. Sau đó Kích vào Nút Sửa, Xuất hiện giao diện cho phép sửa đổi tên dân tộc. Ấn nút Lưu để lưu kết quả vừa sửa đổi. Trong Tab – Danh mục còn có các Form có chức năng tương tự: Form tôn giáo,Form khoá học,Form học kỳ, Form lớp học... 3.3.3.6 Form cập nhật sinh viên - Đây là form thực hiện cập nhật sinh viên. Việc cập nhật này cũng được thực hiện bằng cách thêm mới, sửa đổi, xóa, lưu thông tin về sinh viên đó. - Để thực hiện vào được form này người dùng sau khi đã đăng ký thành công vào hệ thống chỉ việc lựa chọn menu sinh viên tại menu hệ thống của chương trình quản lý điểm. Thực hiện nhập các thông tin gồm: Mã sinh viên, Họ tên sinh viên, Ngày sinh, Quê quán,Hộ khẩu thường trú,Nơi sinh, Thông tin bố, Thông tin mẹ. Các thông tin khác như: Lớp, Giơi tình,Dân tộc, Tôn giáo; cho phép lựa chọn ngay trong combobox thông qua việc kết nối với các bảng này. Sau đó thực hiện Lưu thông tin lại thì thông tin về sinh viên này sẽ được cập nhật. 3.3.3.7 Form cập nhật điểm SV - Form này cho phép cập nhật điểm cho sinh viên. - Người quản lý thực hiện việc cập nhật điểm thi cho từng sinh viên. - Để thực hiện cập nhật điểm thi cho sinh viên thì người sử dụng phải khai báo các thông tin: Khoá học, Lớp. Sau đó gõ Enter thông tin về điểm cho sinh viên theo lớp sẽ tự động hiển thi ra. Form cập nhật điểm thi cho sinh viên, Form cập nhật HSSV cũng có chức năng tương tự. 3.3.3.8 Form Tra cứu điểm thi sinh viên - Form này thực hiện chức năng chủ yếu là tra cứu điểm thi cho sinh viên trong điều kiện mà có yêu cầu tìm kiếm từ phía người dùng - Form này cho phép những người có tài khoản được phép tìm kiếm - Để thực hiện chức năng tìm kiếm điểm thi cho sinh viên yêu cầu người sử dụng phải lựa chọn hình thức tìm kiếm. Sau đó khai báo thông tin tìm kiếm. Form tra cứu điểm thi . Form tra cứu HSSV cũng có chức năng tương tự. 3.3.3.9 Form tra cứu hồ sơ sinh viên - Form Tra cứu hồ sơ sinh viên thực hiện chức năng tra cứu hồ sơ sinh viên giúp cho người quản lý sẽ biết rõ về đối tượng sinh viên mà mình quản lý. - Form này cho phép người dùng là người quản lý điểm thi sinh viên. - Để thực hiện chức năng quản lý sinh viên yêu cầu người sử dụng sau khi vào được hệ thống, mở Form tra cứu hồ sơ sinh viên phải nhập các tiêu thức tìm kiếm: Tên sinh viên, Mã sinh viên, Mã khoá học, Mã lớp và phải đi kèm với mã khoá học. Sau khi nhập đủ thông tin theo một tiêu thức nào đó thì chỉ việc ấn vào nút “Tìm” các thông tin cần tìm sẽ hiển thị ra. 3.3.3.10 Form đưa ra báo cáo điểm của sinh viên theo lớp - Đây là form đưa ra báo cáo về bảng điểm thi học phần môn học cho một môn bất kỳ của một lớp bất kỳ. Cho phép việc xem báo cáo và in ra khi có yêu cầu - Form này chỉ cho phép người có tài khoản đăng nhập vào hệ thống mới có thể đăng nhập được. - Để đưa ra báo cáo yêu cầu người sử dụng phải khai báo đầy đủ các thông tin: Lớp: Chọn lớp bất kỳ từ ComboBox. Khoá học: Chọn khoá học bất kỳ. Môn học: Chọn môn học bất kỳ. Học kỳ: Chọn học kỳ đã có trong ComboBox đó. Khi đã khai báo song đầy đủ các thông tin thì mới có thể lên báo cáo. Ấn vào các nút lệnh trên Form giao diện để thực thi theo yêu cầu người sử dụng. 3.3.3.11 Form đưa ra báo cáo bảng điểm của sinh viên theo từng lớp của một học kỳ - Đây là bảng đưa ra báo cáo bảng điểm của một sinh viên bất kỳ theo từng học kỳ vào theo từng lớp. - Để thực hiện xem điểm thi của một sinh viên người sử dụng có thể lựa chọn hình thức tra cứu theo mã sinh viên hoặc tên sinh viên.Với tên sinh viên và mã sinh viên người sử dụng không phải nhập thông tin một cách chính xác mà kết quả tra cứu vẫn thỏa mãn theo yêu cầu. Sau khi lựa chọn ta chỉ việc nhập thông tin về tên sinh viên hoặc mã sinh viên đó rồi kich hoạt vào nút xem để xem kết quả. - Thực hiện kích hoạt vào danh sách để lựa chọn một sinh viên bất kỳ và xem thông tin về điểm thi trong một học kỳ của sinh viên đó. 3.3.3.12 Báo cáo sinh viên thi học phần - Báo cáo này giúp cho người quản lý điểm có được thông tin chính thức về thông tin điểm thi sinh viên một môn học bất kỳ . - Đây là Báo cáo đưa ra sau khi người sử dụng đã đăng nhập vào Form Bảng điểm thi học phần. Để vào được báo cáo người sử dụng chỉ phải khai báo: Lớp, Khoá học, Môn học, Học kỳ. Tất các các khai báo trên đều được lấy ra bằng cách chọn trong Combobox. 3.3.3.13 Danh sách sinh viên thi lại - Đây là báo cáo về danh sách sinh viên thi lại học phần. - Người quản lý điểm sẽ căn cứ vào đây để có có thông tin về những sinh viên phải thi lại học phần. - Để đưa ra được báo cáo: Sau khi người sử dụng vào được Form Danh Sách Sinh viên thi lại học phần. Người sử dụng phải khai báo các thông tin: Lớp, Khoá học, Học kỳ, Môn học, Số điểm, Toán tử(Là tiêu thức mà người sử dụng đưa ra để thực hiện so sánh số điểm ). Ví dụ: Đưa ra danh sách sinh viên thi lại học phần : Số điểm < 5 3.3.3.12 Báo cáo bảng điểm cho một sinh viên 1 học kỳ - Báo cáo này cho phép biết được bảng điểm của một sinh viên trong một học kỳ - Báo cáo được đưa ra sau khi người sử dụng đăng nhập vào hệ thống và vào Form Bảng điểm sinh viên. Để có được báo cao thì người sử dụng phải khai báo Mã sinh viên, Học kỳ, Lớp, Khoá học. Ấn vào nút “Xem báo cao” thì sẽ cho kết quả sau. 3.4 Triển khai hệ thống 3.4.1 Ngôn ngữ lập Trình: Visual Basic(VB): Là một ngôn ngữ lập trinh, là công cụ lập trình cơ sở dữ liêu. VB được dùng để xây dựng các ứng dụng quản lý như quản lý tồn kho, kế toán bán hàng, kế toán tiền mặt, quản lý nhân sự, quản lý sinh viên... VB có các đặc điểm : Có thể kết nối và xử lý dữ liệu từ hệ quản trị cơ sở dữ liệu khác: Access, SQL Dễ dàng tạo bộ cài Setup. Có thể dịch ứng dụng ra tập tin . EXE . Visual Basic sử dụng cách truy xuất dữ liệu của hệ quản trị cơ sở dữ liệu Access. Thông qua việc truy suất vào các thư viện cho phép mà từ Visual Basic có thể lấy dữ liệu ra từ Access. Các dữ liệu được lưu trữ trong các bảng,và tại đây đã có sự liên kết nhau giữa các bảng đó; Nhờ việc quản lý và tổ chức dữ liệu trong VB rất chặt chẽ. Nhờ đó mà dữ liệu quản lý luôn đảm bảo chính xác, kịp thời. Không những thế ta còn có thể tổ chức toàn bộ công việc của chương trình trong một ứng dụng. Vì những lý do trên nên em đã chọn công cụ để xây dựng chương trình là Visual Basic Kết Luận Quản lý sinh viên là một trong những hoạt động chính của một trường đại học. Tuỳ thuộc vào quy mô và nội dung đào tạo của mỗi trường mà sinh viên được quản lý theo các hình thức khác nhau. Nhìn chung hầu hết các trường đại học ở Việt Nam đều tổ chức quản lý theo hình thức phân cấp quản lý theo hình cây, trong đó Khoa là đơn vị quản lý trọng tâm. Trong cấp Khoa thì quản lý điểm thi của sinh viên từ lúc nhập học cho đến khi ra trường là hoạt động chủ yếu. Trước đây khi tin học chưa được sử dụng phổ biến trong các công việc thì công nghệ thủ công được sử dụng là chủ yếu. Công nghệ thủ công đòi hỏi mất nhiều thời gian, mất nhiều nhân lực, vật chứa thông tin đồ sộ. Giờ đây khi tin học đã phát triển, nó được ứng dụng ở tất cả các ngành, lĩnh vực khác nhau. Nhờ đó nhiều hoạt động đã được từ động hoá với độ chính xác cao, cập nhật nhanh chóng, giảm nhân công, giảm chi phí, hiệu suất công việc được nâng cao rõ rệt, khối lượng vật mang tin giảm đi rất nhiều, tiết kiệm được không gian và thời gian. Trong công tác quản lý sinh viên thì quản lý điểm thi là công việc chính, xuyên suốt, đòi hỏi phải cập nhật và xử lý dữ liệu thường xuyên. Nếu tiếp tục sử dụng công nghệ cũ thì sẽ mất thêm nhiều thời gian công sức, tiền của... mà hiệu suất lại không cao. Do đó, việc sử dụng công nghệ máy tính vào công tác quản lý sẽ làm cho công việc trở nên đơn giản hơn, các thao tác xử lý dữ liệu phần lớn sẽ được tiến hành tự động. Tuy nhiên quá trình nhập dữ liệu vẫn phụ thuộc hoàn toàn vào con người. Đó là vấn đề chưa giải quyết trong giai đoạn hiện nay. Con người trực tiếp phải nhập dữ liệu vào hệ thống, sau khi có dữ liệu máy tính mới có thể làm những công việc tiếp theo. Chính vì vậy mà dữ liệu vẫn là nguồn quan trọng nhất cho hệ thống thông tin, nhưng lại phụ thuộc hoàn toàn vào con người. Trên thực tế có rất nhiều trường hợp chính người nhập liệu còn không tin vào khả năng nhập liệu của chính mình , chính vì vậy vẫn mất thời gian cho việc nhập liệu và đó vẫn là vấn đề cần giải quyết. Do điều kiện về thời gian cũng như khả năng còn có hạn nên việc phát triển hệ thống của em sẽ còn nhiều hạn chế và mới chỉ đưa ra chương trình quản lý điểm thi với các báo cáo phát sinh, hỗ trợ các xử lý ở việc tính và lập các danh sách như danh sách học lại, thi hết môn... Em xin chân thành cảm ơn Thầy giáo: Cao Đình Thi, người đã giúp em hoàn thành đề tài. Sinh viên: Bùi Thị Nga Tài liệu tham khảo Để hoàn thành đề án môn học cho việc xây dựng hệ thống thông tin quản lý điểm thi sinh viên tại Khoa Tin học kinh tế Trường Đại học kinh tế quốc dân. Em đã sử dụng các tài liệu sau: Giáo trình: Hệ thống thông tin quản lý. TS Trương Văn Tu – TS Trần Thị Song Minh, Hà Nội- 2000 Giáo trình: Cơ sở dữ liệu . ThS Trần Công Uẩn Visual Basic. Cho Sinh Viên và Ký thuật viên khoa Công nghệ thông tin Ks Đinh Xuân Lâm 25.12.2002 Mục lục Trang Phụ lục 4.1 Code cho phần đăng nhập hệ thống. /* Khai báo biến Dim Conndata As Connection Dim RsLogin As Recordset Dim strUserName, strPassword As String /* Code chương trình. Public strUName As String Sub connect_data() Set Conndata = New Connection StrSQL = "SELECT * FROM Account" Conndata.CursorLocation = adUseClient Conndata.Open "PROVIDER = Microsoft.Jet.OLEDB.4.0;Data Source=" & _ App.Path & "\data.mdb" & ";Jet OLEDB:Database;" Set RsLogin = New Recordset RsLogin.Open StrSQL, Conndata, adOpenStatic, adLockOptimistic End Sub Private Sub cmdExit_Click() Unload Me Unload MDIForm1 End End Sub Private Sub cmdLogin_Click() On Error Resume Next strUserName = txtUserName.Text strPassword = txtPassword.Text Dim sql As String sql = "select * from Account where Ucase(Username)='" + UCase(strUserName) + "' and Ucase(Password) = '" + UCase(strPassword) + "'" Set RsLogin = New Recordset RsLogin.Open sql, Conndata, adOpenStatic, adLockOptimistic If RsLogin.RecordCount <= 0 Then MsgBox "Kiem tra lai ten dang nhap va mat khau" txtUserName.SetFocus Exit Sub Else strUName = strUserName Unload Me Me.Hide Load frmSplash frmSplash.Show End If End Sub Private Sub Form_Load() On Error Resume Next connect_data End Sub 4.2 Code cho phần thay đổi mật khẩu. /* Khai báo biến Dim strUserName As String Dim Conndata As Connection Dim RsLogin As Recordset Dim strpass As String /* Code chương trình Sub connect_data() Set Conndata = New Connection StrSQL = "SELECT * FROM Account" Conndata.CursorLocation = adUseClient Conndata.Open "PROVIDER = Microsoft.Jet.OLEDB.4.0;Data Source=" & _ App.Path & "\data.mdb" & ";Jet OLEDB:Database;" Set RsLogin = New Recordset RsLogin.Open StrSQL, Conndata, adOpenStatic, adLockOptimistic End Sub Private Sub cmdChange_Click() On Error Resume Next Dim strconfirm Dim sql As String strUserName = frmDangNhap.strUName strpass = txtnewPass.Text strconfirm = txtconfirm.Text If strconfirm strpass Then MsgBox "Xac nhan lai mat khau cho chinh xac" txtconfirm.SetFocus Exit Sub End If sql = "UPDATE Account SET [Password] = '" + strpass + "'" sql = sql + " WHERE Username='" + strUserName + "'" Conndata.Execute sql MsgBox "mat khau da duoc thay doi" Unload Me Me.Hide End Sub Private Sub cmdExit_Click() Unload Me Me.Hide End Sub Private Sub Form_Load() On Error Resume Next connect_data End Sub 4.3 Code cho phần Cập nhật thông tin sinh viên /* Khai báo biến Dim Conndata As Connection Dim rsSinhvien As Recordset Dim Strcheck As String Dim check_SV As Boolean Dim strMasv, strHodem, strTen, strNgaySinh, strQue, strNoiSinh, strHKTT Dim strGioi, strTenBo, strTenMe, strQueBo, strQueMe, strDanToc, strTonGiao Dim strLop, strGhiChu Dim strMaLop As String Dim intTuoiBo, intTuoiMe, intSoCMT /* Code xử lý cập nhật thông tin sinh viên. Private Sub Class_Initialize() connect_date End Sub Sub connect_date() Set Conndata = New Connection StrSQL = "SELECT * FROM Sinhvien ORDER BY Ten" Conndata.CursorLocation = adUseClient Conndata.Open "PROVIDER = Microsoft.Jet.OLEDB.4.0;Data Source=" & _ App.Path & "\data.mdb" & ";Jet OLEDB:Database;" Set rsSinhvien = New Recordset rsSinhvien.Open StrSQL, Conndata, adOpenStatic, adLockOptimistic If rsSinhvien.RecordCount > 0 Then rsSinhvien.MoveFirst End If End Sub Sub Load_DSSV(ByVal newList As ListView, Lop) Dim StrSQL As String Dim intcount As Integer intcount = 0 get_MaLop (Lop) StrSQL = "SELECT * FROM Sinhvien where Lop='" + strMaLop + "' Order by Sinhvien.Ten" 'StrSQL = "SELECT * FROM Sinhvien Order by Sinhvien.Ten" Set rsSinhvien = New Recordset rsSinhvien.Open StrSQL, Conndata, adOpenStatic, adLockOptimistic newList.ListItems.Clear If rsSinhvien.RecordCount > 0 Then rsSinhvien.MoveFirst With newList Do While Not rsSinhvien.EOF intcount = intcount + 1 With .ListItems With .Add(, , intcount) .ListSubItems.Add , , rsSinhvien.Fields("MaSv") .ListSubItems.Add , , rsSinhvien.Fields("Hodem") .ListSubItems.Add , , rsSinhvien.Fields("Ten") .ListSubItems.Add , , rsSinhvien.Fields("Ngaysinh") .ListSubItems.Add , , rsSinhvien.Fields("Gioi") .ListSubItems.Add , , rsSinhvien.Fields("Lop") .ListSubItems.Add , , rsSinhvien.Fields("SoCMT") .ListSubItems.Add , , rsSinhvien.Fields("Noisinh") .ListSubItems.Add , , rsSinhvien.Fields("quequan") .ListSubItems.Add , , rsSinhvien.Fields("HKTT") .ListSubItems.Add , , rsSinhvien.Fields("Dantoc") .ListSubItems.Add , , rsSinhvien.Fields("Tongiao") .ListSubItems.Add , , rsSinhvien.Fields("Quocgia") .ListSubItems.Add , , rsSinhvien.Fields("Hoten_Bo") .ListSubItems.Add , , rsSinhvien.Fields("Tuoi_Bo") .ListSubItems.Add , , rsSinhvien.Fields("QueBo") .ListSubItems.Add , , rsSinhvien.Fields("Hoten_Me") .ListSubItems.Add , , rsSinhvien.Fields("Tuoi_Me") .ListSubItems.Add , , rsSinhvien.Fields("QueMe") .ListSubItems.Add , , rsSinhvien.Fields("Ghichu") End With End With rsSinhvien.MoveNext Loop End With End If End Sub Function get_MaLop(tenLop) Dim sql As String Dim rsLop As Recordset sql = "select Malop from Lop where TenLop='" + tenLop + "'" Set rsLop = New Recordset rsLop.Open sql, Conndata, adOpenStatic, adLockOptimistic If (rsLop.RecordCount > 0) Then strMaLop = rsLop.Fields("MaLop") 'Else ' strMaLop = 1 End If End Function Sub Addnew(Masv, Hodem, Ten, NgaySinh, Gioi, Quequan, Noisinh, HKTT, _ DanToc, Tongiao, Quocgia, SoCMT, Lop, TenBo, TuoiBo, QueBo, TenMe, _ TuoiMe, QueMe, Ghichu) check (Masv) get_MaLop (Lop) If TuoiBo = "" Or Val(TuoiBo) < 0 Then TuoiBo = 0 End If If TuoiMe = "" Or Val(TuoiMe) < 0 Then TuoiMe = 0 End If If (check_SV = False) Then With rsSinhvien .Addnew .Fields("MaSV") = Masv .Fields("Hodem") = Hodem .Fields("Ten") = Ten .Fields("Ngaysinh") = NgaySinh .Fields("Gioi") = Gioi .Fields("SoCMT") = SoCMT .Fields("NoiSinh") = Noisinh .Fields("Quequan") = Quequan .Fields("HKTT") = HKTT .Fields("Hoten_Bo") = TenBo .Fields("Tuoi_Bo") = TuoiBo .Fields("QueBo") = QueBo .Fields("Hoten_Me") = TenMe .Fields("Tuoi_Me") = TuoiMe .Fields("QueMe") = QueMe .Fields("Dantoc") = DanToc .Fields("Tongiao") = Tongiao .Fields("Quocgia") = Quocgia .Fields("Lop") = strMaLop .Fields("Ghichu") = Ghichu .update MsgBox "Thong tin ve sinh vien moi da duoc cap nhat vao CSDL" End With End If End Sub Sub load_Ten_SV(ByVal newList As ListView, tenLop) Dim sql As String 'Lay ma lop thong qua ten lop get_MaLop (tenLop) sql = "select MaSV,Hodem,Ten from Sinhvien where Lop='" + strMaLop + "' Order by Ten" Set rsSinhvien = New Recordset rsSinhvien.Open sql, Conndata, adOpenStatic, adLockOptimistic newList.ListItems.Clear If rsSinhvien.RecordCount > 0 Then rsSinhvien.MoveFirst With newList Do While Not rsSinhvien.EOF intcount = intcount + 1 With .ListItems With .Add(, , intcount) .ListSubItems.Add , , rsSinhvien.Fields("MaSv") .ListSubItems.Add , , rsSinhvien.Fields("Hodem") .ListSubItems.Add , , rsSinhvien.Fields("Ten") '.ListSubItems.Add , , RsSinhvien.Fields("Ngaysinh") '.ListSubItems.Add , , RsSinhvien.Fields("Gioi") '.ListSubItems.Add , , RsSinhvien.Fields("Lop") End With End With rsSinhvien.MoveNext Loop End With End If End Sub Sub check(Masv) check_SV = False If (rsSinhvien.RecordCount > 0) Then rsSinhvien.MoveFirst Do While Not rsSinhvien.EOF If (UCase(Masv) = UCase(rsSinhvien.Fields("MaSV"))) Then MsgBox " Ma sinh vien nay da co , hay nhap ma sinh vien khac", vbOKOnly + vbInformation check_SV = True Exit Do End If rsSinhvien.MoveNext Loop End If End Sub Sub update(Masv, Hodem, Ten, NgaySinh, Gioi, Quequan, Noisinh, HKTT, _ DanToc, Tongiao, Quocgia, SoCMT, Lop, TenBo, TuoiBo, QueBo, TenMe, _ TuoiMe, QueMe, Ghichu) Dim sql As String sql = "Update Sinhvien Set Hodem ='" + Hodem + "',Ten='" + Ten + "'," sql = sql + " Ngaysinh='" + NgaySinh + "', Gioi='" + Gioi + "',SoCMT='" + SoCMT + "', " sql = sql + " Noisinh='" + Noisinh + "',Quequan='" + Quequan + "',HKTT='" + HKTT + "', " sql = sql + " Hoten_bo='" + TenBo + "',Tuoi_bo='" + TuoiBo + "', Quebo='" + QueBo + "', " sql = sql + " Hoten_Me='" + TenMe + "',Tuoi_Me='" + TuoiMe + "',QueMe='" + QueMe + "', " sql = sql + " Dantoc='" + DanToc + "',TonGiao='" + Tongiao + "',Quocgia='" + Quocgia + "', " sql = sql + " Lop='" + Lop + "', Ghichu = '" + Ghichu + "'" sql = sql + " Where MaSV ='" + Masv + "'" Conndata.Execute sql MsgBox "thong tin cua xinh vien da duoc xua doi" End Sub Sub delete(Masv) Dim sql As String sql = "Delete from Diem where MaSV = '" + Masv + "'" Conndata.Execute sql sql = "Delete from Sinhvien where MaSV = '" + Masv + "'" Conndata.Execute sql End Sub Public Property Get a() As Variant End Property Public Property Let Masv(ByVal vMaSV As Variant) End Property 4.4 Code cho phần cập nhật điểm sinh viên /*Khai báo biến Dim Conndata As Connection Dim rsDiem As Recordset Dim Strcheck As String Dim check_Diem As Boolean Dim strMamon As String Dim strMamon1 As String /* Code xử lý các cập nhật điểm. Private Sub Class_Initialize() connect_data End Sub Sub connect_data() Set Conndata = New Connection StrSQL = "SELECT * FROM Diem" Conndata.CursorLocation = adUseClient Conndata.Open "PROVIDER = Microsoft.Jet.OLEDB.4.0;Data Source=" & _ App.Path & "\data.mdb" & ";Jet OLEDB:Database;" Set rsDiem = New Recordset rsDiem.Open StrSQL, Conndata, adOpenStatic, adLockOptimistic If rsDiem.RecordCount > 0 Then rsDiem.MoveFirst End If End Sub Sub Load_DSDiem(ByVal newList As ListView, tenLop) Dim StrSQL As String Dim intcount As Integer intcount = 0 StrSQL = "SELECT Diem.MaSV, Diem.Hocky, Diem.Lanhoc, Diem.Lanthi, Diem.Diemso, Diem.Diemchu, Diem.Ngaythi, Diem.Namhoc, Diem.Ghichu, Monhoc.Tenmon, Sinhvien.Hodem, Sinhvien.Ten" StrSQL = StrSQL + " FROM Tongiao INNER JOIN" StrSQL = StrSQL + " (((Khoahoc INNER JOIN Lop ON Khoahoc.TenKH=Lop.Khoahoc) INNER JOIN (Dantoc INNER JOIN Sinhvien ON Dantoc.Tendt=Sinhvien.Dantoc) ON Lop.Malop=Sinhvien.Lop) INNER JOIN (Monhoc INNER JOIN (Hocky INNER JOIN Diem ON Hocky.Tenhocky=Diem.Hocky) ON Monhoc.Mamon=Diem.Mon) ON Sinhvien.MaSV=Diem.MaSV) ON Tongiao.Tentg=Sinhvien.TonGiao" StrSQL = StrSQL + " Where Lop.TenLop = '" + tenLop + "'" StrSQL = StrSQL + " order by Sinhvien.ten" Set rsDiem = New Recordset rsDiem.Open StrSQL, Conndata, adOpenStatic, adLockOptimistic newList.ListItems.Clear If rsDiem.RecordCount > 0 Then rsDiem.MoveFirst With newList Do While Not rsDiem.EOF intcount = intcount + 1 With .ListItems With .Add(, , intcount) .ListSubItems.Add , , rsDiem.Fields("MaSV") .ListSubItems.Add , , rsDiem.Fields("HoDem") .ListSubItems.Add , , rsDiem.Fields("Ten") .ListSubItems.Add , , rsDiem.Fields("Hocky") .ListSubItems.Add , , rsDiem.Fields("Tenmon") .ListSubItems.Add , , rsDiem.Fields("LanHoc") .ListSubItems.Add , , rsDiem.Fields("Lanthi") .ListSubItems.Add , , rsDiem.Fields("Diemso") .ListSubItems.Add , , rsDiem.Fields("Diemchu") .ListSubItems.Add , , rsDiem.Fields("Ngaythi") .ListSubItems.Add , , rsDiem.Fields("Namhoc") .ListSubItems.Add , , rsDiem.Fields("Ghichu") End With End With rsDiem.MoveNext Loop End With End If End Sub Sub Load_tenDT(ByVal newCombobox As ComboBox) Dim StrSQL As String StrSQL = "SELECT * FROM Diem " Set rsDiem = New Recordset rsDiem.Open StrSQL, Conndata, adOpenStatic, adLockOptimistic newCombobox.Clear If rsDiem.RecordCount > 0 Then rsDiem.MoveFirst Do While Not rsDiem.EOF newCombobox.AddItem rsDiem.Fields("Tendt") rsDiem.MoveNext Loop End If End Sub Function get_MaMon(Tenmon) Dim sql As String Dim RsMon As Recordset sql = "select Mamon from Monhoc where Tenmon='" + Tenmon + "'" Set RsMon = New Recordset RsMon.Open sql, Conndata, adOpenStatic, adLockOptimistic If (RsMon.RecordCount > 0) Then strMamon = RsMon.Fields("Mamon") End If End Function Function get_MaMon1(Tenmon) Dim sql As String Dim RsMon As Recordset sql = "select Mamon from Monhoc where Tenmon='" + Tenmon + "'" Set RsMon = New Recordset RsMon.Open sql, Conndata, adOpenStatic, adLockOptimistic If (RsMon.RecordCount > 0) Then strMamon1 = RsMon.Fields("Mamon") End If End Function Sub Addnew(Masv, Monhoc, Hocky, Lanhoc, Lanthi, Diemso, Diemchu, Ngaythi, Namhoc, Ghichu) 'check (TenDt) Dim sql As String get_MaMon (Monhoc) If (check_Diem = False) Then sql = "INSERT INTO Diem VALUES ('" + Masv + "','" + strMamon + "','" + Hocky + "'," + Lanhoc + "," + Lanthi + "," + Diemso + ",'" + Diemchu + "','" + Ngaythi + "','" + Namhoc + "', '" + Ghichu + "')" Conndata.Execute sql End If End Sub Sub update_mamon(MaMon) Dim StrSQL As String StrSQL = "Update Diem set Mon='" + MaMon + "' where Mon=''" Conndata.Execute StrSQL MsgBox "ma mon da cap nhat" End Sub Sub check(TenDt) check_Diem = False If (rsDiem.RecordCount > 0) Then rsDiem.MoveFirst Do While Not rsDiem.EOF If (UCase(TenDt) = UCase(rsDiem.Fields("TenDt"))) Then MsgBox " Ten dan toc nay da co , hay nhap ten khac", vbOKOnly + vbInformation check_Diem = True Exit Do End If rsDiem.MoveNext Loop End If End Sub Sub update(Masv, oldMon, oldHocky, oldLanthi, Monhoc, Hocky, Lanhoc, Lanthi, Diemso, Diemchu, Ngaythi, Namhoc, Ghichu) Dim sql As String get_MaMon (Monhoc) get_MaMon1 (oldMon) sql = "Update Diem Set Mon ='" + strMamon + "',Hocky='" + Hocky + "',Lanhoc=" + Lanhoc sql = sql + ",Lanthi=" + Lanthi + ",diemso=" + Diemso + ",Diemchu='" + Diemchu + "'," sql = sql + "Ngaythi ='" + Ngaythi + "',Namhoc='" + Namhoc + "',ghichu='" + Ghichu + "'" sql = sql + " where Masv = '" + Masv + "' and Mon='" + strMamon1 + "' and Hocky='" + oldHocky + "'" sql = sql + " and lanthi=" + oldLanthi Conndata.Execute sql MsgBox "Thong tin da duoc cap nhat" 'MsgBox oldMon End Sub Sub delete(Masv, Hocky, Mon) Dim sql As String get_MaMon (Mon) sql = "Delete from Diem where MaSV = '" + Masv + "' and Hocky='" + Hocky + "' AND Mon='" + strMamon + "'" Conndata.Execute sql End Sub 4.5 Codo phần tra cứu điểm thi /* Khai báo biến Dim Conndata As Connection Dim RsTraCuu As Recordset /* Code thực hiện việc tra cứu điểm thi. Private Sub Class_Initialize() connect_data End Sub Sub connect_data() Set Conndata = New Connection StrSQL = "SELECT * FROM SinhVien ORDER BY Ten" Conndata.CursorLocation = adUseClient Conndata.Open "PROVIDER = Microsoft.Jet.OLEDB.4.0;Data Source=" & _ App.Path & "\data.mdb" & ";Jet OLEDB:Database;" Set RsTraCuu = New Recordset RsTraCuu.Open StrSQL, Conndata, adOpenStatic, adLockOptimistic End Sub Sub Tracuu_Diem(tenLop, Hocky, Toantu, Diemso, newListView As ListView) Dim sql As String Dim RSView As Recordset Dim intcount intcount = 0 sql = "SELECT Sinhvien.MaSV,SinhVien.Hodem,Sinhvien.Ten,Sinhvien.Ngaysinh,Sinhvien.Gioi, Lop.TenLop, Lop.Khoahoc,Diem.Hocky," sql = sql + " diem.Lanhoc , diem.Lanthi, diem.Diemso, diem.Diemchu, diem.Ngaythi, diem.Namhoc,diem.ghichu, Monhoc.Tenmon, Monhoc.CNganh" sql = sql + " From Sinhvien, Lop, diem, Monhoc" sql = sql + " WHERE Sinhvien.Lop=Lop.Malop AND" sql = sql + " Sinhvien.Masv = diem.Masv and" sql = sql + " diem.mon = monhoc.mamon and" sql = sql + " Diemso " + Toantu + Diemso + " and Hocky ='" + Hocky + "' and Tenlop = '" + tenLop + "'" sql = sql + " Order by Sinhvien.Ten" Set RSView = New Recordset RSView.Open sql, Conndata, adOpenStatic, adLockOptimistic newListView.ListItems.Clear If RSView.RecordCount > 0 Then RSView.MoveFirst Do While Not RSView.EOF intcount = intcount + 1 With newListView.ListItems With .Add(, , intcount) .ListSubItems.Add , , RSView.Fields("MaSV") .ListSubItems.Add , , RSView.Fields("Hodem") .ListSubItems.Add , , RSView.Fields("Ten") .ListSubItems.Add , , RSView.Fields("NgaySinh") .ListSubItems.Add , , RSView.Fields("Gioi") .ListSubItems.Add , , RSView.Fields("TenLop") .ListSubItems.Add , , RSView.Fields("Khoahoc") .ListSubItems.Add , , RSView.Fields("Tenmon") .ListSubItems.Add , , RSView.Fields("Diemso") .ListSubItems.Add , , RSView.Fields("Diemchu") .ListSubItems.Add , , RSView.Fields("Ngaythi") .ListSubItems.Add , , RSView.Fields("Namhoc") .ListSubItems.Add , , RSView.Fields("Ghichu") End With End With RSView.MoveNext Loop Else MsgBox "Khong tim thay thong tin nao " End If End Sub Sub Tracuu_Ten(tenLop, Hocky, TenSV, newListView As ListView) Dim sql As String Dim RSView As Recordset Dim intcount intcount = 0 sql = "SELECT Sinhvien.MaSV,SinhVien.Hodem,Sinhvien.Ten,Sinhvien.Ngaysinh,Sinhvien.Gioi, Lop.TenLop, Lop.Khoahoc,Diem.Hocky," sql = sql + " diem.Lanhoc , diem.Lanthi, diem.Diemso, diem.Diemchu, diem.Ngaythi, diem.Namhoc,diem.ghichu, Monhoc.Tenmon, Monhoc.CNganh" sql = sql + " From Sinhvien, Lop, diem, Monhoc" sql = sql + " WHERE Sinhvien.Lop=Lop.Malop AND" sql = sql + " Sinhvien.Masv = diem.Masv and" sql = sql + " diem.mon = monhoc.mamon and" sql = sql + " Hocky ='" + Hocky + "' and Tenlop = '" + tenLop + "' and Ten ='" + TenSV + "'" sql = sql + " Order by Sinhvien.Ten" Set RSView = New Recordset RSView.Open sql, Conndata, adOpenStatic, adLockOptimistic newListView.ListItems.Clear If RSView.RecordCount > 0 Then RSView.MoveFirst Do While Not RSView.EOF intcount = intcount + 1 With newListView.ListItems With .Add(, , intcount) .ListSubItems.Add , , RSView.Fields("MaSV") .ListSubItems.Add , , RSView.Fields("Hodem") .ListSubItems.Add , , RSView.Fields("Ten") .ListSubItems.Add , , RSView.Fields("NgaySinh") .ListSubItems.Add , , RSView.Fields("Gioi") .ListSubItems.Add , , RSView.Fields("TenLop") .ListSubItems.Add , , RSView.Fields("Khoahoc") .ListSubItems.Add , , RSView.Fields("Tenmon") .ListSubItems.Add , , RSView.Fields("Diemso") .ListSubItems.Add , , RSView.Fields("Diemchu") .ListSubItems.Add , , RSView.Fields("Ngaythi") .ListSubItems.Add , , RSView.Fields("Namhoc") .ListSubItems.Add , , RSView.Fields("Ghichu") End With End With RSView.MoveNext Loop Else MsgBox "Khong tim thay thong tin nao " End If End Sub Sub Tracuu_Lop(tenLop, Hocky, newListView As ListView) Dim sql As String Dim RSView As Recordset Dim intcount intcount = 0 sql = "SELECT Sinhvien.MaSV,SinhVien.Hodem,Sinhvien.Ten,Sinhvien.Ngaysinh,Sinhvien.Gioi, Lop.TenLop, Lop.Khoahoc,Diem.Hocky," sql = sql + " diem.Lanhoc , diem.Lanthi, diem.Diemso, diem.Diemchu, diem.Ngaythi, diem.Namhoc,diem.ghichu, Monhoc.Tenmon, Monhoc.CNganh" sql = sql + " From Sinhvien, Lop, diem, Monhoc" sql = sql + " WHERE Sinhvien.Lop=Lop.Malop AND" sql = sql + " Sinhvien.Masv = diem.Masv and" sql = sql + " diem.mon = monhoc.mamon and" sql = sql + " Hocky ='" + Hocky + "' and Tenlop = '" + tenLop + "'" sql = sql + " Order by Sinhvien.Ten" Set RSView = New Recordset RSView.Open sql, Conndata, adOpenStatic, adLockOptimistic newListView.ListItems.Clear If RSView.RecordCount > 0 Then RSView.MoveFirst Do While Not RSView.EOF intcount = intcount + 1 With newListView.ListItems With .Add(, , intcount) .ListSubItems.Add , , RSView.Fields("MaSV") .ListSubItems.Add , , RSView.Fields("Hodem") .ListSubItems.Add , , RSView.Fields("Ten") .ListSubItems.Add , , RSView.Fields("NgaySinh") .ListSubItems.Add , , RSView.Fields("Gioi") .ListSubItems.Add , , RSView.Fields("TenLop") .ListSubItems.Add , , RSView.Fields("Khoahoc") .ListSubItems.Add , , RSView.Fields("Tenmon") .ListSubItems.Add , , RSView.Fields("Diemso") .ListSubItems.Add , , RSView.Fields("Diemchu") .ListSubItems.Add , , RSView.Fields("Ngaythi") .ListSubItems.Add , , RSView.Fields("Namhoc") .ListSubItems.Add , , RSView.Fields("Ghichu") End With End With RSView.MoveNext Loop Else MsgBox "Khong tim thay thong tin nao " End If End Sub Sub Tracuu_MaSV(Masv, newListView As ListView) Dim sql As String Dim RSView As Recordset Dim intcount intcount = 0 sql = "SELECT Sinhvien.MaSV,SinhVien.Hodem,Sinhvien.Ten,Sinhvien.Ngaysinh,Sinhvien.Gioi, Lop.TenLop, Lop.Khoahoc,Diem.Hocky," sql = sql + " diem.Lanhoc , diem.Lanthi, diem.Diemso, diem.Diemchu, diem.Ngaythi, diem.Namhoc,diem.ghichu, Monhoc.Tenmon, Monhoc.CNganh" sql = sql + " From Sinhvien, Lop, diem, Monhoc" sql = sql + " WHERE Sinhvien.Lop=Lop.Malop AND" sql = sql + " Sinhvien.Masv = diem.Masv and" sql = sql + " diem.mon = monhoc.mamon" sql = sql + " AND Left(UCASE(Sinhvien.MaSV)," & Len(Masv) & ") Like '" & UCase(Masv) & "'" sql = sql + " Order by Sinhvien.Ten" Set RSView = New Recordset RSView.Open sql, Conndata, adOpenStatic, adLockOptimistic newListView.ListItems.Clear If RSView.RecordCount > 0 Then RSView.MoveFirst Do While Not RSView.EOF intcount = intcount + 1 With newListView.ListItems With .Add(, , intcount) .ListSubItems.Add , , RSView.Fields("MaSV") .ListSubItems.Add , , RSView.Fields("Hodem") .ListSubItems.Add , , RSView.Fields("Ten") .ListSubItems.Add , , RSView.Fields("NgaySinh") .ListSubItems.Add , , RSView.Fields("Gioi") .ListSubItems.Add , , RSView.Fields("TenLop") .ListSubItems.Add , , RSView.Fields("Khoahoc") .ListSubItems.Add , , RSView.Fields("Tenmon") .ListSubItems.Add , , RSView.Fields("Diemso") .ListSubItems.Add , , RSView.Fields("Diemchu") .ListSubItems.Add , , RSView.Fields("Ngaythi") .ListSubItems.Add , , RSView.Fields("Namhoc") .ListSubItems.Add , , RSView.Fields("Ghichu") End With End With RSView.MoveNext Loop Else MsgBox "Khong tim thay thong tin nao " End If End Sub 4.6 Code phần tra cứu sinh viên. /*Khai báo biến Dim Conndata As Connection Dim RsTraCuu As Recordset /*Code thực hiện tra cứu hồ sơ sinh viên. Private Sub Class_Initialize() connect_data End Sub Sub connect_data() Set Conndata = New Connection StrSQL = "SELECT * FROM SinhVien ORDER BY Ten" Conndata.CursorLocation = adUseClient Conndata.Open "PROVIDER = Microsoft.Jet.OLEDB.4.0;Data Source=" & _ App.Path & "\data.mdb" & ";Jet OLEDB:Database;" Set RsTraCuu = New Recordset RsTraCuu.Open StrSQL, Conndata, adOpenStatic, adLockOptimistic ' If RsTraCuu.RecordCount > 0 Then ' RsTraCuu.MoveFirst ' End If End Sub Sub Tracuu_TenSV(Status, sValue As String, newListView As ListView) Dim sql As String Dim RSView As Recordset Dim intcount intcount = 0 Dim lenStr As Integer sql = "SELECT Sinhvien.*, Lop.TenLop, Lop.Khoahoc" sql = sql + " From Sinhvien, Lop" sql = sql + " WHERE Sinhvien.Lop=Lop.Malop" Select Case Status Case 1 sql = sql + " AND Left(UCASE(Ten)," & Len(sValue) & ") Like '" & UCase(sValue) & "'" Case 2 sql = sql + " AND Left(UCASE(TenLop)," & Len(sValue) & ") Like '" & UCase(sValue) & "'" Case 3 sql = sql + " AND Left(UCASE(Khoahoc)," & Len(sValue) & ") Like '" & UCase(sValue) & "'" Case 4 sql = sql + " AND Left(UCASE(MaSV)," & Len(sValue) & ") Like '" & UCase(sValue) & "'" End Select sql = sql + " Order by Sinhvien.Ten" Set RSView = New Recordset RSView.Open sql, Conndata, adOpenStatic, adLockOptimistic newListView.ListItems.Clear If RSView.RecordCount > 0 Then RSView.MoveFirst Do While Not RSView.EOF intcount = intcount + 1 With newListView.ListItems With .Add(, , intcount) .ListSubItems.Add , , RSView.Fields("MaSV") .ListSubItems.Add , , RSView.Fields("Hodem") .ListSubItems.Add , , RSView.Fields("Ten") .ListSubItems.Add , , RSView.Fields("NgaySinh") .ListSubItems.Add , , RSView.Fields("Gioi") .ListSubItems.Add , , RSView.Fields("TenLop") .ListSubItems.Add , , RSView.Fields("Khoahoc") .ListSubItems.Add , , RSView.Fields("Dantoc") .ListSubItems.Add , , RSView.Fields("Tongiao") .ListSubItems.Add , , RSView.Fields("Quocgia") .ListSubItems.Add , , RSView.Fields("Ghichu") End With End With RSView.MoveNext Loop Else MsgBox "Khong tim thay thong tin nao giong nhu : " + sValue End If End Sub Code phần đưa ra các báo cáo /* Khai báo biến Dim Conndata As Connection Dim RsBaocao As Recordset /* Code thực hiện tạo báo cáo Private Sub Class_Initialize() connect_data End Sub Sub connect_data() Set Conndata = New Connection StrSQL = "SELECT * FROM SinhVien ORDER BY Ten" Conndata.CursorLocation = adUseClient Conndata.Open "PROVIDER = Microsoft.Jet.OLEDB.4.0;Data Source=" & _ App.Path & "\data.mdb" & ";Jet OLEDB:Database;" Set RsBaocao = New Recordset RsBaocao.Open StrSQL, Conndata, adOpenStatic, adLockOptimistic End Sub Sub View_diemLop(tenLop, Hocky, Monhoc, newListView As ListView) Dim sql As String Dim RSView As Recordset Dim intcount intcount = 0 sql = "Select * from BangdiemLop where Tenlop ='" + tenLop + "' and Hocky='" + Hocky + "'" sql = sql + " And tenmon='" + Monhoc + "' order by ten" Set RSView = New Recordset RSView.Open sql, Conndata, adOpenStatic, adLockOptimistic newListView.ListItems.Clear If RSView.RecordCount > 0 Then RSView.MoveFirst Do While Not RSView.EOF intcount = intcount + 1 With newListView.ListItems With .Add(, , intcount) .ListSubItems.Add , , RSView.Fields("MaSV") .ListSubItems.Add , , RSView.Fields("Hodem") .ListSubItems.Add , , RSView.Fields("Ten") .ListSubItems.Add , , RSView.Fields("NgaySinh") .ListSubItems.Add , , RSView.Fields("TenLop") .ListSubItems.Add , , RSView.Fields("tenmon") .ListSubItems.Add , , RSView.Fields("diemso") .ListSubItems.Add , , RSView.Fields("diemchu") .ListSubItems.Add , , RSView.Fields("hocky") End With End With RSView.MoveNext Loop Else MsgBox "Khong tim thay thong tin nao" End If End Sub Sub view_SV(Status, sValue As String, newListView As ListView) Dim sql As String Dim RSView As Recordset Dim intcount intcount = 0 Dim lenStr As Integer sql = "SELECT * from Bangdiem " Select Case Status Case 1 sql = sql + " WHERE Left(UCASE(Masv)," & Len(sValue) & ") Like '" & UCase(sValue) & "'" Case 2 sql = sql + " WHERE Left(UCASE(Ten)," & Len(sValue) & ") Like '" & UCase(sValue) & "'" End Select sql = sql + " order by Ten" Set RSView = New Recordset RSView.Open sql, Conndata, adOpenStatic, adLockOptimistic newListView.ListItems.Clear If RSView.RecordCount > 0 Then RSView.MoveFirst Do While Not RSView.EOF intcount = intcount + 1 With newListView.ListItems With .Add(, , intcount) .ListSubItems.Add , , RSView.Fields("MaSV") .ListSubItems.Add , , RSView.Fields("Hodem") .ListSubItems.Add , , RSView.Fields("Ten") .ListSubItems.Add , , RSView.Fields("NgaySinh") .ListSubItems.Add , , RSView.Fields("TenLop") .ListSubItems.Add , , RSView.Fields("tenmon") .ListSubItems.Add , , RSView.Fields("lanthi") .ListSubItems.Add , , RSView.Fields("diemso") .ListSubItems.Add , , RSView.Fields("ngaythi") .ListSubItems.Add , , RSView.Fields("Hocky") .ListSubItems.Add , , RSView.Fields("Namhoc") .ListSubItems.Add , , RSView.Fields("Khoahoc") End With End With RSView.MoveNext Loop Else MsgBox "Khong tim thay thong tin nao giong nhu : " + sValue End If End Sub Function get_MaMon(Tenmon) Dim sql As String Dim RsMon As Recordset sql = "select Mamon from Monhoc where Tenmon='" + Tenmon + "'" Set RsMon = New Recordset RsMon.Open sql, Conndata, adOpenStatic, adLockOptimistic If (RsMon.RecordCount > 0) Then strMamon = RsMon.Fields("Mamon") End If End Function Function get_MaLop(tenLop) Dim sql As String Dim rsLop As Recordset sql = "select Malop from Lop where TenLop='" + tenLop + "'" Set rsLop = New Recordset rsLop.Open sql, Conndata, adOpenStatic, adLockOptimistic If (rsLop.RecordCount > 0) Then strMaLop = rsLop.Fields("MaLop") End If End Function Sub view_SV_TL(tenLop, tenMonhoc, Hocky, Dieukien, Diem, newListView As ListView) Dim sql As String Dim RSView As Recordset Dim intcount intcount = 0 sql = "SELECT * from ThiLai " sql = sql + " where Tenlop ='" + tenLop + "' and tenmon='" + tenMonhoc + "'" sql = sql + " and Hocky='" + Hocky + "' and Diemso " + Dieukien + Diem sql = sql + " order by Ten" Set RSView = New Recordset RSView.Open sql, Conndata, adOpenStatic, adLockOptimistic newListView.ListItems.Clear If RSView.RecordCount > 0 Then RSView.MoveFirst Do While Not RSView.EOF intcount = intcount + 1 With newListView.ListItems With .Add(, , intcount) .ListSubItems.Add , , RSView.Fields("MaSV") .ListSubItems.Add , , RSView.Fields("Hodem") .ListSubItems.Add , , RSView.Fields("Ten") .ListSubItems.Add , , RSView.Fields("NgaySinh") .ListSubItems.Add , , RSView.Fields("TenLop") .ListSubItems.Add , , RSView.Fields("tenmon") .ListSubItems.Add , , RSView.Fields("lanthi") .ListSubItems.Add , , RSView.Fields("diemso") .ListSubItems.Add , , RSView.Fields("ngaythi") .ListSubItems.Add , , RSView.Fields("hocky") End With End With RSView.MoveNext Loop Else MsgBox "Khong tim thay thong tin nao" End If End Sub

Các file đính kèm theo tài liệu này:

  • doc36597.doc
Tài liệu liên quan