Laden...

Forenbeiträge von ninochka Ingesamt 9 Beiträge

05.06.2013 - 23:51 Uhr

Hallo,

ich schreibe ein kleines Programm (Geldautomat) und soll prüfen, ob der Nutzer Pin richtig eingegeben hat (durch TextBox). Pin ist in einer Datenbank gespeichert. Der Nutzer hat nur 3 Versuche, wenn er 3 mal den Pin falsch eingegeben hat, wird das Programm geschlossen, ansonst kann er weiter arbeiten.

Hier ist die Bedingung:

bool correctPin = false;
                int versuch = 3;

                while(versuch > 0 && !correctPin)
                {
                    if (correctPin && (account.AccountNumber == accountDB) && (account.Pin == pinDB))
                    {
                        MessageBox.Show("Welcome!");
                        account.AccountNumber = accountDB;

                        WelcomeForm welcome = new WelcomeForm(account, customer, bank);
                        welcome.Show();
                        this.Hide();
                    }
                    else 
                    {
                        MessageBox.Show("Falscher Pin. " 
                            + --versuch + " verbleibende Versuche");
                    }
                }

                if (!correctPin)
                {
                    Application.Exit();
                }

Mein Problem ist, dass wenn der Nutzer ein mal den Pin falsch eingegeben hat, wird MessageBox angezeigt und dann noch mal MessageBox, und ich habe keine Möglichkeit den Pin wieder einzugeben. Kann jemand Tipp geben, wie ich nach dem ersten Versuch noch zweites Mal Pin eingeben kann, also damit TextBox angezeigt wird.

Danke!

04.06.2013 - 14:04 Uhr

Hallo!

