Курсовая работа: Разработка программных продуктов
| Petrov P.P. | 2000.00 | 200.62 | 167.50 | 1864.40 |
|_________________________|________|________|________|_________|
| Repina G.G. | 3000.00 | 300.43 | 164.50 | 3150.50 |
|_________________________|________|________|________|_________|
| Sidirov F.F. | 4000.00 | 400.44 | 148.10 | 4256.50 |
|_________________________|________|________|________|_________|
| Kotov K.K. | 1512.00 | 500.67 | 168.40 | 1864.50 |
|_________________________|________|________|________|_________|
| Somova S.S. | 2654.00 | 600.69 | 168.10 | 3264.40 |
|_________________________|________|________|________|_________|
| Dedov D.D. | 1655.00 | 700.56 | 684.10 | 1680.40 |
|_________________________|________|________|________|_________|
| Popova P.P. | 3545.00 | 800.85 | 165.40 | 4210.60 |
|_________________________|________|________|________|_________|
| Sidova S.S. | 1658.00 | 900.75 | 168.10 | 2566.10 |
|_________________________|________|________|________|_________|
| Komov K.K. | 6574.00 | 1000.95 | 642.10 | 7000.60 |
|_________________________|________|________|________|_________|
Sredniy razmer oklada 5519.60
c) Сведенья о сотрудниках с окладом менее 3000 рублей
Svedenia o sotrudnikah s okladom menshe 3000 rub:
Vivod zarplati
____________________________________________________________
| fio | oklad | premi9 | nalog | Itogo |
|_________________________|________|________|________|_________|
| Ivanov I.I. | 1000.00 | 100.53 | 166.50 | 9004.50 |
|_________________________|________|________|________|_________|
| Petrov P.P. | 2000.00 | 200.62 | 167.50 | 1864.40 |
|_________________________|________|________|________|_________|
| Kotov K.K. | 1512.00 | 500.67 | 168.40 | 1864.50 |
|_________________________|________|________|________|_________|
| Somova S.S. | 2654.00 | 600.69 | 168.10 | 3264.40 |
|_________________________|________|________|________|_________|
| Dedov D.D. | 1655.00 | 700.56 | 684.10 | 1680.40 |
|_________________________|________|________|________|_________|
| Sidova S.S. | 1658.00 | 900.75 | 168.10 | 2566.10 |
|_________________________|________|________|________|_________|
d) Сведенья о сотрудниках с премией больше 1000 рублей
Svedenia o sotrudnikah s premiey bolshe 1000 rub:
Vivod zarplati
____________________________________________________________
| fio | oklad | premi9 | nalog | Itogo |
|_________________________|________|________|________|_________|
| Komov K.K. | 6574.00 | 1000.95 | 642.10 | 7000.60 |
|_________________________|________|________|________|_________|
e) Суммарная сумма премий всех сотрудников
Vivod zarplati
____________________________________________________________
| fio | oklad | premi9 | nalog | Itogo |
|_________________________|________|________|________|_________|
| Ivanov I.I. | 1000.00 | 100.53 | 166.50 | 9004.50 |
|_________________________|________|________|________|_________|
| Petrov P.P. | 2000.00 | 200.62 | 167.50 | 1864.40 |
|_________________________|________|________|________|_________|
| Repina G.G. | 3000.00 | 300.43 | 164.50 | 3150.50 |
|_________________________|________|________|________|_________|
| Sidirov F.F. | 4000.00 | 400.44 | 148.10 | 4256.50 |
|_________________________|________|________|________|_________|
| Kotov K.K. | 1512.00 | 500.67 | 168.40 | 1864.50 |
|_________________________|________|________|________|_________|
| Somova S.S. | 2654.00 | 600.69 | 168.10 | 3264.40 |
|_________________________|________|________|________|_________|
| Dedov D.D. | 1655.00 | 700.56 | 684.10 | 1680.40 |
|_________________________|________|________|________|_________|
| Popova P.P. | 3545.00 | 800.85 | 165.40 | 4210.60 |
|_________________________|________|________|________|_________|
| Sidova S.S. | 1658.00 | 900.75 | 168.10 | 2566.10 |
|_________________________|________|________|________|_________|
| Komov K.K. | 6574.00 | 1000.95 | 642.10 | 7000.60 |
|_________________________|________|________|________|_________|
Summa premiy 5506.49
f) Поиск записей файла по сочетанию двух заданных поисковых признаков с помощью “ppoi.dat”:
Нахождение в ведомости зарплаты людей с ФИО Sidova S.S. и окладом 1658.00.
Naiti v baze svedenia lud9h s fio = Sidova S.S. i okladom 1658.00
Vivod zarplati
____________________________________________________________
| fio | oklad | premi9 | nalog | Itogo |
|_________________________|________|________|________|_________|
| Sidova S.S. | 1658.00 | 900.75 | 168.10 | 2566.10 |
|_________________________|________|________|________|_________|
5.2. Блок-схемы индивидуальной части курсовой работы
Блок-схема процедуры а
Блок-схема процедуры c1
Блок-схема процедуры b1
Блок-схема процедуры d
5.3. Программный модуль «Ведомость зарплаты»
Program Zarplata;
CONST N=5; {количество записей в файле}
TYPE ST=ARRAY[1..4] OF STRING[80];
ST1=STRING[12];
STR=RECORD {состав записи}
fio:string[30];
oklad:real;
premi9:real;
nalog:real;
itogo:real;
END;
FL=File of STR; {имя для типизированного файла}
CONST C:ST=( {массив шапки таблицы}
' Vivod zarplati ',
'_________________________________________________________',
'| fio | oklada | premi9 | nalog | Itogo |',
'|________________________|_______|________|________|________|' );
Var
Z:STR; {запись со сведениями о зарплате}
{для сортировки}
z1,z2:STR;
k:integer;
ok:boolean;
i,j:BYTE ; { неоходимы для огранизации циклов}
str1:STR;
FI, {файл для исходных данных}
FR:text; {файл для результатов}
f:FL; {типизированный файл}
{Вывод шапки таблицы}
PROCEDURE SH;
Begin
Writeln(FR);
FOR I:=1 TO 5 DO Writeln(FR,C[i]);
END;
{Опережающее описание функции}
FUNCTION FILTR(STR:ST1):st1;
FORWARD;
{Вывод одной строки таблицы}
PROCEDURE P;
BEGIN
WITH Z DO
Writeln(FR,'| ',fio:15,' | ',oklad:10:2,' | ',premi9:10:2,' | ',nalog:10:2,' | ',itogo:10:2,' |');
Writeln(FR,c[4]);
END;
{Запись данных в файл}
procedure ZF (NF:ST1);
var FID:text;
begin
assign(FID,'d:\Ish.txt');{связывание FID с физическим файлом NF}
reset (FID); {открыть FID для чтения}
with Z do
while not seekeof (FID) do
begin {Ввод данных строки:}
readln (FID,fio,oklad,premi9,nalog,itogo);
fio:=filtr(fio); {фильтрация naim}
write (F,Z); {вызов процедуры вывода в F}
end;
close(FID);
end; {конец процедуры ZF}
procedure ZF1 (NF:ST1);
var FID:text;
begin
assign(FID,'d:\pdop.dat');{связывание FID с физическим файлом NF}
reset (FID); {открыть FID для чтения}
with Z do
while not seekeof (FID) do
begin {Ввод данных строки:}
readln (FID,fio,oklad,premi9,nalog,itogo);
fio:=filtr(fio); {фильтрация name}
write (F,Z); {вызов процедуры вывода в F}
end;
close(FID);
end; {конец процедуры ZF1}
{_Опережающее описание процедуры чтения записей файла_}
procedure CHT;
FORWARD;
{_Создание типизированного файла}
procedure SOZ;
begin
Writeln(fr,'Sozdanie file');
assign(f,'d:\psoz.dat');
rewrite(F); {открыть F для создания файла}
ZF ('d:\pSOZ.dat'); {вызов ZF для создания файла}
close(F); {закрыть F}
write(FR, #10#13,'Posle sozdania file: ');
CHT;
end;
{Подсчет среднего размера оклада}
Procedure a;
Var s,sr:real; {сумма, средний размер оклада}
Begin
Assign(FI,'d:\psoz.dat'); {связь Fi с физическим файлом}
Reset(Fi);Reset(f); {открыть файлы для чтения}
seek(f,0); {ставим указатель на первую позицию}
s:=0;
sr:=0;
Repeat
read(f,z); {чтение данных}
s:=s+z.oklad; {подсчет суммы}
until eof(f);
sr:=s/n; {подсчет среднего}
Writeln(FR);
Writeln(FR,'Sredniy razmer oklada',sr:8:2); {вывод результата}
end;
{Поиск сотрудников с премией > 1000 рублей}
Procedure c1;
Begin
Assign(FI,'d:\psoz.dat'); {связь Fi с физическим файлом}
Reset(Fi); {открыть Fi для чтения}
seek(f,0); {ставим указатель на первую позицию}
Writeln(FR);
Writeln(fr,#10#13,'Svedenia o sotrudnikah s premiey bolshe 1000 rub: ');
sh;
Repeat
read(f,z); {чтение записей}
if z.premi9>1000 then P;
until eof(f);
end;
{Поиск зарплаты < 3000 рублей}
Procedure b1;
Begin
Assign(FI,'d:\psoz.dat'); {связь Fi с физическим файлом}
Reset(Fi); {открыть Fi для чтения}
seek(f,0); {ставим указатель на первую позицию}
Writeln(FR);
Writeln(fr,#10#13,'Svedenia o sotrudnikah s okladom menshe 3000 rub: ');
sh;
Repeat
read(f,z); {чтение записей}
if z.oklad<3000 then P;
until eof(f);
end;
{Поиск суммарной суммы премий всех сотрудников}
Procedure d;
Var s,sr:real; {сумма, средняя стоимость}
Begin
Assign(FI,'d:\psoz.dat'); {связь Fi с физическим файлом}
Reset(Fi);Reset(f); {открыть файлы для чтения}
seek(f,0); {ставим указатель на первую позицию}
s:=0;
sr:=0;
Repeat
read(f,z); {чтение данных}
s:=s+z.premi9; {подсчет суммы}
until eof(f);
sr:=s; {подсчет среднего}
Writeln(FR);
Writeln(FR,'Summa premiy ',sr:8:2); {вывод результата}
end;
{Поиск по любому сочетанию двух поисковых признаков}
Procedure poisk;
Label MK;
var pfio:string[30]; poklad:real;
begin
Assign(fi,'d:\ppoi.dat'); {связь Fi с физическим файлом}
Reset(fi); reset(f); {открыть файлы для чтения}
Repeat
Read(FI,pfio,poklad); {ввод требуемых данных}
WRITELN(FR,'Naiti v baze svedenia lud9h s fio = ',pfio,' i okladom ',poklad:6:2);
pfio:=filtr(pfio);
IF (pfio=' ')AND(poklad=0) THEN
BEGIN {анализ наличия требуемых данных}
WRITELN(FR,'Net dannih dlai poiska');
CONTINUE
END;
seek(f,0); {указатель в начало файла}
repeat {начало поиска в файле F}
read(f,z); {чтение очередной записи}
IF ( pos(pfio,z.fio)>0 )and(poklad=z.oklad)THEN
begin
sh;
P;
GoTo MK;
end; {сведенья найдены}
until eof(f);
MK:UNTIL EOF (FI);
CLOSE(FI); Close(f);
END;
{Функция удаления лишних пробелов}
Function filtr;
Var i,j,l:integer;
Begin
l:=length(str); {определение длины строки}
For i:= 1 to l do {перебор номеров символов слева направо}
IF STR[i]<>' ' THEN {поиск "непробела" слева}
FOR J:=L DOWNTO I DO {поиск номеров символа справа}
If STR[j]<>' ' THEN {поиск "непробела" справа}
BEGIN
FILTR:=COPY(STR,I,j-i+1); {копирование строки}
EXIT {выход из функции}
END;
FILTR:=' '; {возврат пустой строки}
EnD;
{Чтение записей из типизированного файла}
procedure CHT;
begin reset (F);
SH;
Repeat
read(F, Z);
P;
until eof(f);
close (F);
end; {конец процедуры CHT}
Begin
ASSIGN(FR,'d:\rezyl.txt'); {присоединение к типизированному файлу}
Rewrite(FR); {открыть файл результатов для создания}
{вызов прцедур:}
soz; {создание типизированного файла}
cht; {чтение типизированного файла}
a; {Подсчет среднего размера оклада}
b1; {Поиск зарплаты < 3000 рублей}
c1; {Поиск сотрудников с премией > 1000 рублей}
d; {Поиск суммарной суммы премий всех сотрудников}
poisk; {поиск по любому сочетанию двух поисковых признаков}
CLOSE(FR); {закрыть файл с результатами}
END.
ЗАКЛЮЧЕНИЕ
В разработке технического проекта «Ведомость зарплаты» использовались практические и теоретические знания и навыки, полученные в ходе обучения.
Итогом работы является программный модуль «Ведомость зарплаты», который можно применить в качестве базы данных на предприятиях, в бухгалтерском учёте, в налоговой инспекции.
В данном отчете я постаралась отразить все стадии разработки программного продукта. Он очень трудоемкий и включает в себя множество этапов и полностью соответствует заданным требованиям.
ПРИЛОЖЕНИЕ
1. Введение;
2. Теоретическая часть;
2.1. Разработка программных продуктов
2.1.1. Эффективность и оптимизация программ
2.1.2. Обеспечение качества программного продукта
3. Назначение и область применения программного продукта;
4. Требование к программному продукту
4.1. Требования к функциональным характеристикам
4.1.1. Программа должна обеспечивать возможность выполнения следующих функций:
4.1.1.1.Обработка данных типизированного файла. Обработка данных должна включать процедуры без параметров:
- вывод шапки таблицы;
- вывод данных одной записи;
- создание файла;
- дополнение файла новыми записями;
- запись данных в файл;
- чтение данных из файла;
- модификация ряда записей файла;
- поиск записей файла с выводом найденных записей или сообщения о неуспешном поиске:
* по одному поисковому признаку (вариант задания по номеру в журнале, шифру группы, под буквами a, b, c, d);
28. Ведомость зарплаты
ФИО | Размер оклада |
Размер премии |
Размер подоходного налога (13%) |
Итого к выплате |
230105-06у |
a. Посчитать поле средний размер оклада b. Вывести в файл сведенья о сотрудниках, чья зарплата меньше 3000 рублей c. Вывести в файл сведенья о сотрудниках, чья премия превышает 1000 рублей d. Суммарную сумму премий всех сотрудников |
* по сочетанию двух заданных поисковых признаков (на выбор студента по смыслу индивидуальной части); По результатам поиска вывести найденные записи или сообщение о неуспешном поиске;
- отсортировать таблицу по возрастанию;
- удаление записей из типизированного файла;
- функция для фильтрации строки удаления пробелов.
-
4.1.1.2. Организация входных и выходных данных:
- Входные данные поступают из файла;
- Выходные данные поступают в текстовый файл;
4.2. Требования к надёжности
4.2.1. Предусмотреть контроль вводимой информации;
4.3. Требования к составу и параметрам технических средств;
4.4. Требования к программной совместимости
5. Требования к программной документации
5.1. Исходные данные и результат работы программы должны быть отражены в отчёте.
5.2. Схема взаимодействия программ (блок-схема) и блок-схемы индивидуальной части курсовой работы;
5.3. Разрабатываемые программные модули должны быть самодокументированны, т. е. тексты программ должны содержать все необходимые документарии.
5.4. Разрабатываемая программа должна включать справочную информацию о работе программы, описания методов сортировки и подсказки к ходу алгоритма.
5.5. В состав сопровождающей документации должны входить:
5.5.1. Пояснительная записка на 25-30 листах, содержащая описание разработки.
6. Источники, используемые при разработке.
СПИСОК ЛИТЕРАТУРЫ
1. Е.А. Жоголев. Введение в технологию программирования (конспект лекций). - М.: "ДИАЛОГ-МГУ", 1994.
2. Дж. Фокс. Программное обеспечение и его разработка. - М.: Мир, 1985.
3. В.В. Липаев, Е.Н Филиппов. Мобильность программ и данных в открытых информационных системах. - М.: Научная книга, 1997.
4. М.М. Горбунов-Посадов. Конфигурации программ. Рецепты безболезненных изменений. М.: «Малип», 1994.
5. Д. Ван Тассел. Стиль, разработка, эффективность, отладка и испытание программ. - М.: Мир, 1985
6. CASE: Компьютерное проектирование программного обеспечения. - Издательство Московского университета, 1994.
7. http://www.5ballov.ru/