Lời giới thiệu 3
Chương 1: Tìm hiểu bài toán 5
1.1. Bài toán quản lý. 6
1.1.1. Quản lý và ứng dụng tin học trong quản lý. 6
1.1.1.1. Một số khái niệm về quản lý 6
1.1.1.2. Ứng dụng tin học trong công tác quản lý 6
1.1.2. Nguyên tắc xây dựng mô hình thông tin quản lý 9
1.1.2.1. Nhu cầu tin học hóa thông tin quản lý 9
1.1.2.2. Phương án xây dựng mô hình thông tin 10
1.2. Khảo sát hệ thống 12
1.2.1. Tổng quan về hệ thống quản lý. 12
1.2.2. Chức năng và nhiệm vụ của hệ thống quản lý điểm sinh viên. 12
1.2.3. Yêu cầu của hệ thống và những khó khăn 12
1.2.4. Những yêu cầu đặt ra đối với hệ thống mới. 13
1.3. Mục đích của đề tài 13
1.4. Yêu cầu phạm vi của đề tài 14
1.4.1. Quản lý hồ sơ sinh viên: 14
1.4.2. Quản lý điểm: 14
Chương 2: Phân tích, thiết kế hệ thống và tổ chức cơ sở dữ liệu. 17
2.1. Mục đích của việc phân tích và thiết kế hệ thống 18
2.1.1. Mục đích: 18
2.1.2. Sơ đồ luồng dữ liệu: 18
2.1.3. Các tính chất của hệ thống 20
2.1.4. Các chức năng cơ bản của hệ thống: 21
2.2. Thiết kế tổng thể chương trình. 24
2.2.1. Biểu đồ luồng dữ liệu mức khung cảnh tổng quát: 24
2.2.2. Sơ đồ phân rã chức năng tổng quát 25
2.2.3. Chức năng cập nhật hồ sơ 26
2.2.4. Chức năng tra cứu 27
2.2.5. Chức năng in bảng điểm 27
2.2.6. Chức năng tổng kết 28
2.2.7. Sơ đồ thuật toán: 29
2.3. Tổ chức hệ thống cơ sở dữ liệu 33
2.3.1. Mô hình thực thể liên kết thực thể. 33
2.3.2. Thiết kế file cơ sở dữ liệu. 34
Chương 3:Tìm hiểu ngôn ngữ đề tài 36
3.1. Cơ sở dữ liệu 37
3.1.1. Khái niệm cơ bản về cơ sở dữ liệu. 37
3.1.2. Các mục tiêu thiết kế cơ sở dữ liệu: 38
3.1.3. Tiến trình thiết kế cơ sở dữ liệu. 38
3.2. Ngôn ngữ phát triển chương trình Visual Basic 6.0 40
3.2.1. Microsoft Visual Basic và các phiên bản 40
3.3.2. Tổ chức của Mirosoft Visual Basic 40
3.2.3. Lập trình trên Mirosoft Visual Basic có thể khái quát như sau. 41
3.2.4. Lập trình trên Mirosoft Visual Basic 41
3.2.5. Visual Basic và Microsoft Access. 42
3.2.6. Mối liên hệ giữa Access và Visual Basic. 43
Chương 4: Các Form trong chương trình 46
1. Form chính của chương trình 47
2. Form Danh mục lớp học 48
3. Danh mục môn học 48
4. Danh mục Sinh viên 49
5. Bảng điểm 49
Mã nguồn chương trình 50
Tài liệu tham khảo 88
88 trang |
Chia sẻ: huong.duong | Lượt xem: 1497 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Báo cáo quản lý điểm sinh viên, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
n
MSLop
Text
5
Mã số lớp học
HoTenCha
Text
30
Họ tên cha
NgheNghiepCha
Text
50
Nghề nghiệp của cha
HoTenMe
Text
30
Họ tên mẹ
NgheNghiepMe
Text
50
Nghề nghiệp của mẹ
Bảng BangDiem lưu trữ thông tin về điểm của sinh viên
Tên trường
Kiểu dữ liệu
Độ rộng
Giải thích
MSSV
Text
10
Mã số sinh viên
MSMon
Text
10
Mã số môn học
Diem1
Single
Điểm thi lần 1
Diem2
Single
Điểm thi lần 2
DiemTK
Single
Điểm tổng kết
Bảng LopHoc lưu trữ danh mục lớp học
Tên trường
Kiểu dữ liệu
Độ rộng
Giải thích
MSLop
Text
5
Mã số lớp học (Primary key)
TenLop
Text
30
Tên lớp học
KhoaHoc
Number
Integer
Khoá học
Bảng MonHoc lưu trữ danh mục môn học
Tên trường
Kiểu dữ liệu
Độ rộng
Giải thích
MSMon
Text
5
Mã số môn (Primary key)
TenMon
Text
30
Tên môn
HocKy
Number
Integer
Học kỳ
SoTrinh
Number
Integer
Số trình
Chương 3
Tìm hiểu ngôn ngữ đề tài
Trước khi đi vào phân tích thiết kế bài toán chúng tôi sẽ giới thiệu sơ qua các khái niệm về CSDL và ngôn ngữ phát triển chương trình Visual Basic 6.0
3.1. Cơ sở dữ liệu
3.1.1. Khái niệm cơ bản về cơ sở dữ liệu.
Cơ sở dữ liệu là tập hợp các dữ liệu có mối quan hệ với nhau được lưu trữ trong máy theo qui định nào đó .
Phần chương trình có thể xử lí, thay đổi dữ liệu gọi là hệ quản trị cơ sở dữ liệu. Theo nghĩa này Hệ quản trị cơ sở dữ liệu có nhiệm vụ rất quan trọng như là một bộ diễn dịch với ngôn ngữ bậc cao nhằm giúp người sử dụng có thể dùng được hệ thống mà ít nhiều không cần quan tâm đến thuật toán chi tiết hoặc biểu diễn dữ liệu trong máy.
* Định nghĩa quan hệ: Gọi R = {A1,...,An} là tập hợp hữu hạn của các thuộc tính , mỗi thuộc tính Ai với i=1,...,n có miền giá trị tương ứng là dom (Ai ). Quan hệ trên tập thuộc tính R = {A1,...,An} là tập con của tích Đề - Các
r Í dom (A1) x...x dom (An)
Miền (domain): là một tập các giá trị .Ví dụ : tập các số nguyên, tập hai số.
Mỗi hàng của quan hệ gọi là bộ (tuples).
Các cột của quan hệ gọi là các thuộc tính (attributes).
Định nghĩa khoá (Key): Khoá của quan hệ r trên tập thuộc tính R = {A1,...,An}là tập con K Í R sao cho bất kỳ hai bộ khác nhau t1, t2 ẻ r luôn thoả t1(K) ạ t2(K), bất kỳ tập hợp con thực sự K* è K nào đó đều không có tính chất đó. Tập hợp K là các siêu khoá (superkey) của quan hệ r nếu K là một khoá của quan hệ r.
3.1.2. Các mục tiêu thiết kế cơ sở dữ liệu:
Chiến lược của việc thiết kế cơ sở dữ liệu là hoàn thành các mục tiêu sau đây:
- Đáp ứng các nhu cầu về thông tin của bạn hoặc của tổ chức một cách kịp thời, nhất quán về kinh tế.
- Loại bỏ hoặc giảm thiểu khả năng trùng lặp nội dung cơ sở dữ liệu trong tổ chức.
- Cho phép nhanh chóng truy cập các thành phần thông tin cụ thể trong cơ sở dữ liệu mà từng phạm trù người dùng yêu cầu.
- Chừa chỗ cho phần mở rộng cơ sở dữ liệu để thích ứng với các nhu cầu của một tổ chức đang tăng trưởng, như bổ sung các qui trình và sản phẩm mới, tuân theo các yêu cầu báo cáo của chính quyền, và liên hợp các ứng dụng mới về hỗ trợ ra quyết định và xử lí giao dịch.
- Duy trì tính nguyên vẹn của cơ sở dữ liệu để nó chỉ chứa các thông tin đã được hợp lệ hoá, kiểm toán được.
- Ngăn cản những người lạ truy cập cơ sở dữ liệu.
- Chỉ cho phép truy cập những thành phần thông tin cơ sở dữ liệu mà từng người hay phạm trù riêng lẻ cần đến trong quá trình công việc. Có thể cho phép hoặc từ chối người dùng xem dữ liệu trong các bảng cụ thể của cơ sở dữ liệu.
- Chỉ cho phép những người có quyền mới được bổ sung hay hiệu chỉnh thông tin trong cơ sở dữ liệu.
- Dễ dàng tạo các ứng dụng nhập liệu, hiệu chỉnh, hiển thị và báo cáo, phục vụ hiệu quả các nhu cầu của người dùng cơ sở dữ liệu.
3.1.3. Tiến trình thiết kế cơ sở dữ liệu.
Tiến trình thiết kế một cơ sở dữ liệu quan hệ bao gồm các bước sau:
Định danh các đối tượng ( nguồn dữ liệu) mà hệ cơ sở dữ liệu sẽ hiển thị.
- Phát hiện các phần kết hợp giữa các đối tượng ( Khi có nhiều đối tượng).
- Xác định các tính chất quan trọng và các kiểu ứng xử của các đối tượng.
- Xây dựng một từ điển dữ liệu mở đầu để định nghĩa các bảng tạo nên cơ sở dữ liệu.
- Chỉ định các mối quan hệ giữa các bảng cơ sở dữ liệu dựa trên các phần kết hợp các đối tượng dữ liệu chứa trong bảng và liên hợp thông tin này trong từ điển dữ liệu.
- Thiết lập các kiểu cập nhật và giao dịch tạo và sửa đổi dữ liệu trong các bảng, kể cả những yêu cầu cấp cần thiết về tính nguyên vẹn dữ liệu.
- Xác định cách dùng các chỉ mục để tăng tốc các tác vụ bộ hỏi mà không làm chậm quá đáng việc bổ sung dữ liệu vào các bảng hoặc tốn quá nhiều dung lượng đĩa.
- Quyết định người có quyền truy cập và sửa đổi dữ liệu trong từng bảng (tính bảo mật dữ liệu), và nếu cần, thay đổi cấu trúc các bảng để đảm bảo mật dữ liệu.
Sưu liệu thiết kế của cơ sở dữ liệu như một toàn thể; hoàn tất các từ điển dữ liệu cho cơ sở dữ liệu như một toàn thể và từng bảng mà nó chứa; viết các thủ tục để bảo trì cơ sở dữ liệu, kể cả khả năng phục hồi và lưu dự phòng tập tin.
3.2. Ngôn ngữ phát triển chương trình Visual Basic 6.0
3.2.1. Microsoft Visual Basic và các phiên bản
Microsoft Visual Basic là một ngôn ngữ lập trình được hãng Microsoft phát triển .Visual Basic gắn liền với khái niệm lập trình trực quan, nghĩa là khi thiết kế chương trình bạn nhìn ngay thấy ngay kết quả qua từng thao tác và giao diện khi chương trình thực hiện. Đây là thuận lợi lớn so với ngôn ngữ lập trình khác, Visual Basic cho phép bạn chỉnh sửa đơn giản, nhanh chóng màu sắc, kích thước, hình dáng của các đối tượng có mặt trong ứng dụng. Về mặt công nghệ lập trình cũng như tổ chức môi trường làm việc, phiên bản 5.0 và 6.0 có nhiều ưu điểm hơn. Mặt khác, phiên bản 5.0 32 bit và 6.0 được phép xây dựng các ứng dụng 32 bit với môi trường làm việc là Microsoft Windows 95 -> 2000. Cụ thể:
- Version 5.0: Phiên bản 32 bit, phiên bản tương thích hoàn toàn trên môi trường Windows. Hệ thống thư viện sử dụng các DLL ( Dynamic Link Library ) và các thư viện OLE theo công nghệ OCX. Phiên bản 32 tỏ ra thực sự có ưu điểm trong môi trường Windows 95 & 97 nếu cấu hình máy tính của người sử dụng được các nhu cầu sử dụng cao.
- Version 6.0: Là phiên bản mới hiện nay chạy trên môi trường Windows 9.X. Hệ thống sử dụng thư viện DLL và các thư viện OLE theo công nghệ OCX, nhu cầu đòi hỏi cấu hình của máy tính phải đủ mạnh ( máy tính từ 586 trở lên ).
3.3.2. Tổ chức của Mirosoft Visual Basic
- Project: Là sản phẩm lập trình trong môi trường Microsoft được tổ chức thành một Project bao gồm:
- MDI form: Một Project có thể có một màn hình làm theo chế độ Multi Document Interfaccce.
Form: Các màn hình làm việc của Project.
Form: Các màn hình làm việc của Project.
- Module: Được sử dụng để khai báo các Sub, Function, Type, Constant tổng quát trong Proect.
Class Module: khai báo đối tượng trong Project.
Controls:
Các đối tượng được sử dụng trong form Prọect là các thư viện kiểu VBX hoặc OCX. Mỗi đối tượng được đặc trưng Properties và các Events. Các đối tượng của Microsoft Visual Basic có thể phân chia thành các nhóm sau:
Các control chuẩn của hệ điều hành Windows.
- Các đối tượng do Microsoft cung cấp (Data control, Rich Text Control...).
Các đối tượng do hãng phần mền thứ ba hỗ trợ.
3.2.3. Lập trình trên Mirosoft Visual Basic có thể khái quát như sau.
Xây dựng Project trên cơ sở phân tích hệ thống bài toán.
Thiết kế các đối tượng.
- Điều khiển tính chất các đối tượng và viết mã lệnh xử lí trên các sự kiện và các đối tượng.
3.2.4. Lập trình trên Mirosoft Visual Basic
Mirosoft Visual Basic hỗ trợ sử dụng Query trong chương trình của mình. Do vậy việc xử lí dữ liệu có nhiều thuận lợi, đặc biệt CSDL của Access. Trong khi viết chương trình có một số vấn đề quan trọng cần chú ý đó là lỗi và xử lí lỗi.
Công cụ gỡ rối: Khi chạy thử chương trình có thể sử dụng công cụ gỡ rối khá mạnh của Mirosoft Visual Basic ( Debug ). Công cụ này cho phép hiệu chỉnh phần câu lệnh ngay trong khi thực hiện chương tình đối với các lôĩ không quan trọng.
Để thiết kế cơ sở dữ liệu có thể sử dụng một trong các công cụ sau:
ư. Sử dụng phiên bản Micosofft Access tương ứng với phiên bản của Mirosoft Visual Basis.
ư. Sử dụng chương trình DataManager được cung cấp kèm theo Visual Basic
- Thiết kế báo cáo: Để thiết kế mẫu biểu báo cáo có thể sử dụng một trong các công cụ sau:
- Sử dụng phiên bản DataEnviroment tương ứng trong Microsoft Visual Basic
Sử dụng DataReport được cung cấp kèm theo.
3.2.5. Visual Basic và Microsoft Access.
Visual Basic là ngôn ngữ lập trình hướng sự kiện có thể giải quyết được mọi bài toán. Visual Basic cũng giải quyết đựơc các bài toán quản lí mà các ngôn ngữ khác không có. Để phát huy hết khả năng Visual Basic hay Acces chúng ta phải hiểu thật rõ cơ chế xử lí dữ liệu ( Jet Engine ), Jet Engine cho phép làm việc với nhiều dang thức dữ liệu khác nhau và cung cấp giao diện lập trình hướng đối tượng để làm viêc với CSDL. JetEngin là thành phần cốt lõi của hệ quản trị CSDL Access do đó có thể trở thành một nhà lập trình chuyên nghiệp với Visual Basis thì điều đầu tiên là Jet Engine.
Tuy nhiên mỗi ngôn ngữ lập trình có một hệ thống mạnh riêng của nó, ở lĩnh vực này nó không đáp ứng được, không thích hợp được nhưng ở lĩnh vực khác thì lại làm được. Ví dụ như Access có công cụ thiết kế báo biểu mạnh hơn nhiều so với Visual Basis, trong Visual Basic có bộ thiết kế báo biểu không do Microsoft phát triển mà lại do hãng Seagate, và được đưa vào như một OLE Custom Control độc lập.
Vì vậy tuỳ theo yêu cầu của một bài toán cụ thể mà người lập trình chọn một ngôn ngữ thích hợp để giải quyết chúng. Visual Basic 6.0 cho phép người lập trình nhúng các đối tượng hay sử dụng các hàm thư viện DLL một các dễ dàng.
Visual Basis 2.0 đã nhanh hơn, mạnh hơn và còn sử dụng hơn Visual Basic 1.0. Visual Basic 3.0 tăng thêm những cách thức đơn giản để điều khiển các cơ sở dữ liệu mạnh nhất sẵn có. Visual Basic 4.0 hỗ trợ sự phát triển 32 - bit và bắt đầu tiến trình chuyển Visual Basic thành một ngôn ngữ lập trình hướng đối tượng đầy đủ. Phiên bản 5.0 và 6.0 có nhiều tính năng mạnh hơn, đặc biệt là tốc độ gia tăng đáng kể (khoảng 20% nhanh hơn so với Visual Basic 4.0) và những đặc tính liên quan đến Web. Có 3 khía cạnh khẳng định Visual Basic 6.0 thực sự là một ngôn ngữ lập trình đa năng: Thời gian nhập biểu (Form) và điều khiển (control) nhanh hơn hẳn Visual Basic 4.0 tốc độ truy cập dữ liệu nhanh, công nghệ tối ưu của Mirosoft Visual C++ được dùng trong Visual Basic 5.0 và 6.0, phiên bản Visual Basic 6.0 có thêm một số tính năng ngôn ngữ mong muốn, tăng cường cho Internet và các tính năng cơ sở dữ liệu mạnh hơn.
Ngoài ra Visual Basic 5.0 và 6.0 còn có công cụ trợ giúp thông minh, công cụ gỡ rối cao, các công cụ tạo lập ActiveX, cho phép truy cập nhiều nguồn dữ liệu khác nhau. Visual Basic chuyển ứng dụng sang môi trường Web được thực hiện dễ dàng và nhanh chóng hơn.
3.2.6. Mối liên hệ giữa Access và Visual Basic.
Microsoft hiện đang làm chủ các hệ Quản trị CSDL: Foxpro, Access, SQL Server.
Access do Microsoft phát triển từ đầu và trở thành một trong những sản phẩm thành công nhất. Visual Basic dùng kết nối database engine của Access để xử lí dữ liệu, Visual Basic không phải là một hệ quản trị dữ liệu mà là một ngôn ngữ vạn năng. Với Visual Basic ta có thể phát triển nhiều ứng dụng khác nhau.
Nó bao gồm cả trình biên dịch, cho phép nhà phát triển sinh ra các tập tin .EXE chạy độc lập ( dĩ nhiễn cần có thêm các thư viện DLL, VBX, OCX ) còn Access hoàn toàn là một hệ quản trị CSDL. Access không có trình biên dịch như Visual Basic. Tuy nhiên Microsoft cung cấp thêm bộ Access Run time để chạy các ứng dụng mà không cần cài đặt Access.
Cách thiết kế trực quan và cách lập trình hướng sự kiện được áp dụng trong Access và Visual Basic. Access tỏ ra mạnh hơn khi cho phép quản lí các sự kiện tinh tế hơn chẳng hạn như Text Box control, Access cho phép xử lí các cự kiện liên quan đến sự thay đổi dữ liệu: OnChange, BeforeUpdate, AfterUpdate trong khi Visual Basic 4.0 chỉ có thể kiểm tra sự kiện Change. Vì vậy Access cho phép phát triển các chương trình cập nhật dữ liệu thông minh hơn do kiểm soát được dữ liệu nhập một cách tinh tế.
Ban đầu Access đơn giản chỉ là quản trị CSDL quan hệ ( Relation Database Management System ) dùng trong văn phòng ( nằm trong bộ Microsft Professional Word, Exccel, Power Point ) do đó Microsft đặc biệt chú trọng đến người sử dụng cuối (end user) hơn là nhà phát triển. Điều này làm cho công cụ hỗ trợ thiết kế ( giao diện thiết kế, các Wizard cho phép tự động hoá các quá trình thủ công trong quá trình thiết kế form, table, query ) của Access tỏ ra rất mạnh, hơn hẳn Visual Basic.
Chẳng hạn nhiều lập trình viên kinh nghiệm khi viết các câu lệnh SQL trong Visual Basic thường dùng kềm bộ thiết kế Query trong Access để sinh ra trong câu lệnh SQL một cách dễ dàng.
Access Basic có những khác biệt nhất định so với Visual Basic. Chỉ đến phiên bản Access 7.0. Visual Basis về sau và Access mới dùng chung ngôn ngữ lập trình mà Microsft gọi là VBA - Visual Basis for Application.
Ta thấy Access và Visual Basic khác nhau ở cách chế tạo ra các ứng dụng so với các công cụ thiết kế khác nhau nhưng thành phần xử lí CSDL thì có nhiều điểm tương đồng vì cùng sử dụng Jet Engine.
Visual Basic cho phép biện dịch các ứng dụng thành tập tin EXE, trong khi Access ta phỉ phân phối luôn cả tài nguyên thiết kế. Khái ngườiệm CSDL trong Access bao gồm cả phần dữ liệu (các bảng) và phần ứng dụng ( query, form, table, report, macro, module ), trong khi đối với các hệ khác, CSDL chỉ bao gồm phần dữ liệu. Chiến lược bảo mật tài nguyên thiết kế phải được đặt lên hàn đầu khi chọn Access làm công cụ phát triển ứng dụng.
Hệ thống giao diện hỗ trợ thiết kế ( đặc biệt trong Access ) cũng khá rắc rối khiến người chưa có kinh nghiệm hay lẫn lộn giữa các thức dành cho người dùng cuối và những thứ dành cho người lập trình, thứ chỉ dùng cho thiết kế và thứ có thể mang vào ứng dụng.
Chương 4
Các Form trong
chương trình
1. Form chính của chương trình
2. Form Danh mục lớp học
3. Danh mục môn học
4. Danh mục Sinh viên
5. Bảng điểm
Mã nguồn chương trình
1.FRMABOUT:
Option Explicit
' Reg Key Security Options...
Const READ_CONTROL = &H20000
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_CREATE_LINK = &H20
Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _
KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _
KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
' Reg Key ROOT Types...
Const HKEY_LOCAL_MACHINE = &H80000002
Const ERROR_SUCCESS = 0
Const REG_SZ = 1 ' Unicode nul terminated string
Const REG_DWORD = 4 ' 32-bit number
Const gREGKEYSYSINFOLOC = "SOFTWARE\Microsoft\Shared Tools Location"
Const gREGVALSYSINFOLOC = "MSINFO"
Const gREGKEYSYSINFO = "SOFTWARE\Microsoft\Shared Tools\MSINFO"
Const gREGVALSYSINFO = "PATH"
Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Private Sub cmdSysInfo_Click()
Call StartSysInfo
End Sub
Private Sub cmdOK_Click()
Unload Me
End Sub
Public Sub StartSysInfo()
On Error GoTo SysInfoErr
Dim rc As Long
Dim SysInfoPath As String
' Try To Get System Info Program Path\Name From Registry...
If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath) Then
' Try To Get System Info Program Path Only From Registry...
ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath) Then
' Validate Existance Of Known 32 Bit File Version
If (Dir(SysInfoPath & "\MSINFO32.EXE") "") Then
SysInfoPath = SysInfoPath & "\MSINFO32.EXE"
' Error - File Can Not Be Found...
Else
GoTo SysInfoErr
End If
' Error - Registry Entry Can Not Be Found...
Else
GoTo SysInfoErr
End If
Call Shell(SysInfoPath, vbNormalFocus)
Exit Sub
SysInfoErr:
MsgBox "System Information Is Unavailable At This Time", vbOKOnly
End Sub
Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean
Dim i As Long ' Loop Counter
Dim rc As Long ' Return Code
Dim hKey As Long ' Handle To An Open Registry Key
Dim hDepth As Long '
Dim KeyValType As Long ' Data Type Of A Registry Key
Dim tmpVal As String ' Tempory Storage For A Registry Key Value
Dim KeyValSize As Long ' Size Of Registry Key Variable
'------------------------------------------------------------
' Open RegKey Under KeyRoot {HKEY_LOCAL_MACHINE...}
'------------------------------------------------------------
rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' Open Registry Key
If (rc ERROR_SUCCESS) Then GoTo GetKeyError ' Handle Error...
tmpVal = String$(1024, 0) ' Allocate Variable Space
KeyValSize = 1024 ' Mark Variable Size
'------------------------------------------------------------
' Retrieve Registry Key Value...
'------------------------------------------------------------
rc = RegQueryValueEx(hKey, SubKeyRef, 0, _
KeyValType, tmpVal, KeyValSize) ' Get/Create Key Value
If (rc ERROR_SUCCESS) Then GoTo GetKeyError ' Handle Errors
If (Asc(Mid(tmpVal, KeyValSize, 1)) = 0) Then ' Win95 Adds Null Terminated String...
tmpVal = Left(tmpVal, KeyValSize - 1) ' Null Found, Extract From String
Else ' WinNT Does NOT Null Terminate String...
tmpVal = Left(tmpVal, KeyValSize) ' Null Not Found, Extract String Only
End If
'------------------------------------------------------------
' Determine Key Value Type For Conversion...
'------------------------------------------------------------
Select Case KeyValType ' Search Data Types...
Case REG_SZ ' String Registry Key Data Type
KeyVal = tmpVal ' Copy String Value
Case REG_DWORD ' Double Word Registry Key Data Type
For i = Len(tmpVal) To 1 Step -1 ' Convert Each Bit
KeyVal = KeyVal + Hex(Asc(Mid(tmpVal, i, 1))) ' Build Value Char. By Char.
Next
KeyVal = Format$("&h" + KeyVal) ' Convert Double Word To String
End Select
GetKeyValue = True ' Return Success
rc = RegCloseKey(hKey) ' Close Registry Key
Exit Function ' Exit
GetKeyError: ' Cleanup After An Error Has Occured...
KeyVal = "" ' Set Return Val To Empty String
GetKeyValue = False ' Return Failure
rc = RegCloseKey(hKey) ' Close Registry Key
End Function
Private Sub lblDescription_Click()
End Sub
Private Sub lblDisclaimer_Click()
End Sub
2.FRMADDLH:
Option Explicit
Private Sub cmdExit_Click()
Unload Me
End Sub
Private Sub cmdOK_Click()
If Trim(txtName.Text) = "" Or Trim(txtKhoaHoc.Text) = "" Or Trim(txtId.Text) = "" Then
MsgBox "Thông tin về lớp học cần được nhập đầy đủ.", vbInformation, "Thông báo"
Exit Sub
End If
If IsNumeric(txtKhoaHoc.Text) = False Then
MsgBox "Khoá học cần được nhập theo dạng số.", vbInformation, "Thông báo"
Exit Sub
End If
txtKhoaHoc.Text = CInt(txtKhoaHoc.Text)
If v_Add = True Then
If gFTenLop(txtId.Text) = "" Then
gDbe.BeginTrans
gSql = "Insert into LopHoc (MSLop,TenLop,KhoaHoc) " & _
" Values ('" & UCase(txtId.Text) & "', '" & txtName.Text & "', " & Trim(txtKhoaHoc.Text) & ")"
gDb.Execute gSql
gDbe.CommitTrans
Call s_ClearText
FrmLopHoc.Adodc1.Refresh
FrmLopHoc.TDBGrid1.Refresh
Unload Me
Else
MsgBox "Bạn nhập trùng mã số lớp học.", vbCritical, "Error"
txtId.SetFocus
Exit Sub
End If
Else
gDbe.BeginTrans
gSql = "Update LopHoc Set TenLop='" & txtName.Text & "', KhoaHoc = " & Trim(txtKhoaHoc.Text) & " " & _
"Where MSLop='" & v_IdEdit & "'"
gDb.Execute gSql
gDbe.CommitTrans
DoEvents
FrmLopHoc.Adodc1.Refresh
FrmLopHoc.TDBGrid1.Refresh
Unload Me
End If
End Sub
Private Sub Form_Load()
If v_Add = True Then
txtId.Enabled = True
Else
txtId.Enabled = False
txtId.Text = v_IdEdit
txtName.Text = gFTenLop(v_IdEdit)
txtKhoaHoc.Text = gKhoaHoc
End If
End Sub
Private Sub s_ClearText()
txtId.Text = ""
txtName.Text = ""
txtKhoaHoc.Text = ""
End Sub
3.FRMADDMH:
Option Explicit
Private Sub cmdExit_Click()
Unload Me
End Sub
Private Sub cmdOK_Click()
If Trim(txtName.Text) = "" Or Trim(txtHocKy.Text) = "" Or Trim(txtId.Text) = "" Or Trim(txtSotrinh.Text) = "" Then
MsgBox "Thông tin về môn học cần được nhập đầy đủ.", vbInformation, "Thông báo"
Exit Sub
End If
If IsNumeric(txtHocKy.Text) = False Or IsNumeric(txtSotrinh.Text) = False Then
MsgBox "Học kỳ, Số trình cần được nhập theo dạng số.", vbInformation, "Thông báo"
Exit Sub
End If
txtHocKy.Text = CInt(txtHocKy.Text)
txtSotrinh.Text = CInt(txtSotrinh.Text)
If v_Add = True Then
If gFTenMon(txtId.Text) = "" Then
gDbe.BeginTrans
gSql = "Insert into MonHoc (MSMon,TenMon,HocKy,SoTrinh) " & _
" Values ('" & UCase(txtId.Text) & "', '" & txtName.Text & "', " & Trim(txtHocKy.Text) & ", " & Trim(txtSotrinh.Text) & ")"
gDb.Execute gSql
gDbe.CommitTrans
Call s_ClearText
FrmMonHoc.Adodc1.Refresh
FrmMonHoc.TDBGrid1.Refresh
Unload Me
Else
MsgBox "Bạn nhập trùng mã số môn học.", vbCritical, "Error"
txtId.SetFocus
Exit Sub
End If
Else
gDbe.BeginTrans
gSql = "Update MonHoc Set TenMon='" & txtName.Text & "', HocKy = " & Trim(txtHocKy.Text) & ", SoTrinh = " & Trim(txtSotrinh.Text) & " " & _
"Where MSMon='" & v_IdEdit & "'"
gDb.Execute gSql
gDbe.CommitTrans
DoEvents
FrmMonHoc.Adodc1.Refresh
FrmMonHoc.TDBGrid1.Refresh
Unload Me
End If
End Sub
Private Sub Form_Load()
Dim rst As Recordset
If v_Add = True Then
txtId.Enabled = True
Else
txtId.Enabled = False
txtId.Text = v_IdEdit
Set rst = gDb.OpenRecordset("Select * From MonHoc Where MSMon='" & v_IdEdit & "'")
If rst.EOF = False Or rst.BOF = False Then
rst.MoveFirst
txtName.Text = rst!TenMon
txtHocKy.Text = rst!HocKy
txtSotrinh.Text = rst!SoTrinh
End If
rst.Close
End If
End Sub
Private Sub s_ClearText()
txtId.Text = ""
txtName.Text = ""
txtHocKy.Text = ""
txtSotrinh.Text = ""
End Sub
4.FRMBANGDIEM:
Option Explicit
Private Sub CmChapNhan_Click()
On Error GoTo Err_
If Adodc1.Recordset.EOF = False Then
Adodc1.Recordset.MoveNext
End If
gDbe.BeginTrans
gSql = "Delete From BangDiem Where BangDiem.MSMon = '" & gMSMon & _
"' And BangDiem.MSSV In (Select Distinct MSSV From BangDiemTam)"
gDb.Execute gSql
gSql = "Insert Into BangDiem (MSSV, Diem1, Diem2) " & _
"Select MSSV, Diem1, Diem2 From BangDiemTam"
gDb.Execute gSql
gSql = "Update BangDiem Set MSMon = '" & gMSMon & "' Where IsNull(MSMon)"
gDb.Execute gSql
gDb.Execute "Update BangDiem Set Diem2 = Null Where Diem1>=5"
gDbe.CommitTrans
Unload Me
Exit Sub
Err_:
MsgBox Err.Number & " - " & Err.Description, vbCritical, "Error"
gDbe.Rollback
End Sub
Private Sub CmHuyBo_Click()
Unload Me
End Sub
Private Sub Form_Activate()
If Adodc1.Recordset.EOF = True And Adodc1.Recordset.BOF = True Then
MsgBox "Không tồn tại bản ghi", vbInformation, "Thông báo"
'Unload Me
End If
End Sub
Private Sub Form_Load()
With Adodc1
.ConnectionString = gConn.ConnectionString
.CommandType = adCmdTable
.CursorLocation = adUseClient
.RecordSource = "BangDiemTam"
.Refresh
End With
Select Case gForm
Case 2 ' Nhập điểm thi lần 1
TDBGrid1.Columns(3).Visible = False
Me.Caption = "Nhập điểm thi lần 1 của môn: " & gMSMon & " - " & gFTenMon(gMSMon)
Case 3 ' Nhập điểm thi lần 2
TDBGrid1.Columns(2).Visible = False
Me.Caption = "Nhập điểm thi lần 2 của môn: " & gMSMon & " - " & gFTenMon(gMSMon)
End Select
With TDBGrid1
.Width = .Width - .Columns(3).Width
FrmBangDiem.Width = FrmBangDiem.Width - .Columns(3).Width
CmChapNhan.Left = CmChapNhan.Left - (.Columns(3).Width \ 2)
CmHuyBo.Left = CmHuyBo.Left - (.Columns(3).Width \ 2)
End With
End Sub
Private Sub OpDiem_Click()
With Adodc1
.ConnectionString = gConn.ConnectionString
.CommandType = adCmdText
.CursorLocation = adUseClient
If gForm = 2 Then
.RecordSource = "Select * From BangDiemTam Order by Diem1 Desc"
ElseIf gForm = 3 Then
.RecordSource = "Select * From BangDiemTam Order by Diem2 Desc"
End If
.Refresh
End With
End Sub
Private Sub OpHoTen_Click()
With Adodc1
.ConnectionString = gConn.ConnectionString
.CommandType = adCmdText
.CursorLocation = adUseClient
.RecordSource = "Select * From BangDiemTam Order by HoTen"
.Refresh
End With
End Sub
Private Sub OpMSSV_Click()
With Adodc1
.ConnectionString = gConn.ConnectionString
.CommandType = adCmdText
.CursorLocation = adUseClient
.RecordSource = "Select * From BangDiemTam Order by MSSV"
.Refresh
End With
End Sub
Private Sub TDBGrid1_Click()
End Sub
5.FRMBANGDIEMSINHVIEN:
Option Explicit
Private Sub cm
Các file đính kèm theo tài liệu này:
- 37022.doc