Đề tài: quản lý sinh viên bằng danh sách liên kết...

59
Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn c Nguyễn Ngọc Quang 0

Upload: phungque

Post on 21-Mar-2018

233 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

c

Nguyễn Ngọc Quang 0

Page 2: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

Phần Mở đầu1. 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 ứng dụ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ột phầ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ười họ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ĩnh vực. Với chúng em hiện đang là những sinh viên công nghệ thông tin

cần phải có sự đầu tư, không ngừng học hỏi để nâng cao kiến thức. Do đó

để củng cố lại kiến thức đã học, đề tài mà em chọn để thực hiện đồ án là: Bài toán

Quản lý sinh viên bằng danh sách liên kết đơn..

2. M c tiêu c a đ tài.ụ ủ ề- Củng cố lại kiến thức đã học về danh sách liên kết nói chung và danh

sách liên kết đơn nói riêng.

- Rèn luyện kỹ năng lập trình trên ngôn ngữ C++.

- Ứng dụng lý thuyết đã học giải quyết bài toán ứng dụng cụ thể

3. Ph m vi nghiên c u.ạ ứ- Lý thuyết về danh sách liên kết đơn

- Bài toán quản lý sinh viên

4 . Ph n g ph á p ng hi ê n c u.ươ ứ- Nghiên cứu tài liệu cấu trúc dữ liệu và giải thuật trên sách.

- Tìm kiếm và nghiên cứu trên mạng Internet.

Nguyễn Ngọc Quang 1

Page 3: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

CH NG 1: C S LÝTHUY TƯƠ Ơ Ở Ế

1. T ng quan v danh sách liên k tổ ề ế

1.1. Đ nh nghĩaịDanh sách liên kết là danh sách mà các phần tử ( Node) liên kết với nhau nhờ

vào vùng liên kết của chúng. Mỗi node bao gồm 2 phần: Phần Data dùng để chứa dữ

liệu cần xử lý và phần liên kết dùng để liên kết tới các node khác.

1.2 .Phân lo i.ạTùy cách liên kết giữa các phần tử, danh sách liên kết gồm có nhiều loại khác

nhau:

- Danh sách liên kết đơn: mỗi phần tử liên kết với phần tử đứng sau nó trong danh

sách.

- Danh sách liên kết đôi/kép: mỗi phần tử liên kết với các phần tử đứng trước và

sau nó trong danh sách.

- Danh sách liên kết vòng: phần tử cuối danh sách liên kết với phần tử đầu danh

sách.

1.3. Danh sách liên k t đ n.ế ơ

1.3.1. Khái ni m.ệDanh sách liên kết đơn là một cấu trúc lưu trữ trong đó các phần tử của danh sách

không cố định, các phần tử trong danh sách không thể truy cập trực tiếp. Muốn truy

cập bất kỳ phần tử nào đó trong danh sách phải xuất phát từ phần tử đầu tiên. Mỗi

Node trong danh sách có thể được biểu diễn như sau.

Trong đó:

- Data: trường chưa nội dung thông tin của phần tử

- Next: chứa địa chỉ của Node tiếp theo hay còn gọi là vùng liên kết.

Cú pháp:

Nguyễn Ngọc Quang 2

Data Next

Page 4: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

Stuct Node {

Kiểu_dữ_liệu Data;

Node*next;

}

Có thể hình dung danh sách liên kết đơn qua hình vẽ sau:

Hình 1.1: Danh sách liên kết đơn

1.3.2.Thao tác trên 1 node.

- Khai báo biến con trỏ p là biến con trỏ kiểu Node:  Node *p.

- Cấp phát bộ nhớ cho Node mới – được trỏ bởi p: p=new Node.

- Truy cập vào trường info: p->info.

- Truy cập vào trường next : p->next.

- Hủy Node được trỏ bởi p: delete (p).

1.3.3. Các thao tác trên danh sách liên k t đ nế ơThao tác trên danh sách liên kết khác với thao tác trên mảng, khi cần thêm Node

vào danh sách liên kết thì ta xin cấp phát bộ nhớ cho Node và nối Node đó vào danh

sách và khi không sử dụng thì ta giải phóng nó khỏi danh sách. Truy cập trên danh sách

cũng khác so với trên mảng. Nếu ở mảng ta truy cập trực tiếp thông qua chỉ số mảng

(thông qua địa chỉ ô nhớ) thì ở danh sách liên kết ta phải truy cập một cách tuần tự. Khi

làm việc trên danh sách liên kết đơn cũng tương tự như vậy nên ta cần chú ý những

điểm sau:

- Danh sách luôn có con trỏ đầu danh sách: con trỏ L

- Danh sách luôn có giá trị báo kết thúc danh sách: NULL.

- Trường next của mỗi Node chỉ chứa địa chỉ của Node sau nó, trừ Node cuối.

- Trường next của Node cuối cùng chứa giá trị NULL.

Nguyễn Ngọc Quang 3

Page 5: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

- Không tách danh sách thành 2 danh sách con nếu danh sách phần sau

chưa có con trỏ tới.

- Khởi tạo danh sách rỗng: L = NULL

