Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное
учреждение высшего профессионального образования
«Государственный университет управления»
Институт информационных систем управления
Кафедра информационных систем
по учебной практике
на (в) Государственный университет управления
(название организации (предприятия))
Выполнила студентка
2 курса очной формы обучения направления подготовки Бизнес-информатика 080500
Масалович П.Ж.
Профессор,д.ф.-м.н. _____________ Якунина Г.Е.
(ученая степень, звание) (личная подпись) (инициалы, фамилия)
Москва 2014
Содержание
1.Индивидуальное задание с требованиями
Имеются сведения о реализации жилищной программы по областям РФ: область, количество кв.метров построенного жилья за каждый год из последних 5-ти лет.
Определить:
а) для каждой области общее количество построенного за 5 лет жилья и год, когда было построено его макс. кол-во.
б) список областей, непрерывно увеличивавших в течении 5 лет строительство жилья, и область, построившую за 5 лет максимальное кол-во кв. м. жилья.
ОБЩЕЕ ЗАДАНИЕ
1). Ввести N - записей, соответствующих исходным данным индивидуального задания и создать из записей массив данных.
2). Для каждой записи выполнить задание пункта а) и результат обработки вывести на экран в виде таблицы.
3). Организовать сортировку таблицы по колонке, номер которой должен вводиться с клавиатуры.
4). Выполнить для введенных данных задание пункта б). Результат вывести в виде таблицы.
2. Выбор проблемной области для разработки моделей
В качестве предметной области для построения моделей деятельности выступает средняя ценовая стоимость 1кв.м. построенного жилья за последние пять лет. С целью выявления проблемных областей проводится моделирование деятельности компании. Повышению эффективности работы компании способствует автоматизация расчетов ценовой политики.
3. Определение целей разработки моделей выбранной предметной области
Цель практики: Развитие практических навыков по модификации программы в соответствии с новыми требованиями к ней.
4. Постановка конкретной прикладной задачи
Конкретной прикладной задачей практики, направленной на решение проблем предприятия, является автоматизация определенных действий, а точнее сортировка введенных данных, сохранение этих данных в текстовой и двоичный форматы, а так же вывод ключевых расчётов. Все пункты должны будут выполнены в виде функций.
5. Выработка требований и разработка спецификаций программной системы (ПС)
Были выработаны следующие требования:
6.Проектирование ПС
Была спроектирована программа, которая отвечает всем требованиям, описанным выше.
Все данные, используемые в программе, можно разделить на две группы: константы и переменные. К первой группе относятся данные, не изменяющие своего значения в ходе выполнения программы, данные второй группы могут изменять свое значение.
Как константы, так и переменные могут быть различных типов, которые определяют их структуру, набор допустимых значений, правила использования и способ представления в ЭВМ.
ПЕРЕМЕННАЯ |
НАЗНАЧЕНИЕ |
ТИП |
char |
от128 до 127 |
Символьный |
int |
от32768 до 32767 (16-б.);от 2147483648 до 2147483647 (32-б.платформа) |
Целый |
zap |
Структурированный тип данных |
|
FILE |
файловая переменная |
СПИСОК И ПРОГРАММНЫЕ КОДЫ ИСПОЛЬЗУЕМЫХ ПОДПРОГРАММ
КОМАНДА |
ОПИСАНИЕ |
void main() |
Указание стартовой точки |
clrscr() |
Очистка экрана |
struct |
Инкапсуляции небольших групп связанных переменных |
cout |
Вывод текста на экран |
cin |
Ввод значения с клавиатуры |
for |
Цикл |
if |
Условный оператор |
printf |
Функция вывода значений на экран |
%s |
чтение строк |
do{… ..} while() |
Выполнение цикла (блок операторов), пока выполняется условие |
switch |
Выполнение одного или нескольких операторов, если значение указанного выражения совпадает с подписью |
case |
Оператор выбора |
break |
Завершает выполнение текущего цикла или, если он используется в сочетании с меткой, завершает работу связанного оператора. |
cout«"\n I= "«I |
Вывод на экран значения |
return |
Возврат в вызванную программу найденного значения |
atoi |
Преобразует строку, адресуемую параметром str, в значение типа int |
gets |
Ввод строки с клавиатуры произвольного набора символов |
strlen |
Возвращает длину строки, которую принимает в качестве аргумента |
getch() |
Ожидание нажатия клавиши |
stdout |
Стандартный вывод данных на экран |
save |
Сохранить |
fopen |
Открытие файла |
fwrite |
Запись бинарного файла |
fclose |
Закрытие файла (потока) |
fwrite |
Запись в файл |
fread |
Чтение файла |
fileno(i) |
Возвращает номер, назначенный данному потоку при первом открытии |
filelength(i) |
Получает размер файла в байтах. |
7.Код программы с комментариями
#include <iostream.h> //библиотека для организации ввода/вывода
#include <io.h> // библиотека для записи файла
#include <conio.h> //библиотека, необходимая для работы оператора getch()
#include <stdio.h> //библиотека, для использования функций, содержащихся в программе
#include <string.h> // библиотека для поля структуры
#include <stdlib.h> // библиотека для выделения памяти, преобразования типов
struct zap
{
char obl[10]; //имя
int m[5], t_m, max, nmax, inc; // m - массив жилья за каждый год, t_m - всего, max и nmax - максимум и его год, inc - имеет значение 1, если область увеличивала строительство каждый год, иначе 0
};
void input(zap* mas,int n);
void table(FILE *ft, zap* mas,int n);
void table_b(zap* mas,int n);
int pole();
void sort(zap* mas,int n,int p);
void save(zap* mas, int n);
void wbin(FILE* f, zap* mas, int n);
void inbin(FILE *ft, zap* st, int n);
int FILESIZE(FILE* ft)
{
int i= fileno(ft);
long L=filelength(i);
int n= L/sizeof(zap);
return n;
}
int srav(zap A, zap B, int p) //принимает две струтуры типа zap и номер сравниваеиого поля p
{
int b;
switch(p)
{
case 1:
b=strcmp(A.obl,B.obl)<0; break; //сравнение строк имени
case 2: case 3: case 4: case 5: case 6:
b=A.m[p-2]<B.m[p-2]; break; //сравнение количества жилья в конкретный год
case 7: case 9:
b=A.t_m<B.t_m; break; //сравнение общего количества жилья, case 7используется в общей сортировке, case 9 используется при выводе table_b
case 8:
b=A.nmax<B.nmax; break; //сравнение максимально результативного года
}
return b;
}
void main()
{
system("cls");
FILE *ft;
int n, p, in; //n - количество записей, p - номер поля для сортировки
zap *st; //указатель st на структуру типа zap
cout<<"Vvod dannih: 1 - consol', 2 - file, 0 - vihod: ";
do cin>>in; while(in<0 || in>2);
if (!in) exit(0);
else if (in==2)
{
char title[15];
cout<<"Vvedite imia faila *.bin: ";
do
{
cin>>title;
ft=fopen(title, "rb");
if (!ft) cout<<"Fail ne nayden!";
}
while (!ft);
n=FILESIZE(ft);
cout<<"Koli4estvo zapisey = "<<n<<endl;
st = new zap[n];
for (int i=0; i<n; i++)
fread(st+i, sizeof(zap), 1, ft);
fclose(ft);
cout<<"File uspeshno pro4itan!"<<endl;
cout<<"Chtobi prodolzhit', nazhmite \"Enter\"...";
getch();
}
else
{
cout<<"Vvedite koli4estvo oblastey: ";
cin>>n;
st = new zap[n]; //инициализация указателя на массив[n] структур типа zap
input(st, n); //функция ввода всей инфы
}
table(stdout, st, n); //таблица
save(st, n);
while(p=pole()) //продолжается выполнение, пока пользователь явно не укажет обратное
{
sort(st, n, p); //сортировка по выбранному полю
if (p==9) //если был вызван второй вариант таблицы, то p присваивается значение 9
{
table_b(st, n); //таблица b
cout<<"Chtobi vernut'sya, nazhmite \"Enter\"...";
getch();
table(stdout, st, n); //снова таблица
}
else
{
table(stdout, st, n); //либо сразу таблица
save(st, n);
}
}
getch();
}
void input(zap* mas, int n)
{
zap z; //объявление структуры z типа zap
for(int i=0;i<n;i++) //и ее заполнение
{
z.t_m=0; z.max=0; z.inc=0;
printf("\n %d. Vvedite oblast': ",i+1); cin>>z.obl; //название
for(int j=0;j<5;j++)
{
printf("Vvedite kol-vo zhil'ya v %d god (1000 m^2): ",j+1); cin>>z.m[j]; //жилье за год
z.t_m+=z.m[j]; //вычисление общего количества
if(z.m[j]>z.max)
{
z.max=z.m[j]; //определение максимума для области
z.nmax=j+1; //и его номера
}
}
if ((z.m[0]<z.m[1]) && (z.m[1]<z.m[2]) && (z.m[2]<z.m[3]) && (z.m[3]<z.m[4])) z.inc++; //если область увеличивала строительство каждый год, то inc=1
mas[i]=z; //присваивание i-той структуре значений структуры z
}
}
void table(FILE *ft, zap* mas, int n)
{
if (ft==stdout) system("cls");
fprintf(ft, " ------1------------2-------3-------4-------5-------6-------7---------8-----\n");
fprintf(ft, " Oblast' | 1 god | 2 god | 3 god | 4 god | 5 god | Vsego | Max god\n");
fprintf(ft, " ---------------------------------------------------------------------------");
for(int i=0;i<n;i++)
{
fprintf(ft, "\n %2d. %10s ",i+1,mas[i].obl);
for(int j=0;j<5;j++) fprintf(ft, " %6d ",mas[i].m[j]);
fprintf(ft, " %5d %5d", mas[i].t_m, mas[i].nmax);
}
fprintf(ft, "\n ---------------------------------------------------------------------------\n");
}
void table_b(zap* mas,int n) //все так же как и в table
{
system("cls");
int i,j;
cout<<" ------1------------2-------3-------4-------5-------6-------7---------8-----"<<endl;
cout<<" Oblast' | 1 god | 2 god | 3 god | 4 god | 5 god | Vsego | Max god"<<endl;
cout<<" ----------------------------------------------------------------------------";
for(i=0;i<n;i++)
{
if (mas[i].inc) //но выводятся только области с ненулевым inc
{
printf("\n %10s ",mas[i].obl);
for(j=0;j<5;j++) printf(" %6d ",mas[i].m[j]);
printf(" %5d %5d", mas[i].t_m, mas[i].nmax);
}
}
cout<<"\n ---------------------------------------------------------------------------"<<endl;
}
int pole() //определяет поле для сортировки
{
int p;
char s[1];
do
{
cout<<"Chtobi posmotret' tol'ko oblasti, uveli4ivavshie stroitel'stvo kazhdiy god, \nv poriadke ubivaniya, vvedite \"+\"."<<endl;
cout<<"Ukazhite nomer polya (1 - 8) dlya sortirovki (0 - vihod): ";
cin>>s[0];
if (s[0]=='+') p=9;
else p=atoi(s); //ascii to integer
}
while((p<0)||(p>9)); //ввод, пока значение p не удовлетворяет условиям
return p;
}
void sort(zap* mas,int n,int p)
{
int i,j,f,c;
zap z;
if (p!=9) //определяет направление сортировки, для table
{
cout<<"Uporiado4it' (A-Z)? (1 - po vozrastaniu, 0 - po ubivaniu): ";
cin>>c;
}
else c=0; //либо выводит в порядке убывания, исходя из условий варианта б
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
f=srav(mas[i], mas[j], p); //f хранит результат сравнение
if(c) f=!f; //и в случае сортировки по возрастанию, меняет его на обратный
if(f)
{
z=mas[i];mas[i]=mas[j];mas[j]=z; //меняем структуры местами
}
}
}
void save(zap* mas, int n)
{
FILE* ft;
int L;
char title[15];
cout<<"Sohranit' v fail: 1 - txt, 2 - bin ? (0 - No): "; do cin>>L; while (L<0 && L>2);
if(L>0)
{
cout<<"Vvedite imia faila: ";
cin>>title;
}
switch(L)
{
case 1: ft=fopen(title,"at"); table(ft, mas, n); fclose(ft); cout<<"\File *.txt uspeshno sohranen!"<<endl; break;
case 2: ft=fopen(title,"wb"); wbin(ft, mas, n); fclose(ft); break;
}
}
void wbin (FILE *f, zap* mas, int n)
{
for (int i=0; i<n; i++) fwrite(mas+i, sizeof(zap), 1, f);
cout<<"File *.bin uspeshno sohranen!"<<endl;
}
Данная программа:
1) вводит N записей(цену жилья и года)
2)Для каждой записи выполняет задание пункта а) и результат обработки выводит на экран в виде таблицы.
3)Организовывает сортировку таблицы по колонке, номер которой вводиться с клавиатуры.
4)Выполняет для введенных данных задание пункта б). Результат выводит в виде таблицы.
5)Записывает исходные данные на диск в виде текстовых и двоичных файлов;
6)Исходные данные считываются как из двоичного файла, так и вводятся с клавиатуры;
7)Предусматривается возможность записи таблиц результатов выполнения пунктов а) и б) в текстовый файл;
8.Работа программы
9.Заключение
Выполнение учебной практики закрепило и систематизировало теоретические знания, полученные в процессе обучения, практические умения и навыки по избранной профессиональной деятельности и развило способность к повышению квалификации и мастерства.
Основными целями учебной практики являются
С достижением указанных целей связано выполнение основных задач практики:
10.Список литературы
1) Программа учебной практики, составленная Якуниной Г.Е.
2) Лабораторная работа
3) Индивидуальные задания и требования
4) Стефан Р. Дэвис «C++ для чайников» 2003г