3.1 Этапы проектирования баз данных

Этапы проектирования и создания базы данных определяются следующей последовательностью:

- построение информационно-логической модели данных пред­метной области;

- определение логической структуры реляционной базы данных;

- конструирование таблиц базы данных;

- создание схемы данных;

- ввод данных в таблицы (создание записей);

- разработка необходимых форм, запросов, макросов, модулей, отчетов;

- разработка пользовательского интерфейса.

В процессе разработки модели данных необходимо выделить информационные объекты, соответствующие требованиям нормализации данных, и определить связи между ними. Эта модель позволяет создать реляционную базу данных без дублирования, в которой обеспечивается однократный ввод данных при первоначальной загрузке и корректировках, а также целостность данных при внесении изменений.[2]

При разработке модели данных могут использоваться два подхода. В первом подходе сначала определяются основные задачи, для решения которых строится база, выявляются потребности задач в данных и соответственно определяются состав и структура информационных объектов. При втором подходе сразу устанавливаются типовые объекты предметной области. Наиболее рационально сочетание обоих подходов. Это связано с тем, что на начальном этапе, как правило, нет исчерпывающих сведений обо всех задачах. Использование такой технологии тем более оправдано, что гибкие средства создания реляционных баз данных позволяют на любом этапе разработки внести изменения в базу данных и модифицировать ее структуру без ущерба для введенных ранее данных.[2]

Процесс выделения информационных объектов предметной области, отвечающих требованиям нормализации, может производиться на основе интуитивного или формального подхода. Теоретические основы формального подхода были разработаны и полно изложены в монографиях по организации баз данных известного американского ученого Дж. Мартина.

При интуитивном подходе легко могут быть выявлены информационные объекты, соответствующие реальным объектам. Однако получаемая при этом информационно-логическая модель, как правило, требует дальнейших преобразований, в частности преобразования многозначных связей между объектами. При таком подходе возможны существенные ошибки, если отсутствует достаточный опыт. Последующая проверка выполнения требований нормализации обычно показывает необходимость уточнения информационных объектов.

Рассмотрим формальные правила, которые могут быть использованы для выделения информационных объектов:

- на основе описания предметной области выявить документы и их атрибуты, подлежащие хранению в базе данных;

-определить функциональные зависимости между атрибутами;

- выбрать все зависимые атрибуты и указать для каждого все его ключевые атрибуты, т. е. те, от которых он зависит;

- сгруппировать атрибуты, одинаково зависимые от ключевых атрибутов. Полученные группы зависимых атрибутов вместе с их ключевыми атрибутами образуют информационные объекты[2].

При определении логической структуры реляционной базы данных па основе модели каждый информационный объем адекватно отображается реляционной таблицей, а связи между таблицами соответствуют связям между информационными объектами.

В процессе создания сначала конструируются таблицы базы данных, соответствующие информационным объектам построенной модели данных. Далее может создаваться схема данных, в которой фиксируются существующие логические связи между таблицами. Эти связи соответствуют связям информационных объектов. В схеме данных могут быть заданы параметры поддержания целостности базы данных, если модель данных была разработана в соответствии с требованиями нормализации. Целостность данных означает, что в БД установлены и корректно поддерживаются взаимосвязи между записями разных таблиц при загрузке, добавлении и удалении записей в связанных таблицах, а также при изменении значений ключевых полей.[2]

После формирования схемы данных осуществляется ввод непротиворечивых данных из документов предметной области.

На основе созданной базы данных формируются необходимые запросы, формы, макросы, модули, отчеты, производящие требуемую обработку данных базы и их представление.

С помощью встроенных средств и инструментов базы данных создается пользовательский интерфейс, позволяющий управлять процессами ввода, хранения, обработки, обновления и представления информации базы данных.[2]


4 ЭТАПЫ РАЗРАБОТКА ПРОГРАММНОГО ПРОДУКТА

Данная программа создана для учета успеваемости студентов.

Для работы с программой необходимо нужные группы или списки студентов копировать из имеющегося списка, в электронную таблицу «spisok.xls». Списки копируются однажды, после чего могут удаляться напрямую из базы данных «poseshaemost.mdb». После копирования списков или групп необходимо принять данные с помощью кнопки «Сервис - принять данные», в появившемся окне нажать кнопку «Принять данные». Для ввода специальности для выбранной группы нажать на кнопку «справочники- специальности», в появившемся окне ввести группу и код специальности, списки копируются однажды, после чего могут удаляться напрямую из базы данных «poseshaemost.mdb». Для добавления дисциплины для этой группы необходимо нажать на кнопку «справочники- дисциплины», в появившемся окне ввести дисциплины. Дисциплины копируются однажды, после чего могут удаляться напрямую из базы данных «poseshaemost.mdb».

Для ввода оценок нужно нажать на кнопку «Данные – Разноска», где выбирается месяц и год обучения, а также дисциплина, специальность и группа. После ввода данных в эти строки следует «Добавить данные по дисциплине», на экране выведется группа, фамилия имя и отчество студентов, а также пустая графа оценок по выбранной дисциплине, которую необходимо заполнить. Корректировка данных производиться при помощи команды «Данные - корректировка», где корректируются месяц и год обучения, а также дисциплина, специальность и группа. В графе отчеты можно подвести итоги по успеванию и качеству знаний по БПЭК. Подвести итоги можно как по группе, так и по специальности и по колледжу в целом за определенный месяц и год обучения. После нажатия кнопки «Вычислить». Выведется успеваемость и качество. Также в графе подведение итогов можно посмотреть списки студентов неуспевающих (у которых есть хотя бы одна оценка «2»), а также успевающих на отлично (средний бал успеваемости которых «5»). После нажатия кнопки «Вывести», выведется список в электронной таблице Excel, неуспевающих студентов, либо успевающих на отлично. В графе «Отчет» за введенный месяц после нажатия кнопки «Пересчитать итоги» и «Отчет» выведется группа, месяц и год, а также количество студентов и процентное соотношение успеваемости общей и качество в электронной таблице Excel.

unit Unit12;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, Menus, DB, ADODB;

type

 TForm12 = class(TForm)

 MainMenu1: TMainMenu;

 N1: TMenuItem;

 N2: TMenuItem;

 N3: TMenuItem;

 N4: TMenuItem;

 N8: TMenuItem;

 N9: TMenuItem;

 ADOConnection1: TADOConnection;

 N10: TMenuItem;

 N11: TMenuItem;

 N12: TMenuItem;

 procedure N9Click(Sender: TObject);

 procedure N11Click(Sender: TObject);

 procedure N12Click(Sender: TObject);

 procedure FormCreate(Sender: TObject);

 procedure N2Click(Sender: TObject);

 procedure N3Click(Sender: TObject);

 procedure N4Click(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

var

 Form12: TForm12;

implementation

uses Unit13, Unit15, Unit14, Unit16, Unit17, Unit18;

{$R *.dfm}

procedure TForm12.N9Click(Sender: TObject);

begin

 Form13.Show;

end;

procedure TForm12.N11Click(Sender: TObject);

begin

Form15.Show;

end;

procedure TForm12.N12Click(Sender: TObject);

begin

Form14.Show;

end;

procedure TForm12.FormCreate(Sender: TObject);

begin

//Form16.Show;

end;

procedure TForm12.N2Click(Sender: TObject);

begin

Form16.Show;

end;

procedure TForm12.N3Click(Sender: TObject);

begin

Form17.show;

end;

procedure TForm12.N4Click(Sender: TObject);

begin

Form18.show;

end;

end.

unit Unit13;

interfa

ceuses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,Unit12, Forms,

 Dialogs, ExcelXP, OleServer, Grids, DBGrids, StdCtrls, DB, ADODB;

type

 TForm13 = class(TForm)

 Label1: TLabel;

 DBGrid1: TDBGrid;

 ExcelWorkbook1: TExcelWorkbook;

 ExcelApplication1: TExcelApplication;

 ADOQuery1: TADOQuery;

 DataSource1: TDataSource;

 Button1: TButton;

 ADOQuery2: TADOQuery;

 ADOQuery1gruppa: TWideStringField;

 ADOQuery1fio: TWideStringField;

 ADOQuery1Datapr: TWideStringField;

 ADOQuery1Prim: TWideStringField;

 procedure Button1Click(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

var

 Form13: TForm13;

implementation

{$R *.dfm}

procedure TForm13.Button1Click(Sender: TObject);

var n: OleVariant;

i:integer;

//S:String;

begin

ADOQuery2.ExecSQL;

AdoQuery1.Open;

n:='d:\55\spisok.xls';

ExcelApplication1.Workbooks.Add(n,0);

Excelworkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);

i:=2;

ADOQUERY1.Insert;

ExcelApplication1.Visible[0]:=False;

While i<2000 do

begin;

ADOQuery1.FieldByName('gruppa').AsString:=ExcelApplication1.Cells.Item[i,1].Value;

ADOQuery1.FieldByName('Fio').AsString:=ExcelApplication1.Cells.Item[i,2].Value;

ADOQuery1.FieldByName('Datapr').AsString:=ExcelApplication1.Cells.Item[i,3].Value;

ADOQuery1.FieldByName('Prim').AsString:=ExcelApplication1.Cells.Item[i,4].Value;

 If ADOQuery1.FieldByName('gruppa').AsString='' then

 begin

 ADOQUERY1.Delete;

 i:=2001;

 end;

ADOQUERY1.Insert;

i:=i+1;

 end;

ADOQuery1.Open;

Showmessage('Прием данных выполнен');

end;

end.

unit Unit14;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics,Unit12, Controls, Forms,

 Dialogs, DB, ADODB, ExtCtrls, DBCtrls, Grids, DBGrids;

type

 TForm14 = class(TForm)

 DBGrid1: TDBGrid;

 DBNavigator1: TDBNavigator;

 DataSource1: TDataSource;

 ADOQuery1: TADOQuery;

 ADOQuery1Disziplina: TWideStringField;

 procedure FormCreate(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

var

 Form14: TForm14;

implementation

{$R *.dfm}

procedure TForm14.FormCreate(Sender: TObject);

begin

ADOQuery1.Active:=true;

end;

end.

unit Unit15;

interface

uses

 Windows, Messages, SysUtils, Variants,Unit12,Classes, Graphics, Controls, Forms,

 Dialogs, DB, ADODB, ExtCtrls, DBCtrls, Grids, DBGrids;

type

 TForm15 = class(TForm)

 ADOQuery1: TADOQuery;

 DBGrid1: TDBGrid;

 DBNavigator1: TDBNavigator;

 DataSource1: TDataSource;

 ADOQuery1Grupa: TWideStringField;

 ADOQuery1Spez: TWideStringField;

 procedure FormCreate(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

var

 Form15: TForm15;

implementation

{$R *.dfm}

procedure TForm15.FormCreate(Sender: TObject);

begin

ADOQuery1.Active:=true;

end;

end.

unit Unit16;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes,Unit12, Graphics, Controls, Forms,

 Dialogs, DB, ADODB, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids;

type

 TForm16 = class(TForm)

 ADOQuery1: TADOQuery;

 DBGrid1: TDBGrid;

 DBNavigator1: TDBNavigator;

 DataSource1: TDataSource;

 ADOQuery1stud: TWideStringField;

 ComboBox1: TComboBox;

 ComboBox2: TComboBox;

 ComboBox3: TComboBox;

 ComboBox4: TComboBox;

 ComboBox5: TComboBox;

 Label1: TLabel;

 Label2: TLabel;

 Label3: TLabel;

 Label4: TLabel;

 Label5: TLabel;

 Button1: TButton;

 Dobav: TADOQuery;

 ADOQuery1ozenka: TIntegerField;

 ADOQuery1koddis: TWideStringField;

 ADOQuery2: TADOQuery;

 ADOTable1: TADOTable;

 ADOTable2: TADOTable;

 ADOTable1DSDesigner: TAutoIncField;

 ADOTable1Grupa: TWideStringField;

 ADOTable1Disziplina: TWideStringField;

 procedure Button1Click(Sender: TObject);

 procedure ComboBox4Change(Sender: TObject);

 procedure FormCreate(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

var

 Form16: TForm16;

implementation

{$R *.dfm}

procedure TForm16.Button1Click(Sender: TObject);

begin

Dobav.SQL.Clear;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Text:='delete from ozenka where(ozenka.kodspez = "'+Combobox4.Text+'"and ozenka.koddis = "'+Combobox3.Text+'"and ozenka.mes = "'+Combobox1.Text+'"and ozenka.god = "'+Combobox2.Text+'" and ozenka.gruppa="'+Combobox5.Text+'")';

ADOQuery2.ExecSQL;

Dobav.SQL.Add('Insert Into Ozenka ( gruppa,stud)');

Dobav.SQL.Add('Select gruppa,fio');

Dobav.SQL.Add(' From stud where (gruppa="'+Combobox5.text+'")');

//ShowMessage(Dobav.SQL.Text); //Dobav.SQL.Add(''

Dobav.ExecSQL;

Dobav.SQL.Clear;

Dobav.SQL.Add('UPDATE ozenka SET ozenka.kodspez = "'+Combobox4.Text+'", ozenka.koddis = "'+Combobox3.Text+'", ozenka.mes = "'+Combobox1.Text+'", ozenka.god = "'+Combobox2.Text+'" WHERE (((ozenka.gruppa)="'+Combobox5.Text+'")and(ozenka.koddis is null ));');

 Dobav.ExecSQL;

ADOQUERY1.SQL.Clear;

ADOQUERY1.SQL.Add('Select* from ozenka where(ozenka.kodspez = "'+Combobox4.Text+'"and ozenka.koddis = "'+Combobox3.Text+'"and ozenka.mes = "'+Combobox1.Text+'"and ozenka.god = "'+Combobox2.Text+'" and ozenka.gruppa="'+Combobox5.Text+'")');

//ShowMessage(ADOQUERY1.SQL.Text);

ADOQUERY1.Active:=True;

end;

procedure TForm16.ComboBox4Change(Sender: TObject);

begin

ADOTable2.Open;

ADOTable2.First;

ComboBox5.Items.Clear;

While not ADOTable2.Eof do

begin

if ADOTable2.Fieldbyname('Spez').AsString=ComboBox4.Text Then

ComboBox5.Items.Add(ADOTable2.fieldbyname('grupa').AsString);

ADOTable2.Next;

end;

ADOTable2.Close;

ComboBox5.Sorted:=True;

end;

procedure TForm16.FormCreate(Sender: TObject);

begin

ADOTable1.Open;

ADOTable1.First;

ComboBox3.Items.Clear;

While not ADOTable1.Eof do

begin

ComboBox3.Items.Add(ADOTable1.fieldbyname('disziplina').AsString);

//ShowMessage(ADOTable1.fieldbyname('disziplina').AsString);

ADOTable1.Next;

end;

ADOTable1.Close;

ComboBox3.Sorted:=True;

end;

end.

unit Unit17;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, DB, ADODB, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids;

type

 TForm17 = class(TForm)

 DBGrid1: TDBGrid;

 DBNavigator1: TDBNavigator;

 Label1: TLabel;

 Label2: TLabel;

 Label3: TLabel;

 Label4: TLabel;

 Label5: TLabel;

 ComboBox1: TComboBox;

 ComboBox2: TComboBox;

 ComboBox3: TComboBox;

 ComboBox5: TComboBox;

 Button1: TButton;

 ADOQuery1: TADOQuery;

 ADOQuery1stud: TWideStringField;

 DataSource1: TDataSource;

 ADOQuery1ozenka: TIntegerField;

 ADOQuery1koddis: TWideStringField;

 ComboBox4: TComboBox;

 ADOTable1: TADOTable;

 ADOTable2: TADOTable;

 procedure Button1Click(Sender: TObject);

 procedure FormCreate(Sender: TObject);

 procedure ComboBox4Change(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

var

 Form17: TForm17;

implementation

{$R *.dfm}

procedure TForm17.Button1Click(Sender: TObject);

begin

ADOQUERY1.SQL.Clear;

ADOQUERY1.SQL.Add('Select* from ozenka where(ozenka.kodspez = "'+Combobox4.Text+'"and ozenka.koddis = "'+Combobox3.Text+'"and ozenka.mes = "'+Combobox1.Text+'"and ozenka.god = "'+Combobox2.Text+'" and ozenka.gruppa="'+Combobox5.Text+'")');

//ShowMessage(ADOQUERY1.SQL.Text);

ADOQUERY1.Active:=True;

end;

procedure TForm17.FormCreate(Sender: TObject);

begin

ADOTable1.Open;

ADOTable1.First;

ComboBox3.Items.Clear;

While not ADOTable1.Eof do

begin

ComboBox3.Items.Add(ADOTable1.fieldbyname('disziplina').AsString);

//ShowMessage(ADOTable1.fieldbyname('disziplina').AsString);

ADOTable1.Next;

end;

ADOTable1.Close;

ComboBox3.Sorted:=True;

end;

procedure TForm17.ComboBox4Change(Sender: TObject);

begin

ADOTable2.Open;

ADOTable2.First;

ComboBox5.Items.Clear;

While not ADOTable2.Eof do

begin

if ADOTable2.Fieldbyname('Spez').AsString=ComboBox4.Text Then

ComboBox5.Items.Add(ADOTable2.fieldbyname('grupa').AsString);

ADOTable2.Next;

end;

ADOTable2.Close;

ComboBox5.Sorted:=True;

end;

end.

unit Unit18;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, DB, ADODB, Buttons, ExtCtrls, ComCtrls, ExcelXP,

 OleServer, Grids, DBGrids;

type

 TForm18 = class(TForm)

 PageControl1: TPageControl;

 TabSheet1: TTabSheet;

 TabSheet2: TTabSheet;

 TabSheet3: TTabSheet;

 RadioGroup1: TRadioGroup;

 BitBtn1: TBitBtn;

 Label1: TLabel;

 Label2: TLabel;

 ComboBox1: TComboBox;

 ComboBox2: TComboBox;

 Label4: TLabel;

 Label5: TLabel;

 ADOQuery1: TADOQuery;

 Edit1: TEdit;

 Edit2: TEdit;

 Label3: TLabel;

 Label6: TLabel;

 Label7: TLabel;

 ComboBox3: TComboBox;

 ComboBox6: TComboBox;

 Label8: TLabel;

 Label9: TLabel;

 RadioGroup3: TRadioGroup;

 ExcelWorkbook1: TExcelWorkbook;

 ExcelApplication1: TExcelApplication;

 BitBtn2: TBitBtn;

 ADOQuery2: TADOQuery;

 ComboBox7: TComboBox;

 ComboBox8: TComboBox;

 Label10: TLabel;

 Label11: TLabel;

 BitBtn3: TBitBtn;

 ADOQuery3: TADOQuery;

 ADOQuery4: TADOQuery;

 ADOQuery5: TADOQuery;

 ADOTable2: TADOTable;

 ComboBox4: TComboBox;

 ComboBox5: TComboBox;

 DataSource1: TDataSource;

 ADOQuery6: TADOQuery;

 ADOTable6: TADOTable;

 Button1: TButton;

 procedure BitBtn1Click(Sender: TObject);

 procedure BitBtn2Click(Sender: TObject);

 procedure BitBtn3Click(Sender: TObject);

 procedure Button1Click(Sender: TObject);

 procedure ComboBox4Change(Sender: TObject);

 // procedure ComboBox4Change(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

var

 Form18: TForm18;

implementation

{$R *.dfm}

procedure TForm18.BitBtn1Click(Sender: TObject);

var

k1:integer;

k2:integer;

k3:integer;

k4,k:double;

begin

//по группе

If radiogroup1.ItemIndex=0

then begin

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count1] FROM ozenka where (((ozenka.ozenka)>3))GROUP BY ozenka.mes, ozenka.god, ozenka.gruppa ');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'") AND ((ozenka.gruppa)="'+Combobox5.Text+'"))');

 AdoQuery1.Active:=True;

k1:=AdoQuery1.fieldbyname('Count1').AsInteger;

 ADOQuery1.SQL.Clear;

 AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count2] FROM ozenka where (((ozenka.ozenka)>0))GROUP BY ozenka.mes, ozenka.god, ozenka.gruppa ');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'") AND ((ozenka.gruppa)="'+Combobox5.Text+'"))');

 AdoQuery1.Active:=True;

k2:=AdoQuery1.fieldbyname('Count2').AsInteger;

 ADOQuery1.SQL.Clear;

 AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count3] FROM ozenka where (((ozenka.ozenka)>2))GROUP BY ozenka.mes, ozenka.god, ozenka.gruppa ');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'") AND ((ozenka.gruppa)="'+Combobox5.Text+'"))');

 AdoQuery1.Active:=True;

k3:=AdoQuery1.fieldbyname('Count3').AsInteger;

k4:=Round((k3/k2*100)*100)/100;

k:=Round((k1/k2*100)*100)/100;

Edit1.Text:=FloatToStr(k4);

Edit2.Text:=FloatToStr(k);

end;

 //по специальности

If radiogroup1.ItemIndex=1

then begin

 ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count1] FROM ozenka where (((ozenka.ozenka)>3))GROUP BY ozenka.mes, ozenka.god, ozenka.kodspez ');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'") AND ((ozenka.kodspez)="'+Combobox4.Text+'"))');

 AdoQuery1.Active:=True;

k1:=AdoQuery1.fieldbyname('Count1').AsInteger;

 ADOQuery1.SQL.Clear;

 AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count2] FROM ozenka where (((ozenka.ozenka)>0))GROUP BY ozenka.mes, ozenka.god, ozenka.kodspez ');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'") AND ((ozenka.kodspez)="'+Combobox4.Text+'"))');

 AdoQuery1.Active:=True;

k2:=AdoQuery1.fieldbyname('Count2').AsInteger;

 ADOQuery1.SQL.Clear;

 AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count3] FROM ozenka where (((ozenka.ozenka)>2))GROUP BY ozenka.mes, ozenka.god, ozenka.kodspez ');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'") AND ((ozenka.kodspez)="'+Combobox4.Text+'"))');

 AdoQuery1.Active:=True;

k3:=AdoQuery1.fieldbyname('Count3').AsInteger;

k4:=Round((k3/k2*100)*100)/100;

k:=Round((k1/k2*100)*100)/100;

Edit1.Text:=FloatToStr(k4);

Edit2.Text:=FloatToStr(k);

end;

//по колледжу

If radiogroup1.ItemIndex=2

then begin

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count1] FROM ozenka where (((ozenka.ozenka)>3))GROUP BY ozenka.mes, ozenka.god ');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'"))');

 AdoQuery1.Active:=True;

k1:=AdoQuery1.fieldbyname('Count1').AsInteger;

 ADOQuery1.SQL.Clear;

 AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count2] FROM ozenka where (((ozenka.ozenka)>0))GROUP BY ozenka.mes, ozenka.god ');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'"))');

 AdoQuery1.Active:=True;

k2:=AdoQuery1.fieldbyname('Count2').AsInteger;

 ADOQuery1.SQL.Clear;

 AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count3] FROM ozenka where (((ozenka.ozenka)>2))GROUP BY ozenka.mes, ozenka.god ');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'"))');

 AdoQuery1.Active:=True;

k3:=AdoQuery1.fieldbyname('Count3').AsInteger;

k4:=Round((k3/k2*100)*100)/100;

k:=Round((k1/k2*100)*100)/100;

Edit1.Text:=FloatToStr(k4);

Edit2.Text:=FloatToStr(k);

end;

end;

procedure TForm18.BitBtn2Click(Sender: TObject);

var n: OleVariant;

i:integer;

//S:String;

begin

if radiogroup3.ItemIndex=0 then begin

AdoQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('SELECT ozenka.ozenka, ozenka.stud, ozenka.gruppa, ozenka.koddis, ozenka.kodspez, ozenka.mes, ozenka.god FROM ozenka WHERE (((ozenka.ozenka)=2))');

ADOQuery1.SQL.Add('and mes="'+ combobox3.Text+'" and god="'+combobox6.Text+'"');

//Showmessage(adoquery1.SQL.Text);

ADOQuery1.Open;

ADOQuery1.First;

n:='d:\55\spisok55.xls';

ExcelApplication1.Workbooks.Add(n,0);

Excelworkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);

i:=3;

ExcelApplication1.Cells.Item[1,1].Value:='Cписок неуспевающих';

ExcelApplication1.Cells.Item[1,2].Value:=Combobox3.Text;

ExcelApplication1.Cells.Item[1,3].Value:=Combobox6.Text;

ExcelApplication1.Visible[0]:=true;

While not ADOQuery1.Eof do

begin;

ExcelApplication1.Cells.Item[i,1].Value:=ADOQuery1.FieldByName('Stud').AsString;

ExcelApplication1.Cells.Item[i,2].Value:=ADOQuery1.FieldByName('koddis').AsString;

ExcelApplication1.Cells.Item[i,3].Value:=ADOQuery1.FieldByName('ozenka').AsString;

ExcelApplication1.Cells.Item[i,4].Value:=ADOQuery1.FieldByName('gruppa').AsString;

 ADOQUERY1.Next;

//ADOQUERY1.Post;

i:=i+1;

 end;

end;

if radiogroup3.ItemIndex=1 then begin

AdoQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('SELECT ozenka.stud, Avg(ozenka.ozenka) AS [Avg-ozenka], ozenka.mes,ozenka.gruppa, ozenka.god FROM ozenka');

ADOQuery1.SQL.Add('GROUP BY ozenka.stud, ozenka.mes,ozenka.gruppa, ozenka.god');

ADOQuery1.SQL.Add('HAVING (((Avg(ozenka.ozenka))=5));');

//ADOQuery1.SQL.Add('and mes="'+ combobox3.Text+'" and god="'+combobox6.Text+'"');

ADOQuery1.Open;

ADOQuery1.First;

n:='d:\55\spisok55.xls';

ExcelApplication1.Workbooks.Add(n,0);

Excelworkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);

i:=3;

ExcelApplication1.Cells.Item[1,1].Value:='Cписок успевающих на отлично';

ExcelApplication1.Cells.Item[1,2].Value:=Combobox3.Text;

ExcelApplication1.Cells.Item[1,3].Value:=Combobox6.Text;

ExcelApplication1.Visible[0]:=true;

While not ADOQuery1.Eof do

begin;

ExcelApplication1.Cells.Item[i,1].Value:=ADOQuery1.FieldByName('Stud').AsString;

ExcelApplication1.Cells.Item[i,2].Value:='все';

ExcelApplication1.Cells.Item[i,3].Value:='5';

ExcelApplication1.Cells.Item[i,4].Value:=ADOQuery1.FieldByName('gruppa').AsString;

 ADOQUERY1.Next;

//ADOQUERY1.Post;

i:=i+1;

 end;

end;

end;

procedure TForm18.BitBtn3Click(Sender: TObject);

var

 n: OleVariant;

i:integer;

k1:integer;

k2:integer;

k3:integer;

k4,k:double;

begin

ADOQuery4.SQL.Text:='drop table ots1';

ADOQuery4.ExecSQL;

//ADoQuery.Active:=false;

ADoQuery2.Active:=true;

ADOQuery2.Edit;

ADoQuery2.First;

ADoQuery5.Active:=true;

ADoQuery5.First;

ADOQuery2.insert;

ADoQuery3.SQL.Text:='Select* from spez';

ADOQuery3.Active:=true;

While not ADoQuery3.Eof do

begin

ADOQuery2.FieldByName('Gruppa').AsString:=ADOQuery3.FieldByName('Grupa').AsString;

ADOQuery2.FieldByName('Spez').AsString:=ADOQuery3.FieldByName('Spez').AsString;

ADOQuery2.FieldByName('kolledg').AsString:='koledg';

Combobox1.Text:=Combobox7.Text;

Combobox2.Text:=Combobox8.Text;

Combobox5.Text:=ADOQuery2.FieldByName('Gruppa').AsString;

Combobox4.Text:=ADOQuery2.FieldByName('Spez').AsString;

//Combobox1.Text:=Combobox7.Text;

//Combobox2.Text:=Combobox8.Text;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count1] FROM ozenka where (((ozenka.ozenka)>3))GROUP BY ozenka.mes, ozenka.god, ozenka.gruppa ');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'") AND ((ozenka.gruppa)="'+Combobox5.Text+'"))');

 AdoQuery1.Active:=True;

k1:=AdoQuery1.fieldbyname('Count1').AsInteger;

 ADOQuery1.SQL.Clear;

 AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count2] FROM ozenka where (((ozenka.ozenka)>0))GROUP BY ozenka.mes, ozenka.god, ozenka.gruppa ');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'") AND ((ozenka.gruppa)="'+Combobox5.Text+'"))');

 AdoQuery1.Active:=True;

k2:=AdoQuery1.fieldbyname('Count2').AsInteger;

 ADOQuery1.SQL.Clear;

 AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count3] FROM ozenka where (((ozenka.ozenka)>2))GROUP BY ozenka.mes, ozenka.god, ozenka.gruppa ');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'") AND ((ozenka.gruppa)="'+Combobox5.Text+'"))');

 AdoQuery1.Active:=True;

k3:=AdoQuery1.fieldbyname('Count3').AsInteger;

//ShowMessage(FloatToStr(k4));

// ShowMessage(FloatToStr(k));

 IF K2>0 then begin

k4:=Round((k3/k2*100));

k:=Round((k1/k2*100));

//Edit1.Text:=FloatToStr(k4);

//Edit2.Text:=FloatToStr(k);

ADOQuery2.FieldByName('usp').AsString:=FloatToStr(k4);

ADOQuery2.FieldByName('kas').AsString:=FloatToStr(k);

ADOQuery2.FieldByName('kol').AsString:=FloatToStr(k2);

end;

ADOQuery2.Insert;

ADOQuery3.Next;

end;

//по специальностям

ADoQuery2.Active:=true;

ADOQuery2.Edit;

ADoQuery2.First;

ADoQuery3.SQL.Text:='Select spez from spez';

ADoQuery3.Active:=true;

ADoQuery3.First;

ADOQuery2.insert;

While not ADoQuery3.Eof do

begin

//ADOQuery2.FieldByName('Gruppa').AsString:=ADOQuery3.FieldByName('Grupa').AsString;

ADOQuery2.FieldByName('Spez').AsString:=ADOQuery3.FieldByName('Spez').AsString;

ADOQuery2.FieldByName('kolledg').AsString:='koledg';

Combobox1.Text:=Combobox7.Text;

Combobox2.Text:=Combobox8.Text;

//Combobox5.Text:=ADOQuery2.FieldByName('Gruppa').AsString;

Combobox4.Text:=ADOQuery2.FieldByName('Spez').AsString;

//Combobox1.Text:=Combobox7.Text;

//Combobox2.Text:=Combobox8.Text;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count1] FROM ozenka where (((ozenka.ozenka)>3))GROUP BY ozenka.mes, ozenka.god, ozenka.kodspez');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'") AND ((ozenka.kodspez)="'+Combobox4.Text+'"))');

 AdoQuery1.Active:=True;

k1:=AdoQuery1.fieldbyname('Count1').AsInteger;

 ADOQuery1.SQL.Clear;

 AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count2] FROM ozenka where (((ozenka.ozenka)>0))GROUP BY ozenka.mes, ozenka.god, ozenka.kodspez ');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'") AND ((ozenka.kodspez)="'+Combobox4.Text+'"))');

 AdoQuery1.Active:=True;

k2:=AdoQuery1.fieldbyname('Count2').AsInteger;

 ADOQuery1.SQL.Clear;

 AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count3] FROM ozenka where (((ozenka.ozenka)>2))GROUP BY ozenka.mes, ozenka.god, ozenka.kodspez ');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'") AND ((ozenka.kodspez)="'+Combobox4.Text+'"))');

 AdoQuery1.Active:=True;

k3:=AdoQuery1.fieldbyname('Count3').AsInteger;

//ShowMessage(FloatToStr(k4));

 //ShowMessage(FloatToStr(k));

 IF K2>0 then begin

k4:=Round((k3/k2*100));

k:=Round((k1/k2*100));

//Edit1.Text:=FloatToStr(k4);

//Edit2.Text:=FloatToStr(k);

ADOQuery2.FieldByName('usp').AsString:=FloatToStr(k4);

ADOQuery2.FieldByName('kas').AsString:=FloatToStr(k);

ADOQuery2.FieldByName('kol').AsString:=FloatToStr(k2);

end;

ADOQuery2.Insert;

ADOQuery3.Next;

end;

//по колледжу

ADOQuery2.insert;

//ADOQuery2.FieldByName('Gruppa').AsString:=ADOQuery3.FieldByName('Grupa').AsString;

//ADOQuery2.FieldByName('Spez').AsString:=ADOQuery3.FieldByName('Spez').AsString;

ADOQuery2.FieldByName('kolledg').AsString:='koledg';

Combobox1.Text:=Combobox7.Text;

Combobox2.Text:=Combobox8.Text;

//Combobox5.Text:=ADOQuery2.FieldByName('Gruppa').AsString;

Combobox4.Text:=ADOQuery2.FieldByName('Spez').AsString;

//Combobox1.Text:=Combobox7.Text;

//Combobox2.Text:=Combobox8.Text;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count1] FROM ozenka where (((ozenka.ozenka)>3))GROUP BY ozenka.mes, ozenka.god');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'"))');

 AdoQuery1.Active:=True;

k1:=AdoQuery1.fieldbyname('Count1').AsInteger;

 ADOQuery1.SQL.Clear;

 AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count2] FROM ozenka where (((ozenka.ozenka)>0))GROUP BY ozenka.mes, ozenka.god ');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'"))');

 AdoQuery1.Active:=True;

k2:=AdoQuery1.fieldbyname('Count2').AsInteger;

 ADOQuery1.SQL.Clear;

 AdoQuery1.SQL.Add('SELECT Count(ozenka.stud) AS [Count3] FROM ozenka where (((ozenka.ozenka)>2))GROUP BY ozenka.mes, ozenka.god');

AdoQuery1.SQL.Add('HAVING (((ozenka.mes)="'+Combobox1.Text+'") AND ((ozenka.god)="'+Combobox2.Text+'"))');

 AdoQuery1.Active:=True;

k3:=AdoQuery1.fieldbyname('Count3').AsInteger;

//ShowMessage(FloatToStr(k4));

 //ShowMessage(FloatToStr(k));

 IF K2>0 then begin

k4:=Round((k3/k2*100));

k:=Round((k1/k2*100));

//Edit1.Text:=FloatToStr(k4);

//Edit2.Text:=FloatToStr(k);

ADOQuery2.FieldByName('usp').AsString:=FloatToStr(k4);

ADOQuery2.FieldByName('kas').AsString:=FloatToStr(k);

ADOQuery2.FieldByName('kol').AsString:=FloatToStr(k2);

ADOQuery2.Post;

end;

//S:String;

begin

//if radiogroup3.ItemIndex=0 then begin

AdoQuery6.Close;

ADOQuery6.SQL.Clear;

ADOQuery6.SQL.Add('SELECT ots.kolledg, ots.spez, ots.gruppa, ots.kol, ots.usp, ots.kas into ots1 FROM ots GROUP BY ots.kolledg, ots.spez, ots.gruppa, ots.kol, ots.usp, ots.kas');

//ORDER BY ots.kolledg DESC , ots.spez DESC , ots.gruppa DESCSELECT ozenka.ozenka, ozenka.stud, ozenka.gruppa, ozenka.koddis, ozenka.kodspez, ozenka.mes, ozenka.god FROM ozenka WHERE (((ozenka.ozenka)=2))');

ADOQuery6.SQL.Add('ORDER BY ots.kolledg DESC , ots.spez DESC , ots.gruppa DESC');

//Showmessage(adoquery1.SQL.Text);

ADOQuery6.ExecSQL;

{ADOTable6.TableName:='ots1';

ADOTable6.Active:=true;

ADOTable6.Active:=false;

ADOTable6.Active:=true;

//ADOTable6.First;

n:='d:\55\usp.xls';

ExcelApplication1.Workbooks.Add(n,0);

Excelworkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);

i:=10;

ExcelApplication1.Cells.Item[1,2].Value:=Combobox7.Text;

ExcelApplication1.Cells.Item[1,3].Value:=Combobox8.Text;

 ADOTable6.First;

 //

 If ADOTable6.FieldByName('gruppa').AsString<>'' then

ExcelApplication1.Cells.Item[i,2].Value:=ADOTable6.FieldByName('gruppa').AsString

 else

// If (ADOQuery6.FieldByName('Spez').AsString<>'') then

ExcelApplication1.Cells.Item[i,2].Value:='итого по специальности '+ADOTable6.FieldByName('Spez').AsString;

If (ADOTable6.FieldByName('Spez').AsString='') then

ExcelApplication1.Cells.Item[i,2].Value:='итого по колледжу ';//+ADOQuery1.FieldByName('Kolledg').AsString;

ExcelApplication1.Cells.Item[i,3].Value:=ADOTable6.FieldByName('kol').AsString;

ExcelApplication1.Cells.Item[i,4].Value:=ADOTable6.FieldByName('usp').AsString;

ExcelApplication1.Cells.Item[i,5].Value:=ADOTable6.FieldByName('kas').AsString;

//While not ADOTable6.Eof do

begin;

ShowMessage('fdgiiii');

 k4:= ADOTable6.FieldByName('usp').AsFloat;

 k:=ADOTable6.FieldByName('kas').AsFloat;

 ShowMessage(FloatToStr(k4));

If ADOTable6.FieldByName('gruppa').AsString<>'' then

ExcelApplication1.Cells.Item[i,2].Value:=ADOTable6.FieldByName('gruppa').AsString

 else

// If (ADOQuery6.FieldByName('Spez').AsString<>'') then

ExcelApplication1.Cells.Item[i,2].Value:='итого по специальности '+ADOTable6.FieldByName('Spez').AsString;

If (ADOTable6.FieldByName('Spez').AsString='') then

ExcelApplication1.Cells.Item[i,2].Value:='итого по колледжу ';//+ADOQuery1.FieldByName('Kolledg').AsString;

ExcelApplication1.Cells.Item[i,3].Value:=ADOTable6.FieldByName('kol').AsString;

ExcelApplication1.Cells.Item[i,4].Value:=k4;

ExcelApplication1.Cells.Item[i,5].Value:=k;

ADOTable6.Next;

//ADOQUERY1.Post;

i:=i+1;

 end;

end;

//ExcelApplication1.Visible[0]:=true; }

ADOQuery4.SQL.Clear;

ADOQuery4.SQL.Text:='delete * from ots';

ADOQuery4.ExecSQL;

ADOQuery4.SQL.Text:='drop table ots1';

//ADOQuery4.ExecSQL;

