راهنمایی درمورد نظر سنجی در سی شارپ

masud8002k

عضو جدید
سلام
کی میتونه مراحل ساخت نظرسنجی رو با c#.netرو توضیح بده
میخوام یک نطر سنجی داشته باشم
با تشکر
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
سلام
کی میتونه مراحل ساخت نظرسنجی رو با c#.netرو توضیح بده
میخوام یک نطر سنجی داشته باشم
با تشکر

باید تحلیلش کنی.
یک سری عناوین نظرسنجی و گزینه های آن را داری.
کاربران مجاز یا سراسری؟
حواست باشه که کنترلی اضافه شه که یک نفر چند بار نظر نده در صورتی که کاربران مشخص نیستند.
آمار نظرسنجی به صورت آنلاین
...
باید بگی چه بخشی مشکل داری، اینجوری کلی نمیشه :gol:
 

masud8002k

عضو جدید
مشکلم در بدست آوردن نتیجه است ببینید در مرحله اول من از 3 تا radiobatonاستفاده میکنم حالا وقتی کاربر یکی ش رو انتخاب کرد در دیتا بیس برای اون عدد 1 ذخیره بشه برای بقیه صفر؟
حالا نتیجه رو چطوری حساب کنیم؟
 

yamaha R6

کاربر حرفه ای
کاربر ممتاز
مشکلم در بدست آوردن نتیجه است ببینید در مرحله اول من از 3 تا radiobatonاستفاده میکنم حالا وقتی کاربر یکی ش رو انتخاب کرد در دیتا بیس برای اون عدد 1 ذخیره بشه برای بقیه صفر؟
حالا نتیجه رو چطوری حساب کنیم؟

عزیزمی

خوب اگه تعداد جوابای صحیح و می خوای select where (فیلد جواب = 1) نکته داره

یک عکس از table بذار ببینیم چه جوریه:surprised:
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
مشکلم در بدست آوردن نتیجه است ببینید در مرحله اول من از 3 تا radiobatonاستفاده میکنم حالا وقتی کاربر یکی ش رو انتخاب کرد در دیتا بیس برای اون عدد 1 ذخیره بشه برای بقیه صفر؟
حالا نتیجه رو چطوری حساب کنیم؟

کافی است مشخصه سئوال و جواب انتخابی را ثبت کنید برای آن کاربر و با یک select به راحتی میتونید نتیجه را بدست بیارید چون سئوال را دارید و هم پاسخ صحیح رو دارید هم پاسخ کاربر :gol:
 

yamaha R6

کاربر حرفه ای
کاربر ممتاز
کافی است مشخصه سئوال و جواب انتخابی را ثبت کنید برای آن کاربر و با یک select به راحتی میتونید نتیجه را بدست بیارید چون سئوال را دارید و هم پاسخ صحیح رو دارید هم پاسخ کاربر :gol:

خوب یک مشکل فنی

اگه کاربر به یک سوال تو دوتا زمان مجزا پاسخ بده چی؟؟؟

باید زمان و تاریخ هر تستم توی table ذخیره کنه

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

masud8002k

عضو جدید
ممنون از لطف همگی خوب عکس رو میذارم حالا ببینید مثلا کاربر گزینه اول رو انتخاب کردن صفر وارد resultجدول میشه گزینه دوم عدد 1 و گزینه سوم عدد2
حالا نتایج رو من نمیدونم چطوری بشمرم نشون بدم
tbl.jpg
مرسی
 

yamaha R6

کاربر حرفه ای
کاربر ممتاز
ممنون از لطف همگی خوب عکس رو میذارم حالا ببینید مثلا کاربر گزینه اول رو انتخاب کردن صفر وارد resultجدول میشه گزینه دوم عدد 1 و گزینه سوم عدد2
حالا نتایج رو من نمیدونم چطوری بشمرم نشون بدم
مشاهده پیوست 91831
مرسی
خوب یک table دیگه هم اضافه کن شامل این فیلد ها:

id, date,time, name
که دراون نام و تاریخ و زمان آزمونو درج کنی

حالا توی این table یک فیلد IdTeset اضافه کن بعد اینو بنویس:

