Quiz wielotematyczny

0

Witam.

Mam taki programik do napisania w C

"Zarządzanie prostym testem wielotematycznym.

Wszystkie programy powinny wykorzystywać listy, pliki, struktury.

Celem programu jest przeprowadzenie prostego testu. Opis testu znajduje się w pliku, np. tekstowym, którego format należy opracować samodzielnie. Plik powinien zawierać zbiór pytań wraz z odpowiedziami.
Przebieg działania powinien wyglądać następująco: losowanie pytania, oczekiwanie na odpowiedź, porównanie odpowiedzi ze wzorcem. Dane pytanie może być zadane tylko raz w trakcie działania programu. Po zadanej z góry liczbie powtórzeń należy zaprezentować statystykę odpowiedzi (poprawne, błędne).
Program oferuje możliwość dodawania, edycji oraz kasowania pytań wraz z odpowiedziami."

Zastanawiam sie jak najlepiej sie do tego zabrac.
Zapisywanie juz ogarnelem. Zapisuje kazde nowe pytanie na koncu pliku binarnego w postaci:
-pytanie
-odp A
-odp B
-odp C
-poprawna
-pytanie 2
itp....

Problem jest z edycja oraz kasowaniem.
Najprostrzym rozwiazaniem bedzie jak dla mnie wczytanie wszystkich pytan. I zastanawiam sie, na co to wczytac ? Na razie wczytuje to na dymanicznie alokowana tablice struktur.
Ale problem pojawi sie gdy pytan bedzie wiecej niz elementow tablicy. I co wtedy, mam to realokować? Jak w ogole mam spr czy powinienem to zrobic? Druga rzecz o ktorej pomyslalem to lista. NIestety nie mialem z tym za duzo doczynienia,ale i tak musze sie tego nauczyc. Ktore podejscie bedzie tutaj lepsze ? Moze istnieje jakies inne ?

Pozdrawiam.

1

Można zrobić strukturę przechowującą te dane i zrobić jej vector. Listą też można.

0

To mały, ale już poważny program. Żeby się w nim nie zgubić musisz umieć sobie w głowie i w kodzie odseparować jego poszczególne moduły.

Najważniejszym modułem jest lista pytań. Tak lista będzie najlepsza i lepiej jak Ci się będzie na ten cały problem patrzeć, gdy będziesz już wiedział jak działa, więc zacznij od ogarnięcia listy. Lista będzie zawierać pytania. I tu możesz mieć dwa podejścia:
a) Pytanie będzie strukturą zawierającą treść pytania, listę odpowiedzi, indeks poprawnej odpowiedzi.
b) Pytanie będzie strukturą zawierającą treść do wyświetlenia (bez rozróżniania co jest pytaniem a co odpowiedzią) i indeks poprawnej odpowiedzi.
Jedno z tych podejść znacznie uprości implementację dalszych modułów, a drugie utrudni. Sam oceń, które jak na to wpłynie i który wariant wybierzesz.

Drugi moduł to obsługa plików i składa się z dwóch akcji.

  1. Załadowanie bazy pytań z pliku do listy pytań.
  2. Zrzut całej listy pytań do pliku. (Nie baw się w dopisywanie nowych pytań na końcu, bo to tylko Ci utrudni wymyślanie programu, a tak masz gotowy moduł do obsługi plików i już więcej nie musisz się plikami zajmować (w innych modułach).

Trzeci moduł to jakieś menu, czy coś. Coś gdzie: wybierasz aktualny plik, wykonujesz test, włączasz edycję zawartości bazy. Każda z tych opcji to osobny moduł (poza wyborem pliku, którą może być trzecią akcją w module plikowym wcześniej opisanym. Do wyboru tego co chcesz zrobić potrzebujesz menu (a może nie potrzebujesz, bo będą to wszystko określały argumenty z jakimi uruchomiony zostanie program? sam zdecyduj). Jeżeli zdecydujesz się na menu, to będzie ono wywoływać akcje z innych modułów.

Moduł testu. Jeżeli działasz z menu, to warto w tym momencie zrobić sobie kopię listy pytań (czyli nową listę, zawierającą te same elementy). Losując pytanie usuwasz je z listy, by nie zostało wylosowane ponownie.

Moduł edycji. Najbardziej skomplikowany element. Zacząłbym od wykonania przeglądarki pytań: wyświetla pytanie i dostępne opcje: poprzednie, następne, edytuj, usuń, dodaj nowe pytanie. Sama edycja pytania będzie zależeć od tego jak określiłeś strukturę Pytanie. W planowaniu programu zostaw ten moduł na koniec, może gdy się nim zajmiesz będziesz już dużo mądrzejszy niż teraz...

1 użytkowników online, w tym zalogowanych: 0, gości: 1