Шаблон «модель-представление» Представление Модель База данных Постановка задачи «Балльно-рейтинговая система» Пользователи • Сотрудники деканата Цель системы • Программа «Балльно-рейтинговая система» служит для хранения информации об успеваемости студентов и получения разнообразных выборок о средних баллах и рейтинге. Требования к системе • Хранение информации о студентах (добавление, удаление, редактирование, выборка) • Хранение данных об итоговой успеваемости по семестрам (экзамены, зачеты) за весь период обучения. Требования к системе • Формирование и печать ведомостей по группам • Вычисление средних баллов: по студенту за семестр, по группе за семестр, по группе за отдельный предмет. Требования к системе • Вычисление рейтинга: для каждого студента за отдельный предмет, за семестр, за весь период обучения с выдачей всего списка студентов либо списка группы. Блок «База данных» Группа N зачетки Студент Курс ФИО Оценка Код Балл Предмет Название Семестр Блок «Модель» • Классы: – Студент – Предмет – Оценка (?) –? Класс Предмет Данные: Целое Код Строка Название Целое Семестр Методы: Сохранить() Удалить() Класс Предмет (продолжение) Статические методы: Предмет НайтиПоКоду(Целое Код) Предмет[] НайтиПоАтрибуту (Строка Название, Строка Значение) Класс Предмет class Course { int courseNum; // Номер курса и свойство public int CourseNum { get{return courseNum;} set{courseNum=value;} } string courseName; // Название курса и свойство public string CourseName { get{return courseName;} set{courseName=value;} } int semestr; // Номер семестра и свойство public int Semestr { get{return semestr;} set{semestr=value;} } Класс Предмет // Конструктор public Course(int num, string name, int semestr) { this.courseNum=num; this.courseName=name; this.semestr=semestr; } // Переопределенный метод для преобразования в строку public override string ToString() { return("\nКод: " + this.courseNum + " \nНазвание: " + this.courseName +" \nСеместр: "+this.semestr); } // Метод для сохранения предмета в базе данных public void SaveToDB() {. . .} // Метод для удаления предмета из базы данных public void DeleteFromDB() {. . .} Класс Предмет // Список курсов и свойство static ArrayList courseList; public static ArrayList CourseList { get{return courseList;} set{courseList=value;} } // Чтение предметов из базы данных public static void ReadFromDB(){. . .} // Поиск в списке курсов по номеру public static Course FindByNum(int num) { foreach (Course c in Course.CourseList) { if (c.courseNum==num) return c; } return null; } // Поиск в списке курсов по названию public static Course FindByName(string name){. . .} Класс Предмет ---------------Главное меню----------- 1 - Прочитать список курсов из БД - 2 - Вывести список курсов на печать - 3 - Редактировать курсы - 9 – Выход ---------------- Меню редактирования курсов -----1 - Новый курс 2 - Изменить 3 – Удалить 4 - Найти по коду 5 - Найти по названию 9 - Возврат в главное меню Класс Студент Данные: Строка Nзачетки Строка ФИО Строка Группа Целое Курс Целое ПризнакСортировки Оценка [] Оценки Класс Студент (продолжение) Методы: Сохранить() Удалить() Число СреднийБалл() Число СреднийБалл(Целое Семестр) Целое CompareTo(Object o) Класс Студент (продолжение) Статические методы: Студент НайтиПоКоду(Целое Код) Студент[] НайтиПоАтрибуту (Строка Название, Строка Значение) Класс Студент class Student: IComparable { int studentNum; // Номер и свойство public int StudentNum { get{return studentNum;} set{studentNum=value;} } string studentName; // ФИО и свойство public string StudentName { get{return studentName;} set{studentName=value;} } string group; // Группа и свойство public string Group { get{return group;} set{group=value;} } Класс Студент int year; // Курс и свойство public int Year { get{return year;} set{year=value;} } int rating; // Рейтинг и свойство public int Rating { get{return rating;} set{rating=value;} } ArrayList ballList; // Список оценок и свойство public ArrayList BallList { get{return ballList;} set{ballList=value;} } Класс Студент // Конструктор public Student(int num, string name, string gr, int year) { this.studentNum=num; this.studentName=name; this.group=gr; this.year=year; this.ballList=new ArrayList(); } // Реализация IComparable int IComparable.CompareTo(object o) { Student temp = (Student)o; if(this.rating < temp.rating) return 1; if(this.rating > temp.rating) return -1; else return 0; } Класс Студент // Метод для сохранения студента в базе данных public void SaveToDB() {. . .} // Метод для удаления студента из базы данных public void DeleteFromDB() {. . .} // Средний балл за весь период обучения public int AverageBall() {. . .} // Средний балл за семестр public int AverageBall(int semestr) {. . .} // Балл по курсу public int AverageBall(Course c) {. . .} // Переопределенный метод для преобразования в строку public override string ToString() {. . .} Класс Студент // Строка подключения к базе данных static string conString; public static string ConString { get{return conString;} set{conString=value;} } // Список студентов и свойство static ArrayList studentList; public static ArrayList StudentList { get{return studentList;} set{studentList=value;} } // Чтение студентов из базы данных public static void ReadFromDB(string where) Класс Студент // Поиск в списке по номеру public static Student FindByNum(int num) { foreach (Student c in Student.StudentList) { if (c.studentNum==num) return c; } return null; } // Поиск в списке по ФИО public static Student FindByName(string name) {...} Класс Студент ---------------Главное меню----------- 1 - Прочитать полный список студентов из БД - 2 - Прочитать список курса - 3 - Прочитать список группы - 31 - Напечатать ведомость - 4 - Вывести список студентов на печать - 5 - Сортировать по рейтингу - 51 - Сортировать по рейтингу за семестр - 52 - Сортировать по рейтингу за предмет - 61 - Средний балл по студенту за семестр - 62 - Средний балл по группе за семестр - 63 - Средний балл по группе за предмет - 7 - Редактировать студентов - 9 - Выход Класс Студент ---------------- Меню редактирования студентов ----------- 1 - Новый студент - 2 - Изменить - 3 - Удалить - 4 - Найти по коду - 5 - Найти по имени - 6 - Добавить оценку - 7 - Удалить оценку - 9 - Возврат в главное меню Класс Оценка Данные: Предмет ЗаЧто Целое Балл Конструктор: Оценка (Предмет ЗаЧто, Целое Балл) Класс Оценка class Mark { Course forWhat; // Предмет public Course ForWhat { get{return forWhat;} set{forWhat=value;} } int ball; //Оценка public int Ball { get{return ball;} set{ball=value;} } public Mark(Course c, int b) // Конструктор { this.forWhat=c; this.ball=b; } Класс Оценка static string conString; // Строка подключения public static string ConString { get{return conString;} set{conString=value;} } // Метод для сохранения оценки в базе данных public void SaveToDB(int studentNum) {. . .} } // Метод для удаления оценки из базы данных public void DeleteFromDB(int studentNum) {. . . }