Habe in zwei Wochen ein Vorstellungsgespräch in einem Unternehmen wegen der Bachelorarbeit, Bereich Softwareentwicklung (Programmiersprache C#).

Ich weiß nicht wie das ganzes läuft und habe eine riesige Angst.

Werden spezifische Fragen im Bereich Programmierung gestellt, oder nur allgemeine Fragen? Das Thema ist noch unklar, da ich im Anschreiben geschrieben habe, dass ich mich für ein Thema im Bereich Softwareentwicklung interessiere.

Kann mir jemand Tipps geben?

Danke!

27.09.2012 - 20:32 Uhr

Ich wollte nur versuchen durch Eingabe von Werten in Textbox eine XML Datei erzeugen und danach die Objekte mit Werten bestücken.

Für Lesen habe ich mit XmlDocument gemacht, alles funktioniert perfekt, nur beim Schreiben habe ich Problemen.

Aber ich versuche mit XmlSerializer noch.

Und kann mir jemand sagen was ist besser sowohl für Schreiben als auch für Lesen. Bisher habe ich mit XmlReader und XmlDocument Dateien gelesen, aber für Schreiben mit XmlWriter und XmlDocument sieht Code unübersichtlich.

27.09.2012 - 20:04 Uhr

Das :

 XmlElement type = xmlWriter.CreateElement("Type");
  type.InnerText = "BentTube";

habe ich schon verstanden, aber wie kann ich durch textbox eine richtige XML-Datei erstellen? In meinem Fall wird Xml-Datei falsch geschrieben.

27.09.2012 - 12:10 Uhr

Aber noch eine Frage, wie muss ich schreiben, damit die Werte richtig geschrieben werden wie z.B. so:

<?xml version="1.0" encoding="utf-8"?>
<TubeCut>
  <Part>
    <Parameter>
      <Type>BentTube</Type>
      <Diameter>30</Diameter>
      <WallThickness>20</WallThickness>
      <BentRadius>59</BentRadius>
    </Parameter>
  </Part>
</TubeCut>

Aber bei mir wird so was geschrieben:

<?xml version="1.0" encoding="utf-8"?>
<TubeCut>
  <Part>
    <Parameter>
      <Type>BentTube</Type>
      <Diameter xmlns="30">0</Diameter>
      <WallThickness xmlns="20">0</WallThickness>
      <BentRadius xmlns="59">0</BentRadius>
    </Parameter>
  </Part>
</TubeCut>
27.09.2012 - 12:00 Uhr

Lennart danke schön.

27.09.2012 - 11:47 Uhr

Wenn ich falsches Forum gewählt habe, bitte verschieben.

27.09.2012 - 11:31 Uhr

Hallo,
hier ein Problem. Ich möchte eine Xml-datei mit TextBox erstellen, die so aussehen soll:

<?xml version="1.0" encoding="utf-8"?>
<TubeCut>
  <Part>
    <Parameter>
      <Type>BentTube</Type>
      <Diameter>30</Diameter>
      <WallThickness>20</WallThickness>
      <BentRadius>59</BentRadius>
    </Parameter>
  </Part>
</TubeCut>

Aber beim Schreiben wird so was erstellt:

<?xml version="1.0" encoding="utf-8"?>
<TubeCut>
  <Part>
    <Parameter>
      <Type>BentTube</Type>
      <Diameter xmlns="30">0</Diameter>
      <WallThickness xmlns="20">0</WallThickness>
      <BentRadius xmlns="59">0</BentRadius>
    </Parameter>
  </Part>
</TubeCut>

Weiß nicht wo das Problem liegt. Warum werden die Werte in falscher Position geschrieben und überall steht 0?
Hier ist für schreiben:

public partial class Form1 : Form
    {
        private const String TUBE_CUT = "TubeCut";
        private const String PART = "Part";
        private const String PARAMETER = "Parameter";

        /// <summary>
        /// Parameter of a tube
        /// </summary>
        private const String TYPE = "Type";
        private const String DIAMETER = "Diameter";
        private const String BENT_RADIUS = "BentRadius";
        private const String WALL_THICKNESS = "WallThickness";
        private const String EDGE_RADIUS = "EdgeRadius";
        private const String WIDTH = "Width";

        /// <summary>
        /// Types of a tube
        /// </summary>
        private const String BENT_TUBE = "BentTube";
        private const String ROUND_TUBE = "RoundTube";
        private const String RECTANGULAR_TUBE = "RectangularTube";
        private const String OVAL_TUBE = "OvalTube";

        private BentTube bent;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            XmlDocument xmlWriter = new XmlDocument(); ;
            BentTube bent = new BentTube();
            XmlDeclaration xmlDec = xmlWriter.CreateXmlDeclaration("1.0", "utf-8", null);
            xmlWriter.AppendChild(xmlDec);

            XmlElement root = xmlWriter.CreateElement(TUBE_CUT);
            xmlWriter.InsertBefore(xmlDec, xmlWriter.DocumentElement);
            xmlWriter.AppendChild(root);

            XmlElement part = xmlWriter.CreateElement(PART);
            root.AppendChild(part);

            XmlElement parameter = xmlWriter.CreateElement(PARAMETER);
            part.AppendChild(parameter);

            XmlElement type = xmlWriter.CreateElement(TYPE);
            XmlElement diameter = xmlWriter.CreateElement(DIAMETER, diameterText.Text);
            XmlElement wall = xmlWriter.CreateElement(WALL_THICKNESS, wallText.Text);
            XmlElement radius = xmlWriter.CreateElement(BENT_RADIUS, radiusText.Text);

            //XmlText tType = xmlWriter.CreateTextNode(bent.Type.ToString());
            //XmlText tDiameter = xmlWriter.CreateTextNode(bent.Diameter.ToString());
            //XmlText tWall = xmlWriter.CreateTextNode(bent.WallThickness.ToString());
            //XmlText tRadius = xmlWriter.CreateTextNode(bent.BentRadius.ToString());

            type.AppendChild(xmlWriter.CreateTextNode(bent.Type.ToString()));
            diameter.AppendChild(xmlWriter.CreateTextNode(bent.Diameter.ToString()));
            wall.AppendChild(xmlWriter.CreateTextNode(bent.WallThickness.ToString()));
            radius.AppendChild(xmlWriter.CreateTextNode(bent.BentRadius.ToString()));

            parameter.AppendChild(type);
            parameter.AppendChild(diameter);
            parameter.AppendChild(wall);
            parameter.AppendChild(radius);

            xmlWriter.Save(@"D:\test.xml");
        }
    }

Klasse BentTube:


