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

Quản lý môn học và đăng ký môn dạy học cho giáo viên

53 388 0

Đ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 53
Dung lượng 499,75 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 liên kết là danh sách mà 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 dung để chứa dữ liệu cần xử lý và phần liên kết dùng để liên kết với node khác.

Trang 1

KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚN MÔN CÔNG NGHỆ PHẦN MỀN

TÊN ĐỀ TÀI:

QUẢN LÝ MÔN HỌC VÀ ĐĂNG KÝ MÔN DẠY HỌC

CHO GIÁO VIÊN

Sinh viên thực hiện:

Nguyễn Thị Thu Sương MSSV:DH51201926

Trang 3

Em xin gửi lời cảm ơn đến quý thầy cô trong khoa Công Nghệ Thông tin của trường Đại Học Công Nghệ Sài Gòn (STU) đã giúp đỡ cũng như đã tận tình truyền dạy những kiến thức để em có thể thực hiện bai tậ lớn môn công nghệ phần mền này.

Và em xin gửi lời cảm ơn đến cô Lê Thị Kim Dung và Thầy Nguyễn Trung Trực đã tận tình giúp đỡ để em có thể hoàn thành bài tập lớn này Cũng như có cơ hội

áp dụng được những gì mình đã học vào thực tế

LỜI CẢM ƠN

Trang 4

PHẦN MỞ ĐẦU

1. Lý do đề tài:

Là sinh viên đang học nghành công nghệ thông tin Việc ứng dụng những kiên thức đã học để tạo ra một chương trình chạy được trong thực tế là vô cùng quan trọng Để cũng cố kiến thức và nhằm áp dụng những kiến thức đã học vào thực

tế nên em đã chọn đề tài quản lý môn học và đăng ký môn học cho giáo viên làm bài tập lớp

- Lý thuyết về danh sách liên kết đơn

- Bài toán quản lý đăng ký môn học

4. Phương pháp nghiên cứu:

- Nghiên cứu từ 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 Internet

Trang 5

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

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

Trong đó:

 Data :thườ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

Trang 6

Hình 1.1 Danh sách liên kết.

1.2.2.Thao tác trên Node:

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

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

- Truy cập vào trường Data: p-> data

- Truy cập vào trường trỏ bởi Next: p-> next

- Hủy Node bởi con trỏ p: delete (p)

1.2.3.Các thao tác trên danh sách liên kết:

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 ta cần xin cấp phát vùng 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 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 tuần 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ỏ plist

- 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 phải chứa giá trị NULL

- 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 bằng rỗng: plist = NULL

1.3.3.1 Duyệt danh sách liên kết đơn:

Duyệt lần lượt từng Node trong danh sách:

Mục_đích (Node & plist ){

Node p = plist ; // cho con trỏ p vào đầu danh sáchWhile (điều kiện dừng)

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

p=p-> next;// cho con trỏ chỉ tới phần tử kế tiếp

Trang 7

1.3.3.2 Chèn một phần tử vào danh sách:

Để chèn một phần tử vào X danh sách ta cấp phát vùng nhớ cho

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

Node q;

q= new Node;

q-> data= 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 q vào đầu danh sách:

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

q-> next = plist;(1)Bước 2: cho plist trỏ tới q: cập nhật lại con trỏ danh sách đâu

Trang 8

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: Chèn node vào sau 1 node bất kỳ

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

Node p = list;

• Duyệt danh sách từ đầu tới cuối

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

• Cho phần tử liên kết của Node được trỏ p chứa địa chỉ của q

Bước 1: cho con trỏ đầu danh sách plist trỏ vào node sau nó

p = p-> next

Bước 2: giải phóng node p ra khỏi danh sách

Delete (p);

Trang 9

Hình 1.4: xóa đầu danh sách.

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 plist,dùng vòng lập cho nó trỏ tới địa chỉ node trước node được trỏ bởi p trong dan sách

Node q = plist ; 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);

Hình 1.5: xóa 1 node bất kỳ trong danh sách

1.3.3.4 Tìm kiếm phần tử trong danh sách.

Bước 1:cho p trỏ vào đầu danh sách plist

Trang 10

Node p = plist;

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 data của node được trỏ bởi p = X thì trả về Node p và dừng vong lập Ngược lại nếu p != X thì cho p trỏ tới Node kế tiếp

