fel
le

Találkozó szervezés

Egy vállalatnál megbeszélésre alkalmas tárgyalótermekből csak véges sok áll rendelkezésre. A termek neveit és a terem maximális létszámát a program tárolja egy listában.

A program felhasználói találkozókat szerveznek. Egy találkozó szervezése során megadják az időpontot (nap, kezdete és vége időpont), a terem nevét, valamint a résztvevők adatait. A találkozóknak egyedi sorszámot ad a szerver, melyre hivatkozva módosításokat lehet elvégezni a rögzített találkozón (termet módosítani, résztvevőt hozzáadni/elvenni, találkozót lemondani, stb). A találkozót csak annak létrehozója módosíthatja. A program kezel egy speciális logint, admin/titok123, amely az admin felhasználót azonosítja. Ő tetszőleges találkozó adatait módosíthatja.

A szerver fejlesztésénél vegyük figyelembe hogy egy időben több kliens is küldhet be függvényhívásokat, így kezeljük ezeket az eseteket. A szerver garantálja, hogy nem fordulhat elő, hogy ugyanabban a teremben egy időpontban több találkozó is szervezésre kerül, valamint garantálnia kell hogy adott usernek valamely időpontban több találkozón is jelen kell lennie.

A szerver belső megvalósításában (rekordok, listák) nem adunk megkötést. A szerver egyes funkcióinak a szükséges minimális lockolásokat kell kezelnie, (lehető legkevesebb mértékben szabad akadályozni egymást) amely mellett még garantálható a hibamentes működés. A dátumok tárolásához a DateTime típus használandó.

Funkciók:

  • login(usernev, jelszo): a felhasználó automatikusan regisztrálódik, amennyiben a usernév ismeretlen volt. Ha már egyszer loginolt (és regisztrálódott) utána csak a korábban megadott jelszóval lehet belépni. A jelszó ezért nem lehet üres string. A usernév sem.
  • logout(): kilépés.
  • teremLista(): a program kilistázza a termek neveit és a férőhelyek számát, ahova találkozót lehet szervezni.
  • foglaltsag(terem): a program megadja hogy adott teremben milyen találkozók vannak szervezve az egyes napokra (találkozó id, kezdet, vég, résztvevők száma).
  • foglaltsag(terem,nap): a program megadja hogy adott teremben adott napon (év,hó,nap) milyen találkozók vannak szervezve (találkozó id, kezdet, vég, résztvevők száma).
  • elfoglaltsag(user,kezdet,vege): adott nevű user adott időszakaszban (kezdet - veg) ráér-e, nincs-e valami találkozó szervezve neki. Ha nincs, akkor ezt adja meg. Ha van, akkor sorolja fel azokat a találkozókat (hely, kezdete és vége) amelye az adott időintervallumban a usernek jelen kell lennie).
  • szervez(terem, kezdet, vege, resztvevokListaja): új talalkozót szervezünk, adott teremben, adott időpontban. A résztvevőklistája felhasználók neveinek listája, akiknek részt kell venni a találkozón. A szerver ellenőrízze le hogy a terem az adott időszakaszban szabad-e, a terem létszáma elég-e a találkozóhoz (résztvevők listájának darabszáma), valamint hogy a résztvevők valamelyikének nincs-e ugyanebben az időpontban máshol találkozója. A függvény visszatérési értéke a találkozó rekord id-je ha sikerült.
  • lemond(id): adott id-jű találkozó törlése
  • athelyez(id,ujterem): adott id-jű találkozó átszervezése másik terembe (ugyanezen nap és időpont, csak másik terem, ugyanezen résztvevőlista).
  • idopontModosit(id,ujkezdet,ujvege): adott id-jű találkozó időpontjának módosítása.
  • szervezesAtad(id,usernev): adott id-jű találkozó szervezési jogának átadása a megadott usernek.
  • resztvevoHozzaad(id,usernev): adott találkozóra adott user hozzáadása. A program ellenőrízze le, hogy a user korábban nem szerepel-e már a résztvevők listáján. Hogy a megemelkedett létszám esetén is elég a terem kapacitása. Hogy a user ráér-e (nincs máshol más találkozója az adott időszakaszban).
  • resztvevoTorol(id,usernev): adott találkozóról adott user törlése. A program ellenőrízze le, hogy a user szerepel-e a résztvevők listáján.
  • talalkozok(usernev,nap): adott user adott napra vonatkozó elfoglaltágainak (találkozók) listája. Megadja a találkozó id-jét, terem, kezdet,vég, résztvevők listája.

A programhoz készítsünk egyszerű Windows Forms vagy konzolos kezelőfelületet, amelyen keresztül a funkciók működtethetőek.

Hernyák Zoltán
2013-04-30 05:30:57