Помогите построить диаграмму классов, интерфейса и бд(Прочитано 8018 раз)
Сразу хотел бы извиниться если нарушил правила форума, помогите пожалуйста построить диаграмму, т.к. очень нужно.
Нужно построить диаграмму по рабочей программе:
static public class peremenie
{
static public string[] mas_school;
static public string m_school="";
static public string chetvert="";
static public int maksyrokov;
static public int dninedeli;
static public string m_klchas;
static public string m_god1;
static public string m_god2;
// основні дані про школу
static public string[] m_kab;
static public string[] m_klas;
static public string[] m_predmet;
static public string[] prepod;
//таблиці с даними які не можна змінити, наша datagridview
static public int m_nomkab;
static public int m_mest;
static public string m_prepod;
// додати кабінет
static public string m_klimya;
static public int kolychen;
static public string klryk;
static public int smena=0;
// додати новий клас
static public string m_predimya;
static public int spar = 0;
//новий предмет
static public string m_fio;
static public int kolchas;
static public string data;
static public string adres;
static public string tel;
//новий вчитель
static public int[] rabkab;
static public int[] a;
static public string[] nagryzka;
static public int[] rabvr;
// масиви для робочого часу
static public int sprep = 0;
static public int b = 0;
static public int otkrit = 0;
static public string help;
static public int pred = 0;
static public int new_old = 0;
static public int IDklas = 0;
static public int IDshcool = 0;
static public bool[] nomerk;
}
static int sh;
static MySqlDataAdapter da;
static DataSet table;
static string
conn="datasource=localhost;username=root;password=;database=mysql;CharSet=utf8;";
static MySqlConnection mycon;
static DataTable dt;
static string charsetQuery = "SET NAMES 'utf8';";
static public void bdread() //клас для читання даних
{
mycon = new MySqlConnection(conn);
MySqlCommand command1 = new MySqlCommand(charsetQuery, mycon);
MySqlCommand cmd1 = new MySqlCommand("Select * From дані", mycon);
string query = "SELECT * FROM дані;";
da = new MySqlDataAdapter(query, conn);
mycon.Open();
command1.ExecuteNonQuery();
int head;
int k=0;
using (MySqlDataReader dr =
cmd1.ExecuteReader(CommandBehavior.CloseConnection))
{
head = dr.FieldCount;
while (dr.Read())
{
k++;
}
sh = k;
}
mycon.Open();
using (MySqlDataReader dr =
cmd1.ExecuteReader(CommandBehavior.CloseConnection))
{
int j=0;
peremenie.mas_school = new string[k* head];
while (dr.Read())
{
for (int i = 0; i < head; i++)
{
peremenie.mas_school[j * 8 + i] = dr.GetValue(i).ToString().Trim();
}
j++;
}
}
dannie();
/////матриця для даних о школах
cmd1 = new MySqlCommand("Select * From кабинет", mycon);
query = "SELECT * FROM кабинет;";
da = new MySqlDataAdapter(query, conn);
mycon.Open();
command1.ExecuteNonQuery();
k = 0;
using (MySqlDataReader dr =
cmd1.ExecuteReader(CommandBehavior.CloseConnection))
{
while (dr.Read())
{
k++;
}
}
mycon.Open();
using (MySqlDataReader dr =
cmd1.ExecuteReader(CommandBehavior.CloseConnection))
{
peremenie.m_kab = new string[k * 5];
int j = 0;
while (dr.Read())
{
for (int i = 0; i < 5; i++)
{
peremenie.m_kab[j * 5 + i] =dr.GetValue(i).ToString().Trim();
}
j++;
}
}
/////матриця для кабинетів
cmd1 = new MySqlCommand("Select * From классы", mycon);
query = "SELECT * FROM классы;";
da = new MySqlDataAdapter(query, conn);
mycon.Open();
command1.ExecuteNonQuery();
k = 0;
using (MySqlDataReader dr =
cmd1.ExecuteReader(CommandBehavior.CloseConnection))
{
while (dr.Read())
{
k++;
}
}
mycon.Open();
using (MySqlDataReader dr = cmd1.ExecuteReader(CommandBehavior.CloseConnection))
{
int j=0;
peremenie.m_klas = new string[k * 6];
while (dr.Read())
{
for (int i = 0; i <6; i++)
{
peremenie.m_klas[j * 6+ i] = dr.GetValue(i).ToString().Trim();
}
j++;
}
}
////матриця для класів
cmd1 = new MySqlCommand("Select * From предмет", mycon);
query = "SELECT * FROM предмет;";
da = new MySqlDataAdapter(query, conn);
mycon.Open();
command1.ExecuteNonQuery();
k = 0;
using (MySqlDataReader dr =
cmd1.ExecuteReader(CommandBehavior.CloseConnection))
{
while (dr.Read())
{
k++;
}
}
mycon.Open();
using (MySqlDataReader dr =
cmd1.ExecuteReader(CommandBehavior.CloseConnection))
{
int j = 0;
peremenie.m_predmet = new string[k * 4];
while (dr.Read())
{
for (int i = 0; i < 4; i++)
{
peremenie.m_predmet[j *4 + i] = dr.GetValue(i).ToString().Trim();
}
j++;
}
}
//////матриця для предметів
cmd1 = new MySqlCommand("Select * From вчителі", mycon);
query = "SELECT * FROM преподаватели;";
da = new MySqlDataAdapter(query, conn);
mycon.Open();
command1.ExecuteNonQuery();
k = 0;
using (MySqlDataReader dr =
cmd1.ExecuteReader(CommandBehavior.CloseConnection))
{
while (dr.Read())
{
k++;
}
}
mycon.Open();
using (MySqlDataReader dr =
cmd1.ExecuteReader(CommandBehavior.CloseConnection))
{
int j = 0;
peremenie.prepod = new string[k * 7];
while (dr.Read())
{
for (int i = 0; i < 7; i++)
{
peremenie.prepod [j * 7 + i] = dr.GetValue(i).ToString().Trim();
}
j++;
}
}
//// вчителі
cmd1 = new MySqlCommand("Select * From навантаження", mycon);
query = "SELECT * FROM навантаження;";
da = new MySqlDataAdapter(query, conn);
mycon.Open();
command1.ExecuteNonQuery();
k = 0;
using (MySqlDataReader dr =
cmd1.ExecuteReader(CommandBehavior.CloseConnection))
{
while (dr.Read())
{
k++;
}
}
mycon.Open();
using (MySqlDataReader dr =
cmd1.ExecuteReader(CommandBehavior.CloseConnection))
{
int j = 0;
peremenie.nagryzka = new string[k * 6];
while (dr.Read())
{
for (int i = 0; i < 6; i++)
{
peremenie.nagryzka[j * 6 + i] = dr.GetValue(i).ToString().Trim();
}
j++;
}
}
////навантаження
cmd1 = new MySqlCommand("Select * From робчасвчителя", mycon);
query = "SELECT * FROM робчасвчителя;";
da = new MySqlDataAdapter(query, conn);
mycon.Open();
command1.ExecuteNonQuery();
k = 0;
using(MySqlDataReader dr=cmd1.ExecuteReader(CommandBehavior.CloseConnection))
{
while (dr.Read())
{
k++;
}
}
mycon.Open();
using(MySqlDataReader dr=cmd1.ExecuteReader(CommandBehavior.CloseConnection))
{
int j=0;
peremenie.rabvr = new int[k * 10];
while (dr.Read())
{
for (int i = 0; i <10; i++)
{
peremenie.rabvr[j * 10 + i]=
Convert.ToInt32(dr.GetValue(i).ToString().Trim());
}
j++;
}
}
//робочий час
}
public Int32 logicblok(int r, int c, DataGridView data, int f, string predmet)
{
nomer = "";
for (int i = 0; i < peremenie.m_klas.Length / 6; i++)
{
if (data.Columns[c].HeaderText == peremenie.m_klas[i * 6 + 2] && peremenie.m_klas[i * 6 + 1] == Convert.ToString(peremenie.IDshcool))
{
peremenie.IDklas = Convert.ToInt32(peremenie.m_klas[i * 6 + 0]); ////ID
klassa
}
}
int kol = 0; //// кількість предметів в тиждень
string prep = "";
for (int i = 0; i < peremenie.nagryzka.Length / 6; i++)
{
if (predmet == peremenie.nagryzka[i * 6 + 3] &&
Convert.ToInt32(peremenie.nagryzka[i * 6 + 2]) == peremenie.IDklas)
{
kol = Convert.ToInt32(peremenie.nagryzka[i * 6 + 4]);//// naxodim eto kol-vo
prep = peremenie.nagryzka[i * 6 + 5];
standart(prep, r, c, data, f);
if (rabota(prep, r, c, data, f) == 3) ////////////// необхідно передати ім'я вчителя в підпрограму щоб визначити може він вести в цей час
{
if (MessageBox.Show("Ймовірно викладач не зможе. Все одно продовжити?", " Попередження ", MessageBoxButtons.YesNo) ==
DialogResult.No)
{
return 1;
}
}
else if (rabota(prep, r, c, data, f) == 2)
{
MessageBox.Show("Викладач не зможе"., "Попередження ");
return 1;
}
}
}
int sum = 0;
for (int i = 0; i < dataGridView1.RowCount; i++)
{
string[] w;
w= Convert.ToString(dataGridView1.Rows[i].Cells[c].Value).Split('/');
if (w[0]== predmet)
{
sum = sum + 1;
}
string[] w1;
w1= Convert.ToString(dataGridView2.Rows[i].Cells[c].Value).Split('/');
if (w1[0]== predmet)
{
sum = sum + 1;
}
string[] w2;
w2= Convert.ToString(dataGridView3.Rows[i].Cells[c].Value).Split('/');
if (w2[0]== predmet)
{
sum = sum + 1;
}
string[] w3;
w3=Convert.ToString(dataGridView4.Rows[i].Cells[c].Value).Split('/');
if (w3[0]== predmet)
{
sum = sum + 1;
}
string[] w4;
w4= Convert.ToString(dataGridView5.Rows[i].Cells[c].Value).Split('/');
if (w4[0]== predmet)
{
sum = sum + 1;
}
string[] w5;
w5= Convert.ToString(dataGridView6.Rows[i].Cells[c].Value).Split('/');
if (w5[0]== predmet)
{
sum = sum + 1;
}
}
int k = 0;
if (kol <= sum)
{
k = 1;
MessageBox.Show("Неприпустима кількість цього предмета для цього класу"., "Попередження");
return k;
}
for (int i = 0; i < peremenie.m_klas.Length / 6; i++)
{
for (int j = 0; j < dataGridView1.ColumnCount; j++)
{
if (j != c)
{
if (data.Columns[j].HeaderText == peremenie.m_klas[i * 6 + 2] && peremenie.m_klas[i * 6 + 1] == Convert.ToString(peremenie.IDshcool))
{
for (int u = 0; u < peremenie.nagryzka.Length / 6; u++)
{
string[] word;
word = Convert.ToString(data.Rows[r].Cells[j].Value).Split('/');
if (prep == peremenie.nagryzka[u * 6 + 5] &&
Convert.ToInt32(peremenie.nagryzka[u * 6 + 2]) ==
Convert.ToInt32(peremenie.m_klas[i * 6 + 0]) && word[0] == peremenie.nagryzka[u * 6 + 3])
{
k = 1;
MessageBox.Show("Викладач зайнятий"., "Попередження ");
return k;
}
}
}
}
}
}
for (int i = 0; i < data.RowCount; i++)
{
if (r != i)
{
string[] word;
word = Convert.ToString(data.Rows[i].Cells[c].Value).Split('/');
if (word[0] == predmet)
{
if (MessageBox.Show("Ви впевнені, що хочете проставити два однакові предмети в день"?, "Попередження ", MessageBoxButtons.YesNo) == DialogResult.No)
{
k = 1;
return k;
}
}
}
}
return k;
}
public void smena(int i, int j, DataGridView data)
{
bool z = true;
for (int k = 0; k < peremenie.m_klas.Length / 6; k++)
{
if (data.Columns[j].HeaderText == peremenie.m_klas[k * 6 + 2] && peremenie.m_klas[k * 6 + 1] == Convert.ToString(peremenie.IDshcool))
{
z=Convert.ToBoolean( peremenie.m_klas[k * 6 + 4]); ////ID klassa
}
}
if (z==true&& i<4)
{
data.ContextMenuStrip.Enabled = false;
}
else
{
data.ContextMenuStrip.Enabled = true;
}
}
public void smena(int i, int j, DataGridView data)
{
bool z = true;
for (int k = 0; k < peremenie.m_klas.Length / 6; k++)
{
if (data.Columns[j].HeaderText == peremenie.m_klas[k * 6 + 2] && peremenie.m_klas[k * 6 + 1] == Convert.ToString(peremenie.IDshcool))
{
z=Convert.ToBoolean( peremenie.m_klas[k * 6 + 4]); ////ID klassa
}
}
if (z==true&& i<4)
{
data.ContextMenuStrip.Enabled = false;
}
else
{
data.ContextMenuStrip.Enabled = true;
}
}
public int razdel(DataGridView data, int r,int c,string nom)
{
for (int i = 0; i < data.ColumnCount; i++)
{
if (i != c)
{
string[] word;
word = Convert.ToString(data.Rows[r].Cells[i].Value).Split('/');
//MessageBox.Show(Convert.ToString(data.Rows[r].Cells[i].Value), word[0]);
try
{
if (word[1] == nom)
{
MessageBox.Show("Кабінет зайнятий"!, "Попередження ");
return 1;
}
}
catch
{
}
}
}
return 0;
}



