Разработка программной реализации моделей компонентов информационной системы
Реализация компонентов базы данных представлена SQL-кодом:
Листинг 1. Создание базы данных и первичное наполнение таблиц.
1.1 Создание таблицы Clients.
CREATE TABLE [dbo].[Clients](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NULL,
[Phone] [nvarchar](max) NULL,
[TotalPrice] [int] NOT NULL,
[Birthday] [nvarchar](max) NULL,
[DiscountId] [int] NULL,
[Email] [nvarchar](max) NULL,
CONSTRAINT [PK_Clients] PRIMARY KEY CLUSTERED
(
[Id] ASC
)
ALTER TABLE [dbo].[Clients] WITH CHECK ADD CONSTRAINT [FK_Clients_Discounts_DiscountId] FOREIGN KEY([DiscountId])
REFERENCES [dbo].[Discounts] ([Id])
ALTER TABLE [dbo].[Clients] CHECK CONSTRAINT [FK_Clients_Discounts_DiscountId]
1.2 Создание таблицы Procedures.
CREATE TABLE [dbo].[Procedures](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Cost] [int] NOT NULL,
[Duration] [float] NOT NULL,
[Name] [nvarchar](max) NULL,
CONSTRAINT [PK_Procedures] PRIMARY KEY CLUSTERED
(
[Id] ASC
)
1.3 Создание таблицы Discounts.
CREATE TABLE [dbo].[Discounts](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Value] [float] NOT NULL,
CONSTRAINT [PK_Discounts] PRIMARY KEY CLUSTERED
(
[Id] ASC
)
1.4 Создание таблицы Orders.
CREATE TABLE [dbo].[Orders](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ClientId] [int] NULL,
[EndTime] [datetime2](7) NOT NULL,
[ProcedureId] [int] NULL,
[StartTime] [datetime2](7) NOT NULL,
CONSTRAINT [PK_Orders] PRIMARY KEY CLUSTERED
(
[Id] ASC
)
ALTER TABLE [dbo].[Orders] WITH CHECK ADD CONSTRAINT [FK_Orders_Clients_ClientId] FOREIGN KEY([ClientId])
REFERENCES [dbo].[Clients] ([Id])
ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Clients_ClientId]
ALTER TABLE [dbo].[Orders] WITH CHECK ADD CONSTRAINT [FK_Orders_Procedures_ProcedureId] FOREIGN KEY([ProcedureId])
REFERENCES [dbo].[Procedures] ([Id])
ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Procedures_ProcedureId]
1.5 Пример первичного наполнения таблицы Clients.
INSERT INTO [dbo].[Clients]
([Name]
,[Phone]
,[TotalPrice]
,[Birthday]
,[DiscountId]
,[Email])
|
|
VALUES
('Evov Andrei Ivanovich'
,'455-55-555'
,'2500'
,'23.02.1990'
,null
,'EvovAI@mails.ru')
Реализация компонентов базы данных может быть выполнена с использованием ADO.NET Entity Framework – объектно-ориентированной технологией доступа к данным. При создании контекста данных в среде разработки и при использовании подхода “Code-first” получаем моментальный снимок текущей модели:
modelBuilder.Entity("WebApplication1.Models.Client", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd();
b.Property<string>("Birthday");
b.Property<int?>("DiscountId");
b.Property<string>("Email");
b.Property<string>("Name");
b.Property<string>("Phone");
b.Property<int>("TotalPrice");
b.HasKey("Id");
b.HasIndex("DiscountId");
b.ToTable("Clients");
});
modelBuilder.Entity("WebApplication1.Models.Discount", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd();
b.Property<double>("Value");
b.HasKey("Id");
b.ToTable("Discounts");
|
|
});
modelBuilder.Entity("WebApplication1.Models.Order", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd();
b.Property<int?>("ClientId");
b.Property<DateTime>("EndTime");
b.Property<int?>("ProcedureId");
b.Property<DateTime>("StartTime");
b.HasKey("Id");
b.HasIndex("ClientId");
b.HasIndex("ProcedureId");
b.ToTable("Orders");
});
modelBuilder.Entity("WebApplication1.Models.Procedure", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd();
b.Property<int>("Cost");
b.Property<double>("Duration");
b.Property<string>("Name");
b.HasKey("Id");
b.ToTable("Procedures");
});
modelBuilder.Entity("WebApplication1.Models.Client", b =>
{
b.HasOne("WebApplication1.Models.Discount", "Discount")
.WithMany()
.HasForeignKey("DiscountId");
});
modelBuilder.Entity("WebApplication1.Models.Order", b =>
{
b.HasOne("WebApplication1.Models.Client", "Client")
|
|
.WithMany()
.HasForeignKey("ClientId");
b.HasOne("WebApplication1.Models.Procedure", "Procedure")
.WithMany()
.HasForeignKey("ProcedureId");
});
4. Экспериментальные исследования программной реализации для получения оценки эффективности теоретических результатов
Программа показала свою эффективность в выполнении функции автоматизации бизнес-процессов.
Покажем пример работы программы на операциях добавления, удаления, редактирования данных отношения, хранящего данные о заказах (Order).
Листинг 2. Добавление данных.
2.1 Клиентский код на TypeScript
openDialog(): void {
let dialogRef = this.dialog.open(DialogOverviewExampleDialog, {
width: '350px',
data: { procedures: this.procedures, clients: this.clients },
});
dialogRef.afterClosed().subscribe(result => {
//console.log('The dialog was closed');
this.workRecordService.create(result as Order).subscribe(orders => {
this.orders = orders as Order[];
this.updateEventsByWorkRecords();
this.refresh.next();
});
this.updateEventsByWorkRecords();
});
2.2 Серверный код MVC контроллера.
[HttpPost]
public async Task<List<Order>> Create([FromBody]Order order)
{
db.Orders.Add(order);
await db.SaveChangesAsync();
return await db.Orders.Include(c => c.Client).Include(p => p.Procedure).ToListAsync(); ;
|
|
} }
Листинг 3. Удаление данных.
[HttpPost]
public async Task<List<Order>> Update([FromBody]Order order)
{
db.Orders.Update(order);
await db.SaveChangesAsync();
return await db.Orders.Include(c => c.Client).Include(p => p.Procedure).ToListAsync(); ;
}
Листинг 4. Редактирование данных.
[HttpPost]
public async Task<List<Order>> Remove([FromBody]Order order)
{
db.Orders.Remove(order);
await db.SaveChangesAsync();
return await db.Orders.Include(c => c.Client).Include(p => p.Procedure).ToListAsync(); ;
}
Дата добавления: 2020-04-08; просмотров: 189; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!