Автоматизированное рабочее место инженера по гарантии СТО "Континент"

Модель удаленного управления и доступа к данным. Преимущества архитектуры клиент-сервер. Выбор языка программирования. Разработка программы и создание базы данных. Нормирование условий труда программистов, операторов электронно-вычислительных машин.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 27.04.2014
Размер файла 2,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Разработанная программа полностью удовлетворяет требованиям заказчика, принята в эксплуатацию в СТО Континент и проходит тестирование пользователями. Имеется также акт приема в эксплуатацию данного программного продукта, что свидетельствует о значимости продукта и необходимости его внедрения.

Список использованных источников

1. Титоренко, Г.А. Автоматизированные информационные технологии в экономике [Текст] / Под ред. проф. Г. А. Титоренко. -- М.: Компьютер, ЮНИТИ, 2003 -- 289с.

2. Базы данных [Электронный ресурс]. -- Режим доступа: http://ru.wikipedia.org/wiki/Базы_данных. -- Загл. с экрана.

3. СУБД [Электронный ресурс]. -- Режим доступа: http://lurkmore.ru/СУБД/. -- Загл. с экрана.

4. Нагао, М. Структуры и базы данных [Текст] / М. Нагао, С. Уэмура. -- М.: Мир, 1986. -- 197 с..

5. Сетевая СУБД [Электронный ресурс]. -- Режим доступа: http://ru.wikipedia.org/wiki/Сетевая_СУБД/. -- Загл. с экрана.

6. Райордан Р. Основы реляционных баз данных [Текст] / Р. Райордан. -- М.: Издательско-торговый дом «Русская Редакция», 2001. -- 384 с.

7. Нильсен П. Microsoft SQL Server 2008. Библия пользователя [Текст] / Нильсен П. -- М.: ООО «И.Д. Вильямс», 2008. -- 1232 с.

8. Сахил М. Microsoft ADO.NET 2.0 для профессионалов [Текст] / Сахил М. -- М.: ООО «И.Д. Вильямс», 2006. -- 560с.

9. Раттц Дж. LINQ: интегрированный язык запросов в C# 2008 для профессионалов [Текст] / Раттц Дж. -- М.: ООО «И.Д. Вильямс», 2008. -- 560с.

10. Просиз Дж. Программирование для Microsoft .NET. [Текст] / Дж. Просиз. -- М.: Издательско-торговый дом «Русская Редакция», 2003. -- 704 с.

11. Культин, Н. Б. Основы программирования в С# [Текст] / Н.Б. Культин. -- СПб.:БХВ-Петербург, 2005. -- 608 с.

12. Троелсен, Э. С# и платформа .NET 4.0 [Текст] / Э. Троелсен, 4-е изд. -- М.: Вильямс, 2009. -- 1368 с.

13. Пушников А.Ю. Введение в системы управления базами данных. Часть 2. Нормальные формы отношений и транзакции: Учебное пособие [Текст] / Пушников А.Ю, -- Уфа: Изд-е Башкирского ун-та., 1999. - 138 с.

14. Мак-Дональд М. WPF: Windows Presentation Foundation в .NET 4.0 с примерами на C# 2010 для профессионалов [Текст] / Мак-Дональд М. -- М: издательство «Вильямс», 2011. -- 648 с.

15. Булатов, А.С. Экономика. Учебник [Текст] /А.С. Булатов -- Издание ретье, переработанное и дополненное, 2002. -- 894 с.

16. СанПиН 2.2.2/2.4.1340-03. Гигиенические требования к персональным электронно-вычислительным машинам и организации работы [Текст].

17. ГОСТ 12.1.005-88 (2001) ССБТ. Общие санитарно-гигиенические требования к воздуху санитарной зоны [Текст].

18. Трудовой кодекс РФ ст. 353 [Текст].

19. Безопасность жизнедеятельности: Учеб. Для вузов [Текст] / Н.А. Белова [и др.]; под общ. ред. Н.А. Белова. -- М.: Высш. школа, 1999. -- 448 с.

Приложение А

Акт выполненных работ

ООО «Континент»

Адрес: 433504, г Димитровград, ул. Гоголя, д. 54

Телефон: 8(84235)20889

Акт выполненных работ

Клиент

Иванов И.И.

Манина

Ваз 2110 Р123АА73

Дата принятия на ремонт

29.01.2012

Дата окончания ремонта

5.02.2012

Группа работ

Название работы

Стоимость

Кузовные

Кузовные

Кузовные

Кузовные

Кузовные

Подготовительная

Рихтовка

Разборка

Сборка

Покраска

1000,00

1500,00

300,00

300,00

1000,00

Итого: 4100 рублей

Гарантия на работу: 2 месяца

Инженер по гарантии:

С условиями гарантии ознакомлен Иванов И.И.

Приложение Б

Ведомость установленных запчастей

ООО «Континент»

Адрес: 433504, г Димитровград, ул. Гоголя 56

Телефон: 8(84235)20889

Запчасти используемые при ремонте

Клиент

Иванов И.И.

Манина

Ваз 2110 Р123АА73

Дата принятия на ремонт

29.01.2012

Дата окончания ремонта

5.02.2012

Наименование запчасти

Количество

Фара ВАЗ 2110 передняя левая

Крыло ВАЗ 2110 переднее левое

Бампер передний ВАЗ 2110

Бампер задний ВАЗ 2110

1 шт.

1 шт.

1 шт.

1 шт.

Гарантия на установленные запчасти: 2 месяца

Инженер по гарантии:

С условиями гарантии ознакомлен Иванов И.И.

Приложение В

Исходные коды программы

{Модуль интерфейсов avto.Interfaces}

namespace avto.Interfaces

{

public interface IAppContext

{

IUnityContainer Container { get; }

IsysMsg SysMsg { get; }

IUniversalSettings Settings { get; set; }

}

}

