Проектирование информационной системы 'Деканат'
Министерство
образования и науки
Российской
Федерации
Федеральное
государственное бюджетное образовательное учреждение высшего профессионального
образования
“Ижевский
государственный технический университет
Имени М.Т.
Калашникова”
Воткинский
филиал
Кафедра
ОВПиСУ
Курсовой
проект
на
тему: Проектирование информационной системы “Деканат”
по
курсу предмета Проектирование АСОИУ
Выполнил студент группы 9-45-1
Воробьев Г.А.
Проверил Инженер - электроник
Береснев Н.В.
Воткинск
2014
Оглавление
Введение
Постановка задачи
. Проектирование БД
.1 Выбор программного обеспечения
.2 Проектирование таблиц
.3 Физическая реализация БД
. Проектирование интерфейса
.1 Информация о студентах
.2 Редактирование групп
.3 Редактирование оценок
.4 Редактирование предметов
.5 Просмотр диаграмм
Заключение
Список литературы
Приложение А
Введение
Одним из важнейших условий обеспечения
эффективного функционирования любой организации является наличие развитой
автоматизированной информационной системы (АИС). Под АИС понимают все системы,
реализующие автоматизированный сбор, обработку и манипулирование данными и
включающие технические средства обработки данных, программное обеспечение и
обслуживающий персонал. Современной формой АИС являются автоматизированные
банки данных (АБД), которые включают в свой состав вычислительную систему, одну
или несколько БД, систему управления базами данных (СУБД) и набор прикладных
программ (ПП).
Цель данного курсового проекта - разработка
информационной системы “Деканат”. Информационная система “Деканат” предполагает
хранение информации о студентах и учет их успеваемости.
В соответствии с поставленной целью в работе
предполагается решить следующие задачи:
сбор данных;
проектирование базы данных;
формулировка ограничений целостности;
разработка приложения;
Для обеспечения надежности системы управления
данными необходимо выполнить следующие основные требования:
целостность и непротиворечивость данных,
достоверность данных,
простота управления данными.
Постановка задачи
база
данные деканат студент
Спроектировать базу данных и разработать
многопользовательское приложение на основе базы студентов, их успеваемости и
предметов. А также построение графиков оценок по предметам.
Выбрать СУБД, среду программирования и выполнить
задание.
1. Проектирование БД
.1 Выбор программного обеспечения
Мой выбор пал на СУБД MySQL
по причине отличной гибкости, своей открытой архитектуре и большого набора
функционала. MySQL отлично
подходит для создания малых и средних приложений. В добавок, я взял на
вооружение MySQL
Workbench - инструмент для
визуального проектирования баз данных, интегрирующий проектирование,
моделирование, создание и эксплуатацию БД в единое бесшовное окружение для
системы баз данных MySQL.
.2 Проектирование таблиц
Сущность “Группы” имеет атрибуты: название, ключ
группы.
Сущность “Оценки” имеет атрибуты: ключ оценок,
ссылку на студента, ссылку на предмет и значение оценки.
Сущность “Студенты” имеет атрибуты: ключ
студента, фамилия, имя, отчество, дата рождения, номер зачётки и номер группы.
Сущность “Предметы” имеет атрибуты: ключ
предмета, название предмета. Всего БД состоит из 4х таблиц:
1) Группы. Рис.1
Рис.1. Таблица группы
2)
Оценки. Рис.2
Рис.2. Таблица оценки
3) Студенты. Рис.3
Рис.3. Таблица студенты
4) Предметы. Рис.4
Рис.4. Таблица предметы
1.3 Физическая реализация БД
Физическая модель данных строится на базе
логической модели и описывает данные уже средствами конкретной СУБД. Отношения,
разработанные на стадии логического моделирования, преобразуются в таблицы,
атрибуты в столбцы, домены в типы данных, принятых в выбранной конкретной СУБД.
Физическая модель реализации БЗ отражена на рисунке
5.
Рис.5. Физическая модель БД
2. Проектирование интерфейса ИС
Для создания интерфейса я использовал программу Microsoft
Visual Studio
2013. Это мощная среда разработки, позволяющая создавать как консольные, так и
оконные приложения.
.1 Информация о студентах
Первое окно рис.6 представляет собой форму
заполнения данных о студентах, а также ссылки на редактирование оценок, групп и
показ диаграмм.
Рис.6. Окно 1
Значения полей:
1) Фамилия, имя, отчество, дата рождения,
номер зачётки, номер группы - поля ввода информации о студентах.
2) Кнопки добавить, удалить, принять
изменения - для добавления в список, удаления из списка, или изменения данных
студента в списке.
) Кнопки импорт\экспорт - для записи
данных о студентах в xml
файл, а также извлечения данных из файла.
) Кнопка редактировать - открывает окно
редактирования номера группы.
) Кнопка диаграммы - открывает окно
диаграмм.
.2 Редактирование групп
В данном окне рис.7 можно добавлять, удалять и
редактировать группы с помощью соответствующих кнопок.
Рис.7. Группы
.3 Редактирование оценок
Данное окно Рис.8 вызывается двойным кликом по
ФИО студента на 1 окне, и позволяет выбрать из выпадающего списка предмет и
поставить оценку.
Кнопка предметы вызывает окно редактирования
предметов.
Рис.8. Оценки
.4 Редактирование предметов
Окно редактирования предметов Рис.9. позволяет
добавлять, удалять или изменять названия предметов.
Рис.9 Предметы
.5 Просмотр диаграмм
В последнем окне Рис.10 выполнена функция
предоставления всех оценок по выбранному предмету в виде столбцовой или
круговой диаграммы.
Рис.10 Диаграммы
Заключение
В ходе создания курсового проекта были выполнены
следующие этапы:
) Была спроектирована БД “Деканат”
) Определена физическая структура БД
) Разработан прототип информационной системы
“Деканат”
Результатом выполнения стала ИС “Деканат”,
позволяющая хранить информацию о студентах, хранить их оценки по каждому предмету
и выводить цветные графики этих оценок.
Список использованной литературы
1. Бойко
В.В.Проектирование баз данных информационных систем / Бойко В.В., Савинков В.М.
- 2-е изд. - М.: Финансы и статистика, 1989. - 350 с.;
2. Дейт
К. Дж. Введение в системы баз данных.: Пер. с англ. / Дейт К. Дж. - 6-е изд. -
Киев: Диалектика, 1998. - 784 с.;
3. Базы
данных в среде промышленных СУБД Черноморов Г.А. - Новочеркасск : ЮРГТУ, 2006.
- 884 с.;
4. Базы
данных. Язык SQL для студента /В.В. Дунаев: БХВ-Петербург, 2006.- 288с.
5. Золотов
С.Ю. Основы проектирования информационных систем: Учебное пособие. - Томск:
ТУСУР, 2007. - 96 с.
6. Золотов
С.Ю. Проектирование информационных систем: Учебно-методическое пособие.
Методические рекомендации для выполнения курсового проекта, лабораторных работ
и практических занятий по дисциплине «Проектирование информационных систем» -
Томск: ТУСУР, 2013. - 34 с.
Приложение А
Форма 1
using
System;
using
System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;System.Xml;WindowsFormsApplication6
{partial class Form1 : Form
{<students>
studentlist;Form1()
{();= new List<students>();
}void Form1_Load(object sender,
EventArgs e)
{context = new
dekanatEntities();students = context.students;(var st in students)
{.Items.Add(st.Familiya + "
" + st.Imya + " " + st.Otchestvo);.Add(st);
}gruppi = context.gruppi;(var gr in
gruppi)
{.Items.Add(gr.nazvanie);
}
}void button1_Click(object sender,
EventArgs e)
{student = new students();.Familiya
= textBox1.Text;.Imya = textBox2.Text;.Otchestvo =
textBox3.Text;.DataRozhdeniya = dateTimePicker1.Value;.NomerZachetki =
int.Parse(textBox4.Text);context = new dekanatEntities();gr =
context.gruppi.First(g => g.nazvanie == comboBox1.Text);.NomerGruppi =
gr.k_grup;.students.AddObject(student);.SaveChanges();.Items.Add(student.Familiya
+ " " + student.Imya + " " +
student.Otchestvo);.Add(student);
}void
comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}void listBox1_SelectedIndexChanged(object
sender, EventArgs e)
{(listBox1.SelectedIndex > -1)
{st1 =
studentlist[listBox1.SelectedIndex];.Text = st1.Familiya;.Text = st1.Imya;.Text
= st1.Otchestvo;.Value = st1.DataRozhdeniya.Value;.Text =
st1.NomerZachetki.ToString();.Text = st1.gruppi.nazvanie;
}
}void button2_Click(object sender,
EventArgs e)
{(listBox1.SelectedIndex > -1)
{st1 =
studentlist[listBox1.SelectedIndex];context = new dekanatEntities();st2 =
context.students.First(st => st.k_student == st1.k_student);.students.DeleteObject(st2);.SaveChanges();.RemoveAt(listBox1.SelectedIndex);.Items.RemoveAt(listBox1.SelectedIndex);
}
}void button3_Click(object sender,
EventArgs e)
{(listBox1.SelectedIndex > -1)
{.Items.Add(st.Familiya + "
" + st.Imya + " " + st.Otchestvo);.Add(st);
}
}
}void button4_Click(object sender,
EventArgs e)
{f2 = new
Form2();.ShowDialog();context = new dekanatEntities();.Items.Clear();gruppi =
context.gruppi;(var gr in gruppi)
{.Items.Add(gr.nazvanie);
}
}void
listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{form3 = new Form3(studentlist[listBox1.SelectedIndex].k_student);.ShowDialog();
}void button5_Click(object sender,
EventArgs e)
{pathToXml =
"D:\\Student.xml";textWritter = new XmlTextWriter(pathToXml,
Encoding.UTF8);.WriteStartDocument();.WriteStartElement("Elements");.WriteEndElement();.Close();document
= new XmlDocument();.Load(pathToXml);(var studn in studentlist)
{element =
document.CreateElement("element");.DocumentElement.AppendChild(element);attribute
= document.CreateAttribute("фамилия");.Value
= studn.Familiya;.Attributes.Append(attribute);=
document.CreateAttribute("имя");.Value
= studn.Imya;.Attributes.Append(attribute);= document.CreateAttribute("Отчество");.Value
= studn.Otchestvo;.Attributes.Append(attribute);=
document.CreateAttribute("дата");.Value
= studn.DataRozhdeniya.ToString();.Attributes.Append(attribute);=
document.CreateAttribute("группа");.Value
= studn.gruppi.nazvanie;.Attributes.Append(attribute);=
document.CreateAttribute("зачётка");.Value
= studn.NomerZachetki.ToString();.Attributes.Append(attribute);context = new
dekanatEntities();stud = context.students.First(st => st.k_student ==
studn.k_student);(var mk in stud.marks)
{subElement1 =
document.CreateElement(mk.subject.subjname);.InnerText =
mk.markvalue.ToString();.AppendChild(subElement1);
}
}.Save(pathToXml);
}void button6_Click(object sender,
EventArgs e)
{context = new
dekanatEntities();pathToXml = "D:\\Student.xml";xmlDoc = new
XmlDocument();.Load(pathToXml);elementList =
xmlDoc.GetElementsByTagName("Elements").Item(0).ChildNodes;(XmlNode
elem in elementList)
{.Items.Add(elem.Attributes.Item(0).Value
+ " " + elem.Attributes.Item(1).Value + " " +
elem.Attributes.Item(2).Value);stud = new students();.Imya =
elem.Attributes.Item(1).Value;.Familiya =
elem.Attributes.Item(0).Value;.Otchestvo = elem.Attributes.Item(2).Value;.DataRozhdeniya
= DateTime.Parse(elem.Attributes.Item(3).Value);strgr =
elem.Attributes.Item(4).Value;.NomerGruppi = context.gruppi.First(gr =>
gr.nazvanie == strgr).k_grup;.NomerZachetki =
int.Parse(elem.Attributes.Item(5).Value);.Add(stud);.students.AddObject(stud);.SaveChanges();(XmlNode
node in elem.ChildNodes)
{mthrfckr = new marks();.markvalue =
int.Parse(node.InnerText);.fk_student = stud.k_student;sname =
node.Name;.fk_subject=context.subject.First(s => s.subjname ==
sname).k_subject;.marks.AddObject(mthrfckr);.SaveChanges();
}
}
}void button7_Click(object sender,
EventArgs e)
{form5 = new Form5();.Show();
}
}
}
Форма 2
public partial class Form2 : Form
{<gruppi> gruplist;Form2()
{();= new List<gruppi>();
}void listBox1_SelectedIndexChanged(object
sender, EventArgs e)
{(listBox1.SelectedIndex > -1)
{st1 =
gruplist[listBox1.SelectedIndex];.Text = st1.nazvanie;
}
}void button1_Click(object sender,
EventArgs e)
{gruppa = new gruppi();.nazvanie =
textBox1.Text;context = new dekanatEntities();.gruppi.AddObject(gruppa);.SaveChanges();.Items.Add(gruppa.nazvanie);.Add(gruppa);
}void button2_Click(object sender,
EventArgs e)
{gr =
gruplist[listBox1.SelectedIndex];context = new dekanatEntities();gr1 =
context.gruppi.First(gr2 => gr2.k_grup == gr.k_grup);.gruppi.DeleteObject(gr1);.SaveChanges();.RemoveAt(listBox1.SelectedIndex);.Items.RemoveAt(listBox1.SelectedIndex);
}void Form2_Load(object sender,
EventArgs e)
{context = new dekanatEntities();gr1
= context.gruppi;(var gr in gr1)
{.Items.Add(gr.nazvanie);.Add(gr);
}
}void button3_Click(object sender,
EventArgs e)
{gr =
gruplist[listBox1.SelectedIndex];context = new dekanatEntities();gr1 =
context.gruppi.First(gr2 => gr2.k_grup == gr.k_grup);.nazvanie =
textBox1.Text;.SaveChanges();.Items.Clear();.Clear();(var gr2 in
context.gruppi)
{.Items.Add(gr2.nazvanie);.Add(gr2);
}
}
}
Форма 3
public partial class Form3 : Form
{studid;<marks>
mraklist;Form3(int stud)
{();= new List<marks>();=
stud;context = new dekanatEntities();std = context.students.First(st =>
st.k_student == stud);(var mark in std.marks)
{.Items.Add(mark.subject.subjname +
" " + mark.markvalue);.Add(mark);
}predm = context.subject;(var s in
predm)
{.Items.Add(s.subjname);
}
}void button1_Click(object sender,
EventArgs e)
{mark = new marks();Context = new
dekanatEntities();.fk_subject = Context.subject.First(sb => sb.subjname ==
comboBox1.Text).k_subject;.fk_student = studid;.markvalue =
Convert.ToInt32(textBox2.Text);.marks.AddObject(mark);.SaveChanges();.Items.Add(comboBox1.Text
+ " " + mark.markvalue);.Add(mark);
}void button2_Click(object sender,
EventArgs e)
{mr =
mraklist[listBox1.SelectedIndex];context = new dekanatEntities();mr1 =
context.marks.First(mr2 => mr2.k_mark ==
mr.k_mark);.marks.DeleteObject(mr1);.SaveChanges();.RemoveAt(listBox1.SelectedIndex);.Items.RemoveAt(listBox1.SelectedIndex);
}void button3_Click(object sender,
EventArgs e)
{gr =
mraklist[listBox1.SelectedIndex];context = new dekanatEntities();gr1 =
context.marks.First(gr2 => gr2.k_mark == gr.k_mark);.markvalue = Convert.ToInt32(textBox2.Text);.fk_subject
= context.subject.First(sb => sb.subjname ==
comboBox1.Text).k_subject;.SaveChanges();[listBox1.SelectedIndex] =
gr1;.Items[listBox1.SelectedIndex] = (comboBox1.Text + " " +
gr1.markvalue);
}void button4_Click(object sender,
EventArgs e)
{form4 = new
Form4();.ShowDialog();context = new dekanatEntities();.Items.Clear();mks =
context.subject;(var gr in mks)
{.Items.Add(gr.subjname);
}
}
}
Форма 4
public partial class Form4 : Form
{();= new List<subject>();
}void
listBox1_SelectedIndexChanged(object sender, EventArgs e)
{(listBox1.SelectedIndex > -1)
{st1 =
subjlist[listBox1.SelectedIndex];.Text = st1.subjname;
}
}void Form4_Load(object sender,
EventArgs e)
{context = new dekanatEntities();su1
= context.subject;(var subj in su1)
{.Items.Add(subj.subjname);.Add(subj);
}
}void button1_Click(object sender,
EventArgs e)
{predmet = new subject();.subjname =
textBox1.Text;context = new
dekanatEntities();.subject.AddObject(predmet);.SaveChanges();.Items.Add(predmet.subjname);.Add(predmet);
}void button2_Click(object sender,
EventArgs e)
{udalpredm =
subjlist[listBox1.SelectedIndex];context = new dekanatEntities();up1 =
context.subject.First(up2 => up2.k_subject ==
udalpredm.k_subject);.subject.DeleteObject(up1);.SaveChanges();.RemoveAt(listBox1.SelectedIndex);.Items.RemoveAt(listBox1.SelectedIndex);
}void button3_Click(object sender,
EventArgs e)
{izmprd =
subjlist[listBox1.SelectedIndex];context = new dekanatEntities();up1 =
context.subject.First(up2 => up2.k_subject == izmprd.k_subject);.subjname =
textBox1.Text;.SaveChanges();.Items.Clear();.Clear();(var up2 in
context.subject)
{.Items.Add(up2.subjname);.Add(up2);
}
}
}
Форма 5
public partial class Form5 : Form
{Form5()
{();context = new
dekanatEntities();.Items.Clear();predmet = context.subject;(subject gr in
predmet)
{.Items.Add(gr);
}
}void button2_Click(object sender,
EventArgs e)
{subj = comboBox1.SelectedItem as
subject;<int, int> values = new Dictionary<int, int>();context =
new dekanatEntities();(marks mk in context.marks)
{(mk.fk_subject ==
subj.k_subject)(values.ContainsKey(mk.markvalue.Value))[mk.markvalue.Value]++;.Add(mk.markvalue.Value,
1);
}nular = 360 /
values.Values.Sum();angle = 0;gr = pictureBox1.CreateGraphics();.Clear(Color.White);(KeyValuePair<int,
int> kvp1 in values)
{.FillPie(new
SolidBrush(Color.FromArgb((255 / kvp1.Key - 11) % 255, (255 / kvp1.Key + 20) %
255, (255 / kvp1.Key + 58) % 255)), new Rectangle(0, 0, pictureBox1.Width,
pictureBox1.Height),, nular * kvp1.Value);+= nular * kvp1.Value;
}
}void button1_Click(object sender,
EventArgs e)
{subj = comboBox1.SelectedItem as
subject;<int, int> values = new Dictionary<int, int>();context =
new dekanatEntities();(marks mk in context.marks)
{(mk.fk_subject ==
subj.k_subject)(values.ContainsKey(mk.markvalue.Value))[mk.markvalue.Value]++;.Add(mk.markvalue.Value,
1);
}shirina = pictureBox1.Width /
values.Keys.Count;visota = pictureBox1.Height / values.Values.Max();i = 0;rnd =
new Random();gr = pictureBox1.CreateGraphics();.Clear(Color.White);(KeyValuePair<int,
int> kvp in values)
{rekt = new Rectangle(i * shirina,
pictureBox1.Height - kvp.Value * visota, shirina, (visota *
kvp.Value));.Drawing.Drawing2D.LinearGradientBrush brush = new
System.Drawing.Drawing2D.LinearGradientBrush(rekt,
Color.FromArgb(rnd.Next(255), rnd.Next(255), rnd.Next(255)), Color.Black,
180);.FillRectangle(brush, rekt);++;
}
}
}