Розробка програмного забезпечення
Сформувати файл «Stud.dat», що містить інформацію про контингент студентів ІМЕГА
КУРСОВА РОБОТА
з дисципліни ОСНОВИ ПРОГРАМУВАННЯ
Зміст
Завдання..................................................................................................2 стр.
Анотація..................................................................................................3 стр.
Annotation…...…………………………………………………………5 стр.
Опис програми.......................................................................................6 стр.
Висновок.................................................................................................7 стр.
Список використаної літератури..........................................................8 стр.
Додатки...................................................................................................9 стр.
Додаток А.............................................................................................10 стр.
Додаток В.............................................................................................22 стр.
АНОТАЦІЯ
В даній програмі створено списки студентів інституту і проаналізовано їх.
ANNOTATION
In this program the lists of students of institute are created and analysed them.
ОПИС ПРОГРАМИ
Дана програма формує файл “stud.dat”, записує в нього інформацію про контингент студентів ІМЕГА, а саме: порядковий номер запису, прізвище імя та по-батькові студента. Також заносяться курс, назва факультету, форма навчання та середня семестрова оцінка. Є можливість доповняти файл з клавіатури та вилучати непотрібні дані. Це забезпечено завдяки наявності в початковій структурі ключа, по якому можна зробити висновки щодо необхідності цього елемента.
Тобто якщо ключ дорівнює 0, елемент необхідно вважати видаленим і при формуванні списків його не відображати. Функція revival() обнулює всі ключі, таким чином забезпечує відновлення попередньої версії файлу. Функція delete() витирає з файлу всі елементи в яких даний ключ дорівнює 1, притому присвоює ключу 1 в вибраному користувачем елементі бази даних.
Програма також дозволяє формувати списки як по групах, так і по курсах, так і по факультетах.
ВИСНОВОК
Розробляючи дану програму я розглянув такі елементи мови С++ як вказівники, на основі яких я зумів побудувати динамічну базу даних – список. Адже така побудова програми дозволяє більш ширше використовувати це програмне забезпечення, ніж програму розроблену на основі масиву. Програма на основі масиву використовувала скінчену кількість пам’яті, яку в процесі виконання програми змінити не можливо. Розроблена мною програма використовує динамічну базу даних. Це дозволяє змінювати об’єм пам’яті використаної під час роботи програми.
ПЕРЕЛІК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ
1. Павловская Т.А. С/С++. Программирование на языке высокого уровня – СПб.:Питер, 2005. – 461 с.
2. Фролов А.В., Фролов Г.В. MS-DOS для программиста. – М.: ДИАЛОГ-МИФИ, 1995. – 256с.
3. Велихов А.В. Макроассемблер: Создание и отладка программ. – М.: Майор, 2001. – 192 с. – (Мой компьютер).
4. Лаптев В. В. С++ Експресс-курс. – СПб.:БХВ – Петербург,2004. – 512 с.
Додатки
ДОДАТОК А
//KYRS.CPP
//revival deleting forming
#include <iostream>
#include <conio>
#include <stdio>
#include <fcntl.h>
#include <stdlib>
#include <io>
#include "kyrs.h"
void forming(void){
student* people;
people = new student;
people->surname = new char [20];
people->form = new char [6];
people->group = new char [7];
people->name = new char [10];
people->farther = new char [20];
people->faculty = new char [20];
people->next = NULL;
student* pv;
pv = new student;
pv->surname = new char [20];
pv->form = new char [6];
pv->group = new char [7];
pv->name = new char [10];
pv->farther = new char [20];
pv->faculty = new char [20];
pv->next = NULL;
clrscr();
char ch,*mode;
int kyrs;
mode = new char [20];
printf("Enter form of list:\n1: in group\n2: on kyrs\n3: on faculty\n");
ch = getch();
clrscr();
people = form();
int availability=0;
printf("Please specify how to form the list of students: in order of growth or slump of middle semester estimation(g/s):\n");
char order;
order = getche();
int value = 0;
printf("\nEnter form in which you want to see list(group, kyrs or faculty):\n");
switch(ch) {
case '1':
scanf("%s",mode);
pv = people->next;
if (!strcoll(mode,people->group)) ++availability;
while(pv->next != NULL) {
if (!strcoll(mode,pv->group)) ++availability;
pv = pv->next; }
if (!strcoll(mode,pv->group)) ++availability;
if (availability == 0) {
printf("\nThe group %s is absent",mode);
getch();
return; }
clrscr();
printf("\n\tList in group %s\n\n",mode);
if (availability == 1) {
if (!strcoll(mode,people->group)) {
printf("%i - %s %s %s %s %s %d - %d",availability,people->surname,people->name,people->farther,people->faculty,people->form,people->year,people->mark);
getch();
return; }
pv = people->next;
while(pv != NULL) {
if (!strcoll(mode,pv->group)) printf("%i - %s %s %s %s %s %d - %d",availability,pv->surname,pv->name,pv->farther,pv->faculty,pv->form,pv->year,pv->mark);
pv = pv->next; }
getch();
return; }
while(strcoll(mode,people->group)) {
people = Ldelete(people,people->ind); }
pv = people->next;
while(pv->next != NULL) {
while(strcoll(mode,pv->group)) {
pv = Ldelete(people,pv->ind); }
pv = pv->next; }
if (strcoll(mode,pv->group)) pv = Ldelete(people,pv->ind);
pv = people->next;
break;
case '2':
scanf("%d",&kyrs);
pv = people->next;
if (kyrs == people->year) ++availability;
while(pv != NULL) {
if (kyrs == pv->year) ++availability;
pv = pv->next; }
if (availability == 0) {
printf("\nThe students of %d year are absent",kyrs);
getch();
return; }
clrscr();
printf("\n\tList of students of %d year\n\n",kyrs);
if (availability == 1) {
if (kyrs == people->year) {
printf("%i - %s %s %s %s %s %s - %d",availability,people->surname,people->name,people->farther,people->faculty,people->group,people->form,people->mark);
getch();
return; }
pv = people->next;
while(pv != NULL) {
if (kyrs == pv->year) printf("%i - %s %s %s %s %s %s - %d",availability,pv->surname,pv->name,pv->farther,pv->faculty,pv->group,pv->form,pv->mark);
pv = pv->next; }
getch();
return; }
while(kyrs != people->year)
{ people = Ldelete(people,people->ind); }
pv = people->next;
while(pv != NULL) {
while(kyrs != pv->year)
{ pv = Ldelete(people,pv->ind); }
pv = pv->next; }
pv = people->next;
break;
case '3':
scanf("%s",mode);
pv = people->next;
if (!strcoll(mode,people->faculty)) ++availability;
while(pv->next != NULL) {
if (!strcoll(mode,pv->faculty)) ++availability;
pv = pv->next; }
if (!strcoll(mode,pv->faculty)) ++availability;
if (availability == 0) {
printf("\nThe faculty %s is absent",mode);
getch();
return; }
clrscr();
printf("\n\tList in faculty %s\n\n",mode);
if (availability == 1) {
if (!strcoll(mode,people->faculty)) {
printf("%i - %s %s %s %s %s %d - %d",availability,people->surname,people->name,people->farther,people->faculty,people->form,people->year,people->mark);
getch();
return; }
pv = people->next;
while(pv != NULL) {
if (!strcoll(mode,pv->faculty)) printf("%i - %s %s %s %s %s %d - %d",availability,pv->surname,pv->name,pv->farther,pv->faculty,pv->form,pv->year,pv->mark);
pv = pv->next; }
getch();
return; }
while(strcoll(mode,people->faculty)) {
people = Ldelete(people,people->ind); }
pv = people->next;
while(pv->next != NULL) {
while(strcoll(mode,pv->faculty)) {
pv = Ldelete(people,pv->ind); }
pv = pv->next; }
if (strcoll(mode,pv->faculty)) pv = Ldelete(people,pv->ind);
pv = people->next;
break;
default:
clrscr();
printf("You enter error!!!\nPlease reenter your choice");
break; }
switch(order) {
case 'g':
for (value = 2;value <= 5; ++value) {
pv = people->next;
if (people->mark == value) {
printf("--- %s %s %s