1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đề tài: Chương trình quản lý sinh viên pdf

22 795 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 144 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Danh sách móc nối kép là tập hợp các nút mà mỗi nút có 2 mối liên kết với 2 phần tử khác trong danh sách.Một nút trong danh sách móc nối kép có dạng: Trong đó: LEFT: con trỏ trái: lưu tr

Trang 1

MỤC LỤC

MỤC LỤC 01

PHẦN I: GIỚI THIỆU CHUNG 02

1 Khái niệm về danh sách móc nối 02

2 Các phép toán trên danh sách 02

3 Giới thiệu về chương trình quản lý sinh viên 02

PHẦN II: GIỚI THIỆU CÁC THÀNH PHẦN CHÍNH CỦA CHƯƠNG TRÌNH 03

1 Sơ đồ các lớp đối tượng 03

2 Mô tả các lớp đối tượng 04

PHẦN III: GIỚI THIỆU CÁC CHỨC NĂNG TRONG CHƯƠNG TRÌNH 08

PHẦN IV: MÃ NGUỒN CHƯƠNG TRÌNH 09

PHẦN V: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CHƯƠNG TRÌNH 22

PHẦN 1: GIỚI THIỆU CHUNG 1.Khái niệm về danh sách móc nối

Danh sách là tập hợp các nút (ô nhớ) không liền kề, có kiểu dữ liệu xác định và giữa chúng có liên lạc với nhau bởi con trỏ địa chỉ

Số nút của danh sách gọi là chiều dài của danh sách Một danh sách có chiều dài bằng 0 là một danh sách rỗng

Trang 2

Danh sách móc nối kép là tập hợp các nút mà mỗi nút có 2 mối liên kết với 2 phần tử khác trong danh sách.

Một nút trong danh sách móc nối kép có dạng:

Trong đó:

LEFT: con trỏ trái: lưu trữ địa chỉ nút trướcRIGHT: con trỏ phải: Lưu trữ địa chỉ nút sauDanh sách móc nối kép có dạng:

2.Các phép toán trên danh sách

 Tạo mới một danh sách

 Thêm 1 nút vào danh sách

 Tìm kiếm 1 nút trong danh sách

 Xóa 1 nút khỏi danh sách

 Sắp xếp thứ tự các danh sách

 Hủy danh sách

3.Giới thiệu về chương trình quản lý sinh viên

Chương trình giúp quản lý dữ liệu cũng như thông tin của sinh viên như: mã số sinh viên, họ tên, năm sinh, lớp, điểm trung bình…

Chương trình có các chức năng chình như:

 Tạo 1 danh sách sinh viên

 Thêm 1 sinh viên vào danh sách

 Xóa 1 sinh viên

 Tìm kiếm 1 sinh viên

 Sắp xếp danh sách sinh viên

PHẦN II: GIỚI THIỆU CÁC THÀNH PHẦN CHÍNH CỦA CHƯƠNG

TRÌNH

SƠ ĐỒ CÁC LỚP ĐỐI TƯỢNG

LEFT INFO RIGHT

Trang 3

MÔ TẢ CÁC LỚP ĐỐI TƯỢNG

Lớp SV:

1 Thuộc tính:

 Kiểu dữ liệu char:

maso: Mã số sinh viênhoten: Họ và tên sinh viênlop: Lớp sinh viên đang họcgioitinh: Giới tính sinh viênquequan: Quê quán sinh viên

 Kiểu dữ liệu int:

Xuly

Trang 4

2 Phương thức:

 Nhap: Hàm nhập 1 sinh viên

 Hien: Hàm hiện sinh viên

I Lớp NODE:

1 Thuộc tính:

 Đối tượng thành phần:

Info: chứa thông tin sinh viên

 *l: Con trỏ trái, trỏ tới nút đứng trước

 *r: Con trỏ phải, trỏ tới nút đứng sau

B3: Nhập dữ liệu info cho nút đó

Hàm trả về con trỏ trỏ tới địa chỉ nút mới tạo Nếu không đủ bộ nhớ để tạo, hàm trả về giá trị NULL

 Freenode: Hàm giải phóng bộ nhớ nút vừa cấp phát