[XmlRoot]
    public class BentTube : Tube
    {
        #region Private Fields

        private double m_bentRadius;

        #endregion

        #region Constructor

        /// <summary>
        /// Constructor
        /// </summary>
        public BentTube()
            : base(0.0, 0.0)
        {
            m_bentRadius = 0.0;
            base.Type = Types.TubeType.BentTube;
        }

        public BentTube(double diameter, double wallThickness, double bentRadius)
            : base(diameter, wallThickness)
        {
            m_bentRadius = bentRadius;
            base.Type = Types.TubeType.BentTube;
        }

        #endregion

        #region Accessors

        [XmlElement("BentRadius")]
        public double BentRadius
        {
            get { return m_bentRadius; }
            set { m_bentRadius = value; }
        }

        #endregion
    }

Basisklasse:

[XmlRoot]
    public class Tube
    {

        #region Private Fields

        private TubeType m_tubeType;

        private double m_wallThickness;
        private double m_diameter;

        #endregion

        #region Constructors

        /// <summary>
        /// Constructor
        /// </summary>
        public Tube()
        {
            m_tubeType = TubeType.Not_Specified;
            m_diameter = 0.0;
            m_wallThickness = 0.0;
        }

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="type">Tube typ</param>
        public Tube(TubeType type)
        {
            m_tubeType = type;
            m_diameter = 0.0;
            m_wallThickness = 0.0;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="wallThickness">Wall thickness of the tube</param>
        /// <param name="diameter">Diameter in the tube</param>
        public Tube(double wallThickness, double diameter)
        {
            m_tubeType = TubeType.Not_Specified;
            m_wallThickness = wallThickness;
            m_diameter = diameter;
        }

        #endregion

        #region Accessors

        [XmlElement("Type")]
        public TubeType Type
        {
            get { return m_tubeType; }
            set { m_tubeType = value; }
        }

        [XmlElement]
        public double WallThickness
        {
            get { return m_wallThickness; }
            set
            {
                if (value > 0)
                {
                    m_wallThickness = value;
                }
                else throw new ArgumentException("Value must be > 0", "Wall Thickness");
            }
        }

        [XmlElement]
        public double Diameter
        {
            get { return m_diameter; }
            set
            {
                if (value > 0)
                {
                    m_diameter = value;
                }
                else throw new ArgumentException("Value must be > 0", "Diameter");
            }
        }

        #endregion

    }

Was mache ich falsch? Die Werte werden geschrieben, aber nicht in richtigem Platz.

Ich bin für jede Hilfe dankbar.

16.09.2012 - 13:06 Uhr

Hallo an Allen,

ich bin Anfängerin in C# und möchte eine XML-Datei lesen und wieder in Objekt speichern. Unter Objektspeichern meine ich, dass wenn z.B Element Diameter gelesen wird, werden die Daten in variable diameter gespeichert. Kann mir vielleicht jemand ein paar Beispiele dazu bringen, wie man gelesene Daten wieder speichern kann.

XML-Datei sieht so aus:

<?xml version="1.0" encoding="utf-8"?>
<TubeCut xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Part>
    <BentTube>
      <Type>BentTube</Type>
      <Diameter>125</Diameter>
      <WallThickness>12.523</WallThickness>
      <BentRadius>569</BentRadius>
    </BentTube>
  </Part>
</TubeCut>

Hier ist die Klasse für Lesen:

public class LoadFromXML
    {

        private const string DIAMETER = "Diameter";
        private const string PART = "Part";
        private const string PARAMETER = "BentTube";
        private const string TYPE = "Type";

        public LoadFromXML(string filePath)
        {

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(filePath);

            foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes)
            {
                if (node.Name == PART)
                    getParts(node);
            }
        }

        private Tube getParts(XmlNode node)
        {
            Tube tube = new Tube();
            
            if (node.HasChildNodes)
                foreach (XmlNode n in node.ChildNodes)
                {
                    if (n.Name == PARAMETER)
                        tube.add(getParameter(n));
                }

            return tube;
        }

        private BentTube getParameter(XmlNode n)
        {
            BentTube bent = new BentTube();

            if (n.HasChildNodes)
                foreach (XmlNode node in n.ChildNodes)
                {
                    if (node.Name == TYPE)
                        bent.addParameter(getType(n));
                }

            return bent;
        }

        private TubeType getType(XmlNode n)
        {
            TubeType type = new TubeType();
            return type;
        }
    }

Basisklasse:

    [XmlRoot("Tube")]
    public class Tube
    {

        #region Private Fields

        List<BentTube> bents = new List<BentTube>();

        private TubeType m_tubeType;

        private double m_wallThickness;
        private double m_diameter;

        private PointSet m_leftInnerContour;
        private PointSet m_leftOuterContour;
        private PointSet m_rightInnerContour;
        private PointSet m_rightOuterContour;

        #endregion

        #region Constructors

        /// <summary>
        /// Constructor
        /// </summary>
        public Tube()
        {
            m_tubeType = TubeType.Not_Specified;
            m_diameter = 0.0;
            m_wallThickness = 0.0;
        }

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="type">Tube typ</param>
        public Tube(TubeType type)
        {
            m_tubeType = type;
            m_diameter = 0.0;
            m_wallThickness = 0.0;
        }
        
        /// <summary>
        /// 
        /// </summary>
        /// <param name="wallThickness">Wall thickness of the tube</param>
        /// <param name="diameter">Diameter in the tube</param>
        public Tube(double wallThickness, double diameter)
        {
            m_tubeType = TubeType.Not_Specified;
            m_wallThickness = wallThickness;
            m_diameter = diameter;
        }

        #endregion

        #region Accessors

        [XmlElement("Type")]
        public TubeType Type
        {
            get { return m_tubeType; }
            set { m_tubeType = value; }
        }

        [XmlElement("Diameter")]
        public double Diamater
        {
            get { return m_diameter; }
            set
            {
                if (value > 0)
                {
                    m_diameter = value;
                }
                else throw new ArgumentException("Value must be > 0", "Diameter");
            }
        }

        [XmlElement("WallThickness")]
        public double WallThickness
        {
            get { return m_wallThickness; }
            set
            {
                if (value > 0)
                {
                    m_wallThickness = value;
                }
                else throw new ArgumentException("Value must be > 0", "Wall Thickness");
            }
        }

        [XmlElement("LeftInnerContour")]
        public PointSet LeftInnerContour
        {
            get { return m_leftInnerContour; }
            set { m_leftInnerContour = value; }
        }

        [XmlElement("LeftOuterContour")]
        public PointSet LeftOuterContour
        {
            get { return m_leftOuterContour; }
            set { m_leftOuterContour = value; }
        }

        [XmlElement("RightInnerContour")]
        public PointSet RightInnerContour
        {
            get { return m_rightInnerContour; }
            set { m_rightInnerContour = value; }
        }

        [XmlElement("RightOuterContour")]
        public PointSet RightOuterContour
        {
            get { return m_rightOuterContour; }
            set { m_rightOuterContour = value; }
        }

        #endregion

        public void add(params BentTube[] bent)
        {
            this.bents.AddRange(bent);
        }
    }

Vererbteklasse

[XmlRoot("Parameter")]
    public class BentTube : Tube
    {
        #region Private Fields

        private double m_bentRadius;

        List<TubeType> type = new List<TubeType>();

        #endregion

        #region Constructor

        /// <summary>
        /// Constructor
        /// </summary>
        public BentTube()
            : base(0.0, 0.0)
        {
            m_bentRadius = 0.0;
            base.Type = Types.TubeType.BentTube;
        }

        public BentTube(double diameter, double wallThickness, double bentRadius)
            : base(diameter, wallThickness)
        {
            m_bentRadius = bentRadius;
            base.Type = Types.TubeType.BentTube;
        }

        #endregion

        #region Accessors

        [XmlElement("BentRadius")]
        public double BentRadius
        {
            get { return m_bentRadius; }
            set { m_bentRadius = value; }
        }

        #endregion

        
        public  void addParameter(params TubeType[] types)
        {
            this.type.AddRange(types);
        }
    }

Enum:

 public enum TubeType
    {
        [XmlEnum(Name = "Not_Specified")]
        Not_Specified,
        [XmlEnum(Name = "RoundTube")]
        RoundTube,
        [XmlEnum(Name = "BentTube")]
        BentTube,
        [XmlEnum(Name = "RectangularTube")]
        RectangularTube,
        [XmlEnum(Name = "OvalTube")]
        OvalTube,
        [XmlEnum(Name = "Dome")]
        Dome
    }

Ich bin für jede Hilfe dankbar.