Problem med cd arkiv program

Tags:    c#

Hej udviklere

Jeg sidder med et lille problem - tror jeg nok. Jeg har lavet et Cd arkiv i C#. Hver cd tildeles et id nummer, og det id nummer skal man så indtaste når man vil slette en CD. Mit problem er, at programmet tæller hvor mange cd'er der er i arkivet, og sletter den sidste HVER GANG :-(

Jeg har overført programmet til en winform, så jeg har to klasser.

Den første er logik klassen hvor alle metoder ligger:

using System;
//indeholder de kodestumper der skal til for at kunne benytte ArrayLists
using System.Collections;


namespace Cd_arkiv_namespace
{
//opretter en klasse kaldet CDarkiv
public class CDarkiv
{ //opretter 4 offentlige variabler af typen string
public string _sAlbum;
public string _sGenre;
public string _sKunstnerGruppe;
//opretter en offentlig variabel af typen int
public int _IDNr;
/*opretter en statisk variabel til indeksering af CDer. Hvis den ikke var
statisk ville hver CD få det samme ID-nummer.
Statisk betyder, at den ikke kan ændres*/
//public static int iId;

//opretter en arraylist med navnet aCD. a'et indikere, at det er en arraylist
public ArrayList aCD = new ArrayList();

//opretter en conctructor der tager 3 argumenter
public CDarkiv(string ALBUM, string GENRE, string KUNSTNERGRUPPE)
{
//tæller idnummeret op med 1 hver gang der oprettes en ny CD
iId++;
this._IDNr = iId;
this._sAlbum = ALBUM;
this._sGenre = GENRE;
this._sKunstnerGruppe = KUNSTNERGRUPPE;
}

//opretter en tom constructor til objektet CDarkiv
public CDarkiv()
{
}


//opretter en metode der tager 3 argumenter
public void TilfoejCD(string _sAlbum, string _sGenre, string _sKunstnerGruppe)
{
//opretter et nyt objekt af klassen CDarkiv
CDarkiv CD = new CDarkiv(_sAlbum, _sGenre, _sKunstnerGruppe);
//tilføjer objektet CD til arrayet
aCD.Add(CD);
}
//opretter en metode der tager 1 argument
public void SletCD(int _iIDNr)
{ //opretter et objekt (SletCD) af klassen CDarkiv
CDarkiv SletCD = null;
//her sættes metoden FindCD lig med SletCD
SletCD = FindCD(_iIDNr);
//sletter det objekt med tilhørende ID-nummer som FIND() metoden har fundet
aCD.Remove(CDarkiv.iId);

}
//opretter en metode til at finde en cd ved at bruge ID-nummeret
public CDarkiv FindCD(int _iIDNr)
{ //opretter en boolesk værdi og sætter den til false
bool _bStopIteration = false;
//opretter et objekt (MinCD) af klassen CDarkiv
CDarkiv MinCD = null;
/*opretter min egen variabel(MinEnumerator) og tilføjer den til mit array.
Derved søger den arrayet igennem for at finde de ID-numre der eksistere*/
IEnumerator MinEnumerator = aCD.GetEnumerator();
/*opretter en while løkke der kører så længe variablen MinEnumerator
løber arrayet igennem og så længe bool variablen bStopIteration er false*/
while (MinEnumerator.MoveNext() && _bStopIteration == false)
{ //sætter minCD lig med det ID-Nummer den er nået til
MinCD = (CDarkiv) MinEnumerator.Current;
//opretter en if-sætning der tjekker om det ID-nummer Enumeratoren har fundet
//er lig med det nummer brugeren har indtastet
if (MinCD._IDNr == _IDNr)
/*hvis de to ID-numre stemmer overens, bliver bool variablen sat
til true og søgningen stopper*/
_bStopIteration = true;
} //returnerer MinCD, som er det ID nummer man har søgt efter
return MinCD;
}
}//CDarkiv klassen slutter
}

Den anden er selve winformen:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace Cd_arkiv_namespace
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Button btnSletCD;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox tbKG;
private System.Windows.Forms.TextBox tbGenre;
private System.Windows.Forms.Button btnTilfoejCD;
private System.Windows.Forms.TextBox tbAlbum;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button btnAfslut;
private System.Windows.Forms.Label label5;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
private System.Windows.Forms.ListBox listBox1;
private System.Windows.Forms.TextBox tbSlet;

//obretter et objekt af klassen CDarkiv
Cd_arkiv_namespace.CDarkiv cdarkiv = new Cd_arkiv_namespace.CDarkiv();
//opretter en offentlig statisk integer


public Form1()
{

InitializeComponent();

}

