За последние 24 часа нас посетил 20741 программист и 1134 робота. Сейчас ищут 374 программиста ...

Электронный журнал (Вива ля школа).

Тема в разделе "Решения, алгоритмы", создана пользователем MaRvel, 2 фев 2009.

  1. MaRvel

    MaRvel Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    20
    Симпатии:
    0
    Мне тут дали такое задание, в счет сдачи одного экзамена мне надо создать и внедрить т/н электронный журнал, то есть учителя должны ставить оценки, все это дело должно обрабатывать в бд и выводиться ученикам. Тот электронный журнал который есть очень далек от совершенства, много недоработок, глючит, нельзя редактировать оценки онлайн и тд

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

    Если кто с доброй душой подкинет пару идеек как это все дело реализовать или кинет ссылки на фак с нужными темами буду премного благодарен...
     
  2. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    таблица учителей.
    таблица учеников.
    таблица оценок.
    пока хватит.
    поля сам сообразишь.

    форма учителя.
    форма ученика (просмотр).
    можно листалки.
     
  3. MaRvel

    MaRvel Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    20
    Симпатии:
    0
    Э... А что такое листалки? Таблицы то я примерно представляю, я не понимаю как это связать, т.е как сделать чтобы пете иванову при запросе оценок по англ языку показывались оценки англ языка, а не алгебры...
     
  4. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    поле в таблице оценок - по какому предмету.

    листалки потом.
     
  5. MaRvel

    MaRvel Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    20
    Симпатии:
    0
    Вот у меня 11 классов и в них несколько подгрупп, допустим, я буду именовать классы так, 1а - 1, 1б - 2 и тд, а оценки тогда как? В поле где я прописываю ученика добавить 11 полей(предметы) и в них это все прописывать??

    А как тогда привязать класс к каким либо ученикам, если использовать ту же систему названий( иванов - 1, петров - 2)?

    Что-то я совсем запутался, даже мысли сформулировать правильно не могу...

    Начну заного,

    Есть поля:

    Ученики

    Оценки

    Учителя

    Классы

    Как мне их объеденять, как присваивать учителям те классы, которые нужны, а классам соответственно тех учеников? Вот что я понять никак не могу =(
     
  6. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    точно.

    это ТРИ таблицы.
    можно четвертую - предметы.


    зы ОбъедИнять.
     
  7. akrinel

    akrinel Активный пользователь

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    MaRvel, с таким уровнем знаний Ваш электронный журнал будет глючить так же как старый или даже похлеще.


    Вообще ИМХО нормальная "CRM" для школы это экзамен разве что на Senior'a в starsoftlabs. ;)
    Я бы лично не рискнул браться в одиночку, разве что с оооооооооооооочень долгими сроками.


    Здесь связь один к многим, это ученика нужно к классу привязывать, а не наоборот)


    ИМХО(первое что пришло в голову, так что такая схема не оптимальна, просто пример):

    Таблица учеников
    В которой есть как минимум:
    id INT NOT NULL AUTO_INCRIMENT- уникальный(неповторяющийся) номер ученика.
    fid - номер класса под которым у нас храниться запись класса в таблице классов.
    name VARCHAR(50)- имя
    family VARCHAR(50) - фамилия

    Таблица классов как минимум это:
    id INT NOT NULL AUTO_INCEMENT- уникальный номер класса
    number INT NOT NULL DEFAULT 1 - номер класса (1, 2, 3) и т.д.
    type ENUM ('a', 'b', 'c', 'd') NOT NULL DEFAULT 'a' - ну типа буква класса
    form_master INT NOT NULL - номер учителя являющегося классным руководителем данного класса
    type ENUM ('6-start', '7-start') - со скольки лет в данный класс поступают
    year_begin INT NOT NULL - год начала обучения
    year_eng INT NOT NULL - год выпуска

    Таблица учителей min:
    id INT NOT NULL AUTO_INCEMENT- уникальный номер учителя
    name VARCHAR(50)
    family VARCHAR(50)

    Таблица оценок min:
    id INT NOT NULL AUTO_INCEMENT - уникальный номер оценки
    value INT NOT NULL ну собственно оценка (1-5).
    fid INT NOT NULL - номер учителя который ее поставил
    сid INT NOT NULL - номер курса за который она выставлена
    type ENUM ('homework', 'written_test', ...) - тип (домашняя работа, вызов на уроке, контрольная и т.д.)
    date_create TIMESTAMP DEFAULT CURRENT_TIMESTAMP - дата когда выставили

    Таблица курсов(под курсом подразумевается предмет, читаемый такому то классу (математика 1-й класс, математика 5-й класс и т.д.) min
    id INT NOT NULL AUTO_INCEMENT - уникальный номер курса
    number INT NOT NULL DEFAULT 1 - номер класса
    subject ENUM ('math', 'russian'....) - предмет (математика русский и т.д.)


    Но в такой схеме ИМХО учителям будет неудобно работать.
    Насколько я помню(давно в школе уже не был) в обычном журнале учителя пишут, например, Контрольная тогда-то, Сочинение такое-то и выставляют стобик оценок.
    Поэтому не помешала бы какая-то табличка, где для курса можно будет прописать на месяц распорядок проверок, и к нему уже привязать оценки.
    Но тут нужно уже нужно побольше подумать, как удобнее реализовать, а думать в обеденный перерыв лениво.
     
  8. MaRvel

    MaRvel Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    20
    Симпатии:
    0
    Да никто и не спорит, что у меня нулевой уровень, просто времени дали до мая почти, так что я подумал, что успею... В целом механизм понял, всем спасибо за помощь =)
     
  9. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Не успеешь. Лажа получится.
     
  10. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    мне больше интересно как связать таблицы ученик/оценка/предмет :(((
    Оценки выставляет кл. руководитель ну или кто там имеет доступ, но за все сразу, а не только по одному предмету...

    Вот такую структуру сделал


    [sql]--
    -- Структура таблицы `predmet`
    --

    CREATE TABLE `predmet` (
    `id` int(5) NOT NULL auto_increment,
    `name` varchar(255) NOT NULL,
    `teacher` varchar(255) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;

    --
    -- Дамп данных таблицы `predmet`
    --


    -- --------------------------------------------------------

    --
    -- Структура таблицы `pupil`
    --

    CREATE TABLE `pupil` (
    `id` int(255) NOT NULL auto_increment,
    `surname` varchar(50) NOT NULL,
    `name` varchar(50) NOT NULL,
    `patronymic` varchar(50) NOT NULL,
    `sex` int(1) NOT NULL,
    `class` varchar(3) NOT NULL,
    `mama` varchar(255) NOT NULL,
    `papa` varchar(255) NOT NULL,
    `contact` varchar(255) NOT NULL,
    `password` varchar(32) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;

    --
    -- Дамп данных таблицы `pupil`
    --


    -- --------------------------------------------------------

    --
    -- Структура таблицы `teacher`
    --

    CREATE TABLE `teacher` (
    `id` int(5) NOT NULL auto_increment,
    `surname` varchar(50) NOT NULL,
    `name` varchar(50) NOT NULL,
    `patronymic` varchar(50) NOT NULL,
    `predmet` varchar(50) NOT NULL,
    `class` varchar(3) NOT NULL,
    `contact` varchar(255) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;

    --
    -- Дамп данных таблицы `teacher`
    --


    -- --------------------------------------------------------

    --
    -- Структура таблицы `сlass`
    --

    CREATE TABLE `сlass` (
    `id` int(5) NOT NULL auto_increment,
    `year_old` mediumint(4) NOT NULL,
    `class` varchar(3) NOT NULL,
    `class_mama` int(3) NOT NULL,
    `year_new` int(4) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;

    --
    -- Дамп данных таблицы `сlass`
    --
    [/sql]


    И еще... привязка предмета к классу.. ведь один и тот же предмет в разных классах :))) И один и тот же предмет могу вести разные преподы в разных классах :) При этом ни один параметр заранее не известен :( ни кол-во предметов в классе, ни сколько преподов его ведет...
     
  11. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    что, никто по-русски не может сформулировать как это объеденить?:(( Помогите :(
     
  12. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Связывать должна таблица `marks` (оценки)
    id pupil_id teacher_id date mark
     
  13. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    аааа, даже так.. не подумал :)) сейчас попробую :)
     
  14. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Добавь поле 'subject_id' . Один учитель часто ведет два разных предмета. [Алгебра и геометрия] или [язык и литература], например.
     
  15. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    karakh
    Точно, самое главное пропустил:)
     
  16. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    karakh, смысл понял, реализацию нет
     
  17. Alost

    Alost Активный пользователь

    С нами с:
    7 фев 2009
    Сообщения:
    335
    Симпатии:
    0
    Адрес:
    Город вокруг невы
    Мое видение реализации проекта.

    Первая таблица
    Таблицы:
    users, содержит в себе уникальный id имя,фамилию,пароль,тип(учитель или ученик) и т.д.

    subjects предметы преподаваемые, из полей уникальный - id, name - название предмета, user_id (id из таблицы users)
    остановлюсь чуть поподробней.Допустим у тебя всего один предмет, алгебра, запись о ней будет выглядеть примерно так

    (id ,name, user_id)
    1,алгебра, 5

    Первые два поля все понятно,а вот третье поле это id пользователя из таблицы users.если ты выполнишь запрос SELECT * FROM `users` WHERE id='5'.то ты получишь запись о пользователе который ведет данный предмет.
    двигаемся дальше.

    classes, содержит в себе информацию о классах, id и name -название класса.

    pupils, вот тут наверно самое сложно,если поймешь тут то дальше сам додумаешь лучше меня.Данная таблицы задаст связь между users и classes, состоять таблица будет из полей user_id - номер пользователя в таблице users, class_id-номер класса в котором учиться ученик.

    marks таблица оценок, теперь все становитсья проще, нужные поля кому поставили оценку, какой предмет, кто поставил, ну и дата оценки.тоесть примерно так mark, pupil_id, subject_id, teacher_id.Тут небольшая непонятка с teacher_id что это,таблицы teachers у нас же нету.teacher_id это номер пользователя в таблице users.По идее это поле совсем не надо, так как у нас есть subject_id который точно даст знать кто из преподователей ведет этот предмет,но я всеже это поле оставил бы, есть завуч который может поставить оценку за другово учителя,поэтому и предлагаю хранить еще данные о том кто именно поставил эту оценку(занес запись о ней в базу).

    Прошу обратить это сугубо мое мнение.Может что то из сказанного пригодиться.

    PS:не ругайте за плохое обьяснение :)