联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp

您当前位置:首页 >> Java编程Java编程

日期:2020-09-30 11:38

CSE1/4IOO Assignment – Part 2 1 of 10

CSE1IOO/CSE4IOO Semester 2, 2020

Programming Assignment – Part 2 (20%)

Assessment: This assignment is worth 20% of the final mark for this subject. Please read the entire specification carefully, before you start writing the code. Due Date: Monday, 12 October 2020, at 10 am. Delays caused by computer downtime cannot be accepted as a valid reason for a late

submission without penalty. Students must plan their work to allow for both

scheduled and unscheduled downtime. This is an individual Assignment. You are not permitted to work as a group when

writing this assignment. Copying, Plagiarism: Plagiarism is the submission of somebody else’s work in a

manner that gives the impression that the work is your own. The Department of

Computer Science and Information Technology treats academic misconduct

seriously. When it is detected, penalties are strictly imposed. Refer to the unit guide

for further information and strategies you can use to avoid a charge of academic

misconduct. All submissions will be electronically checked for plagiarism

using latcs8 server program. If you are new at La Trobe, please complete

academic integrity module on LMS to understand what is regarded as an

academic misconduct. Objectives: The general aims of this assignment are: ? To analyse a problem in an object-oriented manner, and then design and

implement an object-oriented solution that conforms to given specifications

? To practise using inheritance in Java

? To practise file input and output in Java

? To make implementations more robust through mechanisms such as

exception handling. Submission Details and Marking Scheme: Instructions on how to submit

electronic copies of your source code files from your latcs8 account and a marking

scheme overview are given at the end. If you have not been able to complete a

program that compiles and executes containing all functionality, then you should

submit a program that compiles and executes with as much functionality as you

have completed. (You may comment out code that does not compile.)

NOTE: While you are free to develop the code for this assignment on any operating

system, your solution must run on the latcs8 system.

CSE1/4IOO Assignment – Part 2 2 of 10

NOTE: You can use Arrays or ArrayList or LinkedList of the Java API. If you use

arrays, assume that we never have more than 50 patients in the system. Background

As described in the handout for Part 1, the overall aim of the assignment is to

develop a prototype for a patient record system. In Part 1, you have implemented the classes to represent patients, medical

observation types, and observations. You have also implemented a

PatientRecordSystem class which allows us to add patients, observation types and

observations. Building on the work that you have done for part 1, in this Part 2, you will be

adding more functionalities to the classes and implementing a menu program. You

are required to do the tasks (task 1, 2, and 3) described below. Task 1

Implement two methods for the PatientRecordSystem class to save and load data. **************************************

The first method should have the header:

public void saveData() throws Exception

The method should write the data about observation types, patients, and

observations that are currently in the PatientRecordSystem instance, in five text

files as described below:

1. PRS-MeasurementObservationTypes.txt

The file will contain information about the measurement observation types. The

required format of the text data in the file is shown with an example below:

T100; Blood Pressure; psi

T400; Height; cm

Each measurement observation type must be on a separate line. Each line must

contain the observation type code, name, and unit, separated by semi-colons. 2. PRS-CategoryObservationTypes.txt

The file will contain information about the category observation types. The required

format of the text data in the file is shown with an example below:

CSE1/4IOO Assignment – Part 2 3 of 10

T200; Blood Type; Group A, Group B1, Group B2

T300; Stress Level; Low, Medium, High

Each category observation type must be on a separate line. Each line must contain

the observation type code, name, and the categories. The three elements, i.e., code, name, and categories are separated by semi-colons. The different categories are

separated by commas. 3. PRS-Patients.txt

The file will contain information about the patients’ data without their observations. The required format of the text data in the file is shown with an example below:

P100; John Smith

P200; Anna Bell

Each patient must be on a separate line. Each line must contain the patient’s id and

name, separated by a semi-colon. 4. PRS-MeasurementObservations.txt

The file will contain information about the patients’ measurement observations. The

required format of the text data in the file is shown with an example below:

P100; T100; 120.0

P200; T400; 180

Each measurement observation must be on a separate line. Each line must contain

the patient’s id, the observation code and the observation value (a double). The

fields are separated by semi-colons. 5. PRS-CategoryObservations.txt

The file will contain information about the patients’ category observations. The

required format of the text data in the file is shown with an example below:

P100; T200; Group A

P200; T300, Low

Each category observation must be on a separate line. Each line must contain the

patient’s id, the observation code and the observation value. The fields are

separated by semi-colons. For the saveData() method, refer to the lecture notes of week 5, and revise the

contents related to the use of PrintWriter class.

CSE1/4IOO Assignment – Part 2 4 of 10

**************************************

The second method to load data from text files should have the following header:

public void loadData() throws Exception

The method will read the data from five text files and save them in a

PatientRecordSystem instance by calling methods of the same class to add

measurement observation types, category observation types, etc. For example, when

you read details about a patient from ‘PRS-Patients.txt’ file, you should call the

addPatient() method with those details to add the patient in the

PatientRecordSystem. The data should be loaded into a PatientRecordSystem instance which is empty of

data. For the loadDate() method, revise the lecture notes and text files under week

5 and focus on the Scanner class. You should write a small program to test these two methods. A sample test program

is given in the Appendix 1. As for Part 1, your implementation must be such that the sample test

program can be run without any change. Task 2

Write the menu program, called PatientRecordSystemMenu, to provide options in the

following menu: =====================

Patient Record System

=====================

1. Add a measurement observation type

2. Add a category observation type

3. Add a patient

4. Add a measurement observation

5. Add a category observation

6. Display details of an observation type

7. Display a patient record by the patient id

8. Save data

9. Load data

D. Display all data for inspection