1.3.3.1. Duy t danh sách liên k t đ nệ ế ơDuyệt lần lượt qua từng Node của danh sách.

Mục_đích(Node *L)

{

 Node *p=L; //cho con trỏ p trỏ vào đầu danh sách L.

while(!điều kiện dừng)

{

 [xử lý p->info];//xuất thông tin ra màn hình, thực hiện các phép toán…

 p= p->Next; //cho con trỏ p trỏ tới Node kế tiếp.

 }

1.3.3.2. Chèn m t ph n t vào danh sáchộ ầ ửĐể chèn một phần tử X vào danh sách ta cấp phát bộ nhớ cho 1 Node

mới được trỏ bởi q và gán giá trị X cho trường infoNode *q;

q=new Node;

q->info=X;

Chèn một Node mới vào danh sách có 4 trường hợp:

- Trường hợp 1: Chèn Node được trỏ bởi q vào đầu sách

Bước 1: cho vùng liên kết của q chứa địa chỉ Node đầu danh sách.

q->next=L;(1)

Bước 2: cho L trỏ tới q : cập nhập lại con trỏ đầu danh sách.

L = q; (2)

Nguyễn Ngọc Quang 4

Page 6: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

Hình 1.2: ….

- Trường hợp 2: Chèn Node được trỏ bởi q vào sau Node trỏ bởi p trong danh

sách

Bước 1: Cho vùng liên kết của Node được trỏ bởi q chứa địa chỉ Node ngay

sau Node được trỏ bởi p.

q->next=p->next; (1)

Bước 2: Cho vùng liên kết của Node được trỏ bởi q chứa địa chỉ của

Node được trỏ bởi p.

p->next=q; (2)

Hình 1.3: …

- Trường hợp 3: Chèn Node được trỏ bởi q vào cuối danh sách

Bước 1: Nếu danh sách rỗng thì danh sách hiện tại có 1 phần tử chính là

q vừa mới chèn vào, return.

Bước 2: Ngược lại nếu danh sách không rỗng

Cho con trỏ p chứa địa chỉ Node đầu danh sách:  

Nguyễn Ngọc Quang 5

Page 7: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

Node *p=L;

Duyệt danh sách từ đầu cho tới Node cuối cùng

while(p->next!=NULL) p=p->next;

Cho phần liên kết của Node được trỏ bởi p chứa địa chỉ của q  p->next=q;

Cập nhập lại Node cuối cùng bây giờ chính là Node q vừa mới tạo ra.

q->next=NULL;

- Trường hợp 4: Chèn Node được trỏ bởi q vào trước Node được trỏ bởi p

Bước 1: Nếu p trỏ đầu danh sách, thực hiện chèn đầu danh sách(trường

hợp1), return.

Bước 2: Ngược lại cho con trỏ t chứa địa chỉ Node trước Node được trỏ bởi

p trong danh sách: Node *t;

t->next=p;

Chèn Node được trỏ bởi q vào sau Node được trỏ bởi t (trường hợp 2).

1.3.3.3. Xóa m t ph n t ra kh i danh sách:ộ ầ ử ỏ có 2 tr ng h p x y raườ ợ ả- Trường hợp 1: Thực hiện xóa đầu danh sách nếu p chứa địa chỉ

Node đầudanh sách (L)

Bước 1: Cho con trỏ đầu danh sách L trỏ vào Node sau nó.

L=L->next; (1)

Bước 2: Giải phóng Node p ra khỏi danh sách.

Delete(p);

Nguyễn Ngọc Quang 6

Page 8: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

Hình 1.4: …

- Trường hợp 2: Con trỏ p chứa địa chỉ Node bất kỳ nhưng không

phải Node đầu

Bước 1: Cho con trỏ q trỏ đầu danh sách L , dùng vòng lặp cho nó trỏ tới địa chỉ

Node trước Node được trỏ bởi p trong danh sách.

q=L; while(q->next!=p) q=q->next; (1)

Bước 2: Gán địa chỉ của Node ngay sau Node được trỏ bởi p vào ô nhớ  next của

Node được trỏ bởi q

q->Next=p->next; (2)

Bước 3: Giải phóng Node được trỏ bởi p

delete(p);(3)

Hình 1.5: …

Nguyễn Ngọc Quang 7

Page 9: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

1.3.4.4. Tìm ki m ph n t trong danh sáchế ầ ửBước 1: Cho p trỏ vào đầu danh sách L và khởi tạo biến found=0

Node *p=L; int found=0;

Bước 2: Thực hiện vòng lặp để duyệt p chạy từ đầu danh sách tới cuối danh sách,

tại mỗi Node nếu trường info của Node được trỏ bởi p =X thì cho found=1 để dừng

vòng lặp. Ngược lại nếup!=X thì cho p trỏ tới vị trí Node ngay sau Node

được trỏ bởi p.

while(p!=NULL&&found= =0)

if(p->info=X) found=1;

else

  p=p->next; (*)

Bước 3: Return p

Hình 1.6: ....

1.3.3.5. Đ o các ph n t trong danh sáchả ầ ửBước 1: Khởi tạo 3 biến con trỏ p, t, q. Trong đó p trỏ vào đầu danh sách L, t=

NULL (không trỏ vào địa chỉ nào cả), q trỏ vào địa chỉ Node được trỏ bởi p.

Node *p=L,*t=NULL,*q=p ;

Bước 2: Dùng vòng lặp duyệt p chạy từ đầu tới cuối danh sách. Trong

khi thực hiện vòng lặp

Cho vùng liên kết của Node được trỏ bởi q chứa địa chỉ của t

Nguyễn Ngọc Quang 8

Page 10: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

q->next=t;

Cho t trỏ đến vị trí Node được trỏ bởi q (cập nhập lại t).

t=q;

Cụ thể như sau:

While(p!=NULL)

{

 q=p; p=p->next; (1)

q->next=t ; (2)

t=q; (3) }

B ước 3 :Cho L trỏ đến vị trí Node được trỏ bởi t (cập nhập lại L)

L=t

Hình 1.7: ...

Nguyễn Ngọc Quang 9

Page 11: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

C H N G 2 : N G D N G D A N H S Á C H L I Ê N K T ƯƠ Ứ Ụ ẾĐ N V À O Q U NƠ Ả LÝ SINH VIÊN.

2.1. Đ c t bài toán.ặ ảQuản lý sinh viên là công việc hằng ngày của phòng quản lý học sinh- sinh viên.

Công việc quản lý sinh viên đòi hỏi tính tỉ mỉ, cẩn thận trong từng khâu ghi chép các

thông tin cá nhân của sinh viên: mã số sinh viên, tên sinh viên, ngày tháng năm sinh,

khóa, lớp….cũng như công việc thống kê kết quả học tập cần rõ ràng và chính xác.

Trước đây công nghệ thông tin chưa phát triển mạnh mẽ, các công việc được xử lý thủ

công,chủ yếu là ghi chép bằng bút, sổ sách chính vì vậy rất tốn công sức và khá nhiều

thời gian. Ngày nay khi mà khoa học kỹ thuật phát triển, đặc biệt là sự bùng nổ công

nghệ thông tin thì việc quản lý sinh viên sẽ dễ dàng hơn nhiều. Xuất phát từ nhu cầu đó

mà bài toán Quản lý sinh viên ra đời. Yêu cầu của bài toán là tạo ra chương trình có

thể thực hiện các thao tác quản lý sinh viên một cách dễ dàng, tiện lợi dựa trên sự trợ

giúp của máy tính. Mọi công việc phải được thao tác trên một vùng dữ liệu chung để

đảm bảo việc đồng bộ với nhau trong khâu quản lý.

2.2. Yêu c u h th ng.ầ ệ ốQuản lý điểm sinh viên là chương trình quản lý hồ sơ, điểm học tập của sinh viên

trong 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êm

mới sinh viên, tìm kiếm sinh viên theo một điều kiện nào đó, xóa sinh viên, liệt kê

danh sách sinh viên….

Chương trình được viết bằng ngôn ngữ C++ và dựa trên cấu trúc lưu trữ của danh

sách liên kết đơn .

2.3. Phân tích thi t k ch ng trình.ế ế ươ

2.3.1. C u trúc d li u ch ng trình.ấ ữ ệ ươĐể giúp cho việc quản lý được chặt chẽ, dễ dàng, chương trình quản lý điểm sinh

viên sẽ có các trường hợp sau:

Nguyễn Ngọc Quang 10

Page 12: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

- Masv (mã sinh viên) có kiểu dữ liệu char, với độ 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) có kiểu dữ liệu nvarchar, với độ dài 40 ký tự, họ tên sinh viên

