السلام عليكم ورحمة الله وبركاتة
اخواني الكرام أولاً بما ان هذه هي المشاركة الاولى لي فسمحوا ان ارحب بنفسي في منتداكم الرائع الذي قد افادني وعلمني الكثير وإن شاء الله راح أحاول افيدكم قدر ما استطيع وان نتعاون على نشر العلم ومشاركتة.
كما في العنوان فقد انتهيت بسنة 70 من كتابة كود برنامج دليل اون لاين وهذا مشروع قد الزمت نفسي بان اكمله ثم اجعلة مفتوح المصدر للجميع حتى يطوره.
الفكرهـ :
هي إنشاء دليل مصور يتم حفظ المعلومات و صور الاشخاص فية وان يتم ذالك بصورة امنة , وأيضاً مكانية تصفحها عبر الانترنت حتى يمكنة الوصول اليها دون تعب.
أهداف البرنامج:
1- انشاء دليل مستقل لكل مستخدم في الجهاز و حماية الحسابات بكلمة مرور
2- حفظ بيانات الاشخاص واسترجاها و تعدليها وحذفها
3- حفظ صور الاشخاص في قاعد mysql في حقل longblob واسترجاعها وتغيرها وحذفها
4- عرض السجلات كاملة وطباعة التقارير
5- امكانية تصفح السجل عبر صفحات php حتى يمكن للمستخدم الوصل الى الدليل المصور في اى وقت يريد.
6- الموقع محمي بالطريقة الكلاسكية ( إسم المستخدم و بكملة مرور )
7- وضع خاصية التحديث عبر الانترنت دون الحاجة الى إعادة التثبيت في الاصدارات القادمة
.
..
.....
عيوب البرنامج حتى الان :
1-عندما يتم البحث بأسم غير موجد ينهار البرنامج
و باقي العيوب اتركها لكم لإستخراجها :wink:
Imports System.Data
Imports MySql.Data.MySqlClient
Imports System.IO
Public Class Form1
Dim myconn As MySqlConnection
Dim mycom As MySqlCommand
Dim myreader As MySqlDataReader
Dim Size As UInt32
Dim rawData() As Byte
Dim fs As FileStream
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim mysqlstr As String
Dim mycomstr As String
Dim rawData() As Byte
'كود الاتصال بالسيفر الشخصي
mysqlstr = String.Format("server=localhost; user id=root; database=ex; pooling=false; charset=cp1256")
myconn = New MySqlConnection(mysqlstr)
'امر سلكت لي العامود من الجدول إكزام
mycomstr = "select * from exm"
mycom = New MySqlCommand(mycomstr, myconn)
myconn.Open()
myreader = mycom.ExecuteReader()
myreader.Read()
'نربط التكست ب العمود المناسب
TextBox1.Text = myreader.Item("nm")
TextBox2.Text = myreader.Item("no")
TextBox3.Text = myreader.Item("ag")
TextBox4.Text = myreader.Item("jn")
TextBox5.Text = myreader.Item("ct")
TextBox6.Text = myreader.Item("id")
MsgBox("تم الاتصال بالقاعدة ينجاح ")
'كود اسنرجاع الصورة من ملف بولب في قاعدة البيانات ثم تخزينها في التمبروري انترنت ثم عرضا عبر امج بوكس
Size = myreader.GetUInt32(myreader.GetOrdinal("Size"))
rawData = New Byte(Size) {}
myreader.GetBytes(myreader.GetOrdinal("File"), 0, rawData, 0, Size)
Dim ad As New MemoryStream(100000)
Dim bm As Bitmap
ad.Write(rawData, 0, Size)
bm = New Bitmap(ad)
myreader.Close()
PictureBox1.Image = bm
ad.Dispose()
'كود عدد السجلات
Dim myCountIdCommand As New MySqlCommand
myCountIdCommand.Connection = myconn
myCountIdCommand.CommandType = CommandType.Text
'دالة حساب عدد السجلات
myCountIdCommand.CommandText = "SELECT Count(id) AS CountID FROM exm;"
'نقم بالتصريح عن متغير من نوع String ونسميه CountId
Dim myCountId As String = myCountIdCommand.ExecuteScalar()
'نربط التكست ب العمود المناسب
TextBox7.Text = myCountId
'اغلاق الاتصال
myCountIdCommand.Dispose()
myconn.Close()
myconn.Dispose()
End Sub
Private Sub مسحالحقولToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles مسحالحقولToolStripMenuItem.Click
'كود لمسح الحقول النصية
For Each ctl As Control In Controls
If TypeOf ctl Is TextBox Then
ctl.Text = ""
End If
For Each child As Control In ctl.Controls
If TypeOf child Is TextBox Then
child.Text = ""
End If
Next child
Next ctl
Me.PictureBox1.Image = Image.FromFile("none.jpg")
End Sub
Private Sub حفظToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles حفظToolStripMenuItem.Click
If TextBox8.Text = "" Or TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox5.Text = "" Then
MsgBox(" المعلومات ناقصةالرجاء إكمال جميع الحقول", MsgBoxStyle.Information)
GoTo p
End If
'نفتح الاتصال
myconn.Open()
Dim FileSize As UInt32
Dim rawData() As Byte
Dim fs As FileStream
fs = New FileStream(TextBox8.Text, FileMode.Open, FileAccess.Read)
FileSize = fs.Length
rawData = New Byte(FileSize) {}
fs.Read(rawData, 0, FileSize)
fs.Close()
Dim myInsertCommand As New MySqlCommand
myInsertCommand.Connection = myconn
myInsertCommand.CommandType = CommandType.Text
'دالة الادخال
myInsertCommand.CommandText = "INSERT INTO exm(nm,no,ag,jn,ct,Name,Size,File) VALUES(@nm,@no,@ag,@jn,@ct,@Name, @Size, @File);"
'وضع الجداول مع العمود المناسب ونضع قيمة البرامتر
myInsertCommand.Parameters.Clear()
myInsertCommand.Parameters.AddWithValue("@nm", TextBox1.Text)
myInsertCommand.Parameters.AddWithValue("@no", TextBox2.Text)
myInsertCommand.Parameters.AddWithValue("@ag", TextBox3.Text)
myInsertCommand.Parameters.AddWithValue("@jn", TextBox4.Text)
myInsertCommand.Parameters.AddWithValue("@ct", TextBox5.Text)
myInsertCommand.Parameters.AddWithValue("@po", rawData)
myInsertCommand.Parameters.AddWithValue("@Name", Dialog1.FileName)
myInsertCommand.Parameters.AddWithValue("@Size", FileSize)
myInsertCommand.Parameters.AddWithValue("@File", rawData)
'خاص بترجمة الاوامر الي ماي سكؤل
myInsertCommand.ExecuteNonQuery()
myInsertCommand.Dispose()
'إغلاق الاتصال
myconn.Close()
myconn.Dispose()
MsgBox(" تم إضافة السجل بنجاح ", MsgBoxStyle.Information)
p:
End Sub
Private Sub تعديلToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles تعديلToolStripMenuItem.Click
'نفتح الاتصال
If TextBox8.Text = "" Or TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox5.Text = "" Then
MsgBox(" المعلومات ناقصةالرجاء إكمال جميع الحقول", MsgBoxStyle.Information)
GoTo i
End If
myconn.Open()
Dim conn As New MySqlConnection
Dim Size As UInt32
Dim rawData() As Byte
Dim fs As FileStream
Dim myUpdateCommand As New MySqlCommand
fs = New FileStream(TextBox8.Text, FileMode.Open, FileAccess.Read)
Size = fs.Length
rawData = New Byte(Size) {}
fs.Read(rawData, 0, Size)
fs.Close()
myUpdateCommand.Connection = myconn
myUpdateCommand.CommandType = CommandType.Text
'دالة التحديث والتعديل
myUpdateCommand.CommandText = "UPDATE exm SET nm=@nm ,no=@no ,ag=@ag ,jn=@jn ,ct=@ct ,Name=@Name ,Size=@Size,File=@File WHERE id =@id;"
'نوضح ان متغير بو هو صورة
myUpdateCommand.Parameters.Clear()
'وضع الجداول مع العمود المناسب ونضع قيمة البرامتر
myUpdateCommand.Parameters.AddWithValue("@nm", TextBox1.Text)
myUpdateCommand.Parameters.AddWithValue("@no", TextBox2.Text)
myUpdateCommand.Parameters.AddWithValue("@ag", TextBox3.Text)
myUpdateCommand.Parameters.AddWithValue("@jn", TextBox4.Text)
myUpdateCommand.Parameters.AddWithValue("@ct", TextBox5.Text)
myUpdateCommand.Parameters.AddWithValue("@id", TextBox6.Text)
myUpdateCommand.Parameters.AddWithValue("@Name", Dialog1.FileName)
myUpdateCommand.Parameters.AddWithValue("@Size", Size)
myUpdateCommand.Parameters.AddWithValue("@File", rawData)
myUpdateCommand.ExecuteNonQuery()
'اغلاق الاتصال
myUpdateCommand.Dispose()
myconn.Close()
myconn.Dispose()
MsgBox(" تم تعديل السجل بنجاح ", MsgBoxStyle.Information)
i:
End Sub
Private Sub حذفالسجلالحاليToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles حذفالسجلالحاليToolStripMenuItem.Click
myconn.Open()
Dim myDeleteCommand As New MySqlCommand
myDeleteCommand.Connection = myconn
myDeleteCommand.CommandType = CommandType.Text
'دالة الحذف
myDeleteCommand.CommandText = "DELETE FROM exm WHERE no =@no;"
myDeleteCommand.Parameters.Clear()
'وضع الجداول مع العمود المناسب ونضع قيمة البرامتر
myDeleteCommand.Parameters.AddWithValue("@no", TextBox2.Text)
myDeleteCommand.ExecuteNonQuery()
myDeleteCommand.Dispose()
myconn.Close()
myconn.Dispose()
MsgBox(" تم حذف السجل الحالي بنجاح ", MsgBoxStyle.Information)
End Sub
Private Sub عرضعددالسجلاتToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles عرضعددالسجلاتToolStripMenuItem.Click
myconn.Open()
Dim myCountIdCommand As New MySqlCommand
myCountIdCommand.Connection = myconn
myCountIdCommand.CommandType = CommandType.Text
'دالة حساب عدد السجلات
myCountIdCommand.CommandText = "SELECT Count(id) AS CountID FROM exm;"
'نقم بالتصريح عن متغير من نوع String ونسميه CountId
Dim myCountId As String = myCountIdCommand.ExecuteScalar()
'نربط التكست ب العمود المناسب
TextBox7.Text = myCountId
MsgBox("عدد السجلات هو " & myCountId, MsgBoxStyle.Information)
myCountIdCommand.Dispose()
myconn.Close()
myconn.Dispose()
End Sub
Private Sub بحثبرقمالهويةToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles بحثبرقمالهويةToolStripMenuItem.Click
'كود البحث من موقع منتديات فجول بسيك
Try
Dim dr As MySqlDataReader
Dim sql As String = "select * from exm Where no=@no"
Dim cmd As New MySqlCommand(sql, myconn)
cmd.Parameters.Clear()
cmd.Parameters.AddWithValue("@no", Me.TextBox2.Text)
myconn.Open()
dr = cmd.ExecuteReader
dr.Read()
Me.TextBox1.Text = dr.Item("nm")
Me.TextBox3.Text = dr.Item("ag")
Me.TextBox4.Text = dr.Item("jn")
Me.TextBox5.Text = dr.Item("ct")
Me.TextBox6.Text = dr.Item("id")
Size = dr.GetUInt32(dr.GetOrdinal("Size"))
rawData = New Byte(Size) {}
dr.GetBytes(dr.GetOrdinal("File"), 0, rawData, 0, Size)
Dim ad As New MemoryStream(100000)
Dim bm As Bitmap
ad.Write(rawData, 0, Size)
bm = New Bitmap(ad)
dr.Close()
myconn.Close()
myconn.Dispose()
PictureBox1.Image = bm
ad.Dispose()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Private Sub بحثبالأسمToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles بحثبالأسمToolStripMenuItem.Click
'كود البحث من موقع منتديات فجول بسيك
'هو نفس الكود السابق مع تغير المتغير نو الي نم
Try
Dim dr As MySqlDataReader
Dim sql As String = "select * from exm Where nm=@nm"
Dim cmd As New MySqlCommand(sql, myconn)
cmd.Parameters.Clear()
cmd.Parameters.AddWithValue("@nm", Me.TextBox1.Text)
myconn.Open()
dr = cmd.ExecuteReader
dr.Read()
Me.TextBox2.Text = dr.Item("no")
Me.TextBox3.Text = dr.Item("ag")
Me.TextBox4.Text = dr.Item("jn")
Me.TextBox5.Text = dr.Item("ct")
Me.TextBox6.Text = dr.Item("id")
Size = dr.GetUInt32(dr.GetOrdinal("Size"))
rawData = New Byte(Size) {}
dr.GetBytes(dr.GetOrdinal("File"), 0, rawData, 0, Size)
Dim ad As New MemoryStream(100000)
Dim bm As Bitmap
ad.Write(rawData, 0, Size)
bm = New Bitmap(ad)
dr.Close()
myconn.Close()
myconn.Dispose()
PictureBox1.Image = bm
ad.Dispose()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Private Sub خروجToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles خروجToolStripMenuItem.Click
'كود الاختفاء ثم الاغلاق
Dim iCount As Integer
For iCount = 90 To 10 Step -10
Me.Opacity = iCount / 100
Me.Refresh()
Threading.Thread.Sleep(50)
Next
Me.Close()
End Sub
Private Sub جدToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles جدToolStripMenuItem.Click
'كود لمسح الحقول النصية
For Each ctl As Control In Controls
If TypeOf ctl Is TextBox Then
ctl.Text = ""
End If
For Each child As Control In ctl.Controls
If TypeOf child Is TextBox Then
child.Text = ""
End If
Next child
Next ctl
Me.PictureBox1.Image = Image.FromFile("none.jpg")
End Sub
Private Sub رقمالأصدارToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles رقمالأصدارToolStripMenuItem.Click
'استدعاء الفورم 2
Form2.Show()
End Sub
Private Sub فريقالعملToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles فريقالعملToolStripMenuItem.Click
'الرسالة النصية
MsgBox("برمجة فيصل عويض الجعيد", MsgBoxStyle.Information)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'كود استراد الصورة من منتديات فجول بيسك
Dialog1.RestoreDirectory = True
Dialog1.InitialDirectory = (Application.StartupPath & "\DOCUMENTS")
Try
Dialog1.Filter = "Photo Files (*.jpg)|*.jpg"
With Me.Dialog1
.FilterIndex = 2
.Title = "Select Photo file"
.ShowDialog()
If Len(.FileName) > 0 Then
Me.PictureBox1.Image = Image.FromFile(Dialog1.FileName)
End If
End With
TextBox8.Text = Dialog1.FileName
Catch ex As Exception
MsgBox(ex, MsgBoxStyle.OkOnly, "Error")
End Try
End Sub
End Classاذا كان لديكم اي اسئلة بإمكانكم طرحا في مدونتي