Sửa thông tin sinh viên trên danh sách móc nối kép

Một phần của tài liệu nghiên cứu và cài đặt chương trình thực hiện quản lý kết quả học tập của sinh viên (Trang 26 - 31)

Chương II. NỘI DUNG NGHIÊN CỨU

D. Sửa thông tin sinh viên trên danh sách móc nối kép

1, Cách sửa thông tin sinh viên trên danh sách móc nối kép

1. Tìm kiếm nút có mã sinh viên trùng với mã sinh viên nhập vào.

2. Nếu tìm thấy, nhập lại các thông tin mới cho sinh viên đó.

3. Nếu không tìm thấy, thông báo không có sinh viên nào có mã sinh viên đó

2, Mã giả cho phần này có thể như sau:

void edit (string maSV) {

// sửa thông tin một sinh viên trên danh sách theo mã sinh viên

Node *p = search(maSV);

// tìm kiếm nút có mã sinh viên trùng với mã sinh viên nhập vào

if (p == NULL) { // nếu không tìm thấy, thông báo không có sinh viên nào có mã sinh viên đó cout << "Khong co sinh vien nao co ma sinh vien " << maSV << endl;

} else {

// nếu tìm thấy, nhập lại các thông tin mới cho sinh viên đó

cout << "Nhap ho ten moi: ";

cin >> p->data->hoTen;

cout << "Nhap ngay sinh moi: ";

cin >> p->data->ngaySinh;

cout << "Nhap dia chi moi: ";

cin >> p->data->diaChi;

cout << "Nhap ket qua monhoc: ";

cin >> p->data->ketQuaMonHoc;

cout << "Sua thong tin sinh vien thanh cong" << endl;

} }3 4rhwjr3, Ví dụ về sửa thông tin sinh viên trên danh sách móc nối kép Để sửa thông tin , ta cần đảm bảo đã có đầy đủ các thông tin cụ thể như ví dụ sau : Chương trình code:

#include <iostream>

#include <string>

using namespace std;

struct SinhVien { int maSV;

string tenSV;

string lop;

float diemTK;

string hanhKiem;

};

struct Node { SinhVien data;

Node* next;

Node* prev;

};

struct DoubleLinkedList { Node* head;

Node* tail;

};

void init(DoubleLinkedList& list) { list.head = NULL;

list.tail = NULL;

}

bool isEmpty(DoubleLinkedList list) { return list.head == NULL;

} Node* createNode(SinhVien sv) { Node* node = new Node;

node->data = sv;

node->next = NULL;

node->prev = NULL;

return node;

} void addFirst(DoubleLinkedList& list, SinhVien sv) { Node* node = createNode(sv);

if (isEmpty(list)) { list.head = node;

list.tail = node;

} else { node->next = list.head;

list.head->prev = node;

list.head = node;

} } void addLast(DoubleLinkedList& list, SinhVien sv) { Node* node = createNode(sv);

if (isEmpty(list)) { list.head = node;

list.tail = node;

} else { node->prev = list.tail;

list.tail->next = node;

list.tail = node;

} } void insertAfter(DoubleLinkedList& list, Node* node, SinhVien sv) { Node* newNode = createNode(sv);

if (node == list.tail) { addLast(list, sv);

} else { newNode->next = node->next;

newNode->prev = node;

node->next->prev = newNode;

node->next = newNode;

} }

void insertBefore(DoubleLinkedList& list, Node* node, SinhVien sv) { Node* newNode = createNode(sv);

if (node == list.head) { addFirst(list, sv);

} else { newNode->prev = node->prev;

newNode->next = node;

node->prev->next = newNode;

node->prev = newNode;

} } void deleteFirst(DoubleLinkedList& list) { if (!isEmpty(list)) {

Node* node = list.head;

list.head = node->next;

if (list.head != NULL) { list.head->prev = NULL;

} else { list.tail = NULL;

} delete node;

} } void deleteLast(DoubleLinkedList& list) { if (!isEmpty(list)) {

Node* node = list.tail;

list.tail = node->prev;

if (list.tail != NULL) { list.tail->next = NULL;

} else { list.head = NULL;

} delete node;

} } void deleteNode(DoubleLinkedList& list, Node* node) { if (node == list.head) {

deleteFirst(list);

} else if (node == list.tail) { deleteLast(list);

} else {

node->prev->next = node->next;

node->next->prev = node->prev;

delete node;

} } void display(DoubleLinkedList list) { if (isEmpty(list)) {

cout << "Danh sach rong!" << endl; } else {

Node* node = list.head;

while (node != NULL) { cout << "Ma SV: " << node->data.maSV << endl;

cout << "Ten SV: " << node->data.tenSV << endl;

cout << "Lop: " << node->data.lop << endl;

cout << "Diem TK: " << node->data.diemTK << endl;

cout << "Hanh kiem: " << node->data.hanhKiem << endl;

cout << endl;

node = node->next;

} } } int main() { DoubleLinkedList list;

init(list);

// Them sinh vien vao danh sach

SinhVien sv1 = { 1, "Nguyen Van A", "D13CNPM1", 8.0, "Tot" };

SinhVien sv2 = { 2, "Tran Thi B", "D13CNPM2", 7.5, "Kha" };

SinhVien sv3 = { 3, "Le Van C", "D13CNPM1", 9.0, "Tot" };

addFirst(list, sv1);

addLast(list, sv2);

insertAfter(list, list.head, sv3);

display(list);

return 0;}

 Kết quả:

Ma SV: 1 Ten SV: Nguyen Van A Lop: D13CNPM1 Diem TK: 8 Hanh kiem: Tot Ma SV: 3 Ten SV: Le Van C Lop: D13CNPM1 Diem TK: 9 Hanh kiem: Tot Ma SV: 2

Ten SV: Tran Thi B Lop: D13CNPM2 Diem TK: 7.5 Hanh kiem: Kha

Một phần của tài liệu nghiên cứu và cài đặt chương trình thực hiện quản lý kết quả học tập của sinh viên (Trang 26 - 31)

Tải bản đầy đủ (PDF)

(38 trang)