Рефераты
 

Разработка программного обеспечения по автоматизации учебного процесса в колледже

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

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

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

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

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

- сгруппировать атрибуты, одинаково зависимые от ключевых атрибутов. Полученные группы зависимых атрибутов вместе с их ключевыми атрибутами образуют информационные объекты[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.

5 ОПИСАНИЕ РЕЗУЛЬТАТОВ ИССЛЕДОВАНИЙ

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

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

Также можно сформировать табель успеваемости за месяц.

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

6 ПРОГРАММНАЯ И ЭКСПЛУАТАЦИОННАЯ ДОКУМЕНТАЦИЯ

Ведомость эксплуатационных документов ГОСТ 19.507-79.

К эксплуатационных документации относится следующий комплекс документов [ГОСТ 19. 507 - 79 Ведомость эксплутационных документов.]:

1) описание программы (ГОСТ 19.402-78), в котором содержатся сведения о логической структуре и функционировании программного продукта;

2) техническое задание (ГОСТ 19.201-78), определяющее требования, предъявляемые к программному продукту, необходимые стадии и сроки разработки, виды испытаний;

3) руководство оператора (ГОСТ 19.505-79) - сведения, необходимые для обеспечения процедуры общения оператора с ЭВМ в процессе выполнения (работы) программного продукта.

Описание программы ГОСТ 19.402-78.

1) Общие сведения.

Программный продукт «Учет успеваемости» поможет в контроле за успеваемостью студентов. Использование данного программного продукта позволяет:

Организовать ввод оценки за каждый месяц по каждой специальности, группе, студенту, предмету

Предусмотреть возможность корректировки данных

Организовать возможность подведения итогов успеваемости по каждой группе, специальности и в целом по колледжу (процентное содержание успеваемости и качественной успеваемости)

Предусмотреть возможность сравнения итоговых данных с итогами предыдущего месяца

Обеспечить формирование списков неуспевающих и успевающих на оценку «отлично»

Обеспечить формирование отчета

В данном программном продукте использовался язык программирования Delphi, базы данных были созданы с использованы MS ACCESS.

2) Описание логической структуры.

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

3) Используемые технические средства:

- процессор -Pentium 3;

- видеокарта -64 Мб;

- оперативная память - не менее 256 Мб;

- ОС - Windows XT;

- наличие Microsoft Office ACCESS;

- CD-ROM.

4) Загрузка.

Для запуска программы необходимо разместить папку «55» на диске D, затем запустить EXE - файл «Project1».

Техническое задание ГОСТ 19.201 - 78

1) Наименование.

Разработка программного обеспечения по автоматизации учебного процесса в колледже «УЧЕТ УСПЕВАЕМОСТИ».

2) Основанием для создания является.

Задание на дипломное проектирование.

3) Назначение и цель.

Программный продукт предназначен для использования а колледже для учета успеваемости.

В данный программный продукт должно включаться:

- Рабочую программу «УЧЕТ УСПЕВАЕМОСТИ»;

- База данных
MS ACCESS «poseshaemost.mdb»;

4) Безопасность.

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

Руководство оператора ГОСТ 19. 505 - 79

Для запуска программы необходимо открыть папку на диске D, за тем запустить EXE - файл «Project1».

После этого следует ввести необходимые данные.

Чтобы завершить программу закрыть все ее окна.

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

ЗАКЛЮЧЕНИЕ

Задачей дипломного проекта являлась разработка программного продукта по учету успеваемости студентов БПЭК. Для реализации этой задачи были выполнены следующие этапы:

Спроектирована логическая модель базы данных;

Спроектирована физическая модель базы данных;

Организован ввод оценки за каждый месяц по каждой специальности, группе, студенту, предмету;

Предусмотрена возможность корректировки данных;

Организована возможность подведения итогов успеваемости по каждой группе, специальности и в целом по колледжу (процентное содержание успеваемости и качественной успеваемости)

Предусмотрена возможность сравнения итоговых данных с итогами предыдущего месяца

Обеспечено формирование списков неуспевающих и успевающих на оценку «отлично»

Обеспечено формирование отчета

В результате была создана программа «Учет успеваемости», которая может быть использована в подобных учебных заведениях.

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

Для создания базы данных использовался Microsoft Office Access. Для написания программы использовался язык программирования Delphi, имеющий широкие возможности для работы с базами данных. Соединение с базой данных произведено при помощи технологии ADO. Обработка данных производилась при помощи операторов языка SQL, что значительно ускоряет работу программы.

Программный продукт пригоден для использования в учебных целях БПЭК.

CПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1 Гофман В. Э., Хомоненко А. Д. Delphi. Быстрый старт. -- СПб.: БХВ-Петербург, 2003. -- 288 с.

2 Гофман В. Э., Хомоненко А. Д. Работа с базами данных в Delphi. -- СПб.: БХВ-Петербург, 2001. -- 656 с.

3 Боровский А. Н. Программирование в Delphi 2005. -- СПб.: БХВ-Петербург, 2005. - 448 с.

4 Дарахвелидзе П. Г., Марков Е. П. Delphi 2005 для Win32. - СПб.: БХВ-Петербург, 2005. - 1136 с.

5 Сорокин А. В. Delphi. Разработка баз данных. -- СПб.: Питер, 2005. -- 477 с.

6 Фленов М. Е. Библия Delphi. -- СПб.: БХВ-Петербург, 2004. -- 880 с.

7 Фленов М. Е. Программирование в Delphi глазами хакера. -- СПб.: БХВ-Петербург, 2003. - 368 с.

8 Фленов М. Е. Delphi в шутку и всерьез: что умеют хакеры (+CD). -- СПб.: Питер. 2006. -- 271 с.

9 Архангельский Л.Я. Delphi 2006. Справочное пособие: Язык Delphi, классы, функции Win32 и .NET. -- М.: ООО «Бином-Пресс», 2006 г. -- 1 152 с.

10 Фаронов В. В. Delphi 2005. Разработка приложений для баз данных и Интернета. -- СПб.: Питер, 2006. -- 603 с.

11 Карпова Т. С. Базы данных: модели, разработка, реализация. -- СПб.: Питер, 2001. -- 304 с.

12 Иллюстрированный самоучитель по Delphi для начинающих. Электронное пособие.

13 Иллюстрированный самоучитель по Delphi для профессионалов. Электронное пособие.

14 Delphi World 6.0. Электронный справочник.

15 ГОСТ 19.507-79 Ведомость эксплуатационных документов.

16 ГОСТ 19.402-78 Описание программы.

17 ГОСТ 19.201 - 78 Техническое задание.

18 ГОСТ 19. 505 - 79 Руководство оператора.

Страницы: 1, 2, 3


© 2010 BANKS OF РЕФЕРАТ