có thể trùng nhau.

- Lop (lớp) có kiểu dữ liệu char, với độ dài 15 ký tự, một sinh viên chỉ được xếp

vào một lớp với một mã lớp tương ứng.

- Diemtoan (điểm môn toán) có kiểu dữ liệu int, đây là kết quả học tập môn toán

của sinh viên được cập nhập từ các giảng viên dạy.

- Diemly (điểm môn lý) có kiểu dữ liệu int, đây là kết quả học tập môn lý của sinh

viên được cập nhập từ các giảng viên dạy.

- Diemhoa (điểm môn hoá) có kiểu dữ liệu int, kết quả học tập môn hóa của sinh

viên được cập nhập từ các giảng viên dạy.

- Diemtb (điểm trung bình) có kiểu dữ liệu float, điểm trung bình được tính bằng

cách lấy trung bình cộng điểm thi các môn học của sinh viên.

Struct SinhVien

{

Char Masv[20];

Char Hoten[40];

Char Lop [15];

Int Diemtoan;

Int Diemly;

Int Diemhoa;

Int Diemtb;

SinhVien *Next;

};

Nguyễn Ngọc Quang 11

Page 13: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

2.3.2. Các ch c năng c a ch ng trình.ứ ủ ươ

2.3.2.1. Nh p danh sách sinh viên.ậ- Nhập vào mã số sinh viên.

- Nhập thông tin chi tiết cho từng sinh viên.

2.3.2.2. Hi n th danh sách sinh viên.ể ị- Duyệt qua danh sách sinh viên.

- In thông tin sinh viên ra màn hình.