II Lớp LINKLIST thừa kế từ lớp NODE

1 Thuộc tính kiểu NODE

 *first: trỏ tới phần tử đầu danh sách

 *last: trỏ tới phần tử cuối danh sách

2 Phương thức:

 Createlist: Hàm khởi tạo 1 danh sách mớiCho giá trị các con trỏ quản lý địa chỉ hai nút đầu và cuối danh sách

móc nối kép về con trỏ NULL

 Nhaplist: Hàm nhập n sinh viên vào danh sáchThuật toán:

B1: Nhập số lượng sinh viên cần nhập vào danh sách (n)

B2: Khởi tạo biến đếm i, i=0

B3: So sánh i với n Nếu i<n -> B4, nếu i>=n -> B6

B4: Thêm 1 nút vào danh sách (push_last())

B5: Tăng i lên 1 -> Quay lại bước 2

B6: Kết thúc

 Showlist: Hàm hiện danh sách sinh viênThuật toán:

B1: Khởi tạo 1 con trỏ trỏ vào nút đầu tiên

B2: Nếu nút đó khác NULL->B3, ngược lại ->kết thúc

Trang 5

B3: Hiện nút đó

B4: Dịch con trỏ sang phải 1 nút->B2

 Listsize: Hàm đếm số lượng nút trong danh sách

Thuật toán:

B1: Khởi tạo 1 con trỏ, biến đếm I (i=0)

B2: Cho con trỏ trỏ vào nút đầu tiên

B3: Nếu nút đó khác NULL ->B4, ngược lại->B6

B4: dịch con trỏ sang phải 1 nút

Nếu danh sách không rỗng-> B5

B4: đặt nút mới làm nút đầu và nút cuối

B5: Liên kết phải nút mới trỏ đến nút đầu tiên hiện thởi trong danh sách

B6: Liên kết trái nút đầu tiên hiện thời trỏ đến nút mới

B7: Đặt nút mới làm nút đầu tiên

 Push_last: Hàm thêm 1 nút vào cuối danh sách

Thuật toán:

B1: Khởi tạo con trỏ, tạo 1 nút

B2: Nếu nút đó =NULL ->B3

B3: Nếu danh sách rỗng->B4

Nếu danh sách không rỗng-> B5

B4: đặt nút mới làm nút đầu và nút cuối

B5: Liên kết phải nút cuối cùng hiện thời trỏ đến nút mới

B6: Liên kết trái mới trỏ đến nút cuối cùng hiện thời trong danh sách.B7: Đặt nút mới làm nút cuối cùng

 Push_after: Hàm thêm 1 nút vào sau 1 vị trí trong danh sáchThuật toán:

B1: Khởi tạo con trỏ p trỏ đến mới, con trỏ q để duyệt, khởi tạo biến

vt để xác định vị trí cần chèn sau, i là biến đếm(i=0)

B2: Nhập vị trí cần chèn (vt)

B3: So sánh vt với số nút trong danh sách

Nếu vt>số nút ->B4Nếu vt<số nút ->B6B4: Gán vt = số nút

Trang 6

B5: Thêm 1 nút vào cuối danh sách (push_last).

B6: so sánh i với số nút

Nếu i>số nút->Kết thúcNếu i<số nút->B7B7: so sánh i với vt

Nếu i=vt->B8Nếu i khác vt->B11B8: Tạo 1 nút mới, cho p trỏ đến nút đó

B9: Nối nút sau q với p

B10: Nối q với p

B11: Dịch q sang phải 1 nút, tăng i lên 1

 Search_name: Hàm tìm kiếm 1 nút theo tên trong danh sách Thuật toán:

B1: Tạo con trỏ q để duyệt, cho q trỏ đến nút đầu tiên

B2: Nếu nút đó bằng NULL-> Kết thúc

Nếu nút đó khác NULL->B3

B3: So sánh dữ liệu tên của nút đó với dữ liệu tên cần tìm

Nếu đúng->B5Nếu sai->B4B4: dịch q sang phải 1 nút ->B2