while ((p!=NULL) && strcmp(p->info._maGV,x._maGV)!=0)

p=p->next;

Hình 1.6: tim kiếm một node trong danh sách

CHƯƠNG 2: CÁC NGHIỆP VỤ CỦA VIỆC QUẢN LÝ MÔN HỌC VÀ ĐĂNG

KÝ MÔN DẠY CỦA GIÁO VIÊN 2.1 Đặc tả bài toán:

Quản lý môn hoc và việc đăng ký môn dạy của các giáo viên trong một trường học gồm:

Thông tin giáo viên: mã giáo viên, tên giáo viên, môn học đăng ký

Thông tin môn học có trong trường: tên môn hoc, mã môn học…

Những thông tin trên cần chính xác và rõ ràng và nhanh chóng, mà công việc làm thủ công thì phức tạp và tốn nhiều công sức và thời gian Chính vì lý do trên nên bài toán

Trang 11

quản quản lý môn học và đăng ký môn dạy của giáo viên đã ra đời để thực hiện

những công việc trên 1 cách nhanh chóng và thuận tiện

2.2 Yêu cầu hệ thống:

Thông tin của một giáo viên dạy ở trung tâm gồm: Mã giáo viên, tên giáo viên, địachỉ Một giáo viên có 1 danh sách các môn đăng ký dạy Biết rằng thông tin của một môn học như sau:

Hãy sử dụng danh sách liên kết đơn có cấu trúc lồng nhau để tổ chức dữ liệu cho bài toán trên và thực hiện các yêu

cầu sau:

- Nhập 1 danh sách giáo viên và danh sách các môn học mà giáo viên đăng ký dạy

- Cho phép thêm, xóa, sửa giáo viên

- Cho phép tìm giáo viên khi biết mã số môn học hay tên môn học

- Khi biết mã giáo viên ta có thể thêm 1 môn học mới mà giáo viên đó đăng ký

CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG QUẢN LÝ MÔN

HỌC VÀ ĐĂNG KÝ MÔN HỌC CỦAGIÁO VIÊN.

1. Lược đồ quan hệ thực thể trong chương trình:

2. Thiết kế cơ sở dữ liệu:

2.1. Các thuộc tính của đối tượng:

Môn học:

Mã môn học: m_maMH

Môn học

Trang 12

Tên môn học: m_tenMH.

Giáo Viên:

Mã giáo viên: _maGV

Tên giáo viên: _tenGV

địa chỉ: _diachi

Danh sách môn học mà giáo viên đăng ký:

#Mã môn hoc m_maMH

2.2. Từ diễn tả dữ liệu cho các thực thể:

- Môn học: các thông tin chứa môn học của trường học bao gồm: Mã môn học, tên môn học

- Giáo viên: các thông tin giáo viên gồm: Mã giáo viên, tên giáo viên, địa chỉ, danh sách môn học mà giáo viên đăng ký dạy Giáo viên chỉ đăng ký những môn học mà nhà trường có

2.3. Lược đồ quan hệ:

Quy ước gạch dưới là khóa chính, thêm # phía trước là khóa ngoại

Ví dụ:

m_maMH : là khóa chính

#_maGV: là khóa ngoại

Ta có lược đồ quan hệ như sau:

Môn học (m_maMH, m_tenMH)

Giáo viên: ( _mGV ,_tenGV, _diachi, m_maMH)

3. Cơ sở dữ liệu:

3.1. Danh sách các bảng:

Môn học:

STT Thuộc tính Kiểu Mặc định Ràng buộc Chương trình

1 m_maMH Char [10] Khóa chính Mã môn học

2 m_tenMH Chả [10] N Tên môn học

Giáo Viên

buộc Chương trình

Trang 13

1 _maGV Char [10] Khóa

chính Mã giáo viên

2 _tenGV Char [50] Tên giáo viên

3 _diachi Char [50] địa chỉ giáo viên

Trang 14

CHƯƠNG 4: THỰC HIỆN VÀ ƯU KHUYẾT ĐIỂM

Trang 15

Môn học:

- Nhập danh sách môn học (thêm 1 môn học vào danh sách môn học của nhà trường):

+ Nhập thông tin môn học gồm mã môn học và tên môn học

- Hiển thị thông tin môn học:

