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

бесплатно 0
4.5 145
Разработка программного продукта - приложения, позволяющего заносить данные анкетирования в базу данных MS SQL. Описание логики работы приложения, особенности пользовательского интерфейса. Формы просмотра анкет, описание процедур и функций программы.


Аннотация к работе
Технологии программирования играли разную роль на разных этапах развития программирования. По мере повышения мощности компьютеров и развития средств и методологии программирования росла и сложность решаемых на компьютерах задач, что привело к повышенному вниманию к технологии программирования. Резкое удешевление стоимости компьютеров и, в особенности, стоимости хранения информации на компьютерных носителях привело к широкому внедрению компьютеров практически во все сферы человеческой деятельности, что существенно изменило направленность технологии программирования.Разработка системы сохранения результатов анкетирования в базе данных MS SQL Server. При выборе элемента меню о программе, должно выводиться модальное диалоговое окно со сведениями о программе и авторе программы.Для выполнения курсовой работы был использован язык программирования Delphi и система управления базами данных Microsoft SQL Server. Основные процедуры и функции Delphi, используемые в данном проекте: 1) procedure SHOWMESSAGE (const Text : string ) - предназначена для вывода диалогового окна, с одной единственной кнопкой "ОК". При нажатии на эту кнопку, окно закрывается, и программа продолжает свое выполнение. Процедуру Showmessage(), в отличие от функции MESSAGEBOX() , нельзя изменить: добавить кнопки, иконку, обработать события при нажатии кнопок. Процедура Showmessage() принимает на вход один параметр типа String, значение которого выводит в диалоговое окно;В разрабатываемом приложении реализуется заполнение анкеты. Пользователь должен иметь возможность заполнения новой анкеты и сохранения результатов в базу данных, должен быть реализован переход к определенной анкете и вывод ее на экран. В соответствии с необходимыми требованиями должна быть создана форма заполнения анкеты, содержащая различные метки, поля ввода и т.п. Необходимые вопросы анкеты и поля ввода разбиты на 4 части, каждая часть размещается на отдельной панели. Также необходимо реализовать сохранение результатов в SQL таблицу, происходящее при нажатии соответствующей кнопки.Для сохранения результатов анкетирования, в среде Microsoft SQL Server Management Studio создали базу Anketa.Согласно изложенному выше плану работы приложения был создан модуль Mform, в котором описана форма MAINFORM (рисунок 2). На этой форме размещены 4 панели,содержащие элементы для ввода данных анкетирования. Вкладка «Справка» имеет один пункт: «О программе»-показывает модальное окно ABOUTFORM с информацией о программе и ее авторе(рисунок 3). При работе с первой панелью кнопка «Назад» в свойстве vision имеет значение false, при работе с остальными панелями true. Также описана процедура: procedure BDATAKEYPRESS(Key:Char):Char; - возвращает цифру, передаваемую как параметр, если она входит в алфавит, или же является специальным знаком клавиши удаления #8, иначе возвращает “пустой” символ #0 .Данная процедура используются для предотвращения некорректного ввода в поле TEDIT (например, при вводе букв в поле ввода даты рождения анкетируемого).В ходе курсовой работы было разработано приложение, позволяющее заносить данные анкетирования в базу данных MS SQL.

План
Оглавление

Введение 2

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

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

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

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

4.1 Таблица SQL 8

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

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

Заключение 14

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

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

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

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

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

2. Разработка клиент-серверных приложений в Delphi А. Шкрыль БХВ-Петербург 2006г

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

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

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

uses

Forms, MAINFORM in "MAINFORM.pas" {Form1}, Unit1 in "Unit1.pas" {ABOUTFORM}, Unit2 in "Unit2.pas" {INFOFORM};

{$R *.res} begin

Application.Initialize;

Application.Title := "Анкета";

Application.CREATEFORM(TFORM1, Form1);

Application.CREATEFORM(TABOUTFORM, ABOUTFORM);

Application.Run;

end. unit MAINFORM;

interface uses

Windows, Messages, SYSUTILS, Variants, Classes, Graphics, Controls, Forms, Dialogs, STDCTRLS, Grids, DBGRIDS, DB, ADODB, EXTCTRLS, COMCTRLS, Menus, Vcl.XPMAN;

type

TFORM1 = class(TFORM)

DATASOURCE1: TDATASOURCE;

ADO: TADOQUERY;

DBGRID1: TDBGRID;

SAVEBUTTON: TBUTTON;

