Question

In: Computer Science

********************C# C# C#******************** Part A: Create a project with a Program class and write the following...

********************C# C# C#********************

Part A: Create a project with a Program class and write the following two methods(headers provided) as described below:

1. A Method, public static int InputValue(int min, int max), to input an integer number that is between (inclusive) the range of a lower bound and an upper bound. The method should accept the lower bound and the upper bound as two parameters and allow users to re-enter the number if the number is not in the range or a non-numeric value was entered.

2. A Method, public static bool IsValid(string id), to check if an input string satisfies the following conditions: the string’s length is 5, the string starts with 2 uppercase characters and ends with 3 digits. For example, “AS122” is a valid string, “As123” or “AS1234” are not valid strings.

Part B: Create a Book class containing the following:

1. Two public static arrays that hold codes (categoryCodes) and descriptions of the popular book categories (categoryNames) managed in a bookstore. Thesecodes are CS, IS, SE, SO, and MI, corresponding to book categories Computer Science, Information System, Security, Society and Miscellaneous.

2. Data fields for book id (bookId) and book category name   (categoryNameOfBook)

3. Auto-implemented properties that hold a book’s title (BookTitle), book’s number of pages (NumOfPages) and book’s price (Price).

4. Properties for book id and book category name. Assume that the set accessor will always receive a book id of a valid format. For example, “CS125” and “IS334” are of valid format and also refer to known categories “Computer Science” and “Information Systems”. If the book ID does not refer to a known category, then the set accessor must retain the number and assign to the “MI” category. For example, “AS123” will be assigned as “MI123”. The category property is a read-only property that is assigned a value when the book id is set.

5. Two constructors to create a book object:

- one with no parameter:

public Book()

- one with parameter for all data fields:

public Book(string bookId, string bookTitle, int numPages, double price)

6. A ToString method, public override string ToString(), to return information of a book object using the format given in the screen shot under

Information of all Books

Part C:

Extend the application in Part A (i.e., adding code in the Program class) to become a BookStore Application by making use of the Book class and completing the following tasks:

1. Write a Method,

  private static void GetBookData(int num, Book[] books),

to fill an array of books. The method must fill the array with Books which are constructed from user input information (which must be prompted for). Along with the prompt for a book id, it should display a list of valid book categories and call method in Part A.2 to make sure the inputted book id is a valid format. If not the user is prompted to re-enter a valid book id.

2. After the data entry is complete, write a Method,

public static void DisplayAllBooks(Book[] books),

to display information of all books that have been entered including book id, title, number of pages and price. This method should call the ToString methodthat has been created in Book class.

3. After the data entry is complete, write a Method,

private static void GetLists(int num, Book[] books),

to display the valid book categories, and then continuously prompts the user for category codes and displays the information of all books in the category as well as the number of books in this category.

Appropriate messages are displayed if the entered category code is not a valid code.

4. Write the Main method that first prompts the user for the number of books that is between 1 and 30 (inclusive), by calling the method in Part A.1.

Then call method in Part C.1 to create an array of books.

Then call method in Part C.2 to display all books in the array.

Then call method in Part C.3 to allow the user to input a category code and see information of the category.

Solutions

Expert Solution

Hi please find the below c# code

// book class
class Book
{
// two static array contains the categorycode and categoryname respectively
public static String[] categoryCodes = { "CS", "IS", "SE", "SO", "MI" };
public static String[] categoryNames = { "Computer Science", "Information System", "Security", "Society", "Miscellaneous" };
// fields for price, booktitle, categoryNameOfBook, NumOfPages, bookId
public double Price { get; set; }
public string BookTitle { get; set; }
public string categoryNameOfBook { get; set; }
public int NumOfPages { get; set; }
public string bookId
{
get;
set;
  
}
// constructor without parameters
public Book()
{

}
// constructor with parameters
public Book(string bookId, string bookTitle, int numPages, double price)
{

this.BookTitle = bookTitle;
this.NumOfPages = numPages;
this.Price = price;
// add category and retieve information from bookId
var subId = bookId.Substring(0, 2);
// check whether the first two charachter are in categorycode array or not
if (categoryCodes.Contains(subId))
{
// take the index from categoryCode
int index = Array.IndexOf(categoryCodes, subId);
this.categoryNameOfBook = categoryNames[index];
this.bookId = bookId;
}
else
{
// create new code ie. bookId to use as MI as specifed in the question
var newCode = "MI" + bookId.Substring(2);
this.bookId = newCode;
this.categoryNameOfBook = "Miscellaneous";
}

}

// tostring method to return the current object information
public override string ToString()
{
return $"Book Id {this.bookId}, Book Title {this.BookTitle}, Number of Pages {this.NumOfPages}, Price {this.Price} ";
}
}


