# Toimeksianto 2019/01

{% hint style="warning" %}
***Huom! Opiskelijoille suunnatuissa projekteissa heidän arviointinsa ja palautettavat dokumentit on kuvattu tarkemmin heidän omalla oppimisalustallaan.***
{% endhint %}

## Vaatimukset toimeksiannon ohjelmalle

Ohjelmointikieli on C#.

Ohjelman pitää olla konsolisovellus. Ei tehdä niin sanottua "graafista käyttöliittymää". Konsolisovelluksen käyttöliittymä saa puolestaan olla niin monipuolinen kuin kehitystiimi itse tahtoo.

Ohjelman tulee toiminnaltaan toteuttaa alla olevat minimivaatimukset. Näiden lisäksi kehitystiimillä on mahdollisuus toteuttaa lisäominaisuuksia. Ainoa rajoite on annettu aika, joten projektin palautus ei saa myöhästyä lisäominaisuuksien takia.

Ohjelman ominaisuudet liittyvät erilaisia tuotteita myyvän asiakkaan tilausjärjestelmän toteuttamiseen. Tilausjärjestelmällä tarkoitetaan sellaista ohjelmaa, jolla voidaan luoda tilaus ja käsitellä tilaus asiakkaan tarpeiden mukaan.

Esimerkkinä tilausjärjestelmästä voidaan pitää verkkokauppaa. Verkkokaupassa tuotteen tilaaja voi luoda tilauksen. Tilausjärjestelmän omistaja puolestaan voi käsitellä vastaanotetun tilauksen.

Ennen toimeksiannon aloittamista kannattaa tutustua vanhaan projektitoimeksiantoon, jossa on samankaltaista sisältöä.&#x20;

{% content-ref url="/pages/-LK6cKHCNfhRAW8LCuac" %}
[Projekti 2018/01](/toimeksiannot-2018-01/projekti-2018-01.md)
{% endcontent-ref %}

**Tilausjärjestelmän minimivaatimukset:**

* Tilausjärjestelmän käyttäjän pitää pystyä luomaan uusi tilaus.
* Tilausjärjestlemän käyttäjän pitää pystyä merkitsemään tilaus käsitellyksi.
* Tilausjärjestlemän käyttäjän pitää pystyä merkitsemään tilaus lähetetyksi.
* Tilausjärjestelmän pitää pystyä listaamaan uudet saapuneet tilaukset.
* Tilausjärjestelmän pitää pystyä listaamaan käsitellyt tilaukset.
* Tilausjärjestlemän pitää pystyä listaamaan lähetetyt tilaukset.

**Tekniset vaatimukset**

* Ohjelmoinnissa pitää olla käytetty olio-ohjelmointiin liittyviä käsitteitä.
* Tilausjärjestelmässä pitää olla jonkinlainen valintarakenne eri toiminnoille.
* Tilausjärjestlemän pitää tallentaa tietoa vähintään tekstitiedostoon tai muulla tavalla, jonka kehitystiimi voi itse valita.
* Kun tilausjärjestelmä aukaistaan uudelleen, sen pitää pystyä säilyttämään tieto entisistä tilauksista, joten tiedot eivät saa hukkua kun ohjelma lopetetaan.

## Kehitystiimin työskentely

Katso alla mainittu sivu, jossa kerrottu käytänteistä ja menetelmistä, joita toimeksiannon aikana harjoitellaan.

{% content-ref url="/pages/-LKBFgkhytEk0K06sZtM" %}
[Käytänteet ja menetelmät](/toimeksiannot-2019-01/projekti-2018-01-kaeytaenteet.md)
{% endcontent-ref %}

## Tarvittavat ohjelmistot

Alla on kuvattu tarvittavia työkaluja ohjelmia. Mikään ei estä käyttämästä muita vastaavia, esimerkiksi projektissa ei ole väliä mikä Visual Studion versio on käytössä kunhan se on vähintään vuoden 2017 version julkaisu.

Osa työkaluista on voitu määrittää pakollisiksi työskentelyn seuraamista varten, esimerkiksi Gitlab palvelu.

### Palvelut ja ohjelmistot

{% embed url="<https://git-scm.com/>" %}
Versionhallintatyökalu
{% endembed %}

{% embed url="<https://gitlab.com>" %}
Projektinhallintaan sekä versionhallintaan tarkoitettu palvelu
{% endembed %}

### Muut palvelut ja ohjelmistot

{% embed url="<https://visualstudio.microsoft.com/vs/>" %}
C# ohjelman tekemiseen
{% endembed %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.sovelluskontti.com/toimeksiannot-2019-01/toimeksianto-2019-01.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
