logo
Создание программы для составления расписания в школе

5. Структурное описание разработки. Описание форматов данных

Прежде чем составлять расписание, программе необходимы данные со школы. Данные вводятся через интерфейс программы, что не составит особого труда завучу. Данные, касающиеся наименования школы, учебного года четверти, особых проблем не имеют, их можно изменит в последующей работе программы.

Очередность ввода данных

· Данные о школе

· Предметы, которые ведутся в школе

· Преподаватели

· Существующие классы

· Рабочие кабинеты

Наименование школы имеет текстовый формат, учебный год - формат года.

Четверть, максимальное количество уроков в день, количество учебных дней, и классный час имеют свой список данных, из которого необходимо выбрать.

Предметы также имеют текстовый формат данных. Заполнение предметов может даже и не понадобится, поскольку список имеет стандартный набор предметов. Также здесь можно указать на то, что можно ставить два одинаковых предмета подряд.

О преподавателях необходимо заполнить личные данные: ФИО (формат текстовый), номер телефона (формат текстовый), адрес (формат текстовый), дата рождения (формат дата).

Информация о классах содержит наименование класса, классного руководителя, смена и количество учащихся.

Форма с кабинетами содержит номер кабинета, закрепленного за этим кабинетом преподавателя, количество посадочных мест.

Для хранения переменных был создан класс peremenie, этот класс был статическим, что позволяло нам брать переменную из любого конца программы.

Программный код:

static public class peremenie

{

static public string[] mas_shkola;

static public string m_shkola="";

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;

}

ИНФОРМАЦИЮ, НА ОСНОВЕ КОТОРОЙ СТРОИТСЯ РАСПИСАНИЕ, НЕ РЕКОМЕНДУЕТСЯ ИЗМЕНЯТЬ ПОСЛЕ ТОГО, КАК ЗАВУЧ НАЧАЛ ЕГО СОСТАВЛЯТЬ!!!

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

В самой программе работа с данными происходит следующим образом:

Если наша школа уже есть в списке, и мы ее просто открываем, тогда все данные будут перемещены в специальные матрицы. И затем информация уже извлекается из матриц, согласно условиям. Когда же мы создаем либо изменяем информацию, она изменяется или создается в таблицах при нажатии на кнопку ОК или ДАЛЕЕ.

Программный код для извлечения информации из таблиц MySql:

программный алгоритм интерфейс пользовательский

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_shkola = new string[k* head];

while (dr.Read())

{

for (int i = 0; i < head; i++)

{

peremenie.mas_shkola[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++;

}

}

//рабочее время

}