// program class
class Program
{
// A Method, public static int InputValue(int min, int max),
//to input an integer number that is between (inclusive) the range of a lower bound
//and an upper bound. The method should accept the lower bound and the upper bound as two
//parameters and allow users to re-enter the number if the number is not in the range or a non-numeric value was entered
public static int InputValue(int min, int max)
{
int value = 0;
Console.WriteLine($"Please enter an int between {min} and {max}");
while (true)
{
var isInt = int.TryParse(Console.ReadLine(), out value);
if (value > min && value < max)
break;
}
return value;
}

// A Method, public static bool IsValid(string id), to check if an input
//string satisfies the following conditions: the string’s length is 5,
//the string starts with 2 uppercase characters and ends with 3 digits.
public static bool IsValid(string id)
{
// check for length
if (id.Length != 5)
return false;
int i = 1;
// iterate to check the uppercase for two characters
foreach (char c in id)
{
if (i < 3 && !char.IsUpper(c))
{
return false;
}
if (i > 2)
break;
i++;
}
// use int.tryparse to check whether last three characters are digits and store the reult in value
if (!int.TryParse(id.Substring(2), out i))
return false;
return true;
}

// create an array by taking the information from user
private static void GetBookData(int num, Book[] books)
{
// display valid ids
Console.WriteLine($"Valid Book Ids AS122, MI112, SO132, SE123");

for (int i = 0; i < num; i++)
{
string bookId = "";
// looping till the valid BookId is not entered
while (true)
{
Console.WriteLine("Plese enter BookId");
bookId = Console.ReadLine();
if (IsValid(bookId))
{
// break when valid bookid is enetered
break;
}
}
Console.WriteLine("Please enter the book title");
var bookTitle = Console.ReadLine();
Console.WriteLine("Please enter Number of Pages");
var pages = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Please enter Price");
var price = Convert.ToDouble(Console.ReadLine());
// take all the information from user and store it to current index of books array
books[i] = new Book(bookId, bookTitle, pages, price);
}
}

// display all books using to string method
public static void DisplayAllBooks(Book[] books)
{
for (int i = 0; i < books.Length; i++)
{
Console.WriteLine(books[i].ToString());
}
}

// getlists method to display the informaion on the basis of category code
private static void GetLists(int num, Book[] books)
{
Console.WriteLine($"Book Catergory Codes {String.Join(",", Book.categoryCodes)}");
Console.WriteLine($"Please Enter Category Code");
string code = "";
// looping till the valid Code is not entered
while (true)
{
code = Console.ReadLine();
if (Book.categoryCodes.Contains(code))
{
break;
}
else
{
Console.WriteLine("Please enter a valid code");
}
}
// take the index of book code
int index = Array.IndexOf(Book.categoryCodes, code);
var categoryName = Book.categoryNames[index];
// get the book array using categoryname
var book = books.Where(b => b.categoryNameOfBook == categoryName).ToList();

// display the count
Console.WriteLine($"Total number of book for the category {categoryName} are {book.Count}");

if (book.Count > 0)
Console.WriteLine($"Book details are follows");
// display the new book array information
foreach (var b in book)
{
Console.WriteLine(b.ToString());
}

}

// main function
static void Main(string[] args)
{
// first prompts the user for the number of books that is between 1 and 30
int num = InputValue(1, 30);
//call method in Part C.1 to create an array of books.
Book[] books = new Book[num];
GetBookData(num, books);
//call method in Part C.2 to display all books in the array.
DisplayAllBooks(books);
//call method in Part C.3 to allow the user to input a category code and see information of the category.
GetLists(num, books);

} }

OUTPUT: I have entered information for four books

As we can see there are two books which fall under SO category

Thanks

Hope it helps!!


Related Solutions

