This commit is contained in:
Oliver Lehmann 1989-10-30 19:31:03 +00:00
parent b51ff19095
commit f4d49cdc07
3 changed files with 393 additions and 0 deletions

View File

@ -0,0 +1,128 @@
# include <stdio.h>
# include "cursor.h"
static int blinking_on;
static int revers_on;
static int underline_on;
static int bold_on;
static int cursor_on;
on_blinking()
{
if (blinking_on++)
return;
printf(ON_BLINKING);
}
off_blinking()
{
if (--blinking_on)
return;
printf(OFF_BLINKING);
}
on_revers()
{
if (revers_on++)
return;
printf(ON_REVERS);
}
off_revers()
{
if (--revers_on)
return;
printf(OFF_REVERS);
}
on_underline()
{
if (underline_on++)
return;
printf(ON_UNDERLINE);
}
off_underline()
{
if (--underline_on)
return;
printf(OFF_UNDERLINE);
}
on_bold()
{
if (bold_on++)
return;
printf(ON_BOLD);
}
off_bold()
{
if (--bold_on)
return;
printf(OFF_BOLD);
}
cursor(line, col)
register int line;
register int col;
{
printf(CURSOR, line, col);
}
on_cursor()
{
if (cursor_on++)
return;
printf(ON_CURSOR);
}
off_cursor()
{
if (--cursor_on)
return;
printf(OFF_CURSOR);
}
cls(line1, col1, line2, col2)
register int line1;
register int col1;
register int line2;
register int col2;
{
printf(CLS, line1, col1, line2, col2);
}
box(line1, col1, line2, col2)
int line1;
int col1;
int line2;
int col2;
{
register int l;
register int c;
cls(line1, col1, line2, col2);
off_cursor();
on_revers();
on_blinking();
for (l = line1; l <= line2; l++)
{
cursor(l, col1);
if (l == line1 || l == line2)
for (c = col1; c <= col2; c++)
putchar(' ');
else
{
putchar(' ');
cursor(l, col2);
putchar(' ');
}
}
off_blinking();
off_revers();
on_cursor();
}

View File

@ -0,0 +1,61 @@
# include <stdio.h>
# define PR_BGN 15
# define PR_END 25
static int print;
static int abort;
pr_init()
{
register int i;
abort = 0;
for (i = PR_BGN; i < PR_END; i++)
cls(i, 1, i, 47);
cursor(print = PR_BGN, 1);
on_bold();
}
pr_line()
{
register int i;
if (print == PR_END)
{
print = PR_BGN;
if (go_on())
{
abort = 1;
return (1);
}
for (i = PR_BGN; i < PR_END; i++)
cls(i, 1, i, 47);
}
cursor(print, 1);
print++;
return (0);
}
pr_end()
{
if (!abort)
go_on();
off_bold();
cls(24, 48, 24, 80);
}
static go_on()
{
register int c;
cursor(24, 48);
on_revers();
printf("continue<eof>/abort<enter>");
off_revers();
printf(" ");
fflush(stdout);
while ((c = getchar()) > 0 && c != '\n')
continue;
return (c > 0);
}

View File

@ -0,0 +1,204 @@
# include <stdio.h>
struct cmd
{
char *cmd_msg;
int (*cmd_func)();
};
extern int relclose();
extern int new_name();
extern int new_vorname();
extern int new_ort();
extern int new_str();
extern int new_bank();
extern int new_kunde();
extern int new_konto();
extern int new_grund();
extern int new_buchung();
extern int auszug();
extern int auszuege();
extern int mahnung();
struct cmd Cmd[] =
{
"Ende", relclose,
"Eingabe Vorname", new_vorname,
"Eingabe Name", new_name,
"Eingabe Strasse", new_str,
"Eingabe Ort", new_ort,
"Eingabe Grund", new_grund,
"Eingabe Bank", new_bank,
"Eingabe Kunde", new_kunde,
"Eingabe Konto", new_konto,
"Eingabe Buchung", new_buchung,
"Ausgabe Kontoauszug", auszug,
"Ausgabe Kontoauszuege", auszuege,
"Mahnungen", mahnung,
};
int Cmds = sizeof Cmd / sizeof (struct cmd);
menue()
{
register struct cmd *c;
register int i;
char buf[36];
try_again:
cls(1, 1, 24, 80);
box(1, 48, Cmds + 4, 80);
on_underline();
cursor(2, 54);
printf(" ");
off_underline();
for (i = 0, c = Cmd; i < Cmds; i++, c++)
{
cursor(i + 3, 50);
on_revers();
printf("%2d", i);
off_revers();
printf(" ");
on_underline();
printf(" %-23s", c->cmd_msg);
off_underline();
}
cursor(1, 1);
on_revers();
printf(" \n");
printf(" Auswahl \n");
printf(" Vorname \n");
printf(" Name \n");
printf(" Strasse \n");
printf(" Ort \n");
printf(" PLZ \n");
printf(" Grund \n");
printf(" Plus \n");
printf(" Bank \n");
printf(" Konto \n");
printf(" Betrag \n");
printf(" ");
off_revers();
input(2, buf);
if ((i = atoi(buf)) >= Cmds)
{
error("ungueltige Auswahl");
goto try_again;
}
cls(25, 1, 25, 80);
c = &Cmd[i];
on_revers();
on_blinking();
cursor(i + 3, 50);
printf("%2d", i);
off_blinking();
off_revers();
(*c->cmd_func)();
if (!i)
{
cls(1, 1, 25, 80);
cursor(1, 1);
exit(0);
}
}
new_datum()
{
extern long datum;
extern long time();
time(&datum);
}
input(line, buf)
int line;
char *buf;
{
register int len;
register int c;
register char *p;
cursor(line, 1);
on_revers();
on_blinking();
putchar(' ');
cursor(line, 11);
putchar(' ');
off_blinking();
off_revers();
cls(line, 13, line, 47);
cursor(line, 13);
on_cursor();
fflush(stdout);
p = buf;
len = 36;
while (--len)
{
if ((c = getchar()) <= 0 || c == '\n')
break;
*p++ = c;
}
*p = 0;
if (c > 0 && c != '\n')
{
cls(24, 1, 24, 80);
cursor(24, 1);
while ((c = getchar()) > 0 && c != '\n')
continue;
cls(24, 1, 24, 80);
}
off_cursor();
cursor(line, 1);
on_revers();
putchar(' ');
cursor(line, 11);
putchar(' ');
off_revers();
return (p - buf);
}
error(msg)
register char *msg;
{
register int i;
extern short Batch;
on_revers();
on_blinking();
if (!Batch)
{
cursor(25, 1);
for (i = 1; i <= 79; i++)
putchar(' ');
cursor(25, 15);
}
printf("%s", msg);
if (Batch)
putchar('\n');
off_blinking();
off_revers();
fflush(stdout);
}
struct byte
{
char byte0;
char byte1;
char byte2;
char byte3;
};
hash_konto(konto)
register struct byte *konto;
{
char b0;
char b1;
b0 = konto->byte0;
b1 = konto->byte1;
konto->byte0 = konto->byte3;
konto->byte1 = konto->byte2;
konto->byte2 = b1;
konto->byte3 = b0;
}