Great Deal! Get Instant $10 FREE in Account on First Order + 10% Cashback on Every Order Order Now

Semester 1, 2020 CAB301: Algorithms and Complexity Assignment 1: Project (Applied) Marking Criteria Sheet Criteria /100 7 – High Distinction 85-100% 6 – Distinction 75-84% 5 – Credit 65-74% 4 – Pass...

1 answer below »
Semester 1, 2020
CAB301: Algorithms and Complexity
Assignment 1: Project (Applied)
Marking Criteria Sheet
Criteria /100
7 – High
Distinction
85-100%
6 – Distinction
75-84%
5 – Credit
65-74%
4 – Pass
50-64%
3 – Marginal Fail
40-49%
2 – Fail
25-39%
1 – Low Fail
25%
Data
structures

Weighting:
10%
• You have
used all the
equired data
structures
perfectly.
• You have
used all the
equired data
structures
with few
deficiencies.
• You have
used all the
equired data
structures
with some
issues.
• You have
used some of
the required
data
structures,
ut not all
the required
data
structures.
• You have
attempted to
use required
data
structures,
ut not
appropriately
.
• You have not
used the
equired data
structures.
You have
used some
inappropriate
data
structures.
• You have
not used any
data
structures at
all.
Algorithms • The logic of
your
algorithm is
co
ect.
• Your
• The logic of
your
algorithm is
co
ect.
• Your
• The logic of
your
algorithm is
co
ect.
• Your
• The logic of
your
algorithm is
asically
co
ect.
• The logic of
your
algorithm is
asically
co
ect.
• The logic of
your
algorithm is
not clear.
• Your
• No
algorithm is
presented.
• No
algorithm
Criteria /100
7 – High
Distinction
85-100%
6 – Distinction
75-84%
5 – Credit
65-74%
4 – Pass
50-64%
3 – Marginal Fail
40-49%
2 – Fail
25-39%
1 – Low Fail
25%

Weighting:
10%
algorithm is
well
presented
using the
pseudocode
notations.
• Your
algorithm is
concise and
efficient.
• The
computation
al complexity
of your
algorithms
has been
analysed
igorously.
algorithm is
presented
using the
pseudocode
notations.
• Your
algorithm is
concise and
efficient.
• The
computation
al complexity
of your
algorithms
has been
analysed
co
ectly.
algorithm is
clearly
presented.
• Your
algorithm is
efficient.
• The
computation
al complexity
of your
algorithms
has been
analysed. But
there are
some
deficiencies
in your
algorithm
analysis.
• Your
algorithm is
easonably
presented.
• Your
algorithm is
asically
efficient.
• You have
attempted to
analyse the
computation
al complexity
of your
algorithm.
But there are
some
significant
issues in your
algorithm
analysis.
• Your
algorithm is
easonably
presented.
• Your
algorithm is
not efficient.
• You have not
attempted to
analyse the
computation
al complexity
of your
algorithm.
algorithm is
presented.
• Your
algorithm is
not efficient.
• You have not
attempted to
analyse the
computation
al complexity
of your
algorithm.
analysis.
Functionality • All the
equired
functionality
has been
implemented
• All the
equired
functionality
has been
implemented
• Most of the
equired
functionality
has been
implemented
• Most of the
equired
functionality
has been
implemented
• You have
attempted to
implement all
the
functionality.
• You have
attempted to
implement
some of the
functionality.
• You have
not
attempted
to
implement
Criteria /100
7 – High
Distinction
85-100%
6 – Distinction
75-84%
5 – Credit
65-74%
4 – Pass
50-64%
3 – Marginal Fail
40-49%
2 – Fail
25-39%
1 – Low Fail
25%

Weighting:
60%
and all your
implementati
ons meet the
equirements
in the
assignment
specification.
• There is no
untime
problem.
and most of
your
implementati
ons meet the
equirements
in the
assignment
specification.
• There is no
untime
problem.
and all your
implementati
ons meet the
equirements
in the
assignment
specification.
• There is no
untime
problem in
your
implementati
on.
and most of
your
implementati
ons meet the
equirements
in the
assignment
specification.
• There are
some
untime
problems in
your
implementati
on.
• There are
some
compilation
problems in
your
implementati
on.
• There are
some
compilation
problems in
your
implementati
on.
any of the
functionality
.
Testing

Weighting:
10%
• You have
provided
enough
screenshots
for every
equired
functionality.
• You have
provided
enough
screenshots
for most of
the required
functionality.
• You have
provided
some
screenshots
for most of
the required
functionality.
• You have
provided
some
screenshots
for some of
the required
functionality.
• You have
provided
screenshots
for a small
number of
the
functionality.
• You have
provided few
screenshots
for a small
number of
the
functionality.
• No
screenshot
is provided.
Code quality • Your code is
well structured
and formatted,
• Your is well
structured,
allowing the
• Your code is
formatted so
that the logic
• Your code is
mostly
formatted so
• Your code is
formatted so
that it takes
• Your code is
not formatted.
• Your code is
not formatted.
Criteria /100
7 – High
Distinction
85-100%
6 – Distinction
75-84%
5 – Credit
65-74%
4 – Pass
50-64%
3 – Marginal Fail
40-49%
2 – Fail
25-39%
1 – Low Fail
25%

Weighting:
10%
allowing the
logic to be
easily
followed.
• Your code is
clearly and
concisely
described by
comments that
fully document
the code.
• Your code uses
meaningful
identifier
names that
enhance code
eadability by
clearly
explaining
their purpose.
logic to be
fairly easily
followed.
• Your code is
clearly
described by
comments that
fully document
the code.
• Your code uses
meaningful
identifier
names that
enhance code
eadability.
can be
followed with
minimal effort.
• Your
comments
provide a good
understanding
of the code.
• Your code uses
meaningful
identifier
names.
that the logic
can be
followed with
minimal effort.
• Your
comments
provide a
general
understanding
of the code.
• Your code
generally uses
meaningful
identifier
names.
some effort to
follow the
logic.
• Your
comments
provide little
understanding
of the code.
• Your code uses
too many
unmeaningful
identifier
names.
• Few comments
are provided.
• Your code uses
too many
unmeaningful
identifier
names.
• No comment
is provided.
• Your code
uses too many
unmeaningful
identifier
names.
    CAB301: Algorithms and Complexity
    Assignment 1: Project (Applied)
    Marking Criteria Sheet

Assignment 2 – Video Store ManagemenT Information System
CAB301 Algorithms and Complexity Semester 1, 2020

1
CAB301 Project:
Development of a Software Application for a
Community Li
ary to Manage Its Movie DVDs
Due Date: 25 May 2020
Weighting: 60%
Group or Individual: Individual
In this project you need to develop a software application for solving a real-world problem. In
the development of this software application, you need to use some specified data structures
to store and manipulate some data, and need to apply some algorithms that you have learnt in
the lectures to solve some computational problems in the software application, and analyse
the time complexity of the algorithms.

1. Preamble

You are hired to develop a software application for a community li
ary to manage its movie
DVDs.
The community li
ary lends movie DVDs to its members. The information about a movie
includes title, sta
ing, director, duration, genre, classification, and release date. The genre of
a movie may be Drama, Adventure, Family, Action, Sci-Fi, Comedy, Animated, Thriller, or
Other. A movie is classified as General (G), Parental Guidance (PG), Mature (M15+), or
Mature Accompanied (MA15+). The community li
ary may have multiple DVDs of the
same movie.
In order to bo
ow movie DVDs, members must register with the system through a li
arian.
When members are registered with the system, their full name, residential address, and a
contact phone number are recorded in the system. The system also keeps the information
about the movie DVDs that are cu
ently being bo
owed by each of the registered members.
When a registered member bo
ows a movie DVD, the movie DVD is added to the member’s
ecord; and when the member returns the movie DVD to the community li
ary, the movie
DVD is removed from the member’s record. A registered member can bo
ow up to 10
movies at any time. However, none can bo
ow multiple copies of the same movie at the same
time. It is assumed that both the full names of members and the titles of movies are unique.
The system analysis has now been completed, and a high-level object-oriented design has also
Answered Same Day May 18, 2021 Queensland University of Technology

Solution

Aditya answered on May 22 2021
149 Votes
Li
ary/.vs/Li
ary/DesignTimeBuild/.dtbcache.v2
Li
ary/.vs/Li
ary/v16/.suo
Li
ary/Li
ary.sln
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30011.22
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Li
ary", "Li
ary\Li
ary.csproj", "{0CAF491C-37DD-48F3-BCD3-E775BFE1944D}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Release|Any CPU = Release|Any CPU
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {0CAF491C-37DD-48F3-BCD3-E775BFE1944D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {0CAF491C-37DD-48F3-BCD3-E775BFE1944D}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {0CAF491C-37DD-48F3-BCD3-E775BFE1944D}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {0CAF491C-37DD-48F3-BCD3-E775BFE1944D}.Release|Any CPU.Build.0 = Release|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
    EndGlobalSection
    GlobalSection(ExtensibilityGlobals) = postSolution
        SolutionGuid = {D24A97A5-1E8F-4518-B05E-9B40E5F42D5F}
    EndGlobalSection
EndGlobal
Li
ary/Li
ary
in/Debug/netcoreapp3.1/Li
ary.deps.json
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v3.1",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v3.1": {
"Li
ary/1.0.0": {
"runtime": {
"Li
ary.dll": {}
}
}
}
},
"li
aries": {
"Li
ary/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}
Li
ary/Li
ary
in/Debug/netcoreapp3.1/Li
ary.dll
Li
ary/Li
ary
in/Debug/netcoreapp3.1/Li
ary.exe
Li
ary/Li
ary
in/Debug/netcoreapp3.1/Li
ary.pd
Li
ary/Li
ary
in/Debug/netcoreapp3.1/Li
ary.runtimeconfig.dev.json
{
"runtimeOptions": {
"additionalProbingPaths": [
"C:\\Users\\Aditya_Lakhera\\.dotnet\\store\\|arch|\\|tfm|",
"C:\\Users\\Aditya_Lakhera\\.nuget\\packages"
]
}
}
Li
ary/Li
ary
in/Debug/netcoreapp3.1/Li
ary.runtimeconfig.json
{
"runtimeOptions": {
"tfm": "netcoreapp3.1",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "3.1.0"
}
}
}
Li
ary/Li
ary/Li
ary.csproj
Project Sdk="Microsoft.NET.Sdk"
Exe
OutputType
netcoreapp3.1
TargetFramework

PropertyGroup
Project
Li
ary/Li
ary/Member.cs
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Runtime.CompilerServices;
using System.Text;
using System.Xml.Serialization;
namespace Li
ary
{
class Membe
{
string firstName;
string lastName;
string mobileNumber;
string password;
string userName;
string address;
Collection bo
owedDVD = new Collection();
public Member()
{

}
public Member(string firstName, string lastName, string mobileNumber, string password,string address)
{
this.firstName = firstName;
this.lastName = lastName;
this.mobileNumber = mobileNumber;
this.password = password;
this.address = address;
this.userName = firstName + lastName;
}
public string getUserName()
{
return userName;
}
public string getFirstName()
{
return firstName;
}
public string getLastName()
{
return lastName;
}
public string getMobileNumber()
{
return mobileNumber;
}
public string getPassword()
{
return password;
}
public void setPassword(string password)
{
this.password = password;
}
public int checkTotalBo
owedMovie()
{
return bo
owedDVD.Count;
}
public bool checkIfAlreadyBo
owed(string movieName)
{
int bo
owedMovieCount = bo
owedDVD.Count;
for (int i =0;i
o
owedMovieCount;i++)
{
if (bo
owedDVD[i] == movieName)
{
return true;
}
}
return false;
}
public void bo
owMovie(string movieName)
{
bo
owedDVD.Add(movieName);
}
public void returnMovie(string movieName)
{
int bo
owedMovieCount = bo
owedDVD.Count;
for (int i=0;i
o
owedMovieCount;i++)
{
if (bo
owedDVD[i] == movieName)
{
bo
owedDVD.RemoveAt(i);
}
}
}
public void cu
entBo
owedMovie()
{
int bo
owedMovieCount = bo
owedDVD.Count;
Console.WriteLine("Cu
ent bo
owed movie are ");
for (int i = 0; i < bo
owedMovieCount; i++)
{
Console.WriteLine(bo
owedDVD[i]);
}
}
public bool checkBo
owed(string movieName)
{
int bo
owedMovieCount = bo
owedDVD.Count;
for (int i = 0; i < bo
owedMovieCount; i++)
{
if(bo
owedDVD[i] == movieName)
{
return true;
}
}
return false;
}
}
}
Li
ary/Li
ary/MemberCollection.cs
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Globalization;
using System.Text;
using System.Text.RegularExpressions;
namespace Li
ary
{
class MemberCollection
{
private static MemberCollection instance;
public static MemberCollection getInstance()
{
if (instance == null)
{
instance = new MemberCollection();
}
return instance;
}
Collection memberCollection = new Collection();
private MemberCollection()
{
}
public void registerMember()
{
try
{
Console.WriteLine("Enter the first name of member");
string firstName = Console.ReadLine();
Console.WriteLine("Enter the last name of member");
string lastName = Console.ReadLine();
string defaultPassword = "1111";
Console.WriteLine("Enter the mobile number of member");
string mobileNumber;
while (true)
{
Regex reg = new Regex(@"^[0-9]{10}$");
mobileNumber = Console.ReadLine();
if (reg.IsMatch(mobileNumber))
{

eak;
}
else
{
Console.WriteLine("Enter a valid 10 digit mobile number");
}
}
Console.WriteLine("Enter the member residential address");
string address = Console.ReadLine();
Member member = new Member(firstName,lastName,mobileNumber,defaultPassword,address);
memberCollection.Add(member);
Console.WriteLine("New member is added with user name: "+member.getUserName()+" and default password is: "+member.getPassword());
}
catch (FormatException)
{
Console.WriteLine("E
or: Enter valid input details");
}
}
public bool findMobileNumber()
{
Console.WriteLine("Enter the first name");
string firstName = Console.ReadLine();
Console.WriteLine("Enter the last name");
string lastName = Console.ReadLine();
int memberCount = memberCollection.Count;
for (int i =0;i {
if ((memberCollection[i].getFirstName() == firstName)&&(memberCollection[i].getLastName() == lastName))
{
Console.WriteLine("Member moblie number is: "+memberCollection[i].getMobileNumber());
return true;
}
}
return false;
}
public bool findUserName(string userName)
{

int memberCount = memberCollection.Count;
for (int i =0;i {
if (memberCollection[i].getUserName() == userName)
{
return true;
}
}
return false;
}
public bool checkPassword(string userName,string password)
{
int memberCount = memberCollection.Count;
for (int i=0;i {
if ((memberCollection[i].getUserName() == userName)&& (memberCollection[i].getPassword() == password))
{
return true;
}
}
return false;
}
public int getIndex(string userName,string password)
{
int memberCount = memberCollection.Count;
for (int i = 0; i < memberCount; i++)
{
if ((memberCollection[i].getUserName() == userName) && (memberCollection[i].getPassword() == password))
{
return i;
}
}
return -1;
}
public void menu(int index)
{
MovieCollection movieCollection = MovieCollection.getInstance();
while (true)
{
Console.WriteLine("===========Member Menu===========");
Console.WriteLine("1. Display all movie");
Console.WriteLine("2. Bo
ow a movie DVD");
Console.WriteLine("3. Return a movie DVD");
Console.WriteLine("4. List cu
ent bo
owed movie DVDs");
Console.WriteLine("5. Display top 10 most popular movies");
Console.WriteLine("6. Change your password");
Console.WriteLine("0. Return to main menu");
Console.WriteLine("================================");
Console.WriteLine("");
Console.WriteLine("Please make selection (1-6 or 0 to return to main menu)");
try
{
int staffChoice = Convert.ToInt32(Console.ReadLine());
switch (staffChoice)
{
case 1:
movieCollection.showAllMovie();

eak;
case 2:
Console.WriteLine("Enter the movie name you want to bo
ow");
string movieName = Console.ReadLine();
bool...
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here