File size: 11,459 Bytes
7c1ccb4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
---
license: apache-2.0
language:
- fa
base_model:
- deepseek-ai/DeepSeek-V3-0324
---
import React, { useState } from 'react';

const ProposalApp = () => {
  // مراحل اصلی تدوین پروپوزال
  const stages = [
    {
      id: 1,
      title: "انتخاب عنوان و موضوع تحقیق",
      description: "در این مرحله عنوان مناسب و موضوع تحقیق خود را انتخاب می‌کنید",
      form: "titleForm"
    },
    {
      id: 2,
      title: "بیان مسأله",
      description: "توضیح مشکل یا سؤالی که تحقیق به دنبال پاسخگویی به آن است",
      form: "problemForm"
    },
    {
      id: 3,
      title: "پیشینه تحقیق",
      description: "مرور پژوهش‌های قبلی در این حوزه",
      form: "literatureForm"
    },
    {
      id: 4,
      title: "اهداف و سؤالات پژوهش",
      description: "تعیین اهداف کلی، اهداف جزئی و سؤالات یا فرضیه‌های تحقیق",
      form: "objectivesForm"
    },
    {
      id: 5,
      title: "روش‌شناسی تحقیق",
      description: "توضیح روش‌های جمع‌آوری و تحلیل داده‌ها",
      form: "methodologyForm"
    },
    {
      id: 6,
      title: "تدوین ابزار تحقیق",
      description: "طراحی یا انتخاب ابزارهای مناسب برای جمع‌آوری داده‌ها",
      form: "toolsForm"
    },
    {
      id: 7,
      title: "روش تحلیل داده‌ها",
      description: "توضیح روش‌های آماری یا کیفی تحلیل داده‌ها",
      form: "analysisForm"
    },
    {
      id: 8,
      title: "زمان‌بندی و منابع",
      description: "تعیین جدول زمانی انجام پژوهش و فهرست منابع",
      form: "resourcesForm"
    }
  ];

  // متغیرهای وضعیت
  const [currentStage, setCurrentStage] = useState(1);
  const [proposalData, setProposalData] = useState({
    title: "",
    problem: "",
    literature: "",
    objectives: "",
    questions: [],
    methodology: "",
    tools: "",
    analysis: "",
    timeline: "",
    references: ""
  });
  const [showPreview, setShowPreview] = useState(false);

  // مدیریت تغییر فیلدها
  const handleChange = (field, value) => {
    setProposalData({
      ...proposalData,
      [field]: value
    });
  };

  // رفتن به مرحله بعد
  const goToNextStage = () => {
    if (currentStage < stages.length) {
      setCurrentStage(currentStage + 1);
    } else {
      setShowPreview(true);
    }
  };

  // رفتن به مرحله قبل
  const goToPreviousStage = () => {
    if (currentStage > 1) {
      setCurrentStage(currentStage - 1);
    }
  };

  // فرم مرحله اول: انتخاب عنوان
  const TitleForm = () => (
    <div className="bg-white p-6 rounded-lg shadow-md">
      <h3 className="text-lg font-bold mb-4">انتخاب عنوان تحقیق</h3>
      <div className="mb-6">
        <label className="block text-gray-700 mb-2">عنوان پروپوزال:</label>
        <input
          type="text"
          value={proposalData.title}
          onChange={(e) => handleChange("title", e.target.value)}
          className="w-full border rounded p-2 text-right"
          placeholder="عنوان پروپوزال خود را وارد کنید"
          dir="rtl"
        />
      </div>

      <div className="bg-blue-50 p-4 rounded-md mb-4">
        <h4 className="font-bold text-blue-800 mb-2">نکات برای انتخاب عنوان مناسب:</h4>
        <ul className="list-disc pr-5 text-blue-700">
          <li>عنوان باید مختصر، دقیق و گویا باشد (معمولاً زیر 20 کلمه)</li>
          <li>متغیرهای اصلی تحقیق باید در عنوان مشخص باشند</li>
          <li>جامعه آماری یا گروه هدف در عنوان مشخص شود</li>
          <li>از کلمات مبهم و کلی اجتناب کنید</li>
        </ul>
      </div>

      <div className="bg-green-50 p-4 rounded-md mb-4">
        <h4 className="font-bold text-green-800 mb-2">نمونه‌های عنوان مناسب:</h4>
        <ul className="list-disc pr-5 text-green-700">
          <li>بررسی رابطه هوش هیجانی و موفقیت تحصیلی در دانشجویان روانشناسی دانشگاه تهران</li>
          <li>تأثیر آموزش مهارت‌های مدیریت استرس بر کاهش اضطراب امتحان در دانش‌آموزان دبیرستانی</li>
          <li>مقایسه اثربخشی درمان شناختی-رفتاری و دارودرمانی در کاهش علائم افسردگی بیماران مبتلا به افسردگی اساسی</li>
        </ul>
      </div>
    </div>
  );

  // فرم مرحله دوم: بیان مسأله
  const ProblemForm = () => (
    <div className="bg-white p-6 rounded-lg shadow-md">
      <h3 className="text-lg font-bold mb-4">بیان مسأله</h3>
      <div className="mb-6">
        <label className="block text-gray-700 mb-2">مسأله تحقیق:</label>
        <textarea
          value={proposalData.problem}
          onChange={(e) => handleChange("problem", e.target.value)}
          className="w-full border rounded p-2 h-32 text-right"
          placeholder="مسأله تحقیق خود را توضیح دهید"
          dir="rtl"
        />
      </div>

      <div className="bg-blue-50 p-4 rounded-md mb-4">
        <h4 className="font-bold text-blue-800 mb-2">راهنمای نوشتن بیان مسأله:</h4>
        <ul className="list-disc pr-5 text-blue-700">
          <li>مسأله را به روشنی تعریف کنید و اهمیت آن را توضیح دهید</li>
          <li>خلأهای موجود در دانش فعلی را بیان کنید</li>
          <li>به آمار و ارقام مرتبط با مسأله اشاره کنید</li>
          <li>ضرورت و فواید انجام این تحقیق را توضیح دهید</li>
        </ul>
      </div>

      <div className="bg-green-50 p-4 rounded-md mb-4">
        <h4 className="font-bold text-green-800 mb-2">نمونه بیان مسأله:</h4>
        <p className="text-green-700 text-right pr-5">
          اضطراب امتحان یکی از مشکلات شایع در بین دانش‌آموزان است که طبق مطالعات، حدود 30 درصد دانش‌آموزان به آن مبتلا هستند. 
          این اختلال می‌تواند به افت عملکرد تحصیلی، کاهش اعتماد به نفس و ایجاد مشکلات روانی دیگر منجر شود. 
          با وجود مطالعات متعدد در این زمینه، هنوز روش مؤثر و کاربردی برای مدیریت اضطراب امتحان در بافت مدارس ایران به‌طور 
          کامل بررسی نشده است. این تحقیق قصد دارد تا اثربخشی روش‌های مختلف مدیریت استرس را بر کاهش اضطراب امتحان 
          دانش‌آموزان بررسی کند.
        </p>
      </div>
    </div>
  );

  // فرم‌های سایر مراحل به طور مشابه ایجاد می‌شوند...

  // نمایش پیش‌نمایش پروپوزال
  const ProposalPreview = () => (
    <div className="bg-white p-6 rounded-lg shadow-md text-right" dir="rtl">
      <h2 className="text-xl font-bold mb-6 text-center">پیش‌نمایش پروپوزال</h2>
      
      <h3 className="text-lg font-bold mb-2">عنوان تحقیق:</h3>
      <p className="mb-4 p-2 bg-gray-50 rounded">{proposalData.title || "عنوان وارد نشده است"}</p>
      
      <h3 className="text-lg font-bold mb-2">بیان مسأله:</h3>
      <p className="mb-4 p-2 bg-gray-50 rounded">{proposalData.problem || "بیان مسأله وارد نشده است"}</p>
      
      <h3 className="text-lg font-bold mb-2">پیشینه تحقیق:</h3>
      <p className="mb-4 p-2 bg-gray-50 rounded">{proposalData.literature || "پیشینه تحقیق وارد نشده است"}</p>
      
      <h3 className="text-lg font-bold mb-2">اهداف تحقیق:</h3>
      <p className="mb-4 p-2 bg-gray-50 rounded">{proposalData.objectives || "اهداف تحقیق وارد نشده است"}</p>
      
      <button 
        onClick={() => setShowPreview(false)}
        className="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-600 mt-4"
      >
        بازگشت به ویرایش
      </button>
    </div>
  );

  // انتخاب فرم مناسب برای مرحله فعلی
  const renderCurrentForm = () => {
    switch(currentStage) {
      case 1:
        return <TitleForm />;
      case 2:
        return <ProblemForm />;
      // سایر حالت‌ها بر اساس مراحل اضافه می‌شوند
      default:
        return <div>در حال آماده‌سازی...</div>;
    }
  };

  return (
    <div className="mx-auto max-w-4xl p-4 bg-gray-50 min-h-screen">
      <h1 className="text-2xl font-bold text-center mb-6">راهنمای نوشتن پروپوزال تحقیق روانشناسی</h1>
      
      {!showPreview ? (
        <>
          {/* نمایش مراحل */}
          <div className="flex justify-center mb-8 overflow-x-auto py-2">
            {stages.map((stage) => (
              <div 
                key={stage.id}
                className={`px-3 py-1 mx-1 rounded-full text-sm cursor-pointer ${
                  currentStage === stage.id 
                    ? "bg-blue-600 text-white" 
                    : currentStage > stage.id 
                      ? "bg-green-100 text-green-800" 
                      : "bg-gray-200 text-gray-600"
                }`}
                onClick={() => setCurrentStage(stage.id)}
              >
                {stage.id}. {stage.title}
              </div>
            ))}
          </div>
          
          {/* توضیحات مرحله فعلی */}
          <div className="bg-blue-100 p-4 rounded-md mb-6 text-right" dir="rtl">
            <h2 className="font-bold text-lg mb-2">{stages[currentStage-1].title}</h2>
            <p>{stages[currentStage-1].description}</p>
          </div>
          
          {/* فرم مرحله فعلی */}
          {renderCurrentForm()}
          
          {/* دکمه‌های ناوبری */}
          <div className="flex justify-between mt-6">
            <button 
              onClick={goToPreviousStage}
              disabled={currentStage === 1}
              className={`px-4 py-2 rounded ${
                currentStage === 1 
                  ? "bg-gray-300 text-gray-500 cursor-not-allowed" 
                  : "bg-gray-500 text-white hover:bg-gray-600"
              }`}
            >
              مرحله قبل
            </button>
            
            <button 
              onClick={goToNextStage}
              className="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-600"
            >
              {currentStage < stages.length ? "مرحله بعد" : "پیش‌نمایش پروپوزال"}
            </button>
          </div>
        </>
      ) : (
        <ProposalPreview />
      )}
    </div>
  );
};

export default ProposalApp;