TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN NGUYÊN LÍ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG ĐỀ T I: QUẢN LÍ SINH VIÊN Sinh viên thực hiện : Giảng viên hướng dẫn :
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN NGUYÊN LÍ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
ĐỀ T I:
QUẢN LÍ SINH VIÊN
Sinh viên thực hiện :
Giảng viên hướng dẫn :
Chuyên ngành : CÔNG NGHỆ PHẦN MỀM
Hà Nội, tháng 6 năm 2021.
Trang 2PHIẾU CHẤM ĐIỂM
ST
T
Họ và tên sinh
viên
Nội dung thực hiện Điểm Chữ
ký
1
2
Họ và tên giảng
viên
Giảng viên chấm 1:
Giảng viên chấm 2:
Trang 3PHỤ LỤC
Phụ lục
Lời nói đầu 2 Chương I: Tổng quan về lập trình hướng đối tượng 3
1.1.Khái niệm về lập trình hướng đối tượng – OPP 3
1.2.Nguyên lý cơ bản của OPP 3
1.2.1 Tính đóng gói (Encapsulation) 3
1.2.2 Tính kế thừa (Inheritance) 4
1.2.3 Tính đa hình (Polymorphism)4
1.2.4 Tính trừu tượng (Abstraction) 4
1.3 Các ưu điểm và ứng dụng của lập trình hướng đối tượng 4
1.3.1.Ưu điểm chính của OPP 4
1.3.2.Ứng dụng và 1 số ngôn ngữ của OPP 4
Chương : Lập trình II 5
2.1 Yêu cầu 5
Chương III : Thực hành 10
3.1 Code mẫu 10
3.2 Kết quả 15
Kết luận 17
1
Trang 4LỜI NÓI ĐẦU
Ngày nay, Công nghệ thông tin đã và đang đóng vai trò rất quan trọng trong đời sống kinh tế - xã hội của rất nhiều quốc gia trên thế giới Việc nhanh chóng đưa ứng dụng công nghệ thông tin vào quá trình tự động hoá trong sản xuất kinh doanh là vấn đề đang luôn được quan tâm bởi lẽ công nghệ thông tin có vai trò rất lớn trong các hoạt động kinh tế, sản xuất kinh doanh, bán hàng, xúc tiến thương mại, quản trị doanh nghiệp
Cùng với tốc độ phát triển của thế giới, ngành công nghệ thông tin ở Việt Nam cũng đang được chú trọng và phát triển Nó nhanh chóng trở thành một trong những ngành mũi nhọn và là tiền đề cho sự phát triển của đất nước Mặc dù còn đang trong thời kỳ non trẻ, nhưng ngành công nghệ thông tin đã được ứng dụng và phát triển khá mạnh mẽ, trong các lĩnh vực về quảng bá thương hiệu và quản lý sản xuất
Quản lý sinh viên trường đại học Điện Lực được nghiên cứu
và thực hiện Nhằm mục đích tin học hóa vào việc quản lý, góp phần nâng cao độ chính xác về thông tin cá nhân sinh viên: đồng thời làm giảm khối lượng công việc, giảm bớt chi phí về in ấn tài liệu, hồ sơ quản lí sinh viên và diện tích lưu trữ hồ sơ giấy tờ Trong thời gian tìm hiểu hệ thống đang hoạt động, cách thức xây dựng, các nghiệp vụ làm việc của phần mềm quản lý sinh viên trường đại học Điện Lực đã phân tích hệ thống đang hoạt động và đưa ra hệ thống mới tốt hơn; đồng thời xây dựng một chương trình quản lý được thông tin cá nhân sinh viên , áp dụng Công nghệ thông tin là lập trình hướng đối tượng vào bài toán quản lí sinh viên
Em xin chân thành cảm ơn thầy: đã tận tình hướng dẫn
em, giúp em hoàn thành tốt bài báo cáo tổng hợp này
Trang 5Chương I: Tổng quan về lập trình hướng đối tượng 1.1.Khái niệm về lập trình hướng đối tượng – OPP
- Lập trình hướng đối tượng (OOP) là một kỹ thuật lập trình cho phép lập trình viên tạo ra các đối tượng trong code trừu tượng hóa các đối tượng Khi phát triển ứng dụng sử dụng OOP, chúng ta
sẽ định nghĩa các lớp (class) để mô hình các đối tượng thực tế Trong ứng dụng các lớp này sẽ được khởi tạo thành các đối tượng
và trong suốt thời gian ứng dụng chạy, các phương thức (method) của đối tượng này sẽ được gọi
- Lập trình hướng đối tượng (Object Oriented Programming – OOP) là một trong những kỹ thuật lập trình rất quan trọng và sử dụng nhiều hiện nay Hầu hết các ngôn ngữ lập trình hiện nay như Java, PHP, NET, Ruby, Python… đều hỗ trợ OOP
1.2.Nguyên lý cơ bản của OPP
1.2.1 Tính đóng gói (Encapsulation)
- Các dữ liệu và phương thức có liên quan với nhau được đóng gói thành các lớp để tiện cho việc quản lý và sử dụng Tức là mỗi lớp được xây dựng để thực hiện một nhóm chức năng đặc trưng của riêng lớp đó Ngoài ra, đóng gói còn để che giấu một số thông tin và chi tiết cài đặt nội bộ để bên ngoài không thể nhìn thấy Nói chung trạng thái đối tượng không hợp lệ thường do: chưa được kiểm tra tính hợp lệ, các bước thực hiện không đúng trình tự hoặc bị bỏ qua nên trong OOP có một quy tắc quan trọng cần nhớ đó là phải luôn khai báo các trạng thái bên trong của đối tượng là private và chỉ cho truy cập qua các public/protected, method/property
1.2.2 Tính kế thừa (Inheritance)
Nó cho phép xây dựng một lớp mới dựa trên các định nghĩa của lớp đã có Có nghĩa là lớp cha có thể chia sẽ dữ liệu và phương thức cho các lớp con Các lớp con khỏi phải định nghĩa lại, ngoài ra có thể mở rộng các thành phần kế thừa và bổ sung thêm các thành phần mới Tái sử dụng mã nguồn 1 cách tối ưu, tận dụng được mã nguồn Một số loại kế loại kế thừa thường gặp: đơn
kế thừa, đa kế thừa, kế thừa đa cấp, kế thừa thứ bậc
4
Trang 6Khi bắt đầu xây dựng ứng dụng chúng ta sẽ bắt đầu thiết kế định nghĩa các lớp trước Thông thường một số lớp có quan hệ với những lớp khác, chúng có những đặc tính giống nhau
1.2.3 Tính đa hình (Polymorphism)
Tính đa hình là một hành động có thể được thực hiện bằng nhiều cách khác nhau Đây lại là một tính chất có thể nói là chứa đựng hầu hết sức mạnh của lập trình hướng đối tượng
Hiểu một cách đơn giản hơn: Đa hình là khái niệm mà hai hoặc nhiều lớp có những phương thức giống nhau nhưng có thể thực thi theo những cách thức khác nhau
1.2.4 Tính trừu tượng (Abstraction)
Trừu tượng có nghĩ là tổng quát hóa một cái gì đó lên, không cần chú ý chi tiết bên trong Nó không màng đến chi tiết bên trong là gì và người ta vẫn hiểu nó mỗi khi nghe về nó
Ví dụ: Bạn chạy xe tay ga thì có hành động là tăng ga để tăng tốc, thì chức năng tăng ga là đại diện cho trừu tượng (abstraction) Người dùng chỉ cần biết là tăng ga thì xe tăng tốc, không cần biết bên trong nó làm thế nào
Ở đây trong lập trình OOP, tính trừu tượng nghĩa là chọn ra các thuộc tính, phương thức của đối tượng cần cho việc giải quyết bài toán đang lập trình Vì một đối tượng có rất nhiều thuộc tính phương thức, nhưng với bài toán cụ thể không nhất thiết phải chọn tất cả
1.3 Các ưu điểm và ứng dụng của lập trình hướng đối tượng
1.3.1.Ưu điểm chính của OPP
- Dựa trên nguyên lý kế thừa, trong quá trình mô tả các lớp
có thể loại bỏ những chương trình bị lặp, dư Và có thể mở rộng khả năng sử dụng các lớp mà không cần thực hiện lại Tối ưu và tái sử dụng code hiệu quả
- Đảm bảo rút ngắn thời gian xây dựng hệ thống và tăng năng suất thực hiện
- Tạo ra các chương trình an toàn, bảo mật
Trang 7- Dễ dàng mở rộng và nâng cấp.
- Rút ngắn thời gian xây dựng hệ thống, tăng năng suất và hiệu quả hơn
- Sự xuất hiện của 2 khái niệm mới là lớp và đối tượng chính
là đặc trưng của phương pháp lập trình hướng đối tượng Nó đã giải quyết được các khuyết điểm của phương pháp lập trình hướng cấu trúc để lại Ngoài ra 2 khái niệm này đã giúp biểu diễn tốt hơn thế giới thực trên máy tính
1.3.2.Ứng dụng và 1 số ngôn ngữ của OPP
- Dùng để phát triển phần mềm trong nhiều lĩnh vực khác nhau :
+ Hệ thống thời gian thực
+ Cơ sở dữ liệu hướng đối tượng
+ Hệ siêu văn bản, đa phương tiện
+ Trí tuệ nhân tạo
+ Lập trình song song, mạng nơron …
- Hầu hết các ngôn ngữ lập trình đều hỗ trợ OPP, có thể chia làm 2 loại:
+ Ngôn ngữ hỗ trợ hướng đối tượng: Object C, Pascal, C++, Delphi…
+ Ngôn ngữ hướng đối tượng: SmallTalk, JAVA, C#…
- Những ngôn ngữ OPP thịnh hành nhất hiện nay:
+ Visual C++
+VB.NET, C#
Chương : Lập trình II 2.1 Yêu cầu:
- Ngôn ngữ lập trình: sử dụng ngôn ngữ lập trình c++
6
Trang 8- Lý do chọn ngôn ngữ lập trình:
Hạn chế chi phí và rủi ro Khi có sự cố thì chỉ ảnh hưởng đến một hoặc một số bộ phận của tổ chức mà thôi
Đơn giản đối với người sử dụng
Khi cài đặt bộ phận sau có kinh nghiệm hơn, tránh được các sai sót đã mắc phải khi cài đặt các bộ phận trước
- Công cụ hỗ trợ: Dev C++
- Kết quả: demo 1 số hình ảnh về code
Hình 1: code tạo đối tượng truy vấn và không truy vấn ngoài
class
Trang 9Hình 2: code hàm khởi tạo và hàm hủy
8
Trang 10Hình 4: code hàm nhập và hàm xuất
Hình 5: code xây dựng class sinh viên thương mại điện tử kế thừa lớp sinh viên
Trang 11Hình 6: code hàm nạp chồng và toán tử so sánh < cho toán tử 2 ngôi
10
Trang 12Hình 7: code hàm main tạo con trỏ cho class , các điều kiện : của giá trị và code sắp xếp giảm dần theo điểm
Chương III : Thực hành 3.1 Code mẫu
#include <iostream>
#include<string>
using namespace std;
class SV
{
private:
string MaSV;
string hoten;
public:
SV()
{
this->MaSV="";
this->hoten="";
}
~SV()
Trang 13this->MaSV="";
this->hoten="";
}
void nhap()
{
cout<<"\nNhap ma sinh vien: ";
fflush(stdin);
getline(cin,this->MaSV);
cout<<"Nhap ho ten:";
fflush(stdin);
getline(cin,this->hoten);
}
void xuat()
{
cout<<"\nMa sinh vien: "<<this->MaSV<<endl; cout<<"Ho ten: "<<this->hoten<<endl; }
};
class SVTMDT:public SV
{
private:
float toan;
float ly;
float anh;
public:
SVTMDT()
{
12
Trang 14this->toan = 0;
this->ly = 0;
this->anh = 0;
}
~SVTMDT()
{
this->toan = 0;
this->ly = 0;
this->anh = 0;
}
void nhap()
{
SV::nhap();
cout<<"Nhap diem toan:";
cin>>this->toan;
cout<<"Nhap diem ly:";
cin>>this->ly;
cout<<"Nhap diem anh:";
cin>>this->anh;
}
void xuat()
{
SV::xuat();
cout<<"Diem toan: "<<this->toan <<endl; cout<<"Diem ly: "<<this->ly <<endl; cout<<"Diem anh: "<<this->anh <<endl; }
friend int operator < (SVTMDT &a, SVTMDT &b) {
Trang 15if (a.dtb() < b.dtb()) return 1;
else
return 0;
}
float dtb()
{
return (toan + ly + anh);
}
};
int main()
{
SV sv;
cout<<"Nhap thong tin cho sinh vien:";
sv.nhap();
cout<<"\nThong tin sinh vien:";
sv.xuat();
int n,i;
SVTMDT *svtmdt;
cout<<"\n Nhap so sinh vien:";
cin>>n;
svtmdt=new SVTMDT[n];
cout<<"Nhap thong tin sinh vien:";
for (i=0;i<n;i++)
{
cout << "\n==========> Nhap sinh vien [" << i+1
<< "]:" << endl;
svtmdt[i].nhap();
14
Trang 16cout<<"\nThong tin sinh vien:";
for (i=0;i<n;i++)
{
cout << "\n==========> Sinh vien [" << i+1 <<
"]:" << endl;
svtmdt[i].xuat();
cout<<"Diem trung binh: "<<svtmdt[i].dtb()<<endl; }
SVTMDT tg;
for (i=0;i<n-1;i++)
for (int j=i+1;j<n;j++)
if (svtmdt[i] < svtmdt[j])
{
tg = svtmdt[i];
svtmdt[i] = svtmdt[j];
svtmdt[j] = tg;
}
cout<<"\nThong tin sinh vien sau khi sap xep giam dan theo diem: ";
for (i=0;i<n;i++)
{
svtmdt[i].xuat();
cout<<"Diem trung binh:
"<<svtmdt[i].dtb()<<endl;
}
}
Trang 173.2 Kết quả:
17
Trang 19KẾT LUẬN
Kết quả đạt được Sau một thời gian nghiên cứu và bắt tay vào thực hiện, với sự mong muốn xây dựng một hệ thống quản lý sinh viên và những người có nhu cầu, được sự quan tâm và hướng dẫn tận tình của thầy Nguyễn Văn Đoàn, em đã bước đầu hoàn thành đề tài: Quản lý sinh viên bằng lập trình hướng đối tượng Kết quả đạt được:
• Tìm hiểu hoạt động của một phần mềm quản lý sinh viên
• Xây dựng được hệ thống quản lý class sinh viên và class kế thừa của lớp sinh viên
Vì thời gian triển khai có hạn, và việc tìm hiểu công nghệ mới còn gặp nhiều khó khăn do không có nhiều tài liệu nên không tránh được những sai sót Chúng em rất mong nhận được sự đóng góp ý kiến và những hướng dẫn của thầy cô để đồ án thêm hoàn chỉnh Chúng em xin chân thành cảm ơn!
Hướng phát triển Với mục đích ngày càng hoàn thiện để đáp ứng tốt cho việc tin học hóa quản lý danh sách thông tin người đùng, trong tương lai chúng em sẽ cố gắng tìm hiểu kỹ hơn, đi sâu hơn, và cố gắng hoàn thành tốt đề tài hơn
19