Python_project_phase2.pdf

‫فاز دوم پروژه‬
‫درس مبانی برنامه نویسی‬
‫موعد ارسال‪ 16 :‬تیر ‪1393‬‬
‫فاز دوم پروژه درس مبانی برنامه نویسی‬
‫به نام خدا‬
‫موعد ارسال‪ 16 :‬تیر ‪1393‬‬
‫نکات کلی‬
‫‪ ‬موعد تحویل ساعت ‪( 11:11‬ظهر) روز ‪ 11‬تیر ‪ 1111‬بوده و به هیچ عنوان تمدید نخواهد شد‪.‬‬
‫‪ ‬تأخیر تا ‪ 1‬ساعت‪ ،‬به ازای هر ‪ 1‬دقیقه موجب کسر شدن ‪ %1‬نمره‪ ،‬از ‪ 1‬ساعت تا ‪ 42‬ساعت موجب کسر‬
‫شدن ‪ %42‬نمره‪ ،‬از ‪ 42‬ساعت تا ‪ 41‬ساعت‪ ،‬به ازای هر ‪ 4‬دقیقه موجب کسر شدن ‪ %1‬نمرهی دیگر و‬
‫بین ‪ 41‬ساعت تا ‪ 24‬ساعت باعث کسر شدن ‪ %12‬نمره میشود ‪ .‬از ‪ 24‬ساعت تا ‪ 21‬ساعت نیز‪ ،‬به ازای‬
‫هر ‪ 1.4‬دقیقه موجب کسر شدن ‪ %1‬درصد نمره ی دیگر می شود‪ ( .‬بدیهی است که با تاخیر بیش از ‪21‬‬
‫ساعت ‪ %122‬نمره از شما کسر شده و دیگر از این تمرین نمره ای نمی گیرید )‬
‫‪ ‬قطع بودن اینترنت خوابگاه‪ ،‬کندی پایگاه اینترنتی دانشکده‪ ،‬تمام شدن کارت اینترنت و … هیچکدام‬
‫دلیل موجهی برای تأخیر نیستند‪ .‬بنابراین پیشنهاد میشود جوابهای خود را در دانشکده ارسال کنید‪.‬‬
‫‪ ‬هرگونه رونوشت‪ ،1‬برای منبع رونوشت و همچنین نسخههای رونویسی شده ‪ -2‬نمره در پی خواهد داشت‪.‬‬
‫‪ ‬تالش برای استفاده از منابع سیستم مانند کارت صدا و پرینتر و ‪ ...‬منجر به دریافت نمرهی صفر میشود‪.‬‬
‫‪ ‬سواالت خود را در صفحه درس مبانی برنامه سازی در سایت ‪ piazza.com‬مطرح کنید‪.‬‬
‫فاز دوم پروژه درس مبانی برنامه نویسی‬
‫‪ 1‬کپی یا همان کُپ‬
‫‪1‬‬
‫تکمیل سامانه مدیریت آزمایشگاه پژوهشی‬
‫در فاز قبلی پروژه‪ ،‬سامانه مدیریت آزمایشگاه پژوهشی را پیاده سازی کردید‪ .‬این سامانه قابلیت درج و حذف‬
‫اطالعات اساتید‪ ،‬دانشجویان و پروژهها و همچنین امکانات گزارش گیری از این دادهها را فراهم میکرد‪.‬‬
‫همان طور که پیش از این گفته شد‪ ،‬فاز دوم پروژه در راستای تکمیل و بهبود فاز اول خواهد بود و در این فاز یک‬
‫سری قابلیتها به قسمت قبل اضافه خواهید کرد‪.‬‬
‫به منظور این که اگر فردی به دالیلی موفق به نوشتن فاز اول پروژه نشده است‪ ،‬در نوشتن فاز دوم با مشکل مواجه‬
‫نشود و امکان کسب نمره از فاز دوم‪ ،‬مستقل از فاز قبل باشد‪ ،‬یک نمونه کد صحیح فاز اول‪ ،‬در اختیارتان قرار‬
‫میگیرد و هر کس مایل بود میتواند از این کد یا بخشهایی از آن برای بخش دوم پروژه ی خود استفاده کند‪.‬‬
‫فاز دوم پروژه درس مبانی برنامه نویسی‬
‫‪4‬‬
‫شرح پروژه‬
‫در این پروژه‪ ،‬قابلیتهای زیر به سامانه اضافه خواهد شد‪:‬‬
‫‪ -1‬واسط کاربری گرافیکی‬
‫‪ -4‬گزارشهای جدید‬
‫‪ -1‬مدیریت یکپارچگی دادهها‬
‫‪ -2‬تولید گزارش در قالب فایل‬
‫واسط کاربری گرافیکی‬
‫در قسمت قبلی پروژه‪ ،‬کاربر برای ثبت یا حذف اطالعات ملزم به استفاده از کنسول و رعایت ساختار نوشتاری‬
‫مشخص بود‪ .‬در این قسمت برای سهولت کار با سامانه‪ ،‬یک واسط گرافیکی در اختیار کاربر قرار میگیرد تا از این‬
‫پس بتواند به راحتی کارهای مورد نظر خود را به کمک آن انجام دهد‪ .‬در این فاز دیگر نیازی به استفاده از‬
‫دستورات تایپ شده وجود ندارد‪.‬‬
‫ظاهر گرافیکی که در تصویر زیر آمده است یک ظاهر پیشنهادی ساده است و در صورتی که مایل باشید میتوانید‬
‫آن را به صورت بهتری طراحی کنید اما به هر صورت قابلیتهای مورد نیاز باید در طراحی شما مد نظر قرار گرفته‬
‫باشد‪:‬‬
‫فاز دوم پروژه درس مبانی برنامه نویسی‬
‫با زدن کلید ثبت اطالعات کاربر به پنجره ی زیر هدایت می شود تا نوع داده ی مورد نظر خود را انتخاب کند‪:‬‬
‫‪1‬‬
‫بعد از انتخاب نوع داده‪ ،‬با زدن کلید تایید‪ ،‬متناسب با نوع داده انتخاب شده‪ ،‬فرم ثبت اطالعات به کاربر نمایش‬
‫داده میشود‪.‬‬
‫مثال فرض کنید کاربر پروژه را انتخاب کرده است‪:‬‬
‫فاز دوم پروژه درس مبانی برنامه نویسی‬
‫‪2‬‬
‫با زدن کلید ثبت ‪ ،‬اطالعات مربوطه ثبت میشود‪ .‬البته برای حالتی که شناسه تکراری وارد شده باشد به توضیحات‬
‫بخش یکپارچگی داده ها که در بخشهای بعدی صورت پروژه آمده است توجه کنید‪ .‬در صورت پیاده سازی بخش‬
‫یکپارچگی دادهها در حالت تکرار شناسه‪ ،‬باید پیغام مناسب به کاربر نمایش داده شود‪.‬‬
‫با زدن کلید حذف اطالعات کاربر به پنجرهای مشابه پنجره زیر هدایت میشود تا نوع موجودیت مورد نظر خود را‬
‫انتخاب نماید‪:‬‬
‫فرض کنید کاربر دانشجو را انتخاب میکند‪ .‬سپس باید به صفحهای هدایت شود که شناسه دانشجو را دریافت‬
‫کرده و با زدن کلید حذف‪ ،‬آن را حذف نماید‪.‬‬
‫ی دریافت خروجی گزارش را انتخاب نماید‪:‬‬
‫انواع گزارش موجود در این قسمت گزارش دانشجویان‪ ،‬اساتید و پروژه ها و همچنین گزارش هزینه ی پروژه ها‬
‫است‪ ( .‬برای سهولت کار‪ ،‬در این بخش به سایر گزارشهایی که در فاز قبل پیاده سازی کردید نیازی نیست )‬
‫گزارش اساتید و دانشجویان و پروژهها دقیقا به همان صورتی که قبال داشتیم تمامی اطالعات اساتید و یا دانشجویان‬
‫یا پروژهها را نمایش میدهد‪.‬‬
‫فاز دوم پروژه درس مبانی برنامه نویسی‬
‫با زدن کلید گزارش گیری کاربر باید پنجرهای مانند تصویر زیر مشاهده کند و بتواند در آن نوع گزارش و نحوه‬
‫‪1‬‬
‫گزارش هزینه پروژه نیز در ادامه در بخش گزارشهای جدید شرح داده شده است‪.‬‬
‫( در صورت انتخاب «مشاهده» نتایج گزارش را در یک پنجره به کاربر نمایش دهید و در غیر این صورت یعنی‬
‫در صورت انتخاب « ذخیره به صورت فایل» باید نتیجه گزارش را دریک فایل ذخیره نمایید‪ .‬توضیحات بیشتر در‬
‫این خصوص را در ادامه ی شرح پروژه و در قسمت تولید گزارش در قالب فایل مطالعه کنید‪) .‬‬
‫گزارش های جدید‬
‫دو نوع گزارش جدید به این سامانه اضافه شده است‪ .‬مورد ‪ 1‬به صورت امتیازی و مورد ‪ 4‬اجباری است‪.‬‬
‫‪ -1‬گزارش پروژهها بر اساس تاریخ‪( :‬امتیازی)‬
‫فاز دوم پروژه درس مبانی برنامه نویسی‬
‫‪1‬‬
‫در این گزارش‪ ،‬کاربر ابتدا یک بازه تاریخی با درج تاریخ شروع و تاریخ پایان تعیین میکند و در نتیجه ی گزارش‪،‬‬
‫نام تمام پروژههایی که در این بازه تاریخی قرار میگیرند به او نمایش داده میشود‪.‬‬
‫بر این اساس‪ ،‬در صورت پیاده سازی این گزارش‪ ،‬در واسط گرافیکی کاربر‪ ،‬در صورت انتخاب نوع گزارش به عنوان‬
‫گزارش پروژه ها‪ ،‬به جای حالت عادی‪ ،‬باید بعد از تایید پنجره دیگری به کاربر نمایش داده شود که از وی تاریخ‬
‫شروع و پایان مورد نظر را دریافت کرده و سپس با تایید آن بر اساس این تاریخ ها گزارش را تولید نماید‪.‬‬
‫‪ -2‬گزارش هزینه پروژهها‪( :‬الزامی)‬
‫به منظور فراهم سازی امکان ثبت و محاسبه هزینه های پروژه‪ ،‬باید یک سری اطالعات به مشخصههای نگهداری‬
‫شده برای موجودیت پروژه اضافه شود‪ .‬به این صورت که عالوه بر مشخصات قبلی که برای پروژه ثبت میشد‪،‬‬
‫مشخصهای به عنوان کمک هزینه دانشجویی نیز ثبت میشود‪ .‬یعنی یک پروژه مشخصات شناسه‪ ،‬نام‪ ،‬رشته‪،‬‬
‫تاریخ شروع و پایان و کمک هزینه دانشجویی خواهد داشت‪ .‬کمک هزینه دانشجویی یک عدد است‪ .‬مثال ‪12222‬‬
‫و این بدان معنی است که به هر دانشجوی عضو این پروژه در طی مدت انجام پروژه روزانه ده هزارتومان کمک‬
‫هزینه دانشجویی تعلق میگیرد‪.‬‬
‫گزارش هزینه های پروژه به این صورت خواهد بود که کاربر به وسیله شناسه‪ ،‬یک پروژه را تعیین میکند و شما‬
‫بر اساس تاریخ شروع و پایان پروژه تعداد روزهای انجام پروژه را محاسبه کرده و بر اساس میزان تعیین شده برای‬
‫کمک هزینه دانشجویی‪ ،‬هزینه پروژه به ازای این تعداد روز را محسابه میکنید‪ .‬از طرفی چون ممکن است در یک‬
‫پروژه به صورت همزمان چند دانشجو عضویت داشته باشند‪ ،‬این هزینه باید در تعداد دانشجوهای عضو پروژه ضرب‬
‫شود‪.‬‬
‫در نهایت عدد به دست آمده را به عنوان هزینه کلی این پروژه به کاربر نمایش میدهید‪.‬‬
‫بنابر این توجه داشته باشید که در این حالت نیز در واسط کاربری‪ ،‬در صورتی که کاربر نوع گزارش را‪ ،‬گزارش‬
‫هزینه انتخاب کند‪ ،‬بعد از تایید پنجره ی دیگری باز میشود که کاربر در آن شناسه پروژه مورد نظر خود را وارد‬
‫نماید و سپس با تایید این صفحه‪ ،‬گزارش تولید میشود‪.‬‬
‫مدیریت یکپارچگی داده ها (امتیازی)‬
‫که در سامانه ما هیچ گاه دو دانشجو‪ ،‬دو پروژه‪ ،‬دو استاد و ‪ ...‬دارای دو شناسه یکسان نخواهند بود‪ .‬در فاز قبل‪،‬‬
‫برای سهولت کار شما فرض کردیم که کاربر هیچ گاه در درج دادهها شناسههای تکراری به کار نخواهد برد و‬
‫همواره این یکتایی شناسهها در ثبت اطالعات رعایت میشود‪.‬‬
‫اما در این جا چنین تضمینی وجود ندارد! و ممکن است کاربر اشتباه کرده و مثال با وجود این که از قبل پروژه ای‬
‫با شناسه ‪ 12‬در سامانه ثبت شده است بخواهد پروژه دیگری را با همین شناسه در سامانه ثبت کند‪ .‬در این حالت‬
‫فاز دوم پروژه درس مبانی برنامه نویسی‬
‫همان طور که پیش از این تعریف شد‪ ،‬شناسه یک مشخصه و ویژگی یکتا برای هر موجودیت است‪ .‬به این معنا‬
‫‪7‬‬
‫شما باید از ثبت داده جلوگیری کرده و پیغام مناسبی به کاربر نمایش دهید تا متوجه شود که به اشتباه قصد‬
‫ثبت شناسه تکراری داشته است‪ .‬پیاده سازی این قابلیت‪ ،‬الزامی نیست و نمره اضافه دارد‪.‬‬
‫تولید گزارش در قالب فایل‬
‫پیش از این تمامی گزارشها به صورت نمایشی در کنسول به کاربر ارائه میشد اما در این فاز کاربر در هنگام‬
‫درخواست یک گزارش باید قادر به انتخاب دو گزینه باشد‪ .‬مشاهده گزارش یا دریافت گزارش به صورت فایل‪.‬‬
‫در صورت انتخاب مشاهده گزارش‪ ،‬کافی است نتایج گزارش را به صورت مناسب در واسط گرافیکی که برای کاربر‬
‫تهیه کردهاید به وی نمایش دهید اما در صورتی که دریافت گزارش به صورت فایل انتخاب شود‪ ،‬برنامه ی شما‬
‫باید نتایج گزارش را به صورت یک فایل با پسوند ‪ .txt‬ذخیره سازی کند‪ .‬پیاده سازی این بخش الزامی است‪.‬‬
‫نکات مهم‬
‫‪ -1‬با توجه به این که شاید برای قابلیتهای ثبت و حذف دادهها و گزارش گیریها که در فاز ‪ 1‬داشتیم نیاز‬
‫داشته باشید از بخشی از کدهای فاز قبل استفاده کنید‪ ،‬نمونه کد صحیحی در اختیارتان قرار میگیرد تا‬
‫اگر بنا به دالیلی فردی فاز قبلی پروژه خود را کامل انجام نداده بود در انجام این فاز دچار مشکل نشود‪.‬‬
‫‪ -4‬توجه داشته باشید که تنها تکمیل‪ ،‬تغییر و استفاده از کد نمونهای که ما در اختیارتان میگذاریم و یا کد‬
‫فاز قبل پروژه خودتان قابل قبول است و هر گونه استفاده از کد افراد دیگر ( حتی مربوط به فاز قبل )‬
‫تقلب محسوب شده و با این موارد طبق قوانین توافق شده در خصوص تقلب برخورد خواهد شد‪.‬‬
‫‪ -1‬شکل ظاهری واسط گرافیکی برنامه و طراحی مراحل ثبت اطالعات یا درخواست کامال بر اساس نظر و‬
‫سلیقه خودتان خواهد بود‪ .‬نمونههای تصویری مندرج در صورت پروژه سادهترین حالت پیشنهادی است‬
‫فاز دوم پروژه درس مبانی برنامه نویسی‬
‫‪4‬‬
‫و انجام کارهای اضافه جهت زیبایی بیشتر و هر گونه خالقیت جهت سهولت کار با واسط گرافیکی طراحی‬
‫شده توسط شما نمره اضافه خواهد داشت‪.‬‬
‫موفق باشید‬