PDA

View Full Version : مبتدی: ثبت ترم



avajavid
پنج شنبه 22 مرداد 1394, 19:14 عصر
سلام خدمت دوستان گرامی
من برای سیستم آموزش چطور میتونم یک ترم جدید ثبت کنم ؟؟ و در قسمت های دیگه چطوری می تونم چک کنم که آیا ترم تموم شده یا نه؟
اگه کمکم کنید خیلی خیلی ازتون ممنون میشم،بازم تشکر

aminmousavi
سه شنبه 27 مرداد 1394, 19:54 عصر
سلام دوست عزیز .
سوالتون بسیار گنگ و کلی هست . در هر صورت ، 2 راه حل دارین ترم ها دستی مشخص کنین که ترم جاری هست یا نه ؟ یا کار با تاریخ انجام بدین و از طریق تاریخ متوجه شین که ترم جاری هست یا نه .

روش اول : (روش دستی) : یک جدول میسازین به اسم ترم با فیلد ها :




id : int
Name : nvarchar 50
termJari : bit
توی این روش روی دکمه ساخت جدید ترم که کلیک میکنین همه ی رکورد ها رو termJari=0 قرار میدین و ترمی که جدید دارین میسازین رو برابر با 1 میکنین و اگر ترم روی خواستین از حالت غیر جاری به جاری بیارین باید باز همه ی رکورد ها رو مقدار termjari=0 بکنین و بعد رکورد مورد نظر رو termjari=1 قرار بدین . تو این روش هر رکوردی که termjari=1 باشه ترم جاری بحساب میاد .

روش دوم (کا با تاریخ) :
فیلد ها میشه :

id : int
Name : nvarchar 50
StartDate : nvarchar ,datetime
EndDate : nvarchar ,datetime
توی فیلد های تاریخ یا از nvarchar استفاده کنین یا datetime (خود من عادت کردم به nvarchar اما از datetime استفاده کنین بهتره) بعد برای درج و آپدیت ترم ها باید بررسی کنین که تاریخ شروع و پایان ترم بین تاریخ شروع و پایان بقیه ترم ها نباشه ! برای فهمیدن ترم جاری کافیه بینین تاریخ امروز توی کدام از بازه های تاریخ شروع و پایان یک رکورد از جدول ترم برابری میکنه . اون میشه ترم جاری

موفق باشین

avajavid
چهارشنبه 18 شهریور 1394, 10:44 صبح
از راهنمایی تون بسیار سپاس گذارم،من مبتدی هستم اگه بشه بیشترمنو در این مورد راهنمایی کنید خیلی ممنون میشم

aminmousavi
چهارشنبه 18 شهریور 1394, 10:52 صبح
شما اول باید ببینید از کدام روش میخواهیداستفاده کنید ، ودر کجاش مشکل دارید که بتونم بیشتر کمکتون کنم دوست عزیز

avajavid
چهارشنبه 18 شهریور 1394, 21:20 عصر
من ترجیح میدم از روش اول استفاده کنم،کمک کنید ممنون میشم

aminmousavi
پنج شنبه 19 شهریور 1394, 03:52 صبح
مجددا نگفتین کجای الگورتیم مشکل دارید ، چون سوالتون هم کلی هست و فقط یک تکه کد نیست ، نمیتونم براتون بنویسم ، اما براتون با جزیئات بیشتر شرح میدم
همانطو که قبلا عرض کردم فرض کنید جدول (پست اول) رو در پایگاه داده ای که دارین (sql یا اکسس) میسازید :
بعد باید برای مدیریت ترم 2 صفحه بسازید که شامل :
Term.aspx : که برای درج ، ویرایش و آپدیت ترم هست
TermList.aspx : که برای نمایش تمامی ترم هایی هست که تا بحال ساختید .

