The project
Task 1: Design and implement a Qt-based GUI digitiser. The digitiser is an application which is used to
convert graphs published in scientific papers, project reports, and statistics into raw data that can be
processed using data processing software such as MS Excel or MATLAB. Your application should be
designed to work on 1D graphs. An example of such a graph is given below:
The digitiser works by allowing the user to calibrate the x-axis and the y-axis (converting pixel
distance to physical distance), then it allows the user to click on many points on the graph. Every
time the user clicks on a point, the application saves its coordinates in pixels, then converts them to
physical coordinates using the calibration distance, eventually generating two columns of data, a
column for x coordinates and a column for y coordinates respectively. This is known as manual
digitising.
The application will be used to digitise one curve at a time, where the plotted line is solid and has a
black colour against a white background.
In addition to the core functionality mentioned above, the application:
- Should give the user the option to choose the type of the graph, whether it is linear-linear,
linear-log, log-linear or log-log graph.
- Should allow for saving a text file that has two columns, the first being the digitised x
coordinates and the second being the digitised y coordinates of the graph, both in linear
coordinates (log coordinates must be converted to linear before saving data).
- Should allow the user to choose the type of the axes (linear/log) using three different methods.
- Should be validated by using a test graph as an input, digitising it, then plot the digitised data on
top of the original graph using MATLAB, MS Excel or any other software.
- Should be able to deal with potential run-time errors, which the developers should identify.
Task 2: Modify the application to have an automatic mode, where it is enough for the user to specify
one or two points on the graph and the application will automatically determine many other points
on the graph. This task is meant to be a challenge so no hints will be provided on how to do it.
Page 3 of 4
It is an expectation from everyone to consult Qt documentation to find any functions or classes that
代写data留学生作业、MATLAB程序语言作业调试、MATLAB实验作业代做
might be useful for the implementation of this project. Finally, you should make the programme as
professional as possible. Imagine this project as a real life project given to you.
Recommended approach
In order to have a good design and implementation of the application, you are recommended to do
the following:
– Start by conducting a background overview of the available digitisers and how they are used.
This will give you a feeling of what a professional design is and a better understanding of the
core functionality.
– Follow the incremental model by breaking the implementation of the application into smaller
parts, where every part is designed, implemented and tested before other parts are
implemented.
– Make sure your application is working perfectly before moving to task 2.
The deliverables
Every submission should consist of the project’s files + brief report. The report must have the
student’s name and ID number. The report does not need an introduction or a conclusion, it must
have the following sections:
x How the programme works (explain the idea of the algorithm)
x User instructions (how should the user use it)
x Testing and verification attempts
x Overall notes (optional): in this section you can highlight any special features in your design
or implementation of the application. Or you can mention any major you faced how you
overcome it. If you left this section empty you will not lose any marks.
x Appendix: headers+ source files (must be in machine readable format).
Mapping the project to modules’ material:
Aspect Where it is covered
Creating child windows or child dialogs. Lecture 16, Lecture 18
Saving object in vectors in Qt Week 8 lab
Loading and saving files Lecture 18, week 9 lab
Error handling week 9 lab
Implementing mouse functionality Lecture 16, the tutorial
Distance calibration the tutorial
Handling images and drawings Lecture 17, the tutorial
Implementing a functionality using different methods Lecture 16, week 8 lab
Controlling the style, layout and GUI design Lecture 15
Implementing buttons and other input widgets functionality Lectures 14-15, week 7 lab
Online documentation https://doc.qt.io
Page 4 of 4
*Marking Criteria
Criteria
(weight %) What does it mean?
Indicative characteristics
Adequate / pass
(40%)
Very good / Excellent
Algorithm and
design of the
programme
(task 1) (20%)
Does the application
do what it is designed
to do? Does the
application handle
memory efficiently?
x The programme does
what it designed to do
with clear
shortcoming.
x The use of memory is
completely inefficient
but is working.
x The programme does what it
designed to do without any
flaws an in an efficient way
x The memory management is
very efficient.
Code and GUI
implementation
(task 1) (20%)
Is the code well
organised? Are the
variables named
properly? Is the code
well commented?
Does it use the most
suitable datatypes for
the variables? Does it
have correct use for
header/source files?
x The code shows the
steps but is difficult to
understand what it
does.
x Poorly commented
code.
x The naming of the
variables is arbitrary
and does not give any
idea on what the
variables are used for.
x Header files are barely
used.
x The code is written in very
organised way that is easy to
follow.
x The code is very well
documented.
x The variable naming is
appropriate and follows
professional naming rules.
x The use of header and source
files is professionally
followed.
Verification and
Error-Handling
(task 1) (20%)
Has the application
been validated and
verified? What does
the programme do if
there is a run-time
error?
x The application was
tested for one case
only.
x The application
contains minimal
error handling.
x The application has been
thoroughly tested.
x Error handling has been done
professionally for a number
of potential run-time errors
and user input errors as well.
Task 2 (15%) Does the application
provide a functional
automatic mode?
x An automatic mode is
provided with many
shortcomings.
x The automatic mode is
implemented efficiently in a
fully functional manner
without any flaws.
Report
(25%)
Is the report clear and
descriptive? Is it
concise? Does it have
all sections? Are the
user instructions
given clear?
x The report is
understandable but
contains many errors.
x The length of some
sections is
inappropriate – either
too short or too long.
x The source codes are
given in the appendix
but they are not
machine readable.
x The report is well written,
and all the relevant
information it should contain
are clearly stated.
x The report is concise.
*If you have a feedback query after the marks are released make sure you contact me
within 2 weeks, after that the marks are finalised and sent to the SSO.
因为专业,所以值得信赖。如有需要,请加QQ:99515681 或 微信:codehelp