This post is skating over my final project in A level Computing. The original document was over 100 pages in length and I doubt anyone will want to read that.
Task
The brief for this coursework was fairly vague. A program was to be developed for a company which dealt with a database using commands; Create, Insert, Update, Delete, Select. The solution could be in a variety of formats from Application, Web page or for fewer possible marks the form maker built into MS Access could be used.
I approached the company Wards Group Ltd, a clothing company, whom I had been working for for around 3 years as a shop assistant. I had found an area which I felt could be greatly improved. At the time they were using a flat-file database style system to manage and record the transfers between their various branches and departments. This was deemed difficult to interpret and time consuming to enter transfers with errors being difficult to find and sort. During this project I had to perform the individual tasks of the software life cycle, up to the maintenance stage.
After liaising with the company; questionnaires, interviews and analysis of the current system. I generated a suggestion of 2 possible alternative systems. It was agreed that I could attempt to create a system that could be more efficient than the current system and still fulfil the requirements for the coursework.
Chosen Solution

Branch transfer entered via a Program interface with a database at the backend at Head Office. This would provide drop down menus and text boxes to be filled in with reduction of avoidable mistakes. This would allow for all details to be confirmable with the Branch Transfer Sheet without the need for scrolling.
Advantages
  • Information about each transfer is visible without scrolling
  • Typo possibilities kept to a minimum
  • No accidental data overwriting
  • Impossible transfers not possible
  • Transfers stored in a single location for future reference
  • Data need only be entered one time
  • Data validation checks can be implemented
  • Data can be entered by more than one person at a time
Disadvantages
  • Staff must be retrained
  • Program must be compatible with current and future hardware and software.
  • May be difficult to add categories and branches in the future.

After this decision I decided upon the objectives and limitations of this solution. Constructed Data Flow Diagrams for both the existing system and the proposed system. And then constructed a system flow chart for my proposed solution.
Then I began to mock up what I felt would be the best UI design for speed and readability identifying which processes would be performed with user interaction. I used MS Visual Studio to do this quickly and neatly. Free-hand drawings aren't my forte.

Then I went about the process of coding the program. At this level code efficiency was not a huge issue as the amounts of data being handled were relatively small. The language I used to develop it was C# and using ADO.Net as a way of accessing and manipulating a MS Access Database (selected this as it was least hassle for me and the company to develop and use). I was totally new to C# having only briefly glanced over the C syntax. During the course at College I was taught the basics of VB.Net. Without much relation to OOP at all.
Output
One area that was completely new to me was generating a report from the database summarising the total values of a month's worth of transfers. I decided the simplest and smallest format for this was to output into an XML file and use XSLT, which I learnt a little on-the-fly in order to style it so that it was in a user friendly format. Here I encountered some issues with MS Access using ADO.Net and how the SQL commands were different to that in regular SQL. I was unable to use wildcards whilst using dates in the database. So the query did not work, which meant that the XML file was incorrectly created and as realistically the SQL command would have worked in this instance it did not. So as a workaround I added 2 new fields to the database detailing the month and year number. Then instead of wildcards I used these values in the SQL commands.


Testing
It was required that I performed various testing including presence check, validation check and range checks. Each of these tests was planned with expected outcomes and then demonstrated with actual outcomes.
Documentation
As part of the coursework I was required to create a relational database. This also enabled the company to expand. Adding/removing branches, departments. Using this I made the form itself dynamic and used values from the database to fill the combo-box selections meaning that the program would not need altering in the future.
I needed to create a user guide for how to install and simply use the program. I simply created a click and drag folder to install the program so it could run off a USB stick if needed. The code listing was also added onto the project to verify that the program would run correctly (as the testing section of the coursework could easily be faked).