联系方式

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

您当前位置:首页 >> C/C++编程C/C++编程

日期:2023-05-04 08:40

University of Liverpool

Department of Computer Science

COMP282 – Advanced Object-Oriented C Languages

Coursework 2 – C#

Deadline: Monday 15

th of May at 17:00

Last possible time to hand-in: Monday 29

th of May at 17:00

Weighting: 50%

Feedback: General feedback will be released shortly after the last possible time you can hand-in (see

above). Personal feedback will be released around the same time, depending on how close to the

last possible time to hand in you did hand in.

Compress your Visual Studio project into a single zip file and submit it via CodeGrade – CodeGrade is

only used to make grading easier, but it will be done by hand. In particular, you will not get feedback

when submitting. Penalties for late work will be applied in accordance with the Code of Practice on

Assessment. You can submit multiple times. If you submit more than once, we will only look at and

mark the most recent, and late penalties will be based on your final submission.

Project Overview:

You will create a small Windows GUI application to draw lines and find their intersections. The

project consists of several tasks, which you should tackle in order (except for the hard tasks at the

end where any subset can be done, and the order is not important). Each non-hard task builds on

the previous one. Do as much as you can and then submit your project.

Read through this entire document before you start coding, so you are aware of all the tasks and the

overall structure of the program. In particular, if you are aiming for all tasks, look especially at the

last one, because otherwise you will likely need to redo quite a bit. Your solution should

demonstrate your knowledge of C# and GUI development with Visual Studio.

Note: Much of the code will be generated for you by Visual Studio. We’ll mark the code you write.

User Interface & User Experience Design

Your application should look something like the screenshots shown on the next page. It doesn’t have

to be identical, but it should have equivalent controls and buttons.

The solution is shown working and discussed in the accompanying video. Please watch this to get a

good idea of how your application should behave.

Runtime errors gives down to -20%

If your program makes multiple distinct obvious runtime errors, you lose 20% (down to at least 40%)

– meaning it keeps crashing even if you do not try to find errors. If your program makes some subtle

runtime errors, you lose 5-10% (again, down to at least 40%) – depending on how subtle.

Solution without the last task

Solution with the last task

Part 1 (Worth 15%)

Task 1 – Line Class Definition (5%)

Create a Line class that stores two points and a line colour. Implement a constructor that takes

appropriate parameters and stores them in the object. Also, implement the appropriate C# property

getters and setters (incl. appropriate access modifiers). Finally, override the ToString() method for

the class so that it outputs information about the two points (we will output the line colour in some

other way).

5%: Created Line class

Task 2 – Form Layout (10%)

Use the Visual Studio layout designer to create a form similar to one of the onesshown above. At this

stage, the application should be runnable. Also, set up the design so that it is nice to work with, incl.

tab order and names of elements. When it’s run, the form window should be displayed without any

build errors, although it will not do anything apart from terminate correctly when the user closes the

window.

10%: Made a nice layout

Part 2 (Worth 65%)

Task 3 – Adding Lines (5%+5%=10%)

Use a relevant C# container class to store Line objects. Implement the code that runs when the user

clicks the Add button. Your code should retrieve the text entered into the First X, First Y, Second X

and Second Y boxes and convert them into a Line object (with some reasonable default colour). You

should also update the GUI so the added lines appear in the large picture box area as well as the list

view box (or similar). Use the format shown above on the previous page (or similar). If something is

not entered correctly, make a suitable error message.

5%: Implemented Add button

5%: … with suitable error messages

Task 4 – Drawing lines (10%)

Every time you click twice in the picture box, a line should be drawn between the two points defined

(it is easier and seems more sensible to do it on MouseUp, but you can also do it on click). This task

is about implementing that functionality. You should add the created Line object to the picture box

and the list view box (or similar).

10%: Can draw lines

Task 5 – Changing colour (5%)

You should implement the Color button. It should show a ColorDialog and then, if the user selects

OK, change the default colour (i.e. the colour used in future lines) to the chosen colour. It should also

set the Forecolor of the Color button to be the chosen colour.

5%: Implemented Color button

Task 6 – Removing lines (5%+5%=10%)

Your code should find out which item in the list is currently selected (represented by the blue

background) and remove it, when the Remove button is clicked. Also, set the selected index in the

list to be an adjacent line. Make sure you remove the item from the list as well as the picture box. Be

sure to check the index of the removed item to prevent runtime out-of-bounds errors and display

suitable error messages if there are problems.

5%: Implemented Remove button

5%: … reasonable error messages and the index updates in a sensible manner afterwards

Task 7 – Updating Lines (5%+5%=10%)

When the user clicks on an item in the visible list (or uses the keyboard to move up and down the

list), the text boxes should be updated to reflect the current selection and the Forecolor of the Color

button should be set to the colour of the selected line.

Implement the code that runs when the user clicks the Update button. Your code should update the

currently selected line with whatever is currently in the text boxes. You should update both the list

as well as the picture box. Again, make sure you do not get runtime out-of-bounds errors and make

suitable error messages if there are problems.

5%: Implemented Update button (with error messages)

5%: Change fields to be the content of the selected row on click

Task 8 – Find intersections (10%+10%=20%)

Add the code that runs when the user clicks the Find Intersections button. You should calculate the

intersections between each line and show a circle around every point intersection and a line if the

lines overlap in a line, in both cases using the default colour. There is a nice algorithm by Samos and

Huey for this, running in time O(n log n + k), if there are n lines and k intersections, but you are just

expected to use the naïve O(n2

) solution where you try all possible pairs of lines (partly because

Visual Studio 2019 does not have priority queues – the new version does).

If you can not remember how to find the intersection of two lines, you can look at:

https://en.wikipedia.org/wiki/Line%E2%80%93line_intersection

Note though that it just solves the case where they meet in a point and you will need to do

something else if you want to find the line overlaps. You get 10% if you get it to work reasonably

well (i.e. what you would do if you only looked at that Wikipedia page) with the last 10% if you

actually get it fully working.

10%: Implemented Find Intersections button with basic behaviour

10%: Find Intersections works fully correctly

Part 4 (Worth 10%+10%=20%) – Make the list a data grid view (or similar)

Task 9 – Data grid view

Change the list view or similar to be a data grid view. When done correctly, it should let you add/edit

lines by simply clicking on them on the list and changing the content (new lines would be added by

making a new line at the end) and therefore you can remove the corresponding buttons. You should

be able to change the colour by entering/clicking on the Color field of the row (i.e. display the

ColorDialog) and its current color should be displayed as the background colour of that row (so you

would not change the Forecolor of the Color button). To be concrete, the line should be added when

all entries of a row are of the right type (and the user has done editing – i.e. when CellEndEditing is

called) and be updated when all entries are of the right type (and the user has done editing) – if the

user does not update a line correctly, use the line before they started these edits.

10%: Used a fair implementation of a data grid view

10%: Did not make any errors

How to Submit

Locate your Visual Studio project folder and compress it into a single .zip archive. If you use any

other format we won’t be able to extract and mark your work.

Rename the zip file to be your student id (and then .zip).

If you want to draw our attention to anything, make a comment in the code itself. We will not read

or mark any other documents.

Submit your archive via CodeGrade.

Marking Descriptors

We draw your attention to the standard Department Grade Descriptors, which are listed in the

Student Handbook.


相关文章

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

python代写
微信客服:codinghelp