B5: Trả về giá trị là 1 nút

 Del_first: Hàm xóa nút đầu tiên trong danh sách

Thuật toán:

B1: Xét nếu danh sách rỗng thì không làm gì cả

Nếu danh sách không rỗng->B2B2: Chuyển nút đầu tiên là nút tiếp theo

 Del_last: Hàm xóa nút cuối cùng trong danh sách

Thuật toán:

B1: Xét nếu danh sách rỗng thì không làm gì cả

Trang 7

B2: tạo 1 con trỏ p trỏ đến nút gần cuối

B3: đặt liên kết phải của p là NULL

B4: đặt liên kết trái của nút cuối là NULL

B5: đặt p làm nút cuối

 Del_node_name: Hàm xóa nút theo tên trong danh sách

Thuật toán:

B1: tạo 1 con trỏ trỏ đến nút cần xóa

B2: Nếu danh sách rỗng không làm gì cả

B3: Nếu nút cần xóa = NULL thì không làm gì cả

B4: Nếu nút cần xóa là nút đầu tiên->del_first()

B5: Nếu nút cần xóa là nút cuối->del_last()

B1: tạo 1 con trỏ trỏ đến nút cần xóa

B2: Nếu danh sách rỗng không làm gì cả

B3: Nếu nút cần xóa = NULL thì không làm gì cả

B4: Nếu nút cần xóa là nút đầu tiên->del_first()

B5: Nếu nút cần xóa là nút cuối->del_last()

B3: Dịch nút đầu tiên sang bên phải 1 nút

B4: Cho liên kết phải q = NULL

B5: Nếu nút đầu tiên khác rỗng, cho liên kết trái nút đó là NULL

Trang 8

B6: delete q;

B7: Cho q trỏ đến nút đàu tiên->B2;

 Sort_list_dtb: Hàm sắp xếp danh sách theo điểm trung bình tăng dần

Thuật toán: (Sử dụng thuật toán sắp xếp nổi bọt – Bubble sort)

B1: Tạo 2 con trỏ i, j để duyệt Cho i trỏ đến nút đầu tiên, j trỏ đến nútcuối cùng

B2: So sánh i với nút cuối cùng

Nếu i= nút cuối cùng->kết thúcNếu i khác nút cuối -> B3B3: So sánh j với i

Nếu j =i->BNếu j khác i->B4B4: So sánh dữ liệu dtb của j với nút trước j

Nếu dtb của j> dtb của nút trước j->B7Nếu dtb của j< dtb của nút trước j->B5B5: Đổi chỗ j vs nút trước j

B6: Chuyển j trỏ sang bên trái 1 nút.->B3

B7: Chuyển i trỏ sang bên phải 1 nút.->B2

 Ghi_file: Hàm nhập danh sách ra file

 Doc_file: Hàm đọc danh sách từ fileIII Lớp MENU

3) Đọc danh sách từ file

2 Hiện danh sách sinh viên

3 Đếm số lượng sinh viên trong danh sách

4 Thêm 1 sinh viên vào danh sách

1) Thêm 1 sinh viên vào đầu danh sách

Trang 9

2) Thêm 1 sinh viên vào cuối danh sách

3) Thêm 1 sinh viên vào sau 1 nút xác định trong danh sách

5 Tìm kiếm 1 sinh viên trong danh sách

1) Tìm kiếm 1 sinh viên theo tên trong danh sách

2) Tìm kiếm 1 sinh viên theo mã số trong danh sách

6 Xóa 1 sinh viên trong danh sách

1) Xóa sinh viên theo mã số xác định

2) Xóa sinh viên theo tên xác định

3) Xóa toàn bộ danh sách

7 Sắp xếp danh sách sinh viên theo điểm trung binh

PHẦN IV: MÃ NGUỒN CHƯƠNG TRÌNH

Trang 10

NODE* search_name(NODE *l,char timten[]);

NODE* search_maso(NODE *l,char timmaso[]);

int del_first();

int del_last();

int del_node_name(NODE *l,char xoaten[]);

int del_node_maso(NODE *l,char xoamaso[]);

