Контроль успеваемости студентов (рейтинговая система)

МИНСКИЙ ИНСТИТУТ УПРАВЛЕНИЯ 

     Факультет учетно-финансовый                     «К защите допускаю»

     Кафедра   АИС       ______________________Демидович Е. М.

                    «    »                              2011 г. 
               
               
               

КУРСОВАЯ РАБОТА

                по  дисциплине

«Объектно-ориентированное программирование»

     на  тему  «Контроль успеваемости студентов

     (рейтинговая  система)»

Выполнил  студент гр. 91203з        Асанович Александр Сергеевич     

специальность ИСиТ (управленческая деятельность)  
 

     Руководитель _________________________ Демидович Е. М. 
 
 
 
 
 
 
 
 

МИНСК 2011

РЕФЕРАТ

 

курсовой  работы

«Контроль успеваемости студентов

(рейтинговая  система)»

       Объём работы 22 страницы, 10 рисунков.

       В курсовой работе описан процесс работы  классов и функций, которые реализуют следующие задачи:

  1. Открытие данных из файла
  2. Сохранение данных в файл
  3. Добавление в базу
  4. Удаление из базы
  5. Поиск данных
  6. Сортировка данных
  7. Замена данных
  8. Вывод данных
 

 

МИНСКИЙ ИНСТИТУТ УПРАВЛЕНИЯ 
 

Факультет    Учетно-финансовый

Специальность   Информационные системы  и технологии (управленческая деятельность)

  

                                    УТВЕРЖДАЮ

                        Зав. кафедрой

                                          _______________Курмашев В.И.

                                          “___”_______2011 года 

ЗАДАНИЕ

на курсовую работу 

по дисциплине “Объектно-ориентированное  программирование”

студенту Асанович Александр Сергеевич, группа №  91203з

1. Тема:” Контроль успеваемости студентов (рейтинговая система). ”.

2. Срок сдачи  студентом законченной курсовой  работы: 20 сентября  2011  года.

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

4. Перечень подлежащих  разработке вопросов и календарный  график

№  п/п Наименование  вопросов курсовой работы Срок исполнения
1 Ознакомление  с литературой 15.03.11
2 Системное проектирование 31.03.11
3 Разработка  структуры приложения 10.04.11
4 Разработка  базы данных 20.04.11
5 Функциональное  проектирование 30.04.11
6 Разработка  классов 10.05.11
7 Разработка  методов 20.05.11
8 Тестирование  приложения 31.05.11
9 Оформление  курсовой работы 20.06.11
 

Приложение:

      диаграммы вариантов использования;

      диаграмма классов;

      диаграмма пакетов;

      диаграммы объектов;

      диаграмма последовательности;

      диаграмма состояний;

      диаграмма деятельности. 

Руководитель ______________________________________ Е.М.Демидович

Задание принял к исполнению______________________________________

                                     (подпись) 
 

 

      Содержание

 

ПОСТАНОВКА  ЗАДАЧИ

 

       Необходимо  разработать программное обеспечение  для автоматизации учета успеваемости студентов, используя язык программирования высокого уровня  С#.

    В приложении должны быть реализованы следующие модули:

    - Открытие базы из файла

    - Сохранение базы в файл

    - Добавление данных в базу.

    - Вывод данных из базы на монитор для просмотра.

    - Поиск элемента.

    - Замена данных.

    - Модуль удаления данных из  базы.

    Также должен быть предусмотрен вывод сообщений  об ошибках, в случае введения неверных команд или данных.

 

ВВЕДЕНИЕ

 

       Внедрение   в   практику   программирования   объектно-ориентированной  парадигмы  дает  развитие   новых   областей   информатики, значительное  повышение  уровня  технологичности   создаваемых   программных средств, сокращение  затрат  на  разработку  и  сопровождение  программ,  их повторное использование, вовлечение в  процесс расширения  интеллектуальных возможностей ЭВМ. Объектный подход информационного моделирования  предметных областей все более успешно применяется в качестве основы для  структуризации их информационных отражений и, в частности, баз знаний.

       C# — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft.NET Framework и впоследствии был стандартизирован как ECMA-334 и ISO/IEC 23270.

       C# относится к семье языков с  C-подобным синтаксисом, из них  его синтаксис наиболее близок  к C++ и Java. Язык имеет статическую  типизацию, поддерживает полиморфизм,  перегрузку операторов (в том  числе операторов явного и  неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.

       Переняв многое от своих предшественников —  языков C++, Java, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие  себя как проблематичные при разработке программных систем, например, C# не поддерживает множественное наследование классов (в отличие от C++).

 

