AutoExam Application

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 63

‫شرح نظام إدارة اإلمتحانات ‪Auto Exam Management System‬‬

‫وكيفية كتابة األكواد البرمجية الخاصة بالمشروع بالتفصيل خطوة بخطوة‬


‫بطريقة مبسطة‬
‫بإستخدام لغة البرمجة ‪ Visual Basic.net‬وقواعد بيانات ‪MS Access‬‬
‫رابط قناة اليوتيوب لتعلم البرمجة من البداية حتى اإلحتراف‬
‫‪https://youtube.com/@freeonlinecoursesforever‬‬
‫وجاري االستمرار في استكمال شرح باقى فيديوهات الكورسات االخرى فى مجال هندسة البرمجيات بإذن الله‬
‫رابط حساب ‪Linkedin‬‬
‫‪https://www.linkedin.com/in/ashraf-aboelela‬‬
‫رابط حساب ‪Facebook‬‬
‫‪https://www.facebook.com/ashraf.aboelela.7‬‬
‫رابط حساب ‪Twitter‬‬
‫‪https://twitter.com/AshrafElela‬‬
‫رابط حساب ‪GitHub‬‬
‫‪https://github.com/AshrafAboelela‬‬
‫وده رابط لبعض النصائح الشخصية فى بدء دخول مجال هندسة البرمجيات ‪:‬‬
‫‪https://www.facebook.com/100001473016727/posts/6207987139260325‬‬
‫رابط صفحة الكورسات‬
‫‪https://www.facebook.com/FreeOnlineCoursesforever‬‬
‫رابط مجموعة الكورسات‬
‫‪https://www.facebook.com/groups/freeonlinecoursesforever‬‬
‫بإذن الله ده رابط مجموعة تليجرام تعلم البرمجيات مع بعض من البداية‬
‫‪https://t.me/learnprogrammingselfstudy‬‬

‫إبدأ اتعلم من اآلن البرمجة ونفذ العديد من التطبيقات البرمجية لتطبيق ما تعلمته‬
‫وهساعدك فى أى استفسارات من خالل وسائل التواصل اإلجتماعى السابقة‬

‫رابط مشروع ‪ Auto Exam Management System‬على ‪GitHub‬‬


‫‪/https://github.com/AshrafAboelela/AutoExam-Application‬‬

‫اللهم إجعل هذا العمل خالصا ً لوجهك الكريم نسألكم صالح الدعاء‬

