Разработка программной реализации моделей компонентов информационной системы



Реализация компонентов базы данных представлена 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!