Home    >    Case Studies    >    Courses Tracking And Management System

Case Study: Courses Tracking And Management System

Abstract

Drivers may lose their driving license due to dunk or other reasons. They have to go through a serial of courses before they get their driving licenses back. This application is mainly used by the teachers and staffs of a company. The staffs manage the drivers, courses, teachers, invoices, and communications among them. The teachers see what they need to teach, and write drivers' performances in class. Finally the company sends a report on the driver's courses to the government. And the government decides whether the drivers can get their driving licenses back.

Requirements

The application should contain two websites but sharing the same database. The main website is used by the staffs, while the other one is used by the teachers. The staffs are from many different departments, and can do different work. The whole process, from the loss of a driving license to getting it back, is divided into many steps. Each department works with a single step of the driver, and moves the driver to the next step after it's done.

The application generates many kinds of invoices during the flow. The drivers cannot go to next step until their invoices are fully paid. And the teachers can invoice for their work to the company.

Screenshots:

Solution

Development Methodologies:

ASP.NET MVC

The application is required to be running quickly with good user experience. MVC renders very clean HTML, and it's very easy to be used with Ajax requests. In addition, we have many experiences with ASP.NET MVC, and we know it's the best solution for most of websites.

Entity Framework & CodeFirst

Entity Framework (EF) provides all kinds of access to database: query, insert, update, delete. CodeFirst design pattern makes the changes to the database very easy to do. At the beginning of the development, the database schema is very likely to change. Thanks to CodeFirst, every developer can change the database very easily by changing the models.

NDBUnit Test

The application has quite complex business logic. To ensure all logic is correctly implemented, unit test is a good choice. Using NDBUnit test, we can write sample data to the XML files, and each test can use the sample data. In this project, we also improved the architecture of the unit tests, which makes it easier to write new tests and maintain the existing tests.

MVC Best Practices

We used and improved many of MVC best practices. Such as:

  • Standardize all Ajax requests, including the rules to HTML, JavaScript, and C #;
  • Standardize all form elements renderings so that no custom model binders are used;
  • Use Unobtrusive client validations so that a single line of code validates the whole form;
  • Others: standard dialogs, use helpers extension methods, busy indicators to all Ajax's, etc.

Please refer to this page to find more details our MVC best practices:

Benefits to the client:

All functions the client requested are finished. The client is very satisfied with our work. Though the business logic is complex, all requirements have been correctly implemented, and the user experience is good.

This application runs in a huge amount of data and the there are many complicated queries to the database, but, in general, the performance is good.

The application helps the staffs and teachers from the client's company manage/track drivers' courses and decide if their driving licenses should be reassigned.