2.3.2.3. Tìm ki m sinh viên theo mã sinh viên.ế- Duyệt qua danh sách.

- Tìm kiếm theo mã sinh viên mà người dùng yêu cầu.

- Hiển thị sinh viên vừa tìm ra màn hình.

2.3.2.4.Xóa sinh viên theo mã s sinh viên.ố- Duyệt qua danh sách.

- Tìm kiếm sinh viên theo mã sinh viên mà người dùng yêu cầu

- Xóa sinh viên vừa tìm được.

2.3.2.5. B sung sinh viên m i vào danh sách.ổ ớ- Nhập sinh viên cần bổ sung vào danh sách.

- Cập nhập sinh viên vào trong danh sách.

- Tăng số lượng sinh viên trong danh sách lên.

2.3.2.6. Hi n th sinh viên có đi m trung bình cao nh t.ể ị ể ấ- Nhập điểm từng môn của từng sinh viên vào danh sách.

- Tính điểm trung bình của từng sinh viên.

- Tìm kiếm sinh viên có điểm trung bình cao nhất.

- Hiển thị sinh viên có điểm trung bình cao nhất ra màn hình.

2.3.2.7. S p x p danh sách sinh viên tăng d n theo tr ng đi m trung bìnhắ ế ầ ườ ể- Duyệt qua danh sách điểm trung bình của từng sinh viên.

Nguyễn Ngọc Quang 12

Page 14: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

- Sắp xếp sinh viên tăng dần theo điểm trung bình của từng sinh viên.

- Hiển thị danh sách sinh viên vừa sắp xếp ra màn hình.

2.4. Cài đ t ch ng trìnhặ ươ

2.4.1. Đ nh nghĩa c u trúc cho ch ng trình qu n lý sinh viênị ấ ươ ả- Void insert(string ma,string ten,string l,float

toan,float ly,float hoa,float dtb,node&first)

- Void nhap(node&first)

- Void xuat(node first)

- Void tim_ma(node first)

- Void xoa(node&first)

- Void themsv(node&first)

- Void dtb_max(node first)

- Void hoanvi(float&a,float&b)

- void Write(char *s,int x,int y, int color)

- void Ve_menu(int x0,int y0,int chon,int n,char *s[])

- void menuchinh(char ch,char* st[],int x0,int y0,int

chon,int luuchon,int sodongc,int ok)

- Void sapxep(node first)

- Int main()

2.4.2. Kh i t o danh sách sinh viênở ạvoid nhap(node&first) // Ham nhap cua ds don

{

char ch;

first=NULL;

string ma,ten,lop;

float toan,ly,hoa,dtb;

Nguyễn Ngọc Quang 13

Page 15: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

do

{

cout<<"\nMoi nhap ma sinh vien : ";

getline(cin,ma);

cout<<"Moi nhap ho va ten : ";

getline(cin,ten);

cout<<"Moi nhap lop : ";

getline(cin,lop);

cout<<"Moi nhap diem toan : ";

cin>>toan;

cout<<"Moi nhap diem ly : ";

cin>>ly;

cout<<"Moi nhap diem hoa : ";

cin>>hoa;

dtb=(toan+ly+hoa)/3;

insert(ma,ten,lop,toan,ly,hoa,dtb,first);

cout<<"\nNhan ESC de thoat chuong trinh ! " ;

ch=getch();

cin.sync();

}while(ch!=27);

}}

Nguyễn Ngọc Quang 14

Page 16: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

2.4.3. Hi n th danh sách sinh viênể ịvoid xuat(node first)

{

node p;

p=first;

while(p!=NULL)

{

cout<<"\nMa sinh vien : "<<p->masv;

cout<<"\nHo va ten : "<<p->hoten;

cout<<"\nLop : "<<p->lop;

cout<<"\nDiem Toan : "<<p->toan;

cout<<"\nDiem Ly : "<<p->ly;

cout<<"\nDiem Hoa : "<<p->hoa;

cout<<"\nDiem trung binh : "<<p->toan;

p=p->next;

}

}

2.4.4. Tìm ki m sinh viên theo mã sinh viênếvoid tim_ma(node first) // tim kiem sinh vien theo ma

{

node p;

p=first;

string ma;

Nguyễn Ngọc Quang 15

Page 17: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

cout<<"\nNhap ma sinh vien can tim : "; cin>>ma;

while(p!=NULL)

{

if(p->masv==ma)

{

cout<<"\nMa sinh vien : "<<p->masv;

cout<<"\nHo va ten : "<<p->hoten;

cout<<"\nLop : "<<p->lop;

cout<<"\nDiem Toan : "<<p->toan;

cout<<"\nDiem Ly : "<<p->ly;

cout<<"\nDiem Hoa : "<<p->hoa;

cout<<"\nDiem trung binh : "<<p->toan;

break;

}

p=p->next;

} }

2.4.5. Xóa sinh viên theo mã sinh viên.

void xoa(node&first) // xoa sinh vien theo ma

