Автоматизированное рабочее место инженера по гарантии СТО "Континент"
Модель удаленного управления и доступа к данным. Преимущества архитектуры клиент-сервер. Выбор языка программирования. Разработка программы и создание базы данных. Нормирование условий труда программистов, операторов электронно-вычислительных машин.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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,001500,00300,00300,001000,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