Sunteți pe pagina 1din 31

UNIVERSITATEA TEHNICĂ “GH.

ASACHI” IAŞI

PROIECT
Programare Windows

Proiect realizat de:


Huluţă Lucian-Adrian
Grupa 1407
CUPRINS:
I. Simularea functionarii unui ATM.

1. Formularea problemei (3-11)


2. Codul programului (12-31)

2
I. SIMULAREA FUNCTIONARII UNUI ATM

I.1 Formularea problemei:


Se cere dezvoltarea unui produs software care să controloze functionarea unui
ATM. Acest bancomat dispune de un dispozitiv magnetic pentru citirea cardului, o
consola pentru a interactiona cu clientul (tastatura si monitor), un dispozitiv de printare a
chitantei, un dipozitiv de eliberarea a banilor. ATM-ul va comunica cu banca, pentru a
valida pinul si pentru a confirma tranzactiile.
Bancomatul va putea servi doar cate un client pe rand. Clientul va fi rugat sa
introduca cardul in dispozitivul special al ATM-ului si PIN-ul pentru identificare. Aceste
informatii vor fi trimise la banca pentru validare, la fiecare tranzactie efectuata. Daca
PIN-ul este corect introdus, atunci clientul va putea efectua una sau mai multe tranzactii.
Cardul va ramane in ATM pana cand clientul nu va mai dori sa efectueze nici o
tranzactie.
ATM-ul trebuie sa asigure urmatoarele servicii clientului:
 Clientul poate retrage din contul corespunzator cardului, orice suma de bani.
Inainte de a elibera banii, trebuie primita confirmarea de la banca.
 Clientul poate sa ceara interogare de sold pentru contul corespunzator cardului
 Clientul poate face plati catre furnizori.
 Clientul poate sa ceara afisarea ultimelor 10 operatiuni.
 Clientul poate abandona o tranzactie in orice moment, in loc sa raspunda la o
intrebare din partea bancomatatului

ATM-ul va comunica fiecare tranzactie la banca si va obtine verificarea si


aprobarea din partea bancii. O tranzactie este considerata incheiata de banca din
momentul in care va fi aprobata
Daca banca determina ca PIN-ul introdus nu este corect, ATM-ul va afisa un
mesaj prin care clientul este rugat sa reintroduca PIN-ul inainte de a efectua orice
tranzactie. PIN-ul introdus incorect de 3 ori, va determina retinerea cardului in bancomat,
iar clientul va trebuie sa contacteze banca pentru al recupera.
In cazul in care tranzactia nu este efectuata (ex. PIN introdus gresit), ATM-ul va
afisa un mesaj cu problema aparuta, si il va intreba pe client daca doreste sa efectueze o
alta tranzactie.
Bancomatul va elibera o chitanta la solicitarea clientului, pentru fiecare tranzactie
efectuata cu succes, pe care va afisa : data si ora efectuarii tranzactiei, tipul tranzactiei, o
balanta a contului.

3
A. Modelarea Use Case
• Determină cum se pot obţine anumite rezultate folosind produsul ce trebuie creat,
fără a interesa ordinea.
• Prezintă informaţiile sub forma diagramelor Use Case şi a scenariilor asociate.
Diagrama Use Case descrie ce face un program sau subprogram dar nu precizează nimic
despre cum este realizată o funcţionalitate.

Relatii intre USE CASE-uri:


1. Intre actorul client si Use Case-urile SelecteazaLimba, IntroduceCard,
IntroducePin, si SelecteazaTranzactie exista o relatie de asociere, pentru a putea
exprima interactiunea (comunicarea) dintre client si operatiunile pe care acesta
trebuie sa le efectueze pentru a demara o tranzactie.

