В организации "Энергосбыт" ведётся реестр поступивших платёжных документов за пользование электроэнергией. В строке реестра указаны номер абонента, фамилия и инициалы, адрес абонента, год и месяц, показания счётчика, дата оплаты, общая сумма оплаты, пеня за просрочку платежа и цена одного киловатт-часа электроэнергии в том месяце, за который произведена оплата. Создать СУБД "Энергосбыт". СУБД должна выдавать следующие сведения: по данным абонента данные об его платежах; список абонентов, имеющих просрочку платежей отсортированный в порядке возрастания пени; список платежей, поступивших в определенном месяце.
Помогите пожалуйста! Завтра сдавать нужно, не сдам допуска на экзамен не будет (
решившиму денег на мобильный закину!!:)
Другие языки программирования и технологии
Помогите решить задачу в паскале
А вот и решение задачки
uses
crt;
type
energosbyt = record
fio: string;
fio_sort: string;
adress: string;
adress1: string;
statement: real;
readout: integer;
date_buy_m: 1..12;
date_buy_y: 1900..2011;
sum: real;
fine: real;
fine_sort: real;
price: real;
end;
var
sub: array[1..100] of energosbyt;
a, n, i: integer;
procedure Prices(var n: integer);
var
i, h: integer;
er, re: string;
begin
repeat ;
clrscr;
writeln('Поиск платежных данных: ');
writeln;
writeln('1. По фамилии и инициалам абонента. ');
writeln('2. По адресу абонента');
writeln('3. Меню');
readln(h);
if h = 1 then
begin
writeln('Введите фамилию и инициалы абонента: ');
readln(er);
re := '';
end;
if h = 2 then
begin
writeln('Введите адрес абонента: ');
readln(re);
er := '';
end;
writeln;
for i := 1 to n do
if (er = sub[ i ].fio ) or (re = sub[ i ].adress ) then
begin
writeln('Абонент ', sub[ i ].fio, ' :');
writeln;
if sub[ i ].date_buy_m < 10 then
writeln('Дата оплаты: 0', sub[ i ].date_buy_m, '.', sub[ i ].date_buy_y)
else
writeln('Дата оплаты: ', sub[ i ].date_buy_m, '.', sub[ i ].date_buy_y);
writeln('Сумма оплаты: ', sub[ i ].sum);
writeln('Пеня: ', sub[ i ].fine);
writeln('Цена: ', sub[ i ].price);
writeln('Показания счетчика: ',sub[ i ].statement);
writeln;
writeln;
end;
if h <> 3 then readln;
until h = 3;
end;
procedure finers(var n: integer);
var
i, j, k, p: integer;
s: string;
x: real;
begin
for i := 1 to n do
sub[ i ].fio_sort := sub[ i ].fio;
for i := 1 to n do
sub[ i ].fine_sort := sub[ i ].fine;
for i := 1 to n do
if sub[ i ].fine_sort > 0 then
begin
k := k + 1;
for p := 1 to n - 1 do
for j := p + 1 to n do
if sub[ p ].fine_sort > sub[ j ].fine_sort then
begin
x := sub[ p ].fine_sort;
s := sub[ p ].fio_sort;
sub[ p ].fine_sort := sub[ j ].fine_sort;
sub[ p ].fio_sort := sub[ j ].fio_sort;
sub[ j ].fine_sort := x;
sub[ j ].fio_sort := s;
end;
end;
writeln;
for i := 1 to k do
if sub[ i ].fine_sort > 0 then writeln('Абонент: ', sub[ i ].fio_sort, ' Пеня: ', sub[ i ].fine_sort);
readln;
end;
procedure payments(var n: integer);
var
month, v: integer;
begin
write('Введите номер месяца: ');
readln(month);
writeln('Список платежей в этом месяце: ');
for v := 1 to n do
if month = sub[ v ].date_buy_m then writeln('Абонент: ', sub[ v ].fio, ' Сумма: ', sub[ v ].sum);
readln;
end;
procedure menu(var a: integer);
begin
repeat ;
clrscr;
writeln('1. Данные о платежах. ');
writeln('2. Список абонентов с просрочкой платежа. ');
writeln('3. Список платежей. ');
writeln('4. Выход. ');
readln(a);
case a of
1: prices(n);
2: finers(n);
3: payments(n);
4: exit;
end;
until a = 4;
end;
begin
write('Введите количество абонентов: ');
readln(n);
for i := 1 to n do
begin
writeln('Введите сведения об ', i, '-м абоненте' );
writeln('Введите фамилию и инициалы: ');
readln(sub[ i ].fio);
writeln('Введите адрес: ');
readln(sub[ i ].adress);
writeln('Введите показания счетчика: ');
readln(sub[ i ].statement);
writeln('Введите дату оплаты: ');
write('Год: ');
readln(sub[ i ].date_buy_y);
write('Месяц: ');
readln(sub[ i ].date_buy_m);
writeln('Сумма оплаты: ');
readln(sub[ i ].sum);
writeln('Введите пеню за просрочку платежа: ');
readln(sub[ i ].fine);
writeln('Введите цену одного килловат-часа электроэнергии: ');
readln(sub[ i ].price);
end;
writeln('Ввод закончен');
writeln;
menu(a);
end.
uses
crt;
type
energosbyt = record
fio: string;
fio_sort: string;
adress: string;
adress1: string;
statement: real;
readout: integer;
date_buy_m: 1..12;
date_buy_y: 1900..2011;
sum: real;
fine: real;
fine_sort: real;
price: real;
end;
var
sub: array[1..100] of energosbyt;
a, n, i: integer;
procedure Prices(var n: integer);
var
i, h: integer;
er, re: string;
begin
repeat ;
clrscr;
writeln('Поиск платежных данных: ');
writeln;
writeln('1. По фамилии и инициалам абонента. ');
writeln('2. По адресу абонента');
writeln('3. Меню');
readln(h);
if h = 1 then
begin
writeln('Введите фамилию и инициалы абонента: ');
readln(er);
re := '';
end;
if h = 2 then
begin
writeln('Введите адрес абонента: ');
readln(re);
er := '';
end;
writeln;
for i := 1 to n do
if (er = sub[ i ].fio ) or (re = sub[ i ].adress ) then
begin
writeln('Абонент ', sub[ i ].fio, ' :');
writeln;
if sub[ i ].date_buy_m < 10 then
writeln('Дата оплаты: 0', sub[ i ].date_buy_m, '.', sub[ i ].date_buy_y)
else
writeln('Дата оплаты: ', sub[ i ].date_buy_m, '.', sub[ i ].date_buy_y);
writeln('Сумма оплаты: ', sub[ i ].sum);
writeln('Пеня: ', sub[ i ].fine);
writeln('Цена: ', sub[ i ].price);
writeln('Показания счетчика: ',sub[ i ].statement);
writeln;
writeln;
end;
if h <> 3 then readln;
until h = 3;
end;
procedure finers(var n: integer);
var
i, j, k, p: integer;
s: string;
x: real;
begin
for i := 1 to n do
sub[ i ].fio_sort := sub[ i ].fio;
for i := 1 to n do
sub[ i ].fine_sort := sub[ i ].fine;
for i := 1 to n do
if sub[ i ].fine_sort > 0 then
begin
k := k + 1;
for p := 1 to n - 1 do
for j := p + 1 to n do
if sub[ p ].fine_sort > sub[ j ].fine_sort then
begin
x := sub[ p ].fine_sort;
s := sub[ p ].fio_sort;
sub[ p ].fine_sort := sub[ j ].fine_sort;
sub[ p ].fio_sort := sub[ j ].fio_sort;
sub[ j ].fine_sort := x;
sub[ j ].fio_sort := s;
end;
end;
writeln;
for i := 1 to k do
if sub[ i ].fine_sort > 0 then writeln('Абонент: ', sub[ i ].fio_sort, ' Пеня: ', sub[ i ].fine_sort);
readln;
end;
procedure payments(var n: integer);
var
month, v: integer;
begin
write('Введите номер месяца: ');
readln(month);
writeln('Список платежей в этом месяце: ');
for v := 1 to n do
if month = sub[ v ].date_buy_m then writeln('Абонент: ', sub[ v ].fio, ' Сумма: ', sub[ v ].sum);
readln;
end;
procedure menu(var a: integer);
begin
repeat ;
clrscr;
writeln('1. Данные о платежах. ');
writeln('2. Список абонентов с просрочкой платежа. ');
writeln('3. Список платежей. ');
writeln('4. Выход. ');
readln(a);
case a of
1: prices(n);
2: finers(n);
3: payments(n);
4: exit;
end;
until a = 4;
end;
begin
write('Введите количество абонентов: ');
readln(n);
for i := 1 to n do
begin
writeln('Введите сведения об ', i, '-м абоненте' );
writeln('Введите фамилию и инициалы: ');
readln(sub[ i ].fio);
writeln('Введите адрес: ');
readln(sub[ i ].adress);
writeln('Введите показания счетчика: ');
readln(sub[ i ].statement);
writeln('Введите дату оплаты: ');
write('Год: ');
readln(sub[ i ].date_buy_y);
write('Месяц: ');
readln(sub[ i ].date_buy_m);
writeln('Сумма оплаты: ');
readln(sub[ i ].sum);
writeln('Введите пеню за просрочку платежа: ');
readln(sub[ i ].fine);
writeln('Введите цену одного килловат-часа электроэнергии: ');
readln(sub[ i ].price);
end;
writeln('Ввод закончен');
writeln;
menu(a);
end.
пиши в личку
Похожие вопросы
- Помогите решить задачи по Паскалю
- помогите решить задачу на паскале: напечатать "столбиком" значения sin2, sin3, ..sin 20.
- Помогите решить задачу в паскале
- Помогите решить задачу на паскале
- Помогите решить задачу в паскале. Задание: Заменить в строке все вхождения "да" на "нет".
- Уважаемые!Помогите решить задачу по Паскалю,пожайлуста!
- Помогите решить задачу (в паскале)!
- Помогите решить задачу в паскале, пожалуйста! !
- помогите решить задачу на паскале
- помогите решить задачу по Паскалю