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

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

Embed Size (px)

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

UNIVERSITATEA TEHNIC GH. ASACHI IAI

PROIECT Programare Windows

Proiect realizat de: Hulu Lucian-Adrian Grupa 1407

CUPRINS:I. Simularea functionarii unui ATM.1. Formularea problemei 2. Codul programului (3-11) (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 obine anumite rezultate folosind produsul ce trebuie creat, fr a interesa ordinea. Prezint informaiile 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 funcionalitate.

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 Caseul 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 conine clase / interfee, obiecte i relaii 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 ATMul; - Retine optiunea selectata.

7

C. Diagrama de stareDiagrama de stare este folosit pentru a modela comportamentul unui singur obiect. Diagrama de stri specific o secven de stri prin care trece un obiect de-a lungul vieii sale ca rspuns la evenimente mpreun cu rspunsul la aceste evenimente.

8

D. Diagrama de activitati:Diagramea de activitati scoate n eviden controlul execuiei 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 interaciuni care pune accentul pe organizarea structural a obiectelor care particip la interaciune.

11

I.2. CODUL PROGRAMULUI:Clase:using using using using using using System; System.Collections.Generic; System.Text; System.Data.OleDb; System.Data; 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 using using using using

System; System.Collections.Generic; System.Text; System.Data.OleDb; 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 using using using using System; System.Collections.Generic; System.Text; System.Data.OleDb; 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 using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Data.OleDb; System.Drawing; System.Text; System.Windows.Forms; 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 using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; 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 using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; System.Windows.Forms; 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 using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; System.Windows.Forms; 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 using using using using using using using using System; System.Collections.Generic; System.Collections.Specialized; System.ComponentModel; System.Data; System.Data.OleDb; System.Drawing; System.Text; 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)(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 using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; 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 using using using using using

System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; 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