/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.label4 = new System.Windows.Forms.Label();
this.tbSlet = new System.Windows.Forms.TextBox();
this.btnSletCD = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.label3 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.tbKG = new System.Windows.Forms.TextBox();
this.tbGenre = new System.Windows.Forms.TextBox();
this.btnTilfoejCD = new System.Windows.Forms.Button();
this.tbAlbum = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.btnAfslut = new System.Windows.Forms.Button();
this.label5 = new System.Windows.Forms.Label();
this.listBox1 = new System.Windows.Forms.ListBox();
this.groupBox2.SuspendLayout();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// groupBox2
//
this.groupBox2.BackColor = System.Drawing.SystemColors.Control;
this.groupBox2.Controls.Add(this.label4);
this.groupBox2.Controls.Add(this.tbSlet);
this.groupBox2.Controls.Add(this.btnSletCD);
this.groupBox2.Location = new System.Drawing.Point(8, 208);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(376, 144);
this.groupBox2.TabIndex = 11;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "Slet CD";
//
// label4
//
this.label4.Location = new System.Drawing.Point(8, 32);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(152, 32);
this.label4.TabIndex = 6;
this.label4.Text = "Indtast ID nummer på den CD du vil slette fra arkivet";
//
// tbSlet
//
this.tbSlet.Location = new System.Drawing.Point(160, 32);
this.tbSlet.Name = "tbSlet";
this.tbSlet.Size = new System.Drawing.Size(192, 20);
this.tbSlet.TabIndex = 5;
this.tbSlet.Text = "";
this.tbSlet.TextChanged += new System.EventHandler(this.tBSlet_TextChanged);
//
// btnSletCD
//
this.btnSletCD.Location = new System.Drawing.Point(272, 96);
this.btnSletCD.Name = "btnSletCD";
this.btnSletCD.TabIndex = 1;
this.btnSletCD.Text = "Slet CD";
this.btnSletCD.Click += new System.EventHandler(this.btnSletCD_Click);
//
// groupBox1
//
this.groupBox1.BackColor = System.Drawing.SystemColors.Control;
this.groupBox1.Controls.Add(this.label3);
this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Controls.Add(this.tbKG);
this.groupBox1.Controls.Add(this.tbGenre);
this.groupBox1.Controls.Add(this.btnTilfoejCD);
this.groupBox1.Controls.Add(this.tbAlbum);
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Location = new System.Drawing.Point(8, 8);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(376, 168);
this.groupBox1.TabIndex = 10;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Tilføj CD";
this.groupBox1.Enter += new System.EventHandler(this.groupBox1_Enter);
//
// label3
//
this.label3.Location = new System.Drawing.Point(24, 104);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(100, 32);
this.label3.TabIndex = 11;
this.label3.Text = "Indtast kunstner eller gruppe";
//
// label2
//
this.label2.Location = new System.Drawing.Point(24, 64);
this.label2.Name = "label2";
this.label2.TabIndex = 10;
this.label2.Text = "Indtast genre";
//
// tbKG
//
this.tbKG.Location = new System.Drawing.Point(160, 104);
this.tbKG.Name = "tbKG";
this.tbKG.Size = new System.Drawing.Size(192, 20);
this.tbKG.TabIndex = 4;
this.tbKG.Text = "";
this.tbKG.TextChanged += new System.EventHandler(this.tbKG_TextChanged);
//
// tbGenre
//
this.tbGenre.Location = new System.Drawing.Point(160, 64);
this.tbGenre.Name = "tbGenre";
this.tbGenre.Size = new System.Drawing.Size(192, 20);
this.tbGenre.TabIndex = 3;
this.tbGenre.Text = "";
this.tbGenre.TextChanged += new System.EventHandler(this.tbGenre_TextChanged);
//
// btnTilfoejCD
//
this.btnTilfoejCD.BackColor = System.Drawing.SystemColors.Control;
this.btnTilfoejCD.Location = new System.Drawing.Point(280, 136);
this.btnTilfoejCD.Name = "btnTilfoejCD";
this.btnTilfoejCD.TabIndex = 0;
this.btnTilfoejCD.Text = "Tilføj CD";
this.btnTilfoejCD.Click += new System.EventHandler(this.btnTilfoejCD_Click);
//
// tbAlbum
//
this.tbAlbum.Location = new System.Drawing.Point(160, 24);
this.tbAlbum.Name = "tbAlbum";
this.tbAlbum.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.tbAlbum.Size = new System.Drawing.Size(192, 20);
this.tbAlbum.TabIndex = 2;
this.tbAlbum.Text = "";
this.tbAlbum.TextChanged += new System.EventHandler(this.tbAlbum_TextChanged);
//
// label1
//
this.label1.Location = new System.Drawing.Point(24, 24);
this.label1.Name = "label1";
this.label1.TabIndex = 9;
this.label1.Text = "Indtast album";
//
// btnAfslut
//
this.btnAfslut.BackColor = System.Drawing.SystemColors.Control;
this.btnAfslut.Location = new System.Drawing.Point(696, 336);
this.btnAfslut.Name = "btnAfslut";
this.btnAfslut.TabIndex = 9;
this.btnAfslut.Text = "Afslut";
this.btnAfslut.Click += new System.EventHandler(this.btnAfslut_Click);
//
// label5
//
this.label5.BackColor = System.Drawing.SystemColors.Control;
this.label5.Location = new System.Drawing.Point(400, 16);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(100, 16);
this.label5.TabIndex = 13;
this.label5.Text = "CD\\'er i arkivet :";
//
// listBox1
//
this.listBox1.HorizontalScrollbar = true;
this.listBox1.Location = new System.Drawing.Point(400, 40);
this.listBox1.Name = "listBox1";
this.listBox1.ScrollAlwaysVisible = true;
this.listBox1.Size = new System.Drawing.Size(368, 264);
this.listBox1.TabIndex = 14;
this.listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.BackColor = System.Drawing.SystemColors.HotTrack;
this.ClientSize = new System.Drawing.Size(784, 366);
this.Controls.Add(this.listBox1);
this.Controls.Add(this.label5);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.btnAfslut);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.groupBox2.ResumeLayout(false);
this.groupBox1.ResumeLayout(false);
this.ResumeLayout(false);

}
#endregion