4
2. Intre actorul bancomat si Use Case-urile EliberareCard, AfiseazaMeniu,
VerificaPin, BlocareCard si VerificarePozitieCard exista o relatie de asociere,
pentru a putea exprima interactiunea intre obiectele pe care le uneste
(Bancomatul si functiile acestuia).
3. Intre Use Case-urile VerificaPozitieCard si IntroduceCard exista o relatie de tip
include, pentru a explica dependenta Use Case-ului IntroduceCard de functiile
Use Case-ul VerificaPozitieCard.
4. Intre Use Case-urile IntroducePin si AfiseazaMeniu exista o relatie de tip include,
pentru a explica dependenta Use Case-ului IntroducePin de functiile Use Case-ul
AfiseazaMeniu.
5. Intre Use Case-ul VerificaPin(E) si Use Case-urile PlatesteFurnizor,
AfiseazaOperatiuni, RetrageNumerar, InterogheazaSold(A,B,C,D) exista o relatie
de tip include pentru a explica dependenta dintre A, B, C, D si use case-ul E.
6. Intre Use Case-ul VerificaPin (A) si BlocareCard(B) exista o relatie de tip extend,
prin care use case-ul A controleaza daca B va fi executat sau nu.
7. Intre Use Case-ul AfiseazaInformatiiTranzactii (A) si EfectueazaTranzactii(B)
exista o relatie de tip extend, prin care use case-ul A controleaza daca B va fi
executat sau nu.
8. Intre Use Case-ul AfiseazaInformatiiTranzactii (A) si ElibereazaChitanta(B)
exista o relatie de tip extend, prin care use case-ul A controleaza daca B va fi
executat sau nu.
9. Intre Use Case-ul EfectueazaTranzactii (A) si VerificaPin(B) exista o relatie de
tip extend, prin care use case-ul A controleaza daca B va fi executat sau nu.
10. Intre Use Case-ul AfiseazaMeniu(A) siUse Case-urile InterogheazaSold,
RetrageNumerar, AfiseazaOperatiuni, PlatesteFurnizori (B1,B2,B3,B4) exista o
relatie de tip generalizare, in care case-urile derivate B1, B2, B3, B4 controleaza
ce se executa si ce se modifica din case-ul de baza.

Efectuarea Tranzactiilor:

Use Case-ul EfectueazaTranzactie incepe cu o sesiune de operatiuni, in care


clientul alege din Use Case-ul AfiseazaMeniu ce tip de tranzactie doreste sa
efectueze. El trebuie sa introduca o serie de date, pentru a putea efectua tranzactia.
Actorul Bancomat va trimite catre banca reprezentata de Use Case-ul VerificaPin,
informatiile legate de tranzactia selectata impreuna cu datele clientului (informatiile
din cardul clientului si PIN-ul introdus). Daca banca verifica informatiile( Use Case-
ul VerificaPin) si le confirma ca fiind corecte, atunci se executa Use Case-ul
EfectueazaTranzactie(PlatesteFurnizori, RetrageNumerar, InterogheazaSold) , iar
case-ul ElibereazaChitanta se va efectua si el. In cazul in care case-ul VerificarePin
nu confirma valabilitatea PIN-ului introdus, clientul este rugat sa reintroduca PIN-ul,
iar noile informatii impreuna cu tranzactia selectata sunt trimise spre verificare.
Cardul poate fi retras prin activarea case-ului BlocareCard, daca PIN-ul a fost
introdus gresit de 3 ori la rand.

5
B. Diagrama de clasa:
Diagrama de clase este folosită pentru a modela structura (viziunea statică asupra)
unui sistem. O astfel de diagramă conţine clase / interfeţe, obiecte şi relaţii care se
stabilesc între acestea.

Clasa ATM:
 Caracteristici:
- atribute: ID-ul, Adresa, Banca;
- metode: elibereaza chitanta, elibereaza bani;
 Atm-ul poate elibera bani si chitanta, daca a fost solicitata.

Clasa Tranzactie:
 Caracteristici:
- atribute: cont, pin;
- metode: tranzactie, retragere numerar, plata catre furnizori,
ultimele 10 tranzactii, interogare sold.
 Responsabilitati:

6
- Permite clientului sa-si aleaga tranzactia dorita;
- Efectueaza retragerea de numerar solicitata;
- Efectueaza platile catre furnizori;
- Memoreaza ultimele 10 operatiuni efectuate de client;
- Permite interogarea soldului.

