Пожалуйста помогите спроектировать базу данных и программу на Delphi автоматизированную систему учета сервисного(технического) обслуживания автомобилей
» Помогите спроектировать базу данных и программу на Delphi
Можешь дать более подробное описание задачи?
Cowboy_99
Что конкретно интересует. Когда-то писал программу по данным водителей такси/
Выглядит вот так: http://i60.fastpic.ru/big/2013/0921/5f/4c9455141d3b15d9c46795173bcde35f.jpg
Может пригодится.
Что конкретно интересует. Когда-то писал программу по данным водителей такси/
Выглядит вот так: http://i60.fastpic.ru/big/2013/0921/5f/4c9455141d3b15d9c46795173bcde35f.jpg
Может пригодится.
Благдарю всех участников форума за то что вы быстро откликнулись
Примерные функции программы можно добавить можно убрать ваши предложения:
Программа должна автоматизировать учет технического сервисного обслужвания автомобилей т.е:
Программа должна автоматизировать работу станции технического обслуживания (СТО) автомобилей.
Программа должна регистрировать операции по ремонту, учет потраченных запчатей/материалов и количество нормочасов при работе.
Программа должна автоматически расчитывать итоговую сумму а также формирвать отчетные документы
Программа должна содержать подсистему складского учета: приход запчастей и материалов, учет расхода, просмотр остатков.
Поиск, фильтрация, сортировка по любому полю. (это бязательно)
По каждому автомомбилю должна хранится вся история обращений/ремонтов.
но вначале надо спроектировать базу данных
Примерные функции программы можно добавить можно убрать ваши предложения:
Программа должна автоматизировать учет технического сервисного обслужвания автомобилей т.е:
Программа должна автоматизировать работу станции технического обслуживания (СТО) автомобилей.
Программа должна регистрировать операции по ремонту, учет потраченных запчатей/материалов и количество нормочасов при работе.
Программа должна автоматически расчитывать итоговую сумму а также формирвать отчетные документы
Программа должна содержать подсистему складского учета: приход запчастей и материалов, учет расхода, просмотр остатков.
Поиск, фильтрация, сортировка по любому полю. (это бязательно)
По каждому автомомбилю должна хранится вся история обращений/ремонтов.
но вначале надо спроектировать базу данных
Ничего военного.
Цитата:
А что проектировать? Нужно определиться с типом БД, создать нужные поля и порядок.
Цитата:
но вначале надо спроектировать базу данных
А что проектировать? Нужно определиться с типом БД, создать нужные поля и порядок.
Сперва нужно составить ТЗ, то что в программе должно быть. То что ты расписал это обобщенное описание, за которым может скрываться, да и многое зависит от отчетных документов.
Cowboy_99
Ну так подробности будут какие-нибудь по требуемому функционалу?
Ну так подробности будут какие-нибудь по требуемому функционалу?
Человеку надо написать дипломный проект. Опыта нет. Думаю, тут надо полностью сделать программу человеку, а не просто подсказать.
MGAlex
Может и так. Но тут даже не понятно что конкретно человеку нужно 


