Đề tài Báo cáo quản lý điểm sinh viên

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

 

doc88 trang | Chia sẻ: huong.duong | Lượt xem: 1490 | Lượt tải: 1download
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:

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