PDA

View Full Version : سوال: تقویم سفارشی



Sonia_Naghdi
چهارشنبه 21 اسفند 1392, 13:48 عصر
من تو برنامه ام یک تقویم سفارشی نیاز دارم. منظورم از تقویم سفارشی این است که روزهای کاری شرکت را درنظر بگیرم. ممکن روز کاری شرکت از روزهای تعطیل نیز باشد و ساعت کاری شرکت نیز در برخی روزها مثل 5 شنبه متفاوت است. کاربر باید بتونه براساس نیاز شرکت تاریخ های تعطیل و ساعت کاری روزانه را تغییر دهد. من در بخش های زمان بندی فعالیت های کاری و ... از این تقویم استفاده خواهم کرد.
سوالم این هست که چطور می توانم چنین تقویمی را ایجاد کنم؟ آیا نمونه مشابهی دیده اید که به من کمک کند؟
با تشکر از توجه شما:لبخندساده:

majid_i68
پنج شنبه 22 اسفند 1392, 01:02 صبح
خب شما یه تاریخ شمسی برای شروع در نظر میگیرید DateTime objDate = new DateTime(1392, 12, 01, new PersianCalendar());//ساخت شی از کلاس دیتاتایم و مقداردهی شمسی آن بعد نام ماه رو از تاریخ میگیری و به شمسی برمیگردانی switch (objPersian.GetMonth(objDate))//// عدد ماه گرفته شده را سویچ میکنم و معادل حرف آن را به شمسی در متغیر قرار میدهیم { case 01: monthname = "فروردین"; return monthname; case 02: monthname = "اردیبهشت"; return monthname; case 03: return monthname = "خرداد"; break; case 04: return monthname = "تیر"; case 05: return monthname = "مرداد"; case 06: return monthname = "شهریور"; case 07: return monthname = "مهر"; case 08: return monthname = "آبان"; case 09: return monthname = "آذر"; case 10: return monthname = "دی"; case 11: return monthname = "بهمن"; case 12: return monthname = "اسفند"; default: return "no"; } با متد طول ماه رو هم بدست میاوری int leg = objPersian.GetDaysInMonth(y, Convert.ToInt32(m));//گرفتن طول هر ماه بعد روز شروع ماه رو هم بدست می آوری ..مثلا ماه از جمعه شروع شده ... بعد با یک حلقه از یک تا طول روزه ماه از جمعه شروع به قرار دادن اعداد میگذاری ..مثلاا جمعه میشه یکم و شنبه میشه دوم و... تا طول ماه .... public static int[,] Get(int monthStartDay,int leng)//این متد معادل یک روز را بصورت عدد میگیرد و طول آن ماه را و در یک ماتریس ذخیره میکند { // مثلا معادل شنبه صفر هست var monthMatrix = new int[6, 7]; var row = 0; var col = 0; for (int day = 1; day

majid_i68
پنج شنبه 22 اسفند 1392, 01:15 صبح
خب شما یه تاریخ شمسی برای شروع در نظر میگیرید
DateTime objDate = new DateTime(1392, 12, 01, new PersianCalendar());//ساخت شی از کلاس دیتاتایم و مقداردهی شمسی آن

عد نام ماه رو از تاریخ میگیری و به شمسی برمیگردانی
switch (objPersian.GetMonth(objDate))//// عدد ماه گرفته شده را سویچ میکنم و معادل حرف آن را به شمسی در متغیر قرار میدهیم { case 01: monthname = "فروردین"; return monthname; case 02: monthname = "اردیبهشت"; return monthname; case 03: return monthname = "خرداد"; break; case 04: return monthname = "تیر"; case 05: return monthname = "مرداد"; case 06: return monthname = "شهریور"; case 07: return monthname = "مهر"; case 08: return monthname = "آبان"; case 09: return monthname = "آذر"; case 10: return monthname = "دی"; case 11: return monthname = "بهمن"; case 12: return monthname = "اسفند"; default: return "no"; }

ا متد طول ماه رو هم بدست میاوری
int leg = objPersian.GetDaysInMonth(y, Convert.ToInt32(m));//