Добрый день.

Вы  хотя бы прикрепили  и  саму работу (описание) , откуда программный код взяли :)

Цитировать
Представляемый нами программный продукт предназначен для облегчения ручного и умственного труда завуча при составлении школьного расписания. Использование данного продукта позволит сэкономить время и силы потраченные на выполнение этого трудоёмкого процесса.

А Вы хотите чтоб за Вас нарисовали. В данной работе же есть данные
Очередность ввода данных
•   Данные о школе
•   Предметы, которые ведутся в школе
•   Преподаватели
•   Существующие классы
•   Рабочие кабинеты
+ данные об атрибутах тоже есть.
«Сделай первый шаг, и ты поймешь, что не все так страшно.»
-- L. A. Seneca --



Простите, но я бы сделал сам если бы знал как.
Конечно же есть все:
Тема: Проектирование и реализация объектов учебного процесса в дошкольных учреждениях.
Программа написана сама на C# + добавлена база данных. Место классов таблицы, но так же есть пару классов.
Цели а задание проекта:
1.Обеспечение взаимодействия пользователя с программным продуктом. (Сведение к минимуму усилия пользователя при составлении расписания)
2. Разработка структуры базы данных
- Создание удобного интерфейса для доступа к базе данных и составления расписания.
- Обеспечение оперативного доступа к данным, хранящимся в базе.
- Обеспечение возможности изменения и дополнения данных, хранящихся в базе.
- Обеспечение поиска несоответствий в уже составленном расписании при изменении или дополнении данных, хранящихся в базе.
3.Обеспечение возможности сохранения данных пользовательского проекта в MS Excel для последующей печати.
4. Обеспечение архивирования данных для анализа и повторного использования.
5. Создание справочной информации о работе программы.
Основные требования:
- Двухсменный расписание;
- Сопоставление педагога и предмета;
- Сопоставление предмета и кабинета
- Возможность выбора кабинетов предмета;
- Учет парных предметов;
- Учет числа учебных дней для класса;
- Учет начала второй смены.
Структурное описание разработки. Описание форматов данных:
Прежде чем составлять расписание, программе необходимые данные из школы. Данные вводятся через интерфейс программы, не составит особого труда завучу. Данные, касающиеся наименования школы, учебного года четверти, особых проблем не имеют, их можно изменит в дальнейшей работе программы.
Очередность ввода данных
- Данные о школе
- Предметы, которые ведутся в школе
- Преподаватели
- Существующие классы
- Рабочие кабинеты
Наименование школы имеет текстовый формат, учебный год - формат года.
Четверть, максимальное количество уроков в день, количество учебных дней, классный час имеют свой список данных, из которого необходимо выбрать.
Предметы также имеют текстовый формат. Заполнение предметов может даже не понадобится, поскольку список имеет стандартный набор предметов. Также здесь можно указать на то, что можно ставить два одинаковых предмета подряд.
О преподавателях необходимо заполнить личные данные: ФИО (формат текстовый), номер телефона (формат текстовый), адрес (формат текстовый), дата рождения (формат дата).
Информация о классах содержит наименование класса, классного руководителя, изменение и количество учеников.
Форма с кабинетами содержит номер кабинета, закрепленного за этим кабинетом преподавателя, количество посадочных мест.
Для хранения переменных был создан класс peremenie, этот класс был статичным, что позволяло нам принимать переменную любого конца программы.



Не знаю, правильно ли сделал, кто может просветить буду благодарен:




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

Также есть класс peremenie и еще Данные (дані). Но их я думаю не обязательно пока показывать.

То что у Вас не жирным прямоугольником , это правильнее в атрибуты перенести.
Желательно еще все-таки на русском схему нарисовать.

В целом как пример посмотрите Иерархии классов и UML диаграммы классов. Это Вам со стрелочками поможет.
«Сделай первый шаг, и ты поймешь, что не все так страшно.»
-- L. A. Seneca --




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19