فرمت فایل:word (قابل ویرایش)
تعداد صفحات :138
فهرست مطالب :
فصل اول
مقدمه ای بر c#
مقدمه ای بر C# 2
کلاس های پایه دات نت (dot net base class library): 3
Namespace چیست؟ 3
Visual studio.net 2005: 5
Solution چیست؟ 6
Console.WriteLine("Hello World - C# Tuning!"); 7
Console.WriteLine("Hello World - C# Tuning"); 7
Method چیست؟ 8
ایجاد متغییر ها در c#: 8
نوع های داده ای در c#: 8
:Value Types 9
وقتی مقدار متغییر دوم را تغییر دهیم مقدار متغییر اول دست نخورده باقی ماند 10
Enumerations: 10
کلاس ها: 11
ایجاد کلاس در c#: 13
فیلد ها درc#: 13
Person p; 14
Person p = new Person(); 15
Person x = new Person(); 16
Console.WriteLine(x.Age); // خروجی این خط صفر خواهد بود 16
شکل زیر اتفاقاتی که در خطوط با میافتد را تفسیر مینماید 16
Person myPerson = new Person(); 17
Person yourPerson = myPerson; 17
Refrence کپی در c#: 18
Place holders: 18
Console.WriteLine("MyName is {0} and I 'm {1} years old.",p.Name,p.Age); 19
متدها در c#: 19
فصل دوم
تجزیه وتحلیل سیستم
1)مطالعه و شناخت سیستم 23
1-2) تعریف: 23
آموزش مجازی چیست؟ 23
2-2) روند کاردرسیستم: 23
2-2-3) اطلاع رسانی از طریق مقالات و اخبار موجود 23
4-2-3) امکان توسعه سایت و اضافه نمودن رشته های جدید 24
شرح DFD: 24
فرایند های اصلی سیستم شامل فرایند های زیر میبا شد 25
که در نمودار برخی از این فرایند ها ترکیب شده اند. 25
مدلسازی معنایی داده ها با روش (ER): 25
مراحل مدلسازی معنایی 26
شرح ERD: 27
فصل سوم
پیاده سازی سیستم
مقدمه 29
شکل زیر نحوه قرار دادن image بر روی فرم را نشان میدهد. 32
بعد از انتخاب این گزینه باید تنظیمات لازم را به شکل زیر انجام داد. 34
فرم زیر صفحه اول سایت است که به تمام صفحات لینک دارد 40
فصل چهارم
کد و پایگاه داده
کد مربوط به فرم ثبت نام (تائید نام کاربری و رمز ورود) 57
کد مربوط به فرم ثبت نام (ورود مشخصات فردی) 57
کد مربوط به فرم ورود به سایت 58
کد مربوط به فرم معرفی رشته ها 61
کد مربوط به فرم دروس ارائه شده 62
کد مربوط به فرم لیست واحدهای پاس شده 63
کد مربوط به فرم ساعات تدریس 64
کد مربوط به فرم تاریخ امتحانات 65
کد مربوط به فرم لیست نمرات 66
کد مربوط به فرم لیست دانشجویان 68
کد مربوط به فرم واحدهای باقیمانده 69
کد مربوط به فرم کارنامه 71
کد مربوط به فرم انتخاب واحد 72
کد مربوط به فرم حذف و اضافه 78
اتصال به SQL با استفاده از DataSet 80
تنظیمات مربوط به Gridview 91
معرفی TableAdapter ها DataSet_virtual.xsd شامل 97
جداول واسط 105
جداول JOIN شده 109
فصل پنجم
نتیجه گیری
زیر ساختهای آموزش مجازی 114
به روز آوری اطلاعات 115
سایر کاربردها 116
شیوه های جذب دانشجو 116
فناوری اطلاعات، فرصتی برای آموزش الکترونیک 117
آموزش آنلاین حق دانشجویان است 118
لزوم تولید محتوای مناسب آموزشی 118
سه دهه با آموزش الکترونیکی 119
عقب ماندگی از زمان 120
آخرین تحولات در این زمینه 121
منابع و ماخذ: 122
مقدمه ای بر C#
سی شارپ در سال 2001 توسط شرکت مایکروسافت به همراه بسته دات نت برای اولین بار مطرح و ارائه شد. که بعد ها به عنوان یک زبان برنامه نویسی استاندارد توسط ECMA و ISO مورد تائید قرار گرفت.
زبان برنامه نویسی سی شارپ توسط تیمی به مدیریت اندرز هایلزبرگ که قبلا تجربه ارائه زبان های برنامه نویسی موفقی همچون توربو پاسکال و دلفی رو داشت ایجاد شد. هایلزبرگ سی شارپ را یک زبان برنامه نویسی شی گراء که از زبان های برنامه نویسی بزرگ (همچون دلفی , جاوا و اسمال تاک( تاثیر پذیری داشته معرفی میکند Syntax زبان سی شارپ شبیه به C++ میباشد والبته تفاوت های بسیاری هم دارد.
دات نت فریم ورک (NET Framework) یه بسته نرم افزاری شامل راه حل بسیاری از نیازهای توسعه نرم افزاری (Base Class Library) و همچنین امکان توسعه و اجرای برنامه های تولید شده برای این فریم ورک میباشد. برنامه های تولید شده برای دات نت فریم ورک توسط Common Language Runtime اجرا میشوند CLR یا همان Common Language Runtime سرویس هایی مهمی از قبیل Garbage Collection , Memory Managementو Exception Handlingرا ارائه میدهد.
Garbage Collection: در زبان برنامه نویسی سی شارپ دیگر نگرانی از جهت مدیریت اشیاء در حافظه وجود ندارد به این معنی که وقتی شما شیء ایجاد میکنید بعد از اینکه دیگر از آن شی ء استفاده نکردید آن شیء به طور اتوماتیک از حافظه پاک خواهد شد.
این کار توسط GC یا همان Garbage Collectoانجام میشود.روش کار GC به این ترتیب است که تا موقعی که Referenceی به یک object وجود داشته باشد آن شیء در حافظه باقی خواهد ماند اما در صورتیکه Referenceی به آن شیء وجود نداشته باشد بعد از یک بازه زمانی نامشخص آن شیء به صورت اتوماتیک از حافظه پاک خواهد شد. برخلاف زبان های برنامه نویسی دیگر وقتی کد شما در زبان برنامه نویسی سی شارپ (یا هریک از زبان های دیگر دات نت) کامپایل میشود به یک زبان دیگری به نام Intermediate Language یا همان IL تبدیل میشود. و در موقعی که درخواست برای اجراء آن داده میشود توسط یک مکانیزمی به نام Just In Time Compiler که در CLR موجود است به زبان خاص آن ماشین تبدیل شده و اجراء میگردد.
سی شارپ یک زبان شیء گراست به این معنی که هرآنچه که در سی شارپ وجود دارد در غالب دو مفهوم کلاس (Class) و شیء (Object) و روابط بین آنها خلاصه میشود.
کلاس(Class): در واقع یک ایده (Concept) یا ذهنیت میباشد. مثلا یک نجار چه ذهنیتی نصبت به یک "میز" دارد؟ خوب مسلما یه صفحه , چهار پایه و.... این ذهنیتی است که یک نجار نسبت به "میز" دارد. این دقیقا مفهوم کلاس است. یعنی تا موقعی که آن میز ساخته نشه فقط یک ذهنیت یا در واقع کلاس است.
شیء(object): اشیاء موجودیت هایی هستند که از کلاس ها (ذهنیت) ساخته میشوند. باز برای مثال همان نجار وقتی ذهنیتش رو به واقعیت تبدیل میکنه در واقع یک میز میسازه یا یک شیء(object) ایجاد کرده است.
کلاس های پایه دات نت (dot net base class library):
دات نت فریم ورک حدود 2500 کلاس دارد.
Namespace چیست؟
پیدا کردن یک کلاس بین 2500 کلاس پایه و احتمالا کلاس هایی که خودتان نامگذاریشان میکنید احتمالا کار سختی خواهد بود! Namespace ها در حقیقت این امکان رو به شما میدهند که بتوانید کلاس های خودتان را دسته بندی کنید و هر کلاس را داخل دسته مورد نظر خودشان قرار بدهید. به عنوان مثال ما کلاسی داریم به نام SqlConnection و همینطور کلاس دیگری به نام SqlDataAdapter و غیره برای همین یک Namespace به نام System.Data.SqlClient ایجاد شده که کلاس هایی که مربوط به System و کار با داده ها (Data) و در نهایت مختص Sql Server هستند رو داخل این namespace قرار میدهیم. توی این تصویر تعدادی از namespace های عمومی دات نت نشان داده شده اند.
این نکته را هم بیاد داشته باشید که اسم کامل یک کلاس شامل اسم به همراه نام namespace آن است.
System.Data.SqlClient.SqlConnection اسم کامل آن (qualified name) کلاس sql connection میباشد.
using
اما اگر قرار باشد برای استفاده از یک کلاس همیشه اسم کاملش را بنویسیم. برای همین شما میتوانید با یکبار نوشتن اسم Namespace آن کلاس (یا کلاس هایی که میخواهید استفاده کنید) با استفاده از یک keyword به نام using از تکرارآن جلوگیری کنید. به عنوان مثال ما در یک مثال میخواهم ده ها بار از کلاس Console و دستوراتش استفاده کنیم. برای همین بالای کدمان یک بار using System را ذکر میکنیم تا از نوشتن کلمه System برای دفعات مکرر جلوگیری کنیم.
Visual studio.net 2005:
نسخه 8 Visual Studio شرکت مایکروسافت که خیلی راحت میتوانید از بازار تهیه کنید. بعد از اینکه مراحل نصب تمام شد. از منوی Start --> All Programm --> Microsoft Visual Studio 2005 روی Microsoft Visual Studio 2005 کلیک کنید تا پنجره مقابل برایتان باز شود. مطابق شکل زیر Start page میباشد
اگر دقت کنید سمت چپ بالا دو تا گزینه Open و Create که امکان ایجاد یا باز کردن پروژه یا وب سایت را به شما میدهد وجود دارد. روی گزینه Create Project کلیک کنید(می توانید این کار رو با استفاده از کلید های Shift + Ctrl + N هم انجام بدهید).
در پنجره مقابل روی گزینه Visual CSharp کلیک کنید تا انواع پروژه هایی که میشود با زبان سی شارپ تولید کرد را ببینید. در قسمت پائین صفحه داخل قسمت Name نام پروژه خود را بنویسید و در قسمت Location مسیر پروژه خود را مشخص کنید و در نهایت اسم Solution را وارد نمائید. به صورت پیش فرض اسم Solution همان اسم پروژه شماست. دقت کنید که در دات نت برای هر پروژه یک Folder ایجاد خواهد شد. البته در صورتیکه شما گزینه Create directory for solution را هم تیک بزنید یک Folder هم برای Solution ایجاد خواهد شد.
Solution چیست؟
Solution یا به معنای فارسی راه حل بالاترین سطح دسته بندی در محیط ویژوال استودیو دات نت است. یک Solution میتواند یک یا چند پروژه و هم این طور فایل را در کنار هم دسته بندی نماید.اصولا وظیفه Solution نگهداری اطلاعات روابط بین پروژه هاست که یک فایل با پسوند sln میباشد. و دارای تاثیر در خروجی پروژه نخواهد بود. در مقابل Project یا همان پروژه ها دارای خروجی مستقیم با توجه به نوعشان هستند. به عنوان مثال Console Application ها دارای خروجی با پسوند exe به معنای executable یا همان فایل های قابل اجراء میباشند.
بعد از اینکه کلید OK را کلیک کردید پروژه شما ایجاد میشود و برای شما یک فایل به نام Programm.cs را باز مینماید. این فایل به صورت پیش فرض محلی است که نرم افزار شما از داخل آن شروع خواهد شد. حالا فقط برای اینکه شروع کرده باشیم داخل این فایل و مطابق شکل زیر شروع به تایپ کردن نمایید.
Console.WriteLine("Hello World - C# Tuning!");
و در نهایت برای اینکه نرم افزار را بتوانید تست کنید کافی است که کلید Ctrl + F5 رو بزنید تا این نتیجه مقابل را بگیرید:
ابتدا کدی را که قبلا نوشتیم را بررسی کنیم.
Console.WriteLine("Hello World - C# Tuning");
این خط در حقیقت همان جمله Hello World - C# Tuning را برای ما چاپ میکند. در حقیقت کلاس Console دارای یک رفتار (Method) میباشد که امکان چاپ بر روی صفحه رو به ما میدهد. این متد writeline میباشد. پس اگر شما هر چیز دیگری داخل پرانتز و بین " " قرار دهید همان را برای شما چاپ خواهد کرد.
Method چیست؟
در واقع Method ها همان رفتار هایی هستند که ما از کلاس ها انتظار داریم. در مثال بالا نوشتن بر روی تصویر را میتوانیم با استفاده از متد WriteLine بر روی کلاس Consol استفاده کنیم.
ایجاد متغییر ها در c#:
برای ایجاد یک متغییر در سی شارپ باید ابتدا نوع داده ای آن و سپس نام متغییر را وارد نمائیم و در انتها ; را تایپ کنیم:
کد:
int MyNumber = 1000;
Console.WriteLine(MyNumber);
در مثال بالا از نوع داده ای int که یک نوع داده ای عددی است استفاده شده است. پس میتوانیم مقادیر عددی رو داخل این متغییر قرار دهیم. و مثل کد بالا با استفاده از WriteLine چاپش کنیم.
نوع های داده ای در c#:
نوع های داده ای را میتوان بسته به محل قرار گیریشان در حافظه به سه دسته تقسیم کرد:
1. Values Types
2. Reference Types
3. Pointer Types
اگرحافظه را به دو قسمت Stack و Heap تقسیم کنیم. مقادیر تمامی متغییر های نوع اول در حافظه Stack قرار میگیرد و به همین جهت دارای رفتارهای خاصی میشود مقادیر متغییر های نوع دوم در حافظه Heap قرار میگیرند.
:Value Types
همان طور که گفتیم مهمترین خاصیت این نوع متغییر ها قرارگیری مقادیر آن ها در حافظه Stack میباشد که به همین دلیل رفتارهای خاصی خواهند داشت. این نوع متغییر ها شامل Primitive Types یا همان نوع های بدوی Enum ها و Structها میباشند.
umeric Types , Boolean , Char نوع هایی هستند که به آن ها Primitive Types میگوییم. نوع های عددی شامل int , double decimal, long , short , byte و... که مقادیر مختلفی از اعداد را داخل خودشان نگه میدارند.boolean ها متغییر هایی هستند که فقط مقدار True و False به معنی مثبت یا منفی رو داخل خوشان نگه میدارند. و در نهایت Char ها همان کاراکتر ها هستند.
کد:
bool married = false;
int myNumber = 1000;
char c = 'c';
دقت داشته باشین که برای مقدار دهی char از ' یا همان Single Quotation استفاده کردیم. و برای bool فقط مقدار true یا false امکان پذیر است.
گفتیم که ValueType ها دارای رفتار خاصی هستند. اما چه رفتاری؟
وقتی یک متغییر از یکی از نوع های Value Type مثل int ایجاد میکنیم مقدار آن داخل حافظه Stack قرار میگیرد و وقتی از آن متغییر یک کپی میگیریم مقدار متغییر قبلی داخل متغییر جدید کپی شود.یعنی اگر مقدار متغییر دوم را عوض کنیم تاثیری روی مقدار متغییر اول نخواهد گذاشت. این رفتار در مورد تمامی ValueType ها صدق مینماید:
وقتی مقدار متغییر دوم را تغییر دهیم مقدار متغییر اول دست نخورده باقی ماند
Enumerations:
فرض بفرمائید که شما میخواهید یک کلاس تعریف کنید به نام انسان. وقتی خواص انسان رو تحت بررسی دارین به جنسیت میرسید. حالا میخواهیم روی کلاس انسان یک متغییر برای نشان دادن جنسیت تعریف کنیم. به نظر شما جنسیت رو از چه نوعی باید در نظر گرفت؟ bool یا int؟اگر bool در نظر گرفتیم false به معنی مرد خواهد بود یا true؟
اگر int در نظر گرفتیم چه عددی بیانگر مرد و چه عددی بیانگر زن میباشد؟
و اگر کاربر شماعددی به غیر اعداد انتخابی شما وارد کرد چه طور؟
گاهی اوقات در توسعه نرم افزار ها ما به جنس (Type)هایی نیاز داریم که بتوانیم مقدار شان را محدود کنیم. مثلا همین جنسیت.
با استفاده از Enumeration ها میتوانیم مقدار متغییر جنسیت رو به مرد یا زن محدود کنیم.
برای ایجاد یک Enumeration باید در یک فایل با پسوند cs که بیانگرسی شارپ است از Syntax زیر استفاده کنیم:
کد:
public enum eSex
{
Male,
Female
}
دقت کنید که وقتی متغییری از این جنس بسازیم به هیچ وجه مقداری به غیر از مرد یا زن نمی توانیم اختصاص دهیم:
کد:
eSex Sex; // ایجاد متغییر از جنس یک enum
Sex = eSex.Male; // مقدار دهی متغییر
حالا میبینیم که چطور با استفاده از enum میتوانیم مقدار دهی یک متغییر را به مقادیر محدودی نسبت دهیم. در دات هم مثال های متعددی از استفاده از enum ها وجود دارد. مثلا یک enum به نام Keys تمامی کلید های صفحه کلید رو در خود جای داده است. یا enumی با نام ConnectionState وضعیت های امکان پذیر یک Connection رو نشان میدهد.
کلاس ها:
قبل از این تعریف کلاس را با هم بررسی کردیم. اما حالا چطور میتوان یک کلاس تولید کرد. فرض بفرمائید مفهومی مثل انسان را میخواهیم در غالب یک یک کلاس تعریف کنیم.ابتدا یک پروژه جدید از نوع Console Application با یک نام دلخواه در مسیر دلخواه تان ایجاد کنید. سپس یک فایل با نام Prgoramm.cs خواهید داشت که در مثال قبلی دیده بودیم. حالا باید یک کلاس جدید به پروژه اضافه کنیم. برای این کار باید از منوی View گزینه Solution Explorer رو انتخاب کنیم یا میتوانیم از کلید های Alt + Ctrl + L استفاده نمائیم.Solution Explore در واقع یک نمایش مبنتی بر فایل از پروژه یا Solution شماست که به صورت یک درخت واره (TreeView) میباشد. راس آن Solution شماست و سپس پروژه و Properties و Reference و در نهایت کلاس ها و آیتم های دیگر پروژه شماست. روی Project یعنی دومین آیتم از این درخت واره راست کلیک کرده و گزینه Add و بعد New Item رو کلیک مینمائیم. در پنجره ای که باز میشود یک Class را انتخاب و در قسمت پایین اسم فایل رو مشخص مینمائیم.
نکته ای که لازم است در نامگذاری فایل ها متدها و... رعایت کنید این است که نام گذاری کلاس ها بهتر است به ترتیبی باشد که حرف اول هر کلمه با حروف بزرگ (Upper Case) و ما بقی با حروف کوچک باشد. به عنوان مثال کلاس Person که P با حروف بزرگ و ما بقی کوچک میباشد. یا کلاس SqlConnection حروف اول هر کلمه یعنی S و C با Upper case نوشته میشوند. وقتی اسم رو تایپ کردین و گزینه Add رو زدید. سپس یک فایل به Solution Explorer اضافه خواهد شد و همزمان برای شما نمایش داده میشود. متن داخل فایل به این ترتیب است:
کد:
using System;
using System.Collections.Generic;
using System.Text;
namespace CSharpTuning.Samples
{
class Person
{
}
}
قبل از این در مورد کلمه using و namespace صحبت کرده ایم. همانطور که میدانید یک namespace یک دسته بندی برای کلاس هاست. حالا ما داریم یک namespace به نام CSharpTuning.Samples برای مثال های خود تولید میکنیم و کلاس Person را داخل این namespace قرار میدهیم. دقت کنین که هر namespace دارای یک block از کد میباشد که با استفاده از علامت } شروع و بعد با { پایان مییابد و هر آنچه که داخل این علامت باشد داخل آن namespace قرار خواهد گرفت.
ایجاد کلاس در c#:
برای ایجاد یک کلاس در سی شارپ شما باید داخل یک namespace از کلمه کلیدی class و سپس نام کلاس استفاده کنین. مثال با برای ایجاد کلاس Person داخل namespaceی به نام CSharptuning.Samples جمله فوق یعنی class Person رو به همراه یک block از کد برای این کلاس ایجاد میکنیم. دقت کنین که شما تا به اینجا دو علامت } و دو علامت { دیده اید یعنی شما دو block از کد دارید که یکی برای namespace و دیگری برای کلاس Person میباشد. هر آنچه که داخل {} علامت مربوط به کلاس Person قرار گیرد متعلق به کلاس Person است.
فیلد ها درc#:
تا ایجای کار کلاس ما هنوز هیچ عضوی ندارد اما ما میتوانیم از این کلاس استفاده کنیم. حالا باید داخل این کلاس اطلاعات مورد نظرمان را تعریف کنیم. من میخواهم Field های Name و Age رو برای این کلاس تعریف کنم. به این معنا که هر انسان (Person) دارای نام و سن میباشد برای تعریف یک Field با داخل block کلاس مورد نظر ابتدا کلمه public و سپس نوع داده ای و سپس نام متغییر را وارد نمائیم. پس من داخل block کلاس Person این دو جمله را تایپ مینمایم