首页
网站开发
桌面应用
管理软件
微信开发
App开发
嵌入式软件
工具软件
数据采集与分析
其他
首页
>
> 详细
讲解COMP282程序、辅导C/C++语言编程 讲解SPSS|讲解留学生Prolog
项目预算:
开发周期:
发布时间:
要求地区:
University of Liverpool
Department of Computer Science
COMP282 – Advanced Object-Oriented C Languages
Coursework 1 – C++
Deadline: Tuesday 13th April at 17:00
Weighting: 50%
Make sure your student ID is clearly shown in a comment at the top of your source code. Compress your
Visual Studio project into a single zip file and submit it via SAM. Penalties for late work will be applied in
accordance with the Code of Practice on Assessment.
Project Overview
You will create a small interactive program to
input details about people, manipulate them, and
display them. The project consists of several
tasks, which you should tackle in order. Each task
builds on the previous one. Do as much as you
can and then package your project for
submission. Begin by downloading the Visual
Studio project template for this assessment.
Read through this entire document before you
start coding, so you’re aware of all tasks and the
overall structure of the program. Your solution
should demonstrate your knowledge of C++.
Important: Each task requires you to add extra
code. You shouldn’t need to remove any code.
Keep the code from previous tasks in your
program so we can see it and mark it.
Important: Each part requires you to change the
code in the main() function, potentially losing the
previous version. Therefore we have provided
functions called main_part1(), main_part2() and
main_part3(). Place your code for each part
inside the relevant function. You can uncomment
the relevant lines in the real main() function to
run and test each part.
Part 1 (Worth 15%)
Task 1 – Person Class Definition (5%)
Create a Person class that stores a name and age. The name should be stored as a string, and the age as an
integer. Declare and define a constructor that takes appropriate parameters and stores them in the object.
Also declare and define a default constructor that sets the name to an empty string and the age to zero.
Task 2 – Person I/O (5%)
Implement the << and >> operators so you can output and input a Person object with the following string
format.
Jasmine 18
In other words, the name of the person is output followed by the age. When the user types a similar string
as input, the first token (up to the space) should be stored as the name, and the second (after the space) as
the age. For this task you do not need to do any input validation or error handling. Assume the user will
always type the correct format.
Task 3 – Comparison Operators (5%)
Implement comparison operators (<, >, and ==) for the Person class. These should work numerically, based
on the ages of the people involved.
Add relevant test code to the main_part1() function. Make sure it’s sufficient to test all the implemented
aspects of the Person class from all tasks so far.
Part 2 (Worth 45%)
Task 4 – Adding & Listing People (Fixed Storage) (20%)
Implement this and subsequent tasks in the main_part2() function. Create a loop to present menu items
and input user choices. At this stage the menu will only have three options.
1. Add Person
2. List Everyone
Q. Quit
You will need to use a suitable data structure to store Person objects. For the purposes of this task you can
assume we will never want to store more than 9 people. An example run of this program is shown below.
Example Output (Task 4)
1. Add Person
2. List Everyone
Q. Quit
Enter Option: 1
Enter Details: Martin 42
1. Add Person
2. List Everyone
Q. Quit
Enter Option: 1
Enter Details: Jenny 31
1. Add Person
2. List Everyone
Q. Quit
Enter Option: 2
[1] Martin 42
[2] Jenny 31
1. Add Person
2. List Everyone
Q. Quit
Enter Option: Q
You should check that the storage is not full up (ie. already holds 9 people) before allowing a new person
to be added. Display an error message if the user tries to add too many people.
Task 5 – Finding the Oldest Person (10%)
Add another menu option so the user can find the oldest person in the data structure. An example run is
shown on the next page, assuming there is already some data in the system. You’ve already defined
comparison operators for the Person class that should be useful in this task. The algorithm itself is fairly
straightforward.
Task 6 – Removing People (15%)
Add another menu option so the user can remove people from the data structure. An example run is
shown below, assuming there is already some data in the system.
Example Output (Task 5)
1. Add Person
2. List Everyone
3. Remove Person
4. Find Oldest
Q. Quit
Enter Option: 2
[1] Martin 42
[2] Jenny 31
[3] Alice 56
[4] Freddie 18
1. Add Person
2. List Everyone
3. Remove Person
4. Find Oldest
Q. Quit
Enter Option: 4
Oldest: Alice 56
1. Add Person
2. List Everyone
3. Remove Person
4. Find Oldest
Q. Quit
Enter Option: Q
Example Output (Task 6)
1. Add Person
2. List Everyone
3. Remove Person
4. Find Oldest
Q. Quit
Enter Option: 2
[1] Martin 42
[2] Jenny 31
[3] Alice 56
[4] Freddie 18
1. Add Person
2. List Everyone
3. Remove Person
4. Find Oldest
Q. Quit
Enter Option: 3
Enter Index: 2
1. Add Person
2. List Everyone
3. Remove Person
4. Find Oldest
Q. Quit
Enter Option: 2
[1] Martin 42
[2] Alice 56
[3] Freddie 18
1. Add Person
2. List Everyone
3. Remove Person
4. Find Oldest
Q. Quit
Enter Option: Q
You should make sure that you handle a situation where the user enters an index greater than the number
of people in the data structure.
You should shuffle data within the structure so there are no gaps when a user is removed. Remember you
can refer back to lecture examples and similar code used during lab sessions. Note also that the index
numbers in the output will reflect this shuffling of data, so they won’t always refer to the same person.
Part 3 (Worth 40%)
Task 7 – Refactored Program (Dynamic Data) (25%)
Implement this and subsequent tasks in the main_part3() function. You might like to copy the code from
the previous part as a starting point.
Refactor the program so it uses a dynamic data structure. In other words, there is no limit on the number
of people the program could store (assuming unlimited memory). The actual behaviour of the program
won’t change from the user’s perspective, but internally it will be very different.
You should use a dynamic data structure from the Standard Template Library, such as a vector. You should
also use a corresponding STL iterator. Note that the vector class has an erase() function to remove items.
Make full use of functions and algorithms from the STL where appropriate.
Task 8 – Sorting the Data (15%)
Add another menu option to sort the data in ascending order of age. Note that this will only sort the data,
not display it. If the user wants to see the sorted list, they can select that option afterwards.
1. Add Person
2. List Everyone
3. Remove Person
4. Find Oldest
5. Sort Data
Q. Quit
You should use the full range of functions and algorithms provided by the Standard Template Library, and
implement any necessary helper functions, as explained in the relevant lecture material.
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 your archive so it has the module code
and your student ID in the filename (eg. comp282_cw1_201212345.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 SAM (https://sam.csc.liv.ac.uk/COMP/CW_Submissions.pl). You can submit
multiple attempts. If you submit more than one, we will only look at and mark the most recent.
Marking Descriptors
We draw your attention to the standard Department Grade Descriptors, which are listed in the Student
Handbook.
软件开发、广告设计客服
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-23:00
微信:codinghelp
热点项目
更多
urba6006代写、java/c++编程语...
2024-12-26
代做program、代写python编程语...
2024-12-26
代写dts207tc、sql编程语言代做
2024-12-25
cs209a代做、java程序设计代写
2024-12-25
cs305程序代做、代写python程序...
2024-12-25
代写csc1001、代做python设计程...
2024-12-24
代写practice test preparatio...
2024-12-24
代写bre2031 – environmental...
2024-12-24
代写ece5550: applied kalman ...
2024-12-24
代做conmgnt 7049 – measurem...
2024-12-24
代写ece3700j introduction to...
2024-12-24
代做adad9311 designing the e...
2024-12-24
代做comp5618 - applied cyber...
2024-12-24
热点标签
mktg2509
csci 2600
38170
lng302
csse3010
phas3226
77938
arch1162
engn4536/engn6536
acx5903
comp151101
phl245
cse12
comp9312
stat3016/6016
phas0038
comp2140
6qqmb312
xjco3011
rest0005
ematm0051
5qqmn219
lubs5062m
eee8155
cege0100
eap033
artd1109
mat246
etc3430
ecmm462
mis102
inft6800
ddes9903
comp6521
comp9517
comp3331/9331
comp4337
comp6008
comp9414
bu.231.790.81
man00150m
csb352h
math1041
eengm4100
isys1002
08
6057cem
mktg3504
mthm036
mtrx1701
mth3241
eeee3086
cmp-7038b
cmp-7000a
ints4010
econ2151
infs5710
fins5516
fin3309
fins5510
gsoe9340
math2007
math2036
soee5010
mark3088
infs3605
elec9714
comp2271
ma214
comp2211
infs3604
600426
sit254
acct3091
bbt405
msin0116
com107/com113
mark5826
sit120
comp9021
eco2101
eeen40700
cs253
ece3114
ecmm447
chns3000
math377
itd102
comp9444
comp(2041|9044)
econ0060
econ7230
mgt001371
ecs-323
cs6250
mgdi60012
mdia2012
comm221001
comm5000
ma1008
engl642
econ241
com333
math367
mis201
nbs-7041x
meek16104
econ2003
comm1190
mbas902
comp-1027
dpst1091
comp7315
eppd1033
m06
ee3025
msci231
bb113/bbs1063
fc709
comp3425
comp9417
econ42915
cb9101
math1102e
chme0017
fc307
mkt60104
5522usst
litr1-uc6201.200
ee1102
cosc2803
math39512
omp9727
int2067/int5051
bsb151
mgt253
fc021
babs2202
mis2002s
phya21
18-213
cege0012
mdia1002
math38032
mech5125
07
cisc102
mgx3110
cs240
11175
fin3020s
eco3420
ictten622
comp9727
cpt111
de114102d
mgm320h5s
bafi1019
math21112
efim20036
mn-3503
fins5568
110.807
bcpm000028
info6030
bma0092
bcpm0054
math20212
ce335
cs365
cenv6141
ftec5580
math2010
ec3450
comm1170
ecmt1010
csci-ua.0480-003
econ12-200
ib3960
ectb60h3f
cs247—assignment
tk3163
ics3u
ib3j80
comp20008
comp9334
eppd1063
acct2343
cct109
isys1055/3412
math350-real
math2014
eec180
stat141b
econ2101
msinm014/msing014/msing014b
fit2004
comp643
bu1002
cm2030
联系我们
- QQ: 9951568
© 2021
www.rj363.com
软件定制开发网!