{

node p,q;

p=first;

q=first;

string ma;

Nguyễn Ngọc Quang 16

Page 18: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

cout<<"\nNhap ma sinh vien can xoa : "; cin>>ma;

while(p!=NULL&&p->masv!=ma) p=p->next;

if(p==first)

first=first->next;

else

{

if(p==NULL)

cout<<"\nKhong co sinh vien can xoa !" ;

else

{

while(q!=NULL&&q->next!=p) q=q->next;

q->next=p->next;

}

}

}

2.4.6. B sung sinh viên m i vào danh sách.ổ ớvoid themsv(node&first)

{

char ch;

string ma,ten,lop;

float toan,ly,hoa,dtb;

do

{

Nguyễn Ngọc Quang 17

Page 19: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

cout<<"\nMoi nhap ma sinh vien : ";

getline(cin,ma);

cout<<"Moi nhap ho va ten : ";

getline(cin,ten);

cout<<"Moi nhap lop : ";

getline(cin,lop);

cout<<"Moi nhap diem toan : ";

cin>>toan;

cout<<"Moi nhap diem ly : ";

cin>>ly;

cout<<"Moi nhap diem hoa : ";

cin>>hoa;

dtb=(toan+ly+hoa)/3;

insert(ma,ten,lop,toan,ly,hoa,dtb,first);

cout<<"\nNhan ESC de thoat chuong trinh ! " ;

ch=getch();

cin.sync();

}while(ch!=27);

}

2.4.7. In sinh viên có đi m trung bình l n nh t.ể ớ ấvoid dtb_max(node first)

{

node p=first,q=first,l=first;

Nguyễn Ngọc Quang 18

Page 20: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

float max=p->diemtb;

p=p->next;

while(p!=NULL)

{

if(p->diemtb>max)

{

max=p->diemtb;

q=p;

}

p=p->next;

}

while(l!=NULL)

{

if(l==q)

{

cout<<"\nMa sinh vien : "<<l->masv;

cout<<"\nHo va ten : "<<l->hoten;

cout<<"\nLop : "<<l->lop;

cout<<"\nDiem Toan : "<<l->toan;

cout<<"\nDiem Ly : "<<l->ly;

cout<<"\nDiem Hoa : "<<l->hoa;

cout<<"\nDiem trung binh : "<<l->toan;

break;

Nguyễn Ngọc Quang 19

Page 21: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

}

l=l->next;

}

}

2.4.8. S p x p tăng d n theo đi m trung bình.ắ ế ầ ểvoid sapxep(node first)

{

node p=first,q;

while(p!=NULL)

{

q=p->next;

while(q!=NULL)

{

if(p->diemtb>q->diemtb)

{

hoanvi1(p->masv,q->masv);

hoanvi1(p->hoten,q->hoten);

hoanvi1(p->lop,q->lop);

hoanvi(p->toan,q->toan);

hoanvi(p->ly,q->ly);

hoanvi(p->hoa,q->hoa);

hoanvi(p->diemtb,q->diemtb);

}

Nguyễn Ngọc Quang 20

Page 22: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

q=q->next;

}

p=p->next;

}

}

2.5. Ch ng trình qu n lý sinh viênươ ả# include <conio.h># include <math.h># include <iostream.h>#include<conio.h>#include<iostream.h>#include<string.h>#include "windows.h"#include <cstdlib>using namespace std;//---------------------------------------------------------------#ifdef WIN32void gotoxy(int x, int y){ COORD cur = {x, y};

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cur);} #elsevoid gotoxy(int x, int y){ printf("\033[%dG\033[%dd", x+1, y+1);}

Nguyễn Ngọc Quang 21

Page 23: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

#endif

int textcolor ( int Color ){ HANDLE h; h = GetStdHandle(STD_OUTPUT_HANDLE ); return SetConsoleTextAttribute(h, Color );}#define CYAN 10#define YELLOW 14//---------------------------------------------------------------struct nut{ string masv; string hoten; string lop; float toan; float ly; float hoa; float diemtb; string xeploai; nut *next;};typedef nut* node;node first;void insert(string ma,string ten,string l,float toan,float ly,float hoa,float dtb,node&first){ node p,q; p=new(nut); p->masv=ma;

Nguyễn Ngọc Quang 22

Page 24: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

p->hoten=ten; p->lop=l; p->toan=toan; p->ly=ly; p->hoa=hoa; p->diemtb=dtb; p->next=NULL; if(first==NULL) first=p; else { q=first; while(q->next!=NULL) q=q->next; q->next=p; } }void nhap(node&first) // Ham nhap cua ds don{ system("cls"); char ch; first=NULL; string ma,ten,lop; float toan,ly,hoa,dtb;do { cout<<"\nMoi nhap ma sinh vien : "; getline(cin,ma); cout<<"Moi nhap ho va ten : "; getline(cin,ten); cout<<"Moi nhap lop : "; getline(cin,lop);

Nguyễn Ngọc Quang 23

Page 25: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