cout<<"\n Nhap ma so sinh vien: "; cin.ignore().get(maso,6);

cout<<"\n Nhap ho ten: "; cin.ignore().get(hoten,30);

cout<<"\n Nhap gioi tinh: "; cin.ignore().get(gioitinh,5);

cout<<"\n Nhap nam sinh: "; cin>>namsinh;

cout<<"\n Nhap que quan: "; cin.ignore().get(quequan,10);

cout<<"\n Nhap lop: "; cin.ignore().get(lop,6);

cout<<"\n Nhap diem trung binh: "; cin>>dtb;

}

Trang 12

int n,i;// n la so luong sinh vien can nhap

cout<<" So sinh vien can nhap :";

cout<<"\n|MA SO| HO TEN SV | NAM SINH |GIOI TINH| QUE QUAN | LOP | DTB |";

+ -+\n";

Trang 13

cout<<"\n Khong them nut duoc";

if(first==NULL) // neu ds rong

Trang 17

if(nodej->info.dtb < (nodej->left)->info.dtb){

Trang 18

a.write((char*)&b,sizeof(b));

}

a.close(); //Dong tep

cout<<"\n Da ghi du lieu vao tep SinhVien.dat";

}

void LIST::doc_file()

{

SINHVIEN b;

fstream a; //Khao bao doi tuong ghi/doc

a.open("SinhVien.dat",ios::in+ios::binary);//Mo de doc theo kieu nhi phan

while(!a.eof()) //Trong khi con chua den cuo^i' file

a.close(); //Dong tep

<<setw(40)<<"\n 1 Nhap thong tin sinh vien"

<<" 5 Tim sinh vien trong danh sach"

<<setw(40)<<"\n 2 Hien danh sach sinh vien"

<<" 6 Xoa sinh vien"

<<setw(40)<<"\n 3 Dem so sinh vien"

<<" 7 Sap xep danh sach theo diem trung binh"

<<setw(40)<<"\n 4 Bo sung sinh vien vao danh sach"

<<" 8 Ket thuc!";

}

void MENU::xuly()

{

Trang 19

cout<<"\n 1.Nhap tu ban phim";

cout<<"\n 2.Xuat file";

cout<<"\n 3.Doc file";

cout<<"\n Chon kieu nhap:"; cin>>kn;

if(kn==1){

a.nhaplist();

}if(kn==2){

a.ghi_file();

}if(kn==3){

a.doc_file();

}}

Trang 20

int kc; //kieu chencout<<"\n 1.Chen dau";

cout<<"\n 2.Chen cuoi";

cout<<"\n 3.Chen sau 1 nut";

cout<<"\n Chon kieu chen: "; cin>>kc;

if(kc==1){

a.push_first(l1);

}if(kc==2){

a.push_last(l1);

}if(kc==3){

a.push_after(l1);

}}

if(ch==5){

int kt;

cout<<"\n 1.Theo ten";

cout<<"\n 2.Theo ma so";

cout<<"\n Nhap kieu tim kiem: "; cin>>kt;

if(kt==1){

Trang 21

int kx;

cout<<"\n 1 Xoa theo ma so ";

cout<<"\n 2 Xoa theo ten ";

cout<<"\n 3 Xoa toan bo danh sach";

cout<<"\n Nhap kieu xoa: "; cin>>kx;

if(kx==1){

a.clear_list(l1);

cout<<"\n Mission Success";

}}

if(ch==7){

a.sort_list_dtb(l1);

cout<<"\n Sap xep thanh cong";

}}while(ch!=8);

}

Trang 22

Vì đây là sản phẩm đầu tiên của nhóm nên không thể tránh được các thiếu xót Nhóm sẽ cố găng để nâng cấp cũng như hoàn thiện chương trình hơn.

Ngày đăng: 11/03/2014, 23:20

HÌNH ẢNH LIÊN QUAN

SƠ ĐỒ CÁC LỚP ĐỐI TƯỢNG - Đề tài: Chương trình quản lý sinh viên pdf
SƠ ĐỒ CÁC LỚP ĐỐI TƯỢNG (Trang 2)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w