Разработка системы сохранения результатов анкетирования в базе данных MS SQL Server

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    736,77 Кб
  • Опубликовано:
    2012-08-15
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка системы сохранения результатов анкетирования в базе данных MS SQL Server

Оглавление

Введение    2

1 Постановка задачи   3

2 Выбор средств реализации         4

3 Описание логики работы приложения          6

4 Разработка программного обеспечения и описание пользовательского интерфейса  8

4.1 Таблица SQL         8

4.2 Главная форма MainForm       9

4.3 Форма просмотра анкет Infoform     12

Заключение         14

Список используемой литературы         15

Приложение А (обязательное)       16

Введение


Технологии программирования играли разную роль на разных этапах развития программирования. По мере повышения мощности компьютеров и развития средств и методологии программирования росла и сложность решаемых на компьютерах задач, что привело к повышенному вниманию к технологии программирования. Резкое удешевление стоимости компьютеров и, в особенности, стоимости хранения информации на компьютерных носителях привело к широкому внедрению компьютеров практически во все сферы человеческой деятельности, что существенно изменило направленность технологии программирования. Человеческий фактор стал играть в ней решающую роль. Сформировалось достаточно глубокое понятие качества программных средств, в котором акценты стали ставится не столько на его эффективности, сколько на удобстве работы с ним для пользователей (не говоря уже о его надежности). Широкое использование компьютерных сетей привело к интенсивному развитию распределенных вычислений, дистанционного доступа к информации и электронного способа обмена сообщениями между людьми. Компьютерная техника из средства решения отдельных задач все более превращается в средство информационного моделирования реального и мыслимого мира, способное просто отвечать людям на интересующие их вопросы. Начинается этап глубокой и полной информатизации (компьютеризации) человеческого общества. Все это ставит перед технологией программирования новые и достаточно трудные проблемы.

1 Постановка задачи


Разработка системы сохранения результатов анкетирования в базе данных MS SQL Server.

Основные требования: Вопросов в анкете должно быть не менее 15. Типов данных для вводимых ответов должно быть не менее 3.

Общие требования:

1.   При выборе элемента меню о программе, должно выводиться модальное диалоговое окно со сведениями о программе и авторе программы.

2.      Тип приложения: GUI

2 Выбор средств реализации


Для выполнения курсовой работы был использован язык программирования Delphi и система управления базами данных Microsoft SQL Server.

Основные процедуры и функции Delphi, используемые в данном проекте:

Рисунок 1 - Таблица Table1

4.2 Главная форма MainForm

Листинг программы приведен в приложении А.

Для работы с базой SQL на форме располагаются элементы DataSource1: TDataSource, ADO: TADOQuery, DBGrid1: TDBGrid.

Согласно изложенному выше плану работы приложения был создан модуль Mform, в котором описана форма MainForm (рисунок 2). На этой форме размещены 4 панели,содержащие элементы для ввода данных анкетирования.

Для большей удобности и экономии пространсво было создано MainMenu1,содержащее 2 вкладки: «Анкета», «Справка».

Вкладка «Анкета» имеет 3 пункта:

«Заполнить новую»-делает активной первую панель,скрывая все остальные,очищатет все элементы ввода для ввода новых данных;

«Посмотреть заполненные»-показывает модальное окно InfoForm, содержащее информацию об анкетируемых(рисунок 4);

«Выход»-осуществляет выход из программы.

Вкладка «Справка» имеет один пункт:

«О программе»- показывает модальное окно AboutForm с информацией о программе и ее авторе(рисунок 3).

Для того чтобы открываемое окно было модальным вызывается функция showmodal соответствующего экземпляра формы.

Закрытие и уничтожение модальной формы осуществляется с помощью процедуры Release, либо же формы, свойству соответствующей кнопки выхода ModalResult присваивается значение mrCancel.

Навигация между нужными панелями выполняется при помощи кнопок

«Назад» и «Дальше». При работе с первой панелью кнопка «Назад» в свойстве vision имеет значение false, при работе с остальными панелями true.

При работе с последней панелью кнопка «Дальше» в свойстве vision имеет значение false, при работе с остальными панелями true.

Также описана процедура:

procedure BdataKeyPress(Key:Char):Char; - возвращает цифру, передаваемую как параметр, если она входит в алфавит, или же является специальным знаком клавиши удаления #8, иначе возвращает “пустой” символ #0 .Данная процедура используются для предотвращения некорректного ввода в поле TEdit (например, при вводе букв в поле ввода даты рождения анкетируемого).

После создания формы анкетирования переменной povtorSave: boolean этой формы присваивается значение false, это означает, что происходит новое заполнение анкеты.

После ее нажатия начинается проверка заполнения,если же поле не было заполнена данные не будут сохранены и программа уведомит пользователя об этом.Далее происходит сохранение данных в базу SQL и переменной povtorSave присвоиться значение true,это означает, что если мы не выберем в меню пункт «Новая анкета»,то при следующем сохранении данных мы будем видеть диалоговое окно с запросом наших намерений.

Рисунок 2.1 - Главная форма приложения.

Рисунок 2.2 - Главная форма приложения.

программа база данные анкета

Рисунок 2.3 - Главная форма приложения.

Рисунок 2.4 - Главная форма приложения.

Рисунок 3 - Форма «О программе».

4.3 Форма просмотра анкет Infoform


На рисунке 4 представлена данная форма.

Для работы с базой SQL на форме располагаются элементы DataSource1: TDataSource, ADO: TADOQuery, DBGrid1: TDBGrid.

При создании данной формы происходит заполнение 1 столбца InfoGrid:TstringGrid и подсчет количества анкет. Количество анкет оображается в Label2.

Для осуществления перехода к определенной анкете,при нажатии кнопки Button1,происходит перемещение по таблице до нужной анкеты и данные выводятся в InfoGrid при помощи процедуры SelectInfo.

Если был введен ID несуществующей анкеты,появится окно предупреждающее об этом и окно ввода ID будет очищено.

При нажатии на кнопку «Предыдущая» происходит переход к предыдущей анкете,которая будет показана в InfoGrid.

При нажатии на кнопку «Следующая» происходит переход к следующей анкете,которая будет показана в InfoGrid.

 

Заключение


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

Список используемой литературы


1.     Программирование в Delphi. Учебник по классическим теориям Delphi. - ООО «Бином-Пресс» 2006г.

2.      Разработка клиент-серверных приложений в Delphi <http://forcoder.ru/delphi/razrabotka-klient-servernyh-prilozhenij-v-delphi-1137> А. Шкрыль БХВ-Петербург 2006г

3. SQL: Полное руководство Джеймс Р. Грофф, Пол Н. Вайнберг Издательство: Ирина, Издательская группа BHV, McGraw-Hill Companies 2001г.

Приложение А (обязательное)


Листинг программы

program Anketa;

uses,in 'MainForm.pas' {Form1},in 'Unit1.pas' {AboutForm},in 'Unit2.pas' {InfoForm};

{$R *.res}.Initialize;.Title := 'Анкета';.CreateForm(TForm1, Form1);.CreateForm(TAboutForm, AboutForm);.Run;.MainForm;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Grids, DBGrids, DB, ADODB,, ComCtrls, Menus, Vcl.XPMan;= class(TForm): TDataSource;: TADOQuery;: TDBGrid;: TButton;: TLabel;: TLabel;: TLabel;: TEdit;: TEdit;: TEdit;: TRadioGroup;: TLabeledEdit;: TLabeledEdit;: TLabel;: TComboBox;: TLabel;: TComboBox;: TLabel;: TComboBox;: TRichEdit;: TLabel;: TLabeledEdit;: TRichEdit;: TLabel;: TComboBox;: TLabel;: TLabeledEdit;: TRichEdit;: TLabel;: TLabel;: TComboBox;: TLabeledEdit;: TPanel;: TRadioGroup;: TPanel;: TPanel;: TPanel;: TButton;: TButton;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;PriorButtonClick(Sender: TObject);NextButtonClick(Sender: TObject);FormCreate(Sender: TObject);SaveButtonClick(Sender: TObject);BdataKeyPress(Sender: TObject; var Key: Char);N5Click(Sender: TObject);N1Click(Sender: TObject);N3Click(Sender: TObject);N2Click(Sender: TObject);

{ Private declarations }: integer;;: TForm1;:integer; //номер активной панели:boolean;Unit1, Unit2;

{$R *.dfm}definitionId: integer;//возвращает значение следующего ID анкеты.ado.SQL.Clear;.ado.SQL.Text:='select id from table_1 ORDER BY id ASC;';.ado.open;.ado.Last;:=Form1.ado.Fields[0].value+1;result:=1;;;NewANKETA; .FormCreate(Form1);Form1 do.Clear;.Clear;.Clear;.ItemIndex:=-1;.Clear;.Clear;.Clear;.ItemIndex:=-1;.ItemIndex:=-1;.ItemIndex:=-1;.ItemIndex:=-1;.ItemIndex:=-1;.ItemIndex:=-1;.Clear;.Clear;.Clear;.Clear;.Clear;.NextButton.Visible:=true;.savebutton.Enabled:=false;;;Smena(l:integer);l of

: begin.Panel1.Visible:=true;.Panel2.Visible:=false;.Panel3.Visible:=false;.Panel4.Visible:=false;.PriorButton.Visible:=false;.NextButton.Visible:=true;;

: begin.Panel1.Visible:=false;.Panel2.Visible:=true;.Panel3.Visible:=false;.Panel4.Visible:=false;.PriorButton.Visible:=true;.NextButton.Visible:=true;;

: begin.Panel1.Visible:=false;.Panel2.Visible:=false;.Panel3.Visible:=true;.Panel4.Visible:=false;.PriorButton.Visible:=true;.NextButton.Visible:=true;;

: begin.Panel1.Visible:=false;.Panel2.Visible:=false;.Panel3.Visible:=false;.Panel4.Visible:=true;.PriorButton.Visible:=true;.NextButton.Visible:=false;.savebutton.Enabled:=true;;;;TForm1.PriorButtonClick(Sender: TObject);l>1 then l:=l-1;(l);;TForm1.NextButtonClick(Sender: TObject);:boolean;:=false;l<4 then l:=l+1;l of

