Пример постановки задачи для семестрового задания

advertisement
Шаблон
«модель-представление»
Представление
Модель
База
данных
Постановка задачи
«Балльно-рейтинговая
система»
Пользователи
• Сотрудники деканата
Цель системы
• Программа «Балльно-рейтинговая
система» служит для хранения
информации об успеваемости
студентов и получения
разнообразных выборок о средних
баллах и рейтинге.
Требования к системе
• Хранение информации о студентах
(добавление, удаление,
редактирование, выборка)
• Хранение данных об итоговой
успеваемости по семестрам
(экзамены, зачеты) за весь период
обучения.
Требования к системе
• Формирование и печать ведомостей
по группам
• Вычисление средних баллов: по
студенту за семестр, по группе за
семестр, по группе за отдельный
предмет.
Требования к системе
• Вычисление рейтинга: для каждого
студента за отдельный предмет, за
семестр, за весь период обучения с
выдачей всего списка студентов
либо списка группы.
Блок «База данных»
Группа
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)
{. . . }
Download