Avatar billede daxiez Nybegynder
07. december 2004 - 13:35 Der er 9 kommentarer og
1 løsning

Missing a using or en assembly reference ?

Jeg har denne kode kopieret fra en bog, men kan ikke få det til at virke ! hvad er der galt ?

koden er delt i to!

using System;
using System.Collections;

namespace Kundekartotek
{
   
    public class CPerson
    {
   
        //Construktor
        public CPerson(string Navn, string Adr, string Tlf)
        {
            navn=Navn;
            adr=Adr;
            tlf=Tlf;
        }
        //opdater : Virtuel metode (overrides i CKunde)
        virtual public void Opdater(string Navn, string Adr, string Tlf)
        {
            navn=Navn;
            adr=Adr;
            tlf=Tlf;
       
        }
   
        //Property :navn
        protected string navn;
        public string Navn
        {
            get
            {
                return navn;
            }
        }
        //Property :adr
        protected string adr;
        public string Adr
        {
            get
            {
                return adr;
            }
        }
        //Property :navn
        protected string tlf;
        public string Tlf
        {
            get
            {
                return tlf;
            }
        }
        public class CKunde : CPerson
        {
            private static int KundeID=0;

            //Constructor
            public CKunde(string Navn, string Adr, string Tlf) : base(Navn, Adr, Tlf)
            {
                iD=KundeID++;
            }

            //Opdater:Overridet metode, som opdatere kundedata
            override public void Opdater(string Navn, string Adr, string Tlf)
            {
                //kald metode i CPerson
                base.Opdater(Navn, Adr, Tlf);
            }
            //Property:ID
            private int iD;
            public int ID
            {
                get {return ID;}
            }
        }

        public class CKundekartotek
        {
            //Constructor
            public CKundekartotek()
            {
                arrKunder = new ArrayList();
                KundePegepind = 0;
            }

            //Ny kunde: opret ny kunde
            public void NyKunde(string Navn, string Adr, string Tlf)
            {
                try
                {
                    CKunde MinKunde = new CKunde(Navn, Adr, Tlf);
                    arrKunder.Add(MinKunde);
                }
                catch(Exception)
                {
                    throw;
                }
            }

            //OpdaterKunde : opdaterer kundens stamdata
            public void OpdaterKunde(int ID, string Navn, string Adr, string Tlf)
            {
                try
                {
                    CKunde MinKunde = FindKunde(ID);
                    MinKunde.Opdater(Navn, Adr, Tlf);
                }
                catch(Exception)
                {
                    throw;
                }
            }

            //Slet Kunde : Sletter en Kunde
            public void SletKunde(int ID)
            {
                try
                {
                    CKunde MinKunde;
                    MinKunde=FindKunde(ID);

                    arrKunder.Remove(MinKunde);
                }
                catch(Exception)
                {
                    throw;
                }
            }

            //Find kunde : finder en kunde baseret på Kunde ID
            private CKunde FindKunde(int ID)
            {
                bool bStopIteration = false;
                CKunde MinKunde = null;

                IEnumerator MinEnumerator = arrKunder.GetEnumerator();
                while( MinEnumerator.MoveNext() && bStopIteration == false)
                {
                    MinKunde = (CKunde) MinEnumerator.Current;
                    if(MinKunde.ID == ID)
                        bStopIteration =true;
                }
                if(bStopIteration == true)
                    return MinKunde;
                else
                    throw new CKartoteksException("Kunde Findes ikke");
            }

            private int KundePegepind;

            //FoersteKunde : sæt pegepind til første kunde og returner denne
            public CKunde FoersteKunde()
            {
                KundePegepind = 0;
                if(arrKunder.Count == 0)
                    return null;
                else
                    return((CKunde) arrKunder[KundePegepind]);
            }
            //NaesteKunde :sæt pegepind til næstekunde og returner denne
            public CKunde NaesteKunde()
            {
                ++KundePegepind;
                if (KundePegepind >= arrKunder.Count)
                {
                    --KundePegepind;
                    return null;
                }
                return((CKunde) arrKunder[KundePegepind]);
            }

            //array af kunder
            private ArrayList arrKunder;
        }

        public class CKartoteksException : ApplicationException
        {
            public CKartoteksException():base(){}
            public CKartoteksException(string massage):base(massage){}
            public CKartoteksException(string message, Exception inner):
                base(message, inner){}
        }
    }
}


OG denne kode !

using System;
using Kundekartotek;

namespace Superkartoteket
{

