Ngoài ra hệ thống quản lý thực tập còn thêm các thông tin khác về sinh viên, về lớp, bộ môn, khóa, giảng viên hướng dẫn, nhóm… - Việc quản lý thông tin thực tập của sinh viên CĐ Tin như
GIỚI THIỆU VỀ MÔI TRƯỜNG LÀM VIỆC MICROSOFT
Tổng quan về C#
C# là một ngôn ngữ lập trình không thể tách rời khỏi “bộ khung NET”, luôn đồng hành và tích hợp chặt chẽ với nền tảng này Là một trình biên dịch hướng NET, tất cả mã C# đều chạy trên môi trường NET Framework, đảm bảo tính tương thích cao và hoạt động ổn định Chính vì vậy, việc hiểu rõ mối liên hệ giữa C# và NET Framework là yếu tố quan trọng đối với các nhà phát triển phần mềm muốn tối ưu hóa hiệu suất và khả năng mở rộng của ứng dụng.
Cấu trúc và các lập luận C# được phản ánh các phương pháp luận của Net ngầm bên dưới
Trong nhiều trường hợp, các đặc trưng của C# thậm chí được quyết định dựa vào đặc trưng của Net, hoặc thư viện lớp cơ sở của Net
Chính bởi tầm quan trọng của Net, nên chúng ta cần phải biết sơ qua về Net trước khi đi vào ngôn ngữ C#
C# là một ngôn ngữ lập trình mới, và được biết đến với 2 lời chào:
Nó được thiết kế đặc biệt để hoạt động tối ưu với Microsoft’s NET Framework, một nền tảng mạnh mẽ hỗ trợ phát triển, triển khai, hiện thực hóa và phân phối các ứng dụng một cách hiệu quả.
Nó là một ngôn ngữ hoàn toàn hướng đối tượng được thiết kế dựa trên kinh nghiệm của ác ngôn ngữ hướng đối tượng khác
C# là một ngôn ngữ lập trình độc lập, được thiết kế để tạo ra mã đích trong môi trường NET nhưng không phải là phần mềm của NET Do đó, C# có những đặc trưng riêng biệt; một số tính năng của NET không được hỗ trợ trong C#, trong khi một số đặc trưng của C# như quá tải toán tử lại không có trong NET.
Tạo các ứng dụng Net bằng C#
C# có thể được sử dụng để tạo các ứng dụng console thuần văn bản chạy trên cửa sổ DOS, thường được dùng để kiểm tra thư viện lớp hoặc cho các tiến trình daemon trên Unix/Linux Ngoài ra, C# còn phù hợp để phát triển các ứng dụng dựa trên công nghệ NET, mở ra nhiều khả năng linh hoạt trong xây dựng phần mềm Các kiểu ứng dụng khác nhau có thể tạo ra bằng C# bao gồm ứng dụng console, ứng dụng Windows, ứng dụng web ASP.NET, và các dịch vụ nền, đáp ứng đa dạng yêu cầu của phát triển phần mềm hiện đại.
1) Tạo các ứng dụng ASP.NET
Các đặc tính của ASP.NET
- ASP là một công nghệ của Microsoft dùng để tạo các trang web có nội dung động
ASP.NET là phiên bản cải tiến của ASP, khắc phục nhiều nhược điểm của phiên bản cũ Nó không chỉ thay thế ASP mà còn cho phép các trang ASP.NET và ứng dụng ASP có thể hoạt động cùng nhau trên cùng một máy chủ Bạn hoàn toàn có thể lập trình ASP.NET bằng ngôn ngữ C#, mang lại sự linh hoạt và hiệu quả trong phát triển ứng dụng web.
- Các trang ASP.NET là thực chất là các trang có cấu trúc
- Một điểm mạnh khác là các trang ASP.Net có thể được tạ trong môi trường VS.NET
ASP.NET's code-behind giúp bạn dễ dàng cấu trúc một trang web rõ ràng và hiệu quả hơn Công nghệ này cho phép tách biệt các chức năng server-side của trang thành một lớp riêng biệt, sau đó biên dịch lớp đó thành một DLL và đặt trong thư mục dưới phần HTML Điều này giúp nâng cao khả năng bảo trì và tối ưu hóa hiệu suất của trang web ASP.NET.
- ASP.NET có khả năng tăng cường thực thi
VS.NET cung cấp Web Forms giúp dễ dàng tạo các trang web có cấu trúc rõ ràng và trực quan Các Web Forms cho phép phát triển các trang ASP.NET sinh động, tương tự như cách mà VB6 hoặc C++ Builder đã hỗ trợ xây dựng các ứng dụng Windows.
- Bạn có thể dùng C# hay VB.NET để mở rộng hộp công cụ web form
Việc tạo một server-side control mới đơn giản là thực thi lớp NET System Web UI Webcontrols WebControl
Web Services trong NET là các trang ASP.NET định dạng XML để phục vụ các yêu cầu từ client thay vì HTML, giúp tối ưu hóa giao tiếp dữ liệu Các trang này đi kèm với code-behind DLL chứa các lớp xuất phát từ WebService, giúp quản lý và mở rộng dễ dàng Visual Studio.NET cung cấp công cụ hỗ trợ phát triển Web Service một cách thuận tiện, giúp tăng hiệu suất và đơn giản hóa quá trình lập trình.
Mặc dù Web Forms và Windows Forms được phát triển dựa trên cùng một nền tảng, chúng sử dụng các loại controls khác nhau để xây dựng giao diện người dùng Web Forms sử dụng Web Controls phù hợp với môi trường web, còn Windows Forms dùng Windows Controls dành cho ứng dụng desktop Việc lựa chọn controls phù hợp giúp tối ưu hóa hiệu suất và trải nghiệm người dùng cho từng nền tảng.
Windows Control là một ActiveX control được biên dịch thành DLL để cài đặt trên máy khách Ngay cả khi hoạt động trong môi trường Windows, ActiveX control vẫn cần được đóng gói thành dạng DLL để dễ dàng tích hợp và triển khai Ngoài ra, NET SDK cung cấp công cụ tạo vỏ bọc cho các ActiveX control, giúp chúng có thể dễ dàng tích hợp trong Windows Forms, nâng cao khả năng tùy biến và sử dụng trong các ứng dụng Windows.
Giống trường hợp này các Web Control, Windows Control được tạo thành từ một lớp khác System.Windows.Forms.Control
Windows Service là một chương trình chạy nền trên hệ điều hành Windows NT/2000/XP, không hỗ trợ trên Windows 9x, giúp duy trì hoạt động liên tục mà không cần sự can thiệp của người dùng Các dịch vụ này rất hữu ích cho các ứng dụng yêu cầu hoạt động liên tục và phản hồi các sự kiện tự động, chẳng hạn như World Wide Web Service trên các máy chủ web luôn sẵn sàng lắng nghe yêu cầu từ trình duyệt của khách hàng.
Việc viết dịch vụ trong C# trở nên dễ dàng nhờ vào thư viện lớp cơ sở NET Framework nằm trong namespace System.ServiceProcess, chuyên dụng để xử lý các tác vụ boilerplate liên quan đến dịch vụ Ngoài ra, Visual Studio NET hỗ trợ tạo các dự án Windows Service với mã nguồn ban đầu sẵn có, giúp lập trình viên bắt đầu phát triển dịch vụ một cách nhanh chóng Trong chương 22, chúng ta sẽ tìm hiểu cách viết một Windows Service bằng C# một cách chi tiết và dễ hiểu.
Cơ bản về C#
Những kiến thức cơ bản nhất của ngôn ngữ lập trình C# Những chủ đề chính chúng ta sẽ được học sau đây :
Khởi tạo và phạm vi hoạt động của biến
Cách sử dụng các vòng lặp và câu lệnh
Gọi và hiển thị lớp và phương thức
An toàn kiểu và cách để chuyển các kiểu dữ liệu
Phương thức của hàm Main( )
Cơ bản trình biên dịch dòng lệnh trong C#
Using System.Console để thực hiện I/O
Sử dụng chú thích trong C# và Visual Studio NET
Các định danh và từ khoá trong C#
TỔNG QUAN VỀ HỆ THỐNG
Tổng quan về đề tài
1 Tóm tắt về bài toán
Tóm t ắt hoạt động của hệ thống m à d ự án ứng dụng
- Yêu cầu xây dựng một hệ thống quản lý công tác thực tập của sinh viên Cao Đẳng Tin trường ĐHBK Hà Nội
Khoa Công nghệ Thông tin của trường ĐHBK Hà Nội quản lý công tác thực tập sinh viên theo từng khóa học (K1, K2, K3 ) và các bộ môn trong khoa Chương trình thực tập bao gồm các lĩnh vực chính như Hệ thống Thông tin, Công nghệ Phần mềm, Khoa học Máy tính, nhằm chuẩn bị kiến thức và kỹ năng thực tế cho sinh viên Tổ chức cam kết xây dựng môi trường học tập chuyên nghiệp, giúp sinh viên ứng dụng lý thuyết vào thực tiễn ngành CNTT Việc quản lý chặt chẽ đảm bảo sinh viên có trải nghiệm thực tập hiệu quả, phù hợp với chương trình đào tạo của khoa.
Trong các khóa học kỹ thuật máy tính, sinh viên được phân chia thành nhiều lớp như Tin1, Tin2, Tin3, Tin4, mỗi lớp có từ 20 đến 30 sinh viên Các lớp này được tổ chức thành các nhóm thực tập nhỏ từ 2 đến 7 sinh viên, do giảng viên hướng dẫn trực tiếp Việc phân chia này giúp tăng cường khả năng làm việc nhóm, nâng cao kỹ năng thực hành và thúc đẩy sự phối hợp chặt chẽ giữa sinh viên và giảng viên trong quá trình học tập.
Hệ thống quản lý thực tập của khoa đảm nhiệm công tác quản lý thông tin về quá trình thực tập của sinh viên dựa trên các tiêu chí như khóa học, bộ môn, giảng viên hướng dẫn, lớp, nhóm, đề tài và mã số sinh viên Trong đó, mã số sinh viên là thông tin duy nhất giúp phân biệt và phân loại dữ liệu giữa các sinh viên một cách chính xác Ngoài ra, hệ thống còn lưu trữ các thông tin liên quan khác về sinh viên, lớp học, bộ môn, khóa học, giảng viên hướng dẫn và nhóm thực tập, đảm bảo tổ chức dữ liệu một cách toàn diện và hiệu quả.
Hệ thống quản lý thông tin thực tập của sinh viên Cao đẳng Tin học dựa trên bộ môn làm khóa chính, giúp tổ chức và kiểm soát các dữ liệu liên quan đến quá trình thực tập của sinh viên một cách hiệu quả Việc sử dụng bộ môn làm tiêu chuẩn chính đảm bảo tính nhất quán và dễ dàng theo dõi tiến trình thực tập, đồng thời nâng cao độ chính xác trong quản lý thông tin của sinh viên.
Yêu cầu xây dựng hệ thống với hai chức năng chính: o Chức năng người dùng:
- Người dùng là sinh viên, giảng viên hướng dẫn thực tập…Những
Sinh viên chỉ có quyền truy cập để xem và tìm kiếm các thông tin liên quan đến lịch thực tập, giảng viên hướng dẫn, danh sách nhóm thực tập, báo cáo thực tập, điểm số sau khi kết thúc đợt thực tập và hồ sơ cá nhân của mình Tuy nhiên, sinh viên không có quyền sửa đổi hoặc chỉnh sửa bất kỳ thông tin nào trong hệ thống, đảm bảo tính bảo mật và kiểm soát dữ liệu trong quá trình quản lý thực tập.
- Giảng viên hướng dẫn cũng sẽ có quyền xem các thông tin tương tự như sinh viên o Chức năng quản trị:
- Có 2 nhóm vai trò: Cán bộ quản sinh và giảng viên hướng dẫn Họ phải đăng nhập vào hệ thống để sử dụng chức năng quản trị
- Cán bộ quản sinh cũng có tất cả các chức năng như người dùng bình thường
Ngoài quyền xem và tìm kiếm thông tin như sinh viên, cán bộ quản sinh còn có quyền chỉnh sửa và xóa các thông tin liên quan đến công tác thực tập sau khi đăng nhập hệ thống, giúp quản lý dữ liệu hiệu quả hơn Giảng viên hướng dẫn thực tập có quyền chỉnh sửa các thông tin về điểm số, báo cáo và lịch thực tập theo từng tuần, đảm bảo cập nhật chính xác và đầy đủ dữ liệu cho quá trình đánh giá và theo dõi thực tập của sinh viên.
Ph ạm vi hệ thống sử dụng
Hệ thống quản lý thực tập của Cao Đẳng Tin trường Đại Học Bách Khoa Hà Nội còn đơn giản và chưa có tính linh hoạt cao, giới hạn trong việc mở rộng quy mô Do đó, hệ thống chủ yếu được sử dụng để quản lý công tác thực tập cho sinh viên, phù hợp với quy mô hiện tại Các chức năng hiện tại chưa đáp ứng đầy đủ các yêu cầu của người dùng, dẫn đến hạn chế trong việc mô tả các tiến trình liên quan một cách chi tiết Hệ thống dành cho đối tượng sử dụng chính là sinh viên và giảng viên nhà trường, giúp theo dõi và hình thành các tiến trình liên quan đến hoạt động thực tập hiệu quả hơn.
Hệ thống được xây dựng dựa trên nhu cầu của ba đối tượng chính Đó là:
- Giáo viên hưởng dẫn thực tập cho sinh viên
- Cán Bộ quản sinh, là người chịu trách nhiệm duy trì hệ thống QLSVTT
Các thông tin s ử dụng trong hệ thống
- Các thông tin chi tiết về sinh viên thực tập, giảng viên thực tập, lớp, bộ môn và nhóm thực tập
- Bảng điểm thực tập được chuyển cho các lớp cao đẳng tin
- Các báo cáo về công tác thực tập của sinh viên
Các yêu c ầu đặt ra với hệ thống trong tương lai
- Hệ thống phải thực hiện được các chức năng: thêm, sửa, xóa, tìm kiếm và lưu các thông tin
- Ưu tiên: phía người quản lý và giảng viên
- Hạn chế: chỉ sử dụng để quản lý sinh viên thực tập của cao đẳng tin
M ục đích của hệ thống
Microsoft Visual Studio 2005 đã phát triển một ứng dụng hỗ trợ quản lý sinh viên thực tập cho các cơ sở đào tạo như trường đại học, cao đẳng hoặc trung cấp Ứng dụng này giúp tự động hóa quá trình theo dõi và quản lý thông tin sinh viên thực tập, nâng cao hiệu quả công tác quản lý và giảm thiểu sai sót Với tính năng tiện ích, dự án góp phần tối ưu hóa quy trình tổ chức thực tập, đáp ứng yêu cầu ngày càng cao về chất lượng đào tạo.
- Quản lý sinh viên thực tập
- Hệ thống triển khai trong môi trường:Visual Studio 2005
- Công cụ phát triển hệ thống: Microsoft Access 2003
Rủi ro của dự án phát sinh do trong quá trình xây dựng hệ thống có thể gặp phải những thiếu sót không tránh khỏi Khi hệ thống được đưa vào sử dụng, nguy cơ vẫn tồn tại nếu hệ thống còn đơn giản, quy mô ứng dụng nhỏ, dẫn đến khả năng không thực hiện đầy đủ các chức năng đã phân tích trước đó.
- Kế hoạch triển khai: từ ngày 18/03 đến ngày 18/04/2008
Mô tả các yêu cầu của hệ thống
1 Tổng quan về hệ thống
Thực tập là một học phần quan trọng trong chương trình đào tạo của sinh viên, đảm bảo sinh viên có cơ hội áp dụng kiến thức vào thực tế Mỗi năm, khoa tổ chức kế hoạch thực tập cho các khóa, trong đó riêng hệ chuyên ngành và tốt nghiệp có thời gian thực tập phù hợp Công tác tổ chức và lập kế hoạch thực tập hàng năm do khoa chịu trách nhiệm, và kế hoạch có thể thay đổi linh hoạt dựa trên tình hình thực tế như thời gian, thời điểm thực tập của các khóa, và giảng viên hướng dẫn Điều này giúp đảm bảo chương trình thực tập phù hợp và hiệu quả theo từng năm học.
- Mỗi sinh viên khi vào trường nhập học sẽ được gán cho một mã số gọi là
Mã sinh viên là mã định danh duy nhất không thay đổi suốt quá trình học tập 3 năm tại cao đẳng, giúp dễ dàng quản lý thông tin sinh viên Ngoài mã sinh viên, các thông tin cá nhân như họ tên, giới tính, ngày sinh, quê quán, địa chỉ hiện tại và số điện thoại cũng cần được lưu trữ để đảm bảo quản lý hồ sơ chính xác và đầy đủ Việc cập nhật và quản lý dữ liệu sinh viên đóng vai trò quan trọng trong quá trình tổ chức và liên hệ trong các hoạt động của cao đẳng.
Trước khi triển khai thực tập cho sinh viên, khoa cần liên hệ với các bộ môn và giảng viên để tổ chức họp bàn, nhằm xác định lịch trình và phân chia lớp học phù hợp Trong cuộc họp này, các phương án phân chia nhóm thực tập, phân công giảng viên hướng dẫn và thời gian thực tập sẽ được thống nhất, đồng thời các thông tin này sẽ được gửi đến sinh viên của khoa để đảm bảo hoạt động thực tập diễn ra thuận lợi.
Sinh viên các lớp sẽ đến bộ môn trong khoa theo đúng lịch hẹn để tham gia họp nhóm và gặp giảng viên hướng dẫn thực tập Tại đây, sinh viên nhận đề tài, lên kế hoạch thực tập hàng tuần và phân chia nhóm theo yêu cầu của giảng viên Mỗi nhóm có thể nhận một đề tài hoặc nhiều đề tài khác nhau tùy thuộc vào hướng dẫn của giảng viên Quá trình này giúp sinh viên chuẩn bị tốt cho kỳ thực tập và đảm bảo tuân thủ các hướng dẫn của khoa.
Sinh viên sẽ tiến hành thực tập hàng tuần bằng cách nộp báo cáo cho giảng viên hướng dẫn qua email hoặc nộp trực tiếp để nhận phản hồi và góp ý Sau đó, sinh viên sẽ tiếp tục hoàn thiện đề tài dựa trên các góp ý của giảng viên Khi hết thời gian thực tập quy định bởi khoa, sinh viên phải bảo vệ đề tài của mình với giảng viên hướng dẫn và nộp báo cáo cùng đĩa mềm lưu trữ dự án để hoàn tất quá trình thực tập.
Giảng viên sẽ chấm điểm và nộp lên khoa để cán bộ sinh viên cập nhật thông tin vào hệ thống Sau khi hoàn thành mỗi đợt thực tập, khoa sẽ thông báo điểm thực tập cho sinh viên theo danh sách từng lớp.
Sinh viên đạt dưới 5 điểm sẽ phải thực tập lại để nâng cao kỹ năng và kiến thức Lớp trưởng chịu trách nhiệm tổng hợp danh sách sinh viên cần thực tập và gửi cho khoa để tổ chức các đợt thực tập bổ sung Khoa sẽ sắp xếp các đợt thực tập lần 2, lần 3 nhằm đảm bảo tất cả sinh viên đều hoàn thành yêu cầu thực tập, giúp các em tích lũy kinh nghiệm thực tế và đảm bảo tốt nghiệp đúng hạn.
Sinh viên thực tập có thể truy cập hệ thống để xem và tìm kiếm tất cả các thông tin liên quan, bao gồm thông tin về giảng viên hướng dẫn, bộ môn, lớp, nhóm thực tập, cũng như các sinh viên cùng khóa học Việc này giúp sinh viên nắm bắt đầy đủ các dữ liệu cần thiết để nâng cao trải nghiệm thực tập và thuận tiện trong quá trình học tập.
Giảng viên hướng dẫn thực tập có đầy đủ quyền hạn như sinh viên thực tập, bao gồm việc chỉnh sửa và xóa các thông tin liên quan đến nhóm thực tập và điểm số thực tập Ngoài ra, giảng viên còn sở hữu quyền quản trị ở mức độ nhất định, giúp đảm bảo việc quản lý và đánh giá quá trình thực tập diễn ra thuận lợi và chính xác.
Cán bộ quản sinh là người có đầy đủ các đặc quyền như sinh viên và giảng viên, đồng thời còn có những quyền hạn riêng biệt như thay đổi, chỉnh sửa và xóa bỏ dữ liệu trong hệ thống “Quản lý sinh viên thực tập” Hơn nữa, cán bộ quản sinh còn đóng vai trò duy trì và vận hành hệ thống để đảm bảo hoạt động liên tục và chính xác.
3 Nhận định về cơ cấu quản lý của hệ thống
Hệ thống quản lý sinh viên thực tập được xây dựng nhằm tổ chức các giai đoạn quan trọng trong quá trình đào tạo thực tế của sinh viên Cơ cấu quản lý của hệ thống bao gồm các bước từ tuyển chọn, định hướng, giám sát đến đánh giá kết quả thực tập Việc xây dựng hệ thống rõ ràng giúp nâng cao hiệu quả quản lý, đảm bảo sinh viên có trải nghiệm thực tế phù hợp và đạt được mục tiêu học tập đề ra Đồng thời, hệ thống này giúp các cơ sở đào tạo và doanh nghiệp phối hợp chặt chẽ, tạo điều kiện thuận lợi cho sinh viên phát triển kỹ năng thực hành và nâng cao khả năng thích nghi với môi trường làm việc thực tế.
Chức năng chính của hệ thống quản lý bao gồm việc quản lý sinh viên thực tập, cho phép thêm, sửa, xóa và tìm kiếm thông tin về sinh viên thực tập một cách dễ dàng và hiệu quả Ngoài ra, hệ thống còn hỗ trợ quản lý giảng viên hướng dẫn thực tập, với các chức năng thêm, sửa, xóa và tìm kiếm thông tin về giảng viên hướng dẫn, giúp quá trình theo dõi và tổ chức thực tập diễn ra một cách thuận tiện và chính xác.
- Quản lý danh mục: quản lý hồ sơ sinh viên, quản lý hồ sơ giảng viên, bộ môn, lớp (sửa, lưu và tìm kiếm thông tin về lớp)
- Cập nhật: thêm, sửa, xóa, lưu thông tin về bảng điểm thực tập, nhóm thực tập
4 Đặc tả cơ cấu quản lý của hệ thống
Hệ thống quản lý sinh viên thực tập được phân quyền cho người dùng dựa trên các chức năng phù hợp, đảm bảo sử dụng hệ thống hiệu quả nhất Hệ thống tích hợp đầy đủ các chức năng quản lý như thêm, sửa, xóa và sao lưu dữ liệu, giúp thay đổi thông tin linh hoạt và bảo toàn dữ liệu một cách tối ưu Việc phân quyền rõ ràng nâng cao tính an toàn và kiểm soát trong quá trình quản lý sinh viên thực tập.
- Để hiểu hơn về hoạt động của hệ thống, ta đi tìm hiểu cụ thể hơn về cơ cấu quản lý của hệ thống:
4.1 Ch ức năng quản lý chính:
Hệ thống quản lý sinh viên thực tập giúp theo dõi quá trình thực tập của sinh viên và công tác hướng dẫn của giảng viên trong bộ môn khoa công nghệ thông tin Nó hỗ trợ tự động hóa việc quản lý sinh viên thực tập và giảng viên hướng dẫn, giảm thiểu thời gian và công sức Quản lý sinh viên thực tập và giảng viên hướng dẫn là hai khâu quan trọng trong hệ thống, đảm bảo quá trình thực tập diễn ra thuận lợi và hiệu quả.
4.1.1 Quản lý sinh viên thực tập
- Mục đích: Giúp sinh viên, giảng viên hướng dẫn có thể xem được các thông tin của sinh viên một cách dễ dàng hơn
Cán bộ quản sinh đăng nhập hệ thống QLSVTT để nhập mật khẩu, hệ thống xác nhận tính đúng đắn của mật khẩu và hướng dẫn chọn một khóa học bất kỳ Sau khi chọn khóa, người dùng có thể thêm, bỏ, xem, tìm kiếm và in kết quả thực tập cho từng lớp của khóa học đó, giúp quản lý dễ dàng và hiệu quả hơn.
- Đối tác: Cán bộ quản sinh (chính)
- Đầu vào: Mã sinh viên
Tên sinh viên Ngày sinh Nơi sinh Địa chỉ Điện thoại Giới tính Địa chỉ Email
- Đầu ra: Danh sách lớp Thông tin chi tiết về sinh viên
- Module xử lý: In ra danh sách lớp, danh sách sinh viên để gửi cho sinh viên các lớp trong khoa CNTT
- Sự cố xảy ra với hệ thống:
+ Mật khẩu do cán bộ quản sinh đưa vào là không đúng đắn Người dùng phải đưa lại mật khẩu hoặc kết thúc sử dụng
+ Mã số sinh viên, mã lớp đưa vào là không đúng
4.1.2 Quản lý giảng viên hướng dẫn thực tập
- Mục đích: giúp cho sinh viên có thể có thể nắm bắt các thông tin về giảng viên hướng dẫn thực tập mình
PHÂN TÍCH HỆ THỐNG
Phân tích hệ thống về mặt xử lý
1 Biểu đồ phân cấp chức năng
Trong chương 2, hệ thống quản lý sinh viên thực tập được phân tích rõ ràng, cho thấy nó gồm 5 chức năng chính: thêm, sửa, xóa, tìm kiếm và in báo cáo Biểu đồ phân cấp chức năng mô tả chi tiết cách hệ thống quản lý hoạt động theo cấu trúc cây, thể hiện các mức chức năng từ trên xuống dưới, từ đỉnh đến dưới đỉnh, nhằm cung cấp cái nhìn tổng quan và cụ thể về hệ thống.
- Chức năng 1: thêm thông tin về giảng viên, sinh viên và điểm thực tập
- Chức năng 2: sửa thông tin về sinh viên, giảng viên, điểm thực tập, lớp và nhóm thực tập
- Chức năng 3: xóa thông tin về sinh viên, giảng viên, điểm thực tập và nhóm thực tập
- Chức năng 4: tìm kiếm sinh viên, giảng viên, điểm thực tập, lớp và nhóm thực tập
- Chức năng 5: in danh sách, báo cáo: in danh sách sinh viên, giảng viên, bộ môn, bảng điểm thực tập
Chúng ta sẽ đi vào phân tích chi tiết về quá trình phân cấp quản lý dựa trên biểu đồ phân cấp chức năng, bắt đầu từ mức khung cảnh đến biểu đồ mức đỉnh và dưới đỉnh trong các phần tiếp theo.
Quản lý sinh viên thực tập
Sửa thông tin sinh viên
Sửa thông tin giảng viên
Sửa thông tin bảng điểm TT
Thêm thông tin sinh viên
Thêm thông tin giảng viên
Xóa thông tin sinh viên
Xóa thông tin giảng viên
Sửa thông tin về lớp
In danh sách, báo cáo
Tìm kiếm bảng điểm Thêm thông tin bảng điểm
Sửa thông tin về nhóm
Xóa thông tin bảng điểm TT
Xóa thông tin về nhóm
In danh sách sinh viên
In danh sách giảng viên
In danh dách bộ môn
Hình 3.1: Biểu đồ phân cấp chức năng hệ thống quản lý sinh viên thực tập
2 Biểu đồ mức bối cảnh
Biểu đồ phân cấp chức năng cung cấp mô tả tổng quan về các chức năng chính của hệ thống, giúp người sử dụng dễ hình dung về hệ thống quản lý sinh viên Để thể hiện quá trình hoạt động, cần biểu diễn từng mức của biểu đồ này, bắt đầu từ mức 0 – chức năng tổng quát của hệ thống quản lý sinh viên thực tập Các đối tác liên quan phải xuất hiện xuyên suốt trong toàn bộ bối cảnh của sơ đồ và không được tạo mới ở các mức thấp hơn; tuy nhiên, có thể vẽ lại các đối tác này ở các mức dưới nếu thấy cần thiết để thể hiện rõ hơn.
- Như đã phân tích ở trên hệ thống gồm có 3 đối tác chính đó là: sinh viên thực tập, giảng viên hướng dẫn thực tập và cán bộ quản sinh
Giữa các đối tác này sẽ có sự trao đổi các luồng dữ liệu với nhau:
Sinh viên thực tập cần cung cấp đầy đủ thông tin cá nhân để nhập vào hệ thống quản lý Đồng thời, sinh viên có quyền yêu cầu hệ thống cho xem các thông tin về bộ môn, giảng viên hướng dẫn thực tập, lớp học và bảng điểm sau quá trình thực tập Việc cập nhật và truy cập thông tin này giúp sinh viên nắm rõ tiến trình và kết quả thực tập, đảm bảo sự minh bạch và thuận tiện trong quá trình học tập.
Giảng viên hướng dẫn thực tập đóng vai trò cung cấp đầy đủ thông tin cần thiết để nhập và lưu dữ liệu trong hệ thống Trước khi sử dụng hệ thống, giảng viên cần cung cấp thông tin về nhóm thực tập và thực hiện đăng nhập để đảm bảo quá trình quản lý diễn ra thuận lợi Việc nhập liệu chính xác và cập nhật đầy đủ thông tin giúp hệ thống hoạt động hiệu quả và hỗ trợ tối đa cho quá trình thực tập của sinh viên.
Cán bộ quản sinh cần hệ thống tự động lập báo cáo và in bảng điểm thực tập để thuận tiện cho quá trình theo dõi Đồng thời, hệ thống yêu cầu cán bộ quản sinh cập nhật đầy đủ thông tin thực tập và gửi dữ liệu trước khi sử dụng các chức năng của hệ thống Việc tự động hóa quy trình này giúp nâng cao hiệu quả quản lý và đảm bảo dữ liệu chính xác, phù hợp với chuẩn SEO cho nội dung liên quan đến quản lý thực tập sinh viên.
Quản lý Sinh viên Thực tập
Sinh viên Cán bộ quản sinh
Thông tin về lớp học
Yêu cầu đăng nhập trước khi sử dụng HT Yêu cầu lập báo cáo
Hình 3.2: Biểu đồ mức bối cảnh quản lý sinh viên thực tập
Bảng điểm kết quả thực tập
Giảng viên hướng dẫn TT
Thông tin về bộ môn
Thông tin về GVHDTT Yêu cầu đăng nhập
Yêu cầu in bảng điểm thực tập Báo cáo thông tin thực tập Thông tin về nhóm
Phân tích thiết kế hệ thống về mặt dữ liệu
1 Các thực thể có trong hệ thống
- Sinh viên thực tập (SinhVien)
- Giảng viên hướng dẫn thực tập (GiangVienHDTT)
- Bảng điểm thực tập (BangDiemTT)
- Đăng nhập hệ thống (DangNhap)
2 Thuộc tính cụ thể của các thực thể và chuẩn hóa chúng
- Sinh viên (Mã sinh viên, tên sinh viên, ngày sinh, nơi sinh, địa chỉ, điện thoại, giới tính, email, mã lớp, mã nhóm)
- Giảng viên hướng dẫn thực tập (mã giảng viên, tên giảng viên, giới tính giảng viên, ngày sinh giảng viên, số điện thoại, email, địa chỉ, mã bộ môn)
- Bảng điểm thực tập (Mã sinh viên, điểm thực tập, thực tập, lần thực tập, thời gian thực tập, ghi chú)
- Nhóm thực tập (Mã nhóm, đề tài thực tập, lịch thực tập, mã giảng viên)
- Lớp (Mã lớp, tên lớp, sĩ số, mã khoa)
- Khóa học (Mã khóa học, tên khóa học)
- Bộ môn (Mã bộ môn, tên bộ môn)
- Đăng nhập hệ thống (UserName, Password) (Các thuộc tính được chọn làm khóa chính là các thuộc tính được gạch chân ở từng thực thể trên)
3 Thiết kế mô hình thực thể liên kết
Hình 3.3: Mô hình thực thể liên kết
4 Thiết kế chi tiết cơ sở dữ liệu Sinh viên
Hình 3.4: Bảng chuẩn hóa thực thể sinh viên
Giảng viên hướng dẫn thực tập
Hình 3.5: Bảng chuẩn hóa thực thể giảng viên HDTT Bảng điểm thực tập
Hình 3.6: Bảng chuẩn hóa thực thể bảng điểm thực tập Nhóm thực tập
Hình 3.7: Bảng chuẩn hóa thực thể nhóm thực tập Lớp
Hình 3.8: Bảng chuẩn hóa thực thể lớp
Hình 3.9: Bảng chuẩn hóa thực thể khóa học Bôn môn
Hình 3.10: Bảng chuẩn hóa thực thể bôn môn Đăng nhập
Hình 3.11: Bảng chuẩn hóa thực thể đăng nhập
THIẾT KẾ CHƯƠNG TRÌNH CHÍNH
Form giao diện chính của hệ thống- frmMain
1 Quá trình thiết kế và thiết lập các thuộc tính của frmMain:
Hình 4.1: Form giao diện chính của chương trình
- Vào Add New Item -> Windows Form để tạo ra một form mới.Dùng chuột để điều chỉnh kích thước của form tùy theo người thiết kế hệ
Sử dụng menustrip để hiển thị các menu chính của hệ thống giúp người dùng dễ dàng truy cập và quản lý các chức năng như quản lý hệ thống (đổi mật khẩu, thoát), quản lý danh mục (hồ sơ sinh viên, hồ sơ giảng viên, bộ môn, lớp) Hệ thống còn hỗ trợ quản lý sinh viên thực tập và giảng viên HDTT, cùng với tính năng cập nhật thông tin điểm thực tập và nhóm thực tập Thêm vào đó, phần trợ giúp cung cấp thông tin về tác giả và hướng dẫn sử dụng hệ thống, nâng cao trải nghiệm người dùng.
- Trong hộp toolbox, chọn button, groupbox sử dụng để thiết kế cho các chức năng trên, tùy theo người thiết kế hệ thống
Trong cửa sổ Properties, chọn thuộc tính Name và nhập vào "frmMain" để đổi tên cho Form Nếu cửa sổ Properties chưa hiển thị, hãy mở nó từ trình đơn View hoặc nhấn F4 Sau đó, chọn thuộc tính Text và nhập "Quản lý sinh viên thực tập" để cập nhật thanh tiêu đề của form, giúp giao diện ứng dụng rõ ràng và chuyên nghiệp.
Trong cửa sổ Properties, bạn cần chọn các thuộc tính phù hợp cho GroupBox và Button Đặt tên cho các thành phần này bằng cách sử dụng thuộc tính Name để dễ quản lý, đồng thời có thể nhập văn bản cho Button và GroupBox trong thuộc tính Text nếu cần thiết.
2 Xử lý các sự kiện trong Form giao diện chính:
- Trong form này chưa phải xử lý các sự kiện cho các chức năng: thêm, sửa, xóa và tìm kiếm như ở các form típ theo
Sau khi đăng nhập vào hệ thống, người dùng có thể chọn mục xem thông tin mong muốn bằng cách nhấn các nút trên form hoặc chọn từ các menu ở trên cùng, giúp truy cập nhanh đến dữ liệu cần thiết Một form khác sẽ được hiển thị chứa các thông tin phù hợp cùng các chức năng thao tác tương ứng để thực hiện các yêu cầu của người dùng một cách thuận tiện và hiệu quả.
Khi người dùng nhấn nút "Đổi mật khẩu", cửa sổ frmDoiMatKhau sẽ hiển thị Để thực hiện điều này, bạn cần thêm đoạn mã sau vào phương thức xử lý sự kiện của nút btnDoiMK: `frmDoiMatKhau mk = new frmDoiMatKhau(); mk.Show();`.
+ Nếu bạn click vào button “QL Sinh viên thực tập” thì frmSinhVien sẽ hiện ra Thêm đoạn mã vào phương thức btnQLSVTT: frmSinhVien sv = new frmSinhVien(); sv.Show();
+ Nếu bạn click vào button “QL Giảng viên thực tập” thì frmGiangVien sẽ hiện ra Thêm đoạn mã sau vào phương thức btnQLGV: frmGiangVien gv = new frmGiangVien(); gv.Show();
+ Nếu bạn click vào button “Hồ sơ sinh viên” thì frmHSSV sẽ hiện ra Thêm đoạn mã sau vào phương thức btnHSSV: frmHSSV hssv = new frmHSSV(); hssv.Show();
+ Nếu bạn click vào button “Hồ sơ giảng viên” thì frmHSGV sẽ hiện ra
Thêm đoạnmã sau vào phương thức btnHSGV: frmHSGV hsgv = new frmHSGV(); hsgv.Show();
+ Nếu bạn click vào button “Bộ môn” thì frmBoMon sẽ hiện ra Thêm đoạn mã sau vào phương thức btnBoMon: frmBoMon bm = new frmBoMon(); bm.Show();
+ Nếu bạn click vào button “Lớp” thì frmLop sẽ hiện ra Thêm đoạn mã sau vào phương thức btnLop: frmLop fl = new frmLop(); fl.Show();
+ Nếu bạn click vào button “Thông tin điểm thực tập” thì frmBangDiem se hiện ra.Thêm đoạn mã sau vào phương thức btnBangDiem: frmBangDiem bd = new frmBangDiem(); bd.Show();
+ Nếu click vào button “Nhóm thực tập” thì frmNhomTT sẽ hiện ra.Thêm đoạn mã sau vào phương thức btnNhomTT: frmNhomTT nhomtt = new frmNhomTT(); nhomtt.Show();
Để hiển thị hộp thoại thông báo về thông tin tác giả trong menu Trợ giúp, bạn cần bấm vào menu Trợ giúp -> Thông tin tác giả Hộp thoại này cung cấp các thông tin cần thiết về tác giả của phần mềm hoặc nội dung Để tạo ra hộp thoại đó, bạn cần thêm đoạn mã sau vào biến mnTroGiup_TTTG để đảm bảo chức năng hoạt động chính xác Việc thêm mã này giúp người dùng dễ dàng truy cập và xem thông tin tác giả một cách nhanh chóng, hỗ trợ tối ưu hóa trải nghiệm người dùng.
MessageBox.Show("Đề tài thực tập: Quản lý sinh viên thực tập\nGiảng viên HDTT: Trịnh Văn Loan\nSinh viên thực tập: Bùi Thị
Khi bạn nhấn vào menu Trợ giúp -> Hướng dẫn sử dụng hệ thống, một hộp thoại thông báo sẽ xuất hiện để cung cấp hướng dẫn cách sử dụng hệ thống Để hiển thị hộp thoại này, bạn cần thêm đoạn mã vào phương thức mnTroGiup_HDHT, giúp người dùng dễ dàng truy cập hướng dẫn sử dụng một cách nhanh chóng và thuận tiện.
Bạn có thể thao tác các chức năng thêm, sửa, xóa và tìm kiếm trên tất cả các ứng dụng của hệ thống Để thêm mới, bạn nhấn nút "Thêm", các ô textbox và combobox sẽ tự động làm trống để nhập thông tin, sau đó nhấn nút "Lưu" để xác nhận Khi sửa một bản ghi, bạn cần chọn dòng dữ liệu trên datagridview, các thông tin muốn sửa sẽ hiển thị trong các ô textbox và combobox, sau đó chỉnh sửa và nhấn nút "Cập nhật" để lưu lại thay đổi và hiển thị ngay trên datagridview Để xóa, chỉ cần chọn một bản ghi trên datagridview rồi nhấn nút "Xóa" Tính năng tìm kiếm cho phép bạn thực hiện theo yêu cầu cụ thể của từng trường dữ liệu, giúp dễ dàng truy xuất thông tin cần thiết.
Form đăng nhập của hệ thống - frmLogin
1 Quá trình thiết kế và thiết lập thuộc tính của frmLogin
Hình 4.2: Form đăng nhập của hệ thống
When you start creating the "QLSVTT_ProjectThucTapTotNghiep" project, a new form appears in the Designer View window In the Properties panel, select the Name property to rename this form as frmLogin, ensuring clear identification and organization within your project.
Để thêm hình ảnh vào form, bạn kéo thành phần PictureBox từ Toolbox và thả vào form, sau đó điều chỉnh kích thước của PictureBox bằng chuột để phù hợp với giao diện Trong cửa sổ Properties, bạn chọn thuộc tính Image để lựa chọn hình ảnh mong muốn cho form Đồng thời, để giữ cố định kích thước và tránh bị thay đổi khi chỉnh sửa, bạn cần đặt thuộc tính Locked của PictureBox là true.
- Từ toolbox rê thành phần điều khiển label1vào bên trái form.Đổi tên text của nó là Tên đăng nhập
- Từ toolbox tiếp tục rê thành phần điều khiển label2 vào form, đổi tên text là Mật khẩu
- Thêm một combobox vào frmLogin và đặt nó kế bên lable1, đổi tên là cboUser
- Thêm một textbox vào frmLogin và đặt nó kế bên label2, đổi tên là txtMatKhau
Đầu tiên, bạn cần mở toolbox và kéo hai thanh điều khiển button vào form Tiếp theo, đổi thuộc tính Name của chúng lần lượt thành btnDangNhap và btnHuy để dễ quản lý trong mã nguồn Cuối cùng, chỉnh sửa văn bản hiển thị của nút tương ứng là Đăng nhập cho btnDangNhap và Hủy bỏ cho btnHuy, giúp giao diện người dùng trở nên rõ ràng, chuyên nghiệp và dễ sử dụng.
2 Xử lý các sự kiện trong frmLogin
Khi sinh viên thực tập, giảng viên hướng dẫn hoặc cán bộ quản lý sử dụng hệ thống, họ cần đăng nhập bằng tên người dùng và mật khẩu riêng biệt Trong quá trình đăng nhập, nếu nhập sai tên đăng nhập hoặc mật khẩu, hệ thống sẽ hiển thị thông báo “Bạn nhập sai password”, yêu cầu người dùng nhập lại hoặc kết thúc phiên làm việc để đảm bảo an toàn và bảo mật dữ liệu.
Để formLogin hoạt động đúng như mong đợi, bạn cần thêm đoạn mã sau vào phương thức btnDangNhap sau khi đã kết nối thành công đến cơ sở dữ liệu bằng câu lệnh thích hợp Việc này giúp xác thực người dùng chính xác và đảm bảo tính bảo mật cho hệ thống đăng nhập của bạn Chèn mã đúng vị trí sẽ giúp quá trình xử lý đăng nhập diễn ra trơn tru, nâng cao trải nghiệm người dùng.
OleDbConnection dbConn = new OleDbConnection("Provider =
Microsoft.JET.OLEDB.4.0; Data Source = " +
Application.StartupPath + "\\QLSVTT.mdb"); Đoạn mã cuae btnDangNhap dbConn.Open();
DataSet dbSet = new DataSet(); string strString = "Select mUserName, mPassword From DangNhap Where mUserName = '" + cboUser.Text + "'";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(strString, dbConn); dbAdpt.Fill(dbSet ); if (txtMatkhau.Text == dbSet.Tables[0].Rows[0]["mPassword"].ToString()) {
QLSVTT_ProjectThucTapTotNghiep.clsProcess.mTen = dbSet.Tables[0].Rows[0]["mUserName"].ToString(); frmMain frm = new frmMain(); frm.Show(); this.Hide();
} else { MessageBox.Show("Bạn nhập sai Password","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Exclamation ); txtMatkhau.Focus(); txtMatkhau.SelectAll();
To effectively populate the cboUser dropdown and facilitate the login process, you should include the following code snippet in your form's load event: private void frmLogin_Load(object sender, EventArgs e) { /* additional code */ }.
//lấy thông tin đưa vào cboUser dbConn.Open();
DataSet dbset = new DataSet(); string str = "Select * From DangNhap";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn ); dbAdpt.Fill(dbset ); dbConn.Close(); cboUser.DataSource = dbset.Tables[0]; cboUser.DisplayMember = "mUserName";
Bạn có thể hủy bỏ việc đăng nhập để xem thông tin quản lý sinh viên thực tập trong hệ thống bằng cách nhấn nút Hủy bỏ Phương thức của nút này sử dụng lệnh đơn giản: this.Close(), giúp đóng cửa sổ hoặc thoát khỏi giao diện một cách nhanh chóng và dễ dàng.
Form đổi mật khẩu – frmDoiMatKhau
1 Quá trình thiết kế và thiết lập thuộc tính của frmDoiMatKhau
Hình 4.3: Form đổi mật khẩu
Để tạo một form mới trong hệ thống, bạn cần vào Add New Item và chọn Windows Form, đặt tên cho form là frmDoiMatKhau Sau đó, sử dụng chuột để điều chỉnh kích thước của form phù hợp với thiết kế của bạn Trong phần Properties, bạn nên thay đổi thuộc tính Text của frmDoiMatKhau thành "Đổi mật khẩu" để hiển thị rõ ràng chức năng của form cho người dùng.
- Từ toolbox, rê thành phần điều khiển groupbox vào form và điều chỉnh kích thước của groupbox cho đầy form
- Từ toolbox, rê thành phần điều khiển labe1 vào groupbox rùi đổi thuộc tính Name là lbUser và text là UserName
- Thêm label2 vào groupbox, đổi thuộc tính Name là lbPasscu và text là Pasword cũ
- Từ hộp công cụ rê thanh điều khiển label3 vào groupbox đỏi thuộc tính name là lbPassmoi và text là Password mới
- Thêm label4 vào groupbox, đổi thuộc tính Name là lbNhapLaiPass và text là Xác nhận lại
Bạn cần kéo thả hộp công cụ "Textbox" vào trong GroupBox và đặt nó bên cạnh Label1 Đổi thuộc tính Name thành "txtUserName" để dễ dàng quản lý trong mã nguồn Đồng thời, thiết lập thuộc tính "ReadOnly" là "true" cho textbox này để người dùng chỉ có thể thay đổi mật khẩu mà không thể chỉnh sửa tên người dùng, giúp bảo vệ dữ liệu và tăng tính bảo mật trong ứng dụng của bạn.
- Thêm textbox vào trong groupbox vào bên cạnh label2 và đổi thuộc tính Name là txtPassCu
- Từ hộp công cụ rê thanh điều khiển textbox vào groupbox trong form vào bên cạnh label3, đổi thuộc tính name là txtPassMoi
- Thêm textbox vào groupbox đặt bên cạnh label4, đổi thuộc tính name là txtXacNhan
- Từ toolbox, rê thanh điều khiển button vào groupbox, thay đổi thuộc tính name là btnLuuthaydoi và text là Lưu thay đổi
- Thêm button vào groupbox, thay đổ thuộc tính name là btnThoat và text là Thoát
2 Xử lý các sự kiện trong frmDoiMatKhau
Xử lý sự kiện cho btnLuuthaydoi:
Khi mật khẩu được hệ thống cung cấp không đảm bảo bảo mật hoặc người dùng muốn thay đổi mật khẩu, họ cần nhập đúng mật khẩu cũ vào ô txtPassCu Nếu nhập sai, hệ thống sẽ hiển thị thông báo “Nhập mật khẩu cũ sai Hãy nhập lại!” Nếu nhập đúng, người dùng sẽ tiếp tục nhập mật khẩu mới và xác nhận lại để hoàn tất quá trình đổi mật khẩu Trong trường hợp không xác nhận lại đúng, hệ thống sẽ thông báo “Xác nhận mật khẩu sai Hãy nhập lại!”.
Sau khi nhập đầy đủ các thông tin theo yêu cầu của hệ thống, quá trình thay đổi mật khẩu sẽ thành công và hệ thống sẽ hiển thị thông báo “Đã thay đổi thành công” Điều này đảm bảo rằng mật khẩu mới được cập nhật chính xác và xác nhận qua hệ thống.
Để thực hiện các mô tả trên, bạn cần thêm đoạn mã vào phương thức của nút btnLuuthay đổi sau khi đã kết nối thành công với cơ sở dữ liệu Việc này giúp đảm bảo chức năng hoạt động chính xác và hiệu quả hơn trong quá trình xử lý dữ liệu Chèn mã đúng cách sẽ giúp nâng cao khả năng quản lý dữ liệu và tối ưu hóa hoạt động của ứng dụng của bạn.
OleDbConnection dbConn = new OleDbConnection("Provider =
Microsoft.JET.OLEDB.4.0; Data Source = " +
Application.StartupPath + "\\QLSVTT.mdb"); Đoạn mã của btnLuuthaydoi: dbConn.Open();
DataSet dbSet = new DataSet(); string strString = "Select * From DangNhap Where mUserName = '" + txtUserName.Text + "'";
This code snippet demonstrates how to update a user's password in a database using OleDbDataAdapter It retrieves user data, verifies the current password, and confirms that the new password matches the confirmation input Upon successful validation, it opens a database connection and executes an SQL UPDATE statement to change the password for the specified username Proper database connection management and input validation are essential for secure and effective password updates.
OleDbCommand mdbCmd = new OleDbCommand(mstrString, dbConn); mdbCmd.ExecuteNonQuery(); dbConn.Close();
MessageBox.Show("Đã thay đổi thành công","Thông báo",MessageBoxButtons.OK,MessageBoxIcon.Information ); this.Close();
} else { MessageBox.Show("Xác nhận mật khẩu sai Hãy nhập lại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtXacNhan.Focus(); txtXacNhan.SelectAll();
} } else { MessageBox.Show("Nhập mật khẩu cũ sai Hãy nhập lại","Thông báo",MessageBoxButtons.OK, MessageBoxIcon.Exclamation ); txtPassCu.Focus(); txtPassCu.SelectAll();
Xử lý sự kiện cho btnThoat
- Tương tự như các form khác Để đóng form này lại t chỉ cần thêm 1 câu lệnh: this.Close();
Form sinh viên – frmSinhVien
1 Quá trình thiết kế và thiết lập thuộc tính của frmSinhVien:
- Vào Add New Item -> Windows Form để tạo ra một form mới với tên là frmSinhVien
Trong hộp công cụ, kéo thả các nhóm nhómbox vào form và đặt tên thuộc tính là grTTSV, grTK, grThongtinsvv Đồng thời, thay đổi nội dung text của các nhómbox thành "Thông tin sinh viên", "Tìm kiếm" và "Thông tin về sinh viên" để rõ ràng và phù hợp với mục đích tạo giao diện người dùng thân thiện.
Trong quá trình tạo giao diện, bạn cần kéo 10 thanh điều khiển label từ toolbox vào grTTSV và lần lượt đổi thuộc tính Name của chúng thành lbMaLop, lbMaSV, lbTenSV, lbMaNhom, lbNgaySinh, lbNoiSinh, lbSDT, lbGioiTinh, lbEmai, lbDiaChi để dễ quản lý Đồng thời, cập nhật nội dung hiển thị phù hợp với các thuộc tính tương ứng: "Mã lớp", "Mã sinh viên", "Tên sinh viên", "Mã nhóm", "Ngày sinh", "Nơi sinh", "Số điện thoại", "Giới tính", "Email", "Địa chỉ".
- Thêm các combobox vào grTTSV, đổi thuộc tính name cho nó lần lượt là cbMaLop, cbMaNhom
- Thêm các textbox vào grTTSV, đổi thuộc tính Name lần lượt là txtMaSV, txtTenSV, txtNoiSinh, txtSDT, txtEmail, txtDiaChi
- Từ toolbox rê thanh điều khiển datatimepicker vào grTTSV đỏi tên thuộc tính name là dtPickerNgaySinh
- Thêm thanh điều khiển radio vào trong grTTSV, đổi thuộc tính name là rdNam, rdNu tương ứng với text Nam, Nữ
- Thêm label vào grTK, đổi thuộc tính name là lbLop, lbMaSinhVien, lbTenSinhVien và text tương ứng: Lớp, mã sinh viên, tên sinh viên
- Thêm combobox vào grTK, thuộc tính name là cboL
- Thêm textbox vào grTK, đổi thuộc tính name là txtTimMaSV, txtTimTenSV
- Thêm linklabel vào grTK, đổi thuộc tính name là llbMaSV, llbTenSV và text tương ứng: Tìm MaSV, Tìm TenSV
- Thêm các button vào form, đổi thuộc tính name là btnThemSV, btnXoaSV, btnLuuSV, btnSuaSV, btnDongLai
- Từ hộp công cụ rê thanh điều khiển datagridview vào grThongtinsinhvien, đởi thuộc tính name là dgvListSinhVien
- Thêm linklabel vào form, thuộc tính name là llbXemTatCa và text là Xem tất cả
2 Xử lý các sự kiện trong frmSinhVien:
- Sau khi đã kết nối thành công cơ sở dữ liệu bằng câu lệnh dưới đây thì ta sẽ tiến hành xử lý các sự kiện trong frmSinhVien:
//câu lệnh kết nối csdl OleDbConnection dbConn = new OleDbConnection("Provider
= Microsoft.JET.OLEDB.4.0; Data Source = " + Application.StartupPath + "\\QLSVTT.mdb");
Xử lý sự kiện cho nút btnThemSV:
Thêm sinh viên chỉ đơn giản là thao tác làm trắng các ô textbox và combobox để người dùng nhập đầy đủ thông tin của sinh viên vào hệ thống Sau khi nhập đầy đủ các thông tin cần thiết về sinh viên, người dùng chỉ cần nhấn nút Lưu để lưu dữ liệu vào hệ thống Quá trình này giúp đảm bảo dữ liệu sinh viên được cập nhật chính xác và thuận tiện cho việc quản lý.
- Để làm trắng lại các ô textbox và combobox thì bạn phải thêm đoạn mã sau vào btnThemSV:
//Nhập trắng lại các ô textbox và combobox private void btnThemSV_Click(object sender, EventArgs e) { txtMaSV.Text = ""; txtTenSV.Text = ""; txtNoiSinh.Text = ""; txtSDT.Text = ""; txtEmail.Text = ""; txtDiaChi.Text = ""; btnLuuSV.Text = "Lưu";
Xử lý sự kiện cho nút btnSuaSV:
Để chỉnh sửa thông tin sinh viên ngành công nghệ thông tin, cán bộ quản lý sinh viên thực tập truy cập vào form "nsinh viên", chọn sinh viên cần sửa từ datagridview rồi nhấn nút "Sửa" Sau đó, nút "Lưu" sẽ chuyển thành nút "Cập nhật", hiển thị thông tin sinh viên lên các textbox và combobox để chỉnh sửa Cán bộ quản sinh tiến hành cập nhật lại các thông tin trong các ô textbox và combobox rồi nhấn nút "Cập nhật" để lưu thay đổi.
Thông tin đã sửa về sinh viên sẽ được hiển thị ngay trên lưới dữ liệu (datagridview), giúp người dùng dễ dàng kiểm tra và xác nhận các chỉnh sửa Lưu ý quan trọng là khi chọn sửa một hàng bất kỳ trong datagridview, bạn phải nhấp vào để xem đầy đủ thông tin trước khi tiến hành chỉnh sửa; nếu không thực hiện theo quy trình này, hệ thống sẽ báo lỗi Việc này đảm bảo quá trình sửa dữ liệu diễn ra chính xác, thuận tiện và giảm thiểu lỗi phát sinh.
- Để thực hiện được các mô tả như ở trên thì bạn phải thêm đoạn mã sau cho phương thức btnSuaSV:
//sửa thông tin về sinh viên private void btnSuaSV_Click(object sender, EventArgs e) { if (dgvListSinhVien.SelectedRows.Count > 0) { dbConn.Open();
The code initializes a DataSet object to store query results It constructs an SQL SELECT statement to retrieve student and class information, including class name, student ID, name, date of birth, birthplace, phone number, gender, email, and address The query performs an inner join between the "Lop" (class) and "SinhVien" (student) tables based on the class ID It filters the results to find a specific student record based on the selected student's ID from a data grid view.
This code demonstrates retrieving student information from a database using OleDbDataAdapter, filling a DataSet, and populating user interface controls with the retrieved data Key fields such as "MaLop" (class code), "MaSV" (student ID), "TenSV" (student name), "NgaySinh" (date of birth), "NoiSinh" (place of birth), and "DienThoai" (phone number) are extracted from the database and assigned to corresponding UI elements Additionally, the code checks the student's gender ("GioiTinh") and sets the appropriate radio button, ensuring accurate representation of the data Proper connection management and data binding techniques make this approach effective for student information management systems.
} txtEmail.Text = dbset.Tables[0].Rows[0]["EMail"].ToString(); txtDiaChi.Text = dbset.Tables[0].Rows[0]["DiaChi"].ToString();
Xử lý sự kiện cho nút btnLuuSV:
Khi người quản lý hệ thống đăng nhập thành công và muốn chỉnh sửa hoặc thêm thông tin sinh viên, các dữ liệu này cần được lưu trữ trong cơ sở dữ liệu sau khi thực hiện thao tác Nếu thêm mới thông tin sinh viên, nút lưu sẽ giữ nguyên tên gọi "Lưu", còn khi chỉnh sửa thông tin đã có, nút lưu sẽ chuyển thành "Cập nhật" để phản ánh trạng thái sửa đổi Việc lưu trữ dữ liệu đúng cách đảm bảo hệ thống quản lý thông tin sinh viên chính xác và hiệu quả.
- Như vậy button btnLuuSV là rất quan trọng trong việc cập nhật những thay đổi thông tin về sinh viên thực tập
- Sau đây là đoạn mã cần phải thêm vào phương thức btnLuuSV:
//cập nhật thông tin sinh viên private void btnLuuSV_Click(object sender, EventArgs e) { dbConn.Open(); if (btnLuuSV.Text == "Cập Nhật") { string strString = "Update SinhVien Set MaSV = '"
+ txtTenSV.Text + "', NgaySinh = '" + dtPickerNgaySinh.Text + "', NoiSinh = '"
+ txtNoiSinh.Text + "', DiaChi = '" + txtDiaChi.Text + "', DienThoai = '"
+ txtSDT.Text + "', GioiTinh = " + rbtNam.Checked + ", Email = '"
+ txtEmail.Text + "', MaNhom = '" + cboMaNhom.Text + "', MaLop = '" + cboMaLop.Text + "' Where MaSV = '" + txtMaSV.Text + "'";
OleDbCommand dbCmd = new OleDbCommand(strString, dbConn); dbCmd.ExecuteNonQuery(); newRefresh();
} else { DataSet dbSet = new DataSet(); string mstr = "Select * From SinhVien";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(mstr, dbConn); dbAdpt.Fill(dbSet); if (txtMaSV.Text != dbSet.Tables[0].Rows[0]["MaSV"].ToString()) { if ((txtMaSV.Text != "") && (txtTenSV.Text !=
"")) { //dbConn.Open(); string strInsert = "Insert into Sinhvien values('"; strInsert += txtMaSV.Text + "','"; strInsert += txtTenSV.Text + "','"; strInsert += dtPickerNgaySinh.Value +
"','"; strInsert += txtNoiSinh.Text + "','"; strInsert += txtDiaChi.Text + "','"; strInsert += txtSDT.Text + "',"; strInsert += rbtNam.Checked + ",'"; strInsert += txtEmail.Text + "','"; strInsert += cboMaLop.Text + "','"; strInsert += cboMaNhom.Text + "')";
OleDbCommand dbInsert = new OleDbCommand(strInsert, dbConn); dbInsert.ExecuteNonQuery(); dbConn.Close(); newRefresh();
} else { MessageBox.Show("Chưa nhập mã sinh viên và tên sinh viên Hãy kiểm tra lại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
} else { MessageBox.Show("Đã Trùng mã sinh viên Mời bạn nhập lại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtMaSV.Focus(); txtMaSV.SelectAll();
Xử lý sự kiện cho nút btnXoaSV:
Để xóa thông tin về một sinh viên, bạn chỉ cần chọn một hàng trong DataGridView rồi nhấn nút xóa Một hộp thoại xác nhận sẽ hiển thị hỏi “Bạn có muốn xóa hay không?”, giúp đảm bảo thao tác chính xác Nếu bạn chọn “Yes”, thông tin sinh viên đó sẽ bị loại bỏ khỏi danh sách hiển thị trên DataGridView Ngược lại, nếu chọn “No”, dữ liệu vẫn còn được giữ lại không thay đổi.
- Để làm được điều đó, bạn chỉ cần thêm đoạn mã sau vào nút btnXoaSV là hệ thống sẽ làm việc được như trên:
//xóa thông tin sinh viên private void btnXoaSV_Click(object sender, EventArgs e) { if (MessageBox.Show("Bạn có muốn xóa hay không?",
"Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==
DialogResult.Yes) { dbConn.Open(); string str = "Delete from SinhVien Where MaSV = '"
OleDbCommand dbDelete = new OleDbCommand(str, dbConn); dbDelete.ExecuteNonQuery(); dbConn.Close(); newRefresh();
Xử lý sự kiện cho nút btnDongLai:
- Tương tự như các câu lệnh xử lý đống form lại ở trên, bạn cũng chỉ cần dùng 1 câu lệnh: private void btnDongLai_Click(object sender, EventArgs e) { this.Close();
- Cũng có thể bạn dùng 1 câu lệnh khác để đống form ứng dụng đang chạy lại:
Lấy dữ liệu vào các combobox::
Để thay đổi thông tin sinh viên trong bảng sinh viên hiệu quả, bạn cần chú ý đến ràng buộc N – 1 giữa bảng sinh viên, lớp học và nhóm thực tập Khi thêm mới sinh viên, việc đảm bảo các ràng buộc này là cực kỳ quan trọng để tránh lỗi trong câu lệnh truy vấn khi chèn dữ liệu vào DataGridView.
- Chính vì lý do đó mà bạn cần tiến hành viết mã ở một phương thức frmSinhVien_Load như sau:
Upon loading the student form, the application executes the `frmSinhVien_Load` method, which refreshes the data display by calling the `newRefresh()` function It then establishes a database connection to fetch class information by executing the SQL query `Select MaLop, TenLop From Lop`, retrieving class codes and names, and populates the data grid along with the combo boxes `cboLop` and `cboMaLop`.
OleDbDataAdapter dbAdptm = new OleDbDataAdapter(strString, dbConn); dbAdptm.Fill(dbSet); cboL.DataSource = dbSet.Tables[0]; cboL.DisplayMember = "TenLop"; cboMaLop.DataSource = dbSet.Tables[0]; cboMaLop.DisplayMember = "MaLop";
// Đưa thông tin vào cboMaNhom DataSet dbSetm = new DataSet(); string str = "Select MaNhom From NhomTT";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn); dbAdpt.Fill(dbSetm); dbConn.Close(); cboMaNhom.DataSource = dbSetm.Tables[0]; cboMaNhom.DisplayMember = "MaNhom";
Dữ liệu sẽ được lấy từ các controls như cboL, cboMaLop và cboMaNhom, giúp người dùng dễ dàng chọn lựa dựa trên yêu cầu của từng cá nhân Khi chạy chương trình, các dữ liệu này sẽ cố định và dropdown để người dùng có thể chọn lựa linh hoạt Việc sử dụng các combobox này tối ưu hóa trải nghiệm người dùng và nâng cao hiệu quả thao tác trong phần mềm.
Lấy dữ liệu cho dgvListSinhVien:
Để xem thông tin chung về sinh viên và hiển thị các thay đổi dữ liệu, bạn cần khai báo phương thức mới "Private void newRefresh()" Việc sử dụng lưới giúp loại bỏ bước tìm kiếm trước khi thực hiện các chức năng sửa và cập nhật thông tin sinh viên Điều này cho phép quá trình chỉnh sửa dữ liệu diễn ra nhanh chóng hơn mà không cần tìm kiếm trước.
/private hiển thị csdl vào datagridview private void newRefresh()
OleDbDataAdapter dbAdpt = new OleDbDataAdapter("SELECT
DataSet dbSet = new DataSet(); dbAdpt.Fill(dbSet); dbConn.Close(); dgvListSinhVien.DataSource = dbSet.Tables[0];
Xử lý sự kiện cho llbXemTatCa:
Sau khi cập nhật hoặc tìm kiếm thông tin sinh viên, bạn có thể nhấn vào nút "Xem tất cả" để truy cập toàn bộ dữ liệu sinh viên trong cơ sở dữ liệu gốc hoặc trong lưới hiển thị Việc này thực hiện thông qua cú pháp gọi phương thức newRefresh, sử dụng đoạn mã sự kiện `private void linklbXemTatCa_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)`, giúp người dùng dễ dàng xem toàn bộ thông tin sinh viên một cách nhanh chóng và hiệu quả.
Xử lý sự kiện cho llbTimMaSV:
Bạn có thể tìm kiếm thông tin sinh viên dựa trên mã sinh viên chính trong hệ thống Trước khi tìm kiếm, hãy chọn lớp của sinh viên đó rồi nhập chính xác mã sinh viên; hệ thống sẽ hiển thị thông tin sinh viên phù hợp trên lưới dữ liệu Nếu bạn chọn sai lớp hoặc nhập sai mã sinh viên, hệ thống sẽ hiện thị thông báo “Không tìm thấy thông tin sinh viên nào”, giúp bạn biết và có thể nhập lại mã hoặc kết thúc phiên làm việc.
//tìm kiếm thông tin sinh viên theo mã sinh viên private void llbMaSV_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
DataSet dbSet = new DataSet(); string strString = "SELECT Lop.TenLop, SinhVien.MaSV,
SinhVien.TenSV, SinhVien.NgaySinh, SinhVien.NoiSinh,
SinhVien.DiaChi, SinhVien.DienThoai, SinhVien.GioiTinh, SinhVien.Email FROM Lop INNER JOIN SinhVien ON Lop.MaLop = SinhVien.MaLop WHERE (((Lop.TenLop)='" + cboL.Text + "') AND ((SinhVien.MaSV)='" + txtTimMaSV.Text + "'))";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(strString, dbConn); dbAdpt.Fill(dbSet); dbConn.Close(); if (dbSet.Tables[0].Rows.Count > 0) { dgvListSinhVien.DataSource = dbSet.Tables[0];
} else { MessageBox.Show("Không tìm thấy thông tin sinh viên nào", "Tìm Kiếm", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
Xử lý sự kiện cho cboL:
Form Giảng viên – frmGiangVien
1 Quá trình thiết kế và thiết lập thuộc tính của frmGiangVien
- Vào Add New Item -> Windows Form để tạo ra một form mới có tên là femGiangVien Trong properties nhập tên tiêu đề cho form là: Thông tin giảng viên
Bạn có thể sử dụng hộp công cụ Toolbox để kéo các nhóm GroupBox vào trong form Hãy thay đổi tên thuộc tính Name của từng GroupBox thành các giá trị tương ứng như: groupbox1, groupbox2, và groupbox3 để dễ quản lý Ngoài ra, bạn cũng nên cập nhật thuộc tính Text của các GroupBox thành các tiêu đề phù hợp như: "Hồ sơ giảng viên", "Thông tin về giảng viên" và "Tìm kiếm" nhằm nâng cao trải nghiệm người dùng và tối ưu hóa khả năng tìm kiếm trên các nền tảng SEO.
Bạn hãy thêm các label vào groupbox1 và thay đổi thuộc tính Name lần lượt thành: lbMaBM, lbMaGV, lbTenGV, lbNS, lbGT, lbSDT, lbEmail, lbDiaChi Đồng thời, cập nhật text tương ứng cho từng label là: "Mã bộ môn", "mã giảng viên", "tên giảng viên", "ngày sinh", "giới tính", "số điện thoại", "email" để đảm bảo tính rõ ràng và dễ hiểu cho người dùng.
- Thêm các textbox vào groupbox1, đổi thuộc tính Name lần lượt là : txtMaBM, txtMaGV, txtTenGV, txtSDT, txtEmail, txtDiaChi đặt bên cạnh các label tương tứng ở trên
- Thêm datatimepicker vào groupbox1 đặt bên cạnh label ngày sinh, đổi thuộc tính Name là dtPickerNgaySinh
- Thêm radio vào bên cạnh label giới tính, đổi thuộc tính Name cho nó là rdNam, rdNu và text là Nam và Nữ
- Từ toolbox, thêm label Mã GV và TenGV vào groupbox3 Đồng thời thêm txtTimMaGV, txtTimTenGV vào bên cạnh các label đó
- Thêm linklabel Tìm MaGV và Tìm TenGV vào bên cạnh các textbox
- Thêm label vào form, đổi thuộc tính Name là lbBM và text là Tên bộ môn Đồng thời thêm txtTenBM
- Từ toolbox rê thanh điều khiển datagridview vào groupbox2, đổi thuộc tính name là dgvTTGV
- Thêm các button vào form: btnThemGV, btnSuaGV, btnXoaGV, btnLuuGV, btnThoat
2 Xử lý các sự kiện trong frmGiangVien:
- Sau khi kết nối csdl bằng câu lệnh thì ta sẽ lần lượt xử lý các sự kiện cho từng button và combobox, datagridview:
OleDbConnection dbConn = new OleDbConnection("Provider
= Microsoft.JET.OLEDB.4.0; Data Source = " + Application.StartupPath + "\\QLSVTT.mdb");
Xử lý sự kiện cho nút btnThemGV:
Để thêm giảng viên mới, bạn chỉ cần nhấn nút "Thêm" để mở côt thêm thông tin, các ô textbox, combobox, và datetimepicker sẽ tự động làm trắng Tiếp theo, bạn nhập đầy đủ thông tin của giảng viên vào các trường này, sau đó nhấn "Lưu" để lưu dữ liệu Thông tin về giảng viên mới sẽ được hiển thị một cách rõ ràng trong datagridview, giúp quản lý dễ dàng và nhanh chóng hơn.
- Để làm được điều đó, bạn phải thêm đoạn mã sau vào phương thức btnThemGV:
To add new data to the database, clear all input fields such as text boxes and combo boxes by resetting their values; this includes fields like MaGV, TenGV, NgaySinh, SDT, Email, DiaChi, and MaBM Additionally, set the save button text back to "Lưu" to prepare for new data entry.
Xử lý sự kiện cho nút btnLuuGV:
Nút hỗ trợ thêm và sửa thông tin giảng viên giúp quá trình quản lý dữ liệu hiệu quả hơn Sau khi cập nhật thông tin, dữ liệu của giảng viên sẽ được lưu lại trên Datagridview để dễ dàng theo dõi và chỉnh sửa Khi nhấn nút Thêm, chữ trên button sẽ vẫn là "Lưu" để xác nhận việc lưu mới thông tin giảng viên, còn khi chỉnh sửa thông tin, nút sẽ chuyển sang "Cập nhật" để phù hợp với thao tác chỉnh sửa đã thực hiện.
//cập nhật thông tin về giảng viên private void btnLuuGV_Click(object sender, EventArgs e) { dbConn.Open(); if (btnLuuGV.Text == "Cập Nhật") {
//dbConn.Open(); string strUpdate = "Update GiangVienHDTT Set MaGV
= '" + txtMaGV.Text + "', TenGV = '" + txtTenGV.Text + "',
GioiTinhGV= " + rdNam.Checked + ", NgaySinhGV = '" + dtPickerNgaySinh.Text + "',SDT = '" + txtSDT.Text + "',EMailGV = '" + txtEmail.Text + "',DiaChiGV = '" + txtDiaChi.Text + "' Where MaGV = '" + txtMaGV.Text + "'";
OleDbCommand dbCmd = new OleDbCommand(strUpdate, dbConn); dbCmd.ExecuteNonQuery(); btnLuuGV.Text = "Lưu";
} else { DataSet dbSet = new DataSet(); string mstr = "Select * From GiangVienHDTT";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(mstr, dbConn); dbAdpt.Fill(dbSet); if (txtMaGV.Text != dbSet.Tables[0].Rows[0]["MaGV"].ToString()) { if ((txtMaGV.Text != "") && (txtTenGV.Text != "")) {
//dbConn.Open(); string strInsert = "Insert Into GiangVienHDTT Values('" + txtMaGV.Text + "','"
+ txtEmail.Text + "','" + txtDiaChi.Text + "','" + txtMaBM.Text + "')";
OleDbCommand mdbComd = new OleDbCommand(strInsert, dbConn); mdbComd.ExecuteNonQuery(); dbConn.Close();
HienThi(); txtMaGV.ReadOnly = false; txtTenGV.ReadOnly = false; txtMaBM.ReadOnly = false;
} else { MessageBox.Show("Chưa nhập mã giảng viên và tên giảng viên Hãy kiểm tra lại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
MessageBox.Show("Đã trùng mã giảng viên
Mời bạn nhập lại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtMaGV.Focus(); txtMaGV.SelectAll();
Xử lý sự kiện cho nút btnSuaGV:
Khi thông tin về giảng viên thay đổi, hệ thống sẽ không còn phản ánh đúng thực tế Để đảm bảo dữ liệu chính xác, hệ thống cần được cập nhật lại thông tin kịp thời Người quản lý hệ thống chịu trách nhiệm thực hiện công việc cập nhật thông tin này để duy trì tính chính xác và hiệu quả của hệ thống quản lý giảng viên.
Để sửa thông tin của một giảng viên, bạn chọn một dòng trong DataGridView chứa đầy đủ dữ liệu cần chỉnh sửa, sau đó nhấn nút sửa để chuyển nút lưu thành nút cập nhật Thông tin của giảng viên sẽ được hiển thị tự động lên các ô textbox, combobox, DateTimePicker, radio button và các thành phần khác tương ứng để dễ dàng chỉnh sửa.
Bán sẽ chỉnh sửa thông tin trong đó rồi nhấn nút cập nhật Thông tín sẽ được chỉnh sửa lại và lưu lại trong lưới
- Dưới đây là đoạn mã của phương thức btnSuaGV:
//Sửa thông tin về giảng viên private void btnSuaGV_Click(object sender, EventArgs e) { if (dgvTTGV.SelectedRows.Count > 0) { dbConn.Open();
DataSet dbSet = new DataSet(); string str = "SELECT BoMon.TenBM, GiangVienHDTT.MaGV, GiangVienHDTT.TenGV, GiangVienHDTT.GioiTinhGV,
GiangVienHDTT.EmailGV, GiangVienHDTT.DiaChiGV, GiangVienHDTT.MaBM FROM BoMon INNER JOIN GiangVienHDTT ON BoMon.MaBM =
GiangVienHDTT.MaBM Where MaGV = '" + dgvTTGV.SelectedRows[0].Cells[0].Value + "'";
This code snippet demonstrates how to retrieve and display data from a database using OleDbDataAdapter in a C# application It initializes the DataAdapter with a SQL query and database connection, fills a DataSet with the query results, and then closes the connection The retrieved data populates various UI elements, such as text boxes and date pickers, with values like staff ID, teacher ID, teacher name, and date of birth Additionally, it checks the teacher's gender from the database; if the value is "True," it sets the "Male" radio button as checked, ensuring accurate representation of the teacher's information in the user interface.
} txtSDT.Text = dbSet.Tables[0].Rows[0]["SDT"].ToString(); txtDiaChi.Text = dbSet.Tables[0].Rows[0]["DiaChiGV"].ToString(); txtEmail.Text = dbSet.Tables[0].Rows[0]["EmailGV"].ToString();
} btnLuuGV.Text = "Cập Nhật"; txtMaBM.Visible = true;
Xử lý sự kiện cho nút btnXoaGV:
Để xóa thông tin của một giảng viên, bạn chỉ cần chọn một hàng trong DataGridView chứa dữ liệu của giảng viên đó rồi nhấn nút xóa Một hộp thoại xác nhận sẽ xuất hiện hỏi “Bạn có muốn xóa hay không?”; nếu bạn đồng ý, chọn Yes để hàng đó biến mất khỏi DataGridView, còn nếu không muốn xóa nữa thì chọn No để dữ liệu vẫn giữ nguyên Việc xóa thông tin giảng viên rất đơn giản và nhanh chóng nhờ chức năng này.
//xóa thông tin về giảng viên private void btnXoaGV_Click(object sender, EventArgs e) { if (MessageBox.Show("Bạn có muốn xóa hay không?",
"Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==
DialogResult.Yes) { dbConn.Open(); string str = "Delete from GiangVienHDTT Where MaGV
OleDbCommand dbDelete = new OleDbCommand(str, dbConn); dbDelete.ExecuteNonQuery(); dbConn.Close();
Xử lý sự kiện cho nút btnThoat:
- Xử lý nút thoát khỏi form chỉ với 1 câu lệnh:
//đóng form lại private void btnThoat_Click(object sender, EventArgs e) { this.Close();
Xem thông tin giảng viên theo từng bộ môn:
- Để xem thông tin giảng viên theo từng bộ môn bạn chỉ cần chọn bộ môn trong cbTenBoMon mà nó sổ xuống
- Thêm phương thức mới private void cbTenBM_SelectedIndexChanged(object sender, EventArgs e):
//hiển thị thông tin giảng viên từ cbTenBM private void cbTenBM_SelectedIndexChanged(object sender, EventArgs e)
{ dbConn.Open(); string str = "SELECT GiangVienHDTT.MaGV,
GiangVienHDTT.SDT, GiangVienHDTT.EmailGV, GiangVienHDTT.DiaChiGV, BoMon.MaBM FROM BoMon INNER JOIN GiangVienHDTT ON BoMon.MaBM = GiangVienHDTT.MaBM WHERE BoMon.TenBM ='" + cbTenBM.Text + "'";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn);
DataSet dbSet = new DataSet(); dbAdpt.Fill(dbSet); dbConn.Close(); dgvTTGV.DataSource = dbSet.Tables[0];
Đưa dữ liệu cho dgvTTGV và cboTenBM:
Để hiển thị tất cả thông tin về giảng viên, bạn cần đưa dữ liệu vào bảng dgvTTGV Việc này giúp người dùng xem toàn bộ dữ liệu một cách trực quan và dễ dàng quản lý Đồng thời, khi muốn chỉnh sửa thông tin, chỉ cần chọn dòng dữ liệu trên lưới, các thông tin sẽ tự động được cập nhật vào các textbox, combobox và datetimepicker để dễ dàng sửa đổi Đây là cách tối ưu hóa quá trình quản lý và cập nhật dữ liệu giảng viên trong hệ thống của bạn.
//private hiển thị thông tin lên lưới private void HienThi()
{ //dbConn.Open(); string str = "Select * From GiangVienHDTT";
OleDbDataAdapter dbAdapt = new OleDbDataAdapter(str, dbConn);
DataSet dbSet = new DataSet(); dbAdapt.Fill(dbSet); dbConn.Close(); dgvTTGV.DataSource = dbSet.Tables[0];
} //câu lệnh hiển thị thông tin về giảng viên và lấy dữ liệu vào cbTenBM private void frmGiangVien_Load(object sender, EventArgs e) {
DataSet dbSet = new DataSet(); string str = "Select MaBM, TenBM From BoMon";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn); dbAdpt.Fill(dbSet); dbConn.Close(); cbTenBM.DataSource = dbSet.Tables[0]; cbTenBM.DisplayMember = "TenBM";
Form bảng điểm – frmBangDiem
1 Quá trình thiết kế và thiết lập các thuộc tính của frmBangDiem
Hình 4.6: Form bảng điểm thực tập
- Vào Add New Item -> Windows Form để tạo ra form mới có tên là frmBangDiem Trong properties nhập tiêu đề cho form là: Thông tin điểm thực tập
Để thiết kế giao diện cho form, bạn có thể sử dụng các thành phần như groupbox, label, textbox, combobox và button, giống như các mẫu đã đề cập Bạn nên vào phần Properties để chỉnh sửa và tùy biến các thuộc tính của các thành phần này cho phù hợp với nhu cầu thiết kế của mình, giúp tạo ra giao diện chuyên nghiệp và dễ sử dụng.
2 Xử lý các sự kiện trong frmBangDiem
- Câu lệnh kết nối csdl:
// Câu lệnh kết nối cơ sở dữ liệu OLEDB
OleDbConnection dbConn = new OleDbConnection("Provider
= Microsoft.JET.OLEDB.4.0; Data Source = " + Application.StartupPath + "\\QLSVTT.mdb");
Xử lý sự kiện cho nút btnThem
To reset the form, clear all input fields including textboxes and comboboxes by setting their texts to empty strings, and reset button labels to their default states; for example, clear fields like cbLHTT, txtLanTT, txtMaSV, txtDiemTT, txtTGTT, and txtGhiChu, and set the save button text to "Lưu" to prepare the form for new data entry.
Xử lý sự kiện cho nút btnSuaDiem
//Chỉnh sửa thông tin về điểm thực tập của sinh viên private void btnSuaDiem_Click(object sender, EventArgs e) {
//Sửa khi dữ liệu trong các row của datagrigview không có position là 0 if (dgvBangDiem.SelectedRows.Count > 0) { dbConn.Open();
DataSet dbSet = new DataSet(); string str = "Select * From BangDiemTT where MaSV
This code snippet demonstrates how to retrieve data from a database using OleDbDataAdapter and populate various user interface elements After executing the query and filling the data set, it assigns values from the first row of the result to multiple UI controls, such as combo boxes and text boxes, to display student internship details like internship type, number of internship sessions, student ID, scores, duration, and notes Additionally, the code updates the button text to "Update," indicating that the form is in edit mode for existing records This process ensures efficient data binding and a seamless user experience for managing internship information within a database-driven application.
Xử lý sự kiện cho nút btnXoaDiem
//Xóa các thông tin về điểm của sinh viên thực tập private void btnXoaDiem_Click(object sender, EventArgs e) {
Trước khi thực hiện thao tác xóa dữ liệu trong DataGridView, hệ thống sẽ hiển thị thông báo xác nhận "Bạn có muốn xóa hay không?" Điều này giúp người dùng đưa ra quyết định chính xác trước khi mất dữ liệu quan trọng Nếu người dùng chọn "Yes", dữ liệu sẽ bị xóa khỏi hệ thống, đảm bảo tính an toàn và tránh nhầm lẫn không mong muốn.
"Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==
DialogResult.Yes) { dbConn.Open(); string str = "Delete from BangDiemTT Where MaSV = '" + dgvBangDiem.SelectedRows[0].Cells[0].Value + "'";
OleDbCommand dbDelete = new OleDbCommand(str, dbConn); dbDelete.ExecuteNonQuery(); dbConn.Close();
Xử lý sự kiện cho nut btnLuuDiem private void btnLuuDiem_Click(object sender, EventArgs e) {
//Thực hiện câu lệnh điều kiện để khi nhấn button sửa thì button lưu sẽ chuyển thành cập nhật if (btnLuuDiem.Text == "Cập Nhật") { dbConn.Open();
//Cập nhật cơ sở dữ liệu khi thay đổi csdl trong datagridview string str = "Update BangDiemTT set TenLHTT = '" + cbLHTT.Text
+ txtLanTT.Text + "', Diem = " + txtDiemTT.Text
+ txtGhiChu.Text + "' Where MaSV = '" + txtMaSV.Text + "'";
OleDbCommand dbCmd = new OleDbCommand(str, dbConn); dbCmd.ExecuteNonQuery(); dbConn.Close();
{ DataSet dbSet = new DataSet(); string mstr = "Select * From BangDiemTT";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(mstr, dbConn); dbAdpt.Fill(dbSet); if (txtMaSV.Text != dbSet.Tables[0].Rows[0]["MaSV"].ToString()) { if (txtMaSV.Text != "") { dbConn.Open();
//Câu lệnh truy vấn đẻ insert các thông tin string strInsert = "Insert Into BangDiemTT Values('" + txtMaSV.Text + "','" + txtDiemTT.Text + "','" + cbLHTT.Text + "','" + txtLanTT.Text + "','" + txtTGTT.Text + "','"
OleDbCommand dbInsert = new OleDbCommand(strInsert, dbConn); dbInsert.ExecuteNonQuery(); dbConn.Close();
} else { MessageBox.Show("Chưa nhập mã sinh viên và tên sinh viên Hãy kiểm tra lại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
} else { MessageBox.Show("Đã Trùng mã sinh viên
Mời bạn nhập lại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtMaSV.Focus(); txtMaSV.SelectAll();
Xem thông tin bảng điểm thwo loại hình thực tập: private void cbLHTT_SelectedIndexChanged(object sender, EventArgs e)
The code initializes a new DataSet to store retrieved data It constructs an SQL query to select student IDs, scores, internship names, attempt numbers, durations, and notes from the joined tables 'SinhVien' and 'BangDiemTT' The query filters results to include only records where the internship name matches the selected value from a combo box, ensuring targeted data retrieval based on user input.
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn); dbAdpt.Fill(dbSet); dbConn.Close(); dgvBangDiem.DataSource = dbSet.Tables[0];
Xử lý cho sự kiện lbbTimMaSV:
//Tìm kiếm thông tin về điểm thực tập của sinh viên theo mã sinh viên private void llbTimMaSV_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
To retrieve student scores based on a specific student ID, a DataSet is initialized, and an SQL query string is constructed The query selects student ID, score, internship name, internship attempt number, internship duration, and notes from the 'BangDiemTT' table, joining it with the 'SinhVien' table on student ID It filters the results to match the student ID entered in the input field 'txtTimMaSV'.
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(strString, dbConn); dbAdpt.Fill(dbSet); dbConn.Close(); if (dbSet.Tables[0].Rows.Count > 0) { dgvBangDiem.DataSource = dbSet.Tables[0];
} else { MessageBox.Show("Không tìm thấy thông tin điểm của sinh viên này", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
Xử lý cho sự kiện btnTimTenSV:
//Tmf kiếm thông tin về điểm thực tập của sinh viên theo tên sinh viên private void llbTimTenSV_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
DataSet dbSet = new DataSet(); string strString = "SELECT SinhVien.TenSV,
BangDiemTT.MaSV, BangDiemTT.Diem, BangDiemTT.TenLHTT,
BangDiemTT.LanThucTap, BangDiemTT.ThoiGianTT, BangDiemTT.GhiChu
FROM SinhVien INNER JOIN BangDiemTT ON SinhVien.MaSV = BangDiemTT.MaSV Where SinhVien.TenSv='" + txtTimTenSV.Text + "'";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(strString, dbConn); dbAdpt.Fill(dbSet); dbConn.Close(); if (dbSet.Tables[0].Rows.Count > 0) { dgvBangDiem.DataSource = dbSet.Tables[0];
} else { MessageBox.Show("Không tìm thấy thông tin điểm của sinh viên này", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
Xử lý cho sự kiện btnThoat:
//Thoát khỏi form bảng điểm thực tập của sinh viên private void btnThoat_Click(object sender, EventArgs e) { this.Close();
Lấy dữ liệu cho dgvBangDiem và cbLHTT:
To display a private view of student grade information on a DataGridView, you open the database connection and execute an SQL query that retrieves student ID, scores, training program name, internship attempt number, internship duration, notes, and pass/fail status based on their scores.
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn);
DataSet dbSet = new DataSet(); dbAdpt.Fill(dbSet); dbConn.Close(); dgvBangDiem.DataSource = dbSet.Tables[0];
} private void frmBangDiem_Load(object sender, EventArgs e) {
//hiển thị thông tin về điểm thực tập của sinh viên lên datagridview
//Thực hiện câu truy vấn và các câu lệnh để lấy thông tin về tên loại hình thực tập từ bảng điểm thực tập đưa vào cbLHTT dbConn.Open();
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn); dbAdpt.Fill(dbSet); dbConn.Close(); cbLHTT.DataSource = dbSet.Tables[0]; cbLHTT.DisplayMember = "TenLHTT";
Forn nhóm thực tập – frmNhomTT
1 Quá trình thiết kế và thiết lập các thuộc tính của frmNhomTT
Hình 4.7: Form nhóm thực tập
To create a new form, go to Add New Item and select Windows Form, naming it frmNhomTT In the form's properties, enter "Thông tin về nhóm thực tập" as the title text to set the form's header.
- Chọn các textbox và các button, linklabel, label để thiết kế giao diện cho form nhóm thực tập
2 Xử lý các sự kiện trong frmNhomTT
Xử lý sự kiện cho nút btnSuaNhom:
//Thực hiện sửa thông tin private void btnSuaNhom_Click(object sender, EventArgs e) { if (dgvNhomTT.SelectedRows.Count > 0) { dbConn.Open();
DataGridViewRow dr = dgvNhomTT.SelectedRows[0]; string str = "Select * From NhomTT Where MaNhom = '" + dr.Cells[0].Value + "'";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn); dbAdpt.Fill(dbSet); dbConn.Close();
This code retrieves data from the first table in a DataSet and populates various text fields on a form with specific values, such as "MaNhom," "DeTaiTT," "LichTT," and "MaGV." The "btnLuuNhom" button label is set to "Cập Nhật" (Update), indicating a function for updating information Additionally, the "MaGV" and "MaNhom" text fields are set to read-only to prevent user modification, ensuring data integrity during updates.
} else { MessageBox.Show("Chua Chon nhom sua", "Thong bao", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
Xử lý sự kiện cho nút btnLuuNhom:
//Thực hiện cập nhật thông tin về nhóm thực tập private void btnLuuNhom_Click(object sender, EventArgs e) { if ( btnLuuNhom.Text != "Cập Nhật" ) { dbConn.Open();
{ if ((txtMaNhom.Text != "") && (txtLichTT.Text
String strString = "Select * From NhomTT Where MaNhom = '" + txtMaNhom.Text + "'";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(strString, dbConn); dbAdpt.Fill(dbSet); dbConn.Close(); if (dbSet.Tables[0].Rows.Count > 0) {
MessageBox.Show("Đã TRùng dữ liệu",
"Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); txtMaNhom.Focus(); txtMaNhom.SelectAll();
} else { string str = "Insert Into NhomTT Values('" + txtMaNhom.Text + "','" + txtDeTaiTT.Text + "','" + txtLichTT.Text + "','" + txtMaGV.Text + "')";
OleDbCommand dbCmd = new OleDbCommand(str, dbConn); dbCmd.ExecuteNonQuery(); dbConn.Close();
} } else { MessageBox.Show("Kiểm tra xem có trường nào rỗng hay không!");
} } } else { txtMaNhom.ReadOnly = false; dbConn.Open(); string strStr = "Update NhomTT Set DeTaiTT = '" + txtDeTaiTT.Text + "', LichTT = '" + txtLichTT.Text + "', MaGV = '"
+ txtMaGV.Text + "' Where MaNhom = '" + txtMaNhom.Text + "'";
OleDbCommand dbCmd = new OleDbCommand(strStr, dbConn); dbCmd.ExecuteNonQuery(); dbConn.Close();
Xử lý sự kiện cho nút btnXoaNhom:
//Xóa thông tin về nhóm private void btnXoaNhom_Click(object sender, EventArgs e) { int m; m = dgvNhomTT.SelectedRows[0].Index; if (dgvNhomTT.SelectedRows.Count > 0) { if (MessageBox.Show("Bạn Có muốn xóa không",
"Thông Báo",MessageBoxButtons.YesNo,MessageBoxIcon.Question) ==
DialogResult.Yes) { OleDbConnection dbConn = new OleDbConnection("Provider = Microsoft.JET.OLEDB.4.0; Data Source =
" + Application.StartupPath + "\\QLSVTT.mdb"); dbConn.Open();
String strString = "Delete From NhomTT Where MaNhom = '" + dgvNhomTT.SelectedRows[0].Cells[0].Value + "'";
OleDbCommand dbCmd = new OleDbCommand(strString, dbConn); dbCmd.ExecuteNonQuery(); dbConn.Close();
Xử lý sự kiện cho nút btnThoatNhom:
//Đóng form nhóm thực tập lại private void btnThoatNhom_Click(object sender, EventArgs e)
Xử lý sự kiện cho llbTimMaNhom:
//tìm thông tin về nhóm thực tập theo mã nhóm private void lbbTimMaNhom_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
DataSet dbSet = new DataSet(); string strString = "SELECT GiangVienHDTT.MaGV, NhomTT.MaNhom, NhomTT.DeTaiTT, NhomTT.LichTT FROM GiangVienHDTT INNER JOIN NhomTT ON GiangVienHDTT.MaGV = NhomTT.MaGV WHERE MaNhom
OleDbDataAdapter(strString, dbConn); dbAdpt.Fill(dbSet); dbConn.Close(); if (dbSet.Tables[0].Rows.Count > 0) { dgvNhomTT.DataSource = dbSet.Tables[0];
MessageBox.Show("KHông tìm thấy thông tin nhóm này", "Thông báo", MessageBoxButtons.OK,
Form lớp – frmLop
1 Quá trình thiết kế và thiết lập các thuộc tính trong frmLop
To create a new form, go to Add New Item and select Windows Form Name the form "frmLop" and then, in the Properties window, set the Text property to "Thông tin về lớp" to specify the form's title.
- Thêm groupbox vào form, đổi thuộc tính name là grLop, grTuyChon, và text là Thông tin về lớp, Tùy chọn
Trong quá trình tạo giao diện, người dùng cần kéo các điều khiển label từ hộp công cụ vào trong lớp rồi thay đổi thuộc tính name của chúng theo thứ tự như: lbMaKhoa, lbMaLop, lbSiSo, và lbTenLop, tương ứng với các nội dung "Mã khóa", "Mã lớp", "Sĩ số" và "Tên lớp" để đảm bảo tính rõ ràng và dễ nhận diện cho các thành phần trong giao diện.
- Thêm các button vào grTuyChon, đổi thuộc tính name của chũng là btnSuaLop, btnCapNhat, btnThaotLop và text tương ứng là: Sửa, Cập nhật, Thoát
Bạn nên thêm một nhãn (label) vào form với thuộc tính name là lbTenKhoa và nội dung là "Chọn khóa học" để hướng dẫn người dùng Bên cạnh nhãn này, hãy thêm một combobox có thuộc tính name là cbTenKhoa để người dùng dễ dàng chọn khóa học phù hợp Việc kết hợp này giúp cải thiện trải nghiệm người dùng và đảm bảo tính rõ ràng của form.
- Thêm linklabel vào form, đổi thuộc tính name là LinkLbXemTatCar, và text là Xem tất cả
- Từ hộp công cụ đưa datagridview vào form, đổi thuộc tính name thành dtgridTTLop
2 Xử lý các sự kiện trong frmLop
- Câu lệnh kết nối csdl:
//Câu lệnh kết nối csdl OleDbConnection dbConn = new OleDbConnection("Provider
= Microsoft.JET.OLEDB.4.0; Data Source = " + Application.StartupPath + "\\QLSVTT.mdb");
Xử lý sự kiện cho btnSuaLop
- Cũng giống như các form trên, nút sửa ở form lớp cũng hoạt động tương tự như vậy
//Sửa thông tin về lớp private void btnSuaLop_Click(object sender, EventArgs e) { if (dtgridTTLop.SelectedRows.Count > 0) { dbConn.Open();
A DataSet is initialized to retrieve data from the database The SQL query selects course names, department codes, class codes, class names, and student counts using an INNER JOIN between the KhoaHoc (Courses) and Lop (Classes) tables, filtering by the selected class code This approach enables efficient data retrieval for specific class details based on user selection.
This code utilizes the OleDbDataAdapter to retrieve data from a database based on a specified query, filling the DataSet with the results After closing the database connection, it extracts specific information such as class ID ("MaLop"), class name ("TenLop"), student count ("SiSo"), and department ID ("MaKhoa") from the first row of the data table, then displays these details in respective text boxes This approach ensures efficient data retrieval and seamless display of class information in a Windows Forms application.
} //không cho phép sửa mã lớp, ten lớp, mã khoa txtMaLop.ReadOnly = true; txtTenLop.ReadOnly = true; txtMaKhoa.ReadOnly = true;
} //Đưa dữ liệu vaò cbTenKhoa và đồng thời hiển thị dữ liệu vào lưới khi chọn khóa học private void cbTenKhoa_SelectedIndexChanged(object sender, EventArgs e)
{ dbConn.Open(); string str = "SELECT Lop.MaLop, Lop.TenLop, Lop.SiSo, KhoaHoc.TenKhoa FROM KhoaHoc INNER JOIN Lop ON KhoaHoc.MaKhoa = Lop.MaKhoa WHERE KhoaHoc.TenKhoa ='"+ cbTenKhoa.Text +"'";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn);
DataSet dbSet = new DataSet(); dbAdpt.Fill(dbSet); dbConn.Close(); dtgridTTLop.DataSource = dbSet.Tables[0];
} //Cập nhật dữa liệu private void btnCapNhat_Click(object sender, EventArgs e) { dbConn.Open();
DataSet dbSet = new DataSet(); string str = "Update Lop set MaKhoa = '" + txtMaKhoa.Text + "', SiSo = '" + txtSiSo.Text + "', TenLop = '" + txtTenLop.Text + "' Where MaLop = '" + txtMaLop.Text + "'";
OleDbCommand dbComd = new OleDbCommand(str, dbConn); dbComd.ExecuteNonQuery(); dbConn.Close();
Xử lý sự kiện cho linklbXemTatCa:
//Xem tất cả các thông tin của lớp private void linkLbXemTatCa_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
//Đưa dữ liệu vaò cbTenKhoa và đồng thời hiển thị dữ liệu vào lưới khi chọn khóa học private void cbTenKhoa_SelectedIndexChanged(object sender, EventArgs e)
{ dbConn.Open(); string str = "SELECT Lop.MaLop, Lop.TenLop, Lop.SiSo, KhoaHoc.TenKhoa FROM KhoaHoc INNER JOIN Lop ON KhoaHoc.MaKhoa = Lop.MaKhoa WHERE KhoaHoc.TenKhoa ='"+ cbTenKhoa.Text +"'";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn);
DataSet dbSet = new DataSet(); dbAdpt.Fill(dbSet); dbConn.Close(); dtgridTTLop.DataSource = dbSet.Tables[0];
Xử lý sự kiện cho btnCapNhat private void btnCapNhat_Click(object sender, EventArgs e) { dbConn.Open();
DataSet dbSet = new DataSet(); string str = "Update Lop set MaKhoa = '" + txtMaKhoa.Text + "', SiSo = '" + txtSiSo.Text + "', TenLop = '" + txtTenLop.Text + "' Where MaLop = '" + txtMaLop.Text + "'";
OleDbCommand dbComd = new OleDbCommand(str, dbConn); dbComd.ExecuteNonQuery(); dbConn.Close();
Xử lý sự kiện cho btnThoat
//Đóng form lại private void btnThoatLop_Click(object sender, EventArgs e) { this.Close();
Đưa lữ liệu vào cbTenKhoa
//Đưa dữ liệu vaò cbTenKhoa và đồng thời hiển thị dữ liệu vào lưới khi chọn khóa học private void cbTenKhoa_SelectedIndexChanged(object sender, EventArgs e)
{ dbConn.Open(); string str = "SELECT Lop.MaLop, Lop.TenLop, Lop.SiSo, KhoaHoc.TenKhoa FROM KhoaHoc INNER JOIN Lop ON KhoaHoc.MaKhoa = Lop.MaKhoa WHERE KhoaHoc.TenKhoa ='"+ cbTenKhoa.Text +"'";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str,
DataSet dbSet = new DataSet(); dbAdpt.Fill(dbSet); dbConn.Close(); dtgridTTLop.DataSource = dbSet.Tables[0];
Đưa dữ liệu vào combobox vào dtgrid
//private để hiển thị thông tin vào datagridview private void HienThi()
{ dbConn.Open(); string str = "SELECT Lop.MaLop, Lop.TenLop, Lop.SiSo, KhoaHoc.TenKhoa FROM KhoaHoc INNER JOIN Lop ON KhoaHoc.MaKhoa = Lop.MaKhoa";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn);
DataSet dbSet = new DataSet(); dbAdpt.Fill(dbSet); dbConn.Close(); dtgridTTLop.DataSource = dbSet.Tables[0];
} //Hiển thị dữ liệu và đưa thông tin tên khóa vào cbTenKhoa private void frmLop_Load(object sender, EventArgs e)
{ HienThi(); dbConn.Open(); string str = "SELECT TenKhoa FROM KhoaHoc";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn); dbAdpt.Fill(dbSet); dbConn.Close(); cbTenKhoa.DataSource = dbSet.Tables[0]; cbTenKhoa.DisplayMember = "TenKhoa";
Form bộ môn – frmBoMon
- Vào Add New Item -> Windows Form để tạo ra form mới có tên là frmHSSV Trong properties nhập vào text tiêu đề form: Thông tin bộ môn
- Từ hộp công cụ, rê thanh điều khiển datagridview vào form, đổi thuộc tính name cho nó là dtgridTTBM
Form BoMon là một biểu mẫu đơn giản chỉ hiển thị các thông tin về bộ môn, giúp người dùng nhanh chóng nắm bắt tổng quan về nội dung bộ môn Đây không phải là phương tiện để thực hiện các chức năng thao tác hay chỉnh sửa dữ liệu trên datagridview, mà chỉ phục vụ mục đích xem và trình bày thông tin một cách rõ ràng, trực quan.
- Nhưng để đưa dữ liệu vào datagridview thì banjc ũng cần phải thêm đoạn mã cho nó:
//Private hiển thị thông tin bộ môn vào datagridview private void frmBoMon_Load(object sender, EventArgs e) {
//Câu lệnh kết nối cơ sở dữ liệu OleDbConnection dbConn = new OleDbConnection("Provider
= Microsoft.JET.OLEDB.4.0; Data Source = " +
Application.StartupPath + "\\QLSVTT.mdb"); dbConn.Open();
OleDbDataAdapter dbAdpt = new OleDbDataAdapter("SELECT
DataSet dbSet = new DataSet(); dbAdpt.Fill(dbSet); dbConn.Close(); dtgridTTBM.DataSource = dbSet.Tables[0];
Form hồ sơ sinh viên – frmHSSV
Hình 4.10: From hồ sơ sinh viên
Để tạo ra một form mới tên là frmHSSV, bạn vào Add New Item và chọn Windows Form, sau đó đặt tên là frmHSSV Trong phần Properties, nhập vào thuộc tính Text với nội dung "Hồ sơ sinh viên" để xác định tiêu đề cho form.
- Thêm datagridview vào form, đổi thuộc tính name là dtgridHSSV
Đây là mẫuForm dành cho đối tượng sử dụng hệ thống thông tin chung và cơ bản về sinh viên thực tập Mẫu này không có chức năng thực hiện các thao tác như thêm, sửa, xóa, lưu hay tìm kiếm dữ liệu trong hệ thống.
- Để lấy dữ liệu vào dtgridview ta bạn pahir thêm đoạn mã sau vào phương thức frmHSSV_Load:
//Câu lện hiển thị thông tin về sinh viên vào datagridview private void frmHSSV_Load(object sender, EventArgs e) {
//Câu lệnh kêt nối cơ sở dữ liệu OleDbConnection dbConn = new OleDbConnection("Provider
= Microsoft.JET.OLEDB.4.0; Data Source = " +
Application.StartupPath + "\\QLSVTT.mdb"); dbConn.Open();
//Câu lệnh truy vấn để lấy thông tin sinh viên vào datagridview string strString = "SELECT SinhVien.MaSV,
SinhVien.TenSV, SinhVien.NgaySinh, SinhVien.NoiSinh,
SinhVien.DiaChi, SinhVien.DienThoai, IIF(GioiTinh =
True,'Nam','Nữ') AS Sex, SinhVien.Email, Lop.TenLop FROM Lop INNER JOIN SinhVien ON Lop.MaLop = SinhVien.MaLop";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(strString, dbConn);
DataSet dbSet = new DataSet(); dbAdpt.Fill(dbSet); dbConn.Close(); dtgridHSSV.DataSource = dbSet.Tables[0];
Form hồ sơ giảng viên – frmHSGV
Hình 4.11: Form hồ sơ giảng viên
- Vào Add New Item -> Windows form tạo ra một form mới có tên là frmHSGV Trong properties nhập vapf text tiêu đề của form : Hồ sơ giảng viên
- Từ toolbox, rê thanh điều khiển datagridview vào form, đổi thuộc tính Name là dgvHSGV
Mẫu hồ sơ giảng viên cung cấp các thông tin chung và khái quát về giảng viên hướng dẫn thực tập, giúp người dùng dễ dàng tiếp nhận và nắm bắt nhanh các dữ liệu cần thiết Mẫu này thiết kế để đảm bảo tính ổn định, không cho phép chỉnh sửa thông tin đã điền trên hệ thống, đảm bảo tính chính xác và thống nhất của dữ liệu.
- Đoạn mà thêm của phương thức frmHSGV_Load: private void frmHSGV_Load(object sender, EventArgs e) {
//Câu lệnh kết nố cơ sở dữ liệu
OleDbConnection dbConn = new OleDbConnection("Provider
= Microsoft.JET.OLEDB.4.0; Data Source = " +
Application.StartupPath + "\\QLSVTT.mdb"); dbConn.Open();
//Câu lệnh truy vấn để lấy thông tin về giảng viên hướng dẫn thực tập string str = "SELECT GiangVienHDTT.MaGV, GiangVienHDTT.TenGV, IIF(GioiTinhGV=True,'Nam','Nữ') AS Sex,
GiangVienHDTT.EmailGV, GiangVienHDTT.DiaChiGV, BoMon.TenBM FROM
BoMon INNER JOIN GiangVienHDTT ON BoMon.MaBM =
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn);
DataSet dbSet = new DataSet(); dbAdpt.Fill(dbSet); dbConn.Close(); dgvHSGV.DataSource = dbSet.Tables[0];