نمونه سورس کد سی‌شارپ برای کار با فایل‌های CSV در سیستم مدیریت رتبه‌بندی


در دنیای برنامه‌نویسی، یکی از نیازهای رایج، کار با فایل‌های CSV است که به عنوان یک فرمت ساده و محبوب برای ذخیره‌سازی داده‌های ساختاریافته شناخته می‌شود. در این مقاله، قصد داریم به صورت جامع و کامل، نمونه سورس کد سی‌شارپ برای مدیریت و کار با فایل‌های CSV در یک سیستم رتبه‌بندی را بررسی کنیم. این سیستم می‌تواند برای ارزیابی و رتبه‌بندی دانش‌آموزان، کارمندان، یا هر نوع گروهی که نیازمند سیستم امتیازدهی است، مفید باشد.
در ابتدا، باید درک کنیم که فایل CSV چیست و چرا در چنین سیستم‌هایی کاربرد دارد. CSV مخفف Comma-Separated Values است و داده‌ها را در قالب جداولی ساده و قابل خواندن توسط برنامه‌ها و سیستم‌های مختلف، نگهداری می‌کند. این فایل‌ها، به راحتی قابل ویرایش و تبدیل به فرمت‌های دیگر هستند و در برنامه‌نویسی، به‌خصوص در زبان سی‌شارپ، ابزارهای متعددی برای خواندن و نوشتن آن‌ها وجود دارد.
در این سیستم مدیریت رتبه‌بندی، فرض بر این است که هر رکورد در فایل CSV شامل اطلاعاتی مانند شناسه فرد، نام فرد، امتیاز، و رتبه است. هدف اصلی، افزودن، ویرایش، حذف، و محاسبه رتبه‌ها بر اساس امتیازهای داده شده است. در ادامه، به شرح کامل روند پیاده‌سازی این سیستم می‌پردازیم.

ساختار فایل CSV و تعریف کلاس مدل




ابتدا، باید ساختار فایل CSV و کلاس مدل مربوطه را تعریف کنیم. فرض کنید فایل ما شامل ستون‌های زیر است:
- ID (شناسه)

- Name (نام فرد)

- Score (امتیاز)

- Rank (رتبه)
برای مدیریت داده‌ها، یک کلاس C# تعریف می‌کنیم که نمایانگر هر رکورد باشد:
csharp  

public class Participant

{

public int ID { get; set; }

public string Name { get; set; }

public double Score { get; set; }

public int Rank { get; set; }

}


این کلاس، ساختاری منطقی برای نگهداری اطلاعات هر فرد است. با این تعریف، عملیات‌های بعدی روی لیستی از این اشیاء انجام می‌شود.

خواندن فایل CSV




برای خواندن فایل CSV، چند راه وجود دارد، اما بهترین و ساده‌ترین راه، استفاده از کلاس `StreamReader` و تجزیه هر خط است. در ادامه، نمونه کد برای خواندن فایل و تبدیل هر خط به شیء `Participant` آورده شده است:
csharp  

public List<Participant> ReadParticipantsFromCsv(string filePath)

{

var participants = new List<Participant>();

using (var reader = new StreamReader(filePath))

{

string line;

bool isFirstLine = true;

while ((line = reader.ReadLine()) != null)

{

if (isFirstLine)

{

// اگر سرستون‌ها وجود دارند، این خط را نادیده می‌گیریم

isFirstLine = false;

continue;

}

var values = line.Split(',');

var participant = new Participant

{

ID = int.Parse(values[0]),

Name = values[1],

Score = double.Parse(values[2]),

Rank = int.Parse(values[3])

};

participants.Add(participant);

}

}

return participants;

}


این تابع، فایل CSV را می‌خواند، هر خط را تجزیه می‌کند و به لیستی از اشیاء `Participant` تبدیل می‌کند. البته، باید در کنار این، خطایابی مناسبی در نظر گرفت تا در صورت وجود خطاهای دیتای ورودی، برنامه به خوبی عمل کند.

نوشتن داده‌ها به فایل CSV




بعد از انجام عملیات‌های مختلف بر روی داده‌ها، نیاز است که داده‌های جدید در قالب فایل CSV ذخیره شوند. برای این کار، یک تابع نوشتن، با رعایت ترتیب ستون‌ها، به صورت زیر است:
csharp  

public void WriteParticipantsToCsv(string filePath, List<Participant> participants)

{

using (var writer = new StreamWriter(filePath))

{

// نوشتن سرستون‌ها

writer.WriteLine("ID,Name,Score,Rank");

foreach (var participant in participants)

{

var line = $"{participant.ID},{participant.Name},{participant.... ← ادامه مطلب در magicfile.ir