+ Duyệt danh sách môn học

+ In ra tất cả môn học mà nhà trường có dạy

- Xóa môn học mà của nhà trường:

+ Nhập mã môn học cần xóa

+ Duyệt hết danh sách môn học

+Nếu có môn học thì xóa môn học ngược lại xuất không có môn học này

- Tìm môn học trong danh sách môn học của nhà trường:

+ Nhập mã môn học cần tìm

+ Duyệt hết danh sách mmoon học

+ Nếu có thì xuất ra tìm thấy môn học ngược lại xuất ra không có môn học này

Giáo viên:

- Nhập thông tin giáo viên (thêm 1 giáo viên vào danh sách):

+ Nhập thông tin của giáo viên gồm: mã giáo viên, tên giáo viên, địa chỉ

- Xuất danh sách giáo viên và tất cả môn học mà giáo viên đó đăng ký: + Duyệt danh sách giáo viên

+ In ra danh sách giáo viên.

+ Duyệt danh sách môn học mà giá viên đó đăng ký.

+ In ra danh sách mà giáo viên đó đăng ký ( nếu có).

- Thêm một môn học mà giáo viên đó đăng ký:

+ Nhập mã môn học mà giá viên muốn đăng ký.

+ Duyệt danh sách môn học của nhà trường.

+ nếu có mã môn học trong danh sách môn học nhà trường thì thêm vào

danh sách môn học mà giáo viên đăng ký Ngược lại xuất ra không có môn này trong trường

+ Nếu bạn muốn đăng ký thêm thì nhấn 1 Ngược lại ấn 0

- Tìm giáo viên:

+ Nhập mã giáo viên cần tìm.

+ Duyệt danh sách giáo viên.

+ Trả về node giáo viên nếu tìm thấy.

- Xóa 1 giáo viên:

+ Nhập mã giáo viên.

+ Tìm giáo viên.

+ Nếu tìm thấy thì xóa giáo viên đó ra khỏi danh sách Ngược lại xuất ra

không có giáo viên này

- Tìm tất cả giáo viên khi nhập mã môn học.:

+ Nhập mã môn học.

Trang 16

+ Duyệt danh sách giáo viên.

+ Duyệt danh sách môn học mà giáo viên đó đăng ký.

+ Nếu tìm thấy thì xuất thông tin giáo viên đó.

- Tìm môn học khi biết mã giá viên:

+ Nhập mã giáo viên

+ Duyệt danh sách giáo viên.

+ Duyệt danh sách môn học mà giáo viên đó đăng ký.

+ Nếu tìm thấy thì xuất thông tin môn học đó.

- Sữa thông tin giáo viên:

+ Tìm mã môn học trong danh sách môn học mà giáo viên đăng ký.

+ Nếu có thì xóa môn học đó khỏi danh sách môn học mà giáo viên đó đăng

ký.Ngược lại xuất ra không có môn học trong danh sách

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

2.1.Định nghĩa cấu trúc chương trình quản lý môn học và đăng ký môn học cho giáo viên:

void Khoi_tao_MH (NODEPTR_MH &pHead);

int KiemTra_rong_MH (NODEPTR_MH &plist);

NODEPTR_MH taonut_MH (MonHoc x);

void them_cuoi_MH (NODEPTR_MH &plist, MonHoc x);

void xoadau_MH (NODEPTR_MH & plist);

bool xoaMH_X(NODEPTR_MH & plist,MonHoc x);

NODEPTR_MH tim_MH ( NODEPTR_MH & plist, MonHoc x);

void them_monhoc (NODEPTR_MH &plist);

void xuat_MH (NODEPTR_MH plist);

void Khoi_tao_GV (NODEPTR_GV &pHead);

int kiemtra_rong_GV (NODEPTR_GV &plist);

NODEPTR_GV creatednode_GV (GiaoVien x);

void insert_last_GV (NODEPTR_GV &plist, GiaoVien x);

void xoadau_GV (NODEPTR_GV & plist);

bool xoaGV_X(NODEPTR_GV & plist,GiaoVien x);

void them_thongtin_GV (NODEPTR_GV &plist, NODEPTR_MH DSMHHT);void xuat_danhsach_GV (NODEPTR_GV plist);

NODEPTR_GV tim_GV ( NODEPTR_GV & plist, GiaoVien x);

