Nhap xuất Danh sách liên kết đơn sinh viên

Hôm nay mình định viết về phần tiếp theo của opencv xử lý ảnh nhưng còn bài tập môn cấu trúc dữ liệu chưa hoàn thành , sẵn tiện mình vừa làm vừa ra bài này luôn .

I. Đề bài

II. Code

#include”iostream”
#include”string”
#include”stdlib.h”
using namespace std;

struct SinhVien {
int mssv;
string name;
string diachi;
string ngaysinh;
string lop;
};
typedef struct SinhVien sinhvien;
struct node {
sinhvien *data;
struct node* link;
};
typedef struct node Node;
struct list {
Node* pHead;
Node* pTail;
};
typedef struct list List;
void KhoiTaoList(List &l) {
l.pHead = l.pTail = NULL;
}
void Input_ThongTin(sinhvien *sv) {
cin.ignore();
cout << “Nhap Ten sinh vien: \n”;
fflush(stdin);
getline(cin,sv->name);
cout << “Nhap Ma so sinh vien : “;
cin >> sv->mssv;
cin.ignore();
cout << “Nhap dia chi sinh vien :\n”;
getline(cin,sv->diachi);
fflush(stdin);
cout << “Nhap ngay sinh cua sinh vien:\n”;
getline(cin, sv->ngaysinh);
fflush(stdin);
cout << “Nhap lop cua sinh vien : “;
getline(cin, sv->lop);
}
Node *KhoiTaoNode() {
sinhvien* sv = new sinhvien;
Input_ThongTin(sv);
Node* p = new Node;
if (p == NULL) {
cout << “full ram ko thể tao thêm\n”;
return 0;
}
p->data = sv;
p->link = NULL;
return p;
}
void ThemVaoDauMotSinhVien(List &l, Node *p) {
if (l.pHead == NULL) {
l.pHead = l.pTail= p;
}
else {
p->link = l.pHead;
l.pHead = p;
}
}
void Show(List l) {
for (Node* k = l.pHead; k != NULL; k = k->link) {
cout << “MSSV : ” << k->data->mssv<<endl;
cout << “Ten : ” << k->data->name << endl;
cout << “Dia Chi : ” << k->data->diachi << endl;
cout << “Ngay Sinh : ” << k->data->ngaysinh << endl;
cout << “Lop : ” << k->data->lop << endl;
cout << “==============================SV================\n”;
}
}
void showNode(Node *k) {
cout << “==============================SV================\n”;
cout << “MSSV : ” << k->data->mssv << endl;
cout << “Ten : ” << k->data->name << endl;
cout << “Dia Chi : ” << k->data->diachi << endl;
cout << “Ngay Sinh : ” << k->data->ngaysinh << endl;
cout << “Lop : ” << k->data->lop << endl;
}
void DelSinhVien(List& l) {
string del;
cin.ignore();
cout << “Nhap Ma So SV hoac Ten SV Can Xoa : \n”;
fflush(stdin);
getline(cin, del);
Node* g = new Node;
if (del.compare(l.pHead->data->name) == 0 && l.pHead->link ==NULL) {
l.pHead = NULL;
}
else{
for (Node* k = l.pHead; k != NULL; k = k->link) {
if (del.compare(k->data->name) == 0) {
g->link = k->link;
k = g;
}
g = k;
}
}
}

void search(List l ) {
int mssv;
cout << “nhap Ma So Sinh Vien Can Tim Kiem : “;
cin >> mssv;
for (Node* k = l.pHead; k != NULL; k = k->link) {
if (k->data->mssv == mssv) {
showNode(k);
}
}
}

void upgrade(List& l) {
int mssv;
cout << “Nhap Ma So sinh vien can chinh sua thong tin : “;
cin >> mssv;
for (Node* k = l.pHead; k != NULL; k = k->link) {
if (k->data->mssv == mssv) {
cout << “Moi ban sua thong tin sinh vien co ma so : ” << mssv << endl;
Input_ThongTin(k->data);
}
}

}

void DanhSachSinhVienChuaXepLop(List l) {
for (Node* k = l.pHead; k != NULL; k = k->link) {
if (k->data->lop == “”) {
cout << “Danh Sach Sinh Vien Chua Xep Lop ” << endl;
showNode(k);
}
}
}

void ChucNang(List &l) {
int n;
cout << “======Danh Sach Chuc Nang=========\n”;
cout << “1 => Nhap 1 sinh vien moi .\n”;
cout << “2 => In danh sach sinh vien .\n “;
cout << “3 => Tim kiem sinh vien theo ma so .\n”;
cout << “4 => Sua thong tin sinh vien\n”;
cout << “5 => Xoa sinh vien khoi danh sach\n”;
cout << “6 =>Lay danh sach sinh vien chua xep lop\n”;
cout << “0 = >Thoat chuong trinh\n”;
while (1){
cout << “Nhap chuc nang ban chon : “;
cin >> n;
if (n == 1) {
cout << “Moi Ban nhap thong tin 1 sinh vien : \n”;
Node* p = KhoiTaoNode();
ThemVaoDauMotSinhVien(l, p);
}
if (n == 3) {
search(l);
}
if (n == 2) {
cout << “Danh Sach Sinh Vien : \n”;
Show(l);
}
if (n == 4) {
upgrade(l);
}
if (n == 5) {
DelSinhVien(l);
}
if (n == 6) {
DanhSachSinhVienChuaXepLop(l);
}
if (n == 0) {
break;
}
}
}