//end;

 end;

ShowMessage('Перерасчет данных успешно выполнен можно делать отчет!');

 end;

procedure TForm18.Button1Click(Sender: TObject);

var

n:Olevariant;

i:Integer;

k1:integer;

k2:integer;

k3:integer;

k4,k:double;

begin

ADOTable6.TableName:='ots1';

ADOTable6.Active:=true;

ADOTable6.Active:=false;

ADOTable6.Active:=true;

//ADOTable6.First;

n:='d:\55\usp.xls';

ExcelApplication1.Workbooks.Add(n,0);

Excelworkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);

i:=10;

ExcelApplication1.Cells.Item[1,2].Value:=Combobox7.Text;

ExcelApplication1.Cells.Item[1,3].Value:=Combobox8.Text;

 ADOTable6.First;

 // If ADOTable6.FieldByName('gruppa').AsString<>'' then

ExcelApplication1.Cells.Item[i,2].Value:=ADOTable6.FieldByName('gruppa').AsString

 else

// If (ADOQuery6.FieldByName('Spez').AsString<>'') then

ExcelApplication1.Cells.Item[i,2].Value:='итого по специальности '+ADOTable6.FieldByName('Spez').AsString;

If (ADOTable6.FieldByName('Spez').AsString='') then

ExcelApplication1.Cells.Item[i,2].Value:='итого по колледжу ';//+ADOQuery1.FieldByName('Kolledg').AsString;

ExcelApplication1.Cells.Item[i,3].Value:=ADOTable6.FieldByName('kol').AsString;

ExcelApplication1.Cells.Item[i,6].Value:=ADOTable6.FieldByName('usp').AsString;

ExcelApplication1.Cells.Item[i,7].Value:=ADOTable6.FieldByName('kas').AsString;

//While not ADOTable6.Eof do

begin;

ShowMessage(ADOTable6.FieldByName('kas').AsString);

 k4:= ADOTable6.FieldByName('usp').AsFloat;

 k:=ADOTable6.FieldByName('kas').AsFloat;

 //ShowMessage(FloatToStr(k4));

If ADOTable6.FieldByName('gruppa').AsString<>'' then

ExcelApplication1.Cells.Item[i,2].Value:=ADOTable6.FieldByName('gruppa').AsString

 else

// If (ADOQuery6.FieldByName('Spez').AsString<>'') then

ExcelApplication1.Cells.Item[i,2].Value:='итого по специальности '+ADOTable6.FieldByName('Spez').AsString;

If (ADOTable6.FieldByName('Spez').AsString='') then

ExcelApplication1.Cells.Item[i,2].Value:='итого по колледжу ';//+ADOQuery1.FieldByName('Kolledg').AsString;

ExcelApplication1.Cells.Item[i,3].Value:=ADOTable6.FieldByName('kol').AsString;

ExcelApplication1.Cells.Item[i,4].Value:=ADOTable6.FieldByName('usp').AsString;

ExcelApplication1.Cells.Item[i,5].Value:=ADOTable6.FieldByName('kas').AsString; ADOTable6.Next;

//ADOQUERY1.Post;

i:=i+1;

 end;

ExcelApplication1.Visible[0]:=true;

 end;

procedure TForm18.ComboBox4Change(Sender: TObject);

begin

ADOTable2.Open;

ADOTable2.First;

ComboBox5.Items.Clear;

While not ADOTable2.Eof do

begin

if ADOTable2.Fieldbyname('Spez').AsString=ComboBox4.Text Then

ComboBox5.Items.Add(ADOTable2.fieldbyname('grupa').AsString);

ADOTable2.Next;

end;

ADOTable2.Close;

ComboBox5.Sorted:=True;

end;

end.



Информация о работе «Разработка программного обеспечения по автоматизации учебного процесса в колледже»
Раздел: Информатика, программирование
Количество знаков с пробелами: 114140
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
117942
2
4

... обращений к реестру были проконтролированы при помощи Registry Monitor от Sysinternals Corp. 4.4 Описание программы Автоматизированная система для оценки уровня знаний студентов с применением технологии «Клиент-сервер» предназначена для проведения централизованных итоговых занятий по разным дисциплинам в виде интерактивного тестирования. Данный проект поддерживает совместимость с пакетом ...

Скачать
33151
0
1

... программирования, и в целом изменилось отношение к требованиям, гарантирующим более высокое качество.   1990-1999 гг. Следующее "решение" проблемы качества программного обеспечения появилось в 90-х годах под названием "совершенствование процесса разработки программ". Основой этого движения была теперь популярная и часто критикуемая модель Capability Maturity Model. Для краткости упростим ...

Скачать
237705
8
0

... характеристикой. Министерство образования Российской Федерации Регистрационный № 06-0613-ВР ГОСУДАРСТВЕННЫЙ ОБРАЗОВАТЕЛЬНЫЙ СТАНДАРТ СРЕДНЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ ГОСУДАРСТВЕННЫЕ ТРЕБОВАНИЯк минимуму содержания и уровню подготовки выпускников по специальности 0613 Государственное и муниципальное управление (базовый уровень среднего профессионального образования) Квалификация - ...

Скачать
162453
16
14

... , несмотря на такое лидерство, еще рано говорить о том, что информационные системы прочно вошли жизнь современных управленцев. 2    АНАЛИЗ ИНФОРМАЦИОННОГО ОБЕСПЕЧЕНИЯ УПРАВЛЕНИЯ ПРЕДПРИЯТИЕМ 2.1    Общая характеристика объекта исследования ОАО «Технический университет КубГТУ» был создан 9 октября 1992 года. Новые экономические условия требовали создания в Кубанском государственном ...

0 комментариев


Наверх