select * from نام جدولت
where(
idtest = ?
and
result = ?
حالا واستا ببینم از کجا می خوای بدونی هر جواب مال کدوم دانشجویه؟؟؟ :surprised: کل جدولت همینه ای ناقصه

تجزیو تحلیلت چیه اصلا
 

A.S.Roma

عضو جدید
کاربر ممتاز
من از پست های Starter برداشت کردم که منظورشون نظرسنجی هست نه تست نتیجتا" بر مبنای اون این پست رو می نویسم ( خیال نکنید Off Topic دارم پست می زنم :D )

این اسکریپت رو اجرا کنید : ( به جای YourDatabaseName اسم دیتابیس خودتون رو وارد کنید . )
کد:
[COLOR=#ff0000]USE [YourDatabaseName][/COLOR]
GO
/****** Object:  Table [dbo].[Poll]    Script Date: 04/02/2012 22:10:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Poll](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Title] [nvarchar](512) NULL,
 CONSTRAINT [PK_Poll] 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
/****** Object:  Table [dbo].[PollOption]    Script Date: 04/02/2012 22:10:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PollOption](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [PollID] [int] NOT NULL,
    [Option] [nvarchar](512) NULL,
 CONSTRAINT [PK_PollOption] 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
/****** Object:  Table [dbo].[UserSelectedOption]    Script Date: 04/02/2012 22:10:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[UserSelectedOption](
    [UserID] [int] NOT NULL,
    [PollOptionID] [int] NOT NULL,
    [TimeStamp] [timestamp] NOT NULL
) ON [PRIMARY]
GO
/****** Object:  ForeignKey [FK_PollOption_Poll]    Script Date: 04/02/2012 22:10:09 ******/
ALTER TABLE [dbo].[PollOption]  WITH CHECK ADD  CONSTRAINT [FK_PollOption_Poll] FOREIGN KEY([PollID])
REFERENCES [dbo].[Poll] ([ID])
GO
ALTER TABLE [dbo].[PollOption] CHECK CONSTRAINT [FK_PollOption_Poll]
GO
/****** Object:  ForeignKey [FK_UserSelectedOption_PollOption]    Script Date: 04/02/2012 22:10:09 ******/
ALTER TABLE [dbo].[UserSelectedOption]  WITH CHECK ADD  CONSTRAINT [FK_UserSelectedOption_PollOption] FOREIGN KEY([PollOptionID])
REFERENCES [dbo].[PollOption] ([ID])
GO
ALTER TABLE [dbo].[UserSelectedOption] CHECK CONSTRAINT [FK_UserSelectedOption_PollOption]
GO
یه طراحی ساده است که می تونی باهاش نظر سنجی رو هندل کنی . ( البت تست نکردم تو پروژه واقعی اما به نظر مشکلی نباید داشته باشه )

اینم Query که بهت نتیجه ی هر نظرسنجی رو میده :
کد:
DECLARE @PollID INT
[COLOR=#ff0000]SET @PollID = 1[/COLOR]


SELECT Poll.Title,
             PollOption.[Option] ,
             (CASE (SELECT COUNT(*) FROM UserSelectedOption WHERE UserSelectedOption.PollOptionID = PollOption.ID)
                            WHEN 0 THEN 0
                            ELSE (SELECT COUNT(*) FROM UserSelectedOption WHERE UserSelectedOption.PollOptionID = PollOption.ID) * 100 / ( SELECT COUNT(*) FROM PollOption INNER JOIN UserSelectedOption ON PollOption.ID = UserSelectedOption.PollOptionID  WHERE PollID = @PollID)
                END 
             ) AS Result


FROM Poll 
INNER JOIN PollOption ON PollOption.PollID = Poll.ID
WHERE Poll.ID = @PollID
مقدار @PollID همونجور که از اسمش مشخصه ID سوال هست.
بهتره که بعدا" خودت SPش کنی :)

»» مشخصا" Query رو میشه بهینه تر هم نوشت که تو تعداد رکورد بالا کند کار نکنه .
 
آخرین ویرایش:

Similar threads

بالا