//The function searchByCost searches //for each book that falls within the given //price range. public void searchByCost(double min, double max) { BookRecord temp = new BookRecord(); temp = m_pHead; int tracker = 0; //Tracks every book found if (m_pHead == null) //Checks if there is anything in the list, prints message if list is empty { Console.Error.WriteLine("There are no contents in this list!"); } while ((temp != null)) //The list is searched till end { //Checks to see if the cost of the book falls within the range (min & max) if ((temp.getCost() >= min) && (temp.getCost() <= max)) { temp.printRecord(); //If it does, the information is printed. tracker++; } temp = temp.getNext(); } if (tracker <= 0) //If no book is found in that price range { Console.WriteLine("No item(s) found for this price range!"); } }
//The function searchByCost recursively searches //for each book that falls within the given //price range. //If found, it prints out the book information //Only the system directly interacts with this function private void searchByCost(double min, double max, BookRecord rt) { if (rt != null) { //Checks to see if the cost of the book falls within $10 of the range (min & max). if ((rt.getCost() >= (min - 5)) && (rt.getCost() <= (max + 5))) { rt.printRecord();//If it does, the information is printed } searchByCost(min, max, rt.getLeft()); searchByCost(min, max, rt.getRight()); } }
public static void Main(String[] args) { //Testing for instance creation Console.WriteLine("\nTesting the default constructor for BookRecord..."); BookRecord book1 = new BookRecord(); book1.printRecord(); //setter tests Console.WriteLine("\nTesting the setter functions of BookRecord..."); String lebook = "James Potter"; book1.setName(lebook); book1.setClassification(150); book1.setCost(95); book1.setStockNum(13232); book1.setNumberInStock(5); book1.printRecord(); String lebook2 = "Harry Potter"; BookRecord book2 = new BookRecord(lebook2, 111, 2, 4.33); //getter tests Console.WriteLine("\nTesting the getter functions of BookRecord..."); book2.printRecord(); Console.WriteLine(book1.getName()); Console.WriteLine(book1.getClassification()); Console.WriteLine(book1.getCost()); Console.WriteLine(book1.getNumberInStock()); Console.WriteLine(book1.getStockNum()); //static test Console.WriteLine("\nTesting static instances of BookRecord..."); BookRecord book3 = new BookRecord(); book3.printRecord(); String lebook3 = "James Potter"; book3.setName(lebook3); book3.setClassification(150); book3.setCost(95); book3.setStockNum(13232); book3.setNumberInStock(5); book3.printRecord(); //Book Inventory testing! Console.WriteLine("\nBook Database testing begins here..."); //Initializing some of the stubs/drivers Book_Database Store = new Book_Database(); BookRecord Book1 = new BookRecord("The Great Gatsby!", 21245, 343, 19.45); BookRecord Book2 = new BookRecord("The Stranger", 456121, 2342, 20.55); BookRecord Book3 = new BookRecord("Harry Potter", 234215, 443, 49.99); BookRecord book = new BookRecord(); //Testing read Inventory & printAll & getNextLine Console.WriteLine("\nTesting read database..."); Store.read_Database("BookData.txt"); Console.WriteLine("\nTesting printAll()"); Store.PrintAll(); //Testing addBook Console.WriteLine("\nTesting addBook, (& from BookRecord->setNext, getNext)..."); Store.addBook(Book1); Store.addBook(Book3); Store.addBook(Book2); Store.PrintAll(); //Testing removeBook Console.WriteLine("\nTesting the removeBook function...."); Store.removeBook(456121); Store.removeBook(4561); Store.PrintAll(); //Testing BookRecord *searchByStockNumber Console.WriteLine("\nTesting the BookRecord *searchByStockNumber function"); Console.WriteLine("First one"); book = Store.searchByStockNumber(234215); if (book == null) { Console.WriteLine("Nothing here bob"); } else { book.printRecord(); } Console.WriteLine("second one"); book = Store.searchByStockNumber(156121); if (book == null) { Console.WriteLine("Sorry, nothing here bob"); } else { book.printRecord(); } //Testing searchByClassification Console.WriteLine("\nTesting the searchByClassification function"); Store.searchByClassification(443); Store.searchByClassification(000); //Testing searchByCost Console.WriteLine("\nTesting the searchByCost function"); Console.WriteLine("For 10.00 to 58.85"); Store.searchByCost(10.00, 58.65); Console.WriteLine("For 20. 55 to 100"); Store.searchByCost(20.55, 100); Console.WriteLine("For 100 to 1000"); Store.searchByCost(100, 1000); //Testing ClearList Console.WriteLine("\nTesting the ClearList function"); Store.ClearList(); Console.WriteLine("list cleared \n"); Store.PrintAll(); //Re-Testing all search functions after list is cleared Console.WriteLine("Re-Testing all search functions after list is cleared"); Console.WriteLine("Re-Testing searchByStockNumber"); book = Store.searchByStockNumber(4567); book = Store.searchByStockNumber(156121); //Re-testing searchByClassification Console.WriteLine("\nRe-Testing searchByClassification"); Store.searchByClassification(443); Store.searchByClassification(000); Console.WriteLine("\nRe-Testing searchByCost"); Console.WriteLine("For 10.00 to 58.85"); Store.searchByCost(10.00, 58.65); Console.WriteLine("For 20. 55 to 100"); Store.searchByCost(20.55, 100); Console.WriteLine("For 100 to 1000"); Store.searchByCost(100, 1000); }
//The function removeBook searches for the stock number //of a Book Record and removes that book from the list. public Boolean removeBook(long stockNum) { BookRecord back = new BookRecord(); BookRecord temp = new BookRecord(); BookRecord delParent = new BookRecord(); //delParent = parent of node to remove, delNode = node to remove BookRecord delNode = new BookRecord(); String tempName = ""; temp = m_pRoot; back = null; if (temp == null)//Case 1: Checks to see there is anything in the tree { return false; } //Finding the node to delete. while ((temp != null) && (stockNum != temp.getStockNum())) { back = temp; //makes back the parent of temp if (stockNum < temp.getStockNum()) { temp = temp.getLeft(); //send temp to the next node to the left } else { temp = temp.getRight(); //send temp to the next node to the right } } //If tree has reached the end and no book is found, a message is printed if (temp == null) //System didnt find anything to remove { Console.WriteLine("Book Not Found. Nothing was removed.\n"); return false; } else //Prepare for deletion { if (temp == m_pRoot)//If the book is at the root, set delNode to root and delParent to null { delNode = m_pRoot; delParent = null; } else //Node to remove comes after the root node { delNode = temp; delParent = back; } } //Case 2: Removing node with zero or one child on the left if (delNode.getRight() == null) //The delNode has no right child { if (delParent == null) //Removing the root { m_pRoot = delNode.getLeft(); //make the left child the new root delNode = null; return true; } else //Not at root, decide which side of delParent, delNode is on { if (delParent.getLeft() == delNode) //Node to delete is a left child { delParent.setLeft(delNode.getLeft()); } else //Node to delete is a right child { delParent.setRight(delNode.getLeft()); } delNode = null; return true; } } else //Case 3: Deleting node has at least one child on the right { if (delNode.getLeft() == null) //The delNode has no left child { if (delParent == null)//Deleting the root { m_pRoot = delNode.getRight(); //make the right child the new root delNode = null; return true; } else //Not at root, decide which side of delParent, delNode is on { if (delParent.getLeft() == delNode) //Node to remove is a left child { delParent.setLeft(delNode.getRight()); } else //Node to remove is a right child { delParent.setRight(delNode.getRight()); } delNode = null; return true; } } else //Case 4: Removing node with two children. { //Find the replacement value. Locate the node containing the largest value smaller //than the key of the node being deleted temp = delNode.getLeft(); back = delNode; while (temp.getRight() != null) { back = temp; temp = temp.getRight(); } //Copy the replacement values into the //node to be "removed" tempName = temp.getName(); delNode.setName(tempName); delNode.setClassification(temp.getClassification()); delNode.setCost(temp.getCost()); delNode.setNumberInStock(temp.getNumberInStock()); delNode.setStockNum(temp.getStockNum()); //delNode = temp; //Remove the replacement node from the tree. if (back == delNode) { back.setLeft(temp.getLeft()); } else { back.setRight(temp.getLeft()); } temp = null; return true; } } }