- June 7, 2020
Assignment – Blood Bank Management ISYS5002 Introduction to Programming Date Due: 23:59, Friday 5 June 2020 Overview A Blood Bank is where blood components are gathered as a result of blood donations. Information about the donor and the blood components needs to be managed. You are to design and write a C# program to manage blood donors and provide a summary report for a blood bank. You will use the foundational C# skills you’ve been developing and apply them to manage and analyse a small set of Blood Donors. The set of Blood donors are provided in a tabular format as a text file. This assignment will be an introduction to reading, processing, and grouping rows and columns to add, update, delete donors and calculate some interesting statistics. This is a significant assignment worth 30% of your mark. The Task You are to write a C# application that can manage donors and provide summary information about the blood banks information. The data is maintained in a text file. Your program must be able to open and read the information from the text file. This information will be used to calculate the summary information. Any additions, updates or deletion of donors and their data will need to be saved to a file. When saving, thought will need to be given whether you overwrite the existing file or create a new file. Managing donors includes: add a donor delete a donor update information about donor browse records (next/previous) search for a donor Summary information needed includes: the total number of donors the average age of a donor the most common blood type the lest common blood type the number of donors of each blood type Data File format All the data is loaded from a text file. Any changes made should be saved to a text file. Each donor record will be on its own line with field separated by a comma. Each record will contain the following information: first name last name date of birth email blood group last donated The Design The design of the program, including the GUI, is to be completed by yourself. The following ideas are just suggestions; you may have other ideas. If you get inspiration from other programs, perhaps via a google search, please make sure you reference them within the comments in your code. The data is stored in a text file. How will you load the data? How will you display the loaded data, as a list box? How will you save the data? It is up to you to think about if the changes are automatically saved, if you overwrite the existing file or if you provide a save-as functionality. Think about how you will input the donor’s details; will this be a set of label and text boxes. What about input validation, can you use radio buttons? Is the email formatted correctly? For each donor management action, you probably will need a button for add, delete, update, etc. When you add a new donor, what happens if they already have a record? Make sure whatever your implementation is that the tab order of the input controls makes sense. Browsing is the ability to move forward and backwards through the donor records. Will this simple next and previous buttons? Perhaps you can load the file into a list box and allowing the user to scroll up and down through the list. If using a list box, maybe you can select a record in the list, and it will populate the input form. Searching will be limited to any one input field. When you search you, will first sort the records based on the search field, and then show the first donor record that matches that record. Can you use one form for both inputs and search, and the user either selects the search or add donor button. Implementation The following table can be used as a guide to marks where you can put your effort. It not as simple as this, you may have the pass level working and some of the credit level or included detailed comments explaining how to implement the credit level, so may end up with a credit mark. So this is to be used as a helpful guide! Pass/Credit Credit Distinction Open file Add a donor Save file Valid Type Search Delete a donor Report Valid Dates Create Backup Update Donor Remove duplicates Valid Email Validate input file Don’t try to implement the entire program at once. Start small, implement basic functionality and add as you go. For example, get the pass level working, then try for the credit level. If you are unable to get the program to do something, then comment out the problem code, add a comment explaining what you are trying to do. This will maximize your marks. Just make sure your program compiles without errors! Evaluation Your submission will be evaluated to see if your solution correctly implements the described behaviours. You will have access to some test files we will have other files to test your solution when grading. All behaviour we test is completely described by the problem specification. The code submitted must conform to the C# programming style naming conventions guidelines used through the unit. This includes: Program/project has a meaningful name using comments to explain code and design choices using comments to reference any forums, websites, videos that you used ideas or code snippets from. GUI controls have meaningful names GUI controls use the camel case naming convention variable and method names are meaningful variable names use camel case method names use pascal case constant are in upper case program is correctly indented Submission Guidelines The assignment is due 23:59 Friday 5th June 2020. You must submit the entire C# project folder as a single compressed archive file. Submission will be online via the unit’s BlackBoard site. Academic Integrity All submissions must comply with Curtin’s Academic Integrity policy. Refer to the Academic Integrity tab in the Blackboard or see Academic Integrity site for more information. All submissions must comply with the requirements of the Copyright Act 1968 and the ’Digital Agenda’ amendments to the Copyright Act.