Label2: TLABEL;

Label3: TLABEL;

Label4: TLABEL;

NAMEEDIT: TEDIT;

LNAMEEDIT: TEDIT;

MNAMEEDIT: TEDIT;

POLGROUP: TRADIOGROUP;

Bdata: TLABELEDEDIT;

Professia: TLABELEDEDIT;

TIMEGAMEL: TLABEL;

TIMEGAMEBOX: TCOMBOBOX;

OPITGAMEL: TLABEL;

OPITGAMEBOX: TCOMBOBOX;

PLATFORMERL: TLABEL;

PLATFORMERBOX: TCOMBOBOX;

CONFIGPCEDIT: TRICHEDIT;

CONFIGPCL: TLABEL;

Game: TLABELEDEDIT;

GAMEINFOEDIT: TRICHEDIT;

GAMEINFOL: TLABEL;

DONATBOX: TCOMBOBOX;

DONATL: TLABEL;

FILMEDIT: TLABELEDEDIT;

INFOEDIT: TRICHEDIT;

Info: TLABEL;

OSL: TLABEL;

OSBOX: TCOMBOBOX;

GANRGAME: TLABELEDEDIT;

Panel1: TPANEL;

PRISTAVKAGROUP: TRADIOGROUP;

Panel2: TPANEL;

Panel3: TPANEL;

Panel4: TPANEL;

PRIORBUTTON: TBUTTON;

NEXTBUTTON: TBUTTON;

MAINMENU1: TMAINMENU;

Af1: TMENUITEM;

N1: TMENUITEM;

N2: TMENUITEM;

N3: TMENUITEM;

N4: TMENUITEM;

N5: TMENUITEM;

procedure PRIORBUTTONCLICK(Sender: TOBJECT);

procedure NEXTBUTTONCLICK(Sender: TOBJECT);

procedure FORMCREATE(Sender: TOBJECT);

procedure SAVEBUTTONCLICK(Sender: TOBJECT);

procedure BDATAKEYPRESS(Sender: TOBJECT; var Key: Char);

procedure N5Click(Sender: TOBJECT);

procedure N1Click(Sender: TOBJECT);

procedure N3Click(Sender: TOBJECT);

procedure N2Click(Sender: TOBJECT);

private

{ Private declarations } public id: integer;

end;

var

Form1: TFORM1;

l:integer; //номер активной панели

POVTORSAVE:boolean;

implementation uses Unit1, Unit2;

{$R *.dfm} function DEFINITIONID: integer;//возвращает значение следующего ID анкеты begin

Form1.ado.SQL.Clear;

Form1.ado.SQL.Text:="select id from table_1 ORDER BY id ASC;";

Form1.ado.open;

Form1.ado.Last;

try result:=Form1.ado.Fields[0].value 1;

except result:=1;

end;

end;

procedure NEWANKETA;

begin

Form1.FORMCREATE(Form1);

with Form1 do begin

NAMEEDIT.Clear;

LNAMEEDIT.Clear;

MNAMEEDIT.Clear;

POLGROUP.ITEMINDEX:=-1;

professia.Clear;

Bdata.Clear;

GANRGAME.Clear;

TIMEGAMEBOX.ITEMINDEX:=-1;

OPITGAMEBOX.ITEMINDEX:=-1;

Donatbox.ITEMINDEX:=-1;

Platformerbox.ITEMINDEX:=-1;

PRISTAVKAGROUP.ITEMINDEX:=-1;

Osbox.ITEMINDEX:=-1;

Game.Clear;

FILMEDIT.Clear;

CONFIGPCEDIT.Clear;

GAMEINFOEDIT.Clear;

INFOEDIT.Clear;

Form1.NEXTBUTTON.Visible:=true;

form1.savebutton.Enabled:=false;

end;

end;

procedure Smena(l:integer);

begin case l of

1: begin

Form1.Panel1.Visible:=true;

Form1.Panel2.Visible:=false;

Form1.Panel3.Visible:=false;

Form1.Panel4.Visible:=false;

Form1.PRIORBUTTON.Visible:=false;

Form1.NEXTBUTTON.Visible:=true;

end;

2: begin

Form1.Panel1.Visible:=false;

Form1.Panel2.Visible:=true;

Form1.Panel3.Visible:=false;

Form1.Panel4.Visible:=false;

Form1.PRIORBUTTON.Visible:=true;

Form1.NEXTBUTTON.Visible:=true;

end;

3: begin

Form1.Panel1.Visible:=false;

Form1.Panel2.Visible:=false;

Form1.Panel3.Visible:=true;

Form1.Panel4.Visible:=false;

Form1.PRIORBUTTON.Visible:=true;

Form1.NEXTBUTTON.Visible:=true;

end;

4: begin

Form1.Panel1.Visible:=false;

Form1.Panel2.Visible:=false;

Form1.Panel3.Visible:=false;

Form1.Panel4.Visible:=true;

Form1.PRIORBUTTON.Visible:=true;

Form1.NEXTBUTTON.Visible:=false;

form1.savebutton.Enabled:=true;

end;

end;

end;

procedure TFORM1.PRIORBUTTONCLICK(Sender: TOBJECT);

begin if l>1 then l:=l-1;

smena(l);

end;

procedure TFORM1.NEXTBUTTONCLICK(Sender: TOBJECT);

var error:boolean;

begin error:=false;

if l<4 then l:=l 1;

case l of

2: begin if Polgroup.ITEMINDEX=-1 then begin SHOWMESSAGE("Вы не указали пол!"); error:=true; end;

try

STRTODATETIME(Bdata.Text);

except messagebox(0,"Неверный формат даты!" #13#10 "Пример правильного ввода " #13#10 "01.01.2012" ,"Неверная дата",MB_Ok or MB_ICONERROR);

error:=true;

Bdata.Clear;

end;

if error then l:=1;

end;

3:begin if TIMEGAMEBOX.ITEMINDEX=-1 then begin SHOWMESSAGE("Вы не указали сколько времени тратите на игры!"); error:=true; end;

if OPITGAMEBOX.ITEMINDEX=-1 then begin SHOWMESSAGE("Вы не указали как вы оцениваете свой игровой опыт!"); error:=true; end;

if Platformerbox.ITEMINDEX=-1 then begin SHOWMESSAGE("Вы не указали как относитесь к платформерам!"); error:=true; end;

if Pristavkagroup.ITEMINDEX=-1 then begin SHOWMESSAGE("Вы не указали есть ли у вас приставка!");error:=true; end;

if error then l:=2;

end;

4:begin if Osbox.ITEMINDEX=-1 then begin SHOWMESSAGE("Вы не указали свою ОС!"); error:=true; end;

if error then l:=3;

end;

end;

if Not error then smena(l);

end;

procedure TFORM1.FORMCREATE(Sender: TOBJECT);

begin

Panel1.Visible:=true;

Panel2.Visible:=false;

Panel3.Visible:=false;

Panel4.Visible:=false;

PRIORBUTTON.Visible:=false;

POVTORSAVE:=false;

l:=1;

form1.savebutton.Enabled:=false;

end;

procedure TFORM1.SAVEBUTTONCLICK(Sender: TOBJECT);

var error: boolean;

begin error:=false;

if 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;

if (not error) then begin try id:=DEFINITIONID;

ado.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)";

ado.SQL.add(" values (:ID, :name, :fam,:otch,:pol,:datar,:professia,:TIMEGAME,:OPITGAME, :GANRGAME, :Platformer, :OS, :CONFIGPC, :Pristavka, :Game, :GAMEINFO, :Donat, :Film, :Info)");

ado.Parameters.PARAMBYNAME("name").value:=NAMEEDIT.Text;

ado.Parameters.PARAMBYNAME("fam").value:=LNAMEEDIT.Text;

ado.Parameters.PARAMBYNAME("otch").value:=MNAMEEDIT.Text;

ado.Parameters.PARAMBYNAME("pol").value:=POLGROUP.ITEMINDEX;

ado.Parameters.PARAMBYNAME("professia").value:=professia.Text;

ado.Parameters.PARAMBYNAME("DATAR").value:=formatdatetime("yyyy/mm/dd",STRTODATETIME(Bdata.Text));

ado.Parameters.PARAMBYNAME("GANRGAME").value:=GANRGAME.Text;

ado.Parameters.PARAMBYNAME("TIMEGAME").value:=TIMEGAMEBOX.ITEMINDEX;

ado.Parameters.PARAMBYNAME("OPITGAME").value:=OPITGAMEBOX.ITEMINDEX;

ado.Parameters.PARAMBYNAME("Donat").value:=Donatbox.ITEMINDEX;

ado.Parameters.PARAMBYNAME("Platformer").value:=Platformerbox.ITEMINDEX;

ado.Parameters.PARAMBYNAME("Pristavka").value:=PRISTAVKAGROUP.ITEMINDEX;

ado.Parameters.PARAMBYNAME("OS").value:=OSBOX.items[Osbox.ITEMINDEX];

ado.Parameters.PARAMBYNAME("Game").value:=Game.Text;

ado.Parameters.PARAMBYNAME("film").value:=FILMEDIT.Text;

ado.Parameters.PARAMBYNAME("CONFIGPC").value:=CONFIGPCEDIT.Text;

ado.Parameters.PARAMBYNAME("GAMEINFO").value:=GAMEINFOEDIT.Text;

ado.Parameters.PARAMBYNAME("info").value:=INFOEDIT.Text;

ado.Parameters.PARAMBYNAME("id").value:=id;

ado.EXECSQL; POVTORSAVE:=true;

messagebox(0,"Данные успешно сохранены!","Сохранение",MB_Ok or MB_ICONINFORMATION);

except

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

end;

end else messagebox(0,"Данные не сохранены","Сохранение",MB_Ok or MB_ICONERROR);

end;

procedure TFORM1.BDATAKEYPRESS(Sender: TOBJECT; var Key: Char);

const abc: set of char=["0".."9",#8,"."];

begin if (not(key in abc)) then key:=#0;

end;

procedure TFORM1.N5Click(Sender: TOBJECT);

begin

ABOUTFORM.SHOWMODAL;

end;

procedure TFORM1.N1Click(Sender: TOBJECT);

begin

NEWANKETA;

end;

procedure TFORM1.N3Click(Sender: TOBJECT);

begin

Form1.Close;

end;

procedure TFORM1.N2Click(Sender: TOBJECT);

begin

Application.CREATEFORM(TINFOFORM, INFOFORM);

INFOFORM.SHOWMODAL;

end;

end. unit Unit1;

interface uses

Windows, Messages, SYSUTILS, Variants, Classes, Graphics, Controls, Forms, Dialogs, STDCTRLS, jpeg, EXTCTRLS;

type

TABOUTFORM = class(TFORM)

Label1: TLABEL;

Label2: TLABEL;

Label3: TLABEL;

Button1: TBUTTON;

Image1: TIMAGE;

private

{ Private declarations } public

{ Public declarations } end;

var

ABOUTFORM: TABOUTFORM;

implementation

{$R *.dfm} end. unit Unit2;

interface uses

Windows, Messages, SYSUTILS, Variants, Classes, Graphics, Controls, Forms, Dialogs, STDCTRLS, Grids, DB, ADODB, DBGRIDS;

type

TINFOFORM = class(TFORM)

INFOGRID: TSTRINGGRID;

PRIORBUTTON: TBUTTON;

NEXTBUTTON: TBUTTON;

DATASOURCE1: TDATASOURCE;

DBGRID1: TDBGRID;

ADO: TADOQUERY;

Label1: TLABEL;

CLOSEBUTTON: TBUTTON;

Label2: TLABEL;

Button1: TBUTTON;

Label3: TLABEL;

edit1: TEDIT;

procedure FORMCREATE(Sender: TOBJECT);

procedure PRIORBUTTONCLICK(Sender: TOBJECT);

procedure NEXTBUTTONCLICK(Sender: TOBJECT);

procedure CLOSEBUTTONCLICK(Sender: TOBJECT);

procedure Button1Click(Sender: TOBJECT);

private

{ Private declarations } public

{ Public declarations } end;

var

INFOFORM: TINFOFORM;

implementation uses Mainform;

{$R *.dfm} procedure SELECTINFO;

begin with INFOFORM do begin

INFOGRID.Cells[1,0]:=ado.FIELDBYNAME("id").ASSTRING;

INFOGRID.Cells[1,1]:=ado.FIELDBYNAME("name").ASSTRING;

INFOGRID.Cells[1,2]:=ado.FIELDBYNAME("fam").ASSTRING;

INFOGRID.Cells[1,3]:=ado.FIELDBYNAME("Otch").ASSTRING;

if ado.FIELDBYNAME("pol").ASBOOLEAN then INFOGRID.Cells[1,4]:="Женский" else INFOGRID.Cells[1,4]:="Мужской";

INFOGRID.Cells[1,5]:=ado.FIELDBYNAME("professia").ASSTRING;

INFOGRID.Cells[1,6]:=ado.FIELDBYNAME("DATAR").Asstring;

INFOGRID.Cells[1,7]:=Form1.TIMEGAMEBOX.Items[ado.FIELDBYNAME("TIMEGAME").ASINTEGER];

INFOGRID.Cells[1,8]:=Form1.OPITGAMEBOX.Items[ado.FIELDBYNAME("OPITGAME").ASINTEGER];

INFOGRID.Cells[1,9]:=ado.FIELDBYNAME("GANRGAME").ASSTRING;

INFOGRID.Cells[1,10]:=Form1.PLATFORMERBOX.Items[ado.FIELDBYNAME("Platformer").Asinteger];

INFOGRID.Cells[1,11]:=ado.FIELDBYNAME("OS").ASSTRING;

INFOGRID.Cells[1,12]:=ado.FIELDBYNAME("CONFIGPC").ASSTRING;

INFOGRID.Cells[1,13]:=Form1.PRISTAVKAGROUP.Items[ado.FIELDBYNAME("Pristavka").Asinteger];

INFOGRID.Cells[1,14]:=ado.FIELDBYNAME("Game").ASSTRING;

INFOGRID.Cells[1,15]:=ado.FIELDBYNAME("GAMEINFO").ASSTRING;

INFOGRID.Cells[1,16]:=Form1.DONATBOX.Items[ado.FIELDBYNAME("Donat").ASINTEGER];

INFOGRID.Cells[1,17]:=ado.FIELDBYNAME("Film").ASSTRING;

INFOGRID.Cells[1,18]:=ado.FIELDBYNAME("Info").ASSTRING;

end;

end;

procedure TINFOFORM.FORMCREATE(Sender: TOBJECT);

begin try

ADO.SQL.Clear;

ADO.sql.Text:="select * from Table_1 order by id asc;";

ADO.Open;

PRIORBUTTON.enabled:=true;

NEXTBUTTON.enabled:=true;

ADO.last;

label2.Caption:="Всего анкет: " ado.FIELDBYNAME("id").ASSTRING " ";

ado.First;

infogrid.COLWIDTHS[0]:=220;

infogrid.COLWIDTHS[1]:=680;

INFOGRID.Cells[0,0]:="Номер анкеты";

INFOGRID.Cells[0,1]:="Имя";

INFOGRID.Cells[0,2]:="Фамилия";

INFOGRID.Cells[0,3]:="Отчество";

INFOGRID.Cells[0,4]:="Пол";

INFOGRID.Cells[0,5]:="Профессия";

INFOGRID.Cells[0,6]:="Дата рождения";

INFOGRID.Cells[0,7]:="Время затрачиваемое на игры";

INFOGRID.Cells[0,8]:="Игровой опыт";

INFOGRID.Cells[0,9]:="Любимый жанр игр";

INFOGRID.Cells[0,10]:="Отношение к платформерам";

INFOGRID.Cells[0,11]:="Операционная система";

INFOGRID.Cells[0,12]:="Конфигурация компьютера";

INFOGRID.Cells[0,13]:="Наличие приставки";

INFOGRID.Cells[0,14]:="Любимая игра";

INFOGRID.Cells[0,15]:="Информация о любимой игре";

INFOGRID.Cells[0,16]:="Трача денег на игры";

INFOGRID.Cells[0,17]:="Любимый фильм";

INFOGRID.Cells[0,18]:="Информация о себе";

SELECTINFO;

except

SHOWMESSAGE("Не найдено данных!");

PRIORBUTTON.Enabled:=false;

NEXTBUTTON.Enabled:=false;

end;

end;

procedure TINFOFORM.PRIORBUTTONCLICK(Sender: TOBJECT);

begin

Ado.prior;

SELECTINFO;

end;

procedure TINFOFORM.NEXTBUTTONCLICK(Sender: TOBJECT);

begin

Ado.next;

SELECTINFO;

end;

procedure TINFOFORM.Button1Click(Sender: TOBJECT);

var i:integer; //счетчик begin i:=1;

ado.Last;

if (strtoint(edit1.text)0) then begin ado.First;

while i<strtoint(edit1.text) do begin ado.Next;

i:=i 1;

end;

SELECTINFO; end else begin

SHOWMESSAGE("Введите правильное значение номера анкеты!");

edit1.clear;

end;

end;

procedure TINFOFORM.CLOSEBUTTONCLICK(Sender: TOBJECT);

begin

INFOFORM.Release;

end;

end.

Размещено на .ru
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?