Dmitry
Он мне в личку писал.
Спрашивал, могу ли я ему написать программу. Но в связи с отсутствием времени, я не могу за это взяться. Предложил ему написать в этой теме, чтобы помогли.
Он мне в личку писал.
Спрашивал, могу ли я ему написать программу. Но в связи с отсутствием времени, я не могу за это взяться. Предложил ему написать в этой теме, чтобы помогли.
Доброго времени суток участникам форума огромное спасибо вам за то что проявляете интерес и даете советы
извините за то что так долго задержался были проблемы
вот здесь примерно наборсал как бы схему интерфейс и бд
данную программу проектирую впервые
а тему свободную выбрал главные требования к программе чтобы поиск нормально функционировал сортировка индексирование таблиц бд схема:
http://i58.fastpic.ru/big/2013/1003/5b/c4c4394328b2194f11d8371cde02f45b.jpg
извините за то что так долго задержался были проблемы
вот здесь примерно наборсал как бы схему интерфейс и бд
данную программу проектирую впервые
а тему свободную выбрал главные требования к программе чтобы поиск нормально функционировал сортировка индексирование таблиц бд схема:
http://i58.fastpic.ru/big/2013/1003/5b/c4c4394328b2194f11d8371cde02f45b.jpg
Первым делом нужно определиться с БД. В Вашем случае достаточно взять стандартную Paradox 7, т.к. особых навыков работы с БД Вы, как я понимаю, не имеете.
Создать базу можно с помощью Database Desktop, например.
Дальше необходимо выяснить, какие будут типы полей в БД:
- Номер двигателя - текстовое поле, в Database Dektop - Alpha, т.к. номер двигателя включает, как буквы, так и цифры (Номер двигателя обычно состоит из типового кода (группа знаков, определяющих его тип (модификацию) и порядкового (серийного) номера, например, XY508553)
- Гос. номер - Alpha
Год выпуска - если указывается только год, то можно указать Number. Если указывается дата, например, 02.08.1999, то тип Date.
- Марка авто - Alpha
- Владелец авто - Alpha
- Дата обслуживания - Date
Ходовая часть. Что здесь должно быть? Птичками отмечается, какой вид ремонта был осуществлен?
Если так, то все эти поля булевые, т.е. Logical
Под поиском подразумевается фильтр, я так понимаю? Т.е., в форме поиска вводишь нужные данные и отфильтровываются соответствующие записи.
[more=Пример фильтра]
Здесь можно воспользоваться TQuery.
Создаете форму с нужными полями. Достаточно обычных TEdit и TDateEdit.
Поиск в пределах дат можно осуществить следующим образом:
Код:
procedure TFilterForm.btSetClick(Sender: TObject);
var
cl: boolean;
begin
cl := true;
MainForm.Query1.Close;
MainForm.Query1.SQL.Clear;
if DateEdit1.Text <> ' . . ' then
if DateEdit1.Date <= DateEdit2.Date then
begin
MainForm.Query1.SQL.Text := 'SELECT* FROM Table WHERE Date1 ' +
'BETWEEN ''' + DateEdit1.Text +''' AND ''' + DateEdit2.Text + '''';
end
else
begin
Application.MessageBox('Начальная дата должна быть меньше или равной конечной',
'Название программы', mb_OK + MB_ICONEXCLAMATION);
DateEdit1.SetFocus; cl := false;
end;
//Поиск по ФИО или просто по тексту, можно сделать так:
if Edit1.Text <> '' then
if MainForm.Query1.SQL.Text <> '' then
MainForm.Query1.SQL.Add('AND UPPER(FIO) like UPPER(''%'+Edit1.Text+'%'')')
else
MainForm.Query1.SQL.Text := 'SELECT* FROM OrderTable WHERE UPPER(FIO)' +
'like Upper(''%' + Edit1.Text + '%'')';
//и так далее
// если условия выполнены, тогда делаем фильтр и закрываем окно, если нет, тогда исправляем условия, либо просто закрываем форму без фильтрации
if cl = true then
begin
if MainForm.Query1.SQL.Text = '' then
MainForm.Query1.SQL.Text := 'SELECT* FROM OrderTable';
MainForm.Query1.Open;
Close;
end;
Создать базу можно с помощью Database Desktop, например.
Дальше необходимо выяснить, какие будут типы полей в БД:
- Номер двигателя - текстовое поле, в Database Dektop - Alpha, т.к. номер двигателя включает, как буквы, так и цифры (Номер двигателя обычно состоит из типового кода (группа знаков, определяющих его тип (модификацию) и порядкового (серийного) номера, например, XY508553)
- Гос. номер - Alpha
Год выпуска - если указывается только год, то можно указать Number. Если указывается дата, например, 02.08.1999, то тип Date.
- Марка авто - Alpha
- Владелец авто - Alpha
- Дата обслуживания - Date
Ходовая часть. Что здесь должно быть? Птичками отмечается, какой вид ремонта был осуществлен?
Если так, то все эти поля булевые, т.е. Logical
Под поиском подразумевается фильтр, я так понимаю? Т.е., в форме поиска вводишь нужные данные и отфильтровываются соответствующие записи.
[more=Пример фильтра]
Здесь можно воспользоваться TQuery.
Создаете форму с нужными полями. Достаточно обычных TEdit и TDateEdit.
Поиск в пределах дат можно осуществить следующим образом:
Код:
procedure TFilterForm.btSetClick(Sender: TObject);
var
cl: boolean;
begin
cl := true;
MainForm.Query1.Close;
MainForm.Query1.SQL.Clear;
if DateEdit1.Text <> ' . . ' then
if DateEdit1.Date <= DateEdit2.Date then
begin
MainForm.Query1.SQL.Text := 'SELECT* FROM Table WHERE Date1 ' +
'BETWEEN ''' + DateEdit1.Text +''' AND ''' + DateEdit2.Text + '''';
end
else
begin
Application.MessageBox('Начальная дата должна быть меньше или равной конечной',
'Название программы', mb_OK + MB_ICONEXCLAMATION);
DateEdit1.SetFocus; cl := false;
end;
//Поиск по ФИО или просто по тексту, можно сделать так:
if Edit1.Text <> '' then
if MainForm.Query1.SQL.Text <> '' then
MainForm.Query1.SQL.Add('AND UPPER(FIO) like UPPER(''%'+Edit1.Text+'%'')')
else
MainForm.Query1.SQL.Text := 'SELECT* FROM OrderTable WHERE UPPER(FIO)' +
'like Upper(''%' + Edit1.Text + '%'')';
//и так далее
// если условия выполнены, тогда делаем фильтр и закрываем окно, если нет, тогда исправляем условия, либо просто закрываем форму без фильтрации
if cl = true then
begin
if MainForm.Query1.SQL.Text = '' then
MainForm.Query1.SQL.Text := 'SELECT* FROM OrderTable';
MainForm.Query1.Open;
Close;
end;
Cowboy_99
Мне кажется, было бы удобнее, если бы Вы набросили это в Delphi, на формах. Так было бы нагляднее.
Тогда можно уже и с дизайном помочь разобраться.
Прежде всего создайте саму БД с помощью Database Desktop.
Запустить его можно отсюда: c:\Program Files (x86)\Common Files\CodeGear Shared\Database Desktop\dbd32.exe - это в ОС х64.
Затем File - New - Table - Paradox 7
В появившемся окне уже вводим названия полей, их тип (столбец Type - правой кнопкой мыши), если надо, размер.
Как правило, первое поле создается с типом (+ Autoincrement) для генерации уникального идентификатора Его же нужно сделать ключевым полем - в колонке Key кликнуть 2 раза, чтобы появилась звездочка.
Например NPP - номер по порядку.
Ну а дальше уже все остальные поля, о которых я написал выше.
После чего сохраняем базу - Save As...
Базу можно хранить, например, в папке с программой в каталоге, скажем, DB.
После этого в BDE Администраторе нужно создать Alias.
c:\Program Files (x86)\Common Files\Borland Shared\BDE\bdeadmin.exe
Object - New - Standard. Вместо Standart пишем наше имя алиаса.
Далее в поле Path указываем путь к нашей базе и сохраняем, нажав синюю стрелочку Apply на панели инструментов.
Пока попробуйте сделать это. А потом уже можно будет и на форме связывать поля с полями БД.
Мне кажется, было бы удобнее, если бы Вы набросили это в Delphi, на формах. Так было бы нагляднее.
Тогда можно уже и с дизайном помочь разобраться.
Прежде всего создайте саму БД с помощью Database Desktop.
Запустить его можно отсюда: c:\Program Files (x86)\Common Files\CodeGear Shared\Database Desktop\dbd32.exe - это в ОС х64.
Затем File - New - Table - Paradox 7
В появившемся окне уже вводим названия полей, их тип (столбец Type - правой кнопкой мыши), если надо, размер.
Как правило, первое поле создается с типом (+ Autoincrement) для генерации уникального идентификатора Его же нужно сделать ключевым полем - в колонке Key кликнуть 2 раза, чтобы появилась звездочка.
Например NPP - номер по порядку.
Ну а дальше уже все остальные поля, о которых я написал выше.

После чего сохраняем базу - Save As...
Базу можно хранить, например, в папке с программой в каталоге, скажем, DB.
После этого в BDE Администраторе нужно создать Alias.
c:\Program Files (x86)\Common Files\Borland Shared\BDE\bdeadmin.exe
Object - New - Standard. Вместо Standart пишем наше имя алиаса.
Далее в поле Path указываем путь к нашей базе и сохраняем, нажав синюю стрелочку Apply на панели инструментов.
Пока попробуйте сделать это. А потом уже можно будет и на форме связывать поля с полями БД.
простой пример на видео http://www.youtube.com/watch?v=OZAPLNBqzOw
archikep
Зачем ему Firebird?
Эта база предусматривает работу Клиент/Сервер. Без опыта работы не просто разобраться.
Зачем ему Firebird?
Эта база предусматривает работу Клиент/Сервер. Без опыта работы не просто разобраться.
MGAlex
Цитата:
Мне кажется, что если он немного разберется на своей задаче, то пользы будет больше чем от BDE.
Хотя если ему только сдать и забыть как страшный сон...
Цитата:
Зачем ему Firebird?
Эта база предусматривает работу Клиент/Сервер. Без опыта работы не просто разобраться.
Мне кажется, что если он немного разберется на своей задаче, то пользы будет больше чем от BDE.
Хотя если ему только сдать и забыть как страшный сон...

Dmitry
Может тогда уже сразу Oracle начинать изучать?
Вопросов, нет, что пользы больше. Хотя, опять же, пользы больше для чего? Может, человеку никогда и не понадобится разработка приложений клиент/сервер. Начинать изучать сразу Firebirdb, не имея навыков работы даже с BDE, просто запутает и отобьет всякое желание.
Однозначно нужно начинать с простого.
Ведь никто же не начинает знакомство с программированием сразу с Delphi XE5. Сначала блок-схемы учат, потом паскаль, а потом уже переходят к Delphi.
Опять же, если переходить к более сложным СУБД, то лучше начать, пожалуй, с Interbase.
Может тогда уже сразу Oracle начинать изучать?

Вопросов, нет, что пользы больше. Хотя, опять же, пользы больше для чего? Может, человеку никогда и не понадобится разработка приложений клиент/сервер. Начинать изучать сразу Firebirdb, не имея навыков работы даже с BDE, просто запутает и отобьет всякое желание.
Однозначно нужно начинать с простого.
Ведь никто же не начинает знакомство с программированием сразу с Delphi XE5. Сначала блок-схемы учат, потом паскаль, а потом уже переходят к Delphi.
Опять же, если переходить к более сложным СУБД, то лучше начать, пожалуй, с Interbase.
MGAlex
Цитата:
Я же написал, что если ему сдать и забыть, то тогда конечно ему BDE лучше подойдет. Но если дальше работать, то навыки работы с BDE ему только мешать будут
По своему опыту знаю.
Цитата:
Вопросов, нет, что пользы больше. Хотя, опять же, пользы больше для чего? Может, человеку никогда и не понадобится разработка приложений клиент/сервер. Начинать изучать сразу Firebirdb, не имея навыков работы даже с BDE, просто запутает и отобьет всякое желание.
Однозначно нужно начинать с простого.
Я же написал, что если ему сдать и забыть, то тогда конечно ему BDE лучше подойдет. Но если дальше работать, то навыки работы с BDE ему только мешать будут

Dmitry
Мне не мешают.
Начинал именно с BDE. И писал сам когда-то нечто подобное.
Сейчас имею дело с Firebird. Хотя сначала работал с Interbase, потом с Yaffil.
Дело в том, что при использовании Firebird, человеку нужно будет еще и с SQL хорошо разобраться.
Помню, во времена учебы в универе нужно было писать курсовую. Увидев тему по Interbase, решил взять, т.к. по работе с ним сталкивался. Преподаватель сначала выдал мне эту тему, а потом посоветовал другую. В универе мы не изучали Interbase, только BDE.
Вообще, все это ерунда. Главное, что выглядит все так, как будто нам это все нужно, а не автору темы.
Мне не мешают.

Начинал именно с BDE. И писал сам когда-то нечто подобное.
Сейчас имею дело с Firebird. Хотя сначала работал с Interbase, потом с Yaffil.
Дело в том, что при использовании Firebird, человеку нужно будет еще и с SQL хорошо разобраться.
Помню, во времена учебы в универе нужно было писать курсовую. Увидев тему по Interbase, решил взять, т.к. по работе с ним сталкивался. Преподаватель сначала выдал мне эту тему, а потом посоветовал другую. В универе мы не изучали Interbase, только BDE.
Вообще, все это ерунда. Главное, что выглядит все так, как будто нам это все нужно, а не автору темы.

Здравствуйте извините за длительное отсутствие не было интернета недавно нашел одну программу которую нужно доработать по моей теме: Автоматизированная система учета сервисного(технического) обслуживания автомобилей (учитывает проделанные работы в автосервисе)
пожалуйста посмотрите эту программу что можно сделать я хочу с вашей помощью доработать программу
вот ссылка на программу :http://rghost.ru/53660741
Заранее огромное всем спасибо буду рад любой помощи!
мне нужна реальная помощь я не жду готовой но есть некоторые проблемы давно не работал в Delphi и многое забыл готов вспомнить и подучиться
пожалуйста посмотрите эту программу что можно сделать я хочу с вашей помощью доработать программу
вот ссылка на программу :http://rghost.ru/53660741
Заранее огромное всем спасибо буду рад любой помощи!
мне нужна реальная помощь я не жду готовой но есть некоторые проблемы давно не работал в Delphi и многое забыл готов вспомнить и подучиться
Прежде всего нужно доработать интерфейс и структуру программы. Пока все крайне запутано и программа, мягко говоря, не имеет интерфейса. То, что есть - это катастрофа.
Я бы, например, главное окно сделал по примеру RibbonControls.
Примеры RibbonControls находятся здесь c:\Users\Public\Documents\RAD Studio\12.0\Samples\Delphi\VCL\RibbonControls\Ribbon Demo\
Это если "для всех пользователей" выбиралось при установке.
На ленте размещаем нужные кнопки, а в главном окне видим, скажем, список всех заказов в гриде.
В окнах не должно быть пустого места, да еще в таких количествах. Все должно быть компактно и интуитивно понятно.
Вы хотите сделать поиск, фильтры и т.д. Вот кнопки для вызова форм с фильтрами можно будет разместить на ленте.
После этого уже можно будет приступать к программированию.
Я бы, например, главное окно сделал по примеру RibbonControls.

Примеры RibbonControls находятся здесь c:\Users\Public\Documents\RAD Studio\12.0\Samples\Delphi\VCL\RibbonControls\Ribbon Demo\
Это если "для всех пользователей" выбиралось при установке.
На ленте размещаем нужные кнопки, а в главном окне видим, скажем, список всех заказов в гриде.
В окнах не должно быть пустого места, да еще в таких количествах. Все должно быть компактно и интуитивно понятно.
Вы хотите сделать поиск, фильтры и т.д. Вот кнопки для вызова форм с фильтрами можно будет разместить на ленте.
После этого уже можно будет приступать к программированию.
у меня нет возможности установить RAD XE а только старый Delphi 7 тогда ладно интерфейс не важно разберусь потом, а что со структурой программы?
пожалуйста остальные функции посмотрите что можно сделать?
пожалуйста остальные функции посмотрите что можно сделать?
Cowboy_99
Можно сделать что угодно, вопрос - надо ли и если надо, то кому.
В целом такая работа делается следующим образом: берется за шкирку человек, которому это надо (допустим, директор твоего сервиса) и детально его расспрашивается что именно ему надо. Какие цифырки он уже считает в тетрадке/калькуляторе/екселе, какие хотел бы, но не может. В идеале, если этот человек самостоятельно сформулирует свои хотелки хоть от руки, хоть в ворде. После чего у этого же человека расспрашивается, кто еще будет работать с программой (тоесть, бух взаиморасчеты будет там вести, или нет? механик будет сам вносить список деталей/работ, или как?) и делается аналогичный обход по всем этим людям. Изучаются их рабочие места, что они делают и как (тоесть, как механик с руками в масле будет кнопки тыкать и будет ли на это время у буха с жопой в мыле во время сдачи отчетности).
Дальше садишся сам и начинаешь рисовать схемки (на бумаге) - что откуда и куда будет в программе двигаться. Ну там, бух принял запчасти, завсклад их получил, выдал механику, механик всунул в машину, запчасть не подошла, вернул завскладу и взял другую...). Результат - показываешь директору и (опционально) всем заинтересованым лицам. Спрашиваешь, все ли правильно понял. Доделываешь что неправильно. Заодно - то, что забыли тебе сказать в прошлый раз.
Потом берешь какой-нить Pencil или что-то в этом роде, и делаешь по-быстрому макет приложения с основными оконными формами. Обходишь с ноутом и этим макетом заинтересованных лиц...
И только после этого открываешь среду разработки и думаешь над функциями.
Как показывает практика, по-другому выходит медленее, дороже и хуже в конечном результате.
Можно сделать что угодно, вопрос - надо ли и если надо, то кому.
В целом такая работа делается следующим образом: берется за шкирку человек, которому это надо (допустим, директор твоего сервиса) и детально его расспрашивается что именно ему надо. Какие цифырки он уже считает в тетрадке/калькуляторе/екселе, какие хотел бы, но не может. В идеале, если этот человек самостоятельно сформулирует свои хотелки хоть от руки, хоть в ворде. После чего у этого же человека расспрашивается, кто еще будет работать с программой (тоесть, бух взаиморасчеты будет там вести, или нет? механик будет сам вносить список деталей/работ, или как?) и делается аналогичный обход по всем этим людям. Изучаются их рабочие места, что они делают и как (тоесть, как механик с руками в масле будет кнопки тыкать и будет ли на это время у буха с жопой в мыле во время сдачи отчетности).
Дальше садишся сам и начинаешь рисовать схемки (на бумаге) - что откуда и куда будет в программе двигаться. Ну там, бух принял запчасти, завсклад их получил, выдал механику, механик всунул в машину, запчасть не подошла, вернул завскладу и взял другую...). Результат - показываешь директору и (опционально) всем заинтересованым лицам. Спрашиваешь, все ли правильно понял. Доделываешь что неправильно. Заодно - то, что забыли тебе сказать в прошлый раз.
Потом берешь какой-нить Pencil или что-то в этом роде, и делаешь по-быстрому макет приложения с основными оконными формами. Обходишь с ноутом и этим макетом заинтересованных лиц...
И только после этого открываешь среду разработки и думаешь над функциями.
Как показывает практика, по-другому выходит медленее, дороже и хуже в конечном результате.
Цитата:
Можно сделать что угодно, вопрос - надо ли и если надо, то кому.
Золотая фраза на самом деле

dsk
Вот чтобы крокодил хоть немножко был похож на трепетную лань и делаются все эти па-де-па, о которых я распинался.

Вот чтобы крокодил хоть немножко был похож на трепетную лань и делаются все эти па-де-па, о которых я распинался.
Цитата:
ИБО у директора свое видение, у главбуха свое, у завскладом свое и прямо противоположное видению директора и главбуха.
На самом деле нужен человек который может видеть со всех сторон, он имеено и должен писать ТЗ. Будет ли этим человеком программист большой вопрос.
LadyOfWood
Отдельный писатель ТЗ, судя по постановке вопроса, Cowboy_99 не светит
Отдельный писатель ТЗ, судя по постановке вопроса, Cowboy_99 не светит

Цитата:
Отдельный писатель ТЗ, судя по постановке вопроса, Cowboy_99 не светит
Скорее всего.
Cowboy_99, как дела с программой?
Программа стоит
сроки сдачи подходят
хотелось бы сделать так как расписал miwa но увы нет никаких людей у которых можно посоветоваться насчет составления ТЗ и которые бы сформулировали, нет ни директоров и других людей
сейчас программа свободная и нужно сделать хотя бы простую программу для автосервиса или центра сервисного обслуживания автомобилей (это так примерно, потом можно доработать)
Благодарю всех форумчан засоветы огромное всем спасибо


хотелось бы сделать так как расписал miwa но увы нет никаких людей у которых можно посоветоваться насчет составления ТЗ и которые бы сформулировали, нет ни директоров и других людей
сейчас программа свободная и нужно сделать хотя бы простую программу для автосервиса или центра сервисного обслуживания автомобилей (это так примерно, потом можно доработать)
Благодарю всех форумчан засоветы огромное всем спасибо

Предыдущая тема: Вопросы по Embarcadero RAD Studio XE5-XE8,10.x(Seattle, Berl
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.