Федеральное государственное образовательное бюджетное учреждение
высшего образования
«Финансовый университет при Правительстве Российской Федерации»
Департамент анализа данных, принятия решений и финансовых технологий
Курсовая работа
по учебной дисциплине
«Операционные системы»
на тему:
Разработка информационно-справочной системы«Сотовые телефоны,смартфоны»
Выполнил студент
группы ПИ2-2
Овчинников Сергей Васильевич
Научный руководитель
Доцент к/н
Чипчагов Михаил Сергеевич
Москва 2017
Оглавление
1. Условие задачи. Описание предметной области……………………………..3
2. Описание класса предметной области (диаграмма)……………………….....4
3. Описание интерфейса пользователя на контрольном примере……………..30
4. Состав приложения (файлы, папки)…………………………………………..32
Список литературы……………………………………………………………….35
Условие задачи. Описание предметной области.
Разработка информационно-справочной системы «Сотовые телефоны,смартфоны».
1. Разрабатываемое приложение должно представлять собой Windows приложение.
2. Приложение в обязательном порядке независимо от предметной области, указанной в задании, должно выполнять следующие операции:
- при первом запуске программы создать список в коде программы и отобразить его в DataGridView.
- реализовать добавление в список нового объекта, удаление объекта из списка, редактирование объекта в списке;
- вывести на форму сведения об объектах списка, удовлетворяющих введенному пользователем критерию;
- сохранить список объектов в указанном пользователем файле (используя сериализацию и стандартное диалоговое окно). Для сохранения файла приложение должно создать подкаталог в текущей папке приложения, если подкаталог не существует. Имя подкаталога и файла выбирает пользователь.
- создать копию файла, используя метод копирования.
- используя меню или панель инструментов, вывести информацию о пути к программе, а также файлах и вложенных папках текущего каталога.
- сохранить в реестре имя подкаталога и файла.
- в подкаталоге Manual с помощью Блокнота создать текстовый файл с инструкцией к программе. Для просмотра файла использовать меню или панель инструментов, по которому запустить Блокнот и загрузить инструкцию.
- при повторном запуске программы прочитать из реестра запомненные имена, создать список путем чтения (десериализации) данных из файла. Отобразить список в DataGridView. При повторном запуске программы список загружается из файла, создание списка в коде программы не использовать.
3. Список должен быть реализован в виде коллекции, например, динамического массива. Для сохранения файла использовать стандартное диалоговое окно.
4. Программа не должна завершаться аварийно: сообщения о некорректном вводе данных, противоречивых или недопустимых значениях данных, при отсутствии данных по функциональному запросу пользователя и других нештатных ситуациях отображать в окнах сообщений.
5. Программа должна быть читабельной и содержать полезные комментарии.
Описание класса предметной области
C# (произносится “Си-шарп”) — это язык программирования, предназначенный для разработки самых разнообразных приложений, предназначенных для выполнения в среде .NET Framework. Язык C# прост, типобезопасен и объектно-ориентирован. Благодаря множеству нововведений C# обеспечивает возможность быстрой разработки приложений, но при этом сохраняет выразительность и элегантность, присущую языкам C.
Диаграмма классов является основным средством моделирования структуры UML. Класс в UML является основной структурной единицей. Диаграммы классов наиболее информационно насыщены по сравнению с другими типами канонических диаграмм UML, инструменты генерируют код в основном по описанию классов, структура классов точнее всего соответствует окончательной структуре кода приложения.
На диаграммах классов в качестве сущностей применяются, прежде всего, классы, как в своей наиболее общей форме, так и в форме многочисленных стереотипов и частных случаев: интерфейсы, типы данных, процессы и др. Кроме того, в диаграмме классов могут использоваться (как и везде) пакеты и примечания. Сущности на диаграммах классов связываются главным образом отношениями ассоциации (в том числе агрегирования и композиции) и обобщения. Отношения зависимости и реализации на диаграммах классов применяются реже.
Класс — один из самых "богатых" элементов моделирования UML. Описание класса может включать множество различных элементов, и чтобы они не путались, в языке предусмотрено группирование элементов описания класса по разделам. Стандартных разделов три:
• раздел имени — наряду с обязательным именем может содержать также стереотип, кратность и список свойств;
• раздел атрибутов — содержит список описаний атрибутов класса;
• раздел операций — содержит список описаний операций класса.
В курсовой работе достаточно создания четырех классов:TModel,TBrand,TType_Device,TDevice,с помощью которого можно удовлетворить всем требованиям задания.
Экземпляр класса TModel,имеет в составе 1 поле (переменное):
name_model – Имя модели;
Рисунок 2.1 ЭкземплярклассаTModel
Экземпляр класса TBrand,имеет в составе 1 поле (переменное):
name_brand– Имя марки;
Рисунок 2.2Экземпляр классаTBrand
Экземпляр класса TType_Device,имеет в составе 1 поле (переменное):
name_type– Имя типа;
Рисунок 2.3Экземпляр классаTType_Device
Экземпляр класса TDevice,имеет в составе 17 полей (переменных):
name_type– Имя типа;
name_brand– Имя марки;
name_model – Имя модели;
sim –Симкарта;
standart – Стандарт связи;
display – Экран;
ram– ОЗУ;
memory – Объем памяти;
battery– Аккумулятор;
os– ОС;
camera– Камера;
wireless -Беспроводные интерф.;
size -Размер;
keyboard -Тип ввода;
color -Цвет;
price -Цена;
cpu -ЦП;
Рисунок 2.4Экземпляр классаTDevice
Помимо классовTModel,TBrand,TType_Device,TDevice с помощью директивы usingподключено несколько полезных пространств имён для полной реализации своей системы. Они показаны на рисунке 2.5.
Рисунок 2.5 Пространства имен, используемые в программе
В программу были подключены следующие пространства:
1.usingSystem.IO – с целью чтения и записи в файлы и потоки данных;
2. using System.Diagnostics – с целью взаимодействия с системными процессами, журналами событий и счетчики производительности;
3.usingSystem.Runtime.Serialization.Formatters.Binary – с целью сериализации и десериализации данных из файлов;
4. usingMicrosoft.Win32 – для работы с системным реестром;
Сериализация (в программировании) — процесс перевода какой-либо структуры данных в последовательность битов. Обратной к операции сериализации является операция десериализации (структуризации) — восстановление начального состояния структуры данных из битовой последовательности.
using System;
usingSystem.Collections.Generic;
usingSystem.Collections.ObjectModel;
using System.Linq;
using System.Text;
usingSystem.Threading.Tasks;
usingSystem.Windows.Input;
namespace MobileBase.BrandDevice
{
publicclassBrandDeviceModel :ViewModelBase
{
privateICommand exceadd;
publicICommand AddType
{
get
{
if (exceadd == null)
exceadd = newRelayCommand(ExceAdd);
return exceadd;
}
}
privatevoidExceAdd(object param)
{
using (DBEntities db = newDBEntities())
{
TBrand dev = newTBrand()
{
name_brand = (param asTBrand).name_brand,
};
db.TBrands.Add(dev);
db.SaveChanges();
BrandDevices.Add(dev);
}
}
privateICommand excedell;
publicICommand DellType
{
get
{
if (excedell == null)
excedell = newRelayCommand(ExceDell);
return excedell;
}
}
privatevoidExceDell(object param)
{
TBrand mod = param asTBrand;
using (DBEntities db = newDBEntities())
{
var sel = db.TBrands.Where(c => c.Id == mod.Id).FirstOrDefault();
db.TBrands.Remove(sel);
db.SaveChanges();
BrandDevices.Remove(mod);
}
}
privateObservableCollection brand_device;
publicBrandDeviceModel()
{
brand_device = newObservableCollection();
using (DBEntities db = newDBEntities())
{
foreach (var item indb.TBrands.ToArray())
{
BrandDevices.Add(item);
}
}
}
privateTBrand currentType;
publicTBrand SelectedBrandDevice
{
get{ return currentType; }
set
{
if (currentType != value)
{
currentType = value;
RaisePropertyChanged(nameof(SelectedBrandDevice));
}
}
}
publicObservableCollection BrandDevices
{
get{ return brand_device; }
}
}
}
using System;
usingSystem.Collections.Generic;
usingSystem.Collections.ObjectModel;
using System.Linq;
using System.Text;
usingSystem.Threading.Tasks;
usingSystem.Windows.Input;
namespace MobileBase.ModelDevice
{
publicclassModelDeviceModel :ViewModelBase
{
privateICommand exceadd;
publicICommand AddType
{
get
{
if (exceadd == null)
exceadd = newRelayCommand(ExceAdd);
return exceadd;
}
}
privatevoidExceAdd(object param)
{
using (DBEntities db = newDBEntities())
{
TModel dev = newTModel()
{
name_model = (param asTModel).name_model,
};
db.TModels.Add(dev);
db.SaveChanges();
ModelDevices.Add(dev);
}
}
privateICommand excedell;
publicICommand DellType
{
get
{
if (excedell == null)
excedell = newRelayCommand(ExceDell);
return excedell;
}
}
privatevoidExceDell(object param)
{
TModel mod = param asTModel;
using (DBEntities db = newDBEntities())
{
var sel = db.TModels.Where(c => c.Id == mod.Id).FirstOrDefault();
db.TModels.Remove(sel);
db.SaveChanges();
ModelDevices.Remove(mod);
}
}
privateObservableCollection model_device;
publicModelDeviceModel()
{
model_device = newObservableCollection();
using (DBEntities db = newDBEntities())
{
foreach (var item indb.TModels.ToArray())
{
ModelDevices.Add(item);
}
}
}
privateTModel currentType;
publicTModel SelectedModelDevice
{
get{ return currentType; }
set
{
if (currentType != value)
{
currentType = value;
RaisePropertyChanged(nameof(SelectedModelDevice));
}
}
}
publicObservableCollection ModelDevices
{
get{ return model_device; }
}
}
}
using System;
usingSystem.Collections.Generic;
usingSystem.Collections.ObjectModel;
using System.Linq;
using System.Text;
usingSystem.Threading.Tasks;
usingSystem.Windows.Input;
namespace MobileBase.TypeDevice
{
publicclassTypeDeviceModel :ViewModelBase
{
privateICommand exceadd;
publicICommand AddType
{
get
{
if (exceadd == null)
exceadd = newRelayCommand(ExceAdd);
return exceadd;
}
}
privatevoidExceAdd(object param)
{
using (DBEntities db = newDBEntities())
{
TType_Device dev = newTType_Device()
{
name_type = (param asTType_Device).name_type,
};
db.TType_Device.Add(dev);
db.SaveChanges();
TypeDevices.Add(dev);
}
}
privateICommand excedell;
publicICommand DellType
{
get
{
if (excedell == null)
excedell = newRelayCommand(ExceDell);
return excedell;
}
}
privatevoidExceDell(object param)
{
TType_Device mod = param asTType_Device;
using (DBEntities db = newDBEntities())
{
var sel = db.TType_Device.Where(c => c.Id == mod.Id).FirstOrDefault();
db.TType_Device.Remove(sel);
db.SaveChanges();
TypeDevices.Remove(mod);
}
}
privateObservableCollection type_device;
publicTypeDeviceModel()
{
type_device = newObservableCollection();
using (DBEntities db = newDBEntities())
{
foreach (var item indb.TType_Device.ToArray())
{
TypeDevices.Add(item);
}
}
}
privateTType_Device currentType;
publicTType_Device SelectedTypeDevice
{
get{ return currentType; }
set
{
if (currentType != value)
{
currentType = value;
RaisePropertyChanged(nameof(SelectedTypeDevice));
}
}
}
publicObservableCollection TypeDevices
{
get{ return type_device; }
}
}
}
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Input;
namespace MobileBase
{
public class DeviceViewModel : ViewModelBase
{
#region Reset
private ICommand excereset;
public ICommand Reset
{
get
{
if (excereset == null)
excereset = new RelayCommand(ExceReset);
return excereset;
}
}
private void ExceReset(object param)
{
using (DBEntities db = new DBEntities())
{
Devices.Clear();
foreach (TDevice item in db.TDevices)
{
TDevice add = new TDevice()
{
battery = item.battery,
camera = item.camera,
color = item.color,
display = item.display,
keyboard = item.keyboard,
memory = item.memory,
os = item.os,
price = item.price,
ram = item.ram,
sim = item.sim,
size = item.size,
standart = item.standart,
wireless = item.wireless,
cpu = item.cpu,
TType_Device = item.TType_Device,
TBrand = item.TBrand,
TModel = item.TModel,
id_brand = item.id_brand,
id_device = item.id_device,
id_model = item.id_model,
id_type = item.id_type,
};
Devices.Add(add);
}
}
}
#endregion
#region Search
private string _search;
public string search
{
get { return _search; }
set { _search = value; RaisePropertyChanged("search"); }
}
private ICommand excerearch;
public ICommand Find
{
get
{
if (excerearch == null)
excerearch = new RelayCommand(ExceFind);
return excerearch;
}
}
private void ExceFind(object param)
{
using (DBEntities db = new DBEntities())
{
Devices.Clear();
#region battery
foreach (TDevice battery in db.TDevices.Where(c => c.battery == param.ToString()).ToList())
{
TDevice add = new TDevice()
{
battery = battery.battery,
camera = battery.camera,
color = battery.color,
display = battery.display,
keyboard = battery.keyboard,
memory = battery.memory,
os = battery.os,
price = battery.price,
ram = battery.ram,
sim = battery.sim,
size = battery.size,
standart = battery.standart,
wireless = battery.wireless,
cpu = battery.cpu,
TType_Device = battery.TType_Device,
TBrand = battery.TBrand,
TModel = battery.TModel,
id_brand = battery.id_brand,
id_device = battery.id_device,
id_model = battery.id_model,
id_type = battery.id_type,
};
Devices.Add(add);
}
#endregion
#region camera
foreach (TDevice item in db.TDevices.Where(c => c.camera == param.ToString()).ToList())
{
TDevice addcamera = new TDevice()
{
battery = item.battery,
camera = item.camera,
color = item.color,
display = item.display,
keyboard = item.keyboard,
memory = item.memory,
os = item.os,
price = item.price,
ram = item.ram,
sim = item.sim,
size = item.size,
standart = item.standart,
wireless = item.wireless,
cpu = item.cpu,
TType_Device = item.TType_Device,
TBrand = item.TBrand,
TModel = item.TModel,
id_brand = item.id_brand,
id_device = item.id_device,
id_model = item.id_model,
id_type = item.id_type,
};
Devices.Add(addcamera);
}
#endregion
#region color
foreach (TDevice color in db.TDevices.Where(c => c.color == param.ToString()).ToList())
{
TDevice addcolor = new TDevice()
{
battery = color.battery,
camera = color.camera,
color = color.color,
display = color.display,
keyboard = color.keyboard,
memory = color.memory,
os = color.os,
price = color.price,
ram = color.ram,
sim = color.sim,
size = color.size,
standart = color.standart,
wireless = color.wireless,
cpu = color.cpu,
TType_Device = color.TType_Device,
TBrand = color.TBrand,
TModel = color.TModel,
id_brand = color.id_brand,
id_device = color.id_device,
id_model = color.id_model,
id_type = color.id_type,
};
Devices.Add(addcolor);
}
#endregion
#region display
foreach (TDevice color in db.TDevices.Where(c => c.display == param.ToString()).ToList())
{
TDevice addcolor = new TDevice()
{
battery = color.battery,
camera = color.camera,
color = color.color,
display = color.display,
keyboard = color.keyboard,
memory = color.memory,
os = color.os,
price = color.price,
ram = color.ram,
sim = color.sim,
size = color.size,
standart = color.standart,
wireless = color.wireless,
cpu = color.cpu,
TType_Device = color.TType_Device,
TBrand = color.TBrand,
TModel = color.TModel,
id_brand = color.id_brand,
id_device = color.id_device,
id_model = color.id_model,
id_type = color.id_type,
};
Devices.Add(addcolor);
}
#endregion
#region keyboard
foreach (TDevice color in db.TDevices.Where(c => c.keyboard == param.ToString()).ToList())
{
TDevice addcolor = new TDevice()
{
battery = color.battery,
camera = color.camera,
color = color.color,
display = color.display,
keyboard = color.keyboard,
memory = color.memory,
os = color.os,
price = color.price,
ram = color.ram,
sim = color.sim,
size = color.size,
standart = color.standart,
wireless = color.wireless,
cpu = color.cpu,
TType_Device = color.TType_Device,
TBrand = color.TBrand,
TModel = color.TModel,
id_brand = color.id_brand,
id_device = color.id_device,
id_model = color.id_model,
id_type = color.id_type,
};
Devices.Add(addcolor);
}
#endregion
#region memory
foreach (TDevice color in db.TDevices.Where(c => c.memory == param.ToString()).ToList())
{
TDevice addcolor = new TDevice()
{
battery = color.battery,
camera = color.camera,
color = color.color,
display = color.display,
keyboard = color.keyboard,
memory = color.memory,
os = color.os,
price = color.price,
ram = color.ram,
sim = color.sim,
size = color.size,
standart = color.standart,
wireless = color.wireless,
cpu = color.cpu,
TType_Device = color.TType_Device,
TBrand = color.TBrand,
TModel = color.TModel,
id_brand = color.id_brand,
id_device = color.id_device,
id_model = color.id_model,
id_type = color.id_type,
};
Devices.Add(addcolor);
}
#endregion
#region os
foreach (TDevice color in db.TDevices.Where(c => c.os == param.ToString()).ToList())
{
TDevice addcolor = new TDevice()
{
battery = color.battery,
camera = color.camera,
color = color.color,
display = color.display,
keyboard = color.keyboard,
memory = color.memory,
os = color.os,
price = color.price,
ram = color.ram,
sim = color.sim,
size = color.size,
standart = color.standart,
wireless = color.wireless,
cpu = color.cpu,
TType_Device = color.TType_Device,
TBrand = color.TBrand,
TModel = color.TModel,
id_brand = color.id_brand,
id_device = color.id_device,
id_model = color.id_model,
id_type = color.id_type,
};
Devices.Add(addcolor);
}
#endregion
#region price
foreach (TDevice color in db.TDevices.Where(c => c.price == param.ToString()).ToList())
{
TDevice addcolor = new TDevice()
{
battery = color.battery,
camera = color.camera,
color = color.color,
display = color.display,
keyboard = color.keyboard,
memory = color.memory,
os = color.os,
price = color.price,
ram = color.ram,
sim = color.sim,
size = color.size,
standart = color.standart,
wireless = color.wireless,
cpu = color.cpu,
TType_Device = color.TType_Device,
TBrand = color.TBrand,
TModel = color.TModel,
id_brand = color.id_brand,
id_device = color.id_device,
id_model = color.id_model,
id_type = color.id_type,
};
Devices.Add(addcolor);
}
#endregion
#region ram
foreach (TDevice color in db.TDevices.Where(c => c.ram == param.ToString()).ToList())
{
TDevice addcolor = new TDevice()
{
battery = color.battery,
camera = color.camera,
color = color.color,
display = color.display,
keyboard = color.keyboard,
memory = color.memory,
os = color.os,
price = color.price,
ram = color.ram,
sim = color.sim,
size = color.size,
standart = color.standart,
wireless = color.wireless,
cpu = color.cpu,
TType_Device = color.TType_Device,
TBrand = color.TBrand,
TModel = color.TModel,
id_brand = color.id_brand,
id_device = color.id_device,
id_model = color.id_model,
id_type = color.id_type,
};
Devices.Add(addcolor);
}
#endregion
#region sim
foreach (TDevice color in db.TDevices.Where(c => c.sim == param.ToString()).ToList())
{
TDevice addcolor = new TDevice()
{
battery = color.battery,
camera = color.camera,
color = color.color,
display = color.display,
keyboard = color.keyboard,
memory = color.memory,
os = color.os,
price = color.price,
ram = color.ram,
sim = color.sim,
size = color.size,
standart = color.standart,
wireless = color.wireless,
cpu = color.cpu,
TType_Device = color.TType_Device,
TBrand = color.TBrand,
TModel = color.TModel,
id_brand = color.id_brand,
id_device = color.id_device,
id_model = color.id_model,
id_type = color.id_type,
};
Devices.Add(addcolor);
}
#endregion
#region size
foreach (TDevice color in db.TDevices.Where(c => c.size == param.ToString()).ToList())
{
TDevice addcolor = new TDevice()
{
battery = color.battery,
camera = color.camera,
color = color.color,
display = color.display,
keyboard = color.keyboard,
memory = color.memory,
os = color.os,
price = color.price,
ram = color.ram,
sim = color.sim,
size = color.size,
standart = color.standart,
wireless = color.wireless,
cpu = color.cpu,
TType_Device = color.TType_Device,
TBrand = color.TBrand,
TModel = color.TModel,
id_brand = color.id_brand,
id_device = color.id_device,
id_model = color.id_model,
id_type = color.id_type,
};
Devices.Add(addcolor);
}
#endregion
#region standart
foreach (TDevice color in db.TDevices.Where(c => c.standart == param.ToString()).ToList())
{
TDevice addcolor = new TDevice()
{
battery = color.battery,
camera = color.camera,
color = color.color,
display = color.display,
keyboard = color.keyboard,
memory = color.memory,
os = color.os,
price = color.price,
ram = color.ram,
sim = color.sim,
size = color.size,
standart = color.standart,
wireless = color.wireless,
cpu = color.cpu,
TType_Device = color.TType_Device,
TBrand = color.TBrand,
TModel = color.TModel,
id_brand = color.id_brand,
id_device = color.id_device,
id_model = color.id_model,
id_type = color.id_type,
};
Devices.Add(addcolor);
}
#endregion
#region wireless
foreach (TDevice color in db.TDevices.Where(c => c.wireless == param.ToString()).ToList())
....................... |