Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курсовой проект_ Разработка программного обеспечен

.DOC
Скачиваний:
14
Добавлен:
16.12.2013
Размер:
109.06 Кб
Скачать

Государственный Университет Управления

Кафедра Документоведения и Документационного Обеспечения Управления

Курсовой проект

по дисциплине "Алгоритмизация и языки программирования"

На тему: Разработка программного обеспечения автоматизированного рабочего места

Выполнил студент 1-го курса Д/О

Института Информационных Систем Управления

Преподаватель: Романчуков Виктор Григорьевич.

Москва, 2004 г.

Задание

Составить комплекс программ, работающих в режиме диалога с пользователем под управлением главного меню. Комплекс должен осуществлять следующие функции:

  1. Ввод данных в файлы базы данных.

  2. Корректировку данных в файлах.

  3. Распечатку записей файлов.

  4. Печать документов заданной формы.

  5. Выход в Паскаль (C++) и в DOS.

Структура файлов базы данных:

1. Шифр издания, автор, наименование.

2. Шифр издания, издательство, год издания, тематика

Формы документов:

1. Книги, изданные после ... года:

шифр издания, автор, наименование, издательство, год издания, тематика.

Схема алгоритма

Программа на языке Pascal

uses

crt;

type

t1=record sh:integer;avt,naz:string[15] end;

t2=record sh:integer;izd,tem:string[15];year:integer end;

var

f1:file of t1;

f2:file of t2;

procedure init;

begin

assign(f1,'data1');

assign(f2,'data2');

{$I-}

reset (f1);

if ioresult <> 0 then rewrite (f1);

reset (f2);

if ioresult <> 0 then rewrite (f2);

{$I+}

end;

procedure vi1;

var

st:t1;

i:integer;

begin

i:=1;

seek(f1,0);

writeln('N':3,'шифр':6,'автор':15,'название':15);

while not eof(f1) do begin

read(f1,st);

writeln(filepos(f1)+1:3,st.sh:6,st.avt:15,st.naz:15);

if ((i mod 24)=0) then begin

write('нажмите любую клавишу');

readkey;

end;

i:=i+1;

end;

write('< конец >');

readkey;

end;

procedure vi2;

var

st:t2;

i:integer;

begin

i:=1;

seek(f2,0);

writeln('N':3,'шифр':6,'издательство':15,'тематика':15,'год':5);

while not eof(f2) do begin

read(f2,st);

writeln(filepos(f2)+1:3,st.sh:6,st.izd:15,st.tem:15,st.year:5);

if ((i mod 24)=0) then begin

write('нажмите любую клавишу');

readkey;

end;

i:=i+1;

end;

write('< конец >');

readkey;

end;

procedure add1;

var

st:t1;

begin

write('шифр: ');readln(st.sh);

write('автор: ');readln(st.avt);

write('название: ');readln(st.naz);

seek(f1,filesize(f1));

write(f1,st);

end;

procedure add2;

var

st:t2;

begin

write('шифр: ');readln(st.sh);

write('издательство: ');readln(st.izd);

write('тема: ');readln(st.tem);

write('год: ');readln(st.year);

seek(f2,filesize(f2));

write(f2,st);

end;

procedure del1;

var

n,i:byte;

st:t1;

begin

if filesize(f1)=0 then begin

writeln('записей нет');

readkey;

end

else begin

write('введите номер записи для удаления (1-',filesize(f1),') ');

readln(n);

if (n<1) or (n>filesize(f1)) then exit;

for i:=n to filesize(f1)-1 do begin

seek(f1,i);

read(f1,st);

seek(f1,i-1);

write(f1,st);

end;

seek(f1, filesize(f1)-1);

truncate(f1);

end;

end;

procedure del2;

var

n,i:byte;

st:t2;

begin

if filesize(f2)=0 then begin

writeln('записей нет');

readkey;

end

else begin

write('введите номер записи для удаления (1-',filesize(f2),') ');

