Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

31
UNIVERSITATEA TEHNICĂ “GH. ASACHI” IAŞI PROIECT Programare Windows Proiect realizat de: Huluţă Lucian-Adrian Grupa 1407

Transcript of Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

Page 1: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

UNIVERSITATEA TEHNICĂ “GH. ASACHI” IAŞI

PROIECT

Programare Windows

Proiect realizat de:

Huluţă Lucian-Adrian

Grupa 1407

Page 2: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

2

CUPRINS:

I. Simularea functionarii unui ATM.

1. Formularea problemei (3-11)

2. Codul programului (12-31)

Page 3: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

3

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.

Page 4: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

4

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.

Page 5: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

5

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.

Page 6: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

6

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:

Page 7: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

7

- 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.

Page 8: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

8

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.

Page 9: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

9

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

alta.

Page 10: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

10

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.

Page 11: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

11

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.

Page 12: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

12

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'

Page 13: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

13

+ " 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)

{

Page 14: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

14

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;

Page 15: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

15

}

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

Page 16: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

16

{

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;

Page 17: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

17

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())

{

Page 18: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

18

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();

Page 19: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

19

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;

}

Page 20: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

20

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;

Page 21: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

21

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

{

Page 22: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

22

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;

Page 23: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

23

}

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;

Page 24: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

24

}

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;

Page 25: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

25

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

Page 26: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

26

{

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 + "','"

Page 27: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

27

+ 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)

Page 28: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

28

{

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;

Page 29: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

29

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

Page 30: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

30

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;

Page 31: Project ATM - Software Engineering - January 2007 - 3rd Year - 1st Semester

31

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);

}

}

}