شرح کامل Termlist :
توی صفحه TermList شما یک دیتاگرید میزاید ( دیتاگرید خود asp یا کامپوننت های دیتاگیرید یا خودتون یک دیتاگرید طراحی میکنید ، که اگر خودتون طراحی کنید بهتره) و همچنین یک دکمه برای درج ترم جدید .
توی دکمه "درج ترم جدید" که هم میتونه تگ A باشه و هم میتونه Button تحت سرور باشه . شما آدرس صفحه www.mysite.com/Term.aspx?idterm=-1 (http://www.mysite.com/Term.aspx?idterm=-1) رو میدید که وقتی روش کلیک شد به این صفحه بره .
توی دیتاگرید هم یک select میزدید توی جدول Term و محتویات رو توی دیتاگرید نشون میدید + یک دکمه ویرایش که وقتی روش کلیک بشه میره به صفحه www.mysite.com/TermList.aspx?idterm=myID (http://www.mysite.com/TermList.aspx?idterm=myID)
که در اصل myID میشه همون id رکوردی که دکمه ویرایش رو زدید
نمونه :



ای دی
نام ترم
ترم جاری
ویرایش/حذف


1
نیمسال دوم 92/93
false
ویرایش (میره به صفحه www.mysite.com/term.aspx?idterm=1 (http://www.mysite.com/term.aspx?idterm=1))


2
نیمسال اول 93/94
false
ویرایش(میره به صفحه www.mysite.com/term.aspx?idterm=2 (http://www.mysite.com/term.aspx?idterm=2))


3

نیمسال دوم 93/94

true

ویرایش
(میره به صفحه www.mysite.com/term.aspx?idterm=3 (http://www.mysite.com/term.aspx?idterm=3))




شرح کامل صفحه term :
صفحه Term شامل کنترل های زیر میشه
4 تا دکمه : بازگشت ، درج ، آپدیت ، حذف
1 textbox : که برای عنوان ترم هست
1 checkbox یا 2 تا رادیو باتن یا 1 combobox :لبخند: : که برای نمایش ترم جاری در نظر گرفته میشه (فرض میگرم checkbox قرار دادین ، که اگر مقدارش true بود یعنی ترم جاری هست در غیر اینصورت ترم حاری نیست)

حالا برای قسمت کد نویسی :

PageLoad :
اول چک میکنید مقدار querystring برابر با -1 هست یا عددی دیگر
اگر برابر با -1 باشه باید دکمه های بروزرسانی و حذف رو visible شون رو false کنی . ولی اگر برابر با عدد دیگری باشه اول یک select میزنی در database که همچین id در جدول ترم هست یا نه ، اگر نبود که response.redirect میکنی به یک صفحه Error یا مثلا میرید باز به صفحه Termlist.aspx اما اگر مقدار درون جدول وجود داشت دکمه درج رو visible آن را false میکنی ، و مقادیر رو توی کنترل ها ست میکنید (نام ترم رو درون تکباکس ، و مقدار termjari رو به checkbox انتساب میدید)

BtnAdd (دکمه درج) :
اول چک میکنید که checkbox مقدارش چی هست ؟
اگر true بود : با دستور update تمامی رکوردهایی که مقدار termjari=true هست رو به termjari=false تغییر میدید :

Update Term SET Termjari='False' WHERE TermJari='True'

اما اگر مقدارش false بود نیازی نیست کاری انجام بدید .
بعد از آن شما مقدار جدید رو درج میکنید در دیتابیس ، که بصورت شبه کد میشه مثل زیر :

if (checkbox1.checked)
{
update();
}
add()



btnUpdate (دکمه بروزرسانی) :
در خط اول دوباره یک SELECT میزنید درون دیتابیس تا مقدار termjari رو داشته باشید (که بدونید قبل از تغییر مقدارش چی بوده ، که متوجه بشید کاربر اصلا تغییر داده مقدار ترم جاری رو یا نه)
در خط دوم یک if مینوسید که شرطش میشه : اگر مقدار ترم جاری قبل از تغییر (از دیابیس گرفتید) برابر بود با True و مقدار checkbox برابر بود با False شما پیغام error میدید که نمیتوان آپدیت صورت بگیرید چون ترم جاری میباشد نمیتوان از حالت جاری خارج شود .
در غیر اینصورت شما میتونید آپدیت کنید .
حالا برای آپدیت هم یک شرط نیاز دارید : اگر مقدار termjari (قبل از تغییر) برابر بود با checkbox.checked : میتوانید به راحتی آپدیت انجام بدید و مقدارها رو جایگزین کنید
اما اگر شرط بالا برقرار نبود میبایست : اول میبایست یک آپدیت انجام بدید (همان آپدیتی که در بخش add گفتم ) که ترم جاری رکورد رو برابر با false قرار بدید :

Update Term SET Termjari='False' WHERE TermJari='True'

و بعدش شما میتونید آپدیت رکورد رو انجام بدید
برای درک بهتر این قسمت :




عملیات
مقدار Checkbox1
مقدار Termjari درون دیتابیس


در این قسمت چون مقدار ترم جاری تغییر نخواهد داشت نیازی به عملیات اضافه نیست و یک راست عملیات بروزرسانی انجام میگیره
false
false


چون همیشه سیستم ما یک ترم جاری داره ، پس زمانی که مقدار ترم جاری یک رکورد که مقدارش false هست رو به true تغییر بدیم ، سیستم ما دارای 2 تا ترم جاری میشه ! پس حتما قبل بروزرسانی ترم انتخاب شده باید ترمی که در حال حاضر جاری هست رو از حالت جاری خارج کنیم
true
false


به علت اینکه ترم جاری شما بعد از آپدیت برابر با false خواهد شد و شما دیگر ترم جاری نخواهید داشت بنابر این میبایست پیغام خطا بدید که سیستم میبایست نرم جاری داشته باشد
false
true


در این قسمت چون مقدار ترم جاری تغییر نخواهد داشت نیازی به عملیات اضافه نیست و یک راست عملیات بروزرسانی انجام میگیره
true
true



شبه کد :

if (Termjari==true && Checkbox1.checked==false)
{
Error !
}
else
{
if (Termjari==Checkbox1.cheked)
{
UpdateRecord();
}
else
{
UpdateTermJari_To_False();
UpdateRecord();
}
}


btnDelete (دکمه حذف) :

مانند قسمت دکمه آپدیت اول باید یک SELECT بزنید و مقدار termjari رو از دیتابیس بگیرید
در این اینجا فقط به یک شرط نیاز دارین که بررسی میکنین : اگر termjari برابر با true بود پیغام خطا میدید که سیستم حتما باید یک ترم جاری داشته باشد ، برای حذف ابتدا باید یک ترم دیگر را جاری کنید و سپس اقدام به حذف نمایید
در قسمت else هم میتونید رکورد رو حذف کنید از دیتابیس
شبه کد :

if (termjari==true)
{
Error !
}
else
{
Delete();
}


btnBack (دکمه بازگشت) :


Response.Redirect("TermList.aspx");


و در آخر برای فهمیدن اینکه کدام ترم جاری هست Select میزنید :

SELECT * FROM Term WHERE TermJari='True'

اگر رکوردی بر نگرداند پیغام میدید هیچ ترمی در سیستم ثبت نشده است
و در غیر این صورت رکوردی بازگشتی (که حتما یک عدد هست) برابر با ترم جاری شماست

موفق باشید :لبخندساده:

avajavid
دوشنبه 30 شهریور 1394, 22:52 عصر
سلام از راهنمایی تون بسیار بسیار سپاسگزارم.
خوب وقتی من ثبت رو ترم می کنم چطوری باید بدونم چه چیزایی در اون ترم ثبت شده؟باید کد ترم رو انجا بیارم؟
لطف کنید یه راهنمایی کوچک کنید

aminmousavi
سه شنبه 31 شهریور 1394, 00:12 صبح
با سلام مجدد
خواهش میکنم ، باعث خوشحالیم میشه بتونم کمک کرده باشم .
چندبار من جمله تون رو خوندم اما واقعا متوجه منظورتون نشدم .
اگر منظورتون اینکه از کجا بدونید چه کلاس هایی توی اون ترم ثبت شده ، باید توی جدول کلاس هاتون یک فیلد idTerm داشته باشید که رابطه داره با جدول Term برای مشخص شدن اینکه چه کلاس هایی دارید درون یک ترم از کوئری زیر استفاده کنید :

SELECT * FROM Class WHERE idTerm=1