void xuat_giao_vien_khi_biet_maMH(char maMH [10],NODEPTR_GV plist);int xoa_MH_ma_GV_DangKy (NODEPTR_GV & plist, char maMH [10]);int them_monhoc_cho_giaovien ( NODEPTR_GV plist,NODEPTR_MH

DSMHHT,char magv[10]);

void menu ();

Trang 17

void main();

2.2. Khởi tạo danh sách môn học của nhà trường:

void Khoi_tao_MH (NODEPTR_MH &pHead)

2.3.Kiểm tra danh sách môn học có rỗng không:

int KiemTra_rong_MH (NODEPTR_MH &plist)

2.4.Tạo một Node môn học mới trong danh sách môn học của trường:

NODEPTR_MH taonut_MH (MonHoc x)

Trang 18

void them_cuoi_MH (NODEPTR_MH &plist, MonHoc x)

2.6.Xóa một môn học ở đầu danh sách môn học của trường.

void xoadau_MH (NODEPTR_MH & plist)

{

NODEPTR_MH p;

if (!KiemTra_rong_MH(plist)){

p=plist;

plist = p->next;

delete p;

}}

Trang 19

 Hàm xóa một môn học ở đầu danh sách sử dụng cấu trúc điều kiện rỗng hay không tạo một Node P kiểm tra rỗng gắn P là phần tử đầu tiên cho phần tử đầu tiên trỏ tới phần tử kế tiếp và xóa P.

2.7.Xóa một môn học bất ký trong danh sách môn học của trường.

bool xoaMH_X(NODEPTR_MH & plist,MonHoc x)

q->next=p->next;

delete p;

return true;

}}

return false;

}

Trang 20

 Hàm xóa một Node bất kỳ trong danh sách sử dụng cấu trúc tuần tự và rẽ nhánh

và cấu trúc lập.Cho con trỏ P chứa phần tử muốn xóa Nếu P là phần tử đầu tiên thì gọi hàm xóa đầu Ngược lại dung cấu trúc lậpWHILE để duyệt tất cả các phần tử trong danh sách nếu thỏa điều kiện trong lập while thì chuyển qua phần

tử kế tiếp Ngược lại thì xóa phần tử P

2.8. Tìm một môn học mà trường học có dạy.

NODEPTR_MH tim_MH ( NODEPTR_MH & plist, MonHoc x)

2.9.Thêm một môn học( nhập danh sách môn học) vào danh sách môn học của trường.

void them_monhoc (NODEPTR_MH &plist)

Trang 21

 Hàm nhập (thêm) một môn học vào danh sách môn hoc Sử dụng cấu trúc tuần

tự và cấu trúc điều kiện.Nhập thông tin môn học gồm mã môn học và tên môn học.Nếu môn học đã có trong danh sách thì không thể thêm vào nữa

2.10. Xuất danh sách môn học của nhà trường.

void xuat_MH (NODEPTR_MH plist)

{

NODEPTR_MH p=plist;

{

while (p !=NULL){

cout<<"ma mon hoc:"<< p->data.m_maMH<<endl;cout<<"ten mon hoc:"<< p->data.m_tenMH <<endl;

p = p->next ;}

}}

 Hàm xuất danh sách môn học của nhà trường: sử dụng cấu trúc lập Xuất ra tất

cả các phần tử có trong danh sách môn học

2.11. Khởi tạo danh sách giáo viên:

void Khoi_tao_GV (NODEPTR_GV &pHead)

Trang 22

2.12. Kiểm tra danh sách giáo viên có rỗng không:

int kiemtra_rong_GV (NODEPTR_GV &plist)

{

return (plist ==NULL ?1:0);

 } Hàm kiểm tra rỗng: Sử dụng cấu trúc rẽ nhánh Nếu danh sách rỗng trả về 1 ngược lại trả về 0

2.13. Tạo một Node giáo viên:

NODEPTR_GV creatednode_GV (GiaoVien x)

2.14. Chèn một Node giáo viên vào cuối danh sách giáo viên:

void insert_last_GV (NODEPTR_GV &plist, GiaoVien x)

Trang 23

2.15. Xóa một Node giáo viên ở đầu danh sách giáo viên:

void xoadau_GV (NODEPTR_GV & plist)

