The 2nd programming exam 14th of May 2009

Read these exam rules carefully before doing tasks and after you have done tasks.

Task 1

Create a console application  Authors, it reads data from a XML-file [download] and shows data of authors in console.
The XMLfile has the following schema:

<authors>
<au_id>172-32-1176</au_id>
<au_lname>Äijä</au_lname>
<au_fname>Tapani</au_fname>
<phone>358 407223</phone>
<address>Piippukatu 2</address>
<city>Jyväskylä</city>
<state>FI</state>
<zip>40100</zip>
<contract>true</contract>
</authors>

Functional requirements:

Default time: 60 min. Points (max 11 p):
- using App.Config 1 p
- reading data 1 p
- presenting right data in right  format 2 p
- counting authors 1 p
- arguments 1 p
- sorting by name 1 p
- filter by state 1 p
- error handling 2 p
- test batch file 1 p

Task 2

There is a small company named MakeCendo. It publish books etc.  Editors of the company need a simple application to read, add, change and delete data of authors. The data authors is stored in XML File  [download] .

Create a Windows-application  WinAuthors.
With the application end users can:

  1. browse data of all authors
  2. filter so that an end-user can select one state (for example FI) and he/she will see only authors from FI,
    - use suitable combobox for selecting
    - combobox must be filled values that are read from xml-file
  3. add a new author
  4. delete data of the selected author
  5. change the name, phone, address etc of the selected author
  6. in real-time see the number of authors in a textbox or label
  7. Because many editors can use application same time, create two Buttons Refresh and Update:
    - Update-button saves changes to the XML file (no conflict checking neeeded)
    - Refresh-button reads data from the XML file and refresh data in gui

The location of the XML file is set in App.Config file and in the start the application reads the filename from App.Config.
Create a proper key&value to AppSettings section.
Set values to point 
d:\data\pubs.xml.
The XML-file has the same schema than in the task 1:

Design and implement  suitable Windows-GUI.
Please, try to do GUI is simple as possible, and easy to learn and use (also for editors :-)

Implement also these error handling:
- If the App.Config does not exist or the needed value does not exist, give an error message.
- If the file, that has been set in App.Config, does not exist, give an error message.
- If the file, that has been set in App.Config, does not have  a right schema, give an error message.

Default time: 1h15 min Points (max 14 points):

Select 3a or 3b, and do only one, not both.

Task 3a

We have a programmer who need to handle Tasks of software projects.
Create a simple and handy Windows Application for handling Task data.

The name and directory of the datastore is in App.Config configuration file.
The datastore can be text file, xml-file or Access database. There are two kind of data in datastore: projects and tasks. Create datastore with proper schema  and use it. Put datastore to the directory d:\data and point it in App.Config. It is not allowed to put the datastore any other directory.

About projects there must be at least following data:
- project id (five characters)
- project name

Add five different projects data for testing.
NOTE that there is no need to create functionality for adding project data, just create proper test data to the datastore.

About tasks there must be at least following data:
- name of the task
- the project id where task belongs
- date when added to datastore
- due date (it means date when task should be done)
- completed date (date when task was done, empty if task is not finished)
- additional information (text)

A programmer can:
- add tasks
 (remember that a new task belongs always to the certain project)
- remove tasks
- change details of tasks
- mark tasks completed (application automatically adds completed date when task is marked completed, the programmer just clicks button...)
- filter tasks with following filter:
  1) show only uncompleted tasks from selected project
  2) show all uncompleted tasks
  3) show all completed tasks

Use MVC-model, so put all data handling to own class, name it as BLData.

Default time: 1h30 min. Points (max 13 points):
- datastore 2 p
- configuration file 1 p
- authentication  1 p
- reading data 1 p
- select 1 p
- editing 1 p
- deleting 1 p
- filter 1p/each max 3 p
- MVC-model 2 p

Task 3b

A sleepy programmer needs a simple and handy program to show current time and wake him/her up. Create a Windows application  Kello.

Kello contains followings parts:

Create attractive and user-friendly GUI for Kello.

Default time: 1h30min. Points  (max 13 points)
- analog watch 2 p
- animation of hands 1 p
- digital time 2 p
- setting the waking time 2 p
- the button features 2 p
- alarm function 2 p
- attractive outlook 1 p
- user-frienly outlook 1 p