namespace avto.Interfaces

{

public interface IHandbookPlugins

{

string Name { get; }

string HumanName { get; }

UserControl CreateControl(IAppContext Appcontext);

IAppContext Appcontext { get; set; }

}

}

namespace avto.Interfaces

{

public interface IPlugin

{

string Name { get;}

string HumanName { get; }

Form CreateReport(IAppContext __appContext,int _id);

void Print();

void Preview();

void Save();

IAppContext Appcontext { get; set; }

bool DOit(string[] argv);

}

}

namespace avto.Interfaces

{

public interface IReport

{

string Name { get; }

string HumanName { get; }

IAppContext Appcontext { get; set; }

System.Windows.Controls.Button CreateMenu(IAppContext _appcontext);

System.Windows.Controls.UserControl CreateControl(IAppContext _appcontext);

}

}

{Модуль работы с настройками}

namespace avto.Interfaces

{

public class ProfileINI

{

[DllImport("kernel32.dll")]

public static extern int GetPrivateProfileInt(string section, string entry, int nDefault, string path);

[DllImport("kernel32.dll")]

public static extern int GetPrivateProfileString(string section, string entry, string sDefault,

StringBuilder buf, int nSize, string path);

[DllImport("kernel32.dll", SetLastError=true)]

public static extern bool WritePrivateProfileString(string section, string entry,

string sValue, string path);

public ProfileINI()

{

}

public ProfileINI(string moduleName)

{

ModuleName = moduleName;

}

private string _moduleName;

public string ModuleName

{

get

{

if (_moduleName == null)

{

Assembly parentAssembly = Assembly.GetEntryAssembly() ?? Assembly.GetCallingAssembly();

_moduleName = System.IO.Path.GetFileNameWithoutExtension(parentAssembly.Location);

}

return _moduleName;

}

set {_moduleName = value;}

}

public int GetInt(string section, string entry, int nDefault)

{

if (section == null)

throw new ArgumentException("section");

if (entry == null)

throw new ArgumentException("entry");

return GetPrivateProfileInt(section, entry, nDefault, ModuleName);

}

public bool WriteInt(string section, string entry, int nValue)

{

if (section == null)

throw new ArgumentException("section");

if (entry == null)

throw new ArgumentException("entry");

return WritePrivateProfileString(section, entry, Convert.ToString(nValue), ModuleName);

}

public string GetString(string section, string entry, string sDefault)

{

if (section == null)

throw new ArgumentException("section");

if (entry == null)

throw new ArgumentException("entry");

if (sDefault == null)

sDefault = string.Empty;

var buf = new StringBuilder(4095);

GetPrivateProfileString(section, entry, sDefault, buf, buf.Capacity, ModuleName);

return buf.ToString();

}

public bool WriteString(string section, string entry,string sValue)

{

if (section == null)

throw new ArgumentException("section");

if (entry == null)

throw new ArgumentException("entry");

return WritePrivateProfileString(section, entry, sValue, ModuleName);

}

}

}

namespace avto.SysMsg.Interfaces

{

Интерфейс описывающий сигнатуры методов системных сообщений

public interface IsysMsg

{

bool ReportMsg(string text, string header, MsgType type);

bool ReportMsg(string text, MsgType type);

}

}

namespace avto.Settings.Interfaces

{

public interface ISettings

{

bool load();

bool save();

}

public interface IUniversalSettings : ISettings

{

Dictionary<string, string> GetBase();

bool IsNull();

bool SetNull();

void Clear();

Dictionary<string, string> Load(List<ISectionKey> _keys);

Dictionary<string, string> Load();

Параметр "_key">ключ поиска

string Getbykey(string _key);

bool Setbykey(string _key, string value);

bool Setbykey(string _section,string _key, string value);

int Count();

string ModuleName{get;set;}

List<ISectionKey> SectionKeys { get; set; }

}

public interface ISectionKey

{

string Section { get; set; }

string Entry { get; set; }

bool CompareTo(object obj);

}

}

{Модуль работы с базой данных}

namespace avto.Data

