برای ایجاد یک سیستم نظرسنجی آنلاین با استفاده از **ASP.NET Web Forms**، میتوانید مراحل زیر را دنبال کنید. این سیستم شامل ثبتنام کاربر، ایجاد نظرسنجی، رأیگیری و نمایش نتایج خواهد بود.
### مراحل پیادهسازی سیستم نظرسنجی آنلاین
#### 1. ایجاد پروژه ASP.NET Web Forms
ابتدا یک پروژه جدید از نوع **ASP.NET Web Forms** در **Visual Studio** ایجاد کنید.
#### 2. تنظیمات پایگاه داده
برای ذخیره اطلاعات مربوط به نظرسنجیها، رأیها و کاربران، شما نیاز به جداول زیر در پایگاه داده دارید:
```sql
CREATE TABLE Users (
Id INT PRIMARY KEY IDENTITY(1,1),
Username NVARCHAR(100) NOT NULL,
Password NVARCHAR(100) NOT NULL
);
CREATE TABLE Polls (
Id INT PRIMARY KEY IDENTITY(1,1),
Question NVARCHAR(255) NOT NULL,
CreatedAt DATETIME DEFAULT GETDATE()
);
CREATE TABLE PollOptions (
Id INT PRIMARY KEY IDENTITY(1,1),
PollId INT NOT NULL,
OptionText NVARCHAR(255) NOT NULL,
Votes INT DEFAULT 0,
FOREIGN KEY (PollId) REFERENCES Polls(Id)
);
CREATE TABLE PollVotes (
Id INT PRIMARY KEY IDENTITY(1,1),
PollId INT NOT NULL,
UserId INT NOT NULL,
OptionId INT NOT NULL,
FOREIGN KEY (PollId) REFERENCES Polls(Id),
FOREIGN KEY (UserId) REFERENCES Users(Id),
FOREIGN KEY (OptionId) REFERENCES PollOptions(Id)
);
```
#### 3. ایجاد صفحه ثبتنام (Register.aspx)
یک صفحه جدید به نام **Register.aspx** ایجاد کنید:
```html
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Register.aspx.cs" Inherits="Register" %>
ثبتنام
```
#### 4. نوشتن کد برای ثبتنام در Register.aspx.cs
در فایل **Register.aspx.cs**، کد ثبتنام کاربر را بنویسید:
```csharp
using System;
using System.Configuration;
using System.Data.SqlClient;
public partial class Register : System.Web.UI.Page
{
private string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
protected void btnRegister_Click(object sender, EventArgs e)
{
string username = txtUsername.Text.Trim();
string password = txtPassword.Text.Trim();
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand("INSERT INTO Users (Username, Password) VALUES (@Username, @Password)", connection);
command.Parameters.AddWithValue("@Username", username);
command.Parameters.AddWithValue("@Password", password); // توجه: رمز عبور باید بهصورت امن ذخیره شود.
connection.Open();
command.ExecuteNonQuery();
}
Response.Redirect("Login.aspx"); // به صفحه ورود هدایت میشود.
}
}
```
### 5. ایجاد صفحه ورود (Login.aspx)
یک صفحه جدید به نام **Login.aspx** ایجاد کنید:
```html
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>
ورود
```
#### 6. نوشتن کد برای ورود در Login.aspx.cs
در فایل **Login.aspx.cs**، کد ورود کاربر را بنویسید:
```csharp
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
public partial class Login : System.Web.UI.Page
{
private string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
protected void btnLogin_Click(object sender, EventArgs e)
{
string username = txtUsername.Text.Trim();
string password = txtPassword.Text.Trim();
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand("SELECT Id FROM Users WHERE Username = @Username AND Password = @Password", connection);
command.Parameters.AddWithValue("@Username", username);
command.Parameters.AddWithValue("@Password", password);
connection.Open();
var result = command.ExecuteScalar();
if (result != null)
{
Session["UserId"] = result; // ذخیره شناسه کاربر در Session
Response.Redirect("CreatePoll.aspx"); // به صفحه ایجاد نظرسنجی هدایت میشود.
}
else
{
// نمایش پیام خطا
}
}
}
}
```
### 7. ایجاد صفحه ایجاد نظرسنجی (CreatePoll.aspx)
یک صفحه جدید به نام **CreatePoll.aspx** ایجاد کنید:
```html
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CreatePoll.aspx.cs" Inherits="CreatePoll" %>
ایجاد نظرسنجی
```
#### 8. نوشتن کد برای ایجاد نظرسنجی در CreatePoll.aspx.cs
در فایل **CreatePoll.aspx.cs**، کد ایجاد نظرسنجی را بنویسید:
```csharp
using System;
using System.Configuration;
using System.Data.SqlClient;
public partial class CreatePoll : System.Web.UI.Page
{
private string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
protected void btnCreatePoll_Click(object sender, EventArgs e)
{
string question = txtQuestion.Text.Trim();
string[] options = txtOptions.Text.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand("INSERT INTO Polls (Question) OUTPUT INSERTED.Id VALUES (@Question)", connection);
command.Parameters.AddWithValue("@Question", question);
connection.Open();
int pollId = (int)command.ExecuteScalar(); // دریافت ID نظرسنجی ایجاد شده
foreach (string option in options)
{
SqlCommand optionCommand = new SqlCommand("INSERT INTO PollOptions (PollId, OptionText) VALUES (@PollId, @OptionText)", connection);
optionCommand.Parameters.AddWithValue("@PollId", pollId);
optionCommand.Parameters.AddWithValue("@OptionText", option.Trim());
optionCommand.ExecuteNonQuery();
}
}
Response.Redirect("ViewPolls.aspx"); // به صفحه نمایش نظرسنجیها هدایت میشود.
}
}
```
### 9. ایجاد صفحه نمایش نظرسنجیها (ViewPolls.aspx)
یک صفحه جدید به نام **ViewPolls.aspx** ایجاد کنید:
```html
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ViewPolls.aspx.cs" Inherits
="ViewPolls" %>
نمایش نظرسنجیها
```
#### 10. نوشتن کد برای نمایش نظرسنجیها در ViewPolls.aspx.cs
در فایل **ViewPolls.aspx.cs**، کد نمایش نظرسنجیها را بنویسید:
```csharp
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
public partial class ViewPolls : System.Web.UI.Page
{
private string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadPolls();
}
}
private void LoadPolls()
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand("SELECT * FROM Polls", connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
gvPolls.DataSource = reader;
gvPolls.DataBind();
}
}
protected void gvPolls_SelectedIndexChanged(object sender, EventArgs e)
{
int pollId = Convert.ToInt32(gvPolls.DataKeys[gvPolls.SelectedIndex].Value);
Response.Redirect($"VotePoll.aspx?pollId={pollId}"); // به صفحه رأیگیری هدایت میشود.
}
}
```
### 11. ایجاد صفحه رأیگیری (VotePoll.aspx)
یک صفحه جدید به نام **VotePoll.aspx** ایجاد کنید:
```html
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="VotePoll.aspx.cs" Inherits="VotePoll" %>
رأیگیری
```
#### 12. نوشتن کد رأیگیری در VotePoll.aspx.cs
در فایل **VotePoll.aspx.cs**، کد رأیگیری را بنویسید:
```csharp
using System;
using System.Configuration;
using System.Data.SqlClient;
public partial class VotePoll : System.Web.UI.Page
{
private string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
private int pollId;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
pollId = Convert.ToInt32(Request.QueryString["pollId"]);
LoadPoll();
}
}
private void LoadPoll()
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand("SELECT Question FROM Polls WHERE Id = @Id", connection);
command.Parameters.AddWithValue("@Id", pollId);
connection.Open();
var result = command.ExecuteScalar();
if (result != null)
{
lblPollQuestion.Text = result.ToString();
SqlCommand optionsCommand = new SqlCommand("SELECT * FROM PollOptions WHERE PollId = @PollId", connection);
optionsCommand.Parameters.AddWithValue("@PollId", pollId);
SqlDataReader reader = optionsCommand.ExecuteReader();
rblOptions.DataSource = reader;
rblOptions.DataTextField = "OptionText";
rblOptions.DataValueField = "Id";
rblOptions.DataBind();
}
}
}
protected void btnVote_Click(object sender, EventArgs e)
{
if (Session["UserId"] != null && rblOptions.SelectedValue != null)
{
int userId = Convert.ToInt32(Session["UserId"]);
int optionId = Convert.ToInt32(rblOptions.SelectedValue);
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand("INSERT INTO PollVotes (PollId, UserId, OptionId) VALUES (@PollId, @UserId, @OptionId)", connection);
command.Parameters.AddWithValue("@PollId", pollId);
command.Parameters.AddWithValue("@UserId", userId);
command.Parameters.AddWithValue("@OptionId", optionId);
connection.Open();
command.ExecuteNonQuery();
// افزایش تعداد رأیها برای گزینه
SqlCommand updateVotesCommand = new SqlCommand("UPDATE PollOptions SET Votes = Votes + 1 WHERE Id = @Id", connection);
updateVotesCommand.Parameters.AddWithValue("@Id", optionId);
updateVotesCommand.ExecuteNonQuery();
}
Response.Redirect("ViewResults.aspx?pollId=" + pollId); // به صفحه نمایش نتایج هدایت میشود.
}
}
}
```
### 13. ایجاد صفحه نمایش نتایج (ViewResults.aspx)
یک صفحه جدید به نام **ViewResults.aspx** ایجاد کنید:
```html
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ViewResults.aspx.cs" Inherits="ViewResults" %>
نتایج نظرسنجی
```
#### 14. نوشتن کد نمایش نتایج در ViewResults.aspx.cs
در فایل **ViewResults.aspx.cs**، کد نمایش نتایج را بنویسید:
```csharp
using System;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
public partial class ViewResults : System.Web.UI.Page
{
private string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
private int pollId;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
pollId = Convert.ToInt32(Request.QueryString["pollId"]);
LoadResults();
}
}
private void LoadResults()
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand("SELECT PO.OptionText, PO.Votes FROM PollOptions PO WHERE PO.PollId = @PollId", connection);
command.Parameters.AddWithValue("@PollId", pollId);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
gvResults.DataSource = reader;
gvResults.DataBind();
}
// نمایش سؤال نظرسنجی
SqlCommand pollCommand = new SqlCommand("SELECT Question FROM Polls WHERE Id = @Id", connection);
pollCommand.Parameters.AddWithValue("@Id", pollId);
var question = pollCommand.ExecuteScalar();
lblPollQuestion.Text = question?.ToString();
}
}
```
### 15. اجرای پروژه
اکنون میتوانید پروژه را اجرا کنید و به صفحات مختلف مراجعه کنید. به ترتیب مراحل ثبتنام، ورود، ایجاد نظرسنجی، رأیگیری و مشاهده نتایج را انجام دهید.
### نکات اضافی
- **امنیت**: در نظر داشته باشید که رمز عبور کاربران باید بهصورت امن ذخیره شود (مثلاً با استفاده از hashing).
- **تأیید رأیها**: میتوانید سیستمی برای جلوگیری از رأیگیری چندباره برای یک کاربر بر اساس آدرس IP یا شناسه کاربری او ایجاد کنید.
- **طراحی UI**: برای بهبود تجربه کاربری، میتوانید از CSS و JavaScript برای طراحی بهتر صفحات استفاده کنید.
- **گزارشگیری**: میتوانید به سیستم گزارشگیری برای مشاهده آمار نظرسنجیها و رأیها اضافه کنید.
با این مراحل، شما یک سیستم نظرسنجی آنلاین با استفاده از **ASP.NET Web Forms** ایجاد کردهاید. اگر سوال یا نکتهای نیاز دارید،
خوشحال میشوم کمک کنم!
| صفحه قابل مشاهده:
دانلود کد ساخت سیستم نظرسنجی آنلاین با ASP.NET Web Form میباشد شما در حال مشاهده محصول "دانلود کد ساخت سیستم نظرسنجی آنلاین با ASP.NET Web Form" با شناسه 25825 هستید که تاکنون 46 بار مشاهده شده و در تاریخ Sep 29 2024 4:52PM طراحی و تولید شده است. این محصول با دقت و خلاقیت توسط تیم حرفهای پرپروژه آماده شده است. قیمت این محصول 0 تومان میباشد و در دستهبندی با شناسه 11776 قرار دارد.