[ create a new paste ] login | about

Link: http://codepad.org/Nf5qqfnl    [ raw code | fork ]

hoangtuyenblogger - C++, pasted on Nov 22:
/*
Danh sách liên kết sinh viên
*/
#include <iostream>
#include<cstring>
#include<conio.h>
using namespace std;


struct sinhvien
{
	char *hoten = new char[256];
	char *mssv = new char [10]; // 9 ki tu + ki tu /0
	int namsinh;
	char *diachi = new char[10] ;
};

struct node
{
	sinhvien data;
	struct node *pNext;
};
typedef struct node NODE; 

struct list
{
	NODE *pHead;
	NODE *pTail;
};
typedef struct list LIST;


void creatLIST(LIST &l);
NODE *creatNODE(sinhvien sv);
void addHead(list &l, NODE *p);
void addTail(list &l, NODE *p);
void nhap_thong_tin_sinh_vien(sinhvien &sv);
void xuat_thong_tin_sinh_vien(sinhvien sv);
NODE *searchINFO(LIST l, char *MSSV);

void nhap_danh_sach(LIST &l);
void xuat_danh_sach(LIST l);


int main()
{
	int chucnang=-1;
	LIST danhsach1;
	creatLIST(danhsach1);
	
	do
	{
		cout<<endl;
		cout<<"0. Thoat ! "<<endl;
		cout<<"1. Nhap danh sach "<<endl;
		cout<<"2. Xuat danh sach "<<endl;
		cout<<"3. Tim thong tin sinh vien "<<endl;
		cout<<"\n Chon chuc nang : ";
		cin>>chucnang;
		system("cls"); // xoa man hinh
		switch(chucnang)
		{
			case(1):
				{
					nhap_danh_sach(danhsach1); break;
				}
			case(2):
				{
					xuat_danh_sach(danhsach1); break;
				}
			case(3):
				{
					char *maso = new char[10];
					cout<<"Nhap mssv can tim :";
					cin.ignore(); // xoa vung dem
					cin.getline(maso,10);
					NODE *k = searchINFO(danhsach1,maso);
					sinhvien a = k->data;
					xuat_thong_tin_sinh_vien(a);
				}
		}
	}
	while(chucnang!=0);
	return 0;
}


void creatLIST(LIST &l)
{
	l.pHead = NULL;
	l.pTail = NULL;
}

NODE *creatNODE(sinhvien sv)
{
	NODE *p = new NODE;
	p->data = sv;
	p->pNext = NULL;	
}

void nhap_thong_tin_sinh_vien(sinhvien &sv)
{
	cout<<"Nhap ten sinh vien : ";
	cin.getline(sv.hoten,256);
	
	cout<<"Nhap MSSV : ";
	fflush(stdin);
	cin.getline(sv.mssv,10);
	
	cout<<"Nhap nam sinh : ";
	cin>>sv.namsinh;
	
	fflush(stdin);
	cout<<"Nhap dia chi : ";
	cin.getline(sv.diachi,256);
}

void xuat_thong_tin_sinh_vien(sinhvien sv)
{
	cout<<sv.hoten<<"\t"<<sv.namsinh<<"\t"<<sv.mssv<<"\t"<<sv.diachi;
}

void nhap_danh_sach(LIST &l)
{
	int kt=0;
	do
	{
		system("cls");
		
		cout<<"1. Tiep tuc nhap thong tin vao danh sach "<<endl;
		cout<<"2. Huy nhap thong tin vao danh sach "<<endl;
		cin>>kt;
		system("cls");
		cin.ignore();
		switch(kt)
		{
			case(1):
				{
					cout<<"=============================Nhap data cho NODE sv============================  \n";
					// tao 1 sinh vien & nhap thong tin cho sinh vien 
					sinhvien a;
					nhap_thong_tin_sinh_vien(a);
		
					NODE *p = creatNODE(a); // them sinhvien a vao NODE p
					addTail(l,p);           // them NODE p vao danh sach
					cout<<"Da them thanh cong ! "<<endl;
					break;
				}
		}	
	}
	while( kt!= 2);
	
}

void xuat_danh_sach(LIST l)
{
	if(l.pHead == NULL) // neu danh sach chua co gi
	{
		cout<<"Danh sach rong !"<<endl;
	}
	else
	{
		for(NODE *i = l.pHead; i != NULL; i = i->pNext)
		{
			xuat_thong_tin_sinh_vien(i->data);
			cout<<endl;
		}
	}
}
void addHead(list &l, NODE *p)
{
	if(l.pHead == NULL) 			// neu NODE dau tien bang  NULL, co nghia la LIST chua co NODE nao het
	{
		l.pHead = l.pTail = p; 	// thi NODE dau cung la NODE cuoi va bang p ( NODE dau = NODE cuoi = p )
	}
	else                        // nguoc lai, neu lIST da co NODE
	{
		p->pNext = l.pHead;			// do chen vao dau LIST, nen con tro pNext cua p se tro vao NODE dau tien
		l.pHead = p;							// cap nhat lai NODE dau tien chinh la p
	}
}

void addTail(LIST &l, NODE *p)
{
	if(l.pHead == NULL) 			// neu NODE dau tien bang  NULL, co nghia la LIST chua co NODE nao het
	{
		l.pHead = l.pTail = p; 	// thi NODE cuoi cung la NODE cuoi va bang p ( NODE dau = NODE cuoi = p )
	}
	else						// nguoc lai, neu lIST da co NODE
	{
		l.pTail->pNext = p;
		l.pTail = p;
	}
}

NODE *searchINFO(LIST l, char* MSSV)
{
	for(NODE *i = l.pHead; i->pNext != NULL; i = i->pNext)
	{
		int kt = stricmp(i->data.mssv,MSSV);
		if(kt == 0)
		{
			return i;
		}
	}
	return NULL;
}


Create a new paste based on this one


Comments: