Sie sind auf Seite 1von 27

Distributed Programming - Test 2

Teacher Juan Carlos Zuluaga

Value 20%

Deadline Second class of Easter week

Terms ● Individual work.


● The note depends on the sustentation.
● If partial or total copy is found between jobs, the note will be 0.0 for everyone
involved.
● All software, comments, commits must be in English.
● The WEB Backend interface must be displayed in English.
● The interface of the Frontend Mobile App English (default language) Spanish and the
language that corresponds according to the instructions.
● Use the MVC pattern for the WEB application. It must be done in .NET Core and
apply all the concepts seen in the course.
● Use the MVVM pattern for the mobile application. It must be done in Xamarin Forms
and apply all the concepts seen in the course.
● Your code must be ordered, clear and you must follow all the good programming
practices that we have seen so far in class.
● All sources must reside in the private GitHub repository and a chronological progress
must be observed in the completed Commits.
● No work is received that is not delivered as described later in this document.
● The solution must be published on Azure.
● You must design your own DB according to the requirements.
● Everything must be implemented by repositories, any class mustn't exceed the data
directly.

Request
Develop a voting system. In this system you can register different voting events, for example: president of the
year 2020, Do you agree with the new metro line? Do you prefer Rock or Reggaeton? ETC. The people who
register in the system will be able to vote only once for each voting event. And then the administrator, will be
able to consult the result of each voting event.

Functionality in the WEB module


● It can only be accessed by the administrator user.

● You can register multiple voting events which must have at least the following attributes:

○ Name: event vote name, e.g. Do you agree with a new pool for the ITM? or; Student
representative for 2019.
○ Description: A detailed explanation of the event.
○ Start Date: Date and time at which you can start voting.
○ End Date: Date and time at which the vote is closed.
○ Candidates: A list of candidates or options that must have the following attributes:

■ Name: candidate or option name, e.g. Yes / No (for the case of the pool) or Cristina
López, Martin Rios, Luis Cardona, Blank (for the case of Student representative).
■ Proposal: A brief description of the proposal of the candidate or of what implies the
option of the query in question..
■ Image: Photo of the candidate or option.

● When the voting event ends, it should be possible to check how many votes each candidate or each
option obtained and to easily identify who or what option won.

Functionality in the mobile App


● Login / Logout / Register new / Change data / Change password / Remember password. For users who
want to vote in the system, following all the guidelines explained in class (including safe consumption of
Rest). Users must have the following additional attributes:
○ First name: voter’s first name.
○ Last Name: voter’s last name.
○ Occupation: voter’s occupation (Student, Law, Doctor, ETC).
○ Stratum: voter’s stratum (1, 2, 3, 4, 5, 6).
○ Gender: voter’s occupation (male, female, other).
○ Birthdate: voter’s birthdate.
○ City: voter’s city (you must implement select a country first).

Note: don’t ask for the address.

● List all the organized voting events, showing first those that the user has not voted for and then
showing what the user has already voted.

● When selecting a voting event for which you have NOT voted and it’s still open, you must show the list
of candidates or options with the photo, proposal and give the opportunity to vote once for this event.

● When I selected a voting event which is still open but a vote was already made. The candidate is
shown for which you voted but you should NOT let it change.

● When I select a voting event that is already closed, it must show in descending order the candidates or
options that had the most votes.

● The application must be multi-language, must be in English (default language), Spanish and this
language depends on your document number:

Documents finalized in: Language

0, 5 French

1, 6 German

2, 7 Portuguese

3, 8 Italian

4, 9 Dutch

● You App Look and Feel, must be pretty different than it was explained in class. I mean, you must
change the login and all your UI appearance. Be original!

● You can watch a complete explanation of this in:


https://www.youtube.com/watch?v=BVkzsufEfr8&feature=youtu.be

● You can download the App Sample from Google


Play:https://play.google.com/store/apps/details?id=com.zulusoftware.MyVote (coming soon in Apple
Store)
Compliance checklist
Accomplishment
Module Achievement Weight Observation
(Full, Partial, No)

WEB Accessible only by the administrator 5

WEB Manage event votes with his candidates or options 12


WEB Show vote results when the event finish 12
App Login / Logout 5
App Register new users 5
App Modify users / Change password 5
App Recover password 5
App Lists event votes 10
App Allow to vote once time 11
App Show previous vote 10
App Show vote results 10
App Multi language 10
TOTAL 100

Deliverable
The delivery day, you must send an email to jzuluaga55@gmail.com, It must attached a document with the
following:

● Full name and group.


● URL of the repository (add user jzuluaga55@gmail.com as collaborator).
● URL of the publication in Azure.
● Users and password to enter the system.
● Diagram entity relationship that you implemented to reach the requirement.
● Check lists of compliance completed.
● Screenshots where all the obtained achievements are evidenced.

Example document to deliver:

Fullname Juan Carlos Zuluaga Cardona

Group 1

Repository URL https://github.com/Zulu55/MyVote

Azure URL https://zuluvote.azurewebsites.net

Admin user jzuluaga55@gmail.com Password: 123456

Other users to test user1, user2, user3, …, user20@gmail.com, Password for all: 123456

Diagram entity relationship

Draw your own diagram. Like this example:

Compliance checklist (explample)

My
Accomplishment
Module Achievement Weight Observation Auto
(Full, Partial, No)
Note

WEB Accessible only by the administrator 5 Full See images 1, 2, 3 5

Manage event votes with his candidates


WEB 12 Full See images 3, 4, 5, 6 12
or options
I can't complete this
WEB Show vote results when the event finish 12 No 0
feature

App Login / Logout 5 Full See images 7, 8, 9 5

App Register new users 5 Full See images 10, 11, 12 5

I can't complete the


App Modify users / Change password 5 Partial change password. See 3
images 13, 14

I can't complete this


App Recover password 5 No 0
feature
App Lists event votes 10 Full See images 15, 16 10

App Allow to vote once time 11 Full See images 17, 18, 19 11

App Show previous vote 10 Full See images 20, 21 10

I can't complete this


App Show vote results 10 No 0
feature
Only in English and
App Multi language 10 Partial 8
Spanish
TOTAL 100 69

Screen Shots Evidences

And then show all the images referenced in compliance checklist that prove your achievements.

Example finished application


This is the teacher solution, it can serve to guide you. But you will try to do something different, using different
colors, images and in general a pretty different look and feel.

In Web
Login: Register:

Send email instructions: Email to confirm register:


User confirmation: Password recovery:

Email to recover password: Reset password:

Countries:

Countries details:
Event votes:

Event votes details:

Results:
Results details:

In App

On Phone

Icon: Splash:
Login: Event list:

New User: Register confirmation message:


Email confirmation: Menú:

Modify user: Modify password:

Forgot your password: Event vote don’t start:


Confirm vote: Vote confirm message:

When you already vote: Vote results:


Multi language Spanish: Multi language German:

Multi language French: Multi language Portuguese:


Multi language Italian: Multi language Dutch:
On Tablet
Recommendations
● You don’t need to create the same solution structure that we use in class. You can create some like
that only with Xamarin Forms Front:
● It is recommended to have several users in the seeder (at least 20), to be able to test the votes for the
different options. Example: user1@gmail.com, to user20@gmail.com, all with the same password to
test easily.

● I recommend you start today. I wish you so lucky. Happy coding!

Das könnte Ihnen auch gefallen