readln(n);

if (n<1) or (n>filesize(f2)) then exit;

for i:=n to filesize(f2)-1 do begin

seek(f2,i);

read(f2,st);

seek(f2,i-1);

write(f2,st);

end;

seek(f2, filesize(f2)-1);

truncate(f2);

end;

end;

procedure doc;

var

year,flg,i:integer;

st1:t1;

st2:t2;

begin

write('найти книги после ');readln(year);

seek(f2,0);

writeln('шифр':6,'автор':15,'название':15,'издательство':15,'год':5,'тематика':15);

i:=1;

while not eof(f2) do begin

read(f2,st2);

if st2.year>= year then begin

flg:=0;

seek(f1,0);

while ((not eof(f1)) and (flg=0)) do begin

read(f1,st1);

if (st1.sh=st2.sh) then flg:=1;

end;

if flg=0 then

writeln('книга с шифром ',st2.sh,' не найдена')

else

writeln(st1.sh:6,st1.avt:15,st1.naz:15,st2.izd:15,st2.year:5,st2.tem:15);

if ((i mod 24)=0) then begin

write('нажмите любую клавишу');

readkey;

end;

i:=i+1;

end

end;

write('< конец >');

readkey;

end;

begin

init;

Repeat

Clrscr;

writeln('╔════════════════════════════════════════╗');

writeln('║ Главное меню программы ║');

writeln('╟────────────────────────────────────────╢');

writeln('║ 1 - Просмотреть 1-й файл ║');

writeln('║ 2 - Просмотреть 2-й файл ║');

writeln('║ 3 - Добавить записи в 1-й файл ║');

writeln('║ 4 - Добавить записи во 2-й файл ║');

writeln('║ 5 - Удалить записи в 1-м файле ║');

writeln('║ 6 - Удалить записи во 2-м файле ║');

writeln('║ 7 - Вывести документ ║');

writeln('║ 8 - Выход ║');

writeln('╚════════════════════════════════════════╝');

case readkey of

'1' : vi1;

'2' : vi2;

'3' : add1;

'4' : add2;

'5' : del1;

'6' : del2;

'7' : doc;

'8' : exit;

end

until false;

end.

Программа на языке C++

#include <io.h>

#include <iostream.h>

#include <conio.h>

#include <fcntl.h>

#include <SYS\STAT.h>

struct t1{

int sh;

char avt[15],naz[15];

};

struct t2{

int sh,year;

char izd[15],tem[15];

};

int f1,lt1,f2,lt2;

void init(){

lt1=sizeof(t1);

lt2=sizeof(t2);

if ((f1=open("data1",O_RDWR|O_BINARY))==-1)

f1=creat("data1",S_IREAD|S_IWRITE);

if ((f2=open("data2",O_RDWR|O_BINARY))==-1)

f2=creat("data2",S_IREAD|S_IWRITE);

}

void vi1()

{

t1 st;

int i;

i=1;

lseek(f1,0,0);

cout << " N шифр автор название\n";

while (!eof(f1))

{

read(f1,&st,lt1);

cout.width(3); cout << i;

cout.width(6); cout << st.sh;

cout.width(15);cout << st.avt;

cout.width(15);cout << st.naz << "\n";

if ((i % 24)==0)

{

cout << "нажмите любую клавишу\n";

getch();

}

i++;

}

cout << "< конец >";getch();

}

void vi2()

{

t2 st;

int i;

i=1;

lseek(f2,0,0);

cout << " N шифр издательство тематика год\n";

while (!eof(f2))

{

read(f2,&st,lt2);

cout.width(3); cout << i;

cout.width(6); cout << st.sh;

cout.width(15);cout << st.izd;

cout.width(15);cout << st.tem;

cout.width(5); cout << st.year << "\n";

if ((i % 24)==0)

{

cout << "нажмите любую клавишу\n";

getch();

}

i++;

}

cout << "< конец >";getch();

}

