.NET 4.x Нужно написать программу В текстовом файле написан список дат (праздники) с полным названием - C#
Формулировка задачи:
В текстовом файле написан список дат (праздники) с полным названием. Формат такой:
01.01 Новый год
23.02 День защитника отечества
08.03 Международный женский день
Программа должна считывать данные из этого файла и показывать, какой праздник будет следующим
(относительно текущей даты), выводить дату и название праздника.
Решение задачи: «.NET 4.x Нужно написать программу В текстовом файле написан список дат (праздники) с полным названием»
textual
Листинг программы
public partial class Form1 : Form { List<Events> eventList = new List<Events>(); public Form1() { InitializeComponent(); dateTimePicker1.Value = new DateTime(2007, 1, 1); } private void button1_Click(object sender, EventArgs e) { DateTime end = new DateTime(2013,12,10); for (DateTime i = new DateTime(2007,1,1); i < end; i = i.AddDays(1)) { if (!(i.DayOfWeek.ToString() == "Saturday" || i.DayOfWeek.ToString() == "Sunday")) { MessageBox.Show(i.Date.ToString()+". "+ i.DayOfWeek.ToString()); } } } #region dateTimePicker private void dateTimePicker1_ValueChanged(object sender, EventArgs e) { monthCalendar1.SelectionStart = dateTimePicker1.Value; monthCalendar2.SelectionStart = monthCalendar1.SelectionStart.AddMonths(1); monthCalendar3.SelectionStart = monthCalendar2.SelectionStart.AddMonths(1); monthCalendar4.SelectionStart = monthCalendar3.SelectionStart.AddMonths(1); } private void button3_Click(object sender, EventArgs e) { dateTimePicker1.Value = dateTimePicker1.Value.AddMonths(4); } private void button2_Click(object sender, EventArgs e) { dateTimePicker1.Value = dateTimePicker1.Value.AddMonths(-4); } #endregion #region open&read&parse file void readfile(string _filePath) { if (File.Exists(_filePath)) { string line; StreamReader file = null; try { file = new StreamReader(_filePath, Encoding.GetEncoding(1251)); while (((line = file.ReadLine()) != null)) { if (line != "") {//Уберите комментарии и получите праздники только в будние дни //if (!(DateTime.Parse(line.Split('|')[0]).DayOfWeek.ToString() == "Saturday" || DateTime.Parse(line.Split('|')[0]).DayOfWeek.ToString() == "Sunday" )) eventList.Add(new Events(DateTime.Parse(line.Split('|')[0]), line.Split('|')[1])); } } //print events var items = from Events in eventList orderby Events.time select Events; //clear list and fill the listbox listBox1.Items.Clear(); groupBox2.Text = "List of events. Total events: "+items.Count(); foreach (var item in items) { listBox1.Items.Add(item.time.ToShortDateString() +" "+item.description); } } finally { if (file != null) file.Close(); } } } private void openEventsFileToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog1.Filter = "Text|*.txt|All|*.*"; openFileDialog1.Title = "Please select an .txt file."; if (openFileDialog1.ShowDialog() == DialogResult.OK) { readfile(openFileDialog1.FileName); } } #endregion private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e) { getNearestEvents(e.Start); try { var ev = (from Events in eventList where Events.time == e.Start select Events).First(); label1.Text = ev.time.ToShortDateString(); richTextBox1.Text = ev.description; } catch (InvalidOperationException ex) { richTextBox1.Text = null; label1.Text = ""; } catch (Exception ex) { MessageBox.Show(ex.Message); } } void getNearestEvents(DateTime dt) { try { var nearestEvents = from Events in eventList where Events.time > dt orderby Events.time select Events; listBox2.Items.Clear(); label2.Text = dt.ToShortDateString(); foreach (var item in nearestEvents) { listBox2.Items.Add(item.time.ToShortDateString() + " " + item.description); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void listBox2_DoubleClick(object sender, EventArgs e) { richTextBox1.Text = (sender as ListBox).Text.ToString(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д