‫(‪(1‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫مشروع االسئلة الخاصة بالطالب‬
‫هذا المشروع يحتوى على اثنين تطبيق احداهما يكون خاص بالمدرسين يضيف االسئلة‬
‫ويحدد االجابات الصحيحة وايضا يستطيع اضافة اسم الطالب والفصل وااليميل ‪.‬‬
‫ويقوم المدرس باضافة السؤال واالجابات المتاحة للسؤال واالجابة الصحيحة له ‪.‬‬
‫نقوم بإنشاء قاعدة بيانات من نوع ‪ Microsoft Access‬بإسم ‪user_db.accdb‬‬
‫وتكون خاصة بالمدرس واخرى بإسم ‪ test_db.accdb‬وتكون خاصة باختبار الطالب‬
‫قاعدة البيانات ‪ user_db.accdb‬يكون بها جدول ‪ users‬وهو جدول خاص ببيانات‬
‫المستخدمين للدخول الى التطبيق ويكون تصميم جدول ‪ users‬كالتالى ‪:‬‬

‫وايضا بها جدول ‪ students‬وهو جدول خاص ببيانات الطالب ويكون تصميم جدول‬
‫‪ students‬كالتالى ‪:‬‬

‫(‪(2‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫قاعدة البيانات ‪ test_db.accdb‬يكون بها جدول ‪ questions‬وهو جدول خاص بأسئلة‬
‫االختبارات التى يتم عرضها للطالب ويكون تصميم جدول ‪ questions‬كالتالى ‪:‬‬

‫وايضا بها جدول ‪ answers‬وهو جدول خاص بإجابات اسئلة الطالب ويكون تصميم‬
‫جدول ‪ answers‬كالتالى ‪:‬‬

‫نقوم بإضافة بعض المستخدمين فى جدول ‪ users‬كالتالى ‪:‬‬

‫(‪(3‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نقوم بإنشاء مشروع هيكون اسم المشروع ‪ solution‬ككل بإسم ‪ExamProject‬‬
‫وهيكون اسم التطبيق ‪ Teacher‬كالتالى ‪:‬‬

‫نقوم بإضافة ‪ Module‬فى تطبيق ‪ Teacher‬باسم ‪ Module1.vb‬كالتالى ‪:‬‬

‫(‪(4‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نأتى بداخل ملف ‪ Module1‬ونقوم بإستدعاء ‪ Namespace‬الخاص بمكتبة ‪oledb‬‬
‫بداخل ‪ General Decrelation‬وبداخل ‪ Module1‬نقوم باالعالن عن بعض‬
‫المتغيرات التى يتم استخدامها وكتابة ‪ provider‬الخاص باالتصال بقاعدة البيانات‬
‫كالتالى ‪:‬‬

‫نقوم بإنشاء بعض ‪ sub‬و ‪ function‬بداخل ‪. Module1‬‬


‫نقوم بإنشاء ‪ sub‬بداخل ‪ Module1‬خاص بفتح االتصال بقاعدة البيانات ‪user_db‬‬
‫بإسم ‪ openconnection‬كالتالى ‪:‬‬

‫وايضا إنشاء ‪ function‬آخر بداخل ‪ Module1‬خاص بفورم الدخول على التطبيق يتم‬
‫تمرير االسم والباسورد بإسم ‪ login‬كالتالى ‪:‬‬

‫(‪(5‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫وايضا إنشاء ‪ function‬اخرى بداخل ‪ Module1‬خاص بإضافة بيانات الطالب فى‬
‫جدول ‪ students‬بإسم ‪ insertstudent‬كالتالى ‪:‬‬

‫وايضا إنشاء ‪ function‬اخرى بداخل ‪ Module1‬خاص بالبحث عن بيانات طالب فى‬


‫جدول ‪ students‬بإسم ‪ findstudent‬كالتالى ‪:‬‬

‫(‪(6‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫وايضا إنشاء ‪ function‬اخرى بداخل ‪ Module1‬خاص بتعديل بيانات الطالب فى‬
‫جدول ‪ students‬بإسم ‪ updatestudent‬كالتالى ‪:‬‬

‫وايضا إنشاء ‪ function‬اخرى بداخل ‪ Module1‬خاص بحذف بيانات طالب من‬


‫جدول ‪ students‬بإسم ‪ deletestudent‬كالتالى ‪:‬‬

‫وايضا إنشاء ‪ function‬اخرى بداخل ‪ Module1‬خاص بعرض بيانات الطالب من‬


‫جدول ‪ students‬بإسم ‪ getallstudent‬كالتالى ‪:‬‬

‫(‪(7‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نقوم بإضافة فورم بإسم ‪ LoginForm.vb‬كالتالى ‪:‬‬

‫نقوم بتصميم شكل فورم ‪ LoginForm‬كالتالى ‪:‬‬

‫نأتى على مفتاح ‪ Login‬فى فورم ‪ LoginForm‬ونكتب الكود االتى ‪:‬‬

‫(‪(8‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نأتى على مفتاح ‪ Exit‬فى فورم ‪ LoginForm‬ونكتب الكود االتى ‪:‬‬

‫نقوم بإضافة فورم بإسم ‪ TeacherForm.vb‬كالتالى ‪:‬‬

‫نأتى على فورم ‪ TeacherForm‬ثم اضافة اداة ‪ TabControl‬خاصية ‪ Dock‬تكون‬


‫‪ fill‬نقوم بإضافة اثنين ‪ TabPage‬نقوم بتغييرخاصية ‪ text‬الـ ‪ Tab‬االولى بإسم‬
‫‪ student data‬فى فورم ‪ TeacherForm‬كالتالى ‪:‬‬

‫(‪(9‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نالحظ انه فى ‪ Tab‬بإسم ‪ student data‬نقوم بإضافة ‪ label‬نخلى خاصية ‪visible‬‬
‫تكون ‪ false‬ونضع اداة ‪ datagridview‬ونقوم بوضع مجموعة من ‪ panel‬لتقسيم‬
‫الفورم كما سبق ‪.‬‬
‫نأتى بداخل فورم ‪ TeacherForm‬ثم نقوم بإستدعاء بعض ‪ Namespace‬الخاص‬
‫بداخل ‪ General Decrelation‬كالتالى ‪:‬‬

‫نقوم بإنشاء ‪ sub‬بداخل فورم ‪ TeacherForm‬خاص بمسح البيانات من ‪controls‬‬


‫على الفورم بإسم ‪ clear_txt‬كالتالى ‪:‬‬

‫نأتى على مفتاح ‪ new‬فى ‪ Tab‬الـ ‪ student data‬بداخل فورم ‪TeacherForm‬‬


‫ونكتب الكود االتى ‪:‬‬

‫(‪(11‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نأتى على مفتاح ‪ save‬فى ‪ Tab‬الـ ‪ student data‬بداخل فورم ‪TeacherForm‬‬
‫ونكتب الكود االتى ‪:‬‬

‫نأتى على مفتاح ‪ find‬فى ‪ Tab‬الـ ‪ student data‬بداخل فورم ‪TeacherForm‬‬


‫ونكتب الكود االتى ‪:‬‬

‫نأتى على مفتاح ‪ update‬فى ‪ Tab‬الـ ‪ student data‬بداخل فورم ‪TeacherForm‬‬


‫ونكتب الكود االتى ‪:‬‬

‫(‪(11‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نأتى على مفتاح ‪ delete‬فى ‪ Tab‬الـ ‪ student data‬بداخل فورم ‪TeacherForm‬‬
‫ونكتب الكود االتى ‪:‬‬

‫نقوم بإضافة ‪ sub‬اخر بداخل ‪ Module1‬خاص بفتح االتصال بقاعدة البيانات‬


‫‪ test_db‬بإسم ‪ opentestconnection‬كالتالى ‪:‬‬

‫نقوم إنشاء ‪ function‬اخرى بداخل ‪ Module1‬خاص بإضافة اسئلة الطالب فى جدول‬


‫‪ students‬بإسم ‪ insertquestion‬كالتالى ‪:‬‬

‫(‪(12‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫وايضا إنشاء ‪ function‬اخرى بداخل ‪ Module1‬خاص بالبحث عن بيانات طالب فى‬
‫جدول ‪ students‬بإسم ‪ findquestion‬كالتالى ‪:‬‬

‫وايضا إنشاء ‪ function‬اخرى بداخل ‪ Module1‬خاص بتعديل بيانات الطالب فى‬


‫جدول ‪ students‬بإسم ‪ updatequestion‬كالتالى ‪:‬‬

‫(‪(13‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫وايضا إنشاء ‪ function‬اخرى بداخل ‪ Module1‬خاص بحذف بيانات طالب من‬
‫جدول ‪ students‬بإسم ‪ deletequestion‬كالتالى ‪:‬‬

‫وايضا إنشاء ‪ function‬اخرى بداخل ‪ Module1‬خاص بعرض بيانات الطالب من‬


‫جدول ‪ students‬بإسم ‪ getallquestion‬كالتالى ‪:‬‬

‫من خالل ‪ TabPage‬الثانية خاصية ‪ text‬بإسم ‪ Questions‬نقوم بتصميمها كالتالى ‪:‬‬

‫(‪(14‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نقوم بإنشاء ‪ sub‬بداخل فورم ‪ TeacherForm‬خاص بمسح البيانات من ‪controls‬‬
‫على الفورم بإسم ‪ clear_question_txt‬كالتالى ‪:‬‬

‫نأتى على مفتاح ‪ new‬فى ‪ Tab‬الـ ‪ Questions‬بداخل فورم ‪ TeacherForm‬ونكتب‬


‫الكود االتى ‪:‬‬

‫نأتى على مفتاح ‪ save‬فى ‪ Tab‬الـ ‪ Questions‬بداخل فورم ‪ TeacherForm‬ونكتب‬


‫الكود االتى ‪:‬‬

‫(‪(15‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نأتى على مفتاح ‪ find‬فى ‪ Tab‬الـ ‪ Questions‬بداخل فورم ‪ TeacherForm‬ونكتب‬
‫الكود االتى ‪:‬‬

‫نأتى على مفتاح ‪ update‬فى ‪ Tab‬الـ ‪ Questions‬بداخل فورم ‪TeacherForm‬‬


‫ونكتب الكود االتى ‪:‬‬

‫نأتى على مفتاح ‪ delete‬فى ‪ Tab‬الـ ‪ Questions‬بداخل فورم ‪TeacherForm‬‬


‫ونكتب الكود االتى ‪:‬‬

‫(‪(16‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نأتى على مفتاح ‪ finish‬فى ‪ Tab‬الـ ‪ Questions‬بداخل فورم ‪TeacherForm‬‬
‫ونكتب الكود االتى ‪:‬‬

‫ناتى على ‪ combobox‬الخاص بارقام اجابات االسئلة ومن خاصية ‪collection‬‬


‫هنكتب ارقام اجابات االسئلة كالتالى ‪:‬‬

‫هتظهر على الفورم كالتالى ‪:‬‬

‫(‪(17‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نأتى على حدث ‪ load‬لفورم ‪ TeacherForm‬ونكتب االتى ‪:‬‬

‫نالحظ انه فى الكود السابق هيتم عرض البيانات من جدول ‪ students‬فى اداة‬
‫‪ datagridview1‬وعرض البيانات من جدول ‪ questions‬فى اداة ‪datagridview2‬‬
‫هنالحظ انه هيتم عرض اسماء الطالب فى اداة ‪ cmb_student‬وعند تحديد االسم هيتم‬
‫تحديد ‪ value‬الخاص به ‪.‬‬
‫نالحظ ان شكل ‪ datagridview2‬فى الفورم هيكون كالتالى ‪:‬‬

‫(‪(18‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نأتى على ‪ TabPage‬الثالثة نغير خاصية ‪ text‬بإسم ‪ Send Test‬نقوم بتصميمها‬
‫كالتالى ‪:‬‬

‫نأتى على مفتاح ‪ Send‬فى ‪ Tab‬الـ ‪ Send Test‬بداخل فورم ‪TeacherForm‬‬


‫ونكتب الكود االتى ‪:‬‬

‫(‪(19‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نالحظ ان اسماء الطالب فى اداة ‪ cmb_student‬كالتالى ‪:‬‬

‫نأتى على حدث ‪ selectedindexchanged‬ألداة ‪ cmb_student‬ونكتب كود عرض‬


‫‪ value‬الخاصة باالداة فى ‪ text‬الخاص بعنون ايميل المرسل اليه كالتالى ‪:‬‬

‫نقوم بإنشاء مشروع اخر للطالب لالجابة على االسئلة بإسم ‪ Students‬فى نفس‬
‫‪ Solution‬كالتالى ‪:‬‬

‫(‪(21‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نقوم بإضافة ‪ Module‬فى تطبيق ‪ Students‬باسم ‪ Module1.vb‬كالتالى ‪:‬‬

‫نأتى بداخل ملف ‪ Module1‬ونقوم بإستدعاء ‪ Namespace‬الخاص بمكتبة ‪oledb‬‬


‫بداخل ‪ General Decrelation‬وبداخل ‪ Module1‬نقوم باالعالن عن بعض‬
‫المتغيرات التى يتم استخدامها وكتابة ‪ provider‬الخاص باالتصال بقاعدة البيانات التى‬
‫تسمى ‪ test_db‬الخاصة باالمتحان كالتالى ‪:‬‬

‫نقوم بإنشاء بعض ‪ sub‬و ‪ function‬بداخل ‪. Module1‬‬


‫نقوم بإنشاء ‪ sub‬بداخل ‪ Module1‬خاص بفتح االتصال بقاعدة البيانات ‪test _db‬‬
‫بإسم ‪ openconnection‬كالتالى ‪:‬‬

‫(‪(21‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫وايضا إنشاء ‪ sub‬بداخل ‪ Module1‬خاص بفتح ملف قاعدة بيانات التى بها االمتحان‬
‫بإسم ‪ openfile‬كالتالى ‪:‬‬

‫وايضا إنشاء ‪ sub‬اخرى بداخل ‪ Module1‬خاص بعرض بيانات الطالب من جدول‬


‫‪ students‬بإسم ‪ getallquestion‬كالتالى ‪:‬‬

‫وايضا إنشاء ‪ sub‬اخرى بداخل ‪ Module1‬بإسم ‪ setanswer‬خاص بتمرير رقم‬


‫االجابة التى قام الطالب باختيارها وهيتم اضافة االجابات الصحيحة فى جدول‬
‫‪ answers‬كالتالى ‪:‬‬

‫(‪(22‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫وايضا إنشاء ‪ sub‬اخرى بداخل ‪ Module1‬خاص بتحديد ما اذا كانت االجابة التى‬
‫اختارها الطالب صحيحة ‪ true‬او خطأ ‪ false‬بإسم ‪ setresult‬كالتالى ‪:‬‬

‫نقوم بإضافة فورم بإسم ‪ StudentForm.vb‬كالتالى ‪:‬‬

‫(‪(23‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نقوم بتصميم فورم ‪ StudentForm‬كالتالى ‪:‬‬

‫نقوم بإضافة اداتين ‪ openfiledialog‬و‪ timer‬كما سبق‬


‫نأتى بداخل فورم ‪ StudentForm‬و بداخل ‪ General Decrelation‬نقوم بإستدعاء‬
‫‪ Namespace‬كالتالى ‪:‬‬

‫نأتى على مفتاح ‪ open test‬فى فورم ‪ StudentForm‬ونكتب الكود االتى ‪:‬‬

‫(‪(24‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نالحظ انه فى الكود السابق عند الضغط على مفتاح ‪ open test‬نقوم بتحديد ملف قاعدة‬
‫البيانات التى به اسئلة االمتحان سيتم فتح االمتحان من خالل ‪ sub‬الذى يسمى‬
‫‪ getallquestion‬ويظهر السؤال فى ‪ txt_q‬وتظهر االجابات المتاحة فى‬
‫‪ radiobuttons‬الموجودة على الفورم ‪.‬‬
‫نأتى على مفتاح ‪ Next‬فى فورم ‪ StudentForm‬ونكتب الكود االتى ‪:‬‬

‫نأتى على مفتاح ‪ Previous‬فى فورم ‪ StudentForm‬ونكتب الكود االتى ‪:‬‬

‫نأتى على حدث ‪ formclosing‬للفورم ‪ StudentForm‬ونكتب الكود االتى ‪:‬‬

‫(‪(25‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نأتى على حدث ‪ checkedchanged‬ألدوات ‪ radiobuttons‬ونكتب الكود االتى ‪:‬‬

‫بحيث انه عند قيام الطالب باختيار اى اجابة من خالل ‪ radiobuttons‬هيتم تمرير رقم‬
‫االجابة وليكن ‪ a‬او ‪ b‬او ‪ c‬او ‪ d‬الى ‪ method‬التى تسمى ‪ setanswer‬وذلك الضافة‬
‫االجابة التى حددها الطالب فى جدول ‪ answers‬وكذلك تمرير نفس االجابة الى‬
‫‪ setresult‬وذلك لتحديد ما اذا كانت االجابة ‪ true‬او ‪. false‬‬
‫نأتى على مفتاح ‪ finish‬فى فورم ‪ StudentForm‬ونكتب الكود االتى ‪:‬‬

‫نأتى على حدث ‪ tick‬ألداة ‪ timer1‬ونكتب الكود االتى ‪:‬‬

‫(‪(26‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نأتى على مفتاح ‪ show result‬فى فورم ‪ StudentForm‬ونكتب الكود االتى ‪:‬‬

‫نقوم بإضافة فورم بإسم ‪ ShowResult.vb‬كالتالى ‪:‬‬

‫نقوم باضافة اداة ‪ reportviewer‬وتصميم شكل فورم ‪ ShowResult‬كالتالى ‪:‬‬

‫(‪(27‬‬
‫‪Ashraf Aboelela Toufik‬‬
crystal ‫ نقوم بإضافة‬new item ‫ ثم‬add ‫ ومن‬Students ‫نأتى على مشروع‬
: ‫ كالتالى‬ResultReport.rpt ‫ بإسم‬reports

: ‫ كالتالى‬using report wizard ‫هيظهر لى مربع حوارى خاص بالتقرير نختر منها‬

(28(
Ashraf Aboelela Toufik
‫نختر منها ‪ standard‬ونضغط ‪ ok‬هيظهر شكل التقرير كالتالى ‪:‬‬

‫نأتى على مشروع ‪ Students‬ومن ‪ add‬ثم ‪ new item‬نقوم بإضافة ‪ DataSet‬بإسم‬


‫‪ resultDS.xsd‬كالتالى ‪:‬‬

‫(‪(29‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫هيظهر عندى ملف ‪ resultDS.xsd‬فى المشروع كالتالى ‪:‬‬

‫نأتى بداخل ملف ‪ resultDS.xsd‬ونضغط ‪ right click‬ثم نختر ‪ DataTable‬تظهر‬


‫كالتالى ‪:‬‬

‫(‪(31‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نقوم بتغيير اسم ‪ DataTable1‬بنفس اسم الجدول ‪ answers‬التى نستدعى منه البيانات‬
‫ونضغط ‪ right click‬ثم نختر ‪ add column‬ونضيف حقول بنفس اسماء الحقول‬
‫الموجودة فى جدول ‪ answers‬حتى يتم ربط البيانات فى ‪DataTable‬‬
‫نقوم بإضافة ‪ column‬بإسم ‪ id‬ويكون خاصية ‪ unique‬تكون ‪. true‬‬
‫إضافة ‪ column‬بإسم ‪ q_id‬ويكون خاصية ‪ data type‬تكون ‪. system.int32‬‬
‫إضافة ‪ column‬بإسم ‪ answer‬ويكون خاصية ‪ data type‬تكون ‪. system.string‬‬
‫إضافة ‪ column‬بإسم ‪ result‬ويكون خاصية ‪ data type‬تكون ‪system.string‬‬
‫هيتم اضافة هذه الحقول كالتالى ‪:‬‬

‫الزم يكون اسم الجدول والحقول بنفس االسماء اال تم كتابتها فى ‪ DataTable‬حتى يتم‬
‫ربط البيانات ‪.‬‬
‫نأتى على ملف ‪ ResultReport.rpt‬ومن ‪ field explorer‬نأتى على ‪Database‬‬
‫‪ Fields‬ونضغط ‪ right click‬ثم نختر ‪ Database Expert‬يظهر لى االتى ‪:‬‬
‫نأتى من شاشة ‪ Database Expert‬من ‪ Project Data‬نختر ‪ADO.net‬‬
‫‪ DataSets‬نختر منها ‪ Students.reultDS‬ونختر من ‪ DataSet‬نجد بها‬
‫‪ DataTable‬اال تم انشائها ‪ answers‬كالتالى ‪:‬‬
‫(‪(31‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نختر منها ‪ DataTable‬اال تم انشائها ‪ answers‬نقوم بالضغط على مفتاح > كالتالى ‪:‬‬

‫(‪(32‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نالحظ ان هيظهر لى اسم ‪ DataTable‬اال تم انشائها ‪ answers‬وبها حقول او‬
‫‪ columns‬فى ‪ field explorer‬فى ملف ‪. ResultReport.rpt‬‬
‫نأتى على جزء ‪ Report Header‬ونضغط ‪ right click‬ثم نختر ‪ insert‬ثم نختر‬
‫‪ Text Object‬نكتب عنوان للتقرير ‪. Exam Result‬‬
‫نأتى على جزء ‪ Page Header‬ونضغط ‪ right click‬ثم نختر ‪ insert‬ثم نختر ‪Text‬‬
‫‪ Object‬نكتب اسماء العناوين التى نرغب فى عرضها فى التقرير ‪.‬‬
‫نأتى على جزء ‪ Details‬ونقوم بسحب اسماء الحقول التى نرغب فى عرضها فى‬
‫التقرير من جزء ‪ Database Fields‬من ‪ DataTable‬اال تم انشائها ‪. answers‬‬
‫هيكون شكل تصميم التقرير كالتالى ‪:‬‬

‫يكون شكل ‪ Solution Explorer‬للمشروع ككل كالتالى ‪:‬‬

‫(‪(33‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نأتى على مشروع ‪ Teacher‬ونضغط ‪ right click‬ثم نختر ‪. Set as Startup‬‬
‫نقوم بتشغيل مشروع ‪ Teacher‬هيتم عرض فورم ‪ LoginForm‬كالتالى ‪:‬‬

‫عند الضغط على مفتاح ‪ Login‬بدون كتابة االسم والباسورد هيتم عرض ‪ label‬االتى ‪:‬‬

‫نالحظ انه عند كتابة االسم والباسورد خطأ كالتالى ‪:‬‬

‫هيتم عرض رسالة الخطأ التالى ‪:‬‬

‫(‪(34‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نالحظ انه عند كتابة االسم صح والباسورد خطأ كالتالى ‪:‬‬

‫هيتم عرض رسالة الخطأ التالى ‪:‬‬

‫نالحظ انه عند كتابة االسم والباسورد صح هيتم عرض كالتالى ‪:‬‬

‫(‪(35‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نالحظ انه تم عرض البيانات الموجودة فى اداة ‪ DataGridView1‬من خالل‬
‫‪ method‬التى تسمى ‪ getallstudent‬فى حدث ‪. form-load‬‬
‫نالحظ انه عند الضغط على مفتاح ‪ New‬هيتم مسح البيانات على ‪ texts‬اال موجودة‬
‫على الفورم ‪.‬‬
‫نقوم باضافة البيانات فى فورم ‪ Student Data‬كالتالى ‪:‬‬

‫عند الضغط على مفتاح ‪ Save‬هيتم حفظ البيانات وعرض رسالة ‪ Done‬كالتالى ‪:‬‬

‫نالحظ انه هيتم اضافة البيانات فى جدول ‪ students‬كالتالى ‪:‬‬

‫(‪(36‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نالحظ انه تم اضافة البيانات فى الفورم كالتالى ‪:‬‬

‫نقوم باضافة بيانات اخرى فى فورم ‪ Student Data‬كالتالى ‪:‬‬

‫(‪(37‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫عند الضغط على مفتاح ‪ Save‬هيتم حفظ البيانات وعرض رسالة ‪. Done‬‬
‫نقوم باضافة بيانات اخرى فى فورم ‪ Student Data‬كالتالى ‪:‬‬

‫عند الضغط على مفتاح ‪ Save‬هيتم حفظ البيانات وعرض رسالة ‪. Done‬‬
‫نالحظ انه هيتم اضافة البيانات فى جدول ‪ students‬كالتالى ‪:‬‬

‫(‪(38‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫للبحث عن بيانات طالب معين بكتابة اسم الطالب وليكن الطالب ‪ atef‬كالتالى ‪:‬‬

‫عند الضغط على مفتاح ‪ find‬هيتم عرض بيانات الطالب ‪ atef‬كالتالى ‪:‬‬

‫(‪(39‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫ممكن نقوم بتعديل بيانات الطالب ‪ atef‬كالتالى ‪:‬‬

‫عند الضغط على مفتاح ‪ update‬هيتم تعديل بيانات الطالب ‪ atef‬وممكن نبحث عن‬
‫طالب اخر وليكن ‪ adel‬كالتالى ‪:‬‬

‫(‪(41‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫عند الضغط على مفتاح ‪ find‬هيتم عرض بيانات الطالب ‪ adel‬كالتالى ‪:‬‬

‫ممكن نقوم بتعديل بيانات الطالب ‪ adel‬كالتالى ‪:‬‬

‫(‪(41‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫عند الضغط على مفتاح ‪ update‬هيتم تعديل بيانات الطالب ‪ adel‬وممكن نبحث عن‬
‫طالب اخر وليكن ‪ saad‬كالتالى ‪:‬‬

‫عند الضغط على مفتاح ‪ find‬هيتم عرض بيانات الطالب ‪ saad‬كالتالى ‪:‬‬

‫(‪(42‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫ممكن نقوم بتعديل بيانات الطالب ‪ saad‬كالتالى ‪:‬‬

‫عند الضغط على مفتاح ‪ update‬هيتم تعديل بيانات الطالب ‪ saad‬كالتالى ‪:‬‬

‫(‪(43‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫عند حذف اى طالب نقوم بالبحث عن الطالب وعند الضغط على مفتاح ‪ Delete‬يتم‬
‫حذف سجل البيانات الخاص بهذا الطالب ‪.‬‬
‫نقوم نبحث عن طالب وليكن ‪ sameh‬كالتالى ‪:‬‬

‫عند الضغط على مفتاح ‪ find‬هيتم عرض بيانات الطالب ‪ sameh‬كالتالى ‪:‬‬

‫(‪(44‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫عند الضغط على مفتاح ‪ Delete‬يتم حذف سجل بيانات الطالب ‪ sameh‬كالتالى ‪:‬‬

‫نقوم نبحث عن طالب وليكن ‪ ahmed‬كالتالى ‪:‬‬

‫(‪(45‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫عند الضغط على مفتاح ‪ find‬هيتم عرض بيانات الطالب ‪ ahmed‬كالتالى ‪:‬‬

‫عند الضغط على مفتاح ‪ Delete‬يتم حذف سجل بيانات الطالب ‪ ahmed‬كالتالى ‪:‬‬

‫(‪(46‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نقوم بفتح ‪ Tab‬الـ ‪ Questions‬فورم ‪ TeacherForm‬الخاص بإضافة أسئلة الطالب‬
‫كالتالى ‪:‬‬

‫عند الضغط على مفتاح ‪ new‬هيتم مسح البيانات الموجودة على ‪ texts‬فى ‪ Tab‬الـ‬
‫‪ Questions‬فورم ‪. TeacherForm‬‬
‫نقوم بإضافة السؤال واالجابات المتاحة واختيار رقم االجابة الصحيحة كالتالى ‪:‬‬

‫(‪(47‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫عند الضغط على مفتاح ‪ save‬هيتم اضافة البيانات على قاعدة البيانات وعرضها على‬
‫اداة ‪ DataGridView‬كالتالى ‪:‬‬

‫نقوم بإضافة سؤال آخر واالجابات المتاحة واختيار رقم االجابة الصحيحة كالتالى ‪:‬‬

‫(‪(48‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫عند الضغط على مفتاح ‪ save‬هيتم اضافة البيانات على قاعدة البيانات وعرضها على‬
‫اداة ‪ DataGridView‬كالتالى ‪:‬‬

‫نقوم بإضافة سؤال آخر عند الضغط على مفتاح ‪ save‬هيتم اضافة البيانات على قاعدة‬
‫البيانات وعرضها على اداة ‪ DataGridView‬كالتالى ‪:‬‬

‫(‪(49‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نقوم بإضافة سؤال آخر عند الضغط على مفتاح ‪ save‬هيتم اضافة البيانات على قاعدة‬
‫البيانات وعرضها على اداة ‪ DataGridView‬كالتالى ‪:‬‬

‫نقوم بإضافة سؤال آخر عند الضغط على مفتاح ‪ save‬هيتم اضافة البيانات على قاعدة‬
‫البيانات وعرضها على اداة ‪ DataGridView‬كالتالى ‪:‬‬

‫(‪(51‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نقوم بإضافة سؤال آخر عند الضغط على مفتاح ‪ save‬هيتم اضافة البيانات على قاعدة‬
‫البيانات وعرضها على اداة ‪ DataGridView‬كالتالى ‪:‬‬

‫نقوم بإضافة سؤال آخر عند الضغط على مفتاح ‪ save‬هيتم اضافة البيانات على قاعدة‬
‫البيانات وعرضها على اداة ‪ DataGridView‬كالتالى ‪:‬‬

‫(‪(51‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نالحظ انه للبحث عن سؤال معين نقوم بكتابة اسم السؤال كالتالى ‪:‬‬

‫وعند الضغط على مفتاح ‪ find‬هيتم عرض تفاصيل السؤال كالتالى ‪:‬‬

‫(‪(52‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نالحظ انه االسئلة الموجودة فى قاعدة البيانات ‪ questions‬كالتالى ‪:‬‬

‫نالحظ انه عند كتابة اسم سؤال غير موجود فى قاعدة البيانات للبحث عنه كالتالى ‪:‬‬

‫وعند الضغط على مفتاح ‪ find‬هيتم عرض رسالة السؤال غير موجود كالتالى ‪:‬‬

‫(‪(53‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫للبحث عن سؤال من االسئلة الموجودة فى قاعدة البيانات ‪ questions‬كالتالى ‪:‬‬

‫هيتم عرض بيانات السؤال كالتالى ‪:‬‬

‫(‪(54‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نقوم بتعديل بيانات السؤال الذى تم البحث عنه كالتالى ‪:‬‬

‫نالحظ انه تم حفظ البيانات بعد تعديلها فى قاعدة البيانات لذلك عند البحث عن نفس‬
‫السؤال مرة اخرى كالتالى ‪:‬‬

‫(‪(55‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫هيتم عرض االجابات بعد تعديلها كالتالى ‪:‬‬

‫نقوم بإضافة سؤال آخر عند الضغط على مفتاح ‪ save‬هيتم اضافة البيانات على قاعدة‬
‫البيانات وعرضها على اداة ‪ DataGridView‬كالتالى ‪:‬‬

‫(‪(56‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نالحظ انه تم اضافة البيانات على قاعدة البيانات كالتالى ‪:‬‬

‫لحذف سؤال معين نقوم بالبحث عن السؤال المراد حذفه وعرض بياناته كالتالى ‪:‬‬

‫لحذف بيانات السؤال الذى تم البحث عنه نقوم بالضغط على مفتاح ‪ Delete‬هيتم عرض‬
‫رسالة كالتالى ‪:‬‬

‫(‪(57‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نالحظ انه تم حذف السؤال من قاعدة البيانات كالتالى ‪:‬‬

‫نالحظ انه تم حذف السؤال من اداة ‪ DataGridView‬كالتالى ‪:‬‬

‫بعد االنتهاء من حفظ جميع االسئلة نقوم بالضغط على مفتاح ‪ finish‬يقوم بأخد نسخة‬
‫من ملف قاعدة البيانات الخاصة بأسئلة االمتحان التى تسمى ‪ test_db‬بإسم اخر ‪test‬‬
‫نالحظ ان الملف ‪ test_db‬تم انشاءه للقراءه منه وملف ‪ test2‬تم انشاءه للكتابة فيه وتم‬
‫تشفير الملف بعد نسخ جميع االسئلة فيه بحيث يتم ارسال الملف مشفر للطالب ‪.‬‬
‫ونقدر نعمل ‪ button‬خاص بفك تشفير الملف للطالب عند استالمه عبر االيميل ‪.‬‬

‫(‪(58‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نقوم بفتح ‪ Tab‬الـ ‪ Send Test‬فورم ‪ TeacherForm‬الخاص بإرسال أسئلة الطالب‬
‫هيتم اختيار اسم الطالب هيتم تحديد ايميله فى ‪ text‬الخاص بـ ‪ To‬وهيتم تحديد عنوان‬
‫الرسالة ومحتوى الرسالة فى ‪ body‬كالتالى ‪:‬‬

‫عند الضغط على مفتاح ‪ Send‬البد ان اقوم بكتابة اسم االيميل المرسل ليه بدال من‬
‫االيميل ‪ from@yahoo.com‬وكتابة ايضا الباسورد الخاص بااليميل فى الجزء‬
‫الخاص بـ ‪ credentials‬وتحديد عنوان الرسالة من ‪ txt_title‬والمرسل اليه من‬
‫‪ txt_to‬ونص الرسالة من ‪ txt_body‬وارفاق قاعدة البيانات ‪. test_db‬‬
‫نالحظ انه الطالب يقوم بفتح ملف قاعدة البيانات الذى به اسئلة الطالب ‪.‬‬
‫يقوم الطالب بفتح مشروع ‪ Students‬وتشغيل فورم ‪ StudentForm‬كالتالى ‪:‬‬

‫(‪(59‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫نقوم بالضغط على مفتاح ‪ Open Test‬واختيار ملف قاعدة البيانات ‪.‬‬
‫هنالحظ انه هيتم عرض االسئلة من خالل عرض السؤال االول واالجابات المتاحة‬
‫للسؤال كالتالى ‪:‬‬

‫هيتم بدء وقت االمتحان عند تحديد االجابة والضغط على مفتاح ‪ next‬لالنتقال الى‬
‫السؤال التالى ‪:‬‬

‫وهكذا االنتقال الى باقى االسئلة حتى انتهاء جميع اسئلة االمتحان وعند الضغط بعدها‬
‫على مفتاح ‪ next‬هتظهر الرسالة االتية ‪:‬‬

‫(‪(61‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫وعند الضغط على مفتاح ‪ finish‬هيتم ايقاف ‪ timer‬الخاص بالوقت وكذلك هيظهر‬
‫الوقت اال تم فيه االجابة على اسئلة االمتحان كالتالى ‪:‬‬

‫عند الضغط على مفتاح ‪ Show Result‬هيتم عرض فورم ‪ShowResult.vb‬‬


‫الخاصة بالتقرير لكن نالحظ انها تظهر بدون بيانات كالتالى ‪:‬‬

‫لذلك نأتى على ملف ‪ App.config‬ونكتب سطر الكود داخل ‪ tag‬الـ ‪ startup‬كالتالى ‪:‬‬

‫(‪(61‬‬
‫‪Ashraf Aboelela Toufik‬‬
‫بعد الكود السابق عند الضغط على مفتاح ‪ Show Result‬هيتم عرض فورم التى بها‬
‫بيانات التقرير كالتالى ‪:‬‬

‫(‪(62‬‬
‫‪Ashraf Aboelela Toufik‬‬

You might also like