Part A: Create a project with a Program class and write the following two methods (headers...
Part A: Create a project with a Program class and write the following two methods (headers provided) as described below: A Method, public static int InputValue(int min, int max), to input an integer number that is between (inclusive) the range of a lower bound and an upper bound. The method should accept the lower bound and the upper bound as two parameters and allow users to re-enter the number if the number is not in the range or a non-numeric...
write a C++ program to CREATE A CLASS EMPLOYEE WITH YOUR CHOICE OF ATTRIBUTES AND FUNCTIONS...
write a C++ program to CREATE A CLASS EMPLOYEE WITH YOUR CHOICE OF ATTRIBUTES AND FUNCTIONS COVERING THE FOLLOWING POINTS: 1) COUNTING NUMBER OF OBJECTS CREATED ( NO OBJECT ARRAY TO BE USED) USING ROLE OF STATIC MEMBER 2) SHOWING THE VALID INVALID STATEMENTS IN CASE OF STATIC MEMBER WITH NON STATIC MEMBER FUNCTION, NON STATIC MEMBERS OF CLASS WITH STATIC MEMBER FUNCTION, BOTH STATIC. SHOW THE ERRORS WHERE STATEMENTS ARE INVALID. 3) CALL OF STATIC MEMBER FUNCTION, DECLARATION OF...
Create a Project and a Class called “FinalGrade” Write a Java program to compute your final...
Create a Project and a Class called “FinalGrade” Write a Java program to compute your final grade for the course. Assume the following (you can hard-code these values in your program). Assignments are worth 30% Labs are worth 40% Mid-term is worth 15% Final is worth 15% Ask for the grades in each category. Store them in a double variable. Print out the final percentage grade.           For example, Final Grade Calculation Enter percentage grades in the following order. Assignments,...
(In C++) Bank Account Program Create an Account Class Create a Menu Class Create a main()...
(In C++) Bank Account Program Create an Account Class Create a Menu Class Create a main() function to coordinate the execution of the program. We will need methods: Method for Depositing values into the account. What type of method will it be? Method for Withdrawing values from the account. What type of method will it be? Method to output the balance of the account. What type of method will it be? Method that will output all deposits made to the...
Write a program in java that does the following: Create a StudentRecord class that keeps the...
Write a program in java that does the following: Create a StudentRecord class that keeps the following information for a student: first name (String), last name (String), and balance (integer). Provide proper constructor, setter and getter methods. Read the student information (one student per line) from the input file “csc272input.txt”. The information in the file is listed below. You can use it to generate the input file yourself, or use the original input file that is available alone with this...
Write a C program that does the following In this part, you will write more complicated...
Write a C program that does the following In this part, you will write more complicated functions. They will require parameters and return values. The purpose is to give you experience with these components, and to show you how functions can be used to break your code down into smaller parts. You will also get some more experience with iterating through arrays.Open repl project Lab: User-Defined Functions 2. Write a program that does the following: 1.(20 pts.) Allows the user...
Write C++ program Consider the following SimpleString class: class simpleString {     public:          simpleString( );...
Write C++ program Consider the following SimpleString class: class simpleString {     public:          simpleString( );                                 // Default constructor          simpleString(int mVal );                    // Explicit value constructor          ~simpleString() { delete [ ] s;}          // Destructor void readString();                              // Read a simple string          void writeString() const;                    // Display a simple string char at(int pos) const;                       // Return character at (pos)          int getLength() const;                        // Return the string length          int getCapacity() const;...
Create a working C# Program that will accept an input and has the following class. areaCircle...
Create a working C# Program that will accept an input and has the following class. areaCircle – computes the area of the circle volumeCube – computes the volume of a cube perimeterTraingle – computes the perimeter of a triangle surfaceAreaRect – computes the surface area of a rectangle *You may usePass by Value and/or Pass by Reference *Using ConsoleApp
C++ * Program 2:      Create a date class and Person Class.   Compose the date class...
C++ * Program 2:      Create a date class and Person Class.   Compose the date class in the person class.    First, Create a date class.    Which has integer month, day and year    Each with getters and setters. Be sure that you validate the getter function inputs:     2 digit months - validate 1-12 for month     2 digit day - 1-3? max for day - be sure the min-max number of days is validate for specific month...
For your first project, write a C program (not a C++ program!)that will read in a...
For your first project, write a C program (not a C++ program!)that will read in a given list of non-negative integers and a target integer and checks if there exist two integers in the list that sum up to the target integer. Example:List: 31, 5, 8, 28, 15, 21, 11, 2 Target: 26 Yes!, 44 No! your C program will contain the following: •Write a function that will make a copy of the values from one array to another array....
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT