Бывают такие ситуации когда на собрании людей, необходимо быстро составить список присутствующих с указанием фамилии имени и отчества. Это могут быть лекции или семинары, митапы и даже собрания жильцов ТСЖ. Очень часто мы не помним их фамилии или только знакомимся. В таких случаях берут лист бумаги и запускают его, что называется в массы, с просьбой записаться. Возникла такая задача сделать журнал. Для большей конкретики — необходимо записать участников семинара, которые пришли на него в первый раз и регистрировать в течение всего курса обучения. Фио участников не известны заранее, поэтому список мы не можем подготовить заранее.
В журнале указывается список людей по вертикали и даты по горизонтали. Причем если человек был на первом занятии но отсутствовал на последующих, то он автоматически заносится в журнал и делается пометка H
На мой взгляд самое «вкусное» в этой задаче создать графическую форму, при этом особо не заморачиваться. Что касается базы данных, то для хорошего программиста это задача на 5 минут.
Начнем с журнала. Для упрощения построения необходимо прибегнуть к программисткой хитрости))). Если посмотрим на обычный журнал, то в нем уже присутствуют фамилии, поэтому запись в базе данных должна возникать тогда когда лектор семинара ставит отметку об отсутствии курсанта или отметку об отсутствии, в других случаях нет никакой необходимости делать записи, иначе для отображения пустого журнала потребуется сделать запись о каждой пустой клетке — это технически нецелесообразно.
Поэтому будем вносить информацию в клетку журнала только в тот момент если эта информация действительно возникает. Допустим у вас есть веб приложение в котором реализована форма ввода
После того как участник заполняет свои данные и нажимает кнопку ЗАРЕГИСТРИРОВАТЬСЯ заносим данные в в json файл
Автоматически добавляем поле с датой когда кнопка была нажата и полем grade которое означает отметку, например от 2-5 если это оценка или 1 если это отметка присутствия на семинаре. Если вы хотите ставить колы своим ученикам :) то тогда вместо единицы можно использовать -1. В рассматриваем случае остановимся на 1, тк это удобно использовать для подсчета общего количества участников семинара.
Далее я воспользуюсь программой FastReport для построения отчета, его можно скачать по ссылке.
Сам отчет в редакторе FastReport Designer выглядит так
Для его построения используется компонент МАТРИЦА в который с помощью нескольких кликов заносятся 2 поля Name по вертикали Date по горизонта. Поле grade заносим в ячейку.
Для того чтобы журнал отражался в привычной форме добавляем несложный скрипт
действие которого направлено на то, чтобы отражать отсутствующих в привычной форме с пометкой H. Запускаем отчет
Времени затрачено не много, а результат очень качественный. Данный отчет автоматически переносится на следующую страницу что очень удобно для больших ведомостей и заботится об этом не нужно — это программа делает сама. Всем рекомендую пользоваться подобными отчетам для автоматизации повседневных процессов.
В журнале указывается список людей по вертикали и даты по горизонтали. Причем если человек был на первом занятии но отсутствовал на последующих, то он автоматически заносится в журнал и делается пометка H
На мой взгляд самое «вкусное» в этой задаче создать графическую форму, при этом особо не заморачиваться. Что касается базы данных, то для хорошего программиста это задача на 5 минут.
Начнем с журнала. Для упрощения построения необходимо прибегнуть к программисткой хитрости))). Если посмотрим на обычный журнал, то в нем уже присутствуют фамилии, поэтому запись в базе данных должна возникать тогда когда лектор семинара ставит отметку об отсутствии курсанта или отметку об отсутствии, в других случаях нет никакой необходимости делать записи, иначе для отображения пустого журнала потребуется сделать запись о каждой пустой клетке — это технически нецелесообразно.
Поэтому будем вносить информацию в клетку журнала только в тот момент если эта информация действительно возникает. Допустим у вас есть веб приложение в котором реализована форма ввода
После того как участник заполняет свои данные и нажимает кнопку ЗАРЕГИСТРИРОВАТЬСЯ заносим данные в в json файл
[
{"Name":"Ivanov", "Date":"01.01.2019", "grade": 1}
{"Name":"Petrov", "Date":"01.01.2019", "grade": 1}
{"Name":"Ivanov", "Date":"02.01.2019", "grade": 1}
{"Name":"Petrov", "Date":"03.01.2019", "grade": 1}
{"Name":"Ivanov", "Date":"06.01.2019", "grade": 1}
{"Name":"Ivanov", "Date":"07.01.2019", "grade": 1}
{"Name":"Ivanov", "Date":"08.01.2019", "grade": 1}
{"Name":"Ivanov", "Date":"09.01.2019", "grade": 1}
{"Name":"Ivanov", "Date":"10.01.2019", "grade": 1}
{"Name":"Ivanov", "Date":"12.01.2019", "grade": 1}
{"Name":"Maksimova", "Date":"08.01.2019", "grade": 1}
{"Name":"Maksimova", "Date":"09.01.2019", "grade": 1}
{"Name":"Maksimovav", "Date":"10.01.2019", "grade": 1}
{"Name":"Maksimova", "Date":"13.01.2019", "grade": 1}
{"Name":"Semenov", "Date":"01.02.2019", "grade": 1}
{"Name":"Maksimova", "Date":"02.01.2019", "grade": 1}
]
Автоматически добавляем поле с датой когда кнопка была нажата и полем grade которое означает отметку, например от 2-5 если это оценка или 1 если это отметка присутствия на семинаре. Если вы хотите ставить колы своим ученикам :) то тогда вместо единицы можно использовать -1. В рассматриваем случае остановимся на 1, тк это удобно использовать для подсчета общего количества участников семинара.
Далее я воспользуюсь программой FastReport для построения отчета, его можно скачать по ссылке.
Сам отчет в редакторе FastReport Designer выглядит так
Для его построения используется компонент МАТРИЦА в который с помощью нескольких кликов заносятся 2 поля Name по вертикали Date по горизонта. Поле grade заносим в ячейку.
Для того чтобы журнал отражался в привычной форме добавляем несложный скрипт
действие которого направлено на то, чтобы отражать отсутствующих в привычной форме с пометкой H. Запускаем отчет
Времени затрачено не много, а результат очень качественный. Данный отчет автоматически переносится на следующую страницу что очень удобно для больших ведомостей и заботится об этом не нужно — это программа делает сама. Всем рекомендую пользоваться подобными отчетам для автоматизации повседневных процессов.
HawkeyePierce89
Я сейчас дико извиняюсь и очень стараюсь не съёрничать, но что вы хотели этой статьёй рассказать?
С технической точки зрения вся описываемая вами Америка открыта в 1492 году (ещё и в одном поле у вас две сущности).
С менеджерской точки зрения есть Excel в MS Office Online 365 или как оно там называется.
staticlab
С менеджерской точки зрения есть Google Forms, единственная задача которого — заполнять список.
ufocombat Автор
Если вы пустите всех ваших студентов в ваш личный кабинет пожалуйста. А я не хочу туда ни кого пускать. Я сделаю сайт в одну страничку, реализацию которого с технической точки зрения даже не хочу вам приводить и у меня будет журнал в который студенты сами запишутся, а вы будите щурить глаза и тратить время чтобы по вашему экселю вазить и искать каждого студента, я не говорю уже о том что новая группа сама у меня запишется а вы будите сами эксель заполнять.
staticlab
Google Forms как раз и сделан, чтобы не пускать всех в свой личный кабинет, а просто скинуть всем желающим ссылку на готовую публичную страничку, которая хостится на Гугле и которую сможет сделать даже человек, не разбирающийся в программировании вообще. Понимаете, это тот инструмент, который специально был сделан для задач, подобным вашей.
И более того, даже в Google Spreadsheets можно настроить доступ по ссылке с редактированием только для одного конкретного документа. И нажатием одной кнопки этот доступ так же отобрать. Кстати и для старосты курса, если ему нужно вести свой журнал посещений, видеть сразу весь список будет удобно.
ufocombat Автор
Замечание очень по существу. Мне даже нравится такой подход, а как потом распечатать в виде журнала фишка то в этом. Некоторые учебные заведения досих пор живут закопанные дремучими бумажками
staticlab
Что мешает сделать отчёт из Spreadsheet? Как минимум можно доработать оформление листа, в которые будут приходить данные из формы. Google Docs, также как MS Office, позволяет подключать в документ таблицы из Spreadsheets. Также можно использовать какое-нибудь расширение для отчётов. Навскидку, нашёл такое https://gsuite.google.com/marketplace/app/document_studio/429444628321
ufocombat Автор
Мне нравится! Если бы ничего печатать не нужно было так и сделал но мне проще эту печатную форму в ФР настроить особенно когда ее нужно подогнать под требование учебного заведения. Журналы ведь никто не отменял))). ФР хорошо переносит на новые страницы за пределы листа как вправо так и влево. И офис классно только в ФР это бесплатно в демке работает, а у меня мак и лицензионного офиса нет + это возится с ключами, API и тп экспортом в Word — Хорошая идея если бы за это лимон заплатили я бы аж стучал по клавиатуре и вас позвал на проет
ufocombat Автор
Если вы пустите всех ваших студентов в ваш личный кабинет пожалуйста. А я не хочу туда ни кого пускать. Я сделаю сайт в одну страничку, реализацию которого с технической точки зрения даже не хочу вам приводить и у меня будет журнал в который студенты сами запишутся, а вы будите щурить глаза и тратить время чтобы по вашему экселю вазить и искать каждого студента, я не говорю уже о том что новая группа сама у меня запишется а вы будите сами эксель заполнять.
HawkeyePierce89
Открываем доступ к Excel на первой поре, студенты сами себя вносят. Дальше закрываем доступ на редактирование, оставляем только на просмотр.
Искать никого не надо, один раз отсортировать по алфавиту и никаких проблем с вылавливанием студентов нет. Всяко проще один раз преподу плюсик поставить, чем вводить ФИО каждый раз. Первую колонку с ФИО можно запинить.
А если вы хотите отдать «на аутсорс» студентам чтобы они сами заполняли о себе посещаемость — вы вообще не понимаете с чем работаете, но при этом уже делаете какие-то действия по разработке решения. Сначала надо проанализировать проблему, а вы это не сделали (в начале статьи у вас обычная универская вода), а уже только потом на основе проблемы искать максимально простое решение.
И вообще ваш ответ на критику — вы диплом также перед дипломной комиссией защищать будете?
ufocombat Автор
Открываем доступ к Excel — А у меня студенты открывают сайт на телефонах и к концу пары все заполнено без моего участия. А Пар 10 в день…
Это простая задача уничтожения моей персональной рутины.
HawkeyePierce89
Окей, как вы будете решать проблему, что я, студент Иванов Пётр Сидорович, не пришёл к вам на пару, но зашёл к вам на сайт где-то за минуту до конца пары и отметился, что я был?
ufocombat Автор
Во-первых это считается что был. Во вторых время зафиксировано. В Третьих это развитие задачи и на этот случай посадка может закрываться как на самолет (одной кнопкой страница делается не активной)
HawkeyePierce89
А если я пришёл и забыл отметиться, а посадка на самолёт закрыта? Ну вот запара в голове у меня после трёх полуторачасовых пар, что делать тогда? Фактически-то я присутствовал.
Или другой момент, как быть если я при вводе опечатался и ввёл не Иванов Пётр Сидорович, а Иканов Пётр Сидорович, как эту проблему решать?
Или третий момент, у меня рамсы с одногруппником, и он ввёл меня в журнал учёта, а меня нет. И меня вызывают решать задачу, а меня нет, получается что я соврал преподавателю. Как решать такую проблему? Даже не рамсы, а просто как бороться с флудом? Как ограничивать доступ только к своей группе, чтобы никто посторонний не мог ничего вписать?
remzalp
Решал сходную задачу, минимальный код на питоне (bottle), веб-сайт запускается на ноутбуке, коннектится к внутри университетскому вайфаю.
Студентам сообщается ип адрес, куда заходить.
Бонус — студент только из университета способен отметиться, плюс запись ип адреса, с которого регистрировались — можно посмотреть аномалии.
После переклички можно остановить сервер
Отсутствие возможности у студента записаться решается с помощью соседа, у которого возможность есть. Если вся аудитория пришла без средств связи, электричества в здании нет, ноутбук разрядился, то откатываемся на ручку с бумажкой.
Защиты от человеческой ошибки при вводе имени нет, но есть ручной фильтр — «люди, не состоящие в ранее составленном списке», там уже вручную поправить можно.
Единичная не-запись кардинальным образом на итоговые баллы не влияет.
HawkeyePierce89
А теперь возвращаемся к тому, что говорил автор: «Времени затрачено не много, а результат очень качественный» и «Это простая задача уничтожения моей персональной рутины».
У задачи, если её копнуть, очень много подводных камней, каждый из которых нужно проанализировать, продумать решение. Даже в вашей реализации есть подводные камни как «студент только из универа способен отметиться» — я могу просто пойти в столовку при универе и чилить в телефоне, оставаясь при этом в локальной сети универа.
А ещё и отдельно выделять IP. Это ведь надо учитывать время пары, верно, чтобы абы кто не записался? Ещё расходы на доработку системы.
И отсюда вопрос: а стоит ли вся овчинка выделки и стольких заморочей, чтобы всю работу перевести, так сказать, с сервера на клиента? А клиенту мы доверять не можем, вот и делаем кучу-прекучу проверок.
В то время как мой изначально предложенный вариант с Excel максимально лишён каких-то проблем, а уж тем более вышеперечисленных. Да, надо тратить время преподавателя, но это меньшее зло, кмк, чем решать все вышеперечисленные проблемы и пытаться справиться с абьзом системы от студентов.
Или, если решать учёт посещаемости студентами занятий модно-молодёжно, то я бы пошёл совершенно иным путём.
У всех студентов есть RFID-пропуска (по крайней мере в моём универе в глубинке провинции в конце нулевых уже было). Берём малинку и считыватель, ставим около входа в кабинет, студенты заходят на пару и прикладывают пропуск к малинке.
Но это если кустарно, если делать по уму, то можно запилить прям хорошую систему учёта посещаемости и предложить это универу. Универ, я думаю, не откажется от такого, если хорошо попросить, и выделит денег на нормальную реализацию системы с нормальными считывателями около дверей и иными штуками.
И с RFID-пропусками мы решим и проблему преподавателя, что ему не надо вообще вести учёт посещаемости, и студентам не будем добавлять головной боли только потому что кому-то лень вести учёт посещаемости, хотя это вроде как является рабочей обязанностью (могу ошибаться про рабочую обязанность).
ufocombat Автор
Иногда студенты отвечают на чужую фамилию, за друга. IP не нужно, добавляется рпасписание преподователя и группа автоматом определяется-RFID это 666 но главное не эффективно-тогда уж FaceID и AI
HawkeyePierce89
Что значит «RFID это 666»?
И это вполне эффективно, если вы не в курсе, то на многих работах учётов посещаемости работниками работы идёт именно по пропускам с RFID, или что там сейчас в 2019-ом есть.
И студент не сможет «ответить за чужую фамилию», а именно проставить на входе в аудиторию свой пропуск и пропуск друга, т.к. для этого ему придётся на входе в универ через турникеты прочекать свой пропуск и пропуск друга (а простым запросом в БД можно легко найти человека, который в универ не приходил, но почему-то отметился в аудитории), а это уже будет видно и на камере, и вахтёр тоже увидит.
Так что тема с RFID полностью всё автоматизирует и не надо напрягать студентов. Правда после защиты и внедрения такого дипломного проекта для универа я бы уехал из города, чтобы меня не поймали на улице, но это уже другой разговор.
ufocombat Автор
Почитайте, пожалуйста, в вики ru.wikipedia.org/wiki/RFID
Кстати если ходить в службу безопасности за этими данными после каждой лекции или даже 1 раз в день — расскажите потом что они вам скажут. В моем варианте на оборудование 0 рублей в вашем администрирование пропусков их перепрошивка — ну подсчитайте разницу. Но если бы УкрГазпром выдал под это миллион рублей я бы вас пригласил на разработку ТЗ чтоб подороже стало. Учебные заведения типа школ к сожалению не могут тратить такие средства (на каждую аудиторию) на опиум для программистов
HawkeyePierce89
Что почитайте? Если вы не в состоянии выразить свою мысль или вам просто религия не позволяет использовать RFID, то так и скажите.
Зачем ходить? Вы в курсе такого термина как «Выгрузка», и не надо никуда ходить, если уж лично вам каждый день непонятно для чего нужно каждый день знать кто из студентов был, а кто не был.
Опять же моё решение вполне расширяемо и единообразно для любых учебных заведений, хоть школ, хоть университетов, а выдача денег на всё это дело — другой вопрос, если надо помимо универа ещё и школу подключать, то имеет смысл делегировать вопрос денег на более высокий уровень.
ufocombat Автор
Мой начальник службы безопасности сказал пошли его *** данных не дам эта система не для этого. Где мне взять выгрузку?
HawkeyePierce89
Какая система не для этого? Мы к моменту прихода к начальнику службы безопасности уже полностью написали и внедрили систему учёта посещаемости студентами занятий.
Нам даже ходить никуда не надо, просто в ЛК преподавателя делаем выгрузку за определённый день с чистыми данными: дата, группа, ФИО студента.
ufocombat Автор
Сразу видно что вы в вузе не работаете, журнал это документ строгой отчетности — первичка. По нему платят зарплату его нужно вовремя заполнять — на уроке, самый крайний случай на перемене сразу после урока. А звонок звенит его ждет уже другой преподаватель. Очень много хороших рассуждений, за большие деньги и оторванных от реальности (применительно к нашему учебному заведению), к сожалению. Рассказывать как корабли бороздят космическое пространство очень легко, особенно понравилось: Пусть они (те кто сверху) выделят деньги, я с вами полностью согласен, ПУСТЬ!
staticlab
нет
ufocombat Автор
Журналы проверяют вышестоящие органы! Если туда не записать часы зарплату не начислят.
ufocombat Автор
ДА это первичка — по ней составляется ведомость и передается в бухгалтерию — в журнале подпись и количество часов — сфоткаю приложу вам сюда фото! теоретикам
HawkeyePierce89
То есть вместо того, чтобы сразу заполнить журнал, который в любом случае вам заполнять надо и тратить на это время, вы вместо этого дополнительно делаете лишнюю работу, чтобы потом по результатам этой работы заполнить тот же самый журнал.
Логика уровня Б, вопросов к вам больше не имею.
ufocombat Автор
Логика нормально на лекции время тратить на это жалко, поэтому на перемене это делают.
swampskee
Тоже решал подобную задачу, но с помощью генератора qr-кодов.
Отличие в том, что максимальное чисто присутствующих было известно заранее и ссылка, кодирующаяся в qr, генерилась на основе этого количества и времени и жила до конца лекции. Подводных камней миллион, но в моём случае это решала необходимую задачу.
ufocombat Автор
Спасибо вам за отзыв, а то некоторые думают, что задача никому не нужна. С QR — Кодом можно поступить так: выдать его на проектор, а в него зашить ссылку на страничку регистрации. Но ведь тогда смогут переслать его друзьям, которые не на лекции?
ufocombat Автор
Не отметился пишешь в чрупповой чат