Clasa Client:
 Caracteristici:
- atribute: cont, data_expirarii, nume, prenume, pin, suma;
- metode: client, getDate, get Prenume, getCont, getSuma,
getPin;

 Responsabilitati:
- Preia informatiile legate de contul clientului;
- Retine suma solicitata de client.

Clasa Meniu:
 Caracteristici:
- atribute: idLimba;
- metode: meniu, listeaza optiuni, getOptiuni;
 Responsabilitati:
- Afiseaza Meniul;
- Afiseaza lista cu otiunile posibile;
- Permite selectarea unei optiuni.

Clasa Verifica:
 Caracteristici:
- atribute: cont, pin;
- metode: verificare Pin, Verificare Card, verificare Suma.
 Responsabilitati:
- Verifica daca PIN-ul introdus este cel corect;
- Verifica daca suma de bani din cont.

Clasa Limba:
 Caracteristici:
- atribute: idLimba;
- metode: limba, get id limba.
 Responsabilitati:
- Permite selectarea limbii in care se va dori dialogarea cu ATM-
ul;
- Retine optiunea selectata.

7
C. Diagrama de stare
Diagrama de stare este folosită pentru a modela comportamentul unui singur
obiect. Diagrama de stări specifică o secvenţă de stări prin care trece un obiect de-a
lungul vieţii sale ca răspuns la evenimente împreună cu răspunsul la aceste evenimente.

8
D. Diagrama de activitati:
Diagramea de activitati scoate în evidenţă controlul execuţiei de la o activitate la
alta.

9
E. Diagrama de secventa:
Diagrama de secvenţă pune accentul pe aspectul temporal (ordonarea în timp a
mesajelor).
Mesajele trimise de la un obiect la altul sunt de tip sincron deoarece controlul
executiei revine la obiectul – “expeditor” dupa ce obiectul – “destinatar” isi va
termina executia.

10
F. Diagrama de colaborare:
Diagrama de colaborare este o diagramă de interacţiuni care pune accentul pe
organizarea structurală a obiectelor care participă la interacţiune.

11
I.2. CODUL PROGRAMULUI:

Clase:

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.OleDb;
using System.Data;
using System.Windows.Forms;

