» »

Visual Studio

Visual Studio

snooze77 ::

Evo js delam program za oceno v šoli in sem naletel na težavo. Program je namenjem shranjevanju ocen ki jih imaš v šoli in podobo.Ustvariš uporabnika in izbereš predmete ki jih želiš imeti. Pri tem se ime uporabnika geslo in predmeti, katere je izbral zapišejo vsak podatek v svojo datoteko. Podatki so ločeni s številkami(uporabu sm števec),npr. Mitja v novi vrstici je 1 potem je Jaka in za njem je 2. Zj pa naletim na težavo, ko se more uporabnik vpisat preveri prvo če je pravilno ime in geslo nato pa bi moralo pogledati katere predmete je obklukal ta uporabnik(zato sem uporabil števec, da sem ločil podatke ki spadajo skupaj). težava je v tem, da ne vem kako se skoči v novo vrstico, da bi prebral številko uporabnika in nato prebral predmete. Upam da ste me razumeli...malo sem zakompliciral. Tukaj pa je koda ki preverja podatke. Če imate kakšno drugo rešitev povejte. Hvala

private void Vnesi2_Click(object sender, EventArgs e)
{
using (StreamReader sr = File.OpenText("imena.txt"))
{
string vnos;
while ((vnos = sr.ReadLine()) != null)
{
if (ime.Text == vnos)
{
//TUKI BI MORALO SKOČITI V NOVO VRSTICO IN SI ZAPOVNITI ŠTEVILKO

using (StreamReader st = File.OpenText("gesla.txt"))
{
while ((vnos = sr.ReadLine()) != null)
{
if (geslo.Text == vnos)
{

using (StreamReader sz = File.OpenText("predmeti.txt"))
{
while ((vnos = sr.ReadLine()) != null)
{


}

}

}

}

}

}

}
}
}

nightrage ::

Takole prebereš vsako vrstico posebej:
int counter = 0;
string line;
System.IO.StreamReader file =  new System.IO.StreamReader("c:\\test.txt");
while((line = file.ReadLine()) != null) {
   Console.WriteLine (line);
   counter++;
}
file.Close();


takole prebereš celotno vsebino datoteke:
System.IO.StreamReader myFile = new System.IO.StreamReader("c:\\test.txt");
string myString = myFile.ReadToEnd();
myFile.Close();
Console.WriteLine(myString);

Zgodovina sprememb…

LeQuack ::

Jaz ti priporočam uporabo XML datotek za shranjevanje podatkov, če ne misliš uporabiti podatkovne baze. Poleg tega uporabi samo eno datoteko in vanjo shrani vse podatke.

V tvojem primeru bi bila datoteka z imenom datoteka.xml:
<?xml version="1.0" encoding='UTF-8'?>
<root>
	<ucenec>
		<uporabniskoIme>ucenec1</uporabniskoIme>
		<geslo>geslo1</geslo>
		<predmeti>
			<predmet>predmet1</predmet>
			<predmet>predmet3</predmet>
			<predmet>predmet4</predmet>
			<predmet>predmet5</predmet>
		</predmeti>
	</ucenec>
	<ucenec>
		<uporabniskoIme>ucenec2</uporabniskoIme>
		<geslo>geslo2</geslo>
		<predmeti>
			<predmet>predmet1</predmet>
			<predmet>predmet3</predmet>
		</predmeti>
	</ucenec>
	<ucenec>
		<uporabniskoIme>ucenec3</uporabniskoIme>
		<geslo>geslo3</geslo>
		<predmeti>
			<predmet>predmet6</predmet>
		</predmeti>
	</ucenec>
</root>


Kot vidiš so podatki lepo strukturirani, kar pomeni tudi precej lažjo berljivost za človeka. Za sam obranje iz te datoteke pa uporabi to metodo:
using System.Xml;

...

private void Vnesi2_Click(object sender, EventArgs e)
{
    XmlDocument doc = new XmlDocument();
    doc.Load("datoteka.xml");

    /*
     * Izberi ucenca glede na uporabnisko ime
     */
    XmlNode ucenecNode = doc.SelectSingleNode(String.Format("/root/ucenec[uporabniskoIme='{0}']", ime.Text));

    if(ucenecNode != null)
    {
        /*
         * Pridobi geslo in ga preveri
         */
        XmlNode gesloNode = ucenecNode.SelectSingleNode("geslo");

        if (gesloNode.InnerText.Equals(geslo.Text))
        {
            /*
             * Pridobi in izpiši seznam predmetov
             */
            XmlNodeList predmetiNodeList = ucenecNode.SelectNodes("predmeti/predmet");
            foreach (XmlNode predmetNode in predmetiNodeList)
            {
                System.Console.WriteLine("Predmet: " + predmetNode.InnerText);
            }
        }
    }
}
Quack !

Zgodovina sprememb…

  • spremenil: LeQuack ()

janezek67 ::

Da se tudi z XML.

Čeprav je rešitev verjetno le baza s kar nekaj datotekami. Najprej je tu šifrant predmetov, potem je tu šifrant šolskih programov in letnikov, potem je tudi šifrant, ki pove, kateri šolski program in letnik ima lahko katere predmete, potem je tu matična datoteka učencev, potem je tu naša datoteka izbranih predmetov našega učenca. Ta lahko predmete izbere, jih verjetno kasneje prekliče ... Ponavadi hoče nekdo še kakšno zgodovino. No, zadeva se na koncu lahko precej zaplete, vsekakor brez baze tu ne gre. Vsaj po mojem ne.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C# Branje iz datoteke

Oddelek: Programiranje
5972 (781) boogie_xlr
»

C# Program

Oddelek: Programiranje
393095 (2018) Spura
»

C# Problem

Oddelek: Programiranje
131245 (1041) joze67
»

[VB 2005] branje teksta

Oddelek: Programiranje
241642 (1310) mNeRo
»

[VB] Open

Oddelek: Programiranje
71524 (1363) Monster

Več podobnih tem