X. Exit

Please enter an option (1-9 or D or X):

CSE1/4IOO Assignment – Part 2 5 of 10

The menu program must use the PatientRecordSystem class. For each option, the

program should ask for the required inputs, each with a separate prompt. For option 6, 7 and D, it is acceptable just to use the toString methods of the classes

involved. After a menu option is selected and the operation is completed, the menu should be

presented to the user again. See Appendix 2 for a short sample run. The menu program for this task is only required to satisfy the data correctness

conditions. It is not required to be robust, i.e. it can crash when certain exceptions

occur. For this task, the examples in lab 3 and lab 4 might be worth looking into. Task 3

Implement a class called RobustPatientRecordSystemMenu, which makes the previous

menu program robust by including exception handling features. It is required to be

robust only in the following sense: when an exception occurs in the execution of an

option, the program will display some information about the exception on the screen

and return to the main menu. Electronic Submission of Your Source Code

Submit all your Java files on LMS submission link. Marking Scheme Overview

The assignment has the total of 100 marks, which are distributed as follows: ? Implementation (Execution of code) 90 marks (Do all parts of the programs

execute correctly? Note your programs must compile and run to carry out this

implementation marking. So, comment out the non-working code in your

submission.) ? Code Design, Layout and Documentation 10 marks (Does the program

conform to specifications? Does the program solve the problem in a well- designed manner? Does the program follow good programming practices?

Does the indentation and code layout follow a good, consistent standard? Are

the identifiers meaningful? Are comments useful in explaining what and how

the program works? (Javadoc comments are optional.) ? A detail marking rubric will be published on LMS soon.

CSE1/4IOO Assignment – Part 2 6 of 10

Appendix 1 – A sample program to test methods to save and load data

import java.io.*;

import java.util.*;

public class PatientRecordSystemTester

{

public static void main(String [] args) throws Exception

{

testSaveData();

testLoadData();

}

public static void testSaveData() throws Exception

{

// Create PatientRecordSystem

// Add observation types , patients and observations

PatientRecordSystem prs = new PatientRecordSystem();

prs.addMeasurementObservationType("T100", "Blood Pressure", "psi");

CSE1/4IOO Assignment – Part 2 7 of 10

String [] categories = {"Group A", "Group B1", "Group B2"};

prs.addCategoryObservationType("T200", "blood type", categories);

String [] temp = {"low", "Medium", "high"};

categories = temp;

prs.addCategoryObservationType("T300", "stress level", categories);

prs.addMeasurementObservationType("T400", "height", "cm");

prs.addPatient("P100", "Smith");

prs.addPatient("P200", "Adams");

prs.addMeasurementObservation("P100", "T100", 120);

prs.addCategoryObservation("P100", "T200", "Group A");

// save data to file

prs.saveData();

}

public static void testLoadData() throws Exception

{

PatientRecordSystem prs = new PatientRecordSystem();

prs.loadData();

System.out.println(prs);

}

}

Appendix 2 – A sample run of the menu program

=====================

Patient Record System

=====================

1. Add a measurement observation type

2. Add a category observation type

3. Add a patient

4. Add a measurement observation

5. Add a category observation

6. Display details of an observation type

7. Display a patient record by patient id

8. Save data

9. Load data

D. Display all data for inspection

X. Exit

CSE1/4IOO Assignment – Part 2 8 of 10

Please enter an option (1-9 or D or X): 2

Enter observation type code: t1

Enter observation type name: stress level

Enter the number of categories: 3

Enter category 1: low

Enter category 2: medium

Enter category 3: high

=====================

Patient Record System

=====================

1. Add a measurement observation type

2. Add a category observation type

3. Add a patient

4. Add a measurement observation

5. Add a category observation

6. Display details of an observation type

7. Display a patient record by patient id

8. Save data

9. Load data

D. Display all data for inspection

X. Exit

Please enter an option (1-9 or D or X): 3

Enter patient ID: p1

Enter patient Name: john smith

=====================

Patient Record System

=====================

1. Add a measurement observation type

2. Add a category observation type

3. Add a patient

4. Add a measurement observation

5. Add a category observation

6. Display details of an observation type

7. Display a patient record by patient id

8. Save data

9. Load data

D. Display all data for inspection

X. Exit

Please enter an option (1-9 or D or X): 5

CSE1/4IOO Assignment – Part 2 9 of 10

Enter patient ID: p1

Enter observation type code: t1

Enter observation type value: medium

=====================

Patient Record System

=====================

1. Add a measurement observation type

2. Add a category observation type

3. Add a patient

4. Add a measurement observation

5. Add a category observation

6. Display details of an observation type

7. Display a patient record by patient id

8. Save data

9. Load data

D. Display all data for inspection

X. Exit

Please enter an option (1-9 or D or X): d

--------------------------

PATIENT RECORD SYSTEM DATA

--------------------------

OBSERVATION TYPES:

-- CategoryObservationType[code: t1, name: stress level, categories: |low|m

edium|high|]

PATIENTS:

-- Patient id: p1, name: john smith Observations:

- CategoryObservation[observationType: CategoryObservationType[code: t1, n

ame: stress level, categories: |low|medium|high|], value: medium]

=====================

Patient Record System

=====================

1. Add a measurement observation type

2. Add a category observation type

3. Add a patient

4. Add a measurement observation

5. Add a category observation

6. Display details of an observation type

7. Display a patient record by patient id

8. Save data

9. Load data

D. Display all data for inspection

X. Exit

Please enter an option (1-9 or D or X): x

CSE1/4IOO Assignment – Part 2 10 of 10 Bye!


版权所有:编程辅导网 2018 All Rights Reserved 联系方式:QQ:99515681 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。