База данных в консоли (не SQL, не WinForms) - C#
Формулировка задачи:
Написать программу для работы с БД "Студенты":
Структура БД:
- № (номер записи)
- ФИО
- Дата рождения (дд.мм.гг)
- Факультет
- Группа
- Курс
- Средний балл
Работа БД:
~ добавление, изменение, удаление записи (элемента) БД
~ сортировка по полям: ФИО, Дата рождения
~ поиск элемента по полям: ФИО, Дата рождения
~ нахождение Max, Min, среднего значения и суммы по полю: Средний балл.
Ввод/вывод данных в файл, ввод/вывод информации и т.д. - меню.
Данные БД хранятся в файле.
Что-то отдаленно напоминающее идею без практической реализации:
7 столбцов постоянно ( № | ФИО | Дата рождения | Институт | Группа | Курс | Средний балл ) неизвестное кол-во студентов (строк) цикл на ввод строки строка - элемент "массива" (или коллекции??) И еще оформление... но это пока не самое главное. У кого есть опыт такого создания БД в КОНСОЛИ(е-мае! эксперименты для университетского предмета)
, отпишитесь, любые идеи приветствуются! Решение задачи: «База данных в консоли (не SQL, не WinForms)»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.IO;
namespace Лабораторная2
{
class Students
{
public int num;
public string FIO;
public DateTime Birthday;
public string Institute;
public string Group;
public int Step;
public double Ball;
}
class Program
{
public static void Main()
{
Students Student = new Students();
List<Students> Note = new List<Students>();
FileStream file = new FileStream("ListofStudents.txt", FileMode.Open, FileAccess.ReadWrite);
StreamReader reader = new StreamReader(file, Encoding.UTF8);
StreamWriter writer = new StreamWriter(file, Encoding.UTF8);
string row;
do
{
row = reader.ReadLine();
string[] mas = new string[7];
mas = row.Split(' ');
Student.num = Convert.ToInt32(mas[0]);
Student.FIO = mas[1];
Student.Birthday = Convert.ToDateTime(mas[2]);
Student.Institute = mas[3];
Student.Group = mas[4];
Student.Step = Convert.ToInt16(mas[5]);
Student.Ball = Convert.ToDouble(mas[6]);
Note.Add(Student);
Student = new Students();
}
while (reader.EndOfStream == false);
Console.WriteLine("База данных:");
for (int i = 0; i < Note.Count; i++)
{
Console.WriteLine(Note[i].num + "\t" + Note[i].FIO + "\t" + Note[i].Birthday + "\t" + Note[i].Institute + "\t" + Note[i].Group + "\t" + Note[i].Step + "\t" + Note[i].Ball);
}
Console.ReadKey();
Console.Write("Выберите действие:\n 1) Добавить запись; \n 2) Удалить запись \n 3)Изменить запись \n 4) Прямая сортировка \n 5) Обратная сортировка; \n 6) Поиск эл-та \n 7) Переход к пункту меню: Средний балл \n");
int choose = Convert.ToInt32(Console.ReadLine());
switch (choose)
{
case 1:
{
try
{
Student = new Students();
string plus = Console.ReadLine();
string[] masPlus = plus.Split(' ');
Student.num = Convert.ToInt32(masPlus[0]);
Student.FIO = masPlus[1];
Student.Birthday = Convert.ToDateTime(masPlus[2]);
Student.Institute = masPlus[3];
Student.Group = masPlus[4];
Student.Step = Convert.ToInt16(masPlus[5]);
Student.Ball = Convert.ToDouble(masPlus[6]);
Note.Add(Student);
Console.WriteLine("Изменённый список:");
for (int i = 0; i < Note.Count; i++)
{
Console.WriteLine(Note[i].num + "\t" + Note[i].FIO + "\t" + Note[i].Birthday + "\t" + Note[i].Institute + "\t" + Note[i].Group + "\t" + Note[i].Step + "\t" + Note[i].Ball);
}
Console.ReadKey();
}
catch (System.FormatException)
{
Console.WriteLine("Проверьте правильность введенных данных");
Console.ReadKey();
break;
}
break;
}
//////////////////////////////////////////////////осткод//////////////////////////////////////////////////