نمایش نتایج 1 تا 17 از 17

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

  1. #1
    کاربر دائمی آواتار asrah6
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    اصفهان
    پست
    153

    کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    سلام
    من یک جدول به نام tblgrade برای ثبت نمرات دانش آموزان دارم که شامل فیلد های زیر است:
    id به صورت خودکار شماره گذاری می شود
    DID کد درس است که با جدول درسها رابطه دارد
    TID کد ترم است که با جدول ترم ها رابطه دارد
    IDSt شماره دانش آموز که با جدول مشخصات دانش آموزان رابطه دارد
    Nomre نمره دانش آموز در درس مورد نظر می باشد
    RANk برای ذخیره رتبه دانش آموز در درس مورد نظر در آن کلاس می باشد.
    توسط عملیات اینسرت اطلاعات را از طریق فرم ویندوزی بدست آورده و در ستونهای DID,TID,IDSt,Nomre ذخیره می کنم در این قسمت داخل ستون RANK چیزی ذخیره نمی شود.
    سپس در ادامه رویداد همان باتن ذخیره نمره اومدم یک SqlDataAdapter گذاشتم و با کوئری زیر رتبه هر دانش آموز را در هر درس به دست می آورم و در یک دیتا گرید نمایش می دهم

    select IDSt ,DID,TID,Nomre,DENSE_RANK() over (order by Nomre desc) as Rank2
    from TblGrade
    where TID=@TID AND DID=@DID

    و بعد در ادامه رویداد همان باتن ذخیره نمره اومدم یک sql command گذاشتم و رتبه هر دانش آموز را از دیتاگرید نمایش رتبه بدست آورده و در ستون RANK از جدول نمره ذخیره می کنم
    در این روش هیچ مشکلی ندارم و تمام عملیات با موفقیت انجام شده و در کارنامه هم به درستی نمایش داده می شود
    حال سوالم اینجاست که به نظر شما راه من در اینکار چگونه است اگر به نظر شما خوب است که هیچ اما اگر روش خوبی نیست راه حل بهتری اگر دارید پیشنهاد کرده و توضیح بفرمایید

  2. #2
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    سلام.
    همونطور که خودتون هم در لابه لای صحبت هاتون اشاره کردید، رتبه دانش آموز یک عملیات محاسباتی (فیلد محاسباتی) هست که از روی فیلدهای نمره درس، سال تحصیلی و شماره ترم و کد درس محاسبه میشه. این گونه فیلدها رو درون جدول ذخیره نمی کنند دلیل اصلیش هم این هست که احتمال بروز خطا در چنین حالاتی زیاد هست و همچنین هزینه اضافی رو به سیستم تحمیل میکنه. چطور؟
    مثلا فرض کنید نمره یک دانش آموز به هر دلیلی بخواد عوض بشه (فرضا" اشتباه ثبت شده).
    در این حالت، تمامی رتبه هایی که ثبت کردید فاقد اعتبار هستن و نمیشه بهشون اعتماد کرد. حالا اگر فرض رو بر این بگیریم که شما یادتون مونده باشه که با تغییر یک نمره، دوباره تمامی رکوردهای مربوط به اون درس رو آپدیت کنید باز هم هزینه اضافی رو به سیستم وارد کردید (جدا از خطرناک بودن کار).
    اینگونه فیلدها رو بایستی در زمانی که به اونها نیاز داریم، محاسبه و استفاده کنیم.
    موفق باشید.

  3. #3
    کاربر دائمی آواتار asrah6
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    اصفهان
    پست
    153

    نقل قول: کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    با تشکر از شما
    برای بدست آوردن رتبه دانش آموز و نمایش در کارنامه نیاز به دو پارامتر است یکی کد ترم ودیگری کد درس
    این دو پارامتر را چگونه مشخص کنم

  4. #4
    کاربر دائمی آواتار sajadsobh
    تاریخ عضویت
    تیر 1390
    محل زندگی
    رشت
    سن
    37
    پست
    420

    نقل قول: کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    یه نگاه اینجا بنداز

  5. #5
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    نقل قول نوشته شده توسط asrah6 مشاهده تاپیک
    برای بدست آوردن رتبه دانش آموز و نمایش در کارنامه نیاز به دو پارامتر است یکی کد ترم ودیگری کد درس
    این حرف زمانی صحیح هست که یا شماره ترم در هر ترم جدید یه مقدار جدید و غیر تکراری بگیره!! یا به کد درس در هر ترم جدید یک شماره منحصربفرد بدید.
    در مورد شماره ترم که مرسوم هست اعداد 1 و 2 رو ثبت کنیم.
    در مورد کد درس هم، شما که نمیخوای در هر ترم جدید، دوباره همه درس ها رو با یه کد جدید، از نو ثبت کنی؟
    بذارید مثال بزنم.
    شما میای این ترم (مثلا ترم 1) برای درس با کد 12220 برای چندین دانش آموز نمره ثبت می کنی.
    سال آینده دوباره برای همین ترم و کد درس برای یکسری دانش آموز دیگه نمره ثبت میشه. حالا وقتی با استفاده از کد ترم و کد درس کوئری میزنی، غیر از این هست که نمرات سال (و سال های) گذشته هم لیست میشن؟
    به همین خاطر هست که گفتم سال تحصیلی هم باید باشه تا فقط نمرات این سال تحصیلی و این ترم برای اون درس خاص حساب بشه.
    این دو پارامتر را چگونه مشخص کنم
    متوجه نشدم.
    منظورتون از مشخص کردن چی هست؟ طراحی جدول منظورتون هست؟ یا در طراحی فرم ها؟
    کامل توضیح بدید.

  6. #6
    کاربر دائمی آواتار asrah6
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    اصفهان
    پست
    153

    نقل قول: کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    سلام وتشکر از شما برای پاسخگویی
    نقل قول نوشته شده توسط veniz2008 مشاهده تاپیک
    این حرف زمانی صحیح هست که یا شماره ترم در هر ترم جدید یه مقدار جدید و غیر تکراری بگیره!! یا به کد درس در هر ترم جدید یک شماره منحصربفرد بدید.
    در این سیستم که دارم طراحی می کنم قصد دارم دست مدرسه را برای ایجاد کارنامه های ماهیانه به هر تعداد که بخواهند باز بگذارم مثلا یک مدرسه می خواهد کارنامه ماهیانه مهر ماه و آبان ماه و بهمن ماه و ... داشته باشد یا یک مدرسه می خواهد کارنامه ماهیانه آبان ماه و آذر ماه و... را داشته باشد
    در ارسال کد ترم ( همون کارنامه ماهیانه ) به گزارش کارنامه مشکلی ندارم چون چاپ و مشاهده کارنامه ها را هم بر این اساس طراحی کردم
    اما مشکل اینجاست که هنگام طراحی کارنامه در استیمول سافت قصد دارم جلوی هر نمره سه ستون داشته باشم یکی رتبه دانش آموز در درس مورد نظر در کلاس
    و یکی رتبه دانش آموز در درس مورد نظر در پایه و یکی وضعیت درسی که با توجه به نمره به صورت عالی ، خوب و... نمایش می دهم
    در نمایش وضعیت مشکلی نیست اما دو مورد دیگر را نمی دانم چگونه بدست بیاورم
    عکس کارنامه را ببینید
    من می خواهم ستونی که با رنگ قرمز مشخص شده درست کنم

    k1.png
    کوئری هم به صورت زیر است که نمرات ثبت شده را مانند تصویر زیر مرتب می کند

    SELECT IDSt,DID, [Nomre],TID,DENSE_RANK() over (order by Nomre desc) as Rank1,
    CASE
    WHEN [Nomre] BETWEEN 18 AND 20 THEN N'عالی'
    WHEN [Nomre] BETWEEN 14 AND 17.99 THEN N'خوب'
    WHEN [Nomre] BETWEEN 10 AND 13.99 THEN N'متوسط'
    WHEN [Nomre] BETWEEN 0 AND 9.99 THEN N'ضعیف'
    END AS [Grade]
    FROM TBlGrade
    group by DID,IDSt,Nomre,TID
    order by DID,IDSt

    nomre.png
    کد درس (DID)
    19 مربوط به علوم --- 20 مربوط به درس ریاضی ---21مربوط به درس دینی---- 22 مربوط به درس هنر می باشد
    خوب اگر به عکس دقت کنید ستون Rank1 آمده نمرات همه درسها را مرتب کرده است در حالیکه من می خواهم نمرات درس علوم با هم مقایسه شود یا ریاضی ها با هم و......
    امیدوارم توضیحاتم کافی و خوب باشد.
    آخرین ویرایش به وسیله asrah6 : شنبه 11 آبان 1392 در 15:54 عصر

  7. #7
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    جدول TblNomre رو در نظر بگیرید :

    TblNomre.JPG

    در کدهای زیر، تابع partition باعث میشه که به ازای درس جدید، شماره گذاری مجددا از 1 شروع بشه.
    بدست آوردن رتبه تمام دانش آموزان :

    ResultforAllNomre.JPG

    و اگر میخواید برای یک دانش آموز خاص، رتبه اونو در تمام درس ها حساب کنید :

    ResultforOneStd.JPG
    موفق باشید.

  8. #8
    کاربر دائمی آواتار reza4359
    تاریخ عضویت
    مهر 1387
    محل زندگی
    So close
    پست
    619

    نقل قول: کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    نقل قول نوشته شده توسط veniz2008 مشاهده تاپیک
    جدول TblNomre رو در نظر بگیرید :

    TblNomre.JPG

    در کدهای زیر، تابع partition باعث میشه که به ازای درس جدید، شماره گذاری مجددا از 1 شروع بشه.
    بدست آوردن رتبه تمام دانش آموزان :

    ResultforAllNomre.JPG

    و اگر میخواید برای یک دانش آموز خاص، رتبه اونو در تمام درس ها حساب کنید :

    ResultforOneStd.JPG
    موفق باشید.
    با سلام دوستان عزیز
    در این رابطه حالا اگه بخواهیم رتبه را با مقایسه بین امتیاز کاربران بدست بیاریم به چه صورت هست یعنی بین کاربر a,b,c از طریق امتیازشون بیاد بگه از 3 تا کاربر a رتبه اول b رتبه دوم , c رتبه سوم
    اسکریپت این به چه شکله؟
    ممنون

  9. #9
    کاربر دائمی آواتار reza4359
    تاریخ عضویت
    مهر 1387
    محل زندگی
    So close
    پست
    619

    نقل قول: کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    دوستان اگه کسی اطلاع داره راهنمایی کنه لطفا بهش نیاز دارم

  10. #10
    کاربر دائمی آواتار reza4359
    تاریخ عضویت
    مهر 1387
    محل زندگی
    So close
    پست
    619

    نقل قول: کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    با سلام دوستان
    من جهت رتبه بندی از این اسکریپت استفاده میکنم ولی اعداد منفی را منفی در نظر نمیگیره و رتبه آنها را با اعداد مثبت یکی حساب میکنه باید چه تغییری در اسکریپتم بدم که منفی را تشخیص بده؟


    select id_user,score,RANK() over(order by score desc)as rank from tbl_score

  11. #11
    کاربر دائمی آواتار reza4359
    تاریخ عضویت
    مهر 1387
    محل زندگی
    So close
    پست
    619

    نقل قول: کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    سلام دوستان این مشکل بالا حل شد
    حالا برای بدست آوردن رتبه بعد از هر آزمون باید چکار کرد؟
    یعنی هر کاربر پس از هر آزمون با مقایسه بین دیگر کاربرانی که آزمون دادند رتبشو بیاد داخل یک لیبل نمایش بده

  12. #12
    کاربر دائمی آواتار reza4359
    تاریخ عضویت
    مهر 1387
    محل زندگی
    So close
    پست
    619

    نقل قول: کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    سلام دوستان ما که هر چی سوال اینجا میپرسیم هیچ کسی جواب نمیده
    من در خصوص بدست آوردن رتبه به یک مشکل برخوردم که وقتی رتبه را به دست میاریم و در دیتابیس ذخیره میکنیم رتبه قبلی در مقایسه با رتبه جدید مشکل داره
    مثلا اگه یک نفر آزمون داده و به همه سوالات پاسخ نداده و رتبه اون چون اولین نفر آزمون هست 1 بوده و در دیتابیس ثبت شده و نفر بعد که میخواد آزمون بده و همه سوالات را پاسخ داده اونم با توجه به نفر قبلی رتبه 1 را دارد حالا چطوری در دیتابیس رتبه نفر قبلی را با بعدی مقایسه کنیم و اون رتبه 1 نفر اول آزمون را به 2 تغییر بدیم ؟
    امیدوارم منظورم را رسانده باشم
    ممنون

  13. #13

    نقل قول: کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    نقل قول نوشته شده توسط reza4359 مشاهده تاپیک
    سلام دوستان ما که هر چی سوال اینجا میپرسیم هیچ کسی جواب نمیده
    من در خصوص بدست آوردن رتبه به یک مشکل برخوردم که وقتی رتبه را به دست میاریم و در دیتابیس ذخیره میکنیم رتبه قبلی در مقایسه با رتبه جدید مشکل داره
    مثلا اگه یک نفر آزمون داده و به همه سوالات پاسخ نداده و رتبه اون چون اولین نفر آزمون هست 1 بوده و در دیتابیس ثبت شده و نفر بعد که میخواد آزمون بده و همه سوالات را پاسخ داده اونم با توجه به نفر قبلی رتبه 1 را دارد حالا چطوری در دیتابیس رتبه نفر قبلی را با بعدی مقایسه کنیم و اون رتبه 1 نفر اول آزمون را به 2 تغییر بدیم ؟
    امیدوارم منظورم را رسانده باشم
    ممنون
    وقتی سوال میپرسید، باید اطلاعات اولیه ارائه کنید. شامل کد، اسکریپت جدول و ...

    در مورد این سوالتون باید بگم که رتبه، یک فیلد محاسباتی هست و نیاز به ذخیره سازی نیست. هر زمان نیاز داشتید کوئری بزنید و بدست بیارید.

  14. #14
    کاربر دائمی آواتار reza4359
    تاریخ عضویت
    مهر 1387
    محل زندگی
    So close
    پست
    619

    نقل قول: کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    با سلام
    ممنونم آقای افراد از پاسختون
    من میخوام وقتی روی نام هر کاربر کلیک میکنم رتبه آزمون اون را محاسبه کنه و نمایش بده حالا از این اسکریپت استفاده میکنم میشه راهنمایی کنید که مشکل از کجاست و در قسمت where از چه کدی استفاده کنم
     SqlCommand command1 = new SqlCommand("select score,RANK() OVER(order by score)as r FROM tbl_score where score=(select id_user from tbl_score  where id_user='" + textBox1.Text + "')", con);

  15. #15

    نقل قول: کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    اسکریپت جداول رو ندادید بتونیم تست کنیم.

  16. #16
    کاربر دائمی آواتار reza4359
    تاریخ عضویت
    مهر 1387
    محل زندگی
    So close
    پست
    619

    نقل قول: کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    آقای افراد این اسکریپت جدول tbl_score
    CREATE TABLE [dbo].[tbl_score](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [Score] [int] NULL,
    [Rank] [int] NULL,
    [ans_true] [int] NULL,
    [ans_false] [int] NULL,
    [date] [nvarchar](50) NULL,
    [id_user] [int] NULL,
    [GroupID] [int] NULL,
    CONSTRAINT [PK_tbl_score] PRIMARY KEY CLUSTERED
    (
    [id] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]

    GO

    ALTER TABLE [dbo].[tbl_score] WITH CHECK ADD CONSTRAINT [FK_tbl_score_tbl_group] FOREIGN KEY([GroupID])
    REFERENCES [dbo].[tbl_group] ([GroupID])
    GO

    ALTER TABLE [dbo].[tbl_score] CHECK CONSTRAINT [FK_tbl_score_tbl_group]
    GO

    ALTER TABLE [dbo].[tbl_score] WITH CHECK ADD CONSTRAINT [FK_tbl_score_tbl_user] FOREIGN KEY([id_user])
    REFERENCES [dbo].[tbl_user] ([id_user])
    GO

    ALTER TABLE [dbo].[tbl_score] CHECK CONSTRAINT [FK_tbl_score_tbl_user]
    GO


  17. #17

    نقل قول: کمک برای بدست آوردن رتبه نمره دانش آموزان در هر درس

    به طور کلی به صورت زیر میتونید عمل کنید(به جای @id کد شخص رو قرار بدید. اگر رتبه سالیانه و یا ماهیانه و یا حتی در درس خاصی میخواهید رتبه بگیرید باید در گروهبندی سال رو هم قرار بدید و در مورد رتبه در یک درس یا رشته خاص باید فیلدی که مربوط به درس یا رشته هست رو دخالت بدید.
    select 
    RANK() OVER(order by sum(score) desc) as rank ,
    id_user , SUM(score) as TotalScore
    from tbl_score
    where id_user=@id
    group by id_user

تاپیک های مشابه

  1. سوال: اشکال کد برای بدست آوردن افراد آنلاین(لطفا کمک کنید)
    نوشته شده توسط student91 در بخش PHP
    پاسخ: 0
    آخرین پست: سه شنبه 28 شهریور 1391, 09:40 صبح
  2. سوال: راهنمایی در مورد بدست آوردن رتبه دانش آموزان
    نوشته شده توسط naser_feb8646 در بخش ASP.NET Web Forms
    پاسخ: 6
    آخرین پست: سه شنبه 09 خرداد 1391, 02:13 صبح
  3. رتبه بندی دانش آموزان بوسیله mysql
    نوشته شده توسط cpuman در بخش PHP
    پاسخ: 1
    آخرین پست: پنج شنبه 30 تیر 1384, 18:52 عصر
  4. بدست آوردن رتبه برای لیست نمرات دانش آموزان
    نوشته شده توسط SoheilKH در بخش SQL Server
    پاسخ: 18
    آخرین پست: چهارشنبه 03 دی 1382, 18:01 عصر
  5. برای بدست آوردن کل اطلاعات یک فیلد
    نوشته شده توسط sunboy در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 1
    آخرین پست: شنبه 24 خرداد 1382, 09:02 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •