Chương I :Tổng quan về lập trình C++ môn Cơ sở dữ liệu và giải thuật | Trường đại học Kinh Doanh và Công Nghệ Hà Nội
C++ chính là một ngôn ngữ lập trình phổ biến và mạnh mẽ, nócó kiểu dữ liệu tĩnh và hỗ trợ gần như tất cả các phương pháp lập trình như: lập trình hướng thủ tục, lập trình hướng module và lập trình hướng đối tượng. Vào năm 1990 thì C++ đã trở thành một ngôn ngữ thương mại phổ biến tại thời điểm này. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời đọc đón xem!
Môn: Cơ sở dữ liệu và giải thuật
Trường: Đại học Kinh Doanh và Công Nghệ Hà Nội
Thông tin:
Tác giả:
Preview text:
lOMoAR cPSD| 48704538 Mục Lục
Chương I :Tổng quan về lập trình C++ 1.
Các kiểu dữ liệu trong C++, khung chương trình và cách khai báo biến
2.Khung chương trình và các cách khai báo biến
3.Các câu lệnh nhập xuất và cấu trúc các câu lệnh điều khiển 4.Lập trình hàm
5.Xử lý các xâu trong C++
Chương II : Phân tích và thiết kế
1.Các Chức Năng Của Chương Trình Quản Lý Sinh Viên 1.1 Thêm Thông Tin Sinh
1.2 Sửa Thông Tin Sinh Viên 1.3 Xóa Sinh Viên
1.4 Tìm Kiếm sinh viên thêo tên
1.5sắp xếp sinh viên theo điểm trung bình
1.6 sắp xếp sinh viên theo tên
1.7 Hiển Thị Danh Sách Sinh Viên 2 .Phân Tích
Chương III: Chương Trình Thử Nghiệm
1.Giao Diện Và Cách sử dụng lOMoAR cPSD| 48704538
Chương I :Tổng quan về lập trình C++
C++ chính là một ngôn ngữ lập trình phổ biến và mạnh mẽ, nó có kiểu dữ liệu tĩnh và hỗ
trợ gần như tất cả các phương pháp lập trình như: lập trình hướng thủ tục, lập trình
hướng module và lập trình hướng đối tượng. Vào năm 1990 thì C++ đã trở thành một
ngôn ngữ thương mại phổ biến tại thời điểm này.
Ngôn ngữ C++ được ra đời vào năm 1983 do Bjarne phát triển dựa trên nguyên tắc cơ
bản của ngôn ngữ mẹ C. Vì dựa trên C để phát triển nên ngôn ngữ C++ gần như mang
những đặc tính của C, có thêm sự nâng cấp và bổ sung cần thiết một vài chức năng riêng biệt.
Ưu điểm của lập trình C++ •
Tính phổ biến: Đầu tiên thì ngôn ngữ C++ là một trong những ngôn ngữ lập
trình phổ biết nhất trên thế giới •
Tính thực thi nhanh: Nếu ta đã quen về C++ thì có thể thao tác một cách
nhanh chóng. Một trong những mục tiêu chung của lập trình C++ là khả năng
thực thi. Nếu chúng ta cần thêm các tính năng cho chương trình, thì C++ cho
phép chúng ta dùng ngôn ngữ Assembly (là hợp ngữ) – Một ngôn ngữ lập
trình bậc thấp nhất để có thể giao tiếp trực tiếp với phần cứng của máy tính •
Thư viện đầy đủ: Có rất nhiều tài nguyên cho người lập trình với C++, nó
còn bao gồm cả đồ hoạ: API, 2D, 3D, vật lý các thiết bị âm thanh hỗ trợ giúp
cho các lập trình viên dễ dàng thực hành •
Đa mô hình: Thêm nữa C++ cho phép chúng ta lập trình theo cấu trúc tuyến
tính, hướng chức năng và hướng đối tượng đa dạng tuỳ vào yêu cầu của mỗi người lập trình
1. Các kiểu dữ liệu trong C++, khung chương trình và cách khai báo biến
Một chương trình C++ cơ bản thường được bắt đầu bởi dòng include khai báo thư
viện, sau đó là hàm main. Tất cả mọi thứ của chương trình đều sẽ chạy dọc theo hàm
main từ trên xuống dưới, có nghĩa là nếu bạn viết một hàm ngoài main và trong main
không gọi đến hàm đấy có nghĩa là hàm đấy sẽ không chạy trong chương trình, một
hàm luôn luôn phải kết thúc bởi dấu chấm phẩy (;) . Dưới đây là bộ khung cơ bản của
chương trình Hello world bằng C++.
#include < iostream > using namespace std; lOMoAR cPSD| 48704538
int main() { cout << "Hello world !"; return 0; }
Có rất nhiều kiểu dữ liệu trong C++, đối với các bạn mới bắt đầu và để làm các bài tập
cơ bản thì nên tìm hiểu trước về int, long, long long, float, double, long double, char, string,
về cách biểu diễn và khoảng của mỗi kiểu dữ liệu. Sau khi đã làm các bài tập và hiểu
rõ rồi thì có thể tìm hiểu thêm các kiểu dữ liệu khác. Dưới đây là một vài ví dụ về cách khai báo biến trong C++.
#include < iostream > using namespace std; int main() {
int a = 10; // Khai báo biến a kiểu int có giá trị nguyên là 10
float b = 1.5; // Khai báo biến b kiểu float có giá trị thực là 1.5
char c; // khai báo biến c có kiểu dữ liệu là ký tự char c = 'a'; // gán giá trị cho biến c là ký tự 'a'
string d; // khai báo biến d có kiểu dữ liệu là xâu string d = "ok" // gán giá trị cho biến d là xâu "ok" return 0; }
Bảng dưới đây thống kê phạm vi lưu trữ cũng như bộ nhớ tiêu tốn của các kiểu dữ
liệu dạng số trong C++ kèm theo modi 昀椀 er lOMoAR cPSD| 48704538
Ngoài ra, C++ cung cấp một số từ khóa để đưa ra giá trị nhỏ nhất và lớn nhất lưu
trữ được của một kiểu dữ liệu, thể hiện trong bảng dưới đây:
Riêng với kiểu dữ liệu char, kiểu này có thể lưu được cả số lẫn kí tự. Đối với kí tự,
kiểu char lưu trữ được toàn bộ 256256 kí tự thuộc bảng mã ASCII - là bảng kí tự
và mã kí tự sử dụng trong tin học và một số lĩnh vực khác. lOMoAR cPSD| 48704538
2 .Khung chương trình và các cách khai báo biến
Mỗi chương trình C++ cơ bản đều được bắt đầu bởi dòng include khai báo thư viện, tiếp
theo sẽ là hàm main. Tất cả thành phần của chương trình đều sẽ chạy dọc theo hàm
main này từ trên xuống dưới, nghĩa là nếu ta viết một hàm ngoài main và trong main
thì có nghĩa là hàm đấy sẽ không chạy trong chương trình, kết thúc mỗi luôn là dấu chấm phẩy (;).
Trên thực tế có rất nhiều kiểu dữ liệu trong C+, với những người mới bắt đầu muốn làm
các bài tập cơ bản thì nên tìm hiểu trước về: int, long, float, double, char, string đồng
thời về cách biểu diễn và khoảng của mỗi kiểu dữ liệu. Việc tìm hiểu dữ liệu này sẽ giúp
các bạn trong quá trình thực hiện dễ dàng hơn . lOMoAR cPSD| 48704538
3.Các câu lệnh nhập xuất và cấu trúc các câu lệnh điều khiển
Câu lệnh nhập xuất
Đối với ngôn ngữ C++ các bạn có thể thực hiện một các đơn giản đó là nhập
lệnh cin còn nếu xuất để sử dụng thì dùng lệnh cout.
Câu lệnh rẽ nhánh lOMoAR cPSD| 48704538
Đầu tiên bạn có thể sử dụng với lệnh if slse
Cách 2: Bạn có thể sử dụng swith case 4 .Lập trình hàm
Trong quá trình viết các chương trình, nếu các thao tác được thực hiện một cách tuần
tự trong hàm main thì sẽ khó để theo dõi. Khi viết chương trình, nếu như tất cả mọi thứ
đều được viết tuần tự trong hàm main thì rất khó để theo dõi. Do đó nếu một hàm được lOMoAR cPSD| 48704538
sử dụng nhiều lần thì nên viết một hàm con ra ngoài. Điều này sẽ giúp cho code của
bạn trở nên gọn gàng và dễ theo dõi cũng như code đơn giản hơn.
5 .Xử lý các xâu trong C ++
Với ngôn ngữ lập trình C++, các xâu sẽ được biểu diễn bởi kiểu dữ liệu là string. Mỗi
string là một xâu gồm các ký tự (được biểu diễn bằng kiểu char) nối tiếp nhau. Khác với
xâu trong C là một mảng các char và được kết thúc mảng bới ký tự NULL. Thông
thường các phép xử lý trong xâu sẽ khác so với các phép toán xử lý logic. Việc sử dụng
kiểu string trong C++ làm cho việc xử lý xâu trở nên dễ dàng hơn so với kiểu mảng các
ký tự char khác trong C. Bạn có thể sử dụng cách nhập xâu cụ thể như sau:
Chương II : Phân tích và thiết kế lOMoAR cPSD| 48704538
1.Các Chức Năng Của Chương Trình Quản Lý Sinh Viên 1.1 Thêm Thông Tin Sinh Thêm Thông Tin Sinh Viên Nhập Giới Nhập Điểm Nhập Điểm Nhập Nhập Nhập Điểm Tính Toá Hó Tên Tuổi Lý n a
- Khi thêm thông tin sinh viên người dùng cũng có thể chọn nhập số sinh viên cần thêm vào danh sách Hình Minh Họa
1.2 Sửa Thông Tin Sinh Viên lOMoAR cPSD| 48704538 Sửa Thông Tin Sinh Viên Nhập ID Nhập Giới Nhập Điểm Nhập Điểm Nhập Tên Nhập Tuổi Nhập Điểm Lý Tính Toán Hóa Hình Minh Họa 1.3 Xóa Sinh Viên Xóa Sinh Viên Nhập ID Sinh Viên Cần Xóa Xóa Sinh Viên Có ID Vừa Nhập Trong Danh Sách Hệ Thống lOMoAR cPSD| 48704538 Hình Minh Họa
1.4 Tìm Kiếm sinh viên thêo tên lOMoAR cPSD| 48704538 Tìm Kiếm Sinh Viên Theo Tên Nhập Tên Cần Tìm Hiển Thị DSaán chh Tên Vừa Nhập gồm giới 琀 Điểm Điểm Điểm Trung ST I Họ Và Tuổ Điểm Toán Hóa Bình Học T D Tên i lý Lực Hình Minh Họa
1.5 sắp xếp sinh viên theo điểm trung bình
- sắp xếp sinh viên theo điểm trung bình Được Sắp Xếp Theo Thứ
Tự Tăng Dần Từ thấp đến cao Hình Minh Họa
1.6 sắp xếp sinh viên theo tên -Khi chọn sắp xếp sinh viên
theo tên hệ thống sẽ sắp xếp thứ tự tên của sinh viên theo bảng chữ cái abc lOMoAR cPSD| 48704538 Hình Minh Họa
1.7 Hiển Thị Danh Sách Sinh Viên
-Hiển Thị danh sách sinh viên là chức năng sẽ giúp người sử dụng xem được tất cả danh
sách sinh viên đã lưu trong hệ thống bao gồm điểm và học lực của sinh viên
1.8 Lưu danh sách sinh viên
-Chức năng Lưu danh sách sinh viên giúp người dùng lưu tất cả sinh viên mình vừa nhập
vào một file tên là sinhvien.txt do đó nó sẽ lưu chữ tất cả dữ liệu để tránh bị mất 2 . Phân Tích
Chúng ta sẽ tạo một cấu trúc sinh viên như sau, diemTB sẽ được tính bằng trung bình của các môn
toán, lý và hóa. hocluc sẽ được tính toán dựa vào diemTB như yêu cầu của bài toán. struct SinhVien { int id; char ten[30]; char gioiTinh[5]; int tuoi; float diemToan; float diemLy; float diemHoa; float diemTB = 0; char hocluc[10] = "-"; }
Bây giờ chúng ta có thể sử dụng struct SinhVien với đơn giản hơn bằng SV với từ khóa typedef, như sau typedef SinhVien SV;
Sau đây là danh sách các hàm mà chúng ta sẽ sử dụng trong chương trình quản lý sinh viên, các
hàm này sẽ được cung cấp thân hàm sau đó:
void printLine(int n); int idLonNhat(SV a[], int
n); void nhapThongTinSV(SV &sv, int id); void
nhapSV(SV a[], int id, int n); void lOMoAR cPSD| 48704538
capNhatThongTinSV(SV &sv); void capNhatSV(SV
a[], int id, int n); int xoaTheoID(SV a[], int
id, int n); void timKiemTheoTen(SV a[], char
ten[], int n); void tinhDTB(SV &sv); void
xeploai(SV &sv); void sapxepTheoDTB(SV a[], int
n); void sapXepTheoTen(SV a[], int n); void
showStudent(SV a[], int n); int docFile(SV a[],
char fileName[]); void ghiFile(SV a[], int n,
char fileName[]); void pressAnyKey(); Hàm printLine(int n)
Hàm này in ra một dòng có n ký tự "_". Tham số:
n: là số ký tự "_" sẽ được in ra màn hình. Thân hàm printLine(): void printLine(int n) { cout << endl;
for (int i = 0; i < n; i++) { cout << "_"; } cout << endl; } Hàm idLonNhat(SV a[], int n)
Yêu cầu của bài toán là id của sinh viên tự động tăng.
Nên chúng ta sẽ tạo hàm này để lấy ra id lớn nhất của danh sách sinh viên a[]. Tham số: •
a[]: là danh sách sinh viên. •
n: là số lượng sinh viên có trong danh sách. Thân hàm idLonNhat():
int idLonNhat (SV a[], int n) {
int idMax = 0; if ( n > 0) { idMax = a[0].id; for(int i = 0;i < n; i++) { if ( a[i].id > idMax) { idMax = a[i].id; } } } return idMax; }
Hàm nhập thông tin sinh viên
Hàm này được sử dụng để thêm mới sinh viên vào danh sách sinh viên. Với hàm này chúng ta sẽ tách ra thành 2 hàm sau: lOMoAR cPSD| 48704538 •
void nhapThongTinSV(SV &sv, int id). void nhapSV(SV a[], int id, int n). Tham số: •
&sv: nhập thông tin sinh viên sv. Sử dụng tham chiếu &, tức là thông tin sẽ được thay đổi cả
bên trong và bên ngoài hàm. •
a[]: là danh sách sinh viên. •
id: là id (tự động tăng) của sinh viên. •
n: là số lượng sinh viên có trong danh sách. Thân hàm nhapThongTinSV():
void nhapThongTinSV(SV &sv, int id) {
cout << "\n Nhap ten: "; fflush(stdin); gets(sv.ten);
cout << " Nhap gioi tinh: "; gets(sv.gioiTinh); cout
<< " Nhap tuoi: "; cin >> sv.tuoi; cout << " Nhap
diem Toan: "; cin >> sv.diemToan; cout << " Nhap diem
Ly: "; cin >> sv.diemLy; cout << " Nhap diem Hoa: ";
cin >> sv.diemHoa; sv.id = id; tinhDTB(sv); xeploai(sv); } Thân hàm nhapSV():
void nhapSV(SV a[], int id, int n) { printLine(40);
printf("\n Nhap sinh vien thu %d:", n + 1); nhapThongTinSV(a[n], id); printLine(40); }
Hàm cập nhật thông tin sinh viên
Hàm này được sử dụng để cập nhật thông tin sinh viên theo ID. Với hàm này chúng ta sẽ tách ra thành 2 hàm sau: •
void capNhatThongTinSV(SV &sv). •
void capNhatSV(SV a[], int id, int n). Tham số: •
&sv: nhập thông tin sinh viên sv. Sử dụng tham chiếu &, tức là thông tin sẽ được thay đổi cả
bên trong và bên ngoài hàm. •
a[]: là danh sách sinh viên. •
id: là id (tự động tăng) của sinh viên. •
n: là số lượng sinh viên có trong danh sách.
Thân hàm capNhatThongTinSV():
void capNhatThongTinSV(SV &sv) {
cout << "\n Nhap ten: "; fflush(stdin); gets(sv.ten);
cout << " Nhap gioi tinh: "; gets(sv.gioiTinh); cout
<< " Nhap tuoi: "; cin >> sv.tuoi; cout << " Nhap
diem Toan: "; cin >> sv.diemToan; cout << " Nhap diem
Ly: "; cin >> sv.diemLy; cout << " Nhap diem Hoa: ";
cin >> sv.diemHoa; tinhDTB(sv); xeploai(sv); } Thân hàm capNhatSV(): lOMoAR cPSD| 48704538
void capNhatSV(SV a[], int id, int n) {
int found = 0; for(int i = 0; i < n; i++) { if ( a[i].id == id) { found = 1; printLine(40);
cout << "\n Cap nhat thong tin sinh vien co ID = " <<
id; capNhatThongTinSV(a[i]); printLine(40); break; } } if ( found == 0) {
printf("\n Sinh vien co ID = %d khong ton tai.", id); } } Hàm xóa sinh viên theo ID
Hàm này được sử dụng để xóa sinh viên khỏi danh sách theo ID. Tình sinh viên có ID đã cho trong
danh sách, nếu tồn tại thì thực hiện xóa sinh viên. Tham số: •
a[]: là danh sách sinh viên. •
id: là id của sinh viên sẽ bị xóa. •
n: là số lượng sinh viên có trong danh sách. Thân hàm xoaTheoID
int xoaTheoID(SV a[], int id, int n) {
int found = 0; for(int i = 0; i < n; i++) { if ( a[i].id == id) { found = 1; printLine(40);
for (int j = i; j < n; j++) { a[j] = a[j+1]; }
cout << "\n Da xoa SV co ID = " << id; printLine(40); break; } } if ( found == 0) {
printf("\n Sinh vien co ID = %d khong ton tai.", id);
return 0 ; } else { return 1 ; } }
Hàm tìm kiếm sinh viên theo tên
Hàm này được sử dụng để tìm kiếm sinh viên trong danh sách theo tên. Không phân biệt chữ hoa, chữ thường. Tham số: •
a[]: là danh sách sinh viên. •
ten[]: là từ khóa để so sánh với tên sinh viên.
n: là số lượng sinh viên có trong danh sách. Thân hàm timKiemTheoTen(): lOMoAR cPSD| 48704538
void timKiemTheoTen(SV a[], char ten[], int n) { SV arrayFound[MAX]; char tenSV[30]; int found = 0;
for(int i = 0; i < n; i++) { strcpy(tenSV, a[i].ten);
if(strstr(strupr(tenSV), strupr(ten))) { arrayFound[found] = a[i]; found++; } }
showStudent(arrayFound, found); }
Hàm tính điểm trung bình và xếp loại học lực Thân hàm tinhDTB(): void tinhDTB(SV &sv) {
sv.diemTB = (sv.diemToan + sv.diemLy + sv.diemHoa) / 3; } Thân hàm xeploai(): void xeploai(SV &sv) {
if(sv.diemTB >= 8) strcpy(sv.hocluc, "Gioi"); else
if(sv.diemTB >= 6.5) strcpy(sv.hocluc, "Kha"); else
if(sv.diemTB >= 5) strcpy(sv.hocluc, "Trung binh"); else strcpy(sv.hocluc, "Yeu"); }
Hàm sắp xếp danh sách sinh viên theo điểm trung bình
Hàm này được sử dụng để sắp xếp sinh viên theo điểm trung bình theo thứ tự tăng dần. Tham số: •
a[]: là danh sách sinh viên. •
n: là số lượng sinh viên có trong danh sách. Thân hàm sapxepTheoDTB():
void sapxepTheoDTB(SV a[], int n) { //Sap xep theo DTB tang dan SV tmp; for(int i = 0;i < n;i++){
for(int j = i+1; j < n;j++){
if(a[i].diemTB > a[j].diemTB){ tmp = a[i]; a[i] = a[j]; a[j] = tmp; } } } }
Hàm sắp xếp danh sách sinh viên theo tên
Hàm này được sử dụng để sắp xếp sinh viên theo tên theo thứ tự tăng dần và không phân biệt chữ hoa, chữ thường. Tham số: •
a[]: là danh sách sinh viên. lOMoAR cPSD| 48704538 •
n: là số lượng sinh viên có trong danh sách. Thân hàm sapXepTheoTen():
void sapXepTheoTen(SV a[], int n) {
//Sap xep sinh vien theo ten theo thu tu tang dan SV tmp; char tenSV1[30]; char tenSV2[30]; for(int i = 0;i < n; i++) { strcpy(tenSV1, a[i].ten); for(int j = i+1; j < n; j++) { strcpy(tenSV2, a[j].ten);
if(strcmp(strupr(tenSV1), strupr(tenSV2)) > 0) { tmp = a[i]; a[i] = a[j]; a[j] = tmp; } } } }
Hàm hiện thị danh sách sinh viên ra màn hình
Hàm này được sử dụng để hiện thị danh sách sinh viên ra màn hình. Tham số: •
a[]: là danh sách sinh viên. •
n: là số lượng sinh viên có trong danh sách. Thân hàm showStudent():
void showStudent(SV a[], int n) { printLine(100);
cout <<"\n\STT\tID\tHo va ten\tGioi tinh\tTuoi\tToan\tLy\tHoa\tDiem TB\ tHoc luc";
for(int i = 0; i < n; i++) {
// in sinh vien thu i ra man hinh printf("\n %d", i + 1); printf("\t%d", a[i].id); printf("\t%s", a[i].ten);
printf("\t\t%s", a[i].gioiTinh); printf("\t\t%d", a[i].tuoi);
printf("\t%.2f\t%.2f\t%.2f", a[i].diemToan, a[i].diemLy, a[i].diemHoa);
printf("\t%.2f", a[i].diemTB); printf("\t%s", a[i].hocluc); } printLine(100); }
Hàm đọc danh sách sinh viên từ file
Hàm này được sử dụng để đọc danh sách sinh viên từ file. lOMoAR cPSD| 48704538 Tham số: •
a[]: là danh sách sinh viên sẽ được đọc ra từ file. •
fileName[]: là tên của file lưu trữ danh sách sinh viên.
Giá trị trả về của hàm là số lượng sinh viên có trong file và danh sách sinh viên. Thân hàm docFile():
int docFile(SV a[], char fileName[]) { FILE * fp; int i = 0; fp = fopen ( fileName, "r");
cout << "Chuan bi doc file: "; puts(fileName); // doc thong tin sinh vien
while (fscanf(fp, "%5d%30s%5s%5d%10f%10f%10f%10f%10s\n", &a[i].id, &a[i].ten,
&a[i].gioiTinh, &a[i].tuoi, &a[i].diemToan, &a[i].diemLy, &a[i].diemHoa,
&a[i].diemTB, &a[i].hocluc) != EOF) { i++;
cout << " Doc ban ghi thu: " << i << endl; }
cout << " So luong sinh vien co san trong file la: " << i << endl; cout << endl;
// tra ve so luong sinh vien duoc doc tu file return i; fclose ( fp); }
Hàm ghi danh sách sinh viên từ file
Hàm này được sử dụng để đọc danh sách sinh viên từ file. Tham số: •
a[]: là danh sách sinh viên sẽ được ghi vào file. •
n: là số lượng sinh viên. •
fileName[]: là tên của file lưu trữ danh sách sinh viên.
Giá trị trả về của hàm là số lượng sinh viên có trong file và danh sách sinh viên. Thân hàm ghiFile():
void ghiFile(SV a[], int n, char fileName[]) { FILE * fp; fp = fopen ( fileName,"w"); for(int i = 0;i < n;i++){
fprintf(fp, "%5d%30s%5s%5d%10f%10f%10f%10f%10s\n", a[i].id, a[i].ten,a[i].gioiTinh,
a[i].tuoi, a[i].diemToan, a[i].diemLy, a[i].diemHoa, a[i].diemTB, a[i].hocluc); } fclose ( fp); }
Hàm main của chương trình quản lý sinh vien trong C++
Hàm main của chúng ta được sử dụng để khởi tạo menu và điều khiển chương trình quản lý sinh viên.
Giải thích ý nghĩa của các biến: lOMoAR cPSD| 48704538 •
key: là giá trị bạn nhập để chọn tùy chọn trong menu. •
fileName: tên của file lưu trữ danh sách sinh viên. •
arraySV[]: lưu trữ một mảng các struct sinh viên. •
soluongSV: số lượng sinh viên hiện tại của mảng arraySV.
idCount: là biến đếm id tự
động tăng của sinh viên.
Khi khởi tạo chương trình chúng ta sẽ đọc danh sách sinh viên có sẵn trong file sinhvien.txt, đồng thời
lấy ra được số lượng sinh viên và id lớn nhất hiện tại của danh sách sinh viên.
Chương III: Chương Trình Thử Nghiệm
1-Giao Diện Và Cách sử dụng
Khi Chạy chương Trình Ta sẽ có giao diện như sau:
Trong giao diện ta sẽ có số lượng sinh viên có trong danh sách hệ thống và các chức năng
Khi ta cần sử dụng các chức năng nào chỉ cần nhập số tương ứng trong chương trình