Разработка программы«Экзаменационная ведомость»

Автор работы: Пользователь скрыл имя, 05 Июня 2013 в 11:05, курсовая работа

Описание работы

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

Содержание работы

Введение 3
Техническое задание
1.1. Формулировка задачи 5
1.2. Описание входной и выходной информации 6
1.3. Требования к комплексу технических средств 7
1.4. Требования к интерфейсу конечного пользователя 9
Технический проект
2.1. Разработка форм представления входных данных 10
2.2. Разработка форм представления выходных данных 11
2.3. Проектирование программных модулей 12
Рабочий проект
3.1. Описание программы 13
3.2. Руководство пользователя 15
3.3. Руководство программиста 19
Заключение 20
Список использованных источников 21
Приложение А – Главный модуль программы 22

Файлы: 1 файл

Копия курсовик.doc

— 269.00 Кб (Скачать файл)

    Данная программа  составлена из модулей, листинг  которых приведен в Приложении  А.

Для запуска программы  нужно запустить файл Project1.exe. Главным модулем является Unit1.pas, который отображает главное меню программы и осуществляет связь со следующими модулями.

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

 

 

Рис.3.1.1. Заполнение базы

 

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

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

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

 

 

 

 

 

3.2. Руководство  пользователя

 

Для того чтобы начать работу в программе, необходимо запустить  файл Project1.exe. После этого на экране появится заставка программы (рис.3.2.2).

 

 

Рис.3.2.2 Заставка программы  «Экзаменационная ведомость»

 

В верхней части окна выбираем Файл ® Прочитать из файла. Затем выбираем  текстовый документ База.txt и заполняем таблицу данными.( Рис.3.2.3)

 

Рис.3.2.3 Заполнение таблицы  данными

 

Выбираем пункт меню Просмотр по студентам. В выпадающем меню выбираем нужного студента и  в таблице Найденные записи появляется информация об успеваемости данного  студента и его средний балл по дисциплинам.( Рис.3.2.4)

 

 

 

 

Рис.3.2.4 Просмотр по студентам

 

     В поле  Поиск по фамилии вводим фамилию  Студента и нажимаем на кнопку  найти. В таблице Найденные  записи отобразиться информация  о студенте и его средний  балл. (Рис.3.2.5)

 

 

 

 

Рис.3.2.5 Поиск по фамилии

 

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

Пункт меня Файл ® Выход позволяет выйти из программы.

 

 

 

 

 

 

 

 

 

 

 

 

3.3. Руководство программиста

 

Программа написана на объектно-ориентированном языке Pascal 4.0 в среде Delphi. В программе создана 1 форма, соответственно 1 исполняемый юнит. Модули состоят из множества мелких процедур и функций объединяя которые без затрат большого количества времени возможно реализовывать дополнительные функции.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЗАКЛЮЧЕНИЕ

 

 

Результатом данной курсовой работы является разработанная программа «Экзаменационная ведомость». Данная программа предназначена для использования в высших учебных заведениях.

Разработанная программа  решает следующие задачи:

  • ввод исходных данных по студентам;
  • вывод информации по студентам;
  • подсчет среднего балла по дисциплинам;
  • вывод ведомости.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 

  1. Архангельский А.Я. Программирование в Delphi 6. - М.: "БИНОМ",

         2003. - 1118 с.: ил.

  1. Архангельский А.Я. Решение задач в Delphi 6. - М.: ЗАО Изд-во

          "БИНОМ", 2001.

  1. Власов А.Я. Справочник по программированию на Object Pascal. - Киев, 2001.
  2. Гофман В. Э., Хомоненко А. Д. Delphi. Быстрый старт. — СПб.:

          БХВ-Петербург, 2003

  1. Боровский А. Н. Программирование в Delphi 2005. — СПб.:

          БХВ-Петербург, 2005.

6.        Истомин Е. П., Неклюдов С. Ю. Программирование на алгоритмических

          языках  высокого уровня: Учебник.- СПб.: Изд-во Михайлова В. А., 2003 г.-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПРИЛОЖЕНИЕ  А

Главный модуль программы

 

unit Unit1;

 

interface

 

uses

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

  Dialogs, Menus, ComCtrls, Grids, StdCtrls, ExtCtrls;

 

type

  TForm1 = class(TForm)

    PageControl1: TPageControl;

    TabSheet1: TTabSheet;

    TabSheet2: TTabSheet;

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    OpenDialog1: TOpenDialog;

    SaveDialog1: TSaveDialog;

    N2: TMenuItem;

    N3: TMenuItem;

    StringGrid1: TStringGrid;

    ComboBox1: TComboBox;

    GroupBox1: TGroupBox;

    Edit5: TEdit;

    Button1: TButton;

    Button2: TButton;

    StringGrid2: TStringGrid;

    Button3: TButton;

    N6: TMenuItem;

    N7: TMenuItem;

    Button4: TButton;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    tabSummary: TTabSheet;

    StringGrid3: TStringGrid;

    panTop: TPanel;

    cbSubject: TComboBox;

    Label4: TLabel;

    procedure PageControl1Change(Sender: TObject);

    procedure NewSubject(Sender: TObject);

    procedure N2Click(Sender: TObject);

    procedure N3Click(Sender: TObject);

    procedure Create_(Sender: TObject);

    procedure NewEdit(Sender: TObject);

    procedure NewComboBox;

 

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure N7Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

 

  private

    procedure ClearStringGrid(pGrid: TStringGrid);

    { Private declarations }

  public

    { Public declarations }

  end;

 

 

type

  // Содержимое элемента  файла

  info=record {тип записей}

    fio,gr,faq,predmet,ocenka: string[20];

end;

 

var

  f: file of info; {Файл записей}

  r: info; {Одна запись}

  N: integer; {Количество записей}

  Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.N2Click(Sender: TObject);

{процедура чтения  из файла}

var i: integer;

begin

if OpenDialog1.Execute then

begin

AssignFile(F,OpenDialog1.FileName);

Reset(F);

N:=0;

while not eof(f) do

begin

read(F,r);

stringGrid1.Cells[0,N+1]:=r.fio;

stringGrid1.Cells[1,N+1]:=r.gr;

stringGrid1.Cells[2,N+1]:=r.faq;

stringGrid1.Cells[3,N+1]:=r.predmet;

stringGrid1.Cells[4,N+1]:=r.ocenka;

N:=N+1 {увеличение числа записей на 1}

end;

closeFile(F);

NewCombobox {процедура заполняет комбинированный список второй страницы}

end

end;

 

procedure TForm1.N3Click(Sender: TObject);

var i:integer;

begin

if SaveDialog1.Execute then

begin

AssignFile(F,SaveDialog1.FileName);

Rewrite(F);

i:=1;

while stringGrid1.Cells[3,i]<>'' do

begin

r.fio:=stringGrid1.Cells[0,i];

r.gr:=stringGrid1.Cells[1,i];

r.faq:=stringGrid1.Cells[2,i];

r.predmet:=stringGrid1.Cells[3,i];

r.ocenka:=stringGrid1.Cells[4,i];

write(F,r);

i:=i+1

end;

closeFile(F)

end

end;

 

procedure TForm1.Create_(Sender: TObject);

begin

stringGrid1.Cells[0,0]:='ФИО';

stringGrid1.Cells[1,0]:='Группа';

stringGrid1.Cells[2,0]:='Факультет';

stringGrid1.Cells[3,0]:='Предмет';

stringGrid1.Cells[4,0]:='Оценка';

stringGrid2.Cells[0,0]:='ФИО';

stringGrid2.Cells[1,0]:='Группа';

stringGrid2.Cells[2,0]:='Факультет';

stringGrid2.Cells[3,0]:='Предмет';

stringGrid2.Cells[4,0]:='Оценка';

// заполняем заголовки  третьей закладки

stringGrid3.Cells[0,0]:='ФИО';

stringGrid3.Cells[1,0]:='Группа';

stringGrid3.Cells[2,0]:='Факультет';

stringGrid3.Cells[3,0]:='Оценка';

ComboBox1.Items.Add(''); {Создаем  пустую строку в комбинированном  списке}

ComboBox1.ItemIndex:=0; {Активизируем эту строку на случай создания нового справочника}

cbSubject.Items.Clear;

end;

 

procedure TForm1.NewEdit(Sender: TObject);

var i,j,k:integer; {номер строки данных в таблице}

begin

k:=0;

for i:=0 to stringgrid2.RowCount-1 do

for j:=1 to stringgrid2.ColCount-1 do

  stringgrid2.Cells[i,j]:='';

 

  for i:=1 to N do

  begin

   if StringGrid1.Cells[0,i]=ComboBox1.Items[ComboBox1.ItemIndex]

      then

       begin

         k:=k+1;

         stringgrid2.Cells[0,k]:=stringgrid1.Cells[0,i];

         stringgrid2.Cells[1,k]:=stringgrid1.Cells[1,i];

         stringgrid2.Cells[2,k]:=stringgrid1.Cells[2,i];

         stringgrid2.Cells[3,k]:=stringgrid1.Cells[3,i];

         stringgrid2.Cells[4,k]:=stringgrid1.Cells[4,i];

       end;

 

  end;

 

  i:=1; k:=0;

  While Stringgrid2.Cells[0,i]<>'' do

   begin

     k:=k+strtoint(Stringgrid2.Cells[4,i]);

     i:=i+1;

   end;

 

  if i<>1 then

             i:=i-1;

  label3.Caption:= floattostr(k/i);

 

end;

 

procedure Tform1.NewComboBox;

var i,j,k: integer; key:boolean;

begin

{Запоминаем активную  позицию комбинированного списка}

j:=ComboBox1.ItemIndex;

ComboBox1.Clear; {очищаем список}

key:=true;

 

for i:=1 to n do

begin

  for k:=0 to combobox1.Items.Count-1 do

   if ComboBox1.Items[k]=StringGrid1.Cells[0,i] then

      key:=false;

     

   if key=true then ComboBox1.Items.Add(StringGrid1.Cells[0,i]);

 

   key:=true;

 

end;

 

ComboBox1.ItemIndex:=j {Переходим  на позицию j}

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

if ComboBox1.ItemIndex=0

then ComboBox1.ItemIndex:=N-1

else ComboBox1.ItemIndex:=ComboBox1.ItemIndex-1;

NewEdit(ComboBox1) {Обновляем панель «Найдена запись»}

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

if ComboBox1.ItemIndex=N-1

then ComboBox1.ItemIndex:=0

else ComboBox1.ItemIndex:=ComboBox1.ItemIndex+1;

NewEdit(ComboBox1) {Обновляем панель «Найдена запись»}

end;

 

 

procedure TForm1.ClearStringGrid(pGrid: TStringGrid);

var

  ii,jj:integer; {номер строки данных в таблице}

Begin

for ii:=0 to pGrid.RowCount-1 do

for jj:=1 to pGrid.ColCount-1 do

  pGrid.Cells[ii,jj]:='';

End;

 

procedure TForm1.Button3Click(Sender: TObject);

var i,j,k:integer; {номер строки данных в таблице}

begin

  if Edit5.Text='' then begin showmessage('Введите  строку для поиска');exit;end;

  k:=0;

  ClearStringGrid(  stringgrid2);

 

  for i:=1 to N do

  begin

   if StringGrid1.Cells[0,i]=Edit5.Text

      then

       begin

         k:=k+1;

         stringgrid2.Cells[0,k]:=stringgrid1.Cells[0,i];

         stringgrid2.Cells[1,k]:=stringgrid1.Cells[1,i];

         stringgrid2.Cells[2,k]:=stringgrid1.Cells[2,i];

         stringgrid2.Cells[3,k]:=stringgrid1.Cells[3,i];

         stringgrid2.Cells[4,k]:=stringgrid1.Cells[4,i];

         combobox1.ItemIndex:=i-1;

       end;

  end;

 

  i:=1; k:=0;

  While Stringgrid2.Cells[0,i]<>'' do

   begin

     k:=k+strtoint(Stringgrid2.Cells[4,i]);

     i:=i+1;

   end;

  if i<>1 then

             i:=i-1;

  label3.Caption:= floattostr(k/(i));

 

   if stringgrid2.Cells[0,1]='' then Showmessage('Ничего не найдено');

end;

 

procedure TForm1.N7Click(Sender: TObject);

begin

close;

end;

 

procedure TForm1.Button4Click(Sender: TObject);

var i,j:integer; s:string;

begin

s:=combobox1.Text;

for i:=0 to stringgrid2.RowCount-1 do

for j:=1 to stringgrid2.ColCount-1 do

  stringgrid2.Cells[i,j]:='';

for i:=0 to Combobox1.Items.Count do

begin

  if Combobox1.Items[i]=s then Combobox1.DeleteSelected;

end;

 Button2Click(Sender);

end;

 

// на изменение предмета  на закладке Ведомость

procedure TForm1.NewSubject(Sender: TObject);

var

  ii, kk: integer;

begin

  ClearStringGrid(stringgrid3);

  kk := 0;

  for ii:=1 to N+1 do

  begin

    // в третьей  колонке предмет если совпадает  с искомым - отображаем запись

   if AnsiLowerCase(Trim(StringGrid1.Cells[3,ii]))=AnsiLowerCase(Trim(cbSubject.Text))

   then

     begin

         kk:=kk+1;

         stringgrid3.Cells[0,kk]:=stringgrid1.Cells[0,ii];

         stringgrid3.Cells[1,kk]:=stringgrid1.Cells[1,ii];

         stringgrid3.Cells[2,kk]:=stringgrid1.Cells[2,ii];

         stringgrid3.Cells[3,kk]:=stringgrid1.Cells[4,ii];

       end;

  end;

end;

 

 

procedure TForm1.PageControl1Change(Sender: TObject);

var

  ii: integer;

  sSubject: string;

begin

  // Каждый раз обновляем  число записей N

  // (подсчитываем, сколько  непустых ФИО на первой закладке)

  N := 1;

  while(StringGrid1.Cells[0,N] <> '') do N := N + 1;

 

 

  // если выбрана  вторая закладка

  if (PageControl1.ActivePage = TabSheet2) then

    NewComboBox;

 

  // если выбрана  закладка "Ведомость"

  if (PageControl1.ActivePage = tabSummary) then

  Begin

    cbSubject.Items.Clear;

    // заполняем  список дисциплин

    for ii := 1 to StringGrid1.RowCount do

    Begin

      // строка  без пробелов в начале и  конце

      sSubject := Trim(StringGrid1.Cells[3, ii]);

      if (sSubject = '') then Continue;

      // если еще нет такого предмета в списке

      if (cbSubject.Items.IndexOf(sSubject) < 0) then

      Begin

        cbSubject.Items.Add(sSubject);

      End;

    End;

  End;

end;

 

end.




Информация о работе Разработка программы«Экзаменационная ведомость»