void add1()

{

t1 st;

cout << "шифр: ";cin >> st.sh;

cout << "автор: ";cin >> st.avt;

cout << "название: ";cin >> st.naz;

lseek(f1,0,2);

write(f1,&st,lt1);

}

void add2()

{

t2 st;

cout << "шифр: ";cin >> st.sh;

cout << "издательство: ";cin >> st.izd;

cout << "тематика: ";cin >> st.tem;

cout << "год: ";cin >> st.year;

lseek(f2,0,2);

write(f2,&st,lt2);

}

void del1()

{

int n,i;

t1 st;

if (filelength(f1)==0)

{

cout << "записей нет";

getch();

return;

}

cout << "введите номер записи для удаления (1-" <<

(filelength(f1)/lt1) << ") ";

cin >> n;

if ((n<1) | (n>(filelength(f1)/lt1))) return;

for (i=n;i<(filelength(f1)/lt1);i++)

{

lseek(f1,i*lt1,0);

read(f1,&st,lt1);

lseek(f1,(i-1)*lt1,0);

write(f1,&st,lt1);

}

chsize(f1,filelength(f1)-lt1);

}

void del2()

{

int n,i;

t2 st;

if (filelength(f2)==0)

{

cout << "записей нет";

getch();

return;

}

cout << "введите номер записи для удаления (1-" <<

(filelength(f2)/lt2) << ") ";

cin >> n;

if ((n<1) | (n>(filelength(f2)/lt2))) return;

for (i=n;i<(filelength(f2)/lt2);i++)

{

lseek(f2,i*lt2,0);

read(f2,&st,lt2);

lseek(f2,(i-1)*lt2,0);

write(f2,&st,lt2);

}

chsize(f2,filelength(f2)-lt2);

}

void doc()

{

int year,i,flg;

t1 st1;

t2 st2;

cout << "найти книги после ";

cin >> year;

lseek(f2,0,0);

cout << " шифр автор название издательство" <<

" год тематика\n";

i=1;

while (!eof(f2))

{

read(f2,&st2,lt2);

if (st2.year>=year)

{

flg=0;

lseek(f1,0,0);

while (!(eof(f1) | flg))

{

read(f1,&st1,lt1);

if (st1.sh==st2.sh) flg=1;

}

if (!flg)

cout << "книга с шифром " << st2.sh << " не найдена!\n";

else

{

cout.width(6); cout << st1.sh;

cout.width(15);cout << st1.avt;

cout.width(15);cout << st1.naz;

cout.width(15);cout << st2.izd;

cout.width(5); cout << st2.year;

cout.width(15);cout << st2.tem << "\n";

if ((i%24)==0)

{

cout << "нажмите любую клавишу\n";

getch();

}

i++;

}

}

}

cout << "< конец >";

getch();

}

void main()

{

int vid;

init();

do

{

clrscr();

cout << "╔════════════════════════════════════════╗\n";

cout << "║ Главное меню программы ║\n";

cout << "╟────────────────────────────────────────╢\n";

cout << "║ 1 - Просмотреть 1-й файл ║\n";

cout << "║ 2 - Просмотреть 2-й файл ║\n";

cout << "║ 3 - Добавить записи в 1-й файл ║\n";

cout << "║ 4 - Добавить записи во 2-й файл ║\n";

cout << "║ 5 - Удалить записи в 1-м файле ║\n";

cout << "║ 6 - Удалить записи во 2-м файле ║\n";

cout << "║ 7 - Вывести документ ║\n";

cout << "║ 8 - Выход ║\n";

cout << "╚════════════════════════════════════════╝\n";

switch (getch())

{

case 49: vi1(); break;

case 50: vi2(); break;

case 51: add1(); break;

case 52: add2(); break;

case 53: del1(); break;

case 54: del2(); break;

case 55: doc(); break;

case 56: return;

}

}

while (1);

}