1. Босуэлл, Д. Читаемый код, или Программирование как искусство / Д. Босуэлл, Т. Фаучер. – СПб.: Питер, 2012. – 208 с.
2. Леоненков, А. Самоучитель UML / А. Леоненков. – 2-е изд – СПб.: БХВ-Петербург, 2004. − 638 с.
3. Паттерны проектирования / Э. Фримен [ и др. ]. – СПб.: Питер, 2015. – 656 с
4. Дэвис, А. Асинхронное программирование в C # 5.0 / А. Дэвис. – М.: ДМК Пресс, 2018 – 120 с.
5. Грабер, М. SQL для простых смертных / М. Грабер. –М.: ЛОРИ, 2014. – 378 c.
6. Евдокимов, П.В. C # на примерах / П.В. Евдокимов. – СПб.: Наука и техника, 2018 – 320 с.
7. Подбельский, В.В. Язык C #. Решение задач / В.В. Подбельский. – М.: Финансы и статистика, 2014 – 296 с.
8. Троелсен, Э. Язык программирования C # 6.0 и платформа. NET 4.6 / Э. Троелсен, Ф. Джепикс. – М.: Вильямс, 2016 – 1440 с.
Приложение А
(обязательное)
Листинг программного кода
using System;
namespace PhonesProject
{
class Program
{
static void Main(string[] args)
{
MenuService menuService = new MenuService();
int menuItems;
Console.WriteLine("Главное меню. Выберите нужный пункт меню.");
Console.WriteLine("1 - Добавить запись");
Console.WriteLine("2 - Удалить запись");
Console.WriteLine("3 - Посмотреть все записи");
Console.WriteLine("4 - Найти пользователей по фамилии");
menuItems = Convert.ToInt32(Console.ReadLine());
Console.Clear();
switch (menuItems)
{
case 1:
menuService.MenuAddItem();
break;
case 2:
menuService.MenuRemoveItem();
break;
case 3:
menuService.MenuGetItems();
break;
case 4:
menuService.MenuFindItems();
break;
default:
break;
}
Console.ReadLine();
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace PhonesProject
{
class MenuService
{
DbContext db = new DbContext();
public void MenuAddItem()
{
var phone = new Phone();
Console.WriteLine("Введите id");
var id = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите фамилию");
var surname = Console.ReadLine();
Console.WriteLine("Введите имя");
var firstName = Console.ReadLine();
Console.WriteLine("Введите отчество");
var fatherName = Console.ReadLine();
Console.WriteLine("Введите номер телефона");
|
var telephone = Console.ReadLine();
phone.Id = id;
phone.Surname = surname;
phone.FirstName = firstName;
phone.FatherName = fatherName;
phone.Telephone = telephone;
db.Phones.Add(phone);
if (db.Phones.SaveChanges())
Console.WriteLine("Данные успешно сохранены");
else
Console.WriteLine("Ошибка сохранения данных");
}
public void MenuRemoveItem()
{
Console.WriteLine("Список пользователей");
var phones = db.Phones.GetAll();
foreach (var curr_phone in phones)
{
Console.WriteLine("Id: {0} Фамилия: {1} Имя: {2} Отчество: {3} Телефон: {4}", curr_phone.Id, curr_phone.Surname, curr_phone.FirstName, curr_phone.FatherName, curr_phone.Telephone);
}
Console.WriteLine("Введите id удаляемого пользователя");
var id = Convert.ToInt32(Console.ReadLine());
bool isDeleted = db.Phones.Remove(id);
if (isDeleted)
{
db.Phones.SaveChanges();
Console.WriteLine("Данные успешно удалены");
}
else
Console.WriteLine("Данные не были удалены");
}
public void MenuGetItems()
{
Console.WriteLine("Список пользователей");
var phones = db.Phones.GetAll();
foreach (var curr_phone in phones)
{
Console.WriteLine("Id: {0} Фамилия: {1} Имя: {2} Отчество: {3} Телефон: {4}", curr_phone.Id, curr_phone.Surname, curr_phone.FirstName, curr_phone.FatherName, curr_phone.Telephone);
}
}
public void MenuFindItems()
{
Console.WriteLine("Введите фамилию пользователя");
var surname = Console.ReadLine();
var phones = db.Phones.FindAllUsersSurname(surname);
if (phones.Count > 0)
{
foreach (var curr_phone in phones)
{
Console.WriteLine("Id: {0} Фамилия: {1} Имя: {2} Отчество: {3} Телефон: {4}", curr_phone.Id, curr_phone.Surname, curr_phone.FirstName, curr_phone.FatherName, curr_phone.Telephone);
}
}
else
Console.WriteLine("Пользователи с данной фамилией не найдены");
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace PhonesProject
{
public class DbContext
{
public DbSet<Phone> Phones { get; set; }
public DbContext()
{
Phones = new DbSet<Phone>();
}
}
}
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace PhonesProject
|
{
public class DbSet<T> where T: Phone
{
private List<T> Entities;
private string fileName;
private string typeFile = ".json";
public void Add(T entity)
{
Entities.Add(entity);
}
public void Edit(int id, T entity)
{
var index = Entities.FindIndex(x => x.Id == id);
Entities[index] = entity;
}
public bool Remove(int id)
{
var itemToRemove = Entities.FindAll(r => r.Id == id);
if (itemToRemove!= null)
{
foreach (var item in itemToRemove)
{
Entities.Remove(item);
}
return true;
}
return false;
}
public bool RemoveAll()
{
var itemToRemove = Entities.FindAll(r => r.Id > 0);
if (itemToRemove!= null)
{
foreach (var item in itemToRemove)
{
Entities.Remove(item);
}
return true;
}
return false;
}
public T GetId(int id)
{
return Entities.Find(x => x.Id == id);
}
public List<T> GetAll()
{
return Entities;
}
public List<T> FindAllUsersSurname(string surname)
{
var findItems = Entities.FindAll(r => r.Surname == surname);
return findItems;
}
public bool SaveChanges()
{
try
{
var a = "{\"" + fileName + "\":" + JsonConvert.SerializeObject(Entities) + "}";
File.WriteAllText(fileName + typeFile, a);
return true;
}
catch
{
return false;
}
}
private void GetDataFromFile()
{
var jsonData = JObject.Parse(File.ReadAllText(fileName + typeFile));
var resultArray = (JArray)jsonData[fileName];
Entities = resultArray.ToObject<List<T>>();
}
public DbSet()
{
Entities = new List<T>();
fileName = Entities.GetType().GetGenericArguments()[0].Name;
GetDataFromFile();
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace PhonesProject
{
public class Phone
{
public int Id { get; set; }
public string Surname { get; set; }
public string FirstName { get; set; }
public string FatherName { get; set; }
public string Telephone { get; set; }
}
}