{

public class BaseRepository : IBaseRepository

{

protected IDbDataSource _db;

protected IAppContext _appcontext;

protected DataContext _datacontext;

public BaseRepository()

{

_datacontext = null;

}

public BaseRepository(IDbDataSource dbDataSource, IAppContext appContext)

{

Debug.Assert(null != dbDataSource);

_db = dbDataSource;

_datacontext = _db.Datacontext;

_appcontext = appContext;

}

public void SubmitChangesinDC()

{

try

{

_datacontext.SubmitChanges();

}

catch (Exception ex)

{

RefreshDataContext();

throw ex;

}

}

public void RefreshDataContext()

{

_datacontext = _db.GetNewDataContext();

}

public IQueryable<T> GetAll<T>() where T : class

{

try

{

return _datacontext.GetTable<T>();

}

catch(Exception ex)

{

_appcontext.SysMsg.ReportMsg(ex.Message, avto.SysMsg.Interfaces.MsgType.Error);

}

return Queryable.AsQueryable<T>(new List<T>());

}

private int GetAttributeOf(PropertyInfo propertyInfo)

{

try

{

object[] attributes = propertyInfo.GetCustomAttributes(typeof(ColumnAttribute), true);

if (attributes.Length == 0)

return -1;

if (((ColumnAttribute)attributes[0]).IsPrimaryKey)

return 1;

else

return 0;

}

catch (Exception ex)

{

_appcontext.SysMsg.ReportMsg(ex.Message, avto.SysMsg.Interfaces.MsgType.Error);

}

return -1;

}

private bool IsPrimaryKey(PropertyInfo propertyInfo)

{

try

{

if (GetAttributeOf(propertyInfo) < 1) return false;

return true;

}

catch (Exception ex)

{

_appcontext.SysMsg.ReportMsg(ex.Message, avto.SysMsg.Interfaces.MsgType.Error);

}

return false;

}

private PropertyInfo GetPrimaryKey(Type entityType)

{

try

{

foreach (PropertyInfo property in entityType.GetProperties())

{

if (IsPrimaryKey(property))

{

if (property.PropertyType != typeof(int))

{

throw new ApplicationException(string.Format("Primary key, '{0}', of type '{1}' is not int", property.Name, entityType));

}

return property;

}

}

throw new ApplicationException(string.Format("No primary key defined for type {0}", entityType.Name));

}

catch (Exception ex)

{

_appcontext.SysMsg.ReportMsg(ex.Message, avto.SysMsg.Interfaces.MsgType.Error);

}

_appcontext.SysMsg.ReportMsg(string.Format("No primary key defined for type {0}", entityType.Name), avto.SysMsg.Interfaces.MsgType.Error);

return null;

}

public T GetById<T>(int _Id) where T:class

{

try

{

var itemParameter = Expression.Parameter(typeof(T), "item");

var whereExpression = Expression.Lambda<Func<T, bool>>

(

Expression.Equal(

Expression.Property(

itemParameter,

GetPrimaryKey(typeof(T)).Name

),

Expression.Constant(_Id)

),

new[] { itemParameter }

);

var rez = _datacontext.GetTable<T>().Where(whereExpression);

if (rez.Count() > 0)

return rez.First();

}

catch (Exception ex)

{

_appcontext.SysMsg.ReportMsg(ex.Message, avto.SysMsg.Interfaces.MsgType.Error);

}

return null;

}

public bool Del<T>(T obj) where T:class

{

try

{

_datacontext.GetTable<T>().DeleteOnSubmit(GetById<T>(GetID(obj)));

SubmitChangesinDC();

}

catch (Exception ex)

{

return false;

}

return true;

}

public bool DelByid<T>(int id) where T : class

{

try

{

_datacontext.GetTable<T>().DeleteOnSubmit(GetById<T>(id));

SubmitChangesinDC();

}

catch (Exception ex)

{

return false;

}

return true;

}

public bool Save<T>(T obj) where T: class

{

try

{

int ID = GetID(obj);

if (ID > 0)

{

var oldobj = GetById<T>(ID);

if (oldobj != null)

{

foreach (PropertyInfo propertyitem in obj.GetType().GetProperties())

{

PropertyInfo oldproperty = oldobj.GetType().GetProperty(propertyitem.Name);

oldproperty.SetValue(oldobj, propertyitem.GetValue(obj, null), null);

}

}

else

{

_appcontext.SysMsg.ReportMsg("Ошибка припопытке добавить данные" + obj.GetType().ToString() , avto.SysMsg.Interfaces.MsgType.Error);

return false;

}

}

else

{

_datacontext.GetTable<T>().InsertOnSubmit(obj);

}

SubmitChangesinDC();

}

catch (Exception ex)

{

_appcontext.SysMsg.ReportMsg(ex.Message, avto.SysMsg.Interfaces.MsgType.Error);

return false;

}

return true;

}

public IQueryable<T> GetByFilter<T>(Expression<Func<T, bool>> filter) where T:class

{

try

{

return _datacontext.GetTable<T>().Where(filter);

}

catch (Exception ex)

{

_appcontext.SysMsg.ReportMsg(ex.Message, avto.SysMsg.Interfaces.MsgType.Error);

}

return Queryable.AsQueryable<T>(new List<T>());

}

public IQueryable<T> GetByUserFilter<T, VT>(string _parametr_name, VT _value) where T : class

{

try

{

var itemParameter = Expression.Parameter(typeof(T), "item");

var whereExpression = Expression.Lambda<Func<T, bool>>

(

Expression.Equal(

Expression.Property(

itemParameter, _parametr_name

),

Expression.Constant(_value)

),

new[] { itemParameter }

);

return _datacontext.GetTable<T>().Where(whereExpression);

}

catch (Exception ex)

{

_appcontext.SysMsg.ReportMsg(ex.Message, avto.SysMsg.Interfaces.MsgType.Error);

}

return Queryable.AsQueryable<T>(new List<T>());

}

public string DoubleToPointString(Double d)

{

string s = d.ToString();

return s.Replace(",", ".");

}

public string DoubleToPointString(string d)

{

return d.Replace(",", ".");

}

public List<string> GetProperyName<T> () where T : class

{

List<string> returnlist = new List<string>();

try

{

Type entityType = typeof(T);

foreach (PropertyInfo property in entityType.GetProperties())

{

if (GetAttributeOf(property) == 0)

returnlist.Add(property.Name);

}

return returnlist;

}

catch(Exception ex)

{

_appcontext.SysMsg.ReportMsg(ex.Message, avto.SysMsg.Interfaces.MsgType.Error);

}

return returnlist;

}

public List<Type> GetProperyType<T>() where T : class

{

List<Type> returnlist = new List<Type>();

try

{

Type entityType = typeof(T);

foreach (PropertyInfo property in entityType.GetProperties())

{

if (GetAttributeOf(property) == 0)

returnlist.Add(property.PropertyType);

}

return returnlist;

}

catch (Exception ex)

{

_appcontext.SysMsg.ReportMsg(ex.Message, avto.SysMsg.Interfaces.MsgType.Error);

}

return returnlist;

}

public int GetID<T>(T obj) where T : class

{

Object values = null ;

try

{

Type entityType = typeof(T);

foreach (PropertyInfo property in entityType.GetProperties())

{

if (GetAttributeOf(property) == 1)

values =property.GetValue(obj,new object[]{});

}

if (values!=null)

return (int)values;

}

catch (Exception ex)

{

return -1;

}

return -1;

}

}

}

namespace avto.Data

