//Namn: Kalle Nalle //personnummer:01 01 01-1010 //p-uppgiftnummer:100 Användargränssnitt: 1. Visa alla kunder 2. Visa alla kunder som kan få ett gratis klippning 3. Nytt besök 4. Registrera ny kund 5. Avsluta Välj: om 1 väljs: Kalle Anka, 750109-0012, har klippt sig 4 ggr Kalle Benka, 740109-0013, har klippt sig 2 ggr Musse Pigg, 650102-0011, har klippt sig 5 ggr om 2 väljs: Följande kunder kan få gratis klippning Musse Pigg, 650102-0011, har klippt sig 5 ggr om 3 väljs: Ange kundens personnummer: 750903-1101 Kalle Anka, harklippt sig 6 gånger, kunden kan få en gratis klippning om 4 väljs: Ange namn: Pelle Ange efternamn: Pellesson Ange personnummer: 450201-0001 Ny kund har registrerats. om 5 väljs: All data har lagrats på filen kundregister.txt. Tack o hej Algoritm ========== 1. En lista skapas (kundlista) för att lagra kund-objekt i. 2. Filen kundregister.txt läses in, skapas kund-objekt och lagras i kundlista. 3. Meny 1 skrivs ut. 4. Programmet läser in användarens svar: 4.1 funktionen sortera() och därefter skrivUt() anropas om man väljer alt.1 4.2 funktionen sortera() och därefter skrivUtGratis() anropas om man väljer alt.2, skriver ut alla kund-objekter som instansvariabeln antal_klippning har värdet 5 4.3 metoden nyKund() anropas om man väljer alt.3, programmet frågar efter namn, efternamn och personnummer och skapar ett objekt av kund med angivna uppgifter och lägger till objektet i kundlista 4.4 om alt.4 "nytt besök" väljs, frågar programmet efter personnumret och sedan anropar funktionen leta_kund, med angivet personnummer, ett objekt av kund returneras av funktionen, metoden nytt_besok för returnerade kunden-objektet anropas. 4.5. om alt.5 ,avsluta väljs anropar programmet funktionen avsluta() som skriver all data som finns i kundlista till filen kundregister.txt 6. programmet återgår till 3 (visa huvudmenyn) om det inte redan är avslutat i punkt 4.5. Datastrukturer och funktioner ============================= class Kund(object): # konstruktor för att skapa en kund objekt, antal_klippningar är default parameter för att kunna skapa nya kunder def __init__(self, namn, efternamn, pnr,antal_klippningar=0) # här kan ett nytt besök registreras antal_besok ökas med 1 def nytt_besok(self) # returnerar True om kunden kan få ett gratis klippning def kanFaGratisKlippning(self) # en strängrepresentation av kunden (till skärmen) def __str__(self) # en strängrepresentation av kunden med anpassat format speciell för skrivning till fil def filstr(self) # compare metod som används för sorteraing, metodern # returnerar 0 om annankund och den här kunden har samma namn och efternamn # returnerar 1 om annankund har ett efternamn som kommer tidigare i alfabetordningen än den här kunden # returnerar -1 om annankund har ett efternamn som kommer senare i alfabetordningen än den här kunden # ovanstående gäller för namn ifall annankund och den här kunden har samma efternamn def __cmp__(self, annankund) kundLista=[] #skriver ut huvudmenyn, läser in användares val och returnerar det. def huvudMeny() # letar fram en kund med personnumret pnr i listan kundlista och returnerar kund-objektet # funktionen returnerar None om kund-objekt med angivet personnummer inte finns. def leta_kund(kundlista, pnr) # Sotrerar kundlista efter efternamn och namn på alla kund-objekt def sortera(kundlista) # funktionen läser in namn, efternamn och personnummer och skapar # en ny kund med angivna uppgifter, som läggs till i listan def nyKund(kundlista) # Skriver ut alla kunder i kundlista def skrivUtAlla(kundlista) #Skriver ut alla kunder som skulle kunna få en gratisklippning def skrivUtGratis(kundlista) # läser information om alla kunder från en fil och lagrar de som Kund-objekt i kundlista def lasFil(filnamn, kundlista) # förbereder avslutning, t.ex skriver all information från listan på fil så att ingen data förloras def avsluta(filnamn,kundlista)