: beginPolgroup.ItemIndex=-1 then begin ShowMessage('Вы не указали пол!'); error:=true; end;(Bdata.Text);(0,'Неверный формат даты!'+#13#10+'Пример правильного ввода '+#13#10+ '01.01.2012' ,'Неверная дата',MB_Ok or MB_ICONERROR);:=true;.Clear;;error then l:=1;;

:beginTimeGamebox.ItemIndex=-1 then begin ShowMessage('Вы не указали сколько времени тратите на игры!'); error:=true; end;OpitGamebox.ItemIndex=-1 then begin ShowMessage('Вы не указали как вы оцениваете свой игровой опыт!'); error:=true; end;Platformerbox.ItemIndex=-1 then begin ShowMessage('Вы не указали как относитесь к платформерам!'); error:=true; end;Pristavkagroup.ItemIndex=-1 then begin ShowMessage('Вы не указали есть ли у вас приставка!');error:=true; end;error then l:=2;;

:beginOsbox.ItemIndex=-1 then begin ShowMessage('Вы не указали свою ОС!'); error:=true; end;error then l:=3;;;Not error then smena(l);;TForm1.FormCreate(Sender: TObject);.Visible:=true;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;:=false;:=1;.savebutton.Enabled:=false;;TForm1.SaveButtonClick(Sender: TObject);: boolean;:=false;Donatbox.ItemIndex=-1 then begin ShowMessage('Вы не указали тратите ли вы деньги на игры'); error:=true; end;

if (povtorSave)and(messagebox(0,'Возможно вы пытаетесь сохранить уже существующие данные!'+#13#10+'В этом случае они будут сохранены под новым номером! Продолжить?','Повторное сохранение',MB_YesNo or MB_ICONINFORMATION)=mrNo) then error:=true;(not error) then begin:=DefinitionId;.SQL.Text:='insert into table_1 (ID, name, fam,otch,pol,datar,professia,TimeGame,OpitGame, GanrGame, Platformer, OS, ConfigPC, Pristavka, Game, GameInfo, Donat, Film, Info)';.SQL.add(' values (:ID, :name, :fam,:otch,:pol,:datar,:professia,:TimeGame,:OpitGame, :GanrGame, :Platformer, :OS, :ConfigPC, :Pristavka, :Game, :GameInfo, :Donat, :Film, :Info)');.Parameters.ParamByName('name').value:=NameEdit.Text;.Parameters.ParamByName('fam').value:=lNameEdit.Text;.Parameters.ParamByName('otch').value:=mNameEdit.Text;.Parameters.ParamByName('pol').value:=PolGroup.ItemIndex;.Parameters.ParamByName('professia').value:=professia.Text;.Parameters.ParamByName('DataR').value:=formatdatetime('yyyy/mm/dd',StrToDateTime(Bdata.Text));.Parameters.ParamByName('GanrGame').value:=GanrGame.Text;.Parameters.ParamByName('TimeGame').value:=TimeGamebox.ItemIndex;.Parameters.ParamByName('OpitGame').value:=OpitGamebox.ItemIndex;.Parameters.ParamByName('Donat').value:=Donatbox.ItemIndex;.Parameters.ParamByName('Platformer').value:=Platformerbox.ItemIndex;.Parameters.ParamByName('Pristavka').value:=PristavkaGroup.ItemIndex;.Parameters.ParamByName('OS').value:=OSBox.items[Osbox.ItemIndex];.Parameters.ParamByName('Game').value:=Game.Text;.Parameters.ParamByName('film').value:=FilmEdit.Text;.Parameters.ParamByName('ConfigPC').value:=ConfigPCEdit.Text;.Parameters.ParamByName('GameInfo').value:=GameInfoEdit.Text;.Parameters.ParamByName('info').value:=InfoEdit.Text;.Parameters.ParamByName('id').value:=id;.ExecSQL; povtorSave:=true;(0,'Данные успешно сохранены!','Сохранение',MB_Ok or MB_ICONINFORMATION);

except('Ошибка при записи данных!');

end;else messagebox(0,'Данные не сохранены','Сохранение',MB_Ok or MB_ICONERROR);;TForm1.BdataKeyPress(Sender: TObject; var Key: Char);: set of char=['0'..'9',#8,'.'];(not(key in abc)) then key:=#0;;TForm1.N5Click(Sender: TObject);.ShowModal;;TForm1.N1Click(Sender: TObject);;;TForm1.N3Click(Sender: TObject);.Close;;TForm1.N2Click(Sender: TObject);.CreateForm(TInfoForm, InfoForm);.ShowModal;;.Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, jpeg, ExtCtrls;= class(TForm): TLabel;: TLabel;: TLabel;: TButton;: TImage;

{ Public declarations };: TAboutForm;

{$R *.dfm}.Unit2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Grids, DB, ADODB, DBGrids;= class(TForm): TStringGrid;: TButton;: TButton;: TDataSource;: TDBGrid;: TADOQuery;: TLabel;: TButton;: TLabel;: TButton;: TLabel;: TEdit;FormCreate(Sender: TObject);PriorButtonClick(Sender: TObject);NextButtonClick(Sender: TObject);CloseButtonClick(Sender: TObject);Button1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TInfoForm;Mainform;

{$R *.dfm}SelectInfo;InfoForm do.Cells[1,0]:=ado.FieldByName('id').AsString;.Cells[1,1]:=ado.FieldByName('name').AsString;.Cells[1,2]:=ado.FieldByName('fam').AsString;.Cells[1,3]:=ado.FieldByName('Otch').AsString;ado.FieldByName('pol').AsBoolean then InfoGrid.Cells[1,4]:='Женский' else InfoGrid.Cells[1,4]:='Мужской';.Cells[1,5]:=ado.FieldByName('professia').AsString;.Cells[1,6]:=ado.FieldByName('DataR').Asstring;.Cells[1,7]:=Form1.TimeGameBox.Items[ado.FieldByName('TimeGame').AsInteger];.Cells[1,8]:=Form1.OpitGameBox.Items[ado.FieldByName('OpitGame').AsInteger];.Cells[1,9]:=ado.FieldByName('GanrGame').AsString;.Cells[1,10]:=Form1.PlatformerBox.Items[ado.FieldByName('Platformer').Asinteger];.Cells[1,11]:=ado.FieldByName('OS').AsString;.Cells[1,12]:=ado.FieldByName('ConfigPC').AsString;.Cells[1,13]:=Form1.PristavkaGroup.Items[ado.FieldByName('Pristavka').Asinteger];.Cells[1,14]:=ado.FieldByName('Game').AsString;.Cells[1,15]:=ado.FieldByName('GameInfo').AsString;.Cells[1,16]:=Form1.DonatBox.Items[ado.FieldByName('Donat').AsInteger];.Cells[1,17]:=ado.FieldByName('Film').AsString;.Cells[1,18]:=ado.FieldByName('Info').AsString;;;TInfoForm.FormCreate(Sender: TObject);.SQL.Clear;.sql.Text:='select * from Table_1 order by id asc;';.Open;.enabled:=true;.enabled:=true;.last;.Caption:='Всего анкет: '+ado.FieldByName('id').AsString+' ';.First;.ColWidths[0]:=220;.ColWidths[1]:=680;.Cells[0,0]:='Номер анкеты';.Cells[0,1]:='Имя';.Cells[0,2]:='Фамилия';.Cells[0,3]:='Отчество';.Cells[0,4]:='Пол';.Cells[0,5]:='Профессия';

InfoGrid.Cells[0,6]:='Дата рождения';.Cells[0,7]:='Время затрачиваемое на игры';.Cells[0,8]:='Игровой опыт';.Cells[0,9]:='Любимый жанр игр';.Cells[0,10]:='Отношение к платформерам';.Cells[0,11]:='Операционная система';.Cells[0,12]:='Конфигурация компьютера';.Cells[0,13]:='Наличие приставки';.Cells[0,14]:='Любимая игра';.Cells[0,15]:='Информация о любимой игре';.Cells[0,16]:='Трача денег на игры';.Cells[0,17]:='Любимый фильм';.Cells[0,18]:='Информация о себе';

selectInfo;('Не найдено данных!');.Enabled:=false;.Enabled:=false;;;TInfoForm.PriorButtonClick(Sender: TObject);.prior;;;TInfoForm.NextButtonClick(Sender: TObject);.next;;;TInfoForm.Button1Click(Sender: TObject);:integer; //счетчик:=1;.Last;(strtoint(edit1.text)<=ado.FieldByName('id').AsInteger)and(strtoint(edit1.text)>0) then.First;i<strtoint(edit1.text) do.Next;:=i+1;;; end else('Введите правильное значение номера анкеты!');.clear;;;TInfoForm.CloseButtonClick(Sender: TObject);.Release;;.

Похожие работы на - Разработка системы сохранения результатов анкетирования в базе данных MS SQL Server

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!