{

public class Repository : BaseRepository

{

public Repository() { }

public Repository(IDbDataSource dbDataSource, IAppContext appContext)

{

Debug.Assert(null != dbDataSource);

_db = dbDataSource;

_datacontext = _db.Datacontext;

_appcontext = appContext;

}

public bool Del<T>(T obj) where T : class

{

return base.Del<T>(obj);

}

public IQueryable<WorkSparepart> GetWorksDetails(int _ID)

{

return GetAll<WorkSparepart>().Where(it => it.Work_id==_ID);

}

public IQueryable<Spare_part> GetNotWorkDetails(int _ID)

{

var result = from Spare_part item in GetAll<Spare_part>() запрос по всем деталям

where !(from WorkSparepart it in GetAll<WorkSparepart>() //вложенный запрос получение списка всех деталей используемых в работе

where it.Work_id == _ID

select it.Sparepart_id

).Contains(item.Spare_part_ID)

select item;

return result;

}

public bool Del(Car Obj)

{

if (Obj != null)

{

bool isok = true;

var info = GetByFilter<Car_Parm>(it=> it.Car_ID== Obj.CAR_id).ToList();

if (info.Count > 0)

{

foreach (Car_Parm item in info)

{

isok &= Del(item);

}

}

var repair = GetByFilter<Repair>(it => it.CarID == Obj.CAR_id).ToList();

if (repair.Count > 0)

{

foreach (Repair item in repair)

{

isok &= Del(item);

}

}

if (isok)

{

if (base.Del<Car>(Obj))

return true;

}

}

return false;

}

public bool Del(Client Obj)

{

if (Obj != null)

{

bool isok = true;

var info = GetByFilter<Car>(it => it.Client_ID == Obj.Client_id).ToList();

if (info.Count > 0)

{

foreach (Car item in info)

{

isok &= Del(item);

}

}

var param = GetByFilter<Client_Param>(it => it.Client_id == Obj.Client_id).ToList();

if (param.Count > 0)

{

foreach (Client_Param item in param)

{

isok &= Del(item);

}

}

if (isok)

{

if (base.Del<Client>(Obj))

return true;

}

}

return false;

}

public bool Del(Repair Obj)

{

if (Obj != null)

{

bool isok = true;

var info = GetByFilter<RepairWork>(it => it.repair_id == Obj.Repair_id).ToList();

if (info.Count > 0)

{

foreach (RepairWork item in info)

{

isok &= Del(item);

}

}

if (isok)

{

if (base.Del<Repair>(Obj))

return true;

}

}

return false;

}

}

}

namespace avto.Data.Interfaces

{

public interface IBaseRepository

{

void SubmitChangesinDC();

void RefreshDataContext();

IQueryable<T> GetAll<T>() where T : class;

Параметр "_id" Идентификатор

T GetById<T>(int _Id) where T : class;

bool Del<T>(T obj) where T : class;

bool Save<T>(T obj) where T : class;

Параметр "filter">linq фильтр

IQueryable<T> GetByFilter<T>(Expression<Func<T, bool>> filter) where T : class;

IQueryable<T> GetByUserFilter<T, VT>(string _parametr_name, VT _value) where T : class;

string DoubleToPointString(Double d);

string DoubleToPointString(string d);

List<string> GetProperyName<T>() where T : class;

}

}

{Модуль основной программы}

namespace avto

{

public class AppContext : IAppContext, IDisposable

{

#region Fields

private readonly IUnityContainer _container;

настройки системы

private readonly UniversalSettingsINI settings;

private DataService _dataservice;

private int _usermod;

private int _accaunt;

#endregion

public AppContext()

{

List<ISectionKey> SectionsKeylist = new List<ISectionKey>();

SectionsKeylist.Add(new SectionKey("Connection", "Main"));

SectionsKeylist.Add(new SectionKey("Connection", "Reserv"));

settings = new UniversalSettingsINI();

settings.SectionKeys = SectionsKeylist;

settings.ModuleName = System.IO.Path.GetFullPath("conf.ini");

//получаем базовые настройки

try

{

settings.Load();

}

catch

{

}

_dataservice = new DataService();

_container = new UnityContainer();

ConfigureContainer(_container);

_dataservice.MainConnectionString = settings.Getbykey("Main");

_dataservice.BackConnectionString = settings.Getbykey("Reserv");

}

public void InitAll()

{

}

private void ConfigureContainer(IUnityContainer container)

{

try

{

_dataservice.ConfigureContainer(container);

container.RegisterInstance<IUniversalSettings>(settings);

container.RegisterInstance<IAppContext>(this, new ExternallyControlledLifetimeManager());

container.RegisterType<IsysMsg, ReportSysMsg>(new ContainerControlledLifetimeManager());

}

catch (Exception ex)

{

}

}

#region IAppContext Members

public IUnityContainer Container

{

get { return _container; }

}

public IsysMsg SysMsg

{

get { return _container.Resolve<ReportSysMsg>(); }

}

public DataService DataService

{

get { return _container.Resolve<DataService>(); }

}

public IUniversalSettings Settings

{

get { return _container.Resolve<IUniversalSettings>(); }

set

{

settings.Clear();

_container.RegisterInstance<IUniversalSettings>(value);

}

}

public int UserMode

{

get { return _usermod; }

set { _usermod = value; }

}

public int AccountID

{

get { return _accaunt; }

set { _accaunt = value; }

}

#endregion

#region IDisposable Members

public void Dispose()

{

throw new NotImplementedException();

}

#endregion

}

}

{Модуль плагина групп машин}

namespace Avto.PluginHandbook

{

public class Brand_machineControlPlugin : IHandbookPlugins

{

private IAppContext _Appcontext;

public string Name

{

get { return "Brand_machineControl"; }

}

public System.Windows.Controls.UserControl CreateControl(IAppContext Appcontext)

{

_Appcontext = Appcontext;

return new Brand_machineControl(_Appcontext);

}

public IAppContext Appcontext

{

get

{

return _Appcontext;

}

set

{

_Appcontext = value;

}

}

public string HumanName

{

get { return "Группы машин"; }

}

}

}

