2.4 Структурная и функциональная схема
Рис.1 Структурная схема
Рис.2 Функциональная схема
ЗАКЛЮЧЕНИЕ
При написании данного проекта была достигнута поставленная цель, а именно разработана и полностью сформирована база данных ”учащихся”. В интерфейсе данной программы предусмотрены все необходимые для пользователя пункты главного меню в рамках поставленной задачи проекта. В программе выполнены все требования, предъявленные к программному продукту, с уверенностью можно заявить что цель, поставленная при разработке данной программы, была достигнута. Программа написана на языке программирования Турбо Паскаль.
После тщательного изучения предметной области и задания полученного на данный проект были выдвинуты основные требования к программному продукту, которые в последующем и были реализованы в программе.
Стоит отметить, что данный программный продукт обладает несложным интерфейсом. Благодаря этому качеству, программу сможет использовать каждый пользователь, имеющий простейшие навыки работы на компьютере. А для пользователей умеющих программировать на языке Паскаль программа может послужить базой для написания более сложных систем или стать наглядным пособием написания и использования процедур и функций в данной среде, так как данная программа хорошо демонстрирует практическую реализацию их использования.
CПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
1) Алексеев В. Е., Ваулин А.С., Петрова Г. Б. – Вычислительная техника и программирование. Практикум по программированию: Практ. пособие/ –М.: Высш. шк. , 1991. – 400 с.
2) Абрамов С.А., Зима Е.В. – Начала программирования на языке Паскаль. – М.: Наука, 1987. –112 с.
3) Турчак Л.И. – Основы численных методов – М.: «Наука», 1987-31 с.
4) Вычислительная техника и программирование: Учеб. для техн. вузов/ А.В. Петров, В.Е. Алексеев, А.С. Ваулин и др. – М.: Высш. шк., 1990 – 479 с.
5) Меженный О.А. – самоучитель Turbo Pascal. – М.: 2003-75 с.
6) Марченко А.И., Марченко Л.А. – Программирование в среде Turbo Pascal 7.0 – К.: ВЕК+, М.: Бином Универсал, 1998. – 496 с.
7) Немнюгин С.А. TurboPascal
8) Прайс Д. Программирование на языке паскаль. Практическое руководство.
9) Меженный О.А. – самоучитель Turbo Pascal. – М.: 2003-198 с.
ГРАФИЧЕСКАЯ ЧАСТЬ
Лист 1. Функциональная схема
Лист 2. Структурная схема
ПРИЛОЖЕНИЕ А
ТЕХНИЧЕСКОЕ ЗАДАНИЕ
1 Введение
Настоящее практическое задание распространяется на разработку программы создания и обработки тестовых данных, предназначенной для использования любых пользователей.
Отличительной особенностью данной программной продукции является дополнительная программа, позволяющая изменять вопросы и варианты вопросов тестирования. Оно имеет сравнительно лёгкий пользовательский интерфейс, ориентированный на пользователя, имеющего навыки в работе с вычислительной техникой.
Разрабатываемая программа позволяет легко и просто протестировать пользователя на знание определённой области, заключённой в тестовых вопросах.
2 Основание для разработки
В соответствии с полученным заданием проекта на практику.
3 Назначение
Пользователями данной программы могут выступать: завучи, заведующие кафедры любого направления. Основным назначением данной программы более удобный способ вести личные дела учащихся в тех или иных учебных заведениях.
4 Требование к программе или программному изделию
4.1 Требование к функциональным характеристикам.
4.1.1Программный продукт должен обеспечивать возможность выполнения следующих операций:
-имеются ли однофамильцы;
-имеются ли однофамильцы на одном курсе;
- в каких группах более 10 учащихся;
- на сколько человек больше на I-м курсе, чем на IV-м курсе.
4.1.2. Исходные данные:
-аналитическое задание данных.
4.2. Требования к надёжности программы:
4.2.1. Предусмотреть контроль вводимых данных.
4.2.2. Предусмотреть блокировку некорректных действий пользователя при работе с системой.
4.3 Требования к составу и параметрам технических средств
4.3.1 Система должна работать на IBM совместимых персональных компьютерах.
4.3.2 Минимальная конфигурация:
-тип процессора Pentium;
-объём оперативного запоминающего устройства не менее 16Мб;
-тип монитора VGA или SVGA.
4.4 Требования к информационной программной совместимости
- Система работает под управлением операционных систем семейства Windows (Windows95, Windows98,Windows2000,WindowsNT и т.п.), а также дисковых операционных системах MS-DOS.
5 Требования к программной документации
5.1Разрабатываемые программные модули должны быть самодокументированы, то есть тексты программ должны содержать все необходимые комментарии;
5.2 Разрабатываемая программа должна включать справочную информацию об основных терминах соответствующего раздела программы и подсказки пользователю;
5.3 В состав сопровождающей документации должны входить:
5.3.1 Пояснительная записка на 25-30 листах, содержащая описание разработки и все необходимые комментарии;
5.3.2 Листинг программы;
6 Стадии и этапы разработки
№ этапа | Дата выполнения | Названия этапов |
1 | Изучение предметной области решаемой задачи | |
2 | Общая постановка решаемой задачи | |
3 | Анализ входных и выходных документов | |
4 | Создание окон пользовательского интерфейса | |
5 | Создание кода программы | |
6 | Отладка программы | |
7 | Тестирование программного обеспечения | |
8 | Редактирование всей необходимой документации |
Таблица А1-Стадии и этапы разработки.
ПРИЛОЖЕНИЕ Б
ЛИСТИНГ ПРОГРАММЫ
(Листинг основной программы)
program Baza;
uses crt, REGUNIT;
begin{Baza Dannyh}
zastavka; {Запуск заставки}
user; {Выбор пользователя}
menus; {Открытие меню}
end.{Baza Dannyh}
(Листинг Unit программы)
{******************************************************************}
{ Zastavka - Процедура заставки }
{ Makeramka - Рисование рамок }
{ Lines - Рисование линий }
{ Archieve - Процедура архива }
{ User - Процедура выбора пользователя }
{ Menus - Процедура меню }
{ Password - Процедура запроса пароля, требует только у Админа }
{******************************************************************}
Unit REGUNIT;
Interface
uses crt;
const
illcount=100;
NameProg='Baza dannyh';
PasswordX='password';
Line1='ННННННННННННННННННСННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН';
mmenu:array [1..5] of string[16]=(' Novoe delo ',
' Архив... ',' Поиск... ',' Пользователь...',
' ‚Выход ');
menunew:array [1..2] of string[16]=(' ‘®еа Ёвм ',
' Ћв¬Ґ ');
menuarch:array [1..3] of string[16]=(' ‘®еа Ёвм ',
' ‡ Јаг§Ёвм ',' Ћв¬Ґ ');
menufind:array [1..2] of string[16]=(' Ќ ©вЁ ',
' Ћв¬Ґ ');
menuuser:array [1..2] of string[40]=
(' Ђ¤¬ЁЁбва в®а ',
' Џ®«м§®ў ⥫м ');
simvV : set of char =
['A'..'Z','a'..'z','0'..'9','_','\',':',
'(',')','!','#','%','^','~','-','''','&','@'];
simvN : set of char = ['A'..'Z','a'..'z','Ђ'..'џ',' '..'п'];
simvD : set of char = ['0'..'9','.'];
simvDIG : set of char = ['0'..'9'];
krifind: array [1..8] of string[8]=('number','sur','name','otch',
'dateburn','surdoc','namedoc','otchdoc');
type
ill = record
number: integer;{®¬Ґа Є ав®зЄЁ}
sur: string[20];{д ¬Ё«Ёп}
name: string[20];{Ё¬п}
otch: string[20];{®взҐбвў®}
dateburn: string[20];{¤ в ஦¤ҐЁп}
surdoc: string[20];{д ¬Ё«Ёп ўа з }
namedoc: string[20];{Ё¬п ўа з }
otchdoc: string[20];{®взҐбвў® ўа з }
end;
masi = array[1..illcount] of ill;
fff = file of ill;
max = array[1..3,1..28] of integer;
var
pass, flag, open, admin: boolean;
m: max;
numb, numfind, illind, posx, simv, sim, i: integer;
tempmas: array[1..9] of string;
masill: masi;
fileill: fff;
Procedure menucl;
Procedure Screen(color:byte);
Function GotoCen(s:string):integer;
Procedure lines(color:byte);
Procedure space(n:byte);
Procedure clear;
Procedure MakeRamka(x0,y0:integer; s:string; x,y:integer;color,fon:byte);
Procedure field;
Procedure archieve;
Procedure menuarchh;
Procedure menunewkar;
Procedure menufinder;
Procedure user;
Procedure menus;
Procedure zastavka;
Procedure password;
Implementation
procedure menucl;
var
i:integer;
begin{menucl}
textbackground(blue);
for i:=1 to 20 do
begin
gotoxy(2,i+2);
writeln(' ');
end;
end;{menucl}
Procedure Screen(color:byte);
Var
i:integer;
begin{screen}
textbackGround(color);
for i:=1 to 25 do
writeln(' ');
gotoXY(1,1);
end;{screen}
Function GotoCen(s:string):integer;
begin{gotocen}
GotoCen:=(80-length(s)) div 2;
end;{gotocen}
Procedure lines(color:byte);
var
i:byte;
begin{lines}
textcolor(color);
gotoXY(gotocen(nameprog),1);writeln(NameProg);
write(line1);
for i:=3 to 25 do
begin
gotoxy(19,i);
write('і');
end;
textcolor(yellow);
end;{lines}
Procedure space(n:byte);
Var
i:byte;
begin{space}
for i:=1 to n do
write(' ');
end;{space}
Procedure Clear;
var
x,y:byte;
begin{clear}
textbackground(blue);
For y:=3 to 24 do
For x:=20 to 80 do
Begin
gotoxy(x,y);
write(' ');
end;
end;{clear}
Procedure MakeRamka(x0,y0:integer; s:string; x,y:integer;color,fon:byte);
var
i,j:integer;
begin {MakeRamka}
textbackground(fon);
textcolor(color);
gotoxy(x0,y0);write('Й');
for i:=x0+1 to x-1 do
begin
gotoxy(i,y0);
write('Н');
end;
Write('»');
gotoxy(10+gotocen(s),y0);
textcolor(white);
write(s);
for i:=y0+1 to y-1 do
begin
j:=x0;
textcolor(color);
gotoxy(j,i);
write('є');
textcolor(white);
for j:=x0+1 to x-1 do
write(' ');
TextColor(color);
write('є');
end;
gotoxy(x0,y);
write('И');
for i:=x0+1 to x-1 do
write('Н');
write('ј');
textcolor(yellow);
end; {MakeRamka}
procedure field;
var
i:integer;
begin{field}
MakeRamka(22,3,'Delo uchschegosya',78,24,white,cyan);
textcolor(black);
gotoxy(24,5);
write('№ Dela ');
gotoxy(24,7);
write('” Фамилия ');
gotoxy(24,9);
write('Имя ');
gotoxy(24,11);
write('Отчество ');
gotoxy(24,13);
write('Дата рождения ');
gotoxy(24,15);
write('Familiya kuratora ');
gotoxy(24,17);
write('Imya kuratora ');
gotoxy(24,19);
write('Otchestvo kuratora ');
gotoxy(24,23);
write('Клавиша F8 - Удаление дела');
textbackground(black);
textcolor(white);
for i:=1 to 9 do
begin
gotoxy(50,3+i*2);
write(' ');
end;
end;{field}
procedure archieve;
var
i:integer;{Ї а ¬Ґва жЁЄ« }
begin{archieve}
MakeRamka(22,3,'‘®еа ҐЁҐ/‡ Јаг§Є ',78,24,white,cyan);
textcolor(black);
textbackground(cyan);
gotoxy(30,13);
write('?¬п д ©« ');
{‚лў®¤ ЇаҐ¤гЇаҐ¦¤ҐЁп}
gotoxy(30,15);
write('‚Ё¬ ЁҐ! “Є § ў Ё¬п бгйҐбвўго饣® д ©« ');
gotoxy(30,16);
write('ЇаЁ б®еа ҐЁЁ ¤ ле, ‚л Џ…ђ…‡ЂЏ??…’…');
gotoxy(30,17);
write('ҐЈ® ᮤҐа¦Ё¬®Ґ!');
textbackground(black);
textcolor(white);
gotoxy(40,13);
write(' ');
end;{archieve}
procedure menuarchh;
var
io, pos, i, ii, ind: integer;
ch: char;
s: string;
begin{menuarchh}
s:='';
menucl;
ind:=1;
pos:=41;
ii:=1;
archieve;
repeat
repeat
for i:=1 to 3 do
begin
if i=ind
then
begin
textbackground(white);
textcolor(black);
end
else
begin
textcolor(white);
textbackground(black);
end;
gotoxy(2,i*2+1);
write(menuarch[i]);
end;
ch:=readkey;
gotoxy(30,19);
textbackground(cyan);
write(' ');
textcolor(white);
case ch of
#8:{backspace}
if (s<>'')
then
begin
dec(ii);
delete(s,ii,1);
textbackground(black);
textcolor(white);
gotoxy(40,13);
write(' ');
gotoxy(40,13);
write(s);
end;
#80:
if ind<>3
then
inc(ind);
#72:
if ind<>1
then
dec(ind);
else
if chr(ord(ch)) in simvv
then
if ii<=8
then
begin
gotoxy(40,13);
s:=s+chr(ord(ch));
textbackground(black);
textcolor(white);
write(s);
inc(ii);
end;
end;
until ch=#13;
assign(fileill,s+'.dat');
case ind of
1: begin
rewrite(fileill);
for i:=1 to illcount do
write(fileill,masill[i]);
close(fileill);
ind:=3;
end;
2: begin
{$i-}
reset(fileill);
io:=ioresult;
{$i+}
If io = 0
then
begin
for i:=1 to illcount do
read(fileill,masill[i]);
close(fileill);
end;
end;
end;
if (ind = 2)
then
if (io = 0)
then
ind:=3
else
begin
textcolor(red);
textbackground(cyan);
gotoxy(30,19);
write('” ©« Ґ ©¤Ґ!');
end;
until ind=3;
clear;
end;{menuarchh}
procedure menunewkar;
var
numerr, tmp, code,ii, posy, i, ind:integer;
ch:char;
tempm:array [1..9] of string[20];
s,ss:string[20];
sd: char;
errd, flagg:boolean;
begin{menunewkar}
menucl;
ind:=1;
field;
posy:=1;
ii:=1;
s:='';
if flag
then
numb:=numfind
else
for i:=illcount downto 1 do
if (masill[i].number = 0)
then
numb:=i;
{+++++++++++++++++++++}
gotoxy(50,posy*2+3);
write(numb);
if flag
then
begin
str(numb,ss);
tempm[1]:=ss;
tempm[2]:=masill[numb].sur;
tempm[3]:=masill[numb].name;
tempm[4]:=masill[numb].otch;
tempm[5]:=masill[numb].dateburn;
tempm[6]:=masill[numb].surdoc;
tempm[7]:=masill[numb].namedoc;
tempm[8]:=masill[numb].otchdoc;
for i:=1 to 8 do
begin
gotoxy(50,i*2+3);
write(' ');
gotoxy(50,i*2+3);
write(tempm[i]);
end;
end
else
begin
tempm[1]:='';
tempm[2]:='';
tempm[3]:='';
tempm[4]:='';
tempm[5]:='';
tempm[6]:='';
tempm[7]:='';
tempm[8]:='';
tempm[9]:='';
end;
repeat
repeat
for i:=1 to 2 do
begin
if i=ind
then
begin
textbackground(white);
textcolor(black);
end
else
begin
textcolor(white);
textbackground(black);
end;
gotoxy(2,i*2+1);
write(menunew[i]);
end;
gotoxy(50,posy*2+5);
ch:=readkey;
errd:=false;
case ch of
#66:
if admin
then
begin
masill[numb].number:=0;
masill[numb].sur:='';
masill[numb].name:='';
masill[numb].otch:='';
masill[numb].dateburn:='';
masill[numb].surdoc:='';
masill[numb].namedoc:='';
masill[numb].otchdoc:='';
ch:=#13;
ind:=2;
end;
#9: begin
textbackground(black);
textcolor(white);
s:='';
if posy = 8
then
posy:=1
else
inc(posy);
ii:=1;
end;
#83: {delete}
if admin
then
{if ch=chr(0)
{ then }
begin
gotoxy(50,posy*2+5);
write(' ');
s:='';
ii:=1;
end;
#8:{backspase}
if admin
then
if (s<>'')
then
begin
dec(ii);
delete(s,ii,1);
textbackground(black);
textcolor(white);
gotoxy(50,posy*2+5);
write(' ');
gotoxy(50,posy*2+5);
write(s);
end;
#80:
if ind=1
then
inc(ind);
#72:
if ind=2
then
dec(ind);
else
if admin
then
begin
if (posy=4) or (posy=8)
then
flagg:=true
else
flagg:=false;
if ((chr(ord(ch)) in simvN) and not(flagg)) or
((chr(ord(ch)) in simvD) and flagg)
then
if ii<=15
then
begin
if flagg
then
begin
case ii of
1,2,4,5,7,8,9,10:
if not((chr(ord(ch)) in simvdig))
then
errd:=true;
3,6:
if (ch<>'.')
then
errd:=true;
else
errd:=true;
end;
end;
if not(errd)
then
begin
s:=s+chr(ord(ch));
tempm[posy+1]:=s;
textbackground(black);
textcolor(white);
gotoxy(50,posy*2+5);
write(' ');
gotoxy(50,posy*2+5);
write(s);
inc(ii);
end;
end;
end;
end;
until ch=#13;
case ind of
1: if admin
then
begin
if flag
then
numb:=numfind;
masill[numb].number:=numb;
masill[numb].sur:=tempm[2];
masill[numb].name:=tempm[3];;
masill[numb].otch:=tempm[4];
masill[numb].dateburn:=tempm[5];
masill[numb].surdoc:=tempm[6];
masill[numb].namedoc:=tempm[7];
masill[numb].otchdoc:=tempm[8];
ind:=2
end;
2: begin
dec(numb);
ind:=2
end;
end;
until ind=2;
tempm[posy+1]:=s;
s:='';
clear;
flag:=false;
end;{menunewkar}
procedure menufinder;{+++++++++++++++++++++++++++++++++++++++++}
var
t, code, tt, tmp, ii, posy, i, ind:integer;
ch:char;
tempm:array [1..8] of string[20];
s:string[20];
flagg:boolean;
begin{menufinder}
menucl;
ind:=1;
field;
posy:=1;
ii:=1;
s:='';
for i:=1 to 8 do
tempm[i]:='';
repeat
repeat
for i:=1 to 2 do
begin
if i=ind
then
begin
textbackground(white);
textcolor(black);
end
else
begin
textcolor(white);
textbackground(black);
end;
gotoxy(2,i*2+1);
write(menufind[i]);
end;
gotoxy(50,posy*2+3);
ch:=readkey;
case ch of
#9:
begin
s:='';
if posy = 9
then
posy:=1
else
inc(posy);
for tmp:=1 to 9 do
begin
gotoxy(50,tmp*2+3);
write(' ');
end;
ii:=1;
end;
#8:{backspase}
if (s<>'')
then
begin
dec(ii);
delete(s,ii,1);
textbackground(black);
textcolor(white);
gotoxy(50,posy*2+3);
write(' ');
gotoxy(50,posy*2+3);
write(s);
end;
#80:
if ind=1
then
inc(ind);
#72:
if ind=2
then
dec(ind);
else
begin
if (posy=1) or (posy=5) or (posy=9)
then
flagg:=true
else
flagg:=false;
if ((chr(ord(ch)) in simvN) and not(flagg)) or
((chr(ord(ch)) in simvD) and flagg)
then
if ii<=15
then
begin
gotoxy(50,posy*2+3);
s:=s+chr(ord(ch));
textbackground(black);
textcolor(white);
write(s);
inc(ii);
end;
end;
end;
until ch=#13;
if ind=1
then
begin
MakeRamka(22,3,'‘ЇЁб®Є ©¤Ґле:',78,24,white,cyan);
tt:=1;
for tmp:=1 to illcount do
begin
flag:=false;
val(s,t,code);
case posy of
1: if ((masill[tmp].number = t) and (t<>0)) then flag:=true;
2: if (masill[tmp].sur = s) then flag:=true;
3: if (masill[tmp].name = s) then flag:=true;
4: if (masill[tmp].otch = s) then flag:=true;
5: if (masill[tmp].dateburn = s) then flag:=true;
6: if (masill[tmp].surdoc = s) then flag:=true;
7: if (masill[tmp].namedoc = s) then flag:=true;
8: if (masill[tmp].otchdoc = s) then flag:=true;
end;
if s=''
then
flag:=false;
if flag
then
begin
textcolor(black);
textbackground(cyan);
gotoxy(40,tt+5);
write('ь: ',masill[tmp].number);
gotoxy(47,tt+5);
write('” ¬Ё«Ёп: '+masill[tmp].sur);
inc(tt);
end;
end;
textcolor(black);
textbackground(cyan);
gotoxy(24,4);
write('‚ўҐ¤ЁвҐ ®¬Ґа п祩ЄЁ:');
textcolor(white);
textbackground(black);
gotoxy(24,5);
write(' ');
gotoxy(24,5);
s:='';
flag:=false;
repeat
ch:=readkey;
if chr(ord(ch)) in simvdig
then
begin
s:=s+chr(ord(ch));
flag:=true;
val(s,t,code);
if ((t>100) or (t<0) or (s='00'))
then
begin
s:='';
gotoxy(24,5);
write(' ');
flag:=false;
end;
gotoxy(24,5);
write(' ');
gotoxy(24,5);
write(s);
end;
until ((ch=#13) or (ch=#27));
if ch=#27
then
begin
ind:=2;
flag:=false
end
else
if ((ch=#13) and flag)
then
begin
ind:=2;
val(s,t,code);
numfind:=t;
end;
end;
until ind=2;
clear;
end;{menufinder}
procedure user;
var
ind:shortint;
ch:char;
begin {user}
ind:=1;
MakeRamka(22,8,'‚лЎҐаЁвҐ Ї®«м§®ў ⥫п:',78,13,white,cyan);
repeat
for i:=1 to 2 do{Їа®аЁб®ўлў Ґ¬ ЇгЄвл ¬Ґо ўлЎ®а }
begin
if i=ind
then
begin
textcolor(black);
textbackground(white)
end
else
begin
textcolor(white);
textbackground(black)
end;
gotoxy(30,9+i);
write(menuuser[i]);
end;
ch:=readkey;
if ((ch=#80) and (ind=1))
then
inc(ind);
if ((ch=#72) and (ind=2))
then
dec(ind);
until ch=#13;{ ¦ в ‚‚Ћ„}
if ind=1
then
password
else
admin:=false;
clear;
end; {user}
procedure menus;
var
i, ind:integer;
ch:char;
begin{menus}
flag:=false;
ind:=1;
menucl;
numb:=0;
repeat
repeat
for i:=1 to 5 do
begin
if i=ind
then
begin
textbackground(white);
textcolor(black);
end
else
begin
textcolor(white);
textbackground(black);
end;
gotoxy(2,i*2+1);
write(mmenu[i]);
end;
ch:=readkey;
if ((ch=#80) and (ind<>5))
then
inc(ind);
if ((ch=#72) and (ind<>1))
then
dec(ind);
until ch=#13;
case ind of
1: if admin
then
menunewkar;
2: if admin
then
menuarchh;
3: menufinder;
4: user;
end;
if flag then
menunewkar;
until ind=5;
end;{menus}
procedure zastavka;
var
mart, mart2: boolean;
schmart: integer;
begin{zastavka}
mart:=false;
mart2:=false;
schmart:=0;
TextBackGround(Black);
TextColor(Green);
Randomize;
Clrscr;
sim:=0;
repeat
if schmart=80 then mart:=true;
if schmart=100 then mart2:=true;
if schmart=200 then
begin
mart:=false;
mart2:=false;
schmart:=0;
end;
if sim<25 then
begin
repeat
posx:=random(27)+1
until m[1,posx]=0;
if mart
then
case posx of
9: simv:=84;
10, 23: simv:=72;
11: simv:=69;
12: simv:=95;
13: simv:=66;
14, 16: simv:=65;
15: simv:=90;
17, 18, 19: simv:=33;
else
simv:=random(24)+97
end
else
simv:=random(24)+97;
m[1,posx]:=posx;
m[2,posx]:=simv;
m[3,posx]:=m[3,posx]+1;
sim:=sim+1;
end;
delay(7000);
for i:=1 to 27 do
begin
if m[1,i]<>0
then
if not((m[3,i]=12) and mart2 and (m[1,i]>8) and (m[1,i]<20))
then
begin
gotoxy(m[1,i]*3-2,m[3,i]);
write(chr(m[2,i]));
gotoxy(m[1,i]*3-2,m[3,i]-1);
write(' ');
gotoxy(m[1,i]*3-2,m[3,i]);
m[3,i]:=m[3,i]+1;
end;
if m[3,i]>25
then
begin
m[1,i]:=0;
m[2,i]:=0;
m[3,i]:=0;
gotoxy(m[1,i]*3-2,m[3,i]);
write(chr(m[2,i]));
sim:=sim-1;
end;
end;
inc(schmart);
until keypressed;
screen(blue);
lines(white);
end;{zastavka}
procedure password;
var
s:string[16];
i,ii:integer;
ch:char;
begin{password}
MakeRamka(22,8,'‚ўҐ¤ЁвҐ Ї а®«м ¤«п ¤®бвгЇ Є Ў §Ґ ¤ ле:',78,14,white,cyan);
textcolor(white);
textbackground(black);
gotoxy(42,11);
writeln(' ');
gotoxy(42,11);
ii:=0;
s:='';
admin:=false;
repeat
ch:=readkey;
case ch of
#72:;
#75:;
#77:;
#80:;
#8:{backspase}
if (s<>'')
then
begin
delete(s,ii,1);
dec(ii);
textbackground(black);
textcolor(white);
gotoxy(42,11);
write(' ');
gotoxy(42,11);
for i:=1 to ii do
write('*');
end;
else
if (chr(ord(ch)) in simvV)
then
if ii<=15
then
begin
gotoxy(42,11);
s:=s+chr(ord(ch));
textbackground(black);
textcolor(white);
inc(ii);
for i:=1 to ii do
write('*');
end;
end;
until ((ch=#13) or (ch=#27));
if ch=#27 { ¦ в Esc}
then
admin:=false
else
if s=PasswordX
then
admin:=true
else
begin
s:='';
textcolor(red);
textbackground(cyan);
gotoxy(42,13);
write('‚ўҐ¤Ґ ҐўҐал© Ї а®«м!');
gotoxy(42,11);
textcolor(white);
textbackground(black);
write(' ');
gotoxy(42,11);
ch:=readkey;
password;
end;
clear;
end;{password}
ПРИЛОЖЕНИЕ В
ПРИМЕРЫ ПРОГРАММЫ
Рис.1 Пример заставки, при её создании использовалась таблица ASCII
Рис.2 Пример защиты программы паролем ( по умолчанию: password )
Рис.3 Пример меню программы
Рис.4 Создание нового дела учащегося
Рис.5 Пример Сохранения\Загрузки архива
Рис.6 Пример Поиска по различным критериям, в данном случае по фамилии куратора
Рис.7 Пример результата поиска учащегося по какой либо из критерий
Рис.8 Пример смены пользователя, например из «Пользователя» в «Администратора» после чего программа потребует пароль
ПРИЛОЖЕНИЕ Г
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
Запускаете файл Reg.exe, при запуске будет запущена заставка программы - нажмите любую клавишу для продолжения.
Далее выйдет окно запроса пароля (или выбора пользователя): а) Введите пароль для выбора учётной записи «Администратор» (по умолчанию:password); б) нажмите клавишу “Esc” для выбора учётной записи «Пользователь».
Далее следует меню, состоящее из подпунктов: Новое дело, Архив, Поиск, Выбор пользователя, Выход. Если будет выбран «Администратор», тогда вы можете завести новые дела на учащихся, сохранять изменение (создавать) базы данных или загружать уже существующие базы, далее можете воспользоваться поиском тех или иных учащихся для удаления или корректировки данных, выбор пользователя – замена пользователя, допустим с «Администратора» на «Пользователя», выход – из данной программы. Клавиши и подпункты: (для перемещения по подпунктам используются клавиши: Вверх, влево, вправо, вниз. Для перемещения по ячейкам данных используется клавиша «TAB». Для удаления конкретного дела учащегося используйте клавишу «F8». Клавиша для принятия «Enter».
... основании данных содержащихся в карточке клиента. - Подпрограмма редактирования таблиц служит для изменения данных в таблицах о стоимости на производство работ и цен на материалы. С помощью этой подпрограммы можно вносить дополнения ко всем базам данных содержащимся в разработке. Алгоритм работы этой подпрограммы показан на рис. 2.4. ...
... данных, подключает библиотеку Borland Database Engine (BDE), которая, в свою очередь, использует конфигурационный файл, содержащий информацию о всех зарегистрированных в системе псевдонимах. Псевдоним базы данных может быть создан (зарегистрирован) при помощи утилиты BDE Administrator. Эта же утилита позволяет изменить каталог, связанный с псевдонимом. База данных — это набор файлов (таблиц), в ...
... сущностей реализуется с помощью отношения. Мощность связи – один-ко-многим (1: М). 1 М М 1 Взаимодействие сущностей 2.2. Связи между сущностями инфологической модели Разработку информационного обеспечения АРМ проведем на базе системы управления базами данных (СУБД) Access XP из состава выбранного интегрированного пакета Microsoft Office XP. СУБД Access предназначена для ...
... компиляция концептуальной модели предметной области в схему БД). Второй вариант - прямая реализация СУБД, основанная на какой либо семантической модели данных. 2. Создание базы данных «Деканат: дистанционного обучения КТИ» 2.1 Краткая характеристика предметной области Предполагаемый деканат дистанционного образования Калмыцкого Технологического Института, именуемый в дальнейшем "ДДО КТИ ...
0 комментариев