{

NODEPTR_GV p;

if (!kiemtra_rong_GV(plist)){

p=plist;

plist = p->next;

delete p;

}}

 Hàm xóa một giáo viên ở đầu danh sách sử dụng cấu trúc điều kiện rỗng hay không tạo một Node P kiểm tra rỗng gắn P là phần tử đầu tiên cho phần tử đầu tiên trỏ tới phần tử kế tiếp và xóa P

2.16. Xóa một Node giáo viên bất kỳ trong danh sách giáo viên:

bool xoaGV_X(NODEPTR_GV & plist,GiaoVien x)

Trang 24

delete p;

return true;

}}

return false;

}

 Hàm xóa một Node bất kỳ trong danh sách sử dụng cấu trúc tuần tự và rẽ nhánh

và cấu trúc lập.Cho con trỏ P chứa phần tử muốn xóa Nếu P là phần tử đầu tiên thì gọi hàm xóa đầu Ngược lại dung cấu trúc lậpWHILE để duyệt tất cả các phần tử trong danh sách nếu thỏa điều kiện trong lập while thì chuyển qua phần

tử kế tiếp Ngược lại thì xóa phần tử P

2.17. Nhập (thêm) thông tin giáo viên vào trong danh sách giáo viên:

void them_thongtin_GV (NODEPTR_GV &plist, NODEPTR_MH DSMHHT){

GiaoVien x;

cout<<"nhap ma so Giao Vien:";

cin.ignore();

Trang 25

 Hàm nhập (thêm) một giáo viên vào danh sách giáo viên Sử dụng cấu trúc tuần

tự và cấu trúc điều kiện.Nhập thông tin môn học gồm giáo viên gồm mã giáo

viên, tên giáo viên, địa chỉ

2.18. Xuất danh sách giáo viên và danh sách môn học mà giáo viên đăng ký:

void xuat_danhsach_GV (NODEPTR_GV plist)

{

NODEPTR_GV p=plist;

{

while (p !=NULL){

cout<<"\n -";

cout<<"\nma Giao Vien:"<<p->info._maGV<<endl;

cout<<"ten Giao Vien:"<<p->info._tenGV<<endl;

cout<<"dia chi:"<<p->info._diachi<<endl;

cout<<"danh sach mon hoc"<<endl;

xuat_MH (p->info.Danhsach_MH);

p = p->next ;}

}

}

Trang 26

 Hàm xuất danh sách giáo viên của nhà trường: sử dụng cấu trúc lập Xuất ra tất

cả các phần tử có trong danh sách giáo viên

2.20. Xuất giáo viên khi biết mã môn hoc:

void xuat_giao_vien_khi_biet_maMH(char maMH [10],NODEPTR_GV plist){

if ( strcmp ( q->data.m_maMH,maMH)==0)

{

cout<<"ma giao vien:"<<p->info._maGV<<endl;cout<<"ten giao vien:"<<p->info._tenGV<<endl;cout<<"dia chi giao vien:"<<p->info._diachi<<endl;

Ngày đăng: 14/06/2016, 08:36

HÌNH ẢNH LIÊN QUAN

Hình 1.1 Danh sách liên kết. - Quản lý môn học và đăng ký môn dạy học cho giáo viên
Hình 1.1 Danh sách liên kết (Trang 6)
Hình 1.2: Chèn đâu danh sách. - Quản lý môn học và đăng ký môn dạy học cho giáo viên
Hình 1.2 Chèn đâu danh sách (Trang 7)
Hình 1.3: Chèn node vào sau 1 node bất kỳ. - Quản lý môn học và đăng ký môn dạy học cho giáo viên
Hình 1.3 Chèn node vào sau 1 node bất kỳ (Trang 8)
Hình 1.5: xóa 1 node bất kỳ trong danh sách. - Quản lý môn học và đăng ký môn dạy học cho giáo viên
Hình 1.5 xóa 1 node bất kỳ trong danh sách (Trang 9)
Hình 1.4: xóa đầu danh sách. - Quản lý môn học và đăng ký môn dạy học cho giáo viên
Hình 1.4 xóa đầu danh sách (Trang 9)
Hình 1.6: tim kiếm một node trong danh sách. - Quản lý môn học và đăng ký môn dạy học cho giáo viên
Hình 1.6 tim kiếm một node trong danh sách (Trang 10)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w