1. Системное проектирование

    1. Разработка  спецификаций функций 
 

       Для решения поставленных задач необходимо разработать следующие функции:

void save()  - функция сохранения в файл

void load()  - функция загрузки из файла

void add()  - функция добавления данных 

void showall() - функция вывода базы на экран  

void sort_mid() - функция сортировки по среднему баллу 

void del()  - функция удаления из базы

void find()  - функция поиска студента по фамилии

void replace() - функция замены данных  

       Так как разрабатываемая программа состоит из подпрограмм, то реализация вышеописанных функций на языке С# представлена в Приложении.

2 ФУНКЦИОНАЛЬНОЕ ПРОЕКТИРОВАНИЕ

     2.1. Разработка обобщенного алгоритма функционирования приложения

 

       Разработаем обобщенный алгоритм функционирования приложения.

       

       Рис. 1 Блок-схема обобщенного   алгоритма  функционирования приложения

     2.2. Разработка структуры приложения и структуры данных

 

       Приложение  будет иметь меню, через которое  можно будет обращаться к реализуемым  функциям.

       Структура меню имеет следующий вид:

       

       Рис. 2 Cхема меню 

       Для работы программы необходимо задать структуры данных, описанные конструкциями  языка С#, необходимые для корректного функционирования приложения.

       Создаем базовый  класс Raiting, в нем содержится информация о фамилии студента, его оценки по физике, математике, химии и информатике.

       class Raiting               

       {

       public:       

             string name;     //фамилия студента

             double mid;      //средний балл

             int phys;      //оценка по физике

             int math;            //оценка по математике

             int chem;      //оценка по химии

             int inf;       //оценка по информатике 
 
 
 

     2.3. Разработка программного кода приложения

 

       C# - универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей C# является надмножеством языка программирования C. Помимо возможностей, которые дает C, C#+ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы. Ключевым понятием C# является класс. Класс - это тип, определяемый пользователем. Классы обеспечивают скрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. C# предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В C# сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем.  
C++ и его стандартные библиотеки спроектированы так, чтобы обеспечивать переносимость. Имеющаяся на текущий момент реализация языка будет идти в большинстве систем, поддерживающих C.

       Листинг программы представлен в Приложении.

     2.4. Результаты тестирования приложения, используемые тесты.

 

       Протестировать  функционирование всего приложения по пунктам меню.

       При запуске приложения появляется главное меню. (Рис 3)

Рис 3 Запуск приложения. 

       При нажатии клавиши “1” попадаем в меню открытия данных из файла (Рис 4), где нам предлагают ввести имя открываемого файла.   

       

       Рис 4 Открытие файла. 
 

       Так же в программе предусмотрено сохранение содержимого базы в файл (Рис 5).

Рис 5 Сохранение в файл. 

     При нажатии клавиши 3 в меню приложения попадаем в секцию для добавления новых данных: фамилии студента и  его оценок (Рис 6).

     .

Рис 6 Ввод данных. 

 

      В программе предусмотрен и вывод  всей базы на экран монитора (Рис 7)

 

Рис 7 Вывод данных. 

     Так же предусмотрена сортировка данных (кнопка 5). Результаты сортировки представлены на рисунке 8.

Рис 8 Результат сортировки. 

 

      При нажатии клавиши 6 можно произвести поиск студента по его фамилии (Рис 9). Результаты поиска выводятся в виде таблицы (Рис 10).

     

Рис 9 Ввод фамилии для поиска. 

Рис 10 Результаты поиска.

     2.5. Описание приложения, инструкция по его использованию

 

       Программа предназначена для ведения упрощенной автоматизации учета товаров, находящихся на складе. Подробное описание работы с программой приведено в п.2.4. Для функционирования программы необходим персональный компьютер любой конфигурации.  Программа может работать в операционных системах MS DOS, Windows 3.1./95/98/Me/NT/2000/XP/Vista/7.

       Минимальный размер места на винчестере для корректной работы с программой ~ 200Кб.

 

        Заключение.

       В данном проекте  разработана программа по автоматизации учёта успеваемости студентов.

       В программе были выполнены следующие функции:

    1. Открытие данных из файла
  1. Сохранение данных в файл
  1. Добавление в базу
  2. Удаление из базы
  3. Поиск данных
  4. Сортировка данных
  5. Замена данных
  6. Вывод данных

       Пояснительная записка оформлена при помощи MS Word 2010. 

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 
  1. Демидович Е.М. Основы алгоритмизации и программирования. Язык СИ.: Пособие для студентов  БГУИР. – Мн.: Бестпринт, 2001. – 440 с.
  2. Керниган Б., Ритчи Д. Язык программирования Си. - М.: Финансы и  статистика, 1998.
  3. Подбельский В.В., Фомин С.С. Программирование на языке Си: Учебное пособие. 2-е доп. изд. - М.: Финансы и статистика, 1999.
  4. Подбельский В.В. Язык С++. - М.: Финансы и статистика, 2000. – 560 с.
  5. Шилдт Г. Самоучитель С++. – СПб.: BHV–Санкт-Петербург, 1998. – 688 с.
  6. Страуструп Б. Язык программирования С++. – М.:СПб.:  «Издательство  БИНОМ»  - «Невский диалект», 2001 г.
 
  1. Х.Дейтел, П.Дейтел. Как прграммировать на С++: Пер. с англ. – М.: ЗАО «Издательство БИНОМ», 2001 г.
 
  1. Архангельский А.Я. Программирование в C++Builder 4. - М.: ЗАО Издательство БИНОМ", 1999.

 

ПРИЛОЖЕНИЕ

 

       Листинг программы :

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

using System.Runtime.Serialization.Formatters.Binary; 

namespace ConsoleApplication1

{

    [Serializable]

    class Raiting

    {

        string name; double mid; int phys, math, chem, inf;

        public string Name { set { name = value; } get { return name; } }

        public double Mid { set { mid = value; } get { return mid; } }

        public int Phys { set { phys = value; } get { return phys; } }

        public int Math { set { math = value; } get { return math; } }

        public int Chem { set { chem = value; } get { return chem; } }

        public int Inf { set { inf = value; } get { return inf; } }

    } 

    class Rait

    {

        //-----------------------------------------------------------------------------------

        public static void add(ref int n, Raiting[] obj)

        {

            obj[n] = new Raiting();

            Console.WriteLine("\n  Введите фамилию");

            obj[n].Name = Console.ReadLine();

            Console.WriteLine("\n  Введите оценку по физике");

            obj[n].Phys = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("\n  Введите оценку по математике");

            obj[n].Math = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("\n  Введите оценку по химии");

            obj[n].Chem = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("\n  Введите оценку по информатике");

            obj[n].Inf = Convert.ToInt32(Console.ReadLine());

            obj[n].Mid = (obj[n].Phys + obj[n].Math + obj[n].Chem + obj[n].Inf) / 4.0;

            n++;

            Console.WriteLine("\n\n  Запись успешно добавлена!");

            Console.WriteLine("  Нажмите любую клавишу для продолжения...");

            Console.ReadKey(true);

            System.Console.Clear();

        }

        //-----------------------------------------------------------------------------------

        public static void showall(int n, Raiting[] obj)

        {

            int len; string spc = "";

            Console.WriteLine(" _________________________________________________________________________");

            Console.WriteLine("  Фамилия      Оценка по   Оценка по    Оценка по   Оценка по     Средний");

            Console.WriteLine("  студента     физике      математике   химии       информатике   балл");

            Console.WriteLine(" _________________________________________________________________________");

            for (int i = 0; i < n; i++)

            {

                len = obj[i].Name.Length;

                len = 13 - len;

                spc = "";

                for (int j = 0; j < len; j++)

                {

                    spc = spc + " ";

Контроль успеваемости студентов (рейтинговая система)