namespace Avto.PluginHandbook

{

Логика взаимодействия для Brand_machineControl.xaml

public partial class Brand_machineControl : UserControl

{

private IAppContext _appcontext;

public Brand_machineControl(IAppContext __Appcontext)

{

_appcontext = __Appcontext;

InitializeComponent();

refresh();

}

protected void refresh()

{

var repo = _appcontext.Container.Resolve<Repository>();

dataGrid1.ItemsSource = repo.GetAll<Brand_machine>().ToList();

if (dataGrid1.Items.Count > 0)

{

dataGrid1.SelectedIndex = 0;

}

}

private void dataGrid1_PreviewKeyDown(object sender, KeyEventArgs e)

{

if (e.Key == Key.Delete)

dataGrid1.CanUserDeleteRows = false;

}

private void deleteWorkGroup()

{

var repo = _appcontext.Container.Resolve<Repository>();

var row = dataGrid1.SelectedItem as Brand_machine;

if (row != null)

if (_appcontext.SysMsg.ReportMsg("Вы действидельно желаете удалить текущую запись?", "Удаление", avto.SysMsg.Interfaces.MsgType.Question))

{

dataGrid1.CanUserDeleteRows = true;

if (repo.Del(row))

{

int iitem = dataGrid1.SelectedIndex;

List<Brand_machine> items = (List<Brand_machine>)dataGrid1.ItemsSource;

items.RemoveAt(iitem);

dataGrid1.Items.Refresh();

if (items.Count > 0) { dataGrid1.SelectedIndex = 0; }

}

else

_appcontext.SysMsg.ReportMsg("Ошибка при удалении", "Ошибка", avto.SysMsg.Interfaces.MsgType.Error);

}

else

dataGrid1.CanUserDeleteRows = false;

}

private void delbutton_Click(object sender, RoutedEventArgs e)

{

deleteWorkGroup();

}

private void SaveOnlyButton_Click(object sender, RoutedEventArgs e)

{

if (dataGrid1.Items.Count > 0)

if (!string.IsNullOrEmpty(textBox1.Text))

{

var repo = _appcontext.Container.Resolve<Repository>();

var find = repo.GetByUserFilter<Brand_machine, string>("brand_machine_name", textBox1.Text).ToList();

if (find.Count() == 0)

{

Utility utelemnt = new Utility();

Brand_machine utelemnt = dataGrid1.SelectedItem as Brand_machine;

utelemnt.brand_machine_name = textBox1.Text;

utelemnt.brand_machine_coef= float.Parse(textBox2.Text.Replace(".",","));

if (!repo.Save(utelemnt))

_appcontext.SysMsg.ReportMsg("Ошибка изминения записи", "Ошибка", avto.SysMsg.Interfaces.MsgType.Error);

}

else

_appcontext.SysMsg.ReportMsg("Нельзя изменить такая запись уже присутствует", "Предупреждение", avto.SysMsg.Interfaces.MsgType.Warning);

}

else

_appcontext.SysMsg.ReportMsg("Параметр не может быть пустым", "Прежупреждение", avto.SysMsg.Interfaces.MsgType.Warning);

}

private void AddOnlyButton_Click(object sender, RoutedEventArgs e)

{

if (!string.IsNullOrEmpty(textBox1.Text))

{

var repo = _appcontext.Container.Resolve<Repository>();

var find = repo.GetByUserFilter<Brand_machine, string>("brand_machine_name", textBox1.Text).ToList();

if (find.Count() == 0)

{

Brand_machine utelemnt = new Brand_machine();

utelemnt.brand_machine_name = textBox1.Text;

try

{

utelemnt.brand_machine_coef = float.Parse(textBox2.Text);

}

catch

{

_appcontext.SysMsg.ReportMsg("Неверно задан коэффициент", "Ошибка", avto.SysMsg.Interfaces.MsgType.Error);

return;

}

List<Brand_machine> items = (List<Brand_machine>)dataGrid1.ItemsSource;

if (!repo.Save(utelemnt))

_appcontext.SysMsg.ReportMsg("Ошибка добавления записи", "Ошибка", avto.SysMsg.Interfaces.MsgType.Error);

else

items.Add(utelemnt);

dataGrid1.Items.Refresh();

}

else

_appcontext.SysMsg.ReportMsg("Нельзя добавить уже имеющуюся запись", "Предупреждение", avto.SysMsg.Interfaces.MsgType.Warning);

}

else

_appcontext.SysMsg.ReportMsg("Параметр не может быть пустым", "Прежупреждение", avto.SysMsg.Interfaces.MsgType.Warning);

}

}

}

{Модуль плагина генерации отчетов деталей}

namespace avto.PluginReport.detail

{

public partial class detail : UserControl

{

private IAppContext _appcontext;

public detail(IAppContext __appcontext)

{

_appcontext = __appcontext;

InitializeComponent();

}

private void print_Click(object sender, RoutedEventArgs e)

{

DetailReportPlugin report = new DetailReportPlugin(_appcontext);

report.Print();

return;

}

private void save_Click(object sender, RoutedEventArgs e)

{

DetailReportPlugin report = new DetailReportPlugin(_appcontext);

report.SaveTo();

return;

}

private void Prev_Click(object sender, RoutedEventArgs e)

{

DetailReportPlugin report = new DetailReportPlugin(_appcontext);

report.Preview();

return;

}

public Button Getelement()

{

return Prev;

}

}

}

namespace avto.PluginReport.detail

