Professional Documents
Culture Documents
AutoExam Application
AutoExam Application
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كالتالى :
((3
Ashraf Aboelela Toufik
نقوم بإنشاء مشروع هيكون اسم المشروع solutionككل بإسم ExamProject
وهيكون اسم التطبيق Teacherكالتالى :
((4
Ashraf Aboelela Toufik
نأتى بداخل ملف Module1ونقوم بإستدعاء Namespaceالخاص بمكتبة oledb
بداخل General Decrelationوبداخل Module1نقوم باالعالن عن بعض
المتغيرات التى يتم استخدامها وكتابة providerالخاص باالتصال بقاعدة البيانات
كالتالى :
وايضا إنشاء functionآخر بداخل Module1خاص بفورم الدخول على التطبيق يتم
تمرير االسم والباسورد بإسم loginكالتالى :
((5
Ashraf Aboelela Toufik
وايضا إنشاء functionاخرى بداخل Module1خاص بإضافة بيانات الطالب فى
جدول studentsبإسم insertstudentكالتالى :
((6
Ashraf Aboelela Toufik
وايضا إنشاء functionاخرى بداخل Module1خاص بتعديل بيانات الطالب فى
جدول studentsبإسم updatestudentكالتالى :
((7
Ashraf Aboelela Toufik
نقوم بإضافة فورم بإسم LoginForm.vbكالتالى :
((8
Ashraf Aboelela Toufik
نأتى على مفتاح Exitفى فورم LoginFormونكتب الكود االتى :
((9
Ashraf Aboelela Toufik
نالحظ انه فى Tabبإسم student dataنقوم بإضافة labelنخلى خاصية visible
تكون falseونضع اداة datagridviewونقوم بوضع مجموعة من panelلتقسيم
الفورم كما سبق .
نأتى بداخل فورم TeacherFormثم نقوم بإستدعاء بعض Namespaceالخاص
بداخل General Decrelationكالتالى :
((11
Ashraf Aboelela Toufik
نأتى على مفتاح saveفى Tabالـ student dataبداخل فورم TeacherForm
ونكتب الكود االتى :
((11
Ashraf Aboelela Toufik
نأتى على مفتاح deleteفى Tabالـ student dataبداخل فورم TeacherForm
ونكتب الكود االتى :
((12
Ashraf Aboelela Toufik
وايضا إنشاء functionاخرى بداخل Module1خاص بالبحث عن بيانات طالب فى
جدول studentsبإسم findquestionكالتالى :
((13
Ashraf Aboelela Toufik
وايضا إنشاء functionاخرى بداخل Module1خاص بحذف بيانات طالب من
جدول studentsبإسم deletequestionكالتالى :
((14
Ashraf Aboelela Toufik
نقوم بإنشاء subبداخل فورم TeacherFormخاص بمسح البيانات من controls
على الفورم بإسم clear_question_txtكالتالى :
((15
Ashraf Aboelela Toufik
نأتى على مفتاح findفى Tabالـ Questionsبداخل فورم TeacherFormونكتب
الكود االتى :
((16
Ashraf Aboelela Toufik
نأتى على مفتاح finishفى Tabالـ Questionsبداخل فورم TeacherForm
ونكتب الكود االتى :
((17
Ashraf Aboelela Toufik
نأتى على حدث loadلفورم TeacherFormونكتب االتى :
نالحظ انه فى الكود السابق هيتم عرض البيانات من جدول studentsفى اداة
datagridview1وعرض البيانات من جدول questionsفى اداة datagridview2
هنالحظ انه هيتم عرض اسماء الطالب فى اداة cmb_studentوعند تحديد االسم هيتم
تحديد valueالخاص به .
نالحظ ان شكل datagridview2فى الفورم هيكون كالتالى :
((18
Ashraf Aboelela Toufik
نأتى على TabPageالثالثة نغير خاصية textبإسم Send Testنقوم بتصميمها
كالتالى :
((19
Ashraf Aboelela Toufik
نالحظ ان اسماء الطالب فى اداة cmb_studentكالتالى :
نقوم بإنشاء مشروع اخر للطالب لالجابة على االسئلة بإسم Studentsفى نفس
Solutionكالتالى :
((21
Ashraf Aboelela Toufik
نقوم بإضافة Moduleفى تطبيق Studentsباسم Module1.vbكالتالى :
((21
Ashraf Aboelela Toufik
وايضا إنشاء subبداخل Module1خاص بفتح ملف قاعدة بيانات التى بها االمتحان
بإسم openfileكالتالى :
((22
Ashraf Aboelela Toufik
وايضا إنشاء subاخرى بداخل Module1خاص بتحديد ما اذا كانت االجابة التى
اختارها الطالب صحيحة trueاو خطأ falseبإسم setresultكالتالى :
((23
Ashraf Aboelela Toufik
نقوم بتصميم فورم StudentFormكالتالى :
نأتى على مفتاح open testفى فورم StudentFormونكتب الكود االتى :
((24
Ashraf Aboelela Toufik
نالحظ انه فى الكود السابق عند الضغط على مفتاح open testنقوم بتحديد ملف قاعدة
البيانات التى به اسئلة االمتحان سيتم فتح االمتحان من خالل subالذى يسمى
getallquestionويظهر السؤال فى txt_qوتظهر االجابات المتاحة فى
radiobuttonsالموجودة على الفورم .
نأتى على مفتاح Nextفى فورم StudentFormونكتب الكود االتى :
((25
Ashraf Aboelela Toufik
نأتى على حدث checkedchangedألدوات radiobuttonsونكتب الكود االتى :
بحيث انه عند قيام الطالب باختيار اى اجابة من خالل radiobuttonsهيتم تمرير رقم
االجابة وليكن aاو bاو cاو dالى methodالتى تسمى setanswerوذلك الضافة
االجابة التى حددها الطالب فى جدول answersوكذلك تمرير نفس االجابة الى
setresultوذلك لتحديد ما اذا كانت االجابة trueاو . false
نأتى على مفتاح finishفى فورم StudentFormونكتب الكود االتى :
((26
Ashraf Aboelela Toufik
نأتى على مفتاح show resultفى فورم StudentFormونكتب الكود االتى :
((27
Ashraf Aboelela Toufik
crystal نقوم بإضافةnew item ثمadd ومنStudents نأتى على مشروع
: كالتالىResultReport.rpt بإسمreports
: كالتالىusing report wizard هيظهر لى مربع حوارى خاص بالتقرير نختر منها
(28(
Ashraf Aboelela Toufik
نختر منها standardونضغط okهيظهر شكل التقرير كالتالى :
((29
Ashraf Aboelela Toufik
هيظهر عندى ملف resultDS.xsdفى المشروع كالتالى :
((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
هيكون شكل تصميم التقرير كالتالى :
((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كالتالى :
((36
Ashraf Aboelela Toufik
نالحظ انه تم اضافة البيانات فى الفورم كالتالى :
((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كالتالى :
((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كالتالى :
((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
نالحظ انه تم حذف السؤال من قاعدة البيانات كالتالى :
بعد االنتهاء من حفظ جميع االسئلة نقوم بالضغط على مفتاح 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الخاص بالوقت وكذلك هيظهر
الوقت اال تم فيه االجابة على اسئلة االمتحان كالتالى :
لذلك نأتى على ملف App.configونكتب سطر الكود داخل tagالـ startupكالتالى :
((61
Ashraf Aboelela Toufik
بعد الكود السابق عند الضغط على مفتاح Show Resultهيتم عرض فورم التى بها
بيانات التقرير كالتالى :
((62
Ashraf Aboelela Toufik