cout<<"Moi nhap diem toan : "; cin>>toan; cout<<"Moi nhap diem ly : "; cin>>ly; cout<<"Moi nhap diem hoa : "; cin>>hoa; dtb=(toan+ly+hoa)/3; insert(ma,ten,lop,toan,ly,hoa,dtb,first); cout<<"\nNhan ESC de thoat chuong trinh ! " ; ch=getch(); cin.sync(); }while(ch!=27); }void xuat(node first) // xuat xuoi{ system("cls"); node p; p=first; while(p!=NULL) { cout<<"\nMa sinh vien : "<<p->masv; cout<<"\nHo va ten : "<<p->hoten; cout<<"\nLop : "<<p->lop; cout<<"\nDiem Toan : "<<p->toan; cout<<"\nDiem Ly : "<<p->ly; cout<<"\nDiem Hoa : "<<p->hoa; cout<<"\nDiem trung binh : "<<p->toan<<"\n"; p=p->next; } getch();

Nguyễn Ngọc Quang 24

Page 26: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

}void tim_ma(node first) // tim kiem sinh vien theo ma{ system("cls"); node p; p=first; string ma; cout<<"\nNhap ma sinh vien can tim : "; cin>>ma; while(p!=NULL) { if(p->masv==ma) { cout<<"\nMa sinh vien : "<<p->masv; cout<<"\nHo va ten : "<<p->hoten; cout<<"\nLop : "<<p->lop; cout<<"\nDiem Toan : "<<p->toan; cout<<"\nDiem Ly : "<<p->ly; cout<<"\nDiem Hoa : "<<p->hoa; cout<<"\nDiem trung binh : "<<p->toan; break; } p=p->next; } getch();}void xoa(node&first) // xoa sinh vien theo ma{ system("cls"); node p,q; p=first;

Nguyễn Ngọc Quang 25

Page 27: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

q=first; string ma; cout<<"\nNhap ma sinh vien can xoa : "; cin>>ma; while(p!=NULL&&p->masv!=ma) p=p->next; if(p==first) first=first->next; else { if(p==NULL) cout<<"\nKhong co sinh vien can xoa !" ; else { while(q!=NULL&&q->next!=p) q=q->next; q->next=p->next; } } system("cls"); xuat(first); getch();}void themsv(node&first) // bo sung sv moi vao danh sach{ system("cls"); char ch; string ma,ten,lop; float toan,ly,hoa,dtb;do { cout<<"\nMoi nhap ma sinh vien : "; getline(cin,ma);

Nguyễn Ngọc Quang 26

Page 28: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

cout<<"Moi nhap ho va ten : "; getline(cin,ten); cout<<"Moi nhap lop : "; getline(cin,lop); cout<<"Moi nhap diem toan : "; cin>>toan; cout<<"Moi nhap diem ly : "; cin>>ly; cout<<"Moi nhap diem hoa : "; cin>>hoa; dtb=(toan+ly+hoa)/3; insert(ma,ten,lop,toan,ly,hoa,dtb,first); cout<<"\nNhan ESC de thoat chuong trinh ! " ; ch=getch(); cin.sync(); }while(ch!=27); getch(); }void dtb_max(node first) // in ra sinh vien co diem trung binh max{ system("cls"); node p=first,q=first,l=first; float max=p->diemtb; p=p->next; while(p!=NULL) { if(p->diemtb>max){ max=p->diemtb; q=p;

Nguyễn Ngọc Quang 27

Page 29: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

} p=p->next; } while(l!=NULL) { if(l==q) { cout<<"\nMa sinh vien : "<<l->masv; cout<<"\nHo va ten : "<<l->hoten; cout<<"\nLop : "<<l->lop; cout<<"\nDiem Toan : "<<l->toan; cout<<"\nDiem Ly : "<<l->ly; cout<<"\nDiem Hoa : "<<l->hoa; cout<<"\nDiem trung binh : "<<l->toan; break; } l=l->next; } getch();}void hoanvi(float&a,float&b){ float c=a; a=b; b=c; }void hoanvi1(string&a,string&b){ string c=a; a=b; b=c;}void sapxep(node first) //sx sv tang dan theo dtb{

Nguyễn Ngọc Quang 28

Page 30: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

system("cls"); node p=first,q; while(p!=NULL) { q=p->next; while(q!=NULL) { if(p->diemtb>q->diemtb) { hoanvi1(p->masv,q->masv); hoanvi1(p->hoten,q->hoten);hoanvi1(p->lop,q->lop); hoanvi(p->toan,q->toan); hoanvi(p->ly,q->ly); hoanvi(p->hoa,q->hoa); hoanvi(p->diemtb,q->diemtb); } q=q->next; } p=p->next; } xuat(first); getch(); }//----------------------------------------------------------------void Write(char *s,int x,int y, int color){ textcolor(color); gotoxy(x,y); cout<<s;textcolor(15);

Nguyễn Ngọc Quang 29