public static int[,] Get(int monthStartDay,int leng)//این متد معادل یک روز را بصورت عدد میگیرد و طول آن ماه را و در یک ماتریس ذخیره میکند
{
// مثلا معادل شنبه صفر هست
var monthMatrix = new int[6, 7];
var row = 0;
var col = 0;

for (int day = 1; day <= leng; day++)
{
row = (int)Math.Ceiling((day + monthStartDay) / 7.0);
col = (day + monthStartDay) % 7 == 0 ? 7 : (day + monthStartDay) % 7;
monthMatrix[row - 1, col - 1] = day;
}
return monthMatrix;
}
بعد روز شروع ماه رو هم بدست می آوری ..مثلا ماه از جمعه شروع شده ... بعد با یک حلقه از یک تا طول روزه ماه از جمعه شروع به قرار دادن اعداد میگذاری ..مثلاا جمعه میشه یکم و شنبه میشه دوم و... تا طول ماه.... و روزهای که مورد نظر شما هست رو به رنگ قرمز نشان میدهی و علت تعطیلی را هم ذکر میکنید

majid_i68
پنج شنبه 22 اسفند 1392, 01:16 صبح
سایت قاط زده

Sonia_Naghdi
پنج شنبه 22 اسفند 1392, 08:46 صبح
خب شما یه تاریخ شمسی برای شروع در نظر میگیرید
DateTime objDate = new DateTime(1392, 12, 01, new PersianCalendar());//ساخت شی از کلاس دیتاتایم و مقداردهی شمسی آن

عد نام ماه رو از تاریخ میگیری و به شمسی برمیگردانی
switch (objPersian.GetMonth(objDate))//// عدد ماه گرفته شده را سویچ میکنم و معادل حرف آن را به شمسی در متغیر قرار میدهیم { case 01: monthname = "فروردین"; return monthname; case 02: monthname = "اردیبهشت"; return monthname; case 03: return monthname = "خرداد"; break; case 04: return monthname = "تیر"; case 05: return monthname = "مرداد"; case 06: return monthname = "شهریور"; case 07: return monthname = "مهر"; case 08: return monthname = "آبان"; case 09: return monthname = "آذر"; case 10: return monthname = "دی"; case 11: return monthname = "بهمن"; case 12: return monthname = "اسفند"; default: return "no"; }

ا متد طول ماه رو هم بدست میاوری
int leg = objPersian.GetDaysInMonth(y, Convert.ToInt32(m));//


public static int[,] Get(int monthStartDay,int leng)//این متد معادل یک روز را بصورت عدد میگیرد و طول آن ماه را و در یک ماتریس ذخیره میکند
{
// مثلا معادل شنبه صفر هست
var monthMatrix = new int[6, 7];
var row = 0;
var col = 0;

for (int day = 1; day <= leng; day++)
{
row = (int)Math.Ceiling((day + monthStartDay) / 7.0);
col = (day + monthStartDay) % 7 == 0 ? 7 : (day + monthStartDay) % 7;
monthMatrix[row - 1, col - 1] = day;
}
return monthMatrix;
}
بعد روز شروع ماه رو هم بدست می آوری ..مثلا ماه از جمعه شروع شده ... بعد با یک حلقه از یک تا طول روزه ماه از جمعه شروع به قرار دادن اعداد میگذاری ..مثلاا جمعه میشه یکم و شنبه میشه دوم و... تا طول ماه.... و روزهای که مورد نظر شما هست رو به رنگ قرمز نشان میدهی و علت تعطیلی را هم ذکر میکنید
این نکاتی که توضیح دادید یعنی اینکه من یک تقویم برای هر سال با کدنویسی بنویسم. من علاوه بر چنین تقویمی که البته به دردم هم می خورد مسئله دیگری نیز داریم و آن این است که می خوام کاربر برنامه ام، روزهای تعطیل شرکت را به تقویم بتواند اضافه کند یا تعطیلات رسمی ممکن است اصلاً شرکت تعطیل نباشد و ساعت کاری روزها را نیز مشخص کند. یعنی تقویمم مختص به روز کاری شرکت نیز باشد. مطمئناً چنین تقویمی را باید در دیتابیسم ذخیره هم بکنم. لطفاً در مورد این موضوع نیز نظری دارید بفرمایید.

majid_i68
جمعه 23 اسفند 1392, 00:45 صبح
این تقویم برای همه سالها جواب میده ..من قبلا یه نمونه ساختم
http://bestteaching.mihanblog.com/post/69

majid_i68
جمعه 23 اسفند 1392, 00:59 صبح
با همون روشی که توضیح دادم ساخته شده ... فقط کافی هست که مثلا یک امکان در برنامه قرار بدهی که هر تاریخی که انتخاب شود بتوان به عنوان مثلا روز تعطیلی ثبت شود و علت ان رو هم میتوانید ذکر کنید .. و در دیتابیس ذخیره کنی ...کار چندان سختی نیست