static void Main()
{
Application.Run(new Form1());
}

private void btnTilfoejCD_Click(object sender, System.EventArgs e)
{ //opretter trre variabler af typen string og sætter dem lig med de tre tekstbokse
string sAlbum = tbAlbum.Text;
string sGenre = tbGenre.Text;
string sKunstnerGruppe = tbKG.Text;

//kalder metoden tilfoejCD, der tager 3 argumenter(De tre tekststrenge brugeren skriver i tekstboksene)
cdarkiv.TilfoejCD(sAlbum, sGenre, sKunstnerGruppe);
//tilføjer de tre argumenter til listBoxen.
listBox1.Items.Add("Album : " + sAlbum + " Genre : " + sGenre + " KunstnerGruppe : " + sKunstnerGruppe);

}

private void tbAlbum_TextChanged(object sender, System.EventArgs e)
{

}

private void groupBox1_Enter(object sender, System.EventArgs e)
{

}

private void btnAfslut_Click(object sender, System.EventArgs e)
{ //lukker applikationen
Application.Exit();
}

private void tBSlet_TextChanged(object sender, System.EventArgs e)
{

}

private void btnSletCD_Click(object sender, System.EventArgs e)
{
//opretter trre variabler af typen string og sætter dem lig med de tre tekstbokse
string sAlbum = tbAlbum.Text;
string sGenre = tbGenre.Text;
string sKunstnerGruppe = tbKG.Text;

//converterer ID-nummeret der bliver indtastet til en streng og lægger den over i testboksen tbSlet
tbSlet.Text = Convert.ToString(CDarkiv.iId);

//kalder metoden FindCD der tager det indtastede ID nummer som argument
cdarkiv.FindCD(CDarkiv.iId);
//kalder metoden SletCD der tager det indtastede ID nummer som argument
cdarkiv.SletCD(CDarkiv.iId);
//fjerner det album som ID nummeret knytter sig til fra listBox'en
listBox1.Items.Remove("Album : " + sAlbum + " Genre : " + sGenre + " KunstnerGruppe : " + sKunstnerGruppe);

}

private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{

}


}
}

Jeg håber i kan hitte rundt i det, og at en af jer har en løsning :-)

En sweater er noget børn får på, når mor fryser.

Member of TAR



1 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
For det første ville det være rart hvis du gad bruge udviklerens [ pre ] [/ pre ] tags :)

Du bør genoverveje din struktur af programmet lige nu virker det temmelig rodet.

Ligenu har du det sådan at du har et CDArkiv som indeholder navnet på en CD, kunstneren, genren osv. Derudover indeholder CDArkivet en liste af andre CDArkiver, hvad er meningen med det?

Min ide er at du laver det om så du har en klasse der hedder CD, som så bare indeholder de variabler en CD nu har, men ikke en liste over andre CDer. Derudover kan du så have en CDArkiv klasse der kan indeholde en række CDer (eller også kan du bare bruge en af de indbyggede collection klasser).
------------------------------
Hvis du vil fortsætte med din gamle struktur så sker fejlen her:

Fold kodeboks ind/udKode 


Hilsen

Martin Dybdal (Dybber)
Blog: http://dybber.dk/blog/

[Redigeret d. 06/02-06 14:43:44 af Martin Dybdal]



t