Programmering 2
Programmering 2
Hej, jag håller på med en uppgift som heter Guldkortet i C#. Programmet ska läsa in två stycken textfiler från en server och sedan separera dom. Efter det så ska programmet jämföra min klient med en server och se vad som stämmer överens. Beroende på vad som stämmer överens ska programmet visa ett meddelande. Problemet jag har är att det enda meddelandet som kommer upp är det meddelandet i ELSE inuti: private void Meddelande(string receivedUserNr, string receivedCardNr, TcpClient klient). Hur jag ska åtgärda det vet jag inte, känns som jag missar något väldigt tydligt. Så jag undrar om det finns någon vänlig själ som skulle kunna hjälpa mig. Tack på förhand.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;
namespace GuldKortet2222
{
public partial class Form1 : Form
{
private TcpListener lyssnare;
private int port = 12345;
private string meddelandeSträng;
private List<Kund> kundLista = new List<Kund>();
private List<Kort> kortLista = new List<Kort>();
private List<string> läslista = new List<string>();
public Form1()
{
InitializeComponent();
}
private void StartaServer_Click(object sender, EventArgs e)
{
StartServer();
StartaMottagning();
StartaServer.Enabled = false;
}
private void LoadUser_Click(object sender, EventArgs e)
{
kundLista.Clear();
DelaKund();
}
private void LoadCard_Click(object sender, EventArgs e)
{
kortLista.Clear();
DelaKort();
}
private void StartServer()
{
try
{
lyssnare = new TcpListener(IPAddress.Any, port);
lyssnare.Start();
StartaServer.Text = "Online";
StartaServer.BackColor = Color.Green;
}
catch (Exception error)
{
MessageBox.Show(error.Message, Text);
return;
}
}
private async void StartaMottagning()
{
try
{
TcpClient klient = await lyssnare.AcceptTcpClientAsync();
MessageBox.Show("Connected");
StartaLäsning(klient);
}
catch (Exception error)
{
MessageBox.Show(error.Message);
}
}
private async void StartaLäsning(TcpClient klient)
{
try
{
byte[] buffert = new byte[1024];
int n = await klient.GetStream().ReadAsync(buffert, 0, buffert.Length);
meddelandeSträng = Encoding.Default.GetString(buffert, 0, n);
string[] temp = meddelandeSträng.Split('-');
string receivedUserNr = temp[0];
string receivedCardNr = temp[1];
Meddelande(receivedUserNr, receivedCardNr, klient);
StartaLäsning(klient);
}
catch (Exception error)
{
MessageBox.Show(error.Message);
}
return;
}
private async void StartaSändning(string message, TcpClient klient)
{
byte[] bytes = Encoding.Unicode.GetBytes(message);
try
{
await klient.GetStream().WriteAsync(bytes, 0, bytes.Length);
}
catch (Exception error)
{
MessageBox.Show(error.Message);
}
}
private void DelaKort()
{
List<string> itemSaver = new List<string>();
if (File.Exists("kortlista.txt"))
{
StreamReader reader = new StreamReader("kortlista.txt", Encoding.UTF8, false);
string item = "";
while ((item = reader.ReadLine()) != null)
{
itemSaver.Add(item);
}
foreach (string a in itemSaver)
{
string[] vektor = a.Split(new string[] { "###" }, StringSplitOptions.None);
string kortNummer = vektor[0];
string typ = vektor[1];
Kort kort;
switch (vektor[1])
{
case "Dunderkatt":
kort = new Dunderkatt(kortNummer, typ);
kortLista.Add(kort);
break;
case "Överpanda":
kort = new Överpanda(kortNummer, typ);
kortLista.Add(kort);
break;
case "Kristallhäst":
kortLista.Add(kort);
break;
case "Eldtomat":
kort = new Eldtomat(kortNummer, typ);
kortLista.Add(kort);
break;
default:
MessageBox.Show("faf");
break;
}
}
reader.Close();
}
}
public void DelaKund()
{
List<string> itemSaver = new List<string>();
if (File.Exists("kundlista.txt"))
{
StreamReader kundReader = new StreamReader("kundlista.txt", Encoding.UTF8, false);
string item = "";
while ((item = kundReader.ReadLine()) != null)
{
itemSaver.Add(item);
}
foreach (string a in itemSaver)
{
string[] vektor = a.Split(new string[] { "###" }, StringSplitOptions.None);
string kundNummer = vektor[0];
string Namn = vektor[1];
string stad = vektor[2];
}
kundReader.Close();
}
}
private void Meddelande(string receivedUserNr, string receivedCardNr, TcpClient klient)
{
DelaKort();
DelaKund();
Kund Användare = Kund.Info(receivedUserNr, kundLista);
Kort vinstKort = Kort.Info(receivedCardNr, kortLista);
if (Kund.KollaNr(receivedUserNr, kundLista))
{
if (Kort.KollaNmr(receivedCardNr, kortLista))
{
StartaSändning("Grattis!" + Användare + "Du har vunnit ett" + vinstKort + "Du kan hämta det i din närmsta butik i ", klient);
}
else
{
StartaSändning("Ingen vinst tyvärr" + Användare, klient);
}
}
else
{
if (Kort.KollaNmr(receivedCardNr, kortLista))
{
StartaSändning("Användarnamnet existerar tyvärr inte, men du vann ett " + vinstKort, klient);
}
else
{
StartaSändning("Användarnummret finns tyvärr inte du fick inte någon vinst heller tyvärr.", klient);
}
}
}
}
public class Kund
{
public string nummer;
public string namn;
public string stad;
public Kund(string inNummer, string inNamn, string inStad)
{
nummer = inNummer;
namn = inNamn;
stad = inStad;
}
public static bool KollaNr(string d, List<Kund> kunder)
{
foreach (Kund kund in kunder)
{
if (d == kund.nummer)
{
return true;
}
}
return false;
}
public static Kund Info(string s, List<Kund> kunder)
{
foreach (Kund kund in kunder)
{
if (s == kund.nummer)
{
return kund;
}
}
return null;
}
public override string ToString()
{
return "Namn: " + namn + "stad: " + stad + nummer;
}
}
public class Kort
{
protected string nummer;
public string typ;
public Kort(string inNummer, string inTyp)
{
nummer = inNummer;
typ = inTyp;
}
public static bool KollaNmr(string s, List<Kort> korten)
{
foreach (Kort kort in korten)
{
if (s == kort.nummer)
{
return true;
}
}
return false;
}
public static Kort Info(string s, List<Kort> korten)
{
foreach (Kort kort in korten)
{
if (s == kort.nummer)
{
return kort;
}
}
}
return null;
}
}
public class Dunderkatt : Kort
{
public Dunderkatt(string inNummer, string inTyp) : base(inNummer, inTyp)
{
}
}
public class Kristallhäst : Kort
{
public Kristallhäst(string inNummer, string inTyp) : base(inNummer, inTyp)
{
}
}
public class Överpanda : Kort
{
public Överpanda(string inNummer, string inTyp) : base(inNummer, inTyp)
{
}
}
public class Eldtomat : Kort
{
public Eldtomat(string inNummer, string inTyp) : base(inNummer, inTyp)
{
}
}
}