    class CSuperkartoteket
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            //Lav ny instans af kundekartoteket
            CKundekartotek kk = new CKundekartotek();

            bool bAfslut = false;
            string Navn, Adr, Tlf, strID;
            int ID;

            do
            {
                //Vis menu
                Console.WriteLine("\n***Menu***");
                Console.WriteLine("1) Opret Kunde");
                Console.WriteLine("2) Opdater Kundedata");
                Console.WriteLine("3) Slet Kunde");
                Console.WriteLine("a) Afslut");


                //Aflæs menuvalg
                Console.WriteLine("Valg:");
                string valg = Console.ReadLine();


                //Indsæt linieskift mellem valg og operation
                Console.WriteLine("\n");

                try
                {
                    switch(valg)
                    {
                        case "1":// Opret ny kunde
                            Console.WriteLine("-->Opretter kunde");
                            Console.Write("Navn: ");
                            Navn = Console.ReadLine();
                            Console.Write("Adr :");
                            Adr = Console.ReadLine();
                            Console.Write("Tlf: ");
                            Tlf = Console.ReadLine();
                            kk.NyKunde(Navn, Adr, Tlf);
                            break;

                        case "2": // Opdater kundedata
                            Console.WriteLine("-->Opdater kundedata");
                            Console.Write("ID på kunde som skal opdateres: ");
                            strID=Console.ReadLine();
                            ID=Convert.ToInt32(strID, 10);
                            Console.Write("Navn: ");
                            Navn = Console.ReadLine();
                           
                            Console.Write("Adr :");
                            Adr = Console.ReadLine();

                            Console.Write("Tlf: ");
                            Tlf = Console.ReadLine();
                            kk.OpdaterKunde(ID, Navn, Adr, Tlf);
                            break;

                        case "3": //Slet kunde
                            Console.WriteLine("-->Sletter Kunde");
                            Console.Write("ID på kunde som skal slettes:");
                            strID=Console.ReadLine();
                            ID=Convert.ToInt32(strID, 10);
                            kk.SletKunde(ID);
                            break;

                        case "4": // Vis kunder
                            Console.WriteLine("-->Viser kunder");
                            Console.WriteLine("{0,-5}{1,-25}{2,-35}{3,-8}", "ID",
                                "Navn", "Adr", "Tlf");
                            CKunde MinKunde;

                            MinKunde=kk.FoersteKunde();
                            while(MinKunde!=null)//sålænge der er kunder
                            {
                                Console.WriteLine("{0,-5}{1,-25}{2,-35}{3,-8}",
                                    MinKunde.ID,
                                    MinKunde.Navn,
                                    MinKunde.Adr,
                                    MinKunde.Tlf);

                                MinKunde=kk.NaesteKunde();
                            }
                            break;

                        case "a":// Afslut
                            bAfslut=true;

                            break;
                    }
                }
                catch (Exception e)
                {
                    Console.Error.WriteLine(e.Message);
                }

            }while(bAfslut==false);// indtil der er vlagt afslut i menuen
           



        }
    }
}
Avatar billede arne_v Ekspert
07. december 2004 - 13:41 #1
Du mangler vel en:

using Kundekartotek;

i den sidste fil !?
Avatar billede arne_v Ekspert
07. december 2004 - 13:45 #2
Vrøvl - den har du
Avatar billede arne_v Ekspert
07. december 2004 - 13:48 #3
Hov

Har du ikke defineret CKunde, CKundekartoek og  CKartoteksException
inden i CPerson ?
Avatar billede arne_v Ekspert
07. december 2004 - 13:48 #4
Prøv lige at flyt dem udenfor.
Avatar billede daxiez Nybegynder
07. december 2004 - 15:03 #5
Super mange tak ! har sku siddet og kigget på den kode længe ! burde have givet 1000 point ! smid et svar !
Avatar billede arne_v Ekspert
07. december 2004 - 15:10 #6
svar
Avatar billede daxiez Nybegynder
07. december 2004 - 15:26 #7
Lige en ting til !
jeg får en "System.stackoverflowException" når jeg trykker 4 for vis kunder ! hvorfor ?
Avatar billede arne_v Ekspert
07. december 2004 - 15:52 #8
Jeg kan teste det i aften
Avatar billede daxiez Nybegynder
07. december 2004 - 19:16 #9
Fandt fejlen !
Det var en Get der retunerede forkert !
Avatar billede arne_v Ekspert
07. december 2004 - 19:34 #10
Så kigger jeg ikke på det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester