Đâ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.
87 trang |
Chia sẻ: oanh_nt | Lượt xem: 1460 | Lượt tải: 1
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:
- 36597.doc