Bilregister


Uppgift

Du ska skriva ett program som hanterar ett bilregister. Då programmet startas ska det läsa in ett befintligt register från en fil. Den information som ska finnas om varje bil är registreringsnummer, ägare och beskrivning av bilen (i denna ingår saker som märke, modell, färg, chassinummer, etc). Formatet på filen får du själv bestämma. När programmet avslutas ska registret sparas på samma fil som lästes in.

Följande operationer ska kunna utföras:

Eftersom bilregister tenderar att bli ganska stora måste alla operationer ha maximalt logaritmisk tidskomplexitet. För att kunna söka både på registreringsnummer och ägarnamn får man använda två datastrukturer, men alla data om bilarna ska bara lagras en gång, dvs. man ska inte ha två kompletta uppsättningar av dessa uppgifter.

Det ska vara enkelt att lägga till nya informationsfält för ägare och bilar.

Registreringsnummer

Programmet ska hantera registreringsnummer på ett så generellt sätt som möjligt. Då nummer genereras av programmet ska de vara av formen ABC123, och då man anger dem själv ska de kunna innehålla upp till sex godtyckliga tecken. Det ska vara enkelt att modifiera programmet för att hantera registreringsnummer som har annat format (fler bokstäver/siffror e.d.). När en ny bil ska registreras ska programmet naturligtvis inte tillåta ett registreringsnummer som finns tidigare.

Registreringsnummer genereras av programmet genom att helt enkelt slumpa fram ett registreringsnummer på rätt format. Därefter ska två saker kontrolleras:

Om numret inte uppfyller något av dessa krav ska programmet generera ett nytt nummer. Listan med förbjudna bokstavskombinationer ska läsas in från en fil för att man enkelt ska kunna lägga till ord. Denna lista kan antas vara relativt kort, så linjär sökning är tillfyllest.