//hàm in danh sách sinh vien

int main() {
List l;
KhoiTaoList(l);
ChucNang(l);
system(“pause”);
return 0;
}

#include”iostream” #include”string” #include”stdlib.h” using namespace std; struct SinhVien { int mssv; string name; string diachi; string ngaysinh; string lop; }; typedef struct SinhVien sinhvien; struct node { sinhvien *data; struct node* link; }; typedef struct node Node; struct list { Node* pHead; Node* pTail; }; typedef struct list List; void KhoiTaoList(List &l) { l.pHead = l.pTail = NULL; } void Input_ThongTin(sinhvien *sv) { cin.ignore(); cout << “Nhap Ten sinh vien: \n”; fflush(stdin); getline(cin,sv->name); cout << “Nhap Ma so sinh vien : “; cin >> sv->mssv; cin.ignore(); cout << “Nhap dia chi sinh vien :\n”; getline(cin,sv->diachi); fflush(stdin); cout << “Nhap ngay sinh cua sinh vien:\n”; getline(cin, sv->ngaysinh); fflush(stdin); cout << “Nhap lop cua sinh vien : “; getline(cin, sv->lop); } Node *KhoiTaoNode() { sinhvien* sv = new sinhvien; Input_ThongTin(sv); Node* p = new Node; if (p == NULL) { cout << “full ram ko thể tao thêm\n”; return 0; } p->data = sv; p->link = NULL; return p; } void ThemVaoDauMotSinhVien(List &l, Node *p) { if (l.pHead == NULL) { l.pHead = l.pTail= p; } else { p->link = l.pHead; l.pHead = p; } } void Show(List l) { for (Node* k = l.pHead; k != NULL; k = k->link) { cout << “MSSV : ” << k->data->mssv<data->name << endl; cout << “Dia Chi : ” << k->data->diachi << endl; cout << “Ngay Sinh : ” << k->data->ngaysinh << endl; cout << “Lop : ” << k->data->lop << endl; cout << “==============================SV================\n”; } } void showNode(Node *k) { cout << “==============================SV================\n”; cout << “MSSV : ” << k->data->mssv << endl; cout << “Ten : ” << k->data->name << endl; cout << “Dia Chi : ” << k->data->diachi << endl; cout << “Ngay Sinh : ” << k->data->ngaysinh << endl; cout << “Lop : ” << k->data->lop << endl; } void DelSinhVien(List& l) { string del; cin.ignore(); cout << “Nhap Ma So SV hoac Ten SV Can Xoa : \n”; fflush(stdin); getline(cin, del); Node* g = new Node; if (del.compare(l.pHead->data->name) == 0 && l.pHead->link ==NULL) { l.pHead = NULL; } else{ for (Node* k = l.pHead; k != NULL; k = k->link) { if (del.compare(k->data->name) == 0) { g->link = k->link; k = g; } g = k; } } } void search(List l ) { int mssv; cout << “nhap Ma So Sinh Vien Can Tim Kiem : “; cin >> mssv; for (Node* k = l.pHead; k != NULL; k = k->link) { if (k->data->mssv == mssv) { showNode(k); } } } void upgrade(List& l) { int mssv; cout << “Nhap Ma So sinh vien can chinh sua thong tin : “; cin >> mssv; for (Node* k = l.pHead; k != NULL; k = k->link) { if (k->data->mssv == mssv) { cout << “Moi ban sua thong tin sinh vien co ma so : ” << mssv << endl; Input_ThongTin(k->data); } } } void DanhSachSinhVienChuaXepLop(List l) { for (Node* k = l.pHead; k != NULL; k = k->link) { if (k->data->lop == “”) { cout << “Danh Sach Sinh Vien Chua Xep Lop ” << endl; showNode(k); } } } void ChucNang(List &l) { int n; cout << “======Danh Sach Chuc Nang=========\n”; cout << “1 => Nhap 1 sinh vien moi .\n”; cout << “2 => In danh sach sinh vien .\n “; cout << “3 => Tim kiem sinh vien theo ma so .\n”; cout << “4 => Sua thong tin sinh vien\n”; cout << “5 => Xoa sinh vien khoi danh sach\n”; cout << “6 =>Lay danh sach sinh vien chua xep lop\n”; cout << “0 = >Thoat chuong trinh\n”; while (1){ cout << “Nhap chuc nang ban chon : “; cin >> n; if (n == 1) { cout << “Moi Ban nhap thong tin 1 sinh vien : \n”; Node* p = KhoiTaoNode(); ThemVaoDauMotSinhVien(l, p); } if (n == 3) { search(l); } if (n == 2) { cout << “Danh Sach Sinh Vien : \n”; Show(l); } if (n == 4) { upgrade(l); } if (n == 5) { DelSinhVien(l); } if (n == 6) { DanhSachSinhVienChuaXepLop(l); } if (n == 0) { break; } } } //hàm in danh sách sinh vien int main() { List l; KhoiTaoList(l); ChucNang(l); system(“pause”); return 0; }

Full Code bài danh sách sinh viên , Mình sẽ up giải thích sau !