Page 31: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

}void Khung(int x1,int y1,int x2,int y2){ int x,y; gotoxy(x1,y1); cout<<"É"; gotoxy(x2,y1); cout<<"»"; gotoxy(x1,y2); cout<<"È";gotoxy(x2,y2); cout<<"¼"; for(x=x1+1;x<x2;x++)

{gotoxy(x,y1); cout<<"Í";gotoxy(x,y2); cout<<"Í";

} for(y=y1+1;y<y2;y++)

{gotoxy(x1,y); cout<<"º";gotoxy(x2,y); cout<<"º";

}}void Ve_menu(int x0,int y0,int chon,int n,char *s[]){ system("cls"); Khung(x0-2,y0-1,x0+40,y0+n);for(int i=0;i<n;i++)

if(i==chon) Write(s[i],x0,y0+i,CYAN); else Write(s[i],x0,y0+i,YELLOW);

Write("GVHD : Pham Khanh Linh.",x0-4,y0+n+5,10);Write("Sinh vien thuc hien; Nguyen Ngoc Quang !",x0-4,y0+n+6,10);}void menuchinh(char ch,char* st[],int x0,int y0,int chon,int luuchon,int sodongc,int ok){

Nguyễn Ngọc Quang 30

Page 32: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

Ve_menu(x0,y0,chon,sodongc,st);do { ch=getch(); //Nhan mot phim switch (ch)

{case 72: //phim len

luuchon=chon;chon--;if(chon<0) chon=sodongc-1;Write(st[luuchon],x0,y0+luuchon,YELLOW);Write(st[chon],x0,y0+chon,CYAN);break;

case 80://phim xuongluuchon=chon;chon++;if(chon==sodongc) chon=0;Write(st[luuchon],x0,y0+luuchon,YELLOW);Write(st[chon],x0,y0+chon,CYAN);break;

case 13: //phim ENTERok=TRUE; break;

}if (ok==TRUE) //Neu phim ENTER duoc nhan{ switch (chon)

{ case 0:

nhap(first);Ve_menu(x0,y0,chon,sodongc,st);

Nguyễn Ngọc Quang 31

Page 33: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

break; case 1:

xuat(first);Ve_menu(x0,y0,chon,sodongc,st);break;

case 2:themsv(first);Ve_menu(x0,y0,chon,sodongc,st);break;

case 3:xoa(first);Ve_menu(x0,y0,chon,sodongc,st);break;

case 4:dtb_max(first);Ve_menu(x0,y0,chon,sodongc,st);break;

case 5:sapxep(first);Ve_menu(x0,y0,chon,sodongc,st);break;

case 6:tim_ma(first);Ve_menu(x0,y0,chon,sodongc,st);break;

case 7: exit(0);}

ok=FALSE; //tra lai trang thai ENTER chua duoc nhan}

}

Nguyễn Ngọc Quang 32

Page 34: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

while (ch!=27);//Nhan phim ESC de thoat khoi chuong trinh}void menu_chinh(){ char ch,*st[10]; system("cls"); st[0]="Nhap danh sach sinh vien !"; st[1]="Xuat danh sach sinh vien !"; st[2]="Them sinh vien moi vao Danh Sach !"; st[3]="Xoa sinh vien !"; st[4]="Sinh vien co diem trung binh cao nhat !"; st[5]="Sap xep danh sach sinh vien !"; st[6]="Tim kiem sinh vien !"; st[7]="<ESC> Ket thuc chuong trinh !";int x0=25,y0=10,chon=0,luuchon,sodongc=8,ok=FALSE;menuchinh(ch,st,x0,y0,chon,luuchon,sodongc,ok); getch();}//----------------------------------------------------------------int main(){ menu_chinh();}

Nguyễn Ngọc Quang 33

Page 35: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

2.6. Màn hình k t quế ả

2.6.1. Menu chính c a ch ng trình.ủ ươ

2.6.2. T o danh sách sinh viênạ

Nguyễn Ngọc Quang 34

Page 36: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

2.6.3. Hi n th danh sách sinh viênể ị

2.6.4. Tìm ki m sinh viên theo mã sinh viênế

Nguyễn Ngọc Quang 35

Page 37: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

2.6.5. Thêm sinh viên m i vào danh sách.ớ

2.6.6. Hi n th sinh viên có đi m trung bình cao nh t.ể ị ể ấ

Nguyễn Ngọc Quang 36

Page 38: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

2.6.7. Xóa sinh viên theo mã sinh viên.

Nguyễn Ngọc Quang 37

Page 39: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

2.6.8. S p x p danh sách sinh viên tăng d n theo đi m trung bình.ắ ế ầ ể

Nguyễn Ngọc Quang 38

Page 40: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

K T LU NẾ Ậ1. Các kết quả đạt được.- Trình bày khái quát lý thuyết về danh sách liên kết đơn

- Xây dựng được chương trình Quản lý sinh viên

2. Ưu và nhược điểm của đề tài

- Ưu điểm Chương trình dễ sử dụng, giao diện thân thiện Chương trình quản lý sinh viên ứng dụng danh sách liên kết đơn do vậy có

ưu điểm là ….- Nhược điểm:

Vẫn chưa chú trọng về đồ họa, mới chỉ đi về phần lập trình. Code chường trình còn dài, chưa tối ưu

3. Hướng phát triểnXây dựng thêm các tính năng như giao diện, thêm các thuộc tính như năm sinh,

địa chỉ, số điện thoại…

Nguyễn Ngọc Quang 39

Page 41: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

TÀI LI U THAM KH OỆ Ả

[1]. Phạm Anh Phương. Bài giảng cấu trúc dữ liệu và giải thuật, Đại học Duy Tân,

Năm 2012

[2]http://tailieu.vn/tag/tailieu/danh%20s%C3%A1ch%20li%C3%AAn%20k%E1%BA

%BFt.html

[3]. Đỗ Xuân Lôi. Cấu trúc dữ liệu và giải thuật. Nhà xuất bản Khoa học và Kỹ thuật,

1998

[4] http://www.e-ptit.edu.vn/hoctap/hoclieu/CTDLGT.pdf

[5] Nguyễn Xuân Huy. Thuật toán. Nhà xuất bản Thống kê, 1988

Nguyễn Ngọc Quang 40

Page 42: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN..................................................................................................................................

Nguyễn Ngọc Quang 41

Page 43: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

..................................................................................................................................

ContentsPhần Mở đầu 1

1. Lý do chọn đề tài:................................................................................................................12. Mục tiêu của đề tài...............................................................................................................1

Nguyễn Ngọc Quang 42

Page 44: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

3. Phạm vi nghiên cứu.............................................................................................................14 . P hương pháp ngh i ên cứu . .......................................................................................1

CHƯƠNG 1: CƠ SỞ LÝTHUYẾT.............................................................................................21. Tổng quan về danh sách liên kết..........................................................................................2

1.1. Định nghĩa....................................................................................................................21.2 .Phân loại.......................................................................................................................21.3. Danh sách liên kết đơn.................................................................................................2

1.3.1. Khái niệm...............................................................................................................21.3.2.Thao tác trên 1 node...............................................................................................31.3.3. Các thao tác trên danh sách liên kết đơn...............................................................3

1.3.3.1. Duyệt danh sách liên kết đơn..........................................................................41.3.3.2. Chèn một phần tử vào danh sách....................................................................41.3.3.3. Xóa một phần tử ra khỏi danh sách: có 2 trường hợp xảy ra..........................61.3.4.4. Tìm kiếm phần tử trong danh sách.................................................................81.3.3.5. Đảo các phần tử trong danh sách....................................................................8

C H Ư Ơ N G 2 : Ứ N G D Ụ N G D A N H S Á C H L I Ê N K Ế T Đ Ơ N V À O Q U Ả N LÝ SINH VIÊN...........................................................................................................10

2.1. Đặc tả bài toán................................................................................................................102.2. Yêu cầu hệ thống............................................................................................................102.3. Phân tích thiết kế chương trình.......................................................................................10

2.3.1. Cấu trúc dữ liệu chương trình..................................................................................102.3.2. Các chức năng của chương trình.............................................................................12

2.3.2.1. Nhập danh sách sinh viên.................................................................................122.3.2.2. Hiển thị danh sách sinh viên.............................................................................122.3.2.3. Tìm kiếm sinh viên theo mã sinh viên..............................................................122.3.2.4.Xóa sinh viên theo mã số sinh viên...................................................................122.3.2.5. Bổ sung sinh viên mới vào danh sách...............................................................122.3.2.6. Hiển thị sinh viên có điểm trung bình cao nhất................................................122.3.2.7. Sắp xếp danh sách sinh viên tăng dần theo trường điểm trung bình................12

2.4. Cài đặt chương trình.......................................................................................................132.4.1. Định nghĩa cấu trúc cho chương trình quản lý sinh viên.........................................132.4.2. Khởi tạo danh sách sinh viên...................................................................................132.4.3. Hiển thị danh sách sinh viên....................................................................................152.4.4. Tìm kiếm sinh viên theo mã sinh viên.....................................................................152.4.5. Xóa sinh viên theo mã sinh viên..............................................................................16

Nguyễn Ngọc Quang 43

Page 45: Đề tài: Quản lý sinh viên bằng danh sách liên kết đơns1.downloadmienphi.net/file/downloadfile9/215/1332810.docx · Web viewMasv (mã sinh viên) có kiểu dữ liệu

Đề tài: Quản lý sinh viên bằng danh sách liên kết đơn

2.4.6. Bổ sung sinh viên mới vào danh sách......................................................................172.4.7. In sinh viên có điểm trung bình lớn nhất.................................................................182.4.8. Sắp xếp tăng dần theo điểm trung bình...................................................................20

2.5. Chương trình quản lý sinh viên......................................................................................212.6. Màn hình kết quả............................................................................................................34

2.6.1. Menu chính của chương trình..................................................................................342.6.2. Tạo danh sách sinh viên...........................................................................................342.6.3. Hiển thị danh sách sinh viên....................................................................................352.6.4. Tìm kiếm sinh viên theo mã sinh viên.....................................................................352.6.5. Thêm sinh viên mới vào danh sách.........................................................................362.6.6. Hiển thị sinh viên có điểm trung bình cao nhất.......................................................362.6.7. Xóa sinh viên theo mã sinh viên..............................................................................372.6.8. Sắp xếp danh sách sinh viên tăng dần theo điểm trung bình...................................38

KẾT LUẬN...............................................................................................................................391. Các kết quả đạt được...........................................................................................................392. Ưu và nhược điểm của đề tài..............................................................................................39- Ưu điểm..................................................................................................................................393. Hướng phát triển.................................................................................................................39

Nguyễn Ngọc Quang 44