📄 listdb.cc
字号:
//listDB.cc//ECE106 Lab#5//Name: Mo Li//Student#: 995447379//Date:Mar.09,2007#include<iostream>#include"listDB.h"#include"listNode.h"#include"studentRec.h"using namespace std;studentDB::studentDB(){ head=NULL; probesCount=0;};studentDB::~studentDB(){ delete head;};bool studentDB::insert(studentRecord* newRecord){ listNode* newNode= new listNode(newRecord); for(listNode* test_full=head; test_full!=NULL; test_full=test_full->getNext(),probesCount++); if(probesCount==1000) { cout <<"Error: database is full.\n"; return false; } if(head==NULL) { head=newNode; return true; } else { listNode* prev; listNode* current; for(prev=NULL,current=head; current!=NULL && newRecord->getStudentNumber()>current->getStudentRec()->getStudentNumber(); prev=current, current=current->getNext()); if(newRecord->getStudentNumber()==current->getStudentRec()->getStudentNumber()) return false; newNode->setNext(current); if (prev==NULL) head=newNode; else prev->setNext(newNode); return true; }};bool studentDB::retrieve(unsigned int studentNum, studentRecord* searchRecord){ listNode* temp; for(temp=head,probesCount=0; temp!=NULL&&studentNum>temp->getStudentRec()->getStudentNumber(); temp=temp->getNext(),probesCount++); if(temp==NULL) return false; else if(studentNum==temp->getStudentRec()->getStudentNumber()) { searchRecord->setStudentNumber(temp->getStudentRec()->getStudentNumber()); searchRecord->setFirstName(temp->getStudentRec()->getFirstName()); searchRecord->setLastName(temp->getStudentRec()->getLastName()); searchRecord->setFirstName(temp->getStudentRec()->getFirstName()); for(int i=0;i<5;i++) searchRecord->setMark(i,temp->getStudentRec()->getMark(i)); return true; } else return false;};bool studentDB::remove(unsigned int studentNum){ listNode* prev; listNode* current; for(prev=NULL, current=head; current!=NULL&&studentNum>current->getStudentRec()->getStudentNumber(); prev=current,current=current->getNext()); if(current==NULL) return false; else if(studentNum==current->getStudentRec()->getStudentNumber()) { delete current->getStudentRec(); if(prev==NULL) head=(head->getNext()); else prev->setNext(current->getNext()); return true; } else return false;};void studentDB::clear(){ delete head; head=NULL;};bool studentDB::isEmpty(){ return head==NULL;};bool studentDB::isFull(){ for(listNode* test_full=head; test_full!=NULL; test_full=test_full->getNext(),probesCount++); return probesCount==1000;};void studentDB::printProbes(){ cout<<probesCount+1<<endl;};void studentDB::dump(){ for(listNode* temp=head; temp!=NULL;temp=temp->getNext()) { temp->getStudentRec()->print(); cout<<endl; }};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -