.NET 3.x Разработать программу, которая позволяла бы создавать файл из заданных структур - C#
Формулировка задачи:
Создать пользовательский тип данных – структура, имя и поля которой
заданы в таблице. Разработать программу, которая позволяла бы создавать файл из таких
структур, добавлять в созданный файл новые данные и делать какую – либо выборку из
этого файла (какие данные выбирать из файла определяет сам студент).
Структура:
Структура
Ведомость зарплаты за текущий месяц
1. ФИО
2. Номер отдела
3. Табельный номер
4. Количество рабочих часов
5. Размер зарплаты
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; struct salary { public string name; public int department; public int number; public int hours; public double salary_amount; }; namespace LabRab12 { class LabRab12 { static void Main(string[] args) { // вводим имя файла Console.Write("Введите имя файла (включая расширение): "); string fname = Console.ReadLine(); // создаем байтовый поток FileStream file; // ищем файл с именем fname try { file = new FileStream(fname, FileMode.Open, FileAccess.Read); } catch(Exception exc) { // выводим сообщение об ошибке, если файл найти не удалось Console.WriteLine(exc.Message); Console.WriteLine("Создаем новый файл."); // создаем файл с именем fname file = new FileStream(fname, FileMode.Create); } Console.WriteLine("Выберите действие."); Console.Write("1 - добавить данные; 2 - выборка из файла; 3 - показать весь файл; 0 - выход: "); // выбор действия int ans = Convert.ToInt32(Console.ReadLine()); do { switch (ans) { case 0: return; case 1: // вводим данные в поля структуры salary data = new salary(); Console.Write("ФИО: "); data.name = Console.ReadLine(); Console.Write("Номер отдела: "); data.department = Convert.ToInt32(Console.ReadLine()); Console.Write("Табельный номер: "); data.number = Convert.ToInt32(Console.ReadLine()); Console.Write("Кол-во рабочих часов: "); data.hours = Convert.ToInt32(Console.ReadLine()); Console.Write("Размер зарплаты: "); data.salary_amount = Convert.ToDouble(Console.ReadLine()); // передаем в качестве аргумента символьному потоку вывода // байтовый поток file для преобразования символов в байты StreamWriter filestr = new StreamWriter(file); // записываем данные в файл fname filestr.WriteLine(data.name); filestr.WriteLine(data.department); filestr.WriteLine(data.number); filestr.WriteLine(data.hours); filestr.WriteLine(data.salary_amount); filestr.Close(); break; case 2: Console.WriteLine("По каким данным делать выборку?"); Console.WriteLine("1 - ФИО; 2 - номер отдела; 3 - табельный номер;"); Console.Write("4 - кол-во рабочих часов; 5 - размер зарплаты: "); int _ans = Convert.ToInt32(Console.ReadLine()); switch (_ans) { case 1: // запрос на ввод ФИО Console.Write("Введите ФИО полностью (например Иванов Иван Иванович): "); string tmp_string1 = Console.ReadLine(); // передаем символьному потоку ввода // в качестве аргумента байтовый поток StreamReader filestr_in1 = new StreamReader(file); salary tmp_data1 = new salary(); while (!filestr_in1.EndOfStream) { tmp_data1.name = filestr_in1.ReadLine(); tmp_data1.department = Convert.ToInt32(filestr_in1.ReadLine()); tmp_data1.number = Convert.ToInt32(filestr_in1.ReadLine()); tmp_data1.hours = Convert.ToInt32(filestr_in1.ReadLine()); tmp_data1.salary_amount = Convert.ToDouble(filestr_in1.ReadLine()); if (tmp_data1.name == tmp_string1) { Console.WriteLine(tmp_data1.name); Console.WriteLine(tmp_data1.department); Console.WriteLine(tmp_data1.number); Console.WriteLine(tmp_data1.hours); Console.WriteLine(tmp_data1.salary_amount); } } filestr_in1.Close(); break; case 2: // запрос на ввод номера отдела Console.Write("Введите номер отдела: "); int department = Convert.ToInt32(Console.ReadLine()); // передаем символьному потоку ввода // в качестве аргумента байтовый поток StreamReader filestr_in2 = new StreamReader(file); salary tmp_data2 = new salary(); while (!filestr_in2.EndOfStream) { tmp_data2.name = filestr_in2.ReadLine(); tmp_data2.department = Convert.ToInt32(filestr_in2.ReadLine()); tmp_data2.number = Convert.ToInt32(filestr_in2.ReadLine()); tmp_data2.hours = Convert.ToInt32(filestr_in2.ReadLine()); tmp_data2.salary_amount = Convert.ToDouble(filestr_in2.ReadLine()); if (tmp_data2.department == department) { Console.WriteLine(tmp_data2.name); Console.WriteLine(tmp_data2.department); Console.WriteLine(tmp_data2.number); Console.WriteLine(tmp_data2.hours); Console.WriteLine(tmp_data2.salary_amount); } } filestr_in2.Close(); break; case 3: // запрос на ввод табельного номера Console.Write("Введите табельный номер: "); int number = Convert.ToInt32(Console.ReadLine()); // передаем символьному потоку ввода // в качестве аргумента байтовый поток salary tmp_data3 = new salary(); StreamReader filestr_in3 = new StreamReader(file); while (!filestr_in3.EndOfStream) { tmp_data3.name = filestr_in3.ReadLine(); tmp_data3.department = Convert.ToInt32(filestr_in3.ReadLine()); tmp_data3.number = Convert.ToInt32(filestr_in3.ReadLine()); tmp_data3.hours = Convert.ToInt32(filestr_in3.ReadLine()); tmp_data3.salary_amount = Convert.ToDouble(filestr_in3.ReadLine()); if (tmp_data3.number == number) { Console.WriteLine(tmp_data3.name); Console.WriteLine(tmp_data3.department); Console.WriteLine(tmp_data3.number); Console.WriteLine(tmp_data3.hours); Console.WriteLine(tmp_data3.salary_amount); } } filestr_in3.Close(); break; case 4: // запрос на ввод кол-ва рабочих часов Console.Write("Введите кол-во рабочих часов: "); int hours = Convert.ToInt32(Console.ReadLine()); // передаем символьному потоку ввода // в качестве аргумента байтовый поток salary tmp_data4 = new salary(); StreamReader filestr_in4 = new StreamReader(file); while (!filestr_in4.EndOfStream) { tmp_data4.name = filestr_in4.ReadLine(); tmp_data4.department = Convert.ToInt32(filestr_in4.ReadLine()); tmp_data4.number = Convert.ToInt32(filestr_in4.ReadLine()); tmp_data4.hours = Convert.ToInt32(filestr_in4.ReadLine()); tmp_data4.salary_amount = Convert.ToDouble(filestr_in4.ReadLine()); if (tmp_data4.hours == hours) { Console.WriteLine(tmp_data4.name); Console.WriteLine(tmp_data4.department); Console.WriteLine(tmp_data4.number); Console.WriteLine(tmp_data4.hours); Console.WriteLine(tmp_data4.salary_amount); } } filestr_in4.Close(); break; case 5: // запрос на ввод зарплаты Console.Write("Введите зарплату: "); int _salary = Convert.ToInt32(Console.ReadLine()); // передаем символьному потоку ввода // в качестве аргумента байтовый поток salary tmp_data5 = new salary(); StreamReader filestr_in5 = new StreamReader(file); while (!filestr_in5.EndOfStream) { tmp_data5.name = filestr_in5.ReadLine(); tmp_data5.department = Convert.ToInt32(filestr_in5.ReadLine()); tmp_data5.number = Convert.ToInt32(filestr_in5.ReadLine()); tmp_data5.hours = Convert.ToInt32(filestr_in5.ReadLine()); tmp_data5.salary_amount = Convert.ToDouble(filestr_in5.ReadLine()); if (tmp_data5.salary_amount == _salary) { Console.WriteLine(tmp_data5.name); Console.WriteLine(tmp_data5.department); Console.WriteLine(tmp_data5.number); Console.WriteLine(tmp_data5.hours); Console.WriteLine(tmp_data5.salary_amount); } } filestr_in5.Close(); break; default: Console.WriteLine("Неверный ввод."); break; } break; case 3: // передаем символьному потоку ввода // в качестве аргумента байтовый поток StreamReader filestr_in = new StreamReader(file); string line; while (!filestr_in.EndOfStream) { // выводим строки, пока не достигнем конца файла // filestr_in.EndOfStream возвращает true, если // достигнут конец файла line = filestr_in.ReadLine(); Console.WriteLine(line); } filestr_in.Close(); break; default: // при вводе неверного значения выводим сообщение об ошибке Console.WriteLine("Неверный ввод."); break; } Console.Write("1 - добавить данные; 2 - выборка из файла; 3 - показать весь файл; 0 - выход: "); ans = Convert.ToInt32(Console.ReadLine()); } while (ans != 0); file.Close(); } } }
file = new FileStream(fname, FileMode.Append, FileAccess.Write);
Решение задачи: «.NET 3.x Разработать программу, которая позволяла бы создавать файл из заданных структур»
textual
Листинг программы
int i = 0; while (++i < 3) { var fl = new FileStream(@"D:\tst.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite); StreamReader filestr_in = new StreamReader(fl); string line; while (!filestr_in.EndOfStream) { // выводим строки, пока не достигнем конца файла // filestr_in.EndOfStream возвращает true, если // достигнут конец файла line = filestr_in.ReadLine(); Console.WriteLine(line); } filestr_in.Close(); fl.Close(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д