Query1.Next;
n:=n+1;
end;
//Переходим на следующую группу
Query2.Next;
end;
//Переходим на следующий факультет
Query3.Next;
end;
//Возвращаемся к началу БД студенты
Table1.First;
//Удаляем все записи, кроме недавно добавленных
for i:=1 to n do
Table1.Delete;
2.5 Разработка средств редактирования БД
Также в курсовом проекте предусмотрено добавление и удаление студентов, а также добавление и удаление групп.
Добавление студентов осуществляется в новом окне, а сама процедура добавления заключается в нижеприведенном коде:
//Добавляем запись, поля которой соответствуют текущим значениям 3-х списков и полю Edit1 вконецБД
Form1.Table1.AppendRecord([1,Edit1.Text,ComboBox1.Items[ComboBox1.ItemIndex],ComboBox2.Items[ComboBox2.ItemIndex],ComboBox3.Items[ComboBox3.ItemIndex]]);
Form1.Table1.First;
Затем заново происходит сортировка и нумерация всей БД, чтобы сразу же поставить новую запись именно в то место таблицы Students, где она должна находиться.
Про удаление студентов будет рассказано ниже. Добавление новых групп и удаление старых – процедуры, надобность в которых возникнет лишь в результате создания новых специальностей на факультете или исчезновения старых. Осуществляются эти процедуры добавлением (удалением) записи в таблице относящейся к конкретному факультету.
2.6 Разработка системы поиска информации в БД
В курсовой работе представлено 2 варианта поиска: простой и расширенный. Простой поиск выводит в DBGrid одну запись, поле ФИО которой равно введенному в строке поиска тексту или же начинается с тех же символов.
Примечательность простого поиска в том, что он ищет все записи, соответствующие запросу, но выводит сначала лишь первую, а по кнопке «Искать далее» переходит на следующую запись. По окончании простого поиска в окне появляются 3 новые кнопки: удалить, отобразить все и добавить информацию. Первая удаляет запись, отображающуюся на данный момент, посредством следующего кода:
DataSource2.DataSet:=Table1;
Vid_DBGrid;
Table1.First;
//Находим в БД студенты удаляемую запись
for i:=1 to Table1.RecordCount do begin
if Table1['ФИО']=Query1['ФИО'] then begin
Query1.Close;
s:=Table1['Группа'];
Table1.Delete;
break;
end;
Table1.Next;
end;
//Для всех записей за ней из той же группы уменьшаем порядковый номер на 1
b:=true;
While b=true do
if Table1['Группа']=s then begin
Table1.Edit;
Table1['Номер']:=Table1['Номер']-1;
Table1.Post;
Table1.Next;
end else
b:=false;
Вторая кнопка отображает в DBGrid вновь все записи, при этом осуществляя Refresh всех записей. Третья кнопка вызывает окно добавления информации (см. рис.1), предназначенное для добавления информации к тем студентам, которые получают более одного поощрения или ездили более, чем в одну поездку. Примечательность работы этого окна заключается том, что в поле Сумма будет выводиться общая сумма, полученная студентом с момента выдачи первого поощрения.
рис.1 Окно добавления информации
2.7 Разработка функции перехода в следующий семестр
Один раз в семестр одно из полей нашей БД (Группа) должно меняться, раз в год меняется еще одно поле (Курс), а те записи, значение поля Группа которых заканчивается буквой “Д” (ЭВМ-1Д), должны удаляться из БД, но сохраняться в еще каком-нибудь месте.
Реализовано это в пункте меню Доплонительно -Перейти в след. Семестр. Выпускники при выполнении этой операции удаляются из БД и записываются в файл с расширением *.csv.
procedure TForm1.N14Click(Sender: TObject);
var
i,j,k:integer;
s,st,str:string;
f:textfile;
begin
if MessageDlg('Выуверены, чтохотитеперевестивсехстудентоввследующийсеместр?',mtConfirmation,[mbOK, mbCancel],0)=mrOK then begin
assignfile(f,'Выпускники'+DateToStr(Now)+'.csv');
rewrite(f);
for i:=1 to Table1.RecordCount do begin
s:=Table1['Группа'];
j:=0;
str:='';
repeat
j:=j+1;
str:=str+s[j];
until s[j]='-';
st:='';
for k:=j+1 to length(s) do
st:=st+s[k];
if st[length(st)]='Д' then begin
st:=inttostr(Table1['Номер'])+';'+Table1['ФИО']+';'+Table1['Факультет']+';';
st:=st+inttostr(Table1['Курс'])+';'+Table1['Группа']+';';
if Table1['Поощрения']=null then
st:=st+';'
else
st:=st+Table1['Поощрения']+';';
if Table1['Датавыдачи']=null then
st:=st+';'
else
st:=st+Table1['Датавыдачи']+';';
if Table1['Сумма']=null then
st:=st+';'
else
st:=st+Table1['Сумма']+';';
if Table1['Примечание']=null then
st:=st+';'
else
st:=st+Table1['Примечание']+';';
if Table1['Поездки']=null then
st:=st+';'
else
st:=st+Table1['Поездки']+';';
if Table1['Примечания']=null then
st:=st+';'
else
st:=st+Table1['Примечания']+';';
writeln(f,st);
Table1.Delete;
end else begin
j:=strtoint(st) div 10;
if j<11 then begin
with Query2 do begin
Close;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM '+Table1['Факультет']+'.db');
SQL.Add('WHERE Группа LIKE "'+Table1['Группа']+'"');
Open;
end;
Table1.Edit;
Table1['Группа']:=str+inttostr(j+1)+s[length(s)];
if (j mod 2)=0 then
Table1['Курс']:=Table1['Курс']+1;
Table1.Post;
if Query2['Группа']<>'' then begin
Query2.Edit;
Query2['Группа']:=Table1['Группа'];
Query2.Post;
end;
Table1.Next;
end else
if j=11 then begin
with Query2 do begin
Close;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM '+Table1['Факультет']+'.db');
SQL.Add('WHERE Группа LIKE "'+Table1['Группа']+'"');
Open;
end;
Table1.Edit;
Table1['Группа']:=str+s[length(s)]+'Д';
if (j mod 2)=0 then
Table1['Курс']:=Table1['Курс']+1;
Table1.Post;
if Query2['Группа']<>'' then begin
Query2.Edit;
Query2['Группа']:=Table1['Группа'];
Query2.Post;
end;
Table1.Next;
end;
end;
end;
closefile(f);
end;
end;
3. Технологическая часть
3.1 Системные требования и характеристики программы
1) ОС: Widows 95, 98, 2000, NT, Me, XP, Vista
2) 128 Мб ОЗУ, 1.7 ГГц
3) мышь, клавиатура
4) наличие установленной программы BDEAdministrator
3.2 Руководство администратора базы данных.
Перед началом работы с базой данных необходимо установить программу BDE Administrator (рис. 1) Эта утилита может устанавливаться как с Delphi так и без него. В этой программе необходимо создать псевдоним базы и указать её местоположение. Для этого заходим в меню Object и выбираем New. В появившемся окне NewDatabaseAlias выбираем Standard и нажимаем OK.
рис. 1 Главное окно программы BDEAdministrator
В левой колонке вводим псевдоним базы данных. В нашем случае это Profkom. Расположение базы нужно указать в поле Path.
3.3 Руководство пользователя
рис.2 Главное окно программы
На рисунке 2 показано главное окно программы. В нём отображаются поля: “Номер”- номер студента по журналу, “ФИО”- фамилия, имя и отчество студента, ”Факультет”- шифр факультета на котором обучается данный студент, ”Курс” – номер курса на котором обучается студент, соответствующий году обучения студента в университете, “Группа”- шифр и номер группы обучающегося, “Поощрения”- различные поощрения, выдаваемые иногородним студентам, учащимся с тяжёлым материальным положением и так далее, “Сумма”- сумма выданного поощрения, “Дата выдачи”- число, месяц и год когда выдано поощрение, “Примечание”- любая дополнительная информация о выданном поощрении, “Поездки”- поездки от профкома студентов КФ МГТУ и “Примечания”- информация о поездке. Любые изменения, производимые в этом окне, будут сохранены автоматически, но только тогда, когда курсор после необходимых изменений будет переставлен на любую другую ячейку.
Добавление студента в базу данных.
рис. 3 Добавление студента в базу данных
Чтобы добавить студента в таблицу необходимо выбрать меню “Правка”- “Добавить”. В появившемся окне (рис. 3) из выплывающего списка нужно выбрать факультет, курс и группу добавляемого студента. В поле ввода нужно вписать фамилию имя и отчество учащегося. После окончания ввода, нужно нажать кнопку “Добавить”.
Простой поиск студента в базе данных
рис. 4 Простой поиск студента в базе данных
Под “простым поиском” понимается поиск только одного человека в базе данных с возможностью изменения данных о нём. Чтобы воспользоваться простым поиском, необходимо нажать “Файл”- “простой поиск” или воспользоваться быстрым запуском. Для быстрого запуска необходимо одновременно нажать кнопки “Ctrl” и ”F”. В появившемся окне (рис. 4) в поле ввода вводится фамилия, имя и отчество студента после чего нужно нажать кнопку “Искать”. После этих действий отобразиться будет выведена вся информация о студенте. Если в поле ввода фамилия имя отчество были введены не полностью (например, только фамилия) и программа вывела не нужного студента то нужно нажимать кнопку “Искать далее” пока нужный студент не будет найден. Если студента с таким ФИО нет в базе, то будет выведено соответствующее окно с надписью “Ничего не найдено” (рис. 5) Чтобы вы вернуться к главному окну программы нужно нажать кнопку “Отобразить все”.
рис. 5 Окно ошибки, возникающее, если студент не был найден
Удаление студента из базы данных:
рис. 6 Удаление студента из базы данных
Удаление студента производиться с помощью простого поиска (“Файл” – “Простой поиск”). В появившемся окне (рис. 4) необходимо ввести фамилию имя и отчество студента. Но если полностью ФИО неизвестно, то можно ввести только фамилию и имя или только фамилию и даже только первые буквы фамилии. Когда нужный студент найден, нажмите “ОК”. Для его удаления необходимо нажать “Удалить” и в появившемся окне подтверждения удаления нажать “ОК”.
Расширенный поиск