close

Вход

Забыли?

вход по аккаунту

?

Документ по курсовой

код для вставкиСкачать
 Министерство образования и науки Украины
Национальный авиационный университет
Курсовая работа
по дисциплине "Объектно-ориентированное программирование"
На тему "Информационная система учебного заведения (C#)"
Выполнила:
Студент группы. ПИ-215
Насиров Ш.Ш.
Проверил:
Викладач: Крамар Ю.М.
Киев 2013
Содержание
Информационная система учебного заведения
Упрощенные требования к программному обеспечению
Функциональные требования:
1. Управление преподавателями *
1.1. Возможность добавлять преподавателя
1.2. Возможность удалять преподавателя
1.3. Возможность изменить данных преподавателя
1.4. Возможность просмотра списка всех преподавателей
1.5. Возможность просмотра данных указанного преподавателя
2. Управление студентами
2.1. Возможность добавлять студента
2.2. Возможность удалять студента
2.3. Возможность изменить данных студента
2.4. Возможность просмотра списка всех студентов
2.5. Возможность просмотра данных указанного студента
3. Управление группами **
3.1. Возможность добавлять группу
3.2. Возможность удалять группу
3.3. Возможность изменять данные группы
3.4. Возможность просмотра списка данных группы
3.5. Возможность просмотра данных определенной группы
4. Управление учебным процессом
4.1. Возможность добавления предмета изучения в данных групп
4.2. Возможность удаления предмета изучения с данных групп
4.3. Возможность добавления преподавателя данного предмета изучения
4.4. Возможность замены преподавателя данного предмета изучения
4.5. Возможность добавления студента к существующей группы
4.6. Возможность удаления студента из существующей группы
5. Поиск
5.1. Возможность поиска студента по его данным (фамилия, имя)
5.2. Возможность поиска студентов определенной группы
5.3. Возможность поиска студентов определенного преподавателя
5.4. Возможность поиска студентов по предмету изучения
* преподаватель преподает один предмет
** группа должна иметь список преподавателей и студентов
Нефункциональные требования:
1. Требования к внешнему интерфейсу
1.1. Внешний интерфейс должен быть командным
1.2. Применение должно быть консольным
2. Данные должны храниться в файлах поcли выхода из программы.
3. Система должна обеспечить правильность введенных данных и корректную обработку исключительных ситуаций
4. Логическая структура данных
4.1. Информационный объект преподаватель
Элемент данныхТипОписаниеКомментарийФамилияТекст-ИмяТeкст-
4.2. Информационное объект студент
Элемент данныхТипОписаниеКомментарийФамилияТекст-ИмяТекст-КурсЦелое число-Номер зачетной книжкиТекстСерия, номерАдресТекстГород, улицаТелефонТекст или целое число
4.3. Информационное обьэкт группа
Элемент данныхТипОписаниеКомментарийНомер группыЦелое число-СтудентыСписок студентов-
4.4. Информационное объект предмет
Элемент данныхТипОписаниеКомментарийНазваниеТекст-ПреподавательОбъект преподаватель-ГруппыСписок групп
Особенности работы
В главном меню пользователю предлагается ввести команду среди команд предложенного списка. Команда считывается с помощью переменной string . Далее введена команда передается в файл основной программы и там выполняется проверка на выход из программы. После этого проверяется введена команда и выводится пункт меню , выбранной команды . Если введена команда не совпадает с одной из листа доступных , программа предложит ввести команду еще раз .
В программе используется одиннадцать классов и один интерфейс.
В программе используется шесть основных классов. Класс "Преподаватель"
Класс "Преподаватель". Этот класс содержит в себе информацию о преподаватели. Составляющие класса "Преподаватель" - это поля, которые содержит имя, фамилия преподавателя и методы, свойства для работы с классом , редактирование имя, фамилии, вывода информаций преподавателя на экран, конструктор по умолчанию.
class Teacher : IChangeData
{
string _name;
string _surname;
public Teacher()
{
surname = CheckInput.Symbol("фамилию");
name = CheckInput.Symbol("имя");
}
public string name
{
get { return _name; }
private set { _name = value; }
}
public string surname
{
get { return _surname; }
private set { _surname = value; }
}
public void changeData()
{
CheckInput.changeDataSymbol("фамилию", ref _surname);
CheckInput.changeDataSymbol("имя", ref _name);
}
public void show()
{
Console.WriteLine(surname + "\t\t" + name);
}
}
Класс "Студент"
Класс "Студент". Этот класс содержит в себе информацию о студенте. Составляющие класса "Студент" - это поля, которые содержит имя, фамилия студента, курс, серийный номер зачётки, адреса и методы, свойства для работы с классом , редактирование имя, фамилии, курс, серийный номер зачётки, адреса, вывода информаций студента на экран, конструктор по умолчанию.
using System;
namespace M3_Kursach
{
[Serializable]
class Student : IChangeData
{
string _name;
string _surname;
string _course;
string _recordBookSerial;
string _recordBookNumber;
string _addressСity;
string _addressStreet;
string _telephoneNumber;
public Student()
{
surname = CheckInput.Symbol("фамилию");
name = CheckInput.Symbol("имя");
course = CheckInput.Number("курс");
recordBookSerial = CheckInput.Symbol("серию зачётки");
recordBookNumber = CheckInput.Number("номер зачётки");
addressСity = CheckInput.Symbol("город");
addressStreet = CheckInput.Symbol("улицу");
telephoneNumber = CheckInput.Number("телефонный номер");
}
public string name
{ get { return _name; } private set { _name = value; } }
public string surname
{
get { return _surname; }
private set { _surname = value; }
}
public string course
{
get { return _course; }
private set { _course = value; }
}
public string recordBookSerial
{
get { return _recordBookSerial; }
private set { _recordBookSerial = value; }
}
public string recordBookNumber
{
get { return _recordBookNumber; }
private set { _recordBookNumber = value; }
}
public string addressСity
{
get { return _addressСity; }
private set { _addressСity = value; }
}
public string addressStreet
{
get { return _addressStreet; }
private set { _addressStreet = value; }
}
public string telephoneNumber
{
get { return _telephoneNumber; }
private set { _telephoneNumber = value; }
}
public void changeData()
{
CheckInput.changeDataSymbol("фамилию", ref _surname);
CheckInput.changeDataSymbol("имя",ref _name);
CheckInput.changeDataNumber("курс", ref _course);
CheckInput.changeDataSymbol("серию зачётки",ref _recordBookSerial);
CheckInput.changeDataNumber("номер зачётки",ref _recordBookNumber);
CheckInput.changeDataSymbol("город", ref _addressСity);
CheckInput.changeDataSymbol("улицу", ref _addressStreet);
CheckInput.changeDataNumber("телефонный номер", ref _telephoneNumber);
}
public void show()
{
Console.WriteLine("{0}\t{1}\t{2}\t{3} {4}\t{5}\t{6}\t{7}", surname, name, course, recordBookSerial, recordBookNumber, addressСity, addressStreet, telephoneNumber);
}
}
Класс"Группа"
Класс "Группа". Этот класс содержит в себе информацию о Группе. Составляющие класса "Группа" - это поля, которые содержит номер группы, список студентов, методы, свойства для работы с классом , редактирование номера группы, конструктор по умолчанию.
class Group
{
string _groupNumber;
List<Student> _listStudent;
public Group()
{
groupNumber = CheckInput.Number("номер группы");
listStudent = new List<Student>();
}
public string groupNumber
{
get { return _groupNumber; }
private set { _groupNumber = value; }
}
public List<Student> listStudent
{
get { return _listStudent; }
private set { _listStudent = value; }
}
public void changeData()
{
CheckInput.changeDataNumber("номер группы", ref _groupNumber);
}
}
Класс "Предмет"
Класс "Предмет". Этот класс содержит в себе информацию о предмете. Составляющие класса "Предмет" - это поля, которые содержит название , преподавателя, список групп и методы, свойства для работы с классом , редактирование название, конструктор по умолчанию.
class Predmet
{
string _name; Teacher _teacher;
List<Group> _listGroup;
public Predmet()
{
name = CheckInput.Symbol("название предмета");
teacher = null;
listGroup = new List<Group>();
}
public Predmet(string n)
{
name = n;
teacher = null;
listGroup = new List<Group>();
}
public Teacher teacher
{
get { return _teacher; }
set { _teacher = value; }
}
public string name
{
get { return _name; }
private set { _name = value; }
}
public List<Group> listGroup
{
get { return _listGroup; }
private set { _listGroup = value; }
}
}
Класс "Данные"
Класс "Данные". Этот класс содержит в себе информацию о группах. Составляющие класса "Данные" - это поля, которые содержит список студентов, преподавателей, групп, предметов, свойства для работы с классом. Класс содержит методы добавление, удаление, изменение, вывод, вывод преподавателей, студентов, групп и предметов.
class Data
{
List<Predmet> dataPredmet;
List<Group> dataGroup;
List<Teacher> dataTeachers;
List<Student> dataStudents;
public Data()
{
dataPredmet = new List<Predmet>();
dataGroup = new List<Group>();
dataTeachers = new List<Teacher>();
dataStudents = new List<Student>();
}
public void addTeacher()
{
Teacher ob = new Teacher();
foreach (Teacher t in dataTeachers)
if (t.name == ob.name && t.surname == ob.surname)
{
Console.WriteLine("Преподаватель {0} {1} уже существует в базе.", ob.surname, ob.name);
return;
}
dataTeachers.Add(ob);
Console.WriteLine("Преподаватель {0} {1} успешно добавлен", ob.surname, ob.name);
}
public bool removeTeacher()
{
Teacher ob = new Teacher();
bool result = false;
foreach (Teacher t in dataTeachers)
if (t.name == ob.name && t.surname == ob.surname)
if (result = dataTeachers.Remove(t))
{
Console.WriteLine("Преподаватель {0} {1} успешно удалён", ob.surname, ob.name);
return result;
}
if (!result)
Console.WriteLine("Преподаватель {0} {1} не найден", ob.surname, ob.name);
return result;
}
public void changeDataTeacher()
{
string tempName;
string tempSurname;
tempSurname = CheckInput.Symbol("фамилию преподавателя данные которых хотите изменить");
tempName = CheckInput.Symbol("имя преподавателя данные которых хотите изменить");
foreach (Teacher t in dataTeachers)
if (t.name == tempName && t.surname == tempSurname)
{
t.changeData();
Console.WriteLine("Данные преподавателя {0} {1} успешно изменены", tempSurname, tempName);
return;
}
Console.WriteLine("Преподаватель {0} {1} не найден", tempSurname, tempName);
//foreach (Predmet p in dataPredmet)
// p.teacher.changeData();
}
public void showListTeacher()
{
int i = 0;
Console.WriteLine("Список преподавателей");
Console.WriteLine("№ Фамилия\tИмя");
foreach (Teacher t in dataTeachers)
{
i++;
Console.WriteLine("{0}. {1}\t{2}", i, t.surname, t.name);
}
}
public void showTeacher()
{
Teacher t = new Teacher();
foreach (Teacher t2 in dataTeachers)
if (t2.name == t.name && t2.surname == t.surname)
{
Console.WriteLine("\nФамилия\t\tИмя");
t2.show();
return;
}
Console.WriteLine("Преподаватель {0} {1} не найден.", t.surname, t.name);
} //_+_+_+_+_+
public void addStudent()
{
Student ob = new Student();
foreach (Student s in dataStudents)
if (s.recordBookNumber == ob.recordBookNumber && s.recordBookSerial == ob.recordBookSerial)
{
Console.WriteLine("Студент {0} {1} уже существует в базе.", ob.surname, ob.name);
return;
}
dataStudents.Add(ob);
Console.WriteLine("Студент {0} {1} успешно добавлен", ob.surname, ob.name);
}
public bool removeStudent()
{
bool result = false;
string tempSurname = CheckInput.Symbol("фамилию удаляемого студента"); ;
string tempName = CheckInput.Symbol("имя удаляемого студента");
string tempRecordBookSerial = CheckInput.Symbol("серию зачётки удаляемого студента"); ;
string tempRecordBookNumber = CheckInput.Number("номер зачётки удаляемого студента"); ;
foreach (Student s in dataStudents)
if (s.name == tempName && s.surname == tempSurname && s.recordBookSerial == tempRecordBookSerial && s.recordBookNumber == tempRecordBookNumber)
if (result = dataStudents.Remove(s))
{
Console.WriteLine("Cтудент {0} {1} успешно удалён", s.surname, s.name);
break;
}
if (!result)
Console.WriteLine("Cтудент {0} {1} не найден", tempSurname, tempName);
return result;
}
public void changeDataStudent()
{
string tempSurname = CheckInput.Symbol("фамилию студента данные которых хотите изменить");
string tempName = CheckInput.Symbol("имя студента данные которых хотите изменить");
string tempRecordBookSerial = CheckInput.Symbol("серию зачётки студента данные которых хотите изменить");
string tempRecordBookNumber = CheckInput.Number("номер зачётки студента данные которых хотите изменить");
foreach (Student s in dataStudents)
if (s.name == tempName && s.surname == tempSurname && s.recordBookSerial == tempRecordBookSerial && s.recordBookNumber == tempRecordBookNumber)
{
s.changeData();
Console.WriteLine("Данные студента {0} {1} успешно изменены", tempSurname, tempName);
return;
}
Console.WriteLine("Cтудент {0} {1} не найден", tempSurname, tempName);
}
public void showListStudent()
{
int i = 0;
Console.WriteLine("Список студентов");
//Console.WriteLine("---------------------------------------------------------------------------------------------------------------------------------");
Console.WriteLine("№ Фамилия\tИмя\t\tКурс\t\tСерийный номер зачётки\t\tГород\t\tУлица\t\tТелефонный номер");
foreach (Student s in dataStudents)
{
i++;
Console.WriteLine("{0}. {1}\t{2}\t\t{3}\t\t{4} {5}\t\t\t\t{6}\t\t{7}\t\t{8}", i, s.surname, s.name, s.course, s.recordBookSerial, s.recordBookNumber, s.addressСity, s.addressStreet, s.telephoneNumber);
}
}
public void showStudent()
{
string tempSurname = CheckInput.Symbol("фамилию студента данные которых хотите посмотреть");
string tempName = CheckInput.Symbol("имя студента данные которых хотите посмотреть");
string tempRecordBookSerial = CheckInput.Symbol("серию зачётки студента данные которых хотите посмотреть");
string tempRecordBookNumber = CheckInput.Number("номер зачётки студента данные которых хотите посмотреть");
foreach (Student s in dataStudents)
if (s.name == tempName && s.surname == tempSurname && s.recordBookSerial == tempRecordBookSerial && s.recordBookNumber == tempRecordBookNumber)
{
Console.WriteLine();
Console.WriteLine("Фамилия\tИмя\tКурс\tСерийный номер зачётки\tГород\tУлица\tТелефонный номер");
s.show();
}
}
public void addGroup()
{
Group ob = new Group();
foreach (Group g in dataGroup)
if (g.groupNumber == ob.groupNumber)
{
Console.WriteLine("Группа {0} уже существует в базе", ob.groupNumber);
return;
}
dataGroup.Add(ob);
Console.WriteLine("Группа успешно добавлёна.");
//dataGroup.Add(new Group());
}
public bool removeGroup()
{
bool result = false;
string tempGroup = CheckInput.Number("номер удаляемой группы");
foreach (Group g in dataGroup)
if (g.groupNumber == tempGroup)
if (result = dataGroup.Remove(g))
{
Console.WriteLine("Группа номером {0} успешно удалена", g.groupNumber);
return result;
}
Console.WriteLine("Группа номером {0} не найдена", tempGroup);
return result;
}
public void changeDataGroup()
{
string tempGroupNumber = CheckInput.Number("номер группы данные которых хотите изменить");
foreach (Group g in dataGroup)
if (g.groupNumber == tempGroupNumber)
{
g.changeData();
Console.WriteLine("Данные группы {0} успешно изменены", tempGroupNumber);
return;
}
Console.WriteLine("Группа {0} не найдена", tempGroupNumber);
}
public void showListGroup() //--->
{
int i = 0;
Console.WriteLine("Cписок групп");
foreach (Group g in dataGroup)
{
i++;
Console.WriteLine(i + ". " + g.groupNumber);
}
}
public void showDataListGroup() //---------------------3.3
{
foreach (Group g in dataGroup)
{
Console.WriteLine("Группа номером " + g.groupNumber);
Console.WriteLine("Список группы");
Console.WriteLine("Фамилия\tИмя\tКурс\tСерийный номер зачётки\tГород\tУлица\tТелефонный номер");
foreach (Student s in g.listStudent)
s.show();
Console.Write("\nПредметы которые преподаются в группе {0}: ",g.groupNumber);
foreach (Predmet p in dataPredmet)
foreach (Group g2 in p.listGroup)
if (g2.groupNumber == g.groupNumber)
Console.Write(p.name + ", ");
Console.WriteLine("\n");
Console.Write("Преподаватели которые преподают в группе {0}: ", g.groupNumber);
foreach (Predmet p in dataPredmet)
foreach (Group g2 in p.listGroup)
if (g2.groupNumber == g.groupNumber)
if(p.teacher != null)
Console.Write(p.teacher.surname + " " + p.teacher.name + ", ");
Console.WriteLine("\n");
}
}
public void showDataGroup()
{
string tempNumberGroup;
tempNumberGroup = CheckInput.Number("номер группы данные которых хотите посмотреть");
foreach (Group g in dataGroup)
if (g.groupNumber == tempNumberGroup)
{
Console.WriteLine("\nСписок группы");
Console.WriteLine("Фамилия\tИмя\tКурс\tСерийный номер зачётки\tГород\tУлица\tТелефонный номер");
foreach (Student s in g.listStudent)
s.show();
Console.Write("\nПредметы которые преподаются в группе {0}: ",g.groupNumber);
foreach (Predmet p in dataPredmet)
foreach (Group g2 in p.listGroup)
if (g2.groupNumber == g.groupNumber)
Console.Write(p.name);
Console.WriteLine();
return;
}
Console.WriteLine("Группа {0} данные которых вы хотели посмотреть не найдена", tempNumberGroup);
}
public void addPredmetGroup() //<---
{
int tempNumber;
string namePredmet;
Console.WriteLine("Какую группу хотите добавить предмет");
showListGroup();
do
{
try
{
Console.Write("\nВведите номер: ");
tempNumber = Int32.Parse(Console.ReadLine()) - 1;
}
catch (FormatException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine();
tempNumber = -1;
}
} while (tempNumber < 0 || tempNumber > dataGroup.Count - 1);
namePredmet = CheckInput.Symbol("название предмета которые хотите добавить");
foreach (Predmet p in dataPredmet)
foreach (Group g in p.listGroup)
if (p.name == namePredmet)
if (dataGroup[tempNumber].groupNumber == g.groupNumber)
{
Console.WriteLine("Предмет {0} уже был добавлен в группе {1}", namePredmet, dataGroup[tempNumber].groupNumber);
return;
}
else
{
p.listGroup.Add(dataGroup[tempNumber]);
Console.WriteLine("Предмет успешно добавлен в группу");
return;
}
Predmet ob = new Predmet(namePredmet);
ob.listGroup.Add(dataGroup[tempNumber]);
dataPredmet.Add(ob);
Console.WriteLine("Предмет успешно добавлен в группу");
}
public bool removePredmetGroup()
{
int tempNumber;
string namePredmet;
bool result = false;
Console.WriteLine("C какой группу хотите удалить предмет");
showListGroup();
do
{
try
{
Console.Write("\nВведите номер: ");
tempNumber = Int32.Parse(Console.ReadLine()) - 1;
}
catch (FormatException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine();
tempNumber = -1;
}
} while (tempNumber < 0 || tempNumber > dataGroup.Count - 1);
namePredmet = CheckInput.Symbol("название предмета которое хотите удалить");
foreach (Predmet p in dataPredmet)
foreach (Group g in p.listGroup)
if (g.groupNumber == dataGroup[tempNumber].groupNumber && p.name == namePredmet)
if (result = p.listGroup.Remove(g))
{
Console.WriteLine("Предмет {0} удалён с группы {1}", namePredmet, dataGroup[tempNumber].groupNumber);
return result;
}
Console.WriteLine("Предмет {0} в группу {1} не преподается", namePredmet, dataGroup[tempNumber].groupNumber);
return result;
}
public void addTeacherPredmet()
{
int i = 0;
int j = -1;
int tempNumber;
int tempNumber2;
//string[] mass = new string[dataPredmet.Count];
List<int> predmeti = new List<int>();
Console.WriteLine("Список предметов в которых не назначен преподователь");
foreach (Predmet p in dataPredmet)
{
j++;
if (p.teacher == null)
{
i++;
predmeti.Add(j);
Console.WriteLine("{0}. {1}", i, p.name);
}
}
do
{
try
{
Console.Write("Введите номер: ");
tempNumber = Int32.Parse(Console.ReadLine()) - 1;
}
catch (FormatException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine();
tempNumber = -1;
}
} while (tempNumber < 0 || tempNumber > predmeti.Count - 1);
showListTeacher();
do
{
try
{
Console.Write("Введите номер: ");
tempNumber2 = Int32.Parse(Console.ReadLine()) - 1;
}
catch (FormatException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine();
tempNumber2 = -1;
}
} while (tempNumber2 < 0 || tempNumber2 > dataTeachers.Count - 1);
dataPredmet[j].teacher = dataTeachers[tempNumber2];
dataTeachers.RemoveAt(tempNumber2);
Console.WriteLine("Преподаватель {0} {1} успешно добален в предмет {2}", dataPredmet[j].teacher.surname, dataPredmet[j].teacher.name, dataPredmet[j].name);
} //mesta massuva nado kolleksiya
public void replaceTeacherPredmet()
{
string namePredmet = CheckInput.Symbol("название предмета в которым хотите заменить преподавателя");
string tempSurnameTeacher = CheckInput.Symbol("фамилия преподавателя которого нужна заменить");
string tempNameTeacher = CheckInput.Symbol("имя преподавателя которого нужна заменить");
Console.WriteLine("Введите данные заменяющего преподавателя");
Teacher ob = new Teacher();
foreach (Predmet p in dataPredmet)
if (p.name == namePredmet && p.teacher.name == tempNameTeacher && p.teacher.surname == tempSurnameTeacher)
{
p.teacher = ob;
Console.WriteLine("Преподователь успешно заменон");
return;
}
Console.WriteLine("Преподаватель {0} {1} преподающий {2} которого нужна заменить не найден", tempSurnameTeacher, tempNameTeacher, namePredmet);
}
public void addStudentGroup() //////////////oooooo
{
int tempNumber;
int tempNumber2;
showListStudent();
do
{
try
{
Console.Write("\nВведите номер: ");
tempNumber = Int32.Parse(Console.ReadLine()) - 1;
}
catch (FormatException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine();
tempNumber = -1;
}
} while (tempNumber < 0 || tempNumber > dataStudents.Count - 1);
showListGroup();
do
{
try
{
Console.Write("\nВведите номер: ");
tempNumber2 = Int32.Parse(Console.ReadLine()) - 1;
}
catch (FormatException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine();
tempNumber2 = -1;
}
} while (tempNumber2 < 0 || tempNumber2 > dataGroup.Count - 1);
dataGroup[tempNumber2].listStudent.Add(dataStudents[tempNumber]);
Console.WriteLine("\nСтудент {0} {1} успешно добавлен в группу {2}", dataStudents[tempNumber].surname, dataStudents[tempNumber].name, dataGroup[tempNumber2].groupNumber);
dataStudents.RemoveAt(tempNumber);
}
public bool removeStudentGroup()
{
bool result = false;
string tempSurname = CheckInput.Symbol("фамилию удаляемого студента");
string tempName = CheckInput.Symbol("имя удаляемого студента");
string tempRecordBookSerial = CheckInput.Symbol("серию зачётки удаляемого студента");
string tempRecordBookNumber = CheckInput.Number("номер зачётки удаляемого студента");
string tempNumberGroup = CheckInput.Number("номер группы с который хотите удалить студента");
foreach (Group g in dataGroup)
if(g.groupNumber == tempNumberGroup)
foreach (Student s in g.listStudent)
if (s.name == tempName && s.surname == tempSurname && s.recordBookSerial == tempRecordBookSerial && s.recordBookNumber == tempRecordBookNumber)
if (result = g.listStudent.Remove(s))
{
Console.WriteLine("Cтудент {0} {1} успешно удалён c группы", s.surname, s.name, tempNumberGroup);
dataStudents.Add(s);
return result;
}
Console.WriteLine("Cтудент {0} {1} не найден", tempSurname, tempName);
return result;
}
public void searchStudentData()
{
string tempName;
string tempSurname;
bool flag = true;
tempSurname = CheckInput.Symbol("фамилия студента которого нужна найти");
tempName = CheckInput.Symbol("имя студента которого нужна найти");
foreach(Student s in dataStudents)
if (s.name == tempName && s.surname == tempSurname)
{
if (flag)
{
flag = false;
Console.WriteLine("Фамилия\tИмя\tКурс\tСерийный номер зачётки\tГород\tУлица\tТелефонный номер");
}
s.show();
return;
}
foreach (Group g in dataGroup)
foreach (Student s in g.listStudent)
if (s.name == tempName && s.surname == tempSurname)
{
if (flag)
{
flag = false;
Console.WriteLine("Фамилия\tИмя\tКурс\tСерийный номер зачётки\tГород\tУлица\tТелефонный номер");
}
s.show();
}
if (!flag)
Console.WriteLine("Студент {0} {1} не найден", tempSurname, tempName);
}
public void searchStudentGroup()
{
string tempName;
string tempSurname;
int tempNumber;
bool flag = true;
tempSurname = CheckInput.Symbol("фамилия студента которого нужна найти");
tempName = CheckInput.Symbol("имя студента которого нужна найти");
Console.WriteLine("Выберите группу в который хотите найти студента:");
showListGroup();
do
{
try
{
Console.WriteLine("Введите номер: ");
tempNumber = Int32.Parse(Console.ReadLine()) - 1;
}
catch (FormatException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine();
tempNumber = -1;
}
} while (tempNumber < 0 || tempNumber > dataGroup.Count - 1);
foreach (Group g in dataGroup)
if (g.groupNumber == dataGroup[tempNumber].groupNumber)
foreach (Student s in g.listStudent)
if (s.name == tempName && s.surname == tempSurname)
{
if (flag)
{
flag = false;
Console.WriteLine("Фамилия\tИмя\tКурс\tСерийный номер зачётки\tГород\tУлица\tТелефонный номер");
}
s.show();
}
if (!flag)
Console.WriteLine("Студент {0} {1} в группе {2} не найден", tempSurname, tempName, dataGroup[tempNumber].groupNumber);
}
public void searchStudentTeacher()
{
int i = 0;
int tempNumber;
string tempName;
string tempSurname;
bool flag = true;
List<Predmet> prmt = new List<Predmet>();
tempSurname = CheckInput.Symbol("фамилия студента которого нужна найти");
tempName = CheckInput.Symbol("имя студента которого нужна найти");
foreach (Predmet p in dataPredmet)
if (p.teacher != null)
prmt.Add(p);
foreach (Predmet p in prmt)
{
i++;
Console.WriteLine("{0}. {1} {2}", i, p.teacher.surname, p.teacher.name);
}
Console.WriteLine("Выберите преподавателя в который хотите найти студента:");
do
{
try
{
Console.Write("Введите номер: ");
tempNumber = Int32.Parse(Console.ReadLine());
}
catch (FormatException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine();
tempNumber = -1;
}
} while (tempNumber < 0 || tempNumber > prmt.Count - 1);
foreach (Predmet p in dataPredmet)
if (p.teacher.name == prmt[tempNumber].teacher.name && p.teacher.surname == prmt[tempNumber].teacher.surname)
foreach (Group g in p.listGroup)
foreach (Student s in g.listStudent)
if (s.name == tempName && s.surname == tempSurname)
{
if (flag)
{
flag = false;
Console.WriteLine("Фамилия\tИмя\tКурс\tСерийный номер зачётки\tГород\tУлица\tТелефонный номер");
}
s.show();
}
if (!flag)
Console.WriteLine("Студент {0} {1} у преподавтеля {2} {3} не найден", tempSurname, tempName, prmt[tempNumber].teacher.surname, prmt[tempNumber].teacher.name);
}
public void searchStudentPredmet()
{
int tempNumber;
int i = 0;
bool flag = true;
string tempName;
string tempSurname;
Predmet tempPredmet;
tempSurname = CheckInput.Symbol("фамилия студента которого нужна найти");
tempName = CheckInput.Symbol("имя студента которого нужна найти");
foreach (Predmet p in dataPredmet)
{
i++;
Console.WriteLine("{0}. {1}", i, p.name);
}
do
{
try
{
Console.WriteLine("Введите номер: ");
tempNumber = Int32.Parse(Console.ReadLine()) - 1;
}
catch (FormatException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine();
tempNumber = -1;
}
} while (tempNumber < 0 || tempNumber > dataPredmet.Count - 1);
tempPredmet = dataPredmet[tempNumber];
foreach (Group g in tempPredmet.listGroup)
foreach (Student s in g.listStudent)
if (s.name == tempName && s.surname == tempSurname)
{
if (flag)
{
flag = false;
Console.WriteLine("Фамилия\tИмя\tКурс\tСерийный номер зачётки\tГород\tУлица\tТелефонный номер");
}
s.show();
}
if (!flag)
Console.WriteLine("Студент {0} {1} в предмете {2} не найден", tempSurname, tempName, tempPredmet.name);
}
}
Класс "Проверка"
Класс "Студент". Этот класс содержит в себе информацию методи для проверки правильности ввода данних пользивателим.
class CheckInput
{
public static string Symbol(string str)
{
string temp;
bool isError;
Console.Write("Введите {0}: ",str);
do
{
isError = false;
temp = Console.ReadLine();
for (int i = 0; i < temp.Length; i++)
if ((temp[i] < 'a' || temp[i] > 'z') && (temp[i] < 'A' ||temp[i] > 'Z'))
{
Console.Write("Введите корректно {0}: ", str);
isError = true;
break;
}
} while (isError);
return temp;
}
public static string Number(string str)
{
string temp;
bool isError;
Console.Write("Введите {0}: ",str);
do
{
isError = false;
temp = Console.ReadLine();
for (int i = 0; i < temp.Length; i++)
if (temp[i] < '0' || temp[i] > '9')
{
Console.Write("Введите корректно {0}: ", str);
isError = true;
break;
}
} while (isError);
return temp;
}
public static void changeDataSymbol(string str, ref string objectData)
{
int temp;
string s;
Console.WriteLine("Xотите изменить {0}: ", str);
Console.WriteLine("1. Да");
Console.WriteLine("2. Нет");
try
{
temp = Int32.Parse(Console.ReadLine());
}
catch (FormatException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine();
temp = -1;
}
if (temp == 1)
if ((s = CheckInput.Symbol(str)) != null)
objectData = s;
}
public static void changeDataNumber(string str, ref string objectData)
{
int temp;
string s;
Console.WriteLine("Xотите изменить {0}: ", str);
Console.WriteLine("1. Да");
Console.WriteLine("2. Нет");
try
{
temp = Int32.Parse(Console.ReadLine());
}
catch (FormatException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine();
temp = -1;
}
if (temp == 1)
if ((s = CheckInput.Number(str)) != null)
objectData = s;
}
}
Класс "Выбор"
Класс "Выбор". Этот класс содержит в себе информацию о метод для обработки запроса пользователя
class Choice
{
Data data = new Data();
int x;
public void choice(int ch)
{
switch (ch)
{
case 1:
Menu.menu1();
Console.WriteLine();
do
{
try
{
Console.Write("Введите номер: ");
x = Int32.Parse(Console.ReadLine());
}
catch (FormatException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine();
}
} while (x < 0 || x > 5);
Console.WriteLine();
switch (x)
{
case 0:
return;
case 1:
data.addTeacher();
break;
case 2:
data.removeTeacher();
break;
case 3:
data.changeDataTeacher();
break;
case 4:
data.showListTeacher();
break;
case 5:
data.showTeacher();
break;
}
break;
case 2:
Menu.menu2();
Console.WriteLine();
do
{
try
{
Console.Write("Введите номер: ");
x = Int32.Parse(Console.ReadLine());
}
catch (FormatException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine();
}
} while (x < 0 || x > 5);
Console.WriteLine();
switch (x)
{
case 0:
return;
case 1:
data.addStudent();
break;
case 2:
data.removeStudent();
break;
case 3:
data.changeDataStudent();
break;
case 4:
data.showListStudent();
break;
case 5:
data.showStudent();
break;
}
break;
case 3:
Menu.menu3();
Console.WriteLine();
do
{
try
{
Console.Write("Введите номер: ");
x = Int32.Parse(Console.ReadLine());
}
catch (FormatException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine();
}
} while (x < 0 || x > 6);
Console.WriteLine();
switch (x)
{
case 0:
return;
case 1:
data.addGroup();
break;
case 2:
data.removeGroup();
break;
case 3:
data.changeDataGroup();
break;
case 4:
data.showDataListGroup();
break;
case 5:
data.showDataGroup();
break;
case 6:
data.showListGroup();
break;
}
break;
case 4:
Menu.menu4();
Console.WriteLine();
do
{
try
{
Console.Write("Введите номер: ");
x = Int32.Parse(Console.ReadLine());
}
catch (FormatException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine();
}
} while (x < 0 || x > 6);
Console.WriteLine();
switch (x)
{
case 0:
return;
case 1:
data.addPredmetGroup();
break;
case 2:
data.removePredmetGroup();
break;
case 3:
data.addTeacherPredmet();
break;
case 4:
data.replaceTeacherPredmet();
break;
case 5:
data.addStudentGroup();
break;
case 6:
data.removeStudentGroup();
break;
}
break;
case 5:
Menu.menu5();
Console.WriteLine();
do
{
try
{
Console.Write("Введите номер: ");
x = Int32.Parse(Console.ReadLine());
}
catch(FormatException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine();
}
} while (x < 0 || x > 4);
Console.WriteLine();
switch (x)
{
case 0:
return;
case 1:
data.searchStudentData();
break;
case 2:
data.searchStudentGroup();
break;
case 3:
data.searchStudentTeacher();
break;
case 4:
data.searchStudentPredmet();
break;
}
break;
}
}
Класс "Меню"
Класс "Меню". Этот класс содержит в себе информацию о методы для вывода меню выбора на консоль.
class Menu
{
public static void mainMenu()
{
Console.WriteLine("[1] Управление преподавателями");
Console.WriteLine("[2] Управление студентами");
Console.WriteLine("[3] Управление группами");
Console.WriteLine("[4] Управление учебным процессом");
Console.WriteLine("[5] Поиск");
Console.WriteLine("\n[0] Выход");
}
public static void menu1()
{
Console.WriteLine("(1) Добавить преподавателя");
Console.WriteLine("(2) Удалить преподавателя");
Console.WriteLine("(3) Изменить данные преподавателя");
Console.WriteLine("(4) Просмотр списка всех преподавателей");
Console.WriteLine("(5) Просмотр данных указанного преподавателя");
Console.WriteLine("\n(0) Назад");
}
public static void menu2()
{
Console.WriteLine("(1) Добавить студента");
Console.WriteLine("(2) Удалить студента");
Console.WriteLine("(3) Изменить данные студента");
Console.WriteLine("(4) Просмотр списка всех студентов");
Console.WriteLine("(5) Просмотр данных указанного студента");
Console.WriteLine("\n(0) Назад");
}
public static void menu3()
{
Console.WriteLine("(1) Добавить группу");
Console.WriteLine("(2) Удалить группу");
Console.WriteLine("(3) Изменять данные группы");
Console.WriteLine("(4) Просмотр списка данных группы");
Console.WriteLine("(5) Просмотр данных определенной группы");
Console.WriteLine("(6) Просмотр списка групп");
Console.WriteLine("\n(0) Назад");
}
public static void menu4()
{
Console.WriteLine("(1) Добавить предмет изучения в данных групп");
Console.WriteLine("(2) Удалить предмет изучения с данных групп");
Console.WriteLine("(3) Добавить преподавателя данный предмет изучения");
Console.WriteLine("(4) Заменить преподавателя данного предмета изучения");
Console.WriteLine("(5) Добавления студента к существующей группы");
Console.WriteLine("(6) Удаления студента из существующей группы");
Console.WriteLine("\n(0) Назад");
}
public static void menu5()
{
Console.WriteLine("(1) Поиска студента по его данным (фамилия, имя)");
Console.WriteLine("(2) Поиска студентов определенной группы");
Console.WriteLine("(3) Поиска студентов определенного преподавателя");
Console.WriteLine("(4) Поиска студентов по предмету изучения");
Console.WriteLine("\n(0) Назад");
}
}
Класс "СохранениеФайл"
Класс "СохранениеФайл". Этот класс содержит в себе методы для записи и чтение данных в файл.
class SaveFile
{
public static void serialization(object objGraph)
{
BinaryFormatter bf = new BinaryFormatter();
FileStream fstream;
try
{
fstream = new FileStream("E:\\database.db", FileMode.Create, FileAccess.Write);
}
catch (IOException exc)
{
Console.WriteLine(exc.Message);
throw;
}
try
{
bf.Serialize(fstream, objGraph);
}
catch (SerializationException exc)
{
Console.WriteLine(exc.Message);
throw;
}
finally
{
fstream.Close();
}
}
public static object deserialization()
{
BinaryFormatter bf = new BinaryFormatter();
FileStream fstream;
object objGraph;
try
{
fstream = new FileStream("E:\\database.db", FileMode.Open, FileAccess.Read);
}
catch (FileNotFoundException exc)
{
Console.WriteLine(exc.Message);
throw;
}
try
{
objGraph = bf.Deserialize(fstream);
}
catch (SerializationException exc)
{
Console.WriteLine(exc.Message);
throw;
}
finally
{
fstream.Close();
}
return objGraph;
}
}
Команды и меню
1. Основное меню
При вводе команды "0" - вы выйдете из программы;
При вводе команды "1" - вы перейдете к меню управления преподавателями;
При вводе команды "2" - вы перейдете к меню управления студентами;
При вводе команды "3" - вы перейдете к меню управления группами;
При вводе команды "4" - вы перейдете к меню управления учебным процессом;
При вводе команды "5" - вы перейдете к меню поиск;
1.1 меню управления преподавателями
При вводе команды "0" - вы перейдете в меню 1;
При вводе команды "1" - вы перейдете к добавлению преподавателя в базу данных;
При вводе команды "2" - вы перейдете к удалению преподавателя из базы данных;
При вводе команды "3" - вы перейдете к изменению данных преподавателя;
При вводе команды "4" - вы перейдете к просмотру данных преподавателей;
При вводе команды "5" - вы перейдете к просмотру данных указанного преподавателя;
1.2 меню управления студентами
При вводе команды "0" - вы перейдете в меню 1;
При вводе команды "1" - вы перейдете к добавлению студента в базу данных;
При вводе команды "2" - вы перейдете к удалению студента из базы данных;
При вводе команды "3" - вы перейдете к изменению данных студента;
При вводе команды "4" - вы перейдете к просмотру данных студентов;
При вводе команды "5" - вы перейдете к просмотру данных указанного студента;
1.3 меню управления группами
При вводе команды "0" - вы перейдете в меню 1;
При вводе команды "1" - вы перейдете к добавлению группы в базу данных;
При вводе команды "2" - вы перейдете к удалению группы из базы данных;
При вводе команды "3" - вы перейдете к изменению данных группы;
При вводе команды "4" - вы перейдете к просмотру данных групп;
При вводе команды "5" - вы перейдете к просмотру данных указанной группы;
При вводе команды "6" - вы перейдете к просмотру списка групп;
1.4 меню управления учебным процессом
При вводе команды "0" - вы перейдете в меню 1;
При вводе команды "1" - вы перейдете к добавлению предмета в группу;
При вводе команды "2" - вы перейдете к удалению предмета из группы;
При вводе команды "3" - вы перейдете к добавлению преподавателя в предмет изучения;
При вводе команды "4" - вы перейдете к замени преподавателя из предмета изучения;
При вводе команды "5" - вы перейдете к добавлению студента к существующей группе;
При вводе команды "6" - вы перейдете к удаления студента из существующей группы;
1.5 меню поиск
При вводе команды "0" - вы перейдете в меню 1;
При вводе команды "1" - вы перейдете к поиску студента по его данным(фамилия, имя);
При вводе команды "2" - вы перейдете к поиску студентов определенной группы;
При вводе команды "3" - вы перейдете к поиску студентов определенного преподавателя;
При вводе команды "4" - вы перейдете к поиску студентов по предмету изучения;
Документ
Категория
Рефераты
Просмотров
15
Размер файла
108 Кб
Теги
курсовой, документы
1/--страниц
Пожаловаться на содержимое документа