Form2 este activat la actionarea butonului Alarmă şi conţine 2 textboxuri în care se introduc ora, respectiv minutele la care alarma este activată, trei label-uri şi un buton de Ok.
În urma execuţiei se obţine:
Public Class Form1
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
Dim x
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
On Error Resume Next
Form2.Show()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Timer1.Enabled = True
Timer1.Interval = 1000
End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Label1.Text = TimeOfDay
End Sub
Private Sub Timer2_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer2.Tick
If Label1.Text = TextBox1.Text Then
x = mciExecute("play c:/woody2.mp3")
MsgBox("Alarma", vbInformation, "Alarma")
End If
End Sub
End Class
Codul asociat formei a doua se prezintă astfel:
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
On Error Resume Next
End Sub
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
On Error Resume Next
Form1.TextBox1.Text = Me.TextBox1.Text + ":" + Me.TextBox2.Text + ":00 PM"
Form1.Timer2.Enabled = True
Form1.Timer2.Interval = 1000
If TextBox1.Text > 24 Or TextBox1.Text < 0 Then
MsgBox("Introduceti o valoare intre 0 si 24", vbExclamation, "Ora Incorecta !!!")
TextBox1.Text = ""
ElseIf TextBox2.Text > 59 Or TextBox2.Text < 0 Then
MsgBox("Introduceti o valoare intre 0 si 59", vbExclamation, "Minute Incorecte !!!")
TextBox2.Text = ""
End If
Me.Hide()
End Sub
End Class
8. Să se realizeze o mică aplicaţie de calcul a salariilor cuvenite ştiind că se dau:
- salariul de încadrare;
- sporul de vechime, de noapte, de toxicitate;
- eventuale prime;
Din total cîştig se scad: impozitul datorat, eventuale penalităţi şi eventualele chirii care trebuie introduse de la tastatură pentru cei la care este cazul.
Rezolvare:
Am proiectat formele astfel încât unele date (Nume, prenume, salariu) se introduc prin intermediul unor casete de text, iar altele (chirii, rate) prin intermediul unor comenzi InputBox.
Utilizatorul va preciza prin intermediul unor casete de validare (bifate) elementele de salariu specifice fiecărui salariat.
Toate opţiunile bifate pentru salariat vor genera mai întâi un dialog cu utilizatorul pentru a cere datele respective (exemplu: sporul de vechime, funcţia,etc) şi apoi calculele necesare prin intermediul procedurilor asociate acestor casete de validare.
Butonul Următorul calcul iniţializează elementele formularului pentru a trece la un alt salariat.
Codul sursă aferent este:
Public Class Form1
Dim NUME As String
Dim PRENUME As String
Dim SALARIU As Long
Dim FUNCTIA As String
Dim VEC As Integer
Dim PRIME As Single
Dim SPORV As Single 'SPOR DE VECHIME
Dim SPORT As Single 'SPOR DE TOXICITATE
Dim SPORN As Single 'SPOR DE NOAPTE
Dim PEN As Single 'PENALIZARI
Dim SALB As Single 'SALARIU BRUT
Dim IMPOZIT As Single
Dim CHIRII As Single
Dim RESTP As Single 'SUMA FINALA
Sub CALCUL()
SALB = SALARIU + SPORV + SPORN + SPORT + PRIME
RESTP = SALB - IMPOZIT - CHIRII - PEN
TextBox4.Text = Format(RESTP, "FIXED")
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
CheckBox1.Checked = 0
CheckBox2.Checked = 0
CheckBox3.Checked = 0
CheckBox4.Checked = 0
CheckBox5.Checked = 0
CheckBox6.Checked = 0
CheckBox7.Checked = 0
FUNCTIA = 0
VEC = 0
SPORV = 0
SPORT = 0
SPORN = 0
PRIME = 0
CHIRII = 0
SALB = 0
IMPOZIT = 0
PEN = 0
RESTP = 0
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
SALARIU = Val(TextBox3.Text)
CALCUL()
End Sub
Private Sub CheckBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.Click
If CheckBox1.Checked Then
FUNCTIA = InputBox("FUNCTIA")
If UCase(FUNCTIA) = "DIRIGINTE" Then
PRIME = SALARIU * 3 / 100
ElseIf UCase(FUNCTIA) = "DIRECTOR" Then
PRIME = SALARIU * 4 / 100
Else
PRIME = 100000
End If
Else
PRIME = 0
End If
CALCUL()
End Sub
Private Sub CheckBox2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox2.Click
If CheckBox2.Checked Then
VEC = InputBox("VECHIME")
If VEC < 3 Then
SPORV = 0
ElseIf VEC < 7 Then
SPORV = SALARIU * 3 / 100
ElseIf VEC < 15 Then
SPORV = SALARIU * 5 / 100
ElseIf VEC < 20 Then
SPORV = SALARIU * 7 / 100
ElseIf VEC = 0 Then
SPORV = SALARIU
ElseIf VEC > 20 Then
SPORV = SALARIU * 20 / 100
End If
Else
SPORV = 0
End If
CALCUL()
End Sub
Private Sub CheckBox3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox3.Click
If CheckBox3.Checked Then
SPORT = 350000 'CONSTANT
Else
SPORT = 0
End If
CALCUL()
End Sub
Private Sub CheckBox4_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox4.Click
If CheckBox4.Checked Then
SPORN = 300000 'CONSTANT
Else
SPORN = 0
End If
CALCUL()
End Sub
Private Sub CheckBox5_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox5.Click
If CheckBox5.Checked Then
PEN = 15000 'SUMA CONSTANTA PENTRU ORICE ABATERE
Else
PEN = 0
End If
CALCUL()
End Sub
Private Sub CheckBox6_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox6.Click
If CheckBox6.Checked Then
SALB = SALARIU + SPORV + SPORT + SPORN + PRIME
If SALB < 606000 Then
IMPOZIT = SALB * 19 / 100
ElseIf SALB < 1300000 Then
IMPOZIT = 127000 + (SALB - 606000) * 21 / 100
Else
IMPOZIT = 320000 + (SALB - 130000) * 25 / 100
End If
Else
IMPOZIT = 0
End If
CALCUL()
End Sub
Private Sub CheckBox7_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox7.Click
If CheckBox7.Checked Then
CHIRII = InputBox("CHIRII")
Else
CHIRII = 0
End If
CALCUL()
End Sub
End Class
9. Să se realizeze un program care să calculeze maximul şi minimul pentru liniile şi coloanele unei matrici ce se va introduce de la tastatură.
Se cere de la tastatură numărul de linii şi apoi, în mod asemănător, numărul de coloane.
Prin intermediul unei ferestre de dialog urmează precizarea valorii tuturor elementelor matricei noastre.
La sfârşit se calculează şi se afişează rezultatele obţinute.
Codul sursă aferent se prezintă astfel:
Public Class Form1
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a(0 To 100, 0 To 100)
Dim i, j, n, m As Integer
Dim maxL(0 To 100), maxC(0 To 100) As Integer
Dim maxLi, maxCi As Integer
Dim minL(0 To 100), minC(0 To 100) As Integer
Dim minLi, minCi As Integer
Dim pauza As String
pauza = Chr(13) & Chr(10)
Label1.Text = ""
Label2.Text = ""
n = InputBox("Introduceti numarul liniilor", "N=")
m = InputBox("introduceti numarul coloanelor", "M=")
For i = 1 To n
For j = 1 To m
a(i, j) = InputBox("A (" & i & "," & j & ") =")
Label3.Text = Label3.Text & a(i, j) & " "
Next j
Label3.Text = Label3.Text & pauza
Next i
For i = 1 To n
maxLi = a(i, 1)
For j = 2 To m
If maxLi < a(i, j) Then
maxLi = a(i, j)
End If
Next j
maxL(i) = maxLi
Next i
For j = 1 To m
maxCi = a(1, j)
For i = 2 To n
If maxCi < a(i, j) Then
maxCi = a(i, j)
End If
Next i
maxC(j) = maxCi
Next j
For i = 1 To n
minLi = a(i, 1)
For j = 2 To m
If minLi > a(i, j) Then
minLi = a(i, j)
End If
Next j
minL(i) = minLi
Next i
For j = 1 To m
minCi = a(1, j)
For i = 2 To n
If minCi > a(i, j) Then
minCi = a(i, j)
End If
Next i
minC(j) = minCi
Next j
Label3.Text = Label3.Text & pauza
For i = 1 To n
Label3.Text = Label3.Text & "Maximul de pe Linia " & i & " este " & maxL(i) & pauza
Next i
Label3.Text = Label3.Text & pauza
For j = 1 To m
Label3.Text = Label3.Text & "Maximul de pe Coloana " & j & " este " & maxC(j) & pauza
Next j
Label3.Text = Label3.Text & pauza
For i = 1 To n
Label3.Text = Label3.Text & "Minimul de pe Linia " & i & " este " & minL(i) & pauza
Next i
Label3.Text = Label3.Text & pauza
For j = 1 To m
Label3.Text = Label3.Text & "Minimul de pe Coloana " & j & " este " & minC(j) & pauza
Next j
End Sub
End Class
10. Să se realizeze o mică aplicaţie care să analizeze, într-un text dat, tipul caracterelor: majuscule sau caractere mici.
Rezolvare:
Textul se va introduce în caseta de text şi rezultatul se va afişa chiar pe formular.
Am realizat două proceduri de tip funcţie, care stabilesc, pentru fiecare literă în parte, dacă este majusculă sau nu, testând codul ASCII al acestora.
Se ştie că pentru majuscule codul Ascii are valori cuprinse între 65 şi 90, iar pentru literele mici între 97 şi 122.
Executând aplicaţia noastră se obţine:
Codul sursă se prezintă astfel:
Public Class Form1
Public Function IsUpper(ByVal CheckLetter As String) As Boolean
IsUpper = True
If Asc(CheckLetter) < 65 Or Asc(CheckLetter) > 90 Then
IsUpper = False
End If
End Function
Public Function IsLower(ByVal CheckLetter As String) As Boolean
IsLower = True
If Asc(CheckLetter) < 97 Or Asc(CheckLetter) > 122 Then
IsLower = False
End If
End Function
Public Sub Main()
Console.WriteLine(IsUpper("A"))
Console.WriteLine(IsUpper("a"))
Console.WriteLine(IsLower("A"))
Console.WriteLine(IsLower("a"))
Console.ReadLine()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x As String
Dim y As Integer
Dim g As Boolean
Dim enter As String
x = TextBox1.Text
y = Len(x)
enter = Chr(13) & Chr(10)
For i = 1 To y
g = IsUpper(Mid(x, i, 1))
If g = "True" Then
Label2.Text = Label2.Text & "Caracterul " & i & " este MAJUSCULA" & enter
Else
Label2.Text = Label2.Text & "Caracterul " & i & " este litera mica " & enter
End If
Next i
End Sub
End Class
11. Să se realizeze un program care să preia nota obţinută la examenul de admintere şi, funcţie de aceasta, să comunice candidatului dacă a intrat şi, în acest caz, la ce facultate.
Rezolvare:
Stabilim o grilă de medii de admitere la diversele facultăţi.
Codul sursa este urmatorul:
Public Class Form1
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Nota
Nota = TextBox1.Text
Select Case Nota
Case Is >= 9.5
Label3.Text = " Felicitari! " & vbCrLf & "Ati intrat la INFORMATICA."
Case Is >= 8.5
Label3.Text = " Felicitari! " & vbCrLf & "Ati intrat la Litere"
Case Is >= 7.5
Label3.Text = " Felicitari! " & vbCrLf & "Ati intrat la Matematica/Fizica"
Case Is >= 5
Label3.Text = " Felicitari! " & vbCrLf & "Ati intrat la METALURGIE"
Case Is <= 5
Label3.Text = " NE pare rau" & vbCrLf & "Ati PICAT"
End Select
End Sub
End Class
12. Să se proiecteze şi să se realizeze o aplicaţie care să rezolve o ecuaţie de gradul II dată de la tastatură.
Public Class Form1
Dim A As Integer
Dim B As Integer
Dim C As Integer
Dim Delta As Double
Dim X1 As Double
Dim X2 As Double
Dim d As Double
Dim d2 As Double
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
A = TextBox1.Text
B = TextBox2.Text
C = TextBox3.Text
If A <> "0" Then
Delta = B * B - 4 * A * C
If Delta < 0 Then
d = Delta * -1
d2 = System.Math.Sqrt(d)
X1 = -B & " +i " & d2 & " / " & 2 * A
X2 = -B & " -i " & d2 & " / " & 2 * A
Label6.Text = X1
Label7.Text = X2
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
Else
X1 = (-B + System.Math.Sqrt(Delta)) / 2 * A
X2 = (-B - System.Math.Sqrt(Delta)) / 2 * A
Label6.Text = X1
Label7.Text = X2
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
End If
Else
MsgBox("Functia nu este de gradul II")
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
End If
End Sub
End Class
13. Să se realizeze un program care să permită schimbul unei sume în lei într-o valută din lista afişată.
Codul sursă:
Public Class Form1
Dim curs As Double
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
End
End Sub
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
curs = InputBox("Introduceti cursul valutar pentru USD:")
TextBox2.Text = CStr(Format(Val(TextBox1.Text) / curs, "FIXED")) + " USD"
End Sub
Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
curs = InputBox("Introduceti cursul valutar pentru EURO:")
TextBox3.Text = CStr(Format(Val(TextBox1.Text) / curs, "FIXED")) + " EURO"
End Sub
Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton4.CheckedChanged
curs = InputBox("Introduceti cursul valutar pentru CHF:")
TextBox5.Text = CStr(Format(Val(TextBox1.Text) / curs, "FIXED")) + " CHF"
End Sub
Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged
curs = InputBox("Introduceti cursul valutar pentru YE:")
TextBox4.Text = CStr(Format(Val(TextBox1.Text) / curs, "FIXED")) + " YE"
End Sub
End Class
14. Să se realizeze o aplicaţie care să calculeze penalităţile pentru valoarea unor facturi, funcţie de numărul zilelor de întârziere la plata facturii.
Calculul penalităţilor se face după următorul algoritm:
Penalizări
(%)
|
Întârziere
(zile)
|
0
|
≤ 30
|
5
|
(30,45)
|
10
|
[45,60)
|
20
|
≥ 60
|
15. Dezvoltaţi aplicaţia anterioară, astfel încât pe prima formă să afişaţi textul “APLICAŢIE PENTRU CALCUL PENALITĂŢI “ şi să permiteţi intrarea sau ieşirea din aplicaţie prin intermediul a 2 butoane de comandă: Start şi Exit. Ca efect al acţionării butonului de Start să apară o a doua formă, la care să cereţi parola de acces. Permiteţi cel mult trei încercări ale parolei, după care blocaţi accesul la aplicaţie, permiţând doar acţionarea butonului Exit. Dacă parola a fost corectă, permiteţi accesul la forma a treia, care cere datele şi calculează penalităţile cerute.
16. Să se realizeze o aplicaţie care să afişeze pe ecran un ceas cu limbi (ore, minute, secunde) care merge (limbile se mişcă pentru a arăta ora exactă).
Rezolvare:
Executând aplicaţia se obţine:
Codul sursă al procedurilor asociate se prezintă astfel:
Imports System.Drawing
Imports System.Math
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
InitializeComponent()
End Sub
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
Private components As System.ComponentModel.IContainer
Friend WithEvents Timer1 As System.Windows.Forms.Timer
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container
Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
Me.SuspendLayout()
'Timer1
Me.Timer1.Interval = 10
'Form1
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(344, 302)
Me.MaximizeBox = False
Me.MaximumSize = New System.Drawing.Size(352, 336)
Me.MinimizeBox = False
Me.MinimumSize = New System.Drawing.Size(352, 336)
Me.Name = "Form1"
Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide
Me.StartPosition = System.Windows.Forms.FormStartPosition.Manual
Me.Text = "Animation clock"
Me.ResumeLayout(False)
End Sub
#End Region
Dim bm As Bitmap
Dim g As Graphics
Dim PI As Double = 3.14159
Dim XC, YC, X, Y, R, Secundac As Integer
Dim unghi, AspectRatio As Double
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
bm = New Bitmap(Me.ClientSize.Width, Me.ClientSize.Height)
g = Graphics.FromImage(bm)
'aflu coordonatele centrului formularului
XC = Me.ClientSize.Width / 2
YC = Me.ClientSize.Height / 2
AspectRatio = Me.ClientSize.Height / Me.ClientSize.Width
Draw_Graphics()
Me.BackgroundImage = bm
'variabila Secunda retine secunda curenta
Secundac = Now.Second
End Sub
Private Sub Draw_Graphics()
'aceasta procedura <> pe rand elementele componente ale ceasului
Draw_Clock_Face()
Draw_Clock_Markers()
Draw_Clock_Hands()
End Sub
Private Sub Draw_Clock_Hands()
'trasez limbile ceasului, prima data cea pentru ore, apoi pentru minute si in final cea pentru secunde
Dim ora1, SS As Double ' variabile care incrementeaza secundele si minutele
Dim ora, MIN, SEC As Integer 'variabile care pastreaza ora, minutul si secunda curente
Dim MyBrush As New System.Drawing.SolidBrush(Color.FromArgb(64, 69, 69, 69)) 'setez limbile transparent
Dim fp(5) As Point 'fiecare brat are 5 puncte. Se salveaza aceste puncte intr-un vector in the point array
ora1 = (2 * PI) / 12 'formula pentru pasul de incrementare pentru ora
SS = (2 * PI) / 60
MIN = Now.Minute 'variabila MIN retine minutul curent
SEC = Now.Second 'variabila SEC pastreaza secunda curenta
'desenez limba ceasului care imi indica ora
If Mid(Now.ToLongTimeString, Now.ToLongTimeString.Length - 2, 2).ToUpper.Trim = "PM" Then
Dostları ilə paylaş: |