namespace Bancomat.Clases
{
class ATM
{
string ID;
string Adresa;
string Banca;
double SumaBani;

public ATM()
{
}
public ATM(string _ID, string _adresa, string _banca, double
_sumaBani)
{
this.ID = _ID;
this.Adresa = _adresa;
this.Banca = _banca;
this.SumaBani = _sumaBani;
}

public bool ElibreazaBani(double suma)


{
bool ok = true;
if (this.SumaBani > suma)
{
this.SumaBani -= suma;
}
else ok = false;
return ok;
}

public string ElibereazaChitanta(double suma)


{
string text = "*********************" + '\r' + '\n'
+ "BRD - Groupe Societe Generale " + '\r' +
'\n'
+ "*********************" + '\r' + '\n'
+ DateTime.Now + '\r' + '\n'
+ "Total Sold" + '\r' + '\n'
+ "Suma: RON" + suma.ToString() + '\r' + '\n'
+ "*********************" + '\r' + '\n'

12
+ " Va MULTUMIM " + '\r' + '\n'
+ "*********************"; ;

return text;
}

public void InregistreazaOperatiune(string operatiune, int


userId)
{
OleDbConnection connection = new OleDbConnection();

try
{
connection.ConnectionString =
Bancomat.Properties.Settings.Default.db1ConnectionString;
connection.Open();

OleDbCommand command = new OleDbCommand();


command.Connection = connection;
command.CommandText = "INSERT INTO operatiuni (userId,
operatiune) " +
"VALUES (" + userId + ", '" +
operatiune+ "')";
command.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
}

}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.OleDb;
using System.Windows.Forms;

namespace Bancomat.Clases
{
class Client
{
int ID;
string nume;
string prenume;
string cont;
string exp_date;
double suma;
int pin;

public Client()
{
}
public Client(string cont)
{

13
this.cont = cont;
}

public void getDate(string _cont, string _pin)


{
OleDbConnection connection = new OleDbConnection();

try
{
connection.ConnectionString =
Bancomat.Properties.Settings.Default.db1ConnectionString;
connection.Open();

OleDbCommand command = new OleDbCommand();


command.Connection = connection;
command.CommandText = "SELECT Id, Nume, Prenume, Cont,
ExpDate, PIN, Suma FROM users " +
"WHERE (Cont = '" + _cont + "')
AND (PIN = "
+ Convert.ToInt16(_pin) + ")";

OleDbDataReader dataReader;

dataReader = command.ExecuteReader();

while (dataReader.Read())
{
this.ID =
Convert.ToInt16(dataReader["Id"].ToString());
this.nume = dataReader["Nume"].ToString();
this.prenume = dataReader["Prenume"].ToString();
this.cont = dataReader["Cont"].ToString();
this.exp_date = dataReader["ExpDate"].ToString();
this.suma =
Convert.ToDouble(dataReader["Suma"].ToString());
this.pin =
Convert.ToInt16(dataReader["PIN"].ToString());
}
dataReader.Close();
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
}
public int getId()
{
return this.ID;
}
public string getNume()
{
return this.nume;
}
public string getPrenume()
{
return this.prenume;

14
}
public string getCont()
{
return this.cont;
}
public string getExpDate()
{
return this.exp_date;
}
public double getSuma()
{
return this.suma;
}
public int getPin()
{
return this.pin;
}
}
}
using System;
using System.Collections.Generic;
using System.Text;

namespace Bancomat.Clases
{
class Meniu
{
int idLimba;

public Meniu()
{
}

public void alegeLimba(int _idLimba)


{
this.idLimba = _idLimba;
}

public int getIdLimba()


{
return this.idLimba;
}
public void ListeazaOptiuni()
{
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
namespace Bancomat.Clases
{
class Tranzactie

15
{
string cont;
int pin;

public Tranzactie(string _cont, int _pin)


{
this.cont = _cont;
this.pin = _pin;
}
public string RetragereNumerar(double suma)
{
string chitanta;
try
{

OleDbConnection connection = new


OleDbConnection(Bancomat.Properties.Settings.Default.db1ConnectionStrin
g);
connection.Open();
string command = "UPDATE users SET Suma = Suma-" +
suma + " WHERE (Cont = '" +
this.cont + "') and (PIN = " + this.pin + ")";
OleDbCommand cmd = new OleDbCommand(command,
connection);
int rowsAfected = cmd.ExecuteNonQuery();

connection.Close();

}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
chitanta = "*********************" + '\r' + '\n'
+ "BRD - Groupe Societe Generale " + '\r' +
'\n'
+ "*********************" + '\r' + '\n'
+ DateTime.Now + '\r' + '\n'
+ "Retragere numerar"+ '\r' + '\n'
+ "Suma: RON " + suma.ToString() + '\r' + '\n'
+ "*********************" + '\r' + '\n'
+ " Va MULTUMIM " + '\r' + '\n'
+ "*********************";
return chitanta;

}
public string PlatesteFurnizori(double suma,string furnizor)
{
string chitanta;
OleDbConnection connection = new OleDbConnection();

try
{
connection.ConnectionString =
Bancomat.Properties.Settings.Default.db1ConnectionString;

16
connection.Open();

OleDbCommand command = new OleDbCommand();


command.Connection = connection;
command.CommandText = "UPDATE users SET Suma = Suma-" +
suma + " WHERE (Cont = '" +
this.cont +"')";
command.ExecuteNonQuery();
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
chitanta = "*********************" + '\r' + '\n'
+"BRD - Groupe Societe Generale " + '\r' + '\n'
+"*********************" + '\r' + '\n'
+DateTime.Now + '\r' + '\n'
+"Tranzactie " + furnizor + '\r' + '\n'
+"Suma: RON " + suma.ToString() + '\r' + '\n'
+"*********************" + '\r' + '\n'
+" Va MULTUMIM " + '\r' + '\n'
+"*********************";
return chitanta;

}
public void Ultimele10Operatiuni()
{
//TableAdapter cu DataSet implementat pe loc in Formul
SimulareATM, query-ul (interogarea SQL) fiind atasat pe DataSet.
}

public double InterogareSold()


{
double suma = 0;
OleDbConnection connection = new OleDbConnection();

try
{
connection.ConnectionString =
Bancomat.Properties.Settings.Default.db1ConnectionString;
connection.Open();

OleDbCommand command = new OleDbCommand();


command.Connection = connection;
command.CommandText = "SELECT Suma FROM users " +
"WHERE (Cont = '" + this.cont +
"') AND (PIN = "
+ this.pin + ")";

OleDbDataReader dataReader;

dataReader = command.ExecuteReader();

while (dataReader.Read())
{

17
suma =
Convert.ToDouble(dataReader["Suma"].ToString());
}
dataReader.Close();
connection.Close();

}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
return suma;
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.OleDb;
using System.Windows.Forms;

namespace Bancomat.Clases
{
class Verifica
{
string cont;
int pin;

public Verifica(string _cont, int _pin)


{
this.cont = _cont;
this.pin = _pin;
}

public bool Sold(double suma)


{
double sold=0;
OleDbConnection connection = new OleDbConnection();

try
{
connection.ConnectionString =
Bancomat.Properties.Settings.Default.db1ConnectionString;
connection.Open();

OleDbCommand command = new OleDbCommand();


command.Connection = connection;
command.CommandText = "SELECT Suma FROM users " +
"WHERE (Cont = '" + this.cont +
"') AND (PIN = "
+ this.pin + ")";

OleDbDataReader dataReader;

dataReader = command.ExecuteReader();

18
while (dataReader.Read())
{

sold =
Convert.ToDouble(dataReader["Suma"].ToString());
}
dataReader.Close();
connection.Close();

}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
return sold>suma;
}

}
}
Form: SimulareATM

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Bancomat.Clases;

namespace Bancomat
{
public partial class SimulareATM : Form
{
private string cont;
private int pin;
private int ID;
public SimulareATM()
{
InitializeComponent();
}

private void SimulareATM_Load(object sender, EventArgs e)


{

this.operatiuniTableAdapter.Fill(this.db1DataSet.operatiuni);

this.label4.Text = "";
this.LoginPanel.Visible = false;
this.MeniuPanel.Visible = false;
this.SoldPanel.Visible = false;
this.OperatiuniPanel.Visible = false;
this.FurnizoriPanel.Visible = false;
this.retragerePanel.Visible = false;
}

19
private void button4_Click(object sender, EventArgs e)
{

this.LimbaPanel.Visible = false;
this.LoginPanel.Visible = true;
}

private void button1_Click_1(object sender, EventArgs e)


{
Client client = new Client();
client.getDate(this.maskedTextBox1.Text,
this.textBox2.Text);

if (client.getCont() != null)
{
cont = client.getCont();
pin = client.getPin();
ID = client.getId();
this.LoginPanel.Visible = false;
this.MeniuPanel.Visible = true;
this.toolStripStatusLabel1.Text = "Conected";
}
else
{
MessageBox.Show("Incorrect login");
}

private void button5_Click(object sender, EventArgs e)


{
DialogResult result;
ATM atm = new ATM();
Tranzactie tranzactie = new Tranzactie(cont, pin);
double sold = tranzactie.InterogareSold();
atm.InregistreazaOperatiune("Interogare sold", ID);

result = MessageBox.Show("Doriti chitanta?",


"ATM",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
this.MeniuPanel.Visible = false;
this.SoldPanel.Visible = true;

if (result == DialogResult.No)
{
this.label3.Text = "Aveti in cont: " + sold + "RON";
}
else
{
this.label3.Text = "Aveti in cont: " + sold + "RON";
this.textBox1.Text = atm.ElibereazaChitanta(sold);
}

private void button9_Click(object sender, EventArgs e)


{
this.MeniuPanel.Visible = true;

20
this.SoldPanel.Visible = false;
}

private void button3_Click(object sender, EventArgs e)


{
ATM atm = new ATM();

atm.InregistreazaOperatiune("Ultimele 10 operatiuni", ID);

this.MeniuPanel.Visible = false;
this.OperatiuniPanel.Visible = true;

this.operatiuniTableAdapter.SelectTOP10(this.db1DataSet.operatiuni,
ID);
}

private void button10_Click(object sender, EventArgs e)


{
this.OperatiuniPanel.Visible = false;
this.MeniuPanel.Visible = true;
}

private void button6_Click(object sender, EventArgs e)


{
this.MeniuPanel.Visible = false;
this.retragerePanel.Visible = true;
}

private void button12_Click(object sender, EventArgs e)


{
this.textBox1.Text = "";
}

private void button13_Click(object sender, EventArgs e)


{
DialogResult result;
ATM atm = new ATM();
Verifica verifica = new Verifica(cont, pin);
Tranzactie tranzactie = new Tranzactie(cont, pin);
bool OK =
verifica.Sold(Convert.ToDouble(this.Org_textBox4.Text));
this.MeniuPanel.Visible = false;

string chitanta = "";


string furnizor = "ORANGE";
if (OK == true)
{
chitanta =
tranzactie.PlatesteFurnizori(Convert.ToDouble(this.Org_textBox4.Text),f
urnizor);
atm.InregistreazaOperatiune("Plati furnizori - " +
furnizor, ID);
}
else
{

21
MessageBox.Show("Insuficienti bani in cont", "ATM",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}

result = MessageBox.Show("Doriti chitanta?", "ATM",


MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (result == DialogResult.No)
{
}
else
{
this.textBox1.Text = chitanta;
}
this.MeniuPanel.Visible = true;
this.FurnizoriPanel.Visible = false;

private void button14_Click(object sender, EventArgs e)


{

DialogResult result;
ATM atm = new ATM();
Verifica verifica = new Verifica(cont, pin);
Tranzactie tranzactie = new Tranzactie(cont, pin);
bool OK =
verifica.Sold(Convert.ToDouble(this.Vod_textBox5.Text));
this.MeniuPanel.Visible = false;

string chitanta = "";


string furnizor = "VODAFONE";
if (OK)
{
chitanta =
tranzactie.PlatesteFurnizori(Convert.ToDouble(this.Vod_textBox5.Text),f
urnizor);
atm.InregistreazaOperatiune("Plati furnizori - " +
furnizor, ID);
}
else
{
MessageBox.Show("Insuficienti bani in cont", "ATM",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}

result = MessageBox.Show("Doriti chitanta?", "ATM",


MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (result == DialogResult.No)
{

}
else
{
this.textBox1.Text = chitanta;

22
}
this.MeniuPanel.Visible = true;
this.FurnizoriPanel.Visible = false;
}

private void button15_Click(object sender, EventArgs e)


{
DialogResult result;
ATM atm = new ATM();
Verifica verifica = new Verifica(cont, pin);
Tranzactie tranzactie = new Tranzactie(cont, pin);
bool OK =
verifica.Sold(Convert.ToDouble(this.Cosmo_textBox8.Text));
this.MeniuPanel.Visible = false;

string chitanta = "";


string furnizor = "COSMOTE";
if (OK)
{
chitanta =
tranzactie.PlatesteFurnizori(Convert.ToDouble(this.Cosmo_textBox8.Text)
, furnizor);
atm.InregistreazaOperatiune("Plati furnizori - " +
furnizor, ID);
}
else
{
MessageBox.Show("Insuficienti bani in cont", "ATM",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}

result = MessageBox.Show("Doriti chitanta?", "ATM",


MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (result == DialogResult.No)
{
}
else
{
this.textBox1.Text = chitanta;
}
this.MeniuPanel.Visible = true;
this.FurnizoriPanel.Visible = false;
}

private void button2_Click(object sender, EventArgs e)


{
this.MeniuPanel.Visible = false;
this.FurnizoriPanel.Visible = true;
}

private void button16_Click(object sender, EventArgs e)


{
this.FurnizoriPanel.Visible = false;
this.MeniuPanel.Visible = true;

23
}

private void button16_Click_1(object sender, EventArgs e)


{
DialogResult result;
ATM atm = new ATM();
Verifica verifica = new Verifica(cont, pin);
Tranzactie tranzactie = new Tranzactie(cont, pin);
string chitanta = "";
this.MeniuPanel.Visible = false;

bool OK =
verifica.Sold(Convert.ToDouble(this.textBox3.Text));
if (OK)
{
chitanta =
tranzactie.RetragereNumerar(Convert.ToDouble(this.textBox3.Text));
atm.InregistreazaOperatiune("Retragere numerar",
ID);
this.label4.Text = this.textBox3.Text;
}
else
{
MessageBox.Show("Insuficienti bani in cont", "ATM",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}

result = MessageBox.Show("Doriti chitanta?", "ATM",


MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (result == DialogResult.No)
{
}
else
{
this.textBox1.Text = chitanta;
}
this.label4.Visible = true;
this.MeniuPanel.Visible = true;
this.retragerePanel.Visible = false;
}

private void button11_Click(object sender, EventArgs e)


{
this.label4.Text = "";
}
}
}
FORM: EditareUtilizatori

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;

24
using System.Windows.Forms;

namespace Bancomat
{
public partial class EditareUtilizatori : Form
{
public EditareUtilizatori()
{
InitializeComponent();
}

private void usersBindingNavigatorSaveItem_Click(object sender,


EventArgs e)
{
this.Validate();
this.usersBindingSource.EndEdit();
this.usersTableAdapter.Update(this.db1DataSet.users);

private void EditareUtilizatori_Load(object sender, EventArgs


e)
{
this.usersTableAdapter.Fill(this.db1DataSet.users);

private void fillByToolStripButton_Click(object sender,


EventArgs e)
{
try
{
this.usersTableAdapter.FillBy(this.db1DataSet.users);
}
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}

}
}
}
Form: Inregistrare

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace Bancomat
{
public partial class Inregistrare : Form

25
{
public Inregistrare()
{
InitializeComponent();
}
private bool check()
{
bool ret = true;
if (this.textBox1.Text.Length == 0 ||
this.textBox2.Text.Length == 0 ||
this.maskedTextBox1.Text.Length == 0 ||
this.textBox4.Text.Length == 0 ) ret = false;
return ret;
}
private void button1_Click(object sender, EventArgs e)
{
if (!check())
{
MessageBox.Show("Completati toate campurile");
}
else
{
int nr;
OleDbConnection scon = new
OleDbConnection(Bancomat.Properties.Settings.Default.db1ConnectionStrin
g);
scon.Open();
string scommand = "SELECT Count(Cont) FROM users WHERE
Cont = '" + this.maskedTextBox1.Text + "'";
OleDbCommand scmd = new OleDbCommand(scommand, scon);
nr = (int)scmd.ExecuteScalar();
scon.Close();

if (nr != 0)
{
MessageBox.Show("Exista acest cont!", "ATM",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
this.textBox1.Clear();
this.textBox2.Clear();
this.textBox3.Clear();
this.maskedTextBox1.Clear();
this.textBox4.Clear();
this.toolStripStatusLabel1.Text = "Introduceti
datele";
this.toolStripStatusLabel1.ForeColor =
System.Drawing.Color.Blue;
}
else
{

OleDbConnection con = new


OleDbConnection(Bancomat.Properties.Settings.Default.db1ConnectionStrin
g);
con.Open();
string command = "INSERT INTO users (Nume, Prenume,
Cont, PIN, Suma) VALUES ('"
+ this.textBox1.Text + "','"

26
+ this.textBox2.Text + "','"
+ this.maskedTextBox1.Text + "','"
+ this.textBox4.Text + "','"
+ this.textBox3.Text + "')";
OleDbCommand cmd = new OleDbCommand(command, con);
cmd.ExecuteNonQuery();
con.Close();
this.toolStripStatusLabel1.Text = "Utlizatorul a
fost adaugat cu succes";
this.toolStripStatusLabel1.ForeColor =
System.Drawing.Color.Red;
}
}
}

private void button2_Click_1(object sender, EventArgs e)


{
this.textBox1.Clear();
this.textBox2.Clear();
this.textBox3.Clear();
this.maskedTextBox1.Clear();
this.textBox4.Clear();
this.toolStripStatusLabel1.Text = "Introduceti datele";
this.toolStripStatusLabel1.ForeColor =
System.Drawing.Color.Blue;
}

private void textBox1_TextChanged(object sender, EventArgs e)


{

}
}
FORM: Main

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Bancomat.Clases;

namespace Bancomat
{
public partial class Main : Form
{
public Main()
{
InitializeComponent();
}

private void exitToolStripMenuItem_Click(object sender,


EventArgs e)

27
{
Close();
}

private void simulareATMToolStripMenuItem_Click(object sender,


EventArgs e)
{
SimulareATM sim = new SimulareATM();
sim.MdiParent = this;
sim.Show();

private void
inregistrareUtilizatorToolStripMenuItem_Click_1(object sender,
EventArgs e)
{
Inregistrare inreg = new Inregistrare();
inreg.MdiParent = this;
inreg.Show();
}

private void editareUtilizatoriToolStripMenuItem_Click_1(object


sender, EventArgs e)
{
EditareUtilizatori edit = new EditareUtilizatori();
edit.MdiParent = this;
edit.Show();
}

private void utilizatorToolStripMenuItem_Click_1(object sender,


EventArgs e)
{
OperatiuniUtilizator operUtil = new OperatiuniUtilizator();
operUtil.MdiParent = this;
operUtil.Show();
}

private void toateOperatiunileToolStripMenuItem_Click_1(object


sender, EventArgs e)
{
ToateOperatiunile allOper = new ToateOperatiunile();
allOper.MdiParent = this;
allOper.Show();
}
}
}
using System;
using System.Collections.Generic;
using System.Text;

namespace Bancomat.Clases
{
class Meniu
{
int idLimba;

28
public Meniu()
{
}

public void alegeLimba(int _idLimba)


{
this.idLimba = _idLimba;
}

public int getIdLimba()


{
return this.idLimba;
}
public void ListeazaOptiuni()
{
}
}
}
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Bancomat
{
public partial class OperatiuniUtilizator : Form
{
public OperatiuniUtilizator()
{
InitializeComponent();
}

private void OperatiuniUtilizator_Load(object sender, EventArgs


e)
{
this.usersTableAdapter.Fill(this.db1DataSet.users);

this.operatiuniTableAdapter.Fill(this.db1DataSet.operatiuni);

private void fillByUserIDToolStripButton_Click(object sender,


EventArgs e)
{
try
{

this.operatiuniTableAdapter.FillByUserID(this.db1DataSet.operatiuni,
new

29
System.Nullable<int>(((int)(System.Convert.ChangeType(userIdToolStripTe
xtBox.Text, typeof(int))))));

}
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}

private void fillToolStripButton_Click(object sender, EventArgs


e)
{
try
{
this.usersTableAdapter.Fill(this.db1DataSet.users);
}
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}

}
}
}
FORM: ToateOperatiuni

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

namespace Bancomat
{
public partial class ToateOperatiunile : Form
{
public ToateOperatiunile()
{
InitializeComponent();
}

private void ToateOperatiunile_Load(object sender, EventArgs e)


{

this.operatiuniTableAdapter.Fill(this.db1DataSet.operatiuni);

}
}
}
FORM: VizualizareUtilizatori

using System;

30
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Bancomat
{
public partial class Vizualizare : Form
{
public Vizualizare()
{
InitializeComponent();
}

private void Vizualizare_Load(object sender, EventArgs e)


{
this.usersTableAdapter.Fill(this.db1DataSet.users);

}
}
}

31

S-ar putea să vă placă și