Tài liệu đồ án C++ với các nội dung : - Giới thiệu ngôn ngữ lập trình C++ (Thời gian, lịch sử hình thành ngôn ngữ C++, Các kiểu dữ liệu cơ sở, Cấu trúc điều khiển (if, else), Mảng , ...) - Chi tiết đồ án QUẢN LÝ SINH VIÊN bằng ngôn ngữ C++ : + Bối cảnh bài toán, Phân tích bài toán, Sơ đồ tổng quát. + Thuật toán sử dụng trong bài toán quản lý sinh viên + Sơ đồ khối của thuật toán + Toàn bộ Code của chương trình Quản lý sinh viên + Chức năng của phần mềm: Chương trình cho phép Nhập danh sách sinh viên, In danh sách sinh viên vừa nhập, Tìm kiếm và Xóa sinh viên ra khỏi danh sách + Giao diện khi chạy chương trình + Kết luận (Ưu/ nhược của phần mềm, kết quả đạt được và hướng phát triển của phần mềm) *Cảm ơn các bạn rất nhiều vì đã xem và tải tài liệu của mình*
Trang 1ĐỒ ÁN CƠ SỞ NGÀNH KHOA HỌC MÁY TÍNH
ĐỀ TÀI: QUẢN LÝ SINH VIÊN
Giảng viên hướng dẫn: PHẠM KHÁNH LINH Sinh viên thực hiện: Nguyễn Văn Th???
Mã sinh viên: 1921123???
Đà Nẵng, tháng 04/2016
Trang 2MỤC LỤC
PHẦN MỞ ĐẦU: 3
1 LÝ DO CHỌN ĐỀ TÀI 3
2 MỤC TIÊU ĐỀ TÀI 3
3 PHẠM VI NGHIÊN CỨU 3
4 PHƯƠNG PHÁP NGHIÊN CỨU 3
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 4
1.1 GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C/C++ 4
1.2 MỘT SỐ KIẾN THỨC CƠ BẢN VỀ C++ 4
1.2.1 CÁC KIỂU DỮ LIỆU CƠ SỞ 4
1.2.2 CÁC CẤU TRÚC ĐIỀU KHIỂN 6
1.2.3 HÀM 9
1.2.4 MẢNG 9
1.2.5 KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA STRUCT 10
1.2.6 KIỂU DỮ LIỆU TỆP (FILE) 10
1.2.7 CÁC PHÉP TOÁN TRÊN DANH SÁCH ĐẶC 10
1.3 MÔ TẢ BÀI TOÁN QUẢN LÍ SINH VIÊN: 11
CHƯƠNG 2: PHÂN TÍCH XÂY DỰNG CHƯƠNG TRÌNH 13
2.1 GIỚI THIỆU THUẬT TOÁN 13
2.2 CÁC MODUL CHÍNH TRONG CHƯƠNG TRÌNH 13
2.2.1 SƠ ĐỒ TỔNG QUÁT 13
2.2.2 CÁC THUẬT TOÁN 13
2.2.3 MỘT SỐ MODUL CHÍNH CỦA CHƯƠNG TRÌNH 15
CHƯƠNG 3: CÀI ĐẶT CHƯƠNG TRÌNH 19
2.1 TỔNG THỂ CHƯƠNG TRÌNH 19
2.1.1 CÁC HÀM KHAI BÁO 19
2.1.2 HÀM MAIN 20
2.1.3 MỘT SỐ HÀM CHÍNH 22
2.2 MỘT SỐ HÌNH ẢNH KHI CHẠY CHƯƠNG TRÌNH (demo) 27
3.2.1 GIAO DIỆN CHÍNH 27
3.2.2 GIAO DIỆN NHẬP DANH SÁCH 27
3.2.3 GIAO DIỆN IN DANH SÁCH 28
3.2.4 GIAO DIỆN TÌM KIẾM SINH VIÊN 28
3.2.5 GIAO DIỆN XÓA SINH VIÊN 29
TÀI LIỆU THAM KHẢO 31
Trang 3PHẦN MỞ ĐẦU:
1 LÝ DO CHỌN ĐỀ TÀI
Công nghệ thông tin là một trong những ngành phát triển vượt bậc trong những năm gầnđây Ngày nay với sự phát triển nhanh chóng của xã hội thì công nghệ thông tin được ứngdụng rộng rãi ở hầu hết tất cả các lĩnh vực và ngày càng đóng vai trò quan trọng, trở thành mộtphần thiết yếu trong đời sống hằng ngày Công nghệ thông tin là một ngành đòi hỏi ở ngườihọc một nền tảng kiến thức vững chắc, sự tư duy logic cao, hiểu biết sâu rộng trên nhiều lĩnhvực Với em hiện đang là sinh viên công nghệ phần mềm cần có sự đầu tư, không ngừng họchỏi để nâng cao kiến thức Do đó để củng cố kiến thức đã học, đề tài mà em chọn là: Bài toánquản lý sinh viên bằng ngôn ngữ C/C++
2 MỤC TIÊU ĐỀ TÀI
Xây dựng một chương trình quản lý sinh viên bằng ngôn ngữ lập trình C/C++ đơn giản,
dễ sử dụng cho người quản lý
Giải quyết các vấn đề: quản lý sinh viên trong một năm học, số tính chỉ đăng ký, số điểmđạt được, môn học, nhập liệu, tìm kiếm và sửa thông tin…
3 PHẠM VI NGHIÊN CỨU
Nghiên cứu, phân tích và xây dựng hệ thống quản lý sinh viên
4 PHƯƠNG PHÁP NGHIÊN CỨU
Thực hiện đề tài này, em đã ứng dụng các kiến thức đã học về lập trình, tham khảo một
số tài liệu về ngôn ngữ C/C++
Tham khảo, nghiên cứu việc quản lý sinh trong cửa hàng để xây dựng phần mềm thíchhợp
Trang 4CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C/C++
Ngôn ngữ lập trình C do Brain W.Kernighan và Dennis Ritchie phát minh vào năm
1972 tại phòng thí nghiệm Bell Telephone với mục đích tạo ngôn ngữ để viết hệ điều hànhUNIX, nhưng do tính ưu việt cũng như tính mềm dẻo của nó, cho nên giới tin học nhanh chóngchấp nhận như một ngôn ngữ nhà nghề
Năm 1978, bản in đầu tiên được in thành sách, đó là cuốn “The C ProgrammingLanguage” do chính hai tác giả của ngôn ngữ biên soạn Viện chuẩn quốc gia Mỹ ANSI(American National Standard Institute) công bố chuẩn ngôn ngữ C vào năm 1983 với tên
Nhóm một là các kiểu dữ liệu mới, các dòng dữ liệu mới, các hàm mới làm chongôn ngữ mạnh mẽ hơn va dễ lập trình hơn
Nhóm hai là các khái niệm lớp, đối tượng va những khái niệm liên quan tạo cơ
sở cho lập trình hướng đối tượng và làm cho C++ trở thành ngôn ngữ lập trìnhhướng đối tượng
Trang 5Một ký tự chiếm 1 byte, biểu diễn 1 ký tự trong bảng mã ASCII (American StandardCode for Information Interchangre) và nằm cặp nháy đơn.
Bảng mã của một số ký tự biễu diễn được:
Một số dữ liệu kiểu số nguyên:
Trang 61.2.2 CÁC CẤU TRÚC ĐIỀU KHIỂN
1.2.2.1 Cấu trúc rẽ nhánh
Cấu trúc if
Trang 71.2.2.2 Các lệnh vòng lặp
Vòng lặp for
Cú pháp:
Lệnh while
Biểu thức
Lệnh
TRUE FALSE
Lệnh
Biểu thức
TRUE
FALSE
Trang 81.2.3 HÀM
Cú pháp:
[kiểu trả về | void] < Tên hàm([danh_sách_tham_số_hình_thức])>
< { [khai báo biến cục bộ]
Các phần tử của mảng nằm trong các ô nhớ liên tục nhau, địa chỉ thấp nhất của ô nhớtương ứng với phần tử thú nhất và địa chỉ cao nhất của ô nhớ tương ứng với phần tử cuối cùng
Số phần tử của mảng được xác định ngay khi khai báo mảng Mỗi phần tử của mảng được truycập trực tiếp thông qua tên mảng và chỉ số của nó
Có nhiều loại mảng, mảng một chiều (vecto), mảng 2 chiều (ma trận), mảng nhiềuchiều
Trang 91.2.5 KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA STRUCT
struct kiểu_struct{
kiểu_đã_có_1: danh sách các trường cùng kểu;
kiểu_đã_có_2: danh sách các trường cùng kểu;
kiểu_đã_có_n: danh sách các trường cùng kểu;
Tệp nhị phân là tệp mà các phần tử của nó chỉ biểu diễn một kiểu dữ liệu Một tệp tin
dù được xây dựng bằng cách nào thì bản chất của nó cũng chỉ là dãy các byte (0 255) ghi trenđĩa, với cách quan niệm này người ta gọi là tệp nhị phân
Một số thao tác trên tệp:
Khai báo con trỏ file: fstream f;
Mở file để ghi: f.open(tên_tệp, ios::out | ios::binary);
Ghi file: f.write((char*) & x, sizeof(x));
Mở file để đọc: f.open(ten_tệp, ios::in | ios::binary);
Muốn chèn một phần tử X vào mảng A tại vị trí k trong mảng có n phẩn tử (0<k<n) thì
ta theo giải thuật như sau:
Bước 1: Dời các phần tử của mảng A ra sau một vị trí kể từ vị trí k
for (int i=n;i>k;i ) a[i+1] = a[i];
Bước 2: Đưa giá trị X vào vị trí số k
Trang 10a[k-1] = X;
Bước 3: Tăng kích thước mảng lên 1 đơn vị
n++;
Bước 4: Duyệt mảng từ đầu đến cuối và in ra giá trị của mỗi phần tử của mảng ra màn hình
for (i=1; i<n;i++) cout<<””<<a[i];
getch();
Bước 5: Kết thúc thuật toán
Mô tả giải thuật bằng ngôn ngữ C:
void in(int a[], int n)
1.2.7.3 Xóa 1 phần tử ra khỏi danh sách (mô tả bằng giải thuật C)
void in(int a[], int n)
1.3 MÔ TẢ BÀI TOÁN QUẢN LÍ SINH VIÊN:
Trong quá trình quản lý sinh viên sẽ có nhiều sinh viên với tên, tuổi, quên quángiống nhau, để tránh nhầm lẫn chúng ta gán mã sinh viên cho từng sinh viên (mã sinhviên không trùng nhau) Chương trình sẽ quản lý hồ sơ, điểm học tập của sinh viêntrong quá trình theo học tại trưởng Chương trình có thể thực hiện các công việc thêmmới sinh viên, tìm sinh viên theo điều kiện nào đó, xóa sinh viên…
Trang 11CHƯƠNG 2: PHÂN TÍCH XÂY DỰNG CHƯƠNG TRÌNH
2.1GIỚI THIỆU THUẬT TOÁN
Chương trình quản lý sinh viên quản lý các vấn đề:
Masv (mã sinh viên) có kiểu dữ liệu char, độ dài 20 ký tự, mỗi sinh viên có một mã sốriêng, không trùng lặp
Hoten (họ tên) kiểu dữ liệu char, độ dài 20 ký tự, họ tên sinh viên có thể trùng nhau
Lop (lớp) có kiểu dữ liệu char, độ dài 15 ký tự, một sinh viên chỉ được xếp vào mộtlớp với một mã lớp tương ứng
Gt (giới tính), quequan (quê quán), diachi (địa chỉ) có kiểu dữ liệu char, độ dài 20 kýtự
2.2CÁC MODUL CHÍNH TRONG CHƯƠNG TRÌNH
2.2.1 SƠ ĐỒ TỔNG QUÁT
CHƯƠNG TRÌNH QUẢN LÝ SINH VIÊN
B4: Kết thúc
2.2.2.2Hàm in thông tin sinh viên
B1: Khởi tạo gán cho i=0,n B2: Kiểm tra i<n , nếu i<n thì sang B3,ngược lại sang B4
B3: In thông tin sinh viênB4: Kết thúc
2.2.2.3Hàm tìm kiếm sinh viên( theo mã sinh viên)
B1: Nhập mã sinh viênB2: Khởi tạo gán cho i=0,n
Trang 12B3: Kiểm tra i<n thì sang B4, ngược lại sang B5B4: In thông tin khách hàng
B5: Kết thúc2.2.2.4Hàm xóa sinh viên (theo mã sinh viên)
B1: Nhập mã sinh viênB2: Khởi tạo i=0,j=0;
B3: Kiểm tra i<n,j<nB4: Xóa sinh viênB5: Kết thúc
Trang 132.2.3 MỘT SỐ MODUL CHÍNH CỦA CHƯƠNG TRÌNH
i++
END
S Đ
Trang 142.2.3.2 Hàm in thông tin sinh viên
Trang 152.2.3.3 Hàm tìm kiếm sinh viên (theo mã sinh viên)BEGIN
NHẬP MÃ SINH VIÊN
i=0, n, d
i<n
a[i].MSV==MSV
IN SINH VIÊN
i++
END
S Đ
Đ
d++
d==n
MSSV không tồn tại
S
S Đ
Trang 162.2.3.4 Hàm xóa sinh viên
BEGIN
d=0, k, i=0, s[20]
END
S
Đ
Trang 17CHƯƠNG 3: CÀI ĐẶT CHƯƠNG TRÌNH
Trang 18cout<<"\n \t2 Xuat danh sach";
cout<<"\n \t3 Tim kiem";
cout<<"\n \t4 Xoa";
cout<<"\nChon 1 trong 4 chuc nang: "; cin>>ch;
switch(ch)
{
case 1 : Nhap(a,n); break;
case 2 : Xuat(a,n); break;
Trang 19break;
}default: cout<<"Khong co chuc nang nay \n";
Trang 20cout<<"Ho ten: "; gets(a[i].Hoten);
cout<<"Gioi tinh: "; gets(a[i].GT);
cout<<"Ngay sinh: "; gets(a[i].Ngaysinh);
cout<<"Que quan: "; gets(a[i].Quequan);
cout<<"Dia chi: "; gets(a[i].Diachi);
cout<<"Email: "; gets(a[i].email);
Trang 21cout<<"So dien thoai: "; gets(a[i].SDT);
Trang 22+Nhập in danh sách sinh viên:
Trang 23}i ;
Trang 24printf("6s 16s 9s 14s 11s 11s 20d",a[i].MSSV,a[i].Hoten,a[i].Ngaysinh,a[i].Quequan,a[i].Diachi,a[i].email,a[i].SDT);
%-cout<<endl;
}else d++;
Trang 253.2.2 GIAO DIỆN NHẬP DANH SÁCH
3.2.3 GIAO DIỆN IN DANH SÁCH
Trang 263.2.4 GIAO DIỆN TÌM KIẾM SINH VIÊN
Trang 273.2.5 GIAO DIỆN XÓA SINH VIÊN
Trang 28PHẦN KẾT LUẬN
1 CÁC KẾT QUẢ ĐẠT ĐƯỢC
Đã hoàn thiện được yêu cầu cơ bản của chương trình quản lý sinh viên
2 ƯU VÀ NHƯỢC ĐIỂM CỦA ĐỀ TÀI
+Ưu điểm:
- Giao diện dễ sử dụng, dễ thao tác
- Giải quyết được vấn đề quản lý sinh viên
- Hỗ trợ các nhiệm vụ chính trong quản lý sinh viên: nhập, in, xóa, tìm kiếm
+Nhược điểm:
Chương trình còn thiếu sót như:
-Tìm kiếm theo tên, sắp xếp sinh viên theo tên và theo mã sinh viên
- Giao diện chưa được bắt mắt
Trang 29TÀI LIỆU THAM KHẢO
[1] Ths Nguyễn Thị Bảo Trang, Bài giảng Lập trình cơ sở - Lưu hành nội bộ
[2] TS Phạm Anh Phương, Lập trình cơ sở- Nhà xuất bản Thông Tin
[3] GS Phạm Văn Ất, Kỹ thuật lập trình C cơ sở và nâng cao, NXB KH&KT- 1999
Trang 30NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN
Trang 31