{

class DetailReportPlugin : Form

{

private IAppContext _appcontext;

private Dictionary<string, string> _fields;

private DataSet _ds;

Protocol_PROXY nproxy;

private string _Templatefilename;

public string Templatefilename

{

get { return _Templatefilename; }

set { _Templatefilename = value;}

}

public DetailReportPlugin(IAppContext __appcontext)

{

InitializeComponent();

_ds = new DataSet();

_appcontext = __appcontext;

_Templatefilename = "detail.rpt";

}

#region Windows Form Designer generated code

private System.ComponentModel.IContainer components;

Required method for Designer support - do not modify

the contents of this method with the code editor.

private void InitializeComponent()

{

this.crViewer = new CrystalDecisions.Windows.Forms.CrystalReportViewer();

this.crDoc = new CrystalDecisions.CrystalReports.Engine.ReportDocument();

this.SuspendLayout();

//

// crViewer

//

this.crViewer.ActiveViewIndex = -1;

this.crViewer.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;

this.crViewer.Dock = System.Windows.Forms.DockStyle.Fill;

this.crViewer.Location = new System.Drawing.Point(0, 0);

this.crViewer.Name = "crViewer";

this.crViewer.SelectionFormula = "";

this.crViewer.ShowExportButton = false;

this.crViewer.Size = new System.Drawing.Size(546, 502);

this.crViewer.TabIndex = 0;

this.crViewer.ViewTimeSelectionFormula = "";

//

// PramerReport

//

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

this.ClientSize = new System.Drawing.Size(546, 502);

this.Controls.Add(this.crViewer);

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;

this.Name = "WorkOrder";

this.ShowInTaskbar = false;

this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;

this.Text = "Заказ наряд";

this.WindowState = System.Windows.Forms.FormWindowState.Maximized;

this.ResumeLayout(false);

}

#endregion

private CrystalDecisions.Windows.Forms.CrystalReportViewer crViewer;

private CrystalDecisions.CrystalReports.Engine.ReportDocument crDoc;

метод создания датасета

public bool CreateDataSet()

{

var repo = _appcontext.Container.Resolve<Repository>();

nproxy=new Protocol_PROXY(_appcontext, repo.GetById<Repair>(_appcontext.id));

DataSetDetailOrder.DetailDataTable chkDetail = new DataSetDetailOrder.DetailDataTable();

_ds.Tables.Clear();

foreach (detailProxy item in nproxy.detproxy)

{

try

{

chkDetail.AddDetailRow(item.WorkName,item.DetailName,item.Unit,item.Count,item.distr);

}

catch

{

}

}

_ds.Tables.Add(chkDetail);

return true;

}

private bool docCreate()

{

try

{

string fname = System.IO.Path.GetFullPath(_Templatefilename);

crDoc.Load(fname);

CreateDataSet();

if (_ds == null)

return false;

///////////////

crDoc.SetDataSource(_ds);

///////////////

crDoc.ParameterFields["Client"].CurrentValues.AddValue(nproxy.Client);

crDoc.ParameterFields["car"].CurrentValues.AddValue(nproxy.CAr);

crDoc.ParameterFields["carnum"].CurrentValues.AddValue(nproxy.CarNum);

crDoc.ParameterFields["indata"].CurrentValues.AddValue(nproxy.InData);

crDoc.ParameterFields["outdata"].CurrentValues.AddValue(nproxy.OutData);

crDoc.PrintOptions.PaperSize = PaperSize.PaperA4;

}

catch (Exception ex)

{

_appcontext.SysMsg.ReportMsg(ex.Message, "Ошибка загрузки отчета",SysMsg.Interfaces.MsgType.Error);

return false;

}

return true;

}

show system SAve file dialog

результат диологоа

public SaveFileDialog FileSave(string Fullfilter, string Name)

{

SaveFileDialog saveFileDialog1 = new SaveFileDialog();

saveFileDialog1.Filter = Fullfilter;

saveFileDialog1.Title = Name;

DialogResult result = saveFileDialog1.ShowDialog();

return saveFileDialog1;

}

public bool Preview()

{

try

{

Show();

return true;

}

catch (Exception ex)

{

return false;

}

return true;

}

public bool SaveTo()

{

try

{

if (docCreate())

{

SaveFileDialog saveFileDialog1 = FileSave("Rich Text (*.rtf)|*.rtf|Portable Doc Format (*.pdf)|*.pdf|Word For Windows (*.doc)|*.doc|Excel (*.xls)|*.xls|HTML (*.htm)|*.htm"

, "Сохранение протокола");

if (saveFileDialog1.FileName != "")

{

FileInfo finfo = new FileInfo(saveFileDialog1.FileName);

switch (saveFileDialog1.FilterIndex)

{

case 1: if (!ExportReport(crDoc, "rtf", finfo.DirectoryName + "\\", finfo.Name))

_appcontext.SysMsg.ReportMsg("Ошибка сохранениея", "Сохранение",SysMsg.Interfaces.MsgType.Error);

break;

case 2: if (!ExportReport(crDoc, "pdf", finfo.DirectoryName + "\\", finfo.Name))

_appcontext.SysMsg.ReportMsg("Ошибка сохранениея", "Сохранение",SysMsg.Interfaces.MsgType.Error); break;

case 3: if (!ExportReport(crDoc, "doc", finfo.DirectoryName + "\\", finfo.Name))

_appcontext.SysMsg.ReportMsg("Ошибка сохранениея", "Сохранение",SysMsg.Interfaces.MsgType.Error); break;

case 4: if (!ExportReport(crDoc, "xls", finfo.DirectoryName + "\\", finfo.Name))

_appcontext.SysMsg.ReportMsg("Ошибка сохранениея", "Сохранение",SysMsg.Interfaces.MsgType.Error); break;

case 5: if (!ExportReport(crDoc, "htm", finfo.DirectoryName + "\\", finfo.Name))

_appcontext.SysMsg.ReportMsg("Ошибка сохранениея", "Сохранение",SysMsg.Interfaces.MsgType.Error); break;

}

}

}

else

{

_appcontext.SysMsg.ReportMsg("Ошибка данных", "Ошибка Сохранения отчета", SysMsg.Interfaces.MsgType.Error);

return false;

}

}

catch (Exception ex)

{

return false;

}

return true;

}

public bool LoadBase()

{

if (docCreate())

{

crViewer.AutoSize = false;

crViewer.ShowGroupTreeButton = false;

crViewer.Controls[2].Visible = false;

crViewer.ShowExportButton = true;

//A4;

crViewer.ReportSource = crDoc;

}

return true;

}

protected override void OnLoad(EventArgs e)

{

LoadBase();

}

Export report to file

Параметр "crReportDocument">ReportDocument< /param >

Параметр "ExpType" Export Type (pdf, xls, doc, rpt, htm

Параметр "ExportPath" Export Path (physical path on the disk were exported document will be stored on

Параметр "filename" File name (file name without extension f.e. "MyReport1")

< returns>returns true if export was succesfull< /returns >

public static bool ExportReport(CrystalDecisions.CrystalReports.Engine.ReportDocument crReportDocument,

string ExpType, string ExportPath, string filename)

{

creating full report file name for example if the filename was "MyReport1" and ExpType was "pdf", full file name will be "MyReport1.pdf" filename = filename + "." + ExpType; creating storage directory if not exists

if (!Directory.Exists(ExportPath))

Directory.CreateDirectory(ExportPath);

creating new instance representing disk file destination

options such as filename, export type etc.

string strtmp = filename.Replace("/", "_");

filename = strtmp;

DiskFileDestinationOptions crDiskFileDestinationOptions = new DiskFileDestinationOptions();

ExportOptions crExportOptions = crReportDocument.ExportOptions;

switch (ExpType)

{

case "rtf":

{

setting disk file name

crDiskFileDestinationOptions.DiskFileName = ExportPath + filename;

setting destination type in our case disk file

crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;

setuing export format type

crExportOptions.ExportFormatType = ExportFormatType.RichText;

setting previously defined destination

opions to our input report document

crExportOptions.DestinationOptions = crDiskFileDestinationOptions;

break;

}

NOTE following code is similar to previous, so I want comment it again

case "pdf":

{

crDiskFileDestinationOptions.DiskFileName = ExportPath + filename;

crExportOptions.DestinationOptions = crDiskFileDestinationOptions;

crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;

crExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;

break;

}

case "doc":

{

crDiskFileDestinationOptions.DiskFileName = ExportPath + filename;

crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;

crExportOptions.ExportFormatType = ExportFormatType.WordForWindows;

crExportOptions.DestinationOptions = crDiskFileDestinationOptions;

break;

}

case "xls":

{

crDiskFileDestinationOptions.DiskFileName = ExportPath + filename;

crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;

crExportOptions.ExportFormatType = ExportFormatType.Excel;

crExportOptions.DestinationOptions = crDiskFileDestinationOptions;

break;

}

case "rpt":

{

crDiskFileDestinationOptions.DiskFileName = ExportPath + filename;

crExportOptions.ExportDestinationType =

ExportDestinationType.DiskFile;

crExportOptions.ExportFormatType = ExportFormatType.CrystalReport;

crExportOptions.DestinationOptions = crDiskFileDestinationOptions;

break;

}

case "htm":

{

HTMLFormatOptions HTML40Formatopts = new HTMLFormatOptions();

crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;

crExportOptions.ExportFormatType = ExportFormatType.HTML40;

HTML40Formatopts.HTMLBaseFolderName = ExportPath + filename;

HTML40Formatopts.HTMLFileName = "HTML40.html";

HTML40Formatopts.HTMLEnableSeparatedPages = true;

HTML40Formatopts.HTMLHasPageNavigator = true;

HTML40Formatopts.FirstPageNumber = 1;

HTML40Formatopts.LastPageNumber = 3;

crExportOptions.FormatOptions = HTML40Formatopts;

break;

}

}

try

{

//trying to export input report document,

//and if success returns true

crReportDocument.Export();

return true;

}

catch (Exception err)

{

return false;

}

}

public bool Print()

{

try

{

if (docCreate())

{

PrintDialog printDialog1 = new PrintDialog();

DialogResult dr = printDialog1.ShowDialog();

if (dr == DialogResult.OK)

{

int nCopy = printDialog1.PrinterSettings.Copies;

//Get the number of Start Page

int sPage = printDialog1.PrinterSettings.FromPage;

//Get the number of End Page

int ePage = printDialog1.PrinterSettings.ToPage;

//Get the printer name

string PrinterName = printDialog1.PrinterSettings.PrinterName;

crDoc.PrintOptions.PrinterName = PrinterName;

crDoc.PrintToPrinter(nCopy, false, sPage, ePage);

}

}

else

{

_appcontext.SysMsg.ReportMsg("Ошибка данных", "Ошибка Печати отчета", SysMsg.Interfaces.MsgType.Error);

return false;

}

}

catch (Exception ex)

{

_appcontext.SysMsg.ReportMsg(ex.Message, "Ошибка Печати отчета", SysMsg.Interfaces.MsgType.Error);

return false;

}

return true;

}

}

}

namespace avto.PluginReport.detail

{

public class DetailPlugin : IReport

{

private IAppContext _Appcontext;

private Form _PrintDetailPlugin;

private System.Windows.Controls.Button _main;

public System.Windows.Controls.Button CreateMenu(IAppContext _appcontext)

{

_Appcontext = _appcontext;

detail element = new detail(_appcontext);

_main = element.Getelement();

return _main;

}

public System.Windows.Controls.UserControl CreateControl(IAppContext _appcontext)

{

_Appcontext = _appcontext;

detail element = new detail(_appcontext);

return element;

}

public string Name

{

get { return "DetailPlugin"; }

}

public IAppContext Appcontext

{

get

{

return _Appcontext;

}

set

{

_Appcontext = value;

}

}

public string HumanName

{

get { return "детали"; }

}

}

}

namespace avto.PluginReport.detail.reports

{

public class Protocol_PROXY

{

//private DataSet dat;

private int __id;

private IAppContext _appContext;

public Protocol_PROXY(IAppContext _appcontext, Repair _Repair)

{

_appContext = _appcontext;

detproxy = new List<detailProxy>();

var rrw=_Repair.RepairWork.ToList();

foreach (RepairWork item in rrw)

{

var iwws= item.Work.WorkSparepart.ToList();

foreach (WorkSparepart element in iwws)

{

detailProxy WP = new detailProxy(element);

detproxy.Add(WP);

}

}

_Client = _Repair.Car.Client.Client_Name;

_car = _Repair.Car.Brand_machine.brand_machine_name;

_carnum = _Repair.Car.number; //.Car_Parm.Where<Car_Parm>(it => it.Car_Parm_Text.Car_Parm_Text1.ToLower() == "Гос номер".ToLower()).FirstOrDefault().Car_Param_Value;

_indata = _Repair.inTime.ToLongDateString();

_outdata = _Repair.OutTime.ToString();

}

private string _Client ;

public string Client

{

get { return _Client; }

set { _Client = value; }

}

private string _car;

public string CAr

{

get { return _car; }

set { _car = value; }

}

private string _carnum;

public string CarNum

{

get { return _carnum; }

set { _carnum = value; }

}

private string _indata;

public string InData

{

get { return _indata; }

set { _indata = value; }

}

private string _outdata;

public string OutData

{

get { return _outdata; }

set { _outdata = value; }

}

public List<detailProxy> detproxy;

}

public class detailProxy

{

private string _WorkName;

public string WorkName

{

get { return _WorkName; }

set { _WorkName = value; }

}

private string _DetailName;

public string DetailName

{

get { return _DetailName; }

set { _DetailName = value; }

}

private string _Unit;

public string Unit

{

get { return _Unit; }

set { _Unit = value; }

}

private string _distr;

public string distr

{

get { return _distr; }

set { _distr = value; }

}

private string _Count;

public string Count

{

get { return _Count; }

set { _Count = value; }

}

public detailProxy(WorkSparepart _detail)

{

_WorkName = _detail.Work.Work_name;

_DetailName = _detail.Spare_part.Spare_part_Name;

_distr=_detail.Spare_part.Distributor.DistributorName;

_Unit=_detail.Spare_part.units.units_name;

_Count=_detail.count.ToString();

}

}

}

Размещено на Allbest.ru


Подобные документы

