Разработка программы "Электронный школьный журнал"
Функции программного комплекса "Электронный школьный журнал", диаграмма вариантов его использования. Выбор среды программирования. Требования к техническим и программным средствам. Построение модели данных, отладка системы. Руководство пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 04.04.2015 |
Размер файла | 1,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Конструкция ВДТ должна предусматривать регулирование яркости и контрастности.
Документация на проектирование, изготовление и эксплуатацию ПЭВМ не должна противоречить требованиям санитарно-эпидемиологических правил и нормативов.
5.2 Требования к помещениям для работы с ПЭВМ
Помещения для эксплуатации ПЭВМ должны иметь естественное и искусственное освещение. Эксплуатация ПЭВМ в помещениях без естественного освещения допускается только при соответствующем обосновании и наличии положительного санитарно-эпидемиологического заключения, выданного в установленном порядке.
Естественное и искусственное освещение должно соответствовать требованиям действующей нормативной документации. Окна в помещениях, где эксплуатируется вычислительная техника, преимущественно должны быть ориентированы на север и северо-восток. Оконные проемы должны быть оборудованы регулируемыми устройствами типа: жалюзи, занавесей, внешних козырьков и др.
Площадь на одно рабочее место пользователей ПЭВМ с ВДТ на базе электронно-лучевой трубки (ЭЛТ) должна составлять не менее 6 м2, с ВДТ на базе плоских дискретных экранов (жидкокристаллические, плазменные) - 4,5 м2.
При использовании ПЭВМ с ВДТ на базе ЭЛТ (без вспомогательных устройств - принтер, сканер и др.), отвечающих требованиям международных стандартов безопасности компьютеров, с продолжительностью работы менее 4-х часов в день допускается минимальная площадь 4,5 м2 на одно рабочее место пользователя (взрослого и учащегося высшего профессионального образования).
Для внутренней отделки интерьера помещений, где расположены ПЭВМ, должны использоваться диффузно отражающие материалы с коэффициентом отражения для потолка - 0,7 - 0,8; для стен - 0,5 - 0,6; для пола - 0,3 - 0,5.
Полимерные материалы используются для внутренней отделки интерьера помещений с ПЭВМ при наличии санитарно-эпидемиологического заключения.
Помещения, где размещаются рабочие места с ПЭВМ, должны быть оборудованы защитным заземлением (занулением) в соответствии с техническими требованиями по эксплуатации.
Не следует размещать рабочие места с ПЭВМ вблизи силовых кабелей и вводов, высоковольтных трансформаторов, технологического оборудования, создающего помехи в работе ПЭВМ.
В производственных помещениях, в которых работа с использованием ПЭВМ является вспомогательной, температура, относительная влажность и скорость движения воздуха на рабочих местах должны соответствовать действующим санитарным нормам микроклимата производственных помещений.
В производственных помещениях, в которых работа с использованием ПЭВМ является основной (диспетчерские, операторские, расчетные, кабины и посты управления, залы вычислительной техники и др.) и связана с нервно-эмоциональным напряжением, должны обеспечиваться оптимальные параметры микроклимата для категории работ 1А и 1Б в соответствии с действующими санитарно-эпидемиологическими нормативами микроклимата производственных помещений. На других рабочих местах следует поддерживать параметры микроклимата на допустимом уровне, соответствующем требованиям указанных выше нормативов.
В помещениях, оборудованных ПЭВМ, проводится ежедневная влажная уборка и систематическое проветривание после каждого часа работы на ПЭВМ.
Уровни положительных и отрицательных аэроионов в воздухе помещений, где расположены ПЭВМ, должны соответствовать действующим санитарно-эпидемиологическим нормативам
Содержание вредных химических веществ в воздухе производственных помещений, в которых работа с использованием ПЭВМ является вспомогательной, не должно превышать предельно допустимых концентраций вредных веществ в воздухе рабочей зоны в соответствии с действующими гигиеническими нормативами.
Содержание вредных химических веществ в производственных помещениях, в которых работа с использованием ПЭВМ является основной (диспетчерские, операторские, расчетные, кабины и посты управления, залы вычислительной техники и др.), не должно превышать предельно допустимых концентраций загрязняющих веществ в атмосферном воздухе населенных мест в соответствии с действующими гигиеническими нормативами.
Содержание вредных химических веществ в воздухе помещений, предназначенных для использования ПЭВМ во всех типах образовательных учреждений, не должно превышать предельно допустимых среднесуточных концентраций для атмосферного воздуха в соответствии с действующими санитарно-эпидемиологическими нормативами.
5.3 Требования к уровням шума и вибрации
В производственных помещениях при выполнении основных или вспомогательных работ с использованием ПЭВМ уровни шума на рабочих местах не должны превышать предельно допустимых значений, установленных для данных видов работ в соответствии с действующими санитарно-эпидемиологическими нормативами.
В помещениях всех образовательных учреждений, где расположены ПЭВМ, уровни шума не должны превышать допустимых значений, установленных для жилых и общественных зданий.
При выполнении работ с использованием ПЭВМ в производственных помещениях уровень вибрации не должен превышать допустимых значений вибрации для рабочих мест (категория 3, тип "В”) в соответствии с действующими санитарно-эпидемиологическими нормативами. В помещениях всех типов образовательных учреждений, в которых эксплуатируются ПЭВМ, уровень вибрации не должен превышать допустимых значений для жилых и общественных зданий в соответствии с действующими санитарно-эпидемиологическими нормативами.
Шумящее оборудование (печатающие устройства, серверы и т.п.), уровни шума которого превышают нормативные, должно размещаться вне помещений с ПЭВМ.
5.4 Требования к освещению на рабочих местах
Рабочие столы следует размещать таким образом, чтобы видеодисплейные терминалы (ВДТ) были ориентированы боковой стороной к световым проемам, чтобы естественный свет падал преимущественно слева.
Искусственное освещение в помещениях для эксплуатации ПЭВМ должно осуществляться системой общего равномерного освещения. В производственных и административно-общественных помещениях, в случаях преимущественной работы с документами, следует применять системы комбинированного освещения (к общему освещению дополнительно устанавливаются светильники местного освещения, предназначенные для освещения зоны расположения документов).
Освещенность на поверхности стола в зоне размещения рабочего документа должна быть 300 - 500 лк. Освещение не должно создавать бликов на поверхности экрана. Освещенность поверхности экрана не должна быть более 300 лк.
Следует ограничивать прямую блесткость от источников освещения, при этом яркость светящихся поверхностей (окна, светильники и др.), находящихся в поле зрения, должна быть не более 200 кд/м2.
Следует ограничивать отраженную блесткость на рабочих поверхностях (экран, стол, клавиатура и др.) за счет правильного выбора типов светильников и расположения рабочих мест по отношению к источникам естественного и искусственного освещения, при этом яркость бликов на экране ПЭВМ не должна превышать 40 кд/м2 и яркость потолка не должна превышать 200 кд/м2.
Показатель ослепленности для источников общего искусственного освещения в производственных помещениях должен быть не более 20. Показатель дискомфорта в административно-общественных помещениях - не более 40, в учебных помещениях - не более 15.
Яркость светильников общего освещения в зоне углов излучения от 50 до 90 градусов с вертикалью в продольной и поперечной плоскостях должна составлять не более 200 кд/м2, защитный угол светильников должен быть не менее 40 градусов.
Светильники местного освещения должны иметь не просвечивающий отражатель с защитным углом не менее 40 градусов.
Следует ограничивать неравномерность распределения яркости в поле зрения пользователя ПЭВМ, при этом соотношение яркости между рабочими поверхностями не должно превышать 3: 1 - 5: 1, а между рабочими поверхностями и поверхностями стен и оборудования - 10: 1.
В качестве источников света при искусственном освещении следует применять преимущественно люминесцентные лампы типа ЛБ и компактные люминесцентные лампы (КЛЛ). При устройстве отраженного освещения в производственных и административно-общественных помещениях допускается применение металлогалогенных ламп. В светильниках местного освещения допускается применение ламп накаливания, в том числе галогенных.
Для освещения помещений с ПЭВМ следует применять светильники с зеркальными параболическими решетками, укомплектованными электронными пускорегулирующими аппаратами (ЭПРА). Допускается использование многоламповых светильников с электромагнитными пускорегулирующими аппаратами (ЭПРА), состоящими из равного числа опережающих и отстающих ветвей. Применение светильников без рассеивателей и экранирующих решеток не допускается. При отсутствии светильников с ЭПРА лампы многоламповых светильников или рядом расположенные светильники общего освещения следует включать на разные фазы трехфазной сети.
Общее освещение при использовании люминесцентных светильников следует выполнять в виде сплошных или прерывистых линий светильников, расположенных сбоку от рабочих мест, параллельно линии зрения пользователя при рядном расположении видеодисплейных терминалов. При периметральном расположении компьютеров линии светильников должны располагаться локализовано над рабочим столом ближе к его переднему краю, обращенному к оператору.
Коэффициент запаса (Кз) для осветительных установок общего освещения должен приниматься равным 1,4.
Коэффициент пульсации не должен превышать 5%.
Для обеспечения нормируемых значений освещенности в помещениях для использования ПЭВМ следует проводить чистку стекол оконных рам и светильников не реже двух раз в год и проводить своевременную замену перегоревших ламп.
5.5 Требования к уровням электромагнитных полей
Временные допустимые уровни электромагнитных полей (ЭМП), создаваемых ПЭВМ на рабочих местах пользователей, а также в помещениях образовательных учреждений, представлены в таблице 5.1.
Таблица 5.1
Временные допустимые уровни ЭМП.
Наименование параметров |
ВДУ ЭМП |
||
Напряженность электрического поля |
В диапазоне частот 5 Гц - 2 кГц |
25 В/м |
|
В диапазоне частот 2 кГц - 400 кГц |
2,5 В/м |
||
Плотность магнитного потока |
В диапазоне частот 5 Гц - 2 кГц |
250 нТл |
|
В диапазоне частот 2 кГц - 400 кГц |
25 нТл |
||
Электростатический потенциал экрана видеомонитора |
500 В |
5.6 Общие требования к организации рабочих мест пользователей ПЭВМ
При размещении рабочих мест с ПЭВМ расстояние между рабочими столами с видеомониторами (в направлении тыла поверхности одного видеомонитора и экрана другого видеомонитора) должно быть не менее 2,0 м, а расстояние между боковыми поверхностями видеомониторов - не менее 1,2 м.
Рабочие места с ПЭВМ в помещениях с источниками вредных производственных факторов должны размещаться в изолированных кабинах с организованным воздухообменом.
Рабочие места с ПЭВМ при выполнении творческой работы, требующей значительного умственного напряжения или высокой концентрации внимания, рекомендуется изолировать друг от друга перегородками высотой 1,5 - 2,0 м.
Экран видеомонитора должен находиться от глаз пользователя на расстоянии 600 - 700 мм, но не ближе 500 мм с учетом размеров алфавитно-цифровых знаков и символов.
Конструкция рабочего стола должна обеспечивать оптимальное размещение на рабочей поверхности используемого оборудования с учетом его количества и конструктивных особенностей, характера выполняемой работы. При этом допускается использование рабочих столов различных конструкций, отвечающих современным требованиям эргономики. Поверхность рабочего стола должна иметь коэффициент отражения 0,5 - 0,7.
Конструкция рабочего стула (кресла) должна обеспечивать поддержание рациональной рабочей позы при работе на ПЭВМ, позволять изменять позу с целью снижения статического напряжения мышц шейно-плечевой области и спины для предупреждения развития утомления. Тип рабочего стула (кресла) следует выбирать с учетом роста пользователя, характера и продолжительности работы с ПЭВМ. Рабочий стул (кресло) должен быть подъемно-поворотным, регулируемым по высоте и углам наклона сиденья и спинки, а также расстоянию спинки от переднего края сиденья, при этом регулировка каждого параметра должна быть независимой, легко осуществляемой и иметь надежную фиксацию.
Поверхность сиденья, спинки и других элементов стула (кресла) должна быть полумягкой, с нескользящим, слабо электризующимся и воздухопроницаемым покрытием, обеспечивающим легкую очистку от загрязнений.
5.7 Требования к организации и оборудованию рабочих мест с ПЭВМ для взрослых пользователей
Высота рабочей поверхности стола для взрослых пользователей должна регулироваться в пределах 680-800 мм; при отсутствии такой возможности высота рабочей поверхности стола должна составлять 725 мм.
Модульными размерами рабочей поверхности стола для ПЭВМ, на основании которых должны рассчитываться конструктивные размеры, следует считать: ширину 800, 1000, 1200 и 1400 мм, глубину 800 и 1000 мм при нерегулируемой его высоте, равной 725 мм.
Рабочий стол должен иметь пространство для ног высотой не менее 600 мм, шириной - не менее 500 мм, глубиной на уровне колен - не менее 450 мм и на уровне вытянутых ног - не менее 650 мм.
Конструкция рабочего стула должна обеспечивать:
ширину и глубину поверхности сиденья не менее 400 мм;
поверхность сиденья с закругленным передним краем;
регулировку высоты поверхности сиденья в пределах 400 - 550 мм и углам наклона вперед до 15 град. и назад до 5 град.;
высоту опорной поверхности спинки 300 +/ - 20 мм, ширину - не менее 380 мм и радиус кривизны горизонтальной плоскости - 400 мм;
угол наклона спинки в вертикальной плоскости в пределах +/ - 30 градусов;
регулировку расстояния спинки от переднего края сиденья в пределах 260 - 400 мм;
стационарные или съемные подлокотники длиной не менее 250 мм и шириной - 50 - 70 мм;
регулировку подлокотников по высоте над сиденьем в пределах 230 +/ - 30 мм и внутреннего расстояния между подлокотниками в пределах 350 - 500 мм.
Рабочее место пользователя ПЭВМ следует оборудовать подставкой для ног, имеющей ширину не менее 300 мм, глубину не менее 400 мм, регулировку по высоте в пределах до 150 мм и по углу наклона опорной поверхности подставки до 20 град. Поверхность подставки должна быть рифленой и иметь по переднему краю бортик высотой 10 мм.
Клавиатуру следует располагать на поверхности стола на расстоянии 100 - 300 мм от края, обращенного к пользователю, или на специальной, регулируемой по высоте рабочей поверхности, отделенной от основной столешницы.
5.8 Требования к организации и оборудованию рабочих мест с ПЭВМ для обучающихся в учреждениях высшего профессионального образования
Помещения для занятий оборудуются одноместными столами, предназначенными для работы с ПЭВМ.
Конструкция одноместного стола для работы с ПЭВМ должна предусматривать:
две раздельные поверхности: одна горизонтальная для размещения ПЭВМ с плавной регулировкой по высоте в пределах 520 - 760 мм и вторая - для клавиатуры с плавной регулировкой по высоте и углу наклона от 0 до 15 градусов с надежной фиксацией в оптимальном рабочем положении (12-15 градусов);
ширину поверхностей для ВДТ и клавиатуры не менее 750 мм (ширина обеих поверхностей должна быть одинаковой) и глубину не менее 550 мм;
опору поверхностей для ПЭВМ или ВДТ и для клавиатуры на стояк, в котором должны находиться провода электропитания и кабель локальной сети. Основание стояка следует совмещать с подставкой для ног;
отсутствие ящиков;
увеличение ширины поверхностей до 1200 мм при оснащении рабочего места принтером.
Высота края стола, обращенного к работающему с ПЭВМ, и высота пространства для ног должны соответствовать росту обучающихся в обуви. Ширина и глубина пространства для ног определяются конструкцией стола.
При наличии высокого стола и стула, не соответствующих росту обучающихся, следует использовать регулируемую по высоте подставку для ног.
Линия взора должна быть перпендикулярна центру экрана и оптимальное ее отклонение от перпендикуляра, проходящего через центр экрана в вертикальной плоскости, не должно превышать +/ - 5 градусов, допустимое +/ - 10 градусов.
Рабочее место с ПЭВМ оборудуют стулом, основные размеры которого должны соответствовать росту обучающихся в обуви (таблица 5.10.2).
5.9 Требования к организации медицинского обслуживания пользователей ПЭВМ
Лица, работающие с ПЭВМ более 50% рабочего времени (профессионально связанные с эксплуатацией ПЭВМ), должны проходить обязательные предварительные при поступлении на работу и периодические медицинские осмотры в установленном порядке.
Женщины со времени установления беременности переводятся на работы, не связанные с использованием ПЭВМ, или для них ограничивается время работы с ПЭВМ (не более 3-х часов за рабочую смену) при условии соблюдения гигиенических требований, установленных Санитарными правилами. Трудоустройство беременных женщин следует осуществлять в соответствии с законодательством Российской Федерации.
Медицинское освидетельствование студентов высших учебных заведений на предмет установления противопоказаний к работе с ПЭВМ проводится в установленном порядке.
5.10 Требования к проведению государственного санитарно-эпидемиологического надзора и производственного контроля
Государственный санитарно-эпидемиологический надзор за производством и эксплуатацией ПЭВМ осуществляется в соответствии с Санитарными правилами.
Не допускается реализация и эксплуатация на территории Российской Федерации типов ПЭВМ, не имеющих санитарно-эпидемиологического заключения.
Инструментальный контроль за соблюдением требований настоящих Санитарных правил осуществляется в соответствии с действующей нормативной документацией.
Производственный контроль за соблюдением санитарных правил осуществляется производителем и поставщиком ПЭВМ, а также предприятиями и организациями, эксплуатирующими ПЭВМ в установленном порядке, в соответствии с действующими санитарными правилами и другими нормативными документами.
5.11 Требования к утилизации отходов производства
В процессе эксплуатации ПЭВМ в вычислительных центрах образуются различные отходы производства (например: бумажные отходы, использованные картриджи для копировальной и множительной техники и так далее). В связи с этим встаёт вопрос об утилизации этих отходов. Отходы по степени воздействия на человека распределяются на четыре класса опасности:
1 класс - чрезвычайноопасные;
2 класс - высокоопасные;
3 класс - умеренноопасные;
4 класс - малоопасные.
Отходы по степени воздействия на окружающую среду распределяются на пять классов опасности:
1 класс - чрезвычайноопасные;
2 класс - высокоопасные;
3 класс - умеренноопасные;
4 класс - малоопасные;
5 класс - неопасные.
Определение класса опасности отхода осуществляется соответствии с санитарными правилами.
Процессы обращения с отходами (жизненный цикл отходов) включают в себя следующие этапы: образование, накопление и временное хранение, первичная обработка (сортировка, нейтрализация, прессование, тарирование и др.), транспортировка, вторичная переработка (обезвреживание, модификация, утилизация, использование в качестве вторичного сырья), складирование, захоронение и сжигание. Например, бумага идет в качестве вторичного сырья на целлюлозу, а микропроцессоры идут на переплавку. С отходами производства следует обращаться в соответствии с требованиями и "Инструкции по обращению с отходами производства и потребления" №585.03-39-2004.
Санитарно-эпидемиологические правила устанавливают гигиенические требования к размещению, устройству, технологии, режиму эксплуатации и рекультивации мест централизованного использования, обезвреживания и захоронения отходов производства и потребления (объектов).
Заключение
В процессе дипломного проектирования был изучен процесс проектирования работы со школьным журналом. В результате проведенного анализа процесса работы журнала была разработана функциональная модель процесса и обоснована актуальность разработки журнала и повышения эффективности работы учителя за счет автоматизации работы со школьным журналом.
В результате проведенного обзора и анализа CASE-средств по приведенным критериям для разработки журнала был выбран следующий комплекс методологически и технологически согласованных инструментальных средств, использующих международные методики и поддерживающие полный жизненный цикл программного обеспечения:
– Объектно-ориентированное CASE-средство Rational Rose - для проектирования программного обеспечения и создания спецификации проекта;
– CASE-средство ERwin - средство концептуального моделирования базы данных;
– CASE-средство BPwin - функциональная модель предназначена для описания существующих бизнес процессов;
– Borland Delphi - для разработки приложений.
Электронный журнал позволяет на основе синхронной работы с базами данными учеников и сотрудников осуществлять автоматизацию процесса с минимизацией материальных и трудовых затрат и является информационной производственного планирования для реализации заданной программы учета успеваемости учеников.
В данное время журнал готовиться для внедрения в образовательные учреждения для синхронной работы c уже внедренными базами данных учеников и сотрудников, представленных в наглядном виде в данном дипломном проекте.
Список литературы
1. C. Орлик. Delphi 6. М.: Бином. 2005
2. Д. Тейлор, Д. Мишель, Д. Пенман, Т. Гоггин, Д. Шемитц. Delhi 3/ Спб.: Питер. 1998
3. Энсор Д., Стивенсон Й. Oracle. Проектирование баз данных. К.: BHV, 1999.
4. Маклаков С.В., BPWin-IRWin. П.: Питер. 1998
5. Волкова К.А., Казакова Ф.К. Предприятие. - М.: Экономика, 2005
6. Хендерсон К. Руководство разработчика баз данных в Delphi 6. - Киев: Диалектика, 2005.
7. Ундозерова А.Н. Разработка аналитической части дипломного проекта. Методические указания для студентов специальности "Программное обеспечение вычислительной техники и автоматизированных систем”. - Северодвинск: РИО Севмашвтуза, 2003.
8. Трухин Н.А. Разработка проектной части дипломного проекта. Методические указания для студентов специальности "Программное обеспечение вычислительной техники и автоматизированных систем”. - Северодвинск: РИО Севмашвтуза, 2003.
9. ГОСТ 34.602 - 89. Информационная технология. Комплекс стандартов на автоматизированные системы. Техническое задание на создание автоматизированной системы. - М.: Изд-во стандартов, 1991.
10. ГОСТ 2.105-79. Общие требования к оформлению текстовых документов.
11. ГОСТ 2.106-68. Текстовые документы.
Приложение
Исходный текст программы
USch_reg. pas
unit USch_reg;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin, Buttons, ExtCtrls;
type
TFSch_Reg = class (TForm)
Panel1: TPanel;
Panel2: TPanel;
BitBtn1: TBitBtn;
Panel3: TPanel;
BitBtn2: TBitBtn;
Panel4: TPanel;
ComboBox1: TComboBox;
Label1: TLabel;
SpinEdit1: TSpinEdit;
Edit1: TEdit;
Label2: TLabel;
Label3: TLabel;
procedure BitBtn2Click (Sender: TObject);
procedure BitBtn1Click (Sender: TObject);
procedure FormActivate (Sender: TObject);
procedure ComboBox1KeyUp (Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Panel3Click (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FSch_Reg: TFSch_Reg;
implementation
uses USch_TypeDB, UCh_TypeDB;
{$R *. dfm}
procedure TFSch_Reg. BitBtn2Click (Sender: TObject);
begin
close;
end;
procedure TFSch_Reg. BitBtn1Click (Sender: TObject);
var i: longint;
Findrec: boolean;
begin
if ComboBox1. Text='' then BitBtn2. Click;
Depart: =ComboBox1. Text;
password: =Edit1. Text;
N_Dep: =SpinEdit1. Value;
StartDirDB: =StartDir+'\Institutions\Data_School_'+Depart+'_'+IntToStr (N_Dep);
StartDirDB_p: =StartDir+'\Institutions\Data_Child_'+Depart+'_'+IntToStr (N_Dep);
if not DirectoryExists (StartDirDB)
then begin
ShowMessage ('Дирректории БД '+Depart+' '+IntToStr (N_Dep) +#13+StartDir+'\Institutions\Data_School_'+Depart+'_'+IntToStr (N_Dep) +#13+'не существует! '+#13+'Востановите директорию. ');
end;
Findrec: =false;
for i: =0 to ComboBox1. Items. Count-1 do
if ComboBox1. Items [i] =ComboBox1. Text then begin Findrec: =true; break; end;
if not Findrec then begin ComboBox1. Items. Add (ComboBox1. Text); ComboBox1. Items. SaveToFile (StartDir+'\opt. opt'); end;
close;
end;
procedure TFSch_Reg. FormActivate (Sender: TObject);
begin
StartDirDB: ='';
if not FileExists (StartDir+'\opt. opt')
then begin
MessageDlg ('Нет файла ключа! ',mtError, [mbOk],0);
BitBtn2. Click;
end
else begin
ComboBox1. Items. Clear;
ComboBox1. Items. LoadFromFile (StartDir+'\opt. opt');
if ComboBox1. Items. Count>0
then begin
ComboBox1. ItemIndex: =0;
ComboBox1. Text: =ComboBox1. Items [0];
SpinEdit1. Value: =0;
end;
end;
Panel2. Width: =BitBtn1. Left+BitBtn1. Width+20;
FSch_Reg. Width: =SpinEdit1. Left+SpinEdit1. Width+20;
SpinEdit1. Value: =5;
end;
procedure TFSch_Reg.comboBox1KeyUp (Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
// Caption: =MoneyWillProwrite (StringToDouble (ComboBox1. Text),true);
end;
procedure TFSch_Reg. Panel3Click (Sender: TObject);
begin
ComboBox1. ItemIndex: =1;
ComboBox1. Text: =ComboBox1. Items [ComboBox1. ItemIndex];
SpinEdit1. Value: =5;
Edit1. Text: ='УО0';
end;
end.
unit UTch_Journal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, Buttons, Grids, UCh_TypeDB, ShellApi, ExtCtrls, ComObj, ComCtrls;
type
TfJournal = class (TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
sgClass: TStringGrid;
sgTabNumber: TStringGrid;
sgIndivid: TStringGrid;
sgIndividInvisible: TStringGrid;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N9: TMenuItem;
N8: TMenuItem;
Panel: TPanel;
cbClass: TComboBox;
sgMark: TStringGrid;
sgTerm: TStringGrid;
sgMarkInvisible: TStringGrid;
btnSaveJournal: TBitBtn;
btnLoadJournal: TBitBtn;
lbClass: TLabel;
lbSubject: TLabel;
sgNClass: TStringGrid;
sgNSubject: TStringGrid;
pnSearch: TPanel;
lbTeacherTabN: TLabel;
sgSearchStPlan: TStringGrid;
lbTeacherTabNStrel: TLabel;
sgSearchTeachLoadIndivid: TStringGrid;
sgStPlanTotal: TStringGrid;
sgSubjectTotal: TStringGrid;
sgDate: TStringGrid;
lbUchebGod: TLabel;
btnClear: TButton;
btnAddTerm: TButton;
sgItogMark: TStringGrid;
Splitter1: TSplitter;
Splitter2: TSplitter;
Splitter3: TSplitter;
btnItogMark: TBitBtn;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure cbClassClick (Sender: TObject);
procedure btnSaveJournalClick (Sender: TObject);
procedure btnLoadJournalClick (Sender: TObject);
procedure FormShow (Sender: TObject);
procedure btnClearClick (Sender: TObject);
procedure Button1Click (Sender: TObject);
procedure btnAddTermClick (Sender: TObject);
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure btnItogMarkClick (Sender: TObject);
procedure sgMarkExit (Sender: TObject);
procedure sgMarkSetEditText (Sender: TObject; ACol, ARow: Integer;
const Value: String);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fJournal: TfJournal;
index1: Integer;
f_MyValueParam: file of TValueParam;
TMyValueParam: TValueParam;
f_MyParamInd: file of TParamIndivid;
TMyParamInd: TParamIndivid;
f_MyIndivid: file of TIndivid;
TMyIndivid: TIndivid;
f_Journal, f_JournalOld: file of TJournal;
TMyJournal, TMyJournalOld: TJournal;
f_Class: file of TClass;
TMyClass: TClass;
f_Subject: file of TSubject;
TMySubject: TSubject;
f_IndClass: file of TIndClass;
TMyIndClass: TIndClass;
f_StPlan: file of TStPlan;
TMyStPlan: TStPlan;
f_TeachLoadIndivid: file of TTeachLoadIndivid;
TMyTeachLoadIndivid: TTeachLoadIndivid;
f_Term, f_TermOld: file of TTerm;
TMyTerm, TMyTermOld: TTerm;
implementation
{$R *. dfm}
Uses USch_StPlan, UTch_main, UCh_reg;
function WindowsCopyFile (FromFile, ToDir: string): boolean;
var F: TShFileOpStruct;
begin
F. Wnd: = 0; F. wFunc: = FO_COPY;
FromFile: =FromFile+#0; F. pFrom: =pchar (FromFile);
ToDir: =ToDir+#0; F. pTo: =pchar (ToDir);
F. fFlags: = FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
result: =ShFileOperation (F) = 0;
end;
procedure TfJournal. cbClassClick (Sender: TObject);
var
i, h: Integer;
NumbZnachParam: Integer;
begin
for i: =0 to sgClass. RowCount-1 do
begin
sgClass. Cells [0, i]: ='';
sgClass. Cells [1, i]: ='';
end;
sgClass. RowCount: =1;
for i: =0 to StringGrid2. RowCount-1 do
if StringGrid2. Cells [1, i] =cbClass. Text then
begin
sgClass. RowCount: =sgClass. RowCount+1;
sgClass. Cells [0,sgClass. RowCount-1]: =StringGrid2. Cells [1, i];
sgClass. Cells [1,sgClass. RowCount-1]: =StringGrid2. Cells [3, i];
end;
for i: =0 to sgTabNumber. RowCount-1 do
sgTabNumber. Cells [0, i]: ='';
sgTabNumber. RowCount: =1;
for i: =0 to sgClass. RowCount-1 do
if sgClass. Cells [1, i] <>'' then NumbZnachParam: =StrToIntDef (sgClass. Cells [1, i],0);
for i: =0 to StringGrid1. RowCount-1 do
if StringGrid1. Cells [1, i] ='-> '+IntToStr (NumbZnachParam) then
begin
sgTabNumber. RowCount: =sgTabNumber. RowCount+1;
sgTabNumber. Cells [0,sgTabNumber. RowCount-1]: =StringGrid1. Cells [0, i];
end;
for i: =0 to sgIndivid. RowCount-1 do
begin
sgIndivid. Cells [0, i]: ='';
sgIndivid. Cells [1, i]: ='';
sgIndivid. Cells [2, i]: ='';
end;
sgIndivid. RowCount: =1;
for i: =0 to sgTabNumber. RowCount-1 do
for h: =0 to sgIndividInvisible. RowCount-1 do
begin
if sgIndividInvisible. Cells [0,h] =sgTabNumber. Cells [0, i] then
begin
sgIndivid. RowCount: =sgIndivid. RowCount+1;
sgIndivid. Cells [0,sgIndivid. RowCount-2]: =sgIndividInvisible. Cells [1,h];
sgIndivid. Cells [1,sgIndivid. RowCount-2]: =sgIndividInvisible. Cells [2,h];
sgIndivid. Cells [2,sgIndivid. RowCount-2]: =sgIndividInvisible. Cells [3,h];
end;
end;
sgIndivid. RowCount: =sgIndivid. RowCount-1;
sgMark. RowCount: =sgIndivid. RowCount;
end;
procedure TfJournal. btnSaveJournalClick (Sender: TObject);
var
i,j: Integer;
begin
WindowsCopyFile (StartDirDB_p+'\Term. DDB',StartDirDB_p+'\Old\Term. DDB');
WindowsCopyFile (StartDirDB_p+'\Journal. DDB',StartDirDB_p+'\Old\Journal. DDB');
AssignFile (f_Journal,StartDirDB_p+'\Journal. DDB');
Rewrite (f_Journal);
for i: =0 to sgMark. ColCount do
for j: =0 to sgMark. RowCount do
try
TMyJournal. TabN: =sgIndivid. Cells [3,j];
TMyJournal. n_Subject: =StrToIntDef (sgSubjectTotal. Cells [0,0],0);
TMyJournal. n_class: =StrToIntDef (sgNClass. Cells [0,0],0);
if (sgMark. Cells [i,j] <>'') and (sgMark. Cells [i,j] <>'0') then
TMyJournal. Mark: =sgMark. Cells [i,j]
else TMyJournal. Mark: ='0';
write (f_Journal,TMyJournal);
except
end;
AssignFile (f_JournalOld,StartDirDB_p+'\Old\Journal. DDB');
Reset (f_JournalOld);
while not eof (f_JournalOld) do
begin
read (f_JournalOld, TMyJournalOld);
if (TMyJournalOld. n_Subject<>StrToIntDef (sgSubjectTotal. Cells [0,0],0)) or
(TMyJournalOld. n_class<>StrToIntDef (sgNClass. Cells [0,0],0)) then
write (f_Journal, TMyJournalOld);
end;
CloseFile (f_Journal);
CloseFile (f_JournalOld);
AssignFile (f_Term,StartDirDB_p+'\Term. DDB');
Rewrite (f_Term);
for i: =0 to sgTerm. RowCount do
begin
TMyTerm. n_Subject: =StrToIntDef (sgSubjectTotal. Cells [0,0],0);
TMyTerm. n_class: =StrToIntDef (sgNClass. Cells [0,0],0);
TMyTerm. Date: =sgTerm. Cells [1, i];
TMyTerm. Description: =sgTerm. Cells [0, i];
write (f_Term,TMyTerm);
end;
// CloseFile (f_Term);
// загружаем старые темы, кроме тем текущего журнала
AssignFile (f_TermOld,StartDirDB_p+'\Old\Term. DDB');
Reset (f_TermOld);
while not eof (f_TermOld) do
begin
read (f_TermOld, TMyTermOld);
if (TMyTermOld. n_Subject<>StrToIntDef (sgSubjectTotal. Cells [0,0],0)) or
(TMyTermOld. n_class<>StrToIntDef (sgNClass. Cells [0,0],0)) then
write (f_Term, TMyTermOld);
end;
CloseFile (f_Term);
CloseFile (f_TermOld);
end;
procedure TfJournal. btnLoadJournalClick (Sender: TObject);
var
i,j, index: Integer;
begin
if FileExists (StartDirDB_p+'\Term. DDB') then begin
AssignFile (f_Term, StartDirDB_p+'\Term. DDB');
Reset (f_Term);
while not eof (f_Term) do
begin
Read (f_Term, TMyTerm);
if (TMyTerm. n_Subject=StrToIntDef (sgSubjectTotal. Cells [0,0],0)) and
(TMyTerm. n_class=StrToIntDef (sgNClass. Cells [0,0],0)) then
sgTerm. RowCount: =sgTerm. RowCount+1;
end;
CloseFile (F_Term);
end;
sgTerm. RowCount: =sgTerm. RowCount-2;
// ------------------------------------------------------------------------------
sgMark. ColCount: =sgTerm. RowCount;
sgMark. RowCount: =sgIndivid. RowCount;
sgItogMark. RowCount: =sgIndivid. RowCount;
// sgMarkInvisible. ColCount: =sgTerm. RowCount;
// sgMarkInvisible. RowCount: =sgIndivid. RowCount;
if FileExists (StartDirDB_p+'\Journal. DDB')
then
for i: =0 to sgIndivid. RowCount do
Begin // for
j: =0;
begin
AssignFile (f_Journal,StartDirDB_p+'\Journal. DDB');
Reset (f_Journal);
while not eof (f_Journal) do
Begin
read (f_Journal, TMyJournal);
// ищем таблице нужых индивидов по таб. номеру
if (TMyJournal. TabN=sgIndivid. Cells [3, i])
and (TMyJournal. n_Subject=StrToIntDef (sgSubjectTotal. Cells [0,0],0))
and (TMyJournal. n_class=StrToIntDEf (sgNClass. Cells [0,0],0))
then
begin
// смотрим оценки ученика
if TMyJournal. Mark='0' then
sgMark. Cells [j, i]: =''
// заполняем оценкой журнал
else sgMark. Cells [j, i]: =TMyJournal. Mark;
// sgMark. ColCount: =sgMark. ColCount+1;
Inc (j);
end;
End;
CloseFile (f_Journal);
end;
end; // for
// ------------------------------------------------------------------------------
index: =0;
if FileExists (StartDirDB_p+'\Term. DDB') then
begin
AssignFile (f_Term,StartDirDB_p+'\Term. DDB');
Reset (f_Term);
while not eof (f_Term) do
Begin
read (f_Term, TMyTerm);
if (TMyTerm. n_Subject=StrToIntDef (sgSubjectTotal. Cells [0,0],0)) and
(TMyTerm. n_class=StrToIntDef (sgNClass. Cells [0,0],0)) then
Begin
sgTerm. Cells [0, index]: =TMyTerm. Description;
sgTerm. Cells [1, index]: =TMyTerm. Date;
Inc (index);
End;
End;
CloseFile (f_Term);
end;
sgDate. ColCount: =sgTerm. RowCount;
for i: =0 to sgTerm. RowCount-1 do
sgDate. Cells [i,0]: =sgTerm. Cells [1, i];
end;
procedure TfJournal. FormShow (Sender: TObject);
var
i, h, index: Integer;
NumbZnachParam: Integer;
begin
{
// получаем класс
lbClass. Caption: =FSch_StPlan.comboBox2. Text+
FSch_StPlan. StringGrid6. Cells [2,FSch_StPlan. StringGrid6. row];
// получаем предмет
lbSubject. Caption: =FSch_StPlan. StringGrid1. Cells [2,FSch_StPlan. StringGrid1. row];
// получаем таб. номер со стрелкой
lbTeacherTabNStrel. Caption: =FSch_StPlan. StringGrid5. Cells [13,FSch_StPlan. StringGrid5. row];
}
// ---------------------классы (номера классов) - -------------------------------
if FileExists (StartDirDB_p+'\class. DDB')
then begin
AssignFile (f_Class,StartDirDB_p+'\class. DDB');
Reset (f_Class);
i: =1;
while not eof (f_Class) do
begin
Read (f_Class,TMyClass);
if (TMyClass. n_Prll_class=StrToIntDef (lbClass. Caption [1],0))
and (TMyClass. Letter=lbClass. Caption [2]) then
Begin
if i>1 then sgNClass. RowCount: =sgNClass. RowCount+1;
sgNClass. Cells [0,sgNClass. RowCount-2]: =IntToStr (TMyClass. n_class);
sgNClass. Cells [1,sgNClass. RowCount-2]: =IntToStr (TMyClass. n_Prll_class);
sgNClass. Cells [2,sgNClass. RowCount-2]: =TMyClass. Letter;
End;
i: =i+1;
end;
CloseFile (f_Class);
end;
sgNClass. RowCount: =sgNClass. RowCount-1;
// ------------------------------------------------------------------------------
// присваиваем метке значение табельного номера учителя
lbTeacherTabN. Caption: =FSch_StPlan. StringGrid5. Cells [3,FSch_StPlan. StringGrid5. row];
StartDirDB_p: = GetCurrentDir +'\Institutions\Data_School_СОШ_5';
// -----------------------StPlan (номера предметов и номера класов) - ---------
if FileExists (StartDirDB_p+'\StPlan. DDB')
then begin
// ShowMessage ('OK');
AssignFile (f_StPlan,StartDirDB_p+'\StPlan. DDB');
Reset (f_StPlan); i: =1;
while not eof (f_StPlan) do
begin
Read (f_StPlan,TMyStPlan);
// lbExperiment. Caption: =sgNClass. Cells [0,0];
if TMyStPlan. n_class=StrToIntDef (sgNClass. Cells [0,0],0) then
Begin
if i>1 then sgSearchStPlan. RowCount: =sgSearchStPlan. RowCount+1;
sgSearchStPlan. Cells [0,sgSearchStPlan. RowCount-1]: =IntToStr (TMyStPlan. n_class);
sgSearchStPlan. Cells [1,sgSearchStPlan. RowCount-1]: =IntToStr (TMyStPlan. n_Subject);
sgSearchStPlan. Cells [2,sgSearchStPlan. RowCount-1]: =IntToStr (TMyStPlan. n_RowStPlan);
End;
i: =i+1;
end;
CloseFile (f_StPlan);
end;
// ------------------------------------------------------------------------------
// f_TeachLoadIndivid
// -------------TeachLoadIndivid - -----------------------------------------------
if FileExists (StartDirDB_p+'\TeachLoadIndivid. DDB')
then begin
// ShowMessage ('OK');
AssignFile (f_TeachLoadIndivid,StartDirDB_p+'\TeachLoadIndivid. DDB');
Reset (f_TeachLoadIndivid); i: =1;
while not eof (f_TeachLoadIndivid) do
begin
Read (f_TeachLoadIndivid,TMyTeachLoadIndivid);
if TMyTeachLoadIndivid. TabN=lbTeacherTabNStrel. Caption then
Begin
if i>1 then sgSearchTeachLoadIndivid. RowCount: =sgSearchTeachLoadIndivid. RowCount+1;
sgSearchTeachLoadIndivid. Cells [0, sgSearchTeachLoadIndivid. RowCount-1]: =TMyTeachLoadIndivid. TabN;
sgSearchTeachLoadIndivid. Cells [1, sgSearchTeachLoadIndivid. RowCount-1]: =IntToStr (TMyTeachLoadIndivid. n_RowStPlan);
End;
i: =i+1;
end;
CloseFile (f_TeachLoadIndivid);
end;
// ------------------------------------------------------------------------------
// ------------------выбираем по номеру строки учеб. плана строки из StPlan------
for i: =0 to sgStPlanTotal. RowCount-1 do
begin
sgStPlanTotal. Cells [0, i]: ='';
sgStPlanTotal. Cells [1, i]: ='';
end;
sgStPlanTotal. RowCount: =1;
index: =0;
for i: =0 to sgSearchStPlan. RowCount-1 do
for h: =0 to sgSearchTeachLoadIndivid. RowCount-1 do
if sgSearchStPlan. Cells [2, i] =sgSearchTeachLoadIndivid. Cells [1, h] then
begin
sgStPlanTotal. Cells [0, index]: =sgSearchStPlan. Cells [0, i];
sgStPlanTotal. Cells [1, index]: =sgSearchStPlan. Cells [1, i];
Inc (index);
sgStPlanTotal. RowCount: =index;
end;
// ------------------------------------------------------------------------------
if sgIndivid. Cells [1,1] ='' then Begin
StartDirDB_p: =GetCurrentDir+'\Institutions\Data_Child_СОШ_5';
// ----------------------------Классы (Номер значения параметра) - ------------
if FileExists (StartDirDB_p+'\Value_Param. DDB')
then begin
AssignFile (f_MyValueParam,StartDirDB_p+'\Value_Param. DDB');
Reset (f_MyValueParam); i: =1;
while not eof (f_MyValueParam) do
begin
Read (f_MyValueParam,TMyValueParam);
if TMyValueParam. n_param=11 then Begin
if i>1 then StringGrid2. RowCount: =StringGrid2. RowCount+1;
StringGrid2. Cells [0,StringGrid2. RowCount-1]: =IntToStr (TMyValueParam. n_param);
StringGrid2. Cells [1,StringGrid2. RowCount-1]: =TMyValueParam. Value;
StringGrid2. Cells [2,StringGrid2. RowCount-1]: =TMyValueParam. Discription;
StringGrid2. Cells [3,StringGrid2. RowCount-1]: =TMyValueParam. n_VParam;
StringGrid2. Cells [4,StringGrid2. RowCount-1]: =TMyValueParam. Quality;
End;
i: =i+1;
end;
CloseFile (f_MyValueParam);
end;
// ------------------------------------------------------------------------------
// -----------------------параметры индивидов (таб номера) - -------------------
if FileExists (StartDirDB_p+'\Param_Individ. DDB')
then begin
AssignFile (f_MyParamInd,StartDirDB_p+'\Param_Individ. DDB');
Reset (f_MyParamInd); i: =1;
while not eof (f_MyParamInd) do
begin
Read (f_MyParamInd,TMyParamInd);
if TMyParamInd. n_param=11 then
Begin
if i>1 then StringGrid1. RowCount: =StringGrid1. RowCount+1;
StringGrid1. Cells [0,StringGrid1. RowCount-1]: =TMyParamInd. TabN;
StringGrid1. Cells [1,StringGrid1. RowCount-1]: =IntToStr (TMyParamInd. n_param);
StringGrid1. Cells [1,StringGrid1. RowCount-1]: =TMyParamInd. Value;
End;
i: =i+1;
end;
CloseFile (f_MyParamInd);
end;
// ------------------------------------------------------------------------------
for i: =0 to sgIndividInvisible. RowCount-1 do
begin
sgIndividInvisible. Cells [0, i]: ='';
sgIndividInvisible. Cells [1, i]: ='';
sgIndividInvisible. Cells [2, i]: ='';
end;
sgIndividInvisible. RowCount: =1;
// ---------------------индивиды (ФИО) - ------------------------------------------
if FileExists (StartDirDB_p+'\Individ. DDB')
then begin
AssignFile (f_MyIndivid,StartDirDB_p+'\Individ. DDB');
Reset (f_MyIndivid); i: =1;
while not eof (f_MyIndivid) do
begin
Read (f_MyIndivid,TMyIndivid);
// if TMyParamInd. n_param=11 then
Begin
if i>1 then sgIndividInvisible. RowCount: =sgIndividInvisible. RowCount+1;
sgIndividInvisible. Cells [0,sgIndividInvisible. RowCount-1]: =TMyIndivid. TabN;
sgIndividInvisible. Cells [1,sgIndividInvisible. RowCount-1]: =TMyIndivid. Fam;
sgIndividInvisible. Cells [2,sgIndividInvisible. RowCount-1]: =TMyIndivid. Name;
sgIndividInvisible. Cells [3,sgIndividInvisible. RowCount-1]: =TMyIndivid. SName;
sgIndividInvisible. Cells [4,sgIndividInvisible. RowCount-1]: =IntToStr (TMyIndivid. n_Institutions);
End;
i: =i+1;
end;
CloseFile (f_MyIndivid);
end;
// ------------------------------------------------------------------------------
End;
// выбираем нужных учеников класса
for i: =0 to sgClass. RowCount-1 do
begin
sgClass. Cells [0, i]: ='';
sgClass. Cells [1, i]: ='';
end;
sgClass. RowCount: =1;
// ---------------------------очищаем оценки-------------------------------------
for i: =0 to sgMark. RowCount-1 do
begin
sgMark. Cells [0, i]: ='';
sgMark. Cells [1, i]: ='';
end;
sgMark. RowCount: =sgIndivid. RowCount;
sgMark. ColCount: =sgTerm. ColCount;
// sgDate. ColCount: =sgTerm. RowCount;
// sgItogMark. RowCount: =sgIndivid. RowCount;
// ------------------------------------------------------------------------------
for i: =0 to StringGrid2. RowCount-1 do
if StringGrid2. Cells [1, i] =lbClass. Caption then
begin
sgClass. RowCount: =sgClass. RowCount+1;
sgClass. Cells [0,sgClass. RowCount-1]: =StringGrid2. Cells [1, i];
sgClass. Cells [1,sgClass. RowCount-1]: =StringGrid2. Cells [3, i];
end;
for i: =0 to sgTabNumber. RowCount-1 do
sgTabNumber. Cells [0, i]: ='';
sgTabNumber. RowCount: =1;
for i: =0 to sgClass. RowCount-1 do
if sgClass. Cells [1, i] <>'' then NumbZnachParam: =StrToIntDef (sgClass. Cells [1, i],0);
for i: =0 to StringGrid1. RowCount-1 do
if StringGrid1. Cells [1, i] ='-> '+IntToStr (NumbZnachParam) then
begin
sgTabNumber. RowCount: =sgTabNumber. RowCount+1;
sgTabNumber. Cells [0,sgTabNumber. RowCount-1]: =StringGrid1. Cells [0, i];
end;
for i: =0 to sgIndivid. RowCount-1 do
begin
sgIndivid. Cells [0, i]: ='';
sgIndivid. Cells [1, i]: ='';
sgIndivid. Cells [2, i]: ='';
end;
sgIndivid. RowCount: =1;
for i: =0 to sgTabNumber. RowCount-1 do
for h: =0 to sgIndividInvisible. RowCount-1 do
begin
if sgIndividInvisible. Cells [0,h] =sgTabNumber. Cells [0, i] then
begin
sgIndivid. RowCount: =sgIndivid. RowCount+1;
sgIndivid. Cells [0,sgIndivid. RowCount-2]: =sgIndividInvisible. Cells [1,h];
sgIndivid. Cells [1,sgIndivid. RowCount-2]: =sgIndividInvisible. Cells [2,h];
sgIndivid. Cells [2,sgIndivid. RowCount-2]: =sgIndividInvisible. Cells [3,h];
sgIndivid. Cells [3,sgIndivid. RowCount-2]: =sgIndividInvisible. Cells [0,h];
end;
end;
sgIndivid. RowCount: =sgIndivid. RowCount-1;
// sgMark. RowCount: =sgIndivid. RowCount;
// ---------------------Предметы (номера предметов) - --------------------------
for i: =0 to sgNSubject. RowCount-1 do
begin
sgNSubject. Cells [0, i]: ='';
sgNSubject. Cells [1, i]: ='';
end;
sgNSubject. RowCount: =1;
StartDirDB_p: =GetCurrentDir+'\Institutions\Data_School_СОШ_5';
if FileExists (StartDirDB_p+'\Subject. DDB')
then begin
AssignFile (f_Subject,StartDirDB_p+'\Subject. DDB');
Reset (f_Subject); i: =1;
while not eof (f_Subject) do
begin
Read (f_Subject,TMySubject);
// if (TMySubject. Subject=lbSubject. Caption) then
Begin
if i>1 then sgNSubject. RowCount: =sgNSubject. RowCount+1;
sgNSubject. Cells [0,sgNSubject. RowCount-1]: =IntToStr (TMySubject. n_Subject);
sgNSubject. Cells [1,sgNSubject. RowCount-1]: =TMySubject. Subject;
sgNSubject. Cells [2,sgNSubject. RowCount-1]: =IntToStr (TMySubject. n_DifrGroup);
End;
i: =i+1;
end;
CloseFile (f_Subject);
end
else ShowMessage ('Not Found');
// sgNSubject. RowCount: =sgNSubject. RowCount-1;
// -----------------------------------------------------------------------------------------
// ------------------выбираем предметы по названию-------------------------------
for i: =0 to sgSubjectTotal. RowCount-1 do
begin
sgSubjectTotal. Cells [0, i]: ='';
sgSubjectTotal. Cells [1, i]: ='';
end;
sgSubjectTotal. RowCount: =1;
index: =0;
for i: =0 to sgNSubject. RowCount-1 do
for h: =0 to sgStPlanTotal. RowCount-1 do
if (sgNSubject. Cells [1, i] =lbSubject. Caption)
and (sgNSubject. Cells [0, i] =sgStPlanTotal. Cells [1, h]) then
begin
sgSubjectTotal. Cells [0, index]: =sgNSubject. Cells [0, i];
sgSubjectTotal. Cells [1, index]: =sgNSubject. Cells [1, i];
Inc (index);
sgSubjectTotal. RowCount: =index;
end;
// ------------------------------------------------------------------------------
for i: =0 to sgTerm. RowCount do
sgDate. Cells [i,0]: =sgTerm. Cells [1, i];
btnClear. Click;
btnLoadJournal. Click;
btnItogMark. Click;
end;
procedure TfJournal. btnClearClick (Sender: TObject);
var
i,j: Integer;
begin
index1: =1;
for i: =0 to sgMark. ColCount do
for j: =0 to sgMark. RowCount do
begin
sgMark. Cells [i,j]: ='';
end;
for i: =0 to sgTerm. RowCount do
for j: =0 to sgTerm. ColCount do
begin
sgTerm. Cells [j, i]: ='';
end;
for i: =0 to sgTerm. RowCount do
for j: =0 to sgTerm. ColCount do
begin
sgItogMark. Cells [j, i]: ='';
end;
sgItogMark. RowCount: =sgIndivid. RowCount;
sgTerm. RowCount: =1;
sgMark. ColCount: =1;
{if FileExists (StartDirDB_p+'\Term. DDB') then begin
AssignFile (f_Term, StartDirDB_p+'\Term. DDB');
Reset (f_Term);
while not eof (f_Term) do
begin
Read (f_Term, TMyTerm);
if TMyTerm. n_Journal=1 then
sgTerm. RowCount: =sgTerm. RowCount+1;
end;
CloseFile (F_Term);
end; }
sgTerm. RowCount: =1;
sgMark. RowCount: =sgIndivid. RowCount;
sgMark. ColCount: =1;
// sgTerm. RowCount: =sgMark. ColCount;
end;
procedure TfJournal. Button1Click (Sender: TObject);
var
XLApp, Sheet, Colum: Variant;
index: Integer;
i,j: Integer;
irow: Integer;
begin
XLApp: =CreateOleObject ('Excel. Application');
XLApp. Visible: =true;
XLApp. Workbooks. Add (-4167);
XLApp. Workbooks [1]. WorkSheets [1]. Name: ='Отчёт';
// XLApp. Workbooks [1]. WorkSheets [1]. Activate;
Colum: =XLApp. Workbooks [1]. WorkSheets ['Отчёт']. Columns;
Colum. Columns [1]. ColumnWidth: =20; // ширина столбца
Colum. Columns [2]. ColumnWidth: =20; // ширина столбца
Colum. Columns [3]. ColumnWidth: =20; // ширина столбца
for i: =1 to sgMark. ColCount do
Colum. Columns [i+3]. ColumnWidth: =4;
Colum: =XLApp. Workbooks [1]. WorkSheets ['Отчёт']. Rows;
Colum. Rows [1]. Font. Bold: =true;
Colum. Rows [3]. Font. Bold: =true;
Colum. Rows [11]. Font. Bold: =true;
Sheet: =XLApp. Workbooks [1]. WorkSheets ['Отчёт'];
Sheet. Cells [1,1]: =lbClass. Caption+' - '+lbSubject. Caption;
Sheet. Cells [3,1]: ='Фамилия';
Sheet. Cells [3,2]: ='Имя';
Sheet. Cells [3,3]: ='Отчество';
for i: =0 to sgTerm. RowCount do
begin
Sheet. Cells [3, i+4]: =''''+sgTerm. Cells [1, i];
end;
irow: =3; // отступ от верхней границы таблицы
for index: =1 to sgIndivid. RowCount do
begin
Sheet. Cells [index+irow,1]: =sgIndivid. Cells [0, index-1];
Sheet. Cells [index+irow,2]: =sgIndivid. Cells [1, index-1];
Sheet. Cells [index+irow,3]: =sgIndivid. Cells [2, index-1];
end;
for i: =0 to sgMark. ColCount do
for j: =0 to sgMark. RowCount do
begin
Sheet. Cells [j+1+irow, i+4]: =sgMark. Cells [i,j];
end;
// j: =1;
// ----------------------
XLApp. Workbooks [1]. WorkSheets. Add;
XLApp. Workbooks [1]. WorkSheets [2]. Name: = 'Оценки';
Sheet: =XLApp. Workbooks [1]. WorkSheets ['Лист2'];
for i: =1 to sgTerm. RowCount do
begin
Sheet. Cells [i+1,1]: =sgTerm. Cells [1, i-1] +'. '+lbUchebGod. Caption;
Sheet. Cells [i+1,2]: =sgTerm. Cells [0, i-1];
end;
// -----------------
XLApp. Workbooks [1]. WorkSheets [1]. Name: = 'Темы';
Sheet. Cells [1,1]: ='Дата';
Sheet. Cells [1,2]: ='Тема';
Colum: =XLApp. Workbooks [1]. WorkSheets ['Темы']. Rows;
Colum. Rows [1]. Font. Bold: =true;
Colum: =XLApp. Workbooks [1]. WorkSheets ['Темы']. Columns;
Colum. Columns [1]. ColumnWidth: =15; // ширина столбца
Colum. Columns [2]. ColumnWidth: =100; // ширина столбца
end;
procedure TfJournal. btnAddTermClick (Sender: TObject);
var
i: Integer;
begin
if index1=1 then begin
sgTerm. Cells [0,sgTerm. RowCount-1]: ='Тема'+IntToStr (sgTerm. RowCount);
sgTerm. Cells [1,sgTerm. RowCount-1]: =IntToStr (sgTerm. RowCount) +'.09';
index1: =index1+1;
end
else
begin
sgTerm. RowCount: =sgTerm. RowCount+1;
sgMark. ColCount: =sgMark. ColCount+1;
sgTerm. Cells [0,sgTerm. RowCount-1]: ='Тема'+IntToStr (sgTerm. RowCount);
sgTerm. Cells [1,sgTerm. RowCount-1]: =IntToStr (sgTerm. RowCount) +'.09';
end;
sgDate. ColCount: =sgTerm. RowCount;
for i: =0 to sgTerm. RowCount-1 do
sgDate. Cells [i,0]: =sgTerm. Cells [1, i];
end;
procedure TfJournal. FormClose (Sender: TObject; var Action: TCloseAction);
begin
{btnClear. Click;
Close; }
FCh_Reg. Close;
end;
procedure TfJournal. btnItogMarkClick (Sender: TObject);
var
i,j: Integer;
sred: Real;
count: Integer;
begin
sred: =0;
for i: =0 to sgMark. RowCount-1 do begin
sred: =0;
count: =0;
for j: =0 to sgMark. ColCount-1 do
if sgMark. Cells [j, i] <>'' then
begin
sred: =sred+StrToIntDef (sgMark. Cells [j, i],0);
count: =count+1;
end;
if sred<>0 then
begin
sred: =sred/count;
sgItogMark. Cells [0, i]: =IntToStr (round (sred));
end;
end;
end;
procedure TfJournal. sgMarkExit (Sender: TObject);
begin
btnItogMark. Click;
end;
procedure TfJournal. sgMarkSetEditText (Sender: TObject; ACol, ARow: Integer;
const Value: String);
begin
btnItogMark. Click;
end;
end.
unit UTch_Report;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,UCh_TypeDB, Buttons;
type
TfReport = class (TForm)
cbClass: TComboBox;
Label1: TLabel;
btnOK: TBitBtn;
procedure FormShow (Sender: TObject);
procedure btnOKClick (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fReport: TfReport;
f_Class: file of TClass;
TMyClass: TClass;
implementation
{$R *. dfm}
Uses UTch_main;
procedure TfReport. FormShow (Sender: TObject);
var
i: Integer;
begin
cbClass. Items. Clear;
// ---------------------классы (номера классов) - -------------------------------
if FileExists (StartDirDB_p+'\class. DDB')
then begin
AssignFile (f_Class,StartDirDB_p+'\class. DDB');
Reset (f_Class);
i: =1;
while not eof (f_Class) do
begin
Read (f_Class,TMyClass);
Begin
cbClass. Items. Add (IntToStr (TMyClass. n_Prll_class) +TMyClass. Letter);
End;
i: =i+1;
end;
CloseFile (f_Class);
end;
// ------------------------------------------------------------------------------
end;
procedure TfReport. btnOKClick (Sender: TObject);
begin
FTch_main. lbClass. Caption: =cbClass. Text;
FTch_main. btnLoadPupils. Click;
FTch_main. btnNeusp. Click;
FTch_main. btnReport. Click;
Close;
end;
end.
unit ClientMain;
Подобные документы
Назначение создания информационной системы "Электронный журнал" для автоматизации контроля учебного процесса. Построение логической и реляционной моделей данных. Разработка клиент-серверного приложения для работы с базой данных; программная реализация.
дипломная работа [5,9 M], добавлен 19.01.2017Общие сведения о проектировании базы данных и разборка приложений для взаимодействия с БД. Разработка проекта клиентского приложения "Электронный классный журнал" с помощью языка программирования Delphi 7. Просмотр и изменение информации базы данных.
курсовая работа [403,6 K], добавлен 24.06.2011Разработка концептуальной модели базы данных. Реализация алгоритмов и разработка управляющей программы. Разработка структуры системы управления данными. Методика проведения и результаты тестирования. Функционирование разработанного программного модуля.
курсовая работа [550,5 K], добавлен 08.06.2023Формирование требований к подсистеме учёта и поиска электронной литературы. Проектирование архитектуры, интерфейса программного средства. Организация взаимодействия подсистемы с базой данных, руководство пользователя. Диаграмма вариантов использования.
курсовая работа [235,1 K], добавлен 28.08.2012Разработка программы FileInfo, выдающей полную информацию о заданном файле с применением языка программирования С++, используя API функции Win 32. Использование пространств имён .NetFramework. Руководство пользователя и системные требования программы.
курсовая работа [1,2 M], добавлен 25.04.2012Обоснование необходимости разработки программы для игры "Тетрис". Математическая и графическая части алгоритма. Выбор языка и среды программирования. Отладка текста программы, разработка интерфейса пользователя. Тестирование, руководство пользователя.
курсовая работа [1,5 M], добавлен 17.01.2011Возможности создания баз данных средствами программного продукта SQL. Изучение предметной области и разработка проекта базы данных по учету студентов "Журнал классного руководителя". Задачи реализации программного средства, его тестирование и отладка.
курсовая работа [3,7 M], добавлен 07.12.2012Требования к обеспечению надежного функционирования программы. Отказы из-за некорректных действий пользователей системы. Требования к исходным кодам и языкам программирования, к программным средствам, используемым программой. Алгоритм получения данных.
дипломная работа [1,5 M], добавлен 22.11.2015Описание структуры бинарного дерева поиска на языке C# среды Visual Studio. Требования к интерфейсу пользователя, структуре данных и программным средствам. Компоненты программных средств, результаты тестирования, диаграммы вариантов использования классов.
курсовая работа [968,2 K], добавлен 26.01.2013Разработка программного обеспечения, позволяющего вести электронный учет товара, оптимизировать работу с поставщиками, ускорять процедуры оформления документов. Среда программирования и алгоритм задачи. Формы и отчеты программы. Ее тестирование и отладка.
дипломная работа [3,0 M], добавлен 18.07.2014