  • Описание предметной области и разработка электронного учебника на основе архитектуры "клиент – сервер". Тестирование программы менеджера и создание интерфейса главного меню. Вход в программу в качестве пользователя и обеспечение перехода к данным лекций.

    курсовая работа [1,5 M], добавлен 26.02.2015

  • Функциональная модель системы. Проектирование схемы базы данных. Проектирование архитектуры системы. Принцип технологии клиент-сервер. Построение схемы ресурсов. Выбор программных средств. Разработка базы данных с использованием Microsoft SQL Server.

    дипломная работа [1,1 M], добавлен 30.03.2015

  • Свойства и режимы реализации удаленного доступа. Организация удаленного доступа. Интеграция удаленного доступа в корпоративную интрасеть. Установка клиентских средств удаленного доступа для Windows. Утилита, работающая в архитектуре клиент-сервер.

    курсовая работа [28,2 K], добавлен 17.12.2011

  • Модели баз данных. Локальная, файл-серверная, клиент-серверная и распределенная архитектуры. Технология BDE для доступа к данным. Драйверы баз данных. Создание таблицы, интерфейс программы, дерево объектов, инсталлятор. Системы визуальной разработки.

    курсовая работа [989,5 K], добавлен 04.06.2013

  • Представление данных в памяти компьютера. Обобщенные структуры и модели данных. Методы доступа к информации. Физическая организация системы управления базами данных, структура сервера. Архитектура "клиент-сервер". Создание базы данных с помощью "Денвер".

    курсовая работа [770,3 K], добавлен 17.11.2014

  • Анализ архитектуры информационной системы, в структуру которой входят системы файл-сервер и клиент-сервер. Сравнение языков запросов SQL и QBE. Принципы разработки приложений архитектуры клиент-сервер при помощи структурированного языка запросов SQL.

    курсовая работа [88,9 K], добавлен 11.04.2010

  • Классификации баз данных и СУБД. Технология модели "клиент-сервер". Особенности языка структурированных запросов SQL. Структура и назначение операторов определения, манипулирования и управления данными. Разработка реляционной БД, создание SQL запросов.

    курсовая работа [1,4 M], добавлен 17.08.2015

  • Разработка базы данных "Автоматизированное рабочее место секретаря агентства". Описание документооборота, проектирование инфологической модели базы данных, содержащей в себе информацию о клиентах, преподавателях, договорах. Таблицы и связи между ними.

    дипломная работа [1,8 M], добавлен 05.03.2011

  • Рассмотрение архитектуры "файл-сервер" и двух- и трехуровневых архитектур "клиент-сервер". Модель сервера приложений и свойства "идеальной" системы управления распределенными базами данных. Способы распределения функций обработки логики запроса.

    презентация [60,2 K], добавлен 19.08.2013

  • Многоуровневые архитектуры клиент–сервер. Диаграммы классов, реализующих уровни презентации, бизнес–логики и базы данных приложения. Словесное описание процесса выполнения транзакций. Создание, изменение и удаление хранимых процедур, их выполнение.

    курсовая работа [3,4 M], добавлен 23.03.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.