吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5133|回复: 73
收起左侧

[其他原创] 给孩子做的课程表工具

  [复制链接]
mengfanyu 发表于 2025-12-12 16:50
本帖最后由 mengfanyu 于 2025-12-24 17:55 编辑

已更新至2.0版本,请移步 https://www.52pojie.cn/thread-2082106-1-1.html

Snipaste_2025-12-12_16-47-07.png

孩子可以自己配置课程,随机生成或者自己编写激励话术,并且点击打印到A4纸

按要求附上源码
[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>孟中淇的课程表 &#129419;</title>
    <style>
        @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700&family=Comic+Neue:wght@400;700&display=swap');

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        :root {
            --pink-light: #FFE5F1;
            --pink-medium: #FFB6D9;
            --pink-dark: #FF69B4;
            --purple-light: #E5D4FF;
            --purple-medium: #C4A7E7;
            --lavender: #E6E6FA;
            --mint: #B2F5EA;
            --peach: #FFDAB9;
            --yellow-light: #FFF9C4;
            --text-dark: #5A3E5E;
            --text-light: #8B7A8E;
            --white: #FFFFFF;
            --shadow: 0 8px 32px rgba(255, 105, 180, 0.2);
            --shadow-hover: 0 12px 48px rgba(255, 105, 180, 0.3);
        }

        body {
            font-family: 'Noto Sans SC', 'Comic Neue', sans-serif;
            background: linear-gradient(135deg, #FFE5F1 0%, #E5D4FF 50%, #B2F5EA 100%);
            color: var(--text-dark);
            line-height: 1.6;
            min-height: 100vh;
            position: relative;
            overflow-x: hidden;
        }

        /* 可爱装饰元素 */
        .decoration {
            position: fixed;
            pointer-events: none;
            z-index: 0;
        }

        .butterfly {
            font-size: 2rem;
            animation: float 6s ease-in-out infinite;
        }

        .butterfly:nth-child(1) {
            top: 10%;
            left: 5%;
            animation-delay: 0s;
        }

        .butterfly:nth-child(2) {
            top: 20%;
            right: 8%;
            animation-delay: 1s;
        }

        .butterfly:nth-child(3) {
            bottom: 15%;
            left: 10%;
            animation-delay: 2s;
        }

        .butterfly:nth-child(4) {
            bottom: 25%;
            right: 5%;
            animation-delay: 3s;
        }

        .flower {
            font-size: 1.5rem;
            animation: spin 20s linear infinite;
        }

        .flower:nth-child(5) {
            top: 30%;
            left: 3%;
        }

        .flower:nth-child(6) {
            top: 60%;
            right: 4%;
        }

        .flower:nth-child(7) {
            bottom: 10%;
            left: 15%;
        }

        .star {
            font-size: 1.2rem;
            animation: twinkle 2s ease-in-out infinite;
        }

        .star:nth-child(8) {
            top: 15%;
            left: 20%;
            animation-delay: 0.5s;
        }

        .star:nth-child(9) {
            top: 50%;
            right: 15%;
            animation-delay: 1s;
        }

        .star:nth-child(10) {
            bottom: 20%;
            right: 20%;
            animation-delay: 1.5s;
        }

        @keyframes float {

            0%,
            100% {
                transform: translateY(0) rotate(0deg);
            }

            50% {
                transform: translateY(-20px) rotate(10deg);
            }
        }

        @keyframes spin {
            from {
                transform: rotate(0deg);
            }

            to {
                transform: rotate(360deg);
            }
        }

        @keyframes twinkle {

            0%,
            100% {
                opacity: 1;
                transform: scale(1);
            }

            50% {
                opacity: 0.5;
                transform: scale(1.2);
            }
        }

        .container {
            max-width: 1400px;
            margin: 0 auto;
            padding: 2rem;
            position: relative;
            z-index: 1;
        }

        .header {
            text-align: center;
            margin-bottom: 1rem;
            animation: fadeInDown 0.8s ease;
            background: linear-gradient(135deg, rgba(255, 255, 255, 0.9) 0%, rgba(255, 229, 241, 0.9) 100%);
            padding: 1rem;
            border-radius: 30px;
            box-shadow: var(--shadow);
            border: 3px solid var(--pink-medium);
        }

        .header h1 {
            font-size: 2.5rem;
            font-weight: 700;
            background: linear-gradient(135deg, #FF69B4 0%, #C4A7E7 50%, #FF69B4 100%);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
            margin-bottom: 0.5rem;
            font-family: 'Comic Neue', 'Noto Sans SC', sans-serif;
        }

        .owner-name {
            font-size: 1.3rem;
            color: var(--pink-dark);
            font-weight: 600;
            margin: 0.5rem 0;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 0.5rem;
        }

        .subtitle {
            color: var(--text-light);
            font-size: 1rem;
        }

        .main-content {
            display: grid;
            grid-template-columns: 420px 1fr;
            gap: 2rem;
            animation: fadeInUp 0.8s ease;
        }

        /* 配置面板 */
        .config-panel {
            background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(255, 229, 241, 0.95) 100%);
            border: 3px solid var(--pink-medium);
            border-radius: 30px;
            padding: 2rem;
            box-shadow: var(--shadow);
            transition: all 0.3s ease;
        }

        .config-panel:hover {
            box-shadow: var(--shadow-hover);
            transform: translateY(-2px);
        }

        .config-panel h2 {
            font-size: 1.5rem;
            margin-bottom: 1.5rem;
            color: var(--pink-dark);
            font-family: 'Comic Neue', 'Noto Sans SC', sans-serif;
            text-align: center;
        }

        .day-selector {
            display: grid;
            grid-template-columns: repeat(7, 1fr);
            gap: 0.5rem;
            margin-bottom: 2rem;
        }

        .day-btn {
            padding: 0.8rem 0.3rem;
            border: 2px solid var(--pink-medium);
            background: white;
            color: var(--text-dark);
            border-radius: 15px;
            cursor: pointer;
            font-size: 0.85rem;
            font-weight: 600;
            transition: all 0.3s ease;
            position: relative;
        }

        .day-btn:hover {
            background: var(--pink-light);
            border-color: var(--pink-dark);
            transform: translateY(-3px) scale(1.05);
            box-shadow: 0 5px 15px rgba(255, 105, 180, 0.3);
        }

        .day-btn.active {
            background: linear-gradient(135deg, var(--pink-dark) 0%, var(--purple-medium) 100%);
            border-color: var(--pink-dark);
            color: white;
            box-shadow: 0 5px 20px rgba(255, 105, 180, 0.4);
            transform: scale(1.1);
        }

        .day-btn.active::after {
            content: '&#128150;';
            position: absolute;
            top: -10px;
            right: -5px;
            font-size: 1rem;
        }

        .form-section {
            margin-bottom: 2rem;
            background: rgba(255, 255, 255, 0.6);
            padding: 1.5rem;
            border-radius: 20px;
            border: 2px dashed var(--pink-medium);
        }

        .form-section h3 {
            font-size: 1.2rem;
            margin-bottom: 1rem;
            color: var(--pink-dark);
            font-family: 'Comic Neue', 'Noto Sans SC', sans-serif;
            text-align: center;
        }

        .course-input {
            margin-bottom: 1rem;
        }

        .course-input label {
            display: block;
            margin-bottom: 0.5rem;
            color: var(--text-dark);
            font-size: 0.9rem;
            font-weight: 600;
        }

        .course-input input {
            width: 100%;
            padding: 0.9rem 1rem;
            background: white;
            border: 2px solid var(--pink-medium);
            border-radius: 15px;
            color: var(--text-dark);
            font-size: 0.95rem;
            transition: all 0.3s ease;
            font-family: 'Noto Sans SC', sans-serif;
        }

        .course-input input:focus {
            outline: none;
            border-color: var(--pink-dark);
            align-items: center;
            justify-content: center;
            font-size: 0.8rem;
        }

        .toggle-label input:checked+.toggle-slider {
            background: linear-gradient(135deg, var(--pink-dark) 0%, var(--purple-medium) 100%);
        }

        .toggle-label input:checked+.toggle-slider::before {
            transform: translateX(27px);
        }

        .toggle-text {
            font-weight: 600;
            color: var(--text-dark);
        }

        #afternoonCourses.disabled {
            opacity: 0.4;
            pointer-events: none;
        }

        /* 激励语输入 */
        .motivation-section {
            margin-bottom: 2rem;
            background: rgba(255, 255, 255, 0.6);
            padding: 1.5rem;
            border-radius: 20px;
            border: 2px dashed var(--mint);
        }

        .motivation-section h3 {
            font-size: 1.2rem;
            margin-bottom: 1rem;
            color: var(--pink-dark);
            font-family: 'Comic Neue', 'Noto Sans SC', sans-serif;
            text-align: center;
        }

        .motivation-input {
            margin-bottom: 0;
        }

        .motivation-input label {
            display: block;
            margin-bottom: 0.5rem;
            color: var(--text-dark);
            font-size: 0.9rem;
            font-weight: 600;
        }

        .motivation-input textarea {
            width: 100%;
            padding: 0.9rem 1rem;
            background: white;
            border: 2px solid var(--mint);
            border-radius: 15px;
            color: var(--text-dark);
            font-size: 0.95rem;
            transition: all 0.3s ease;
            font-family: 'Noto Sans SC', sans-serif;
            resize: vertical;
            min-height: 60px;
        }

        .motivation-input textarea:focus {
            outline: none;
            border-color: #4facfe;
            background: rgba(178, 245, 234, 0.2);
            box-shadow: 0 0 0 4px rgba(79, 172, 254, 0.2);
            transform: scale(1.02);
        }

        .motivation-input textarea::placeholder {
            color: var(--text-light);
        }

        .motivation-controls {
            display: flex;
            gap: 0.5rem;
            align-items: flex-start;
        }

        .motivation-controls textarea {
            flex: 1;
        }

        .dice-btn {
            padding: 0.9rem 1rem;
            background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%);
            border: 2px solid #FFB6D9;
            border-radius: 15px;
            cursor: pointer;
            font-size: 1.5rem;
            transition: all 0.3s ease;
            box-shadow: 0 3px 10px rgba(255, 215, 0, 0.3);
            min-width: 50px;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .dice-btn:hover {
            transform: translateY(-3px) scale(1.1);
            box-shadow: 0 5px 20px rgba(255, 215, 0, 0.5);
        }

        .dice-btn:active {
            animation: diceRoll 0.5s ease;
        }

        @keyframes diceRoll {
            0% {
                transform: rotate(0deg);
            }

            25% {
                transform: rotate(90deg) scale(1.1);
            }

            50% {
                transform: rotate(180deg) scale(1.2);
            }

            75% {
                transform: rotate(270deg) scale(1.1);
            }

            100% {
                transform: rotate(360deg) scale(1);
            }
        }

        /* 按钮 */
        .action-buttons {
            display: flex;
            gap: 1rem;
            margin-top: 2rem;
        }

        .btn {
            flex: 1;
            padding: 1rem 1.5rem;
            border: none;
            border-radius: 20px;
            font-size: 1rem;
            font-weight: 700;
            cursor: pointer;
            transition: all 0.3s ease;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 0.5rem;
            font-family: 'Noto Sans SC', sans-serif;
        }

        .btn-save {
            background: linear-gradient(135deg, #FF69B4 0%, #FF1493 100%);
            color: white;
            box-shadow: 0 5px 20px rgba(255, 105, 180, 0.4);
        }

        .btn-save:hover {
            transform: translateY(-3px) scale(1.05);
            box-shadow: 0 8px 30px rgba(255, 105, 180, 0.6);
        }

        .btn-clear {
            background: linear-gradient(135deg, #C4A7E7 0%, #9370DB 100%);
            color: white;
            box-shadow: 0 5px 20px rgba(196, 167, 231, 0.4);
        }

        .btn-clear:hover {
            transform: translateY(-3px) scale(1.05);
            box-shadow: 0 8px 30px rgba(196, 167, 231, 0.6);
        }

        .btn-print {
            background: linear-gradient(135deg, #FFB6D9 0%, #FF69B4 100%);
            color: white;
            box-shadow: 0 5px 20px rgba(255, 182, 217, 0.4);
            padding: 1rem 2rem;
            border: none;
            border-radius: 20px;
            font-size: 1rem;
            font-weight: 700;
            cursor: pointer;
            transition: all 0.3s ease;
        }

        .btn-print:hover {
            transform: translateY(-3px) scale(1.05);
            box-shadow: 0 8px 30px rgba(255, 182, 217, 0.6);
        }

        /* 预览面板 */
        .preview-panel {
            background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(229, 212, 255, 0.95) 100%);
            border: 3px solid var(--purple-medium);
            border-radius: 30px;
            padding: 2rem;
            box-shadow: var(--shadow);
        }

        .preview-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 2rem;
        }

        .preview-header h2 {
            font-size: 1.5rem;
            color: var(--purple-medium);
            font-family: 'Comic Neue', 'Noto Sans SC', sans-serif;
        }

        /* 课程表样式 */
        .schedule-table {
            width: 100%;
            border-collapse: separate;
            border-spacing: 0;
            background: white;
            border-radius: 20px;
            overflow: hidden;
            box-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
        }

        .schedule-table th,
        .schedule-table td {
            padding: 1rem;
            text-align: center;
            border: 2px solid var(--pink-light);
        }

        .schedule-table th {
            background: linear-gradient(135deg, var(--pink-medium) 0%, var(--purple-light) 100%);
            font-weight: 700;
            color: var(--text-dark);
            font-size: 1rem;
        }

        .schedule-table td {
            background: white;
            color: var(--text-dark);
            transition: all 0.3s ease;
            font-size: 0.95rem;
            font-weight: 500;
        }

        .schedule-table td:hover {
            background: var(--pink-light);
            transform: scale(1.05);
            box-shadow: 0 3px 10px rgba(255, 105, 180, 0.2);
        }

        .schedule-table td.rest-cell {
            background: linear-gradient(135deg, #FFE5F1 0%, #FFB6D9 100%);
            color: var(--pink-dark);
            font-weight: 700;
        }

        .schedule-table td.course-cell {
            background: linear-gradient(135deg, #E5D4FF 0%, #C4A7E7 100%);
            color: var(--text-dark);
            font-weight: 600;
        }

        .schedule-table td.empty-cell {
            color: var(--text-light);
            font-style: italic;
        }

        /* 打印样式 */
        .print-only {
            display: none;
        }

        @media print {
            body {
                background: white;
                color: black;
            }

            .container {
                display: none;
            }

            .decoration {
                display: none;
            }

            .print-only {
                display: block;
                padding: 15mm;
            }

            .print-header {
                text-align: center;
                margin-bottom: 20px;
                border-bottom: 3px solid #FF69B4;
                padding-bottom: 15px;
                position: relative;
            }

            .print-header h1 {
                font-size: 26pt;
                color: #FF69B4;
                margin-bottom: 8px;
                font-family: 'Comic Neue', 'Noto Sans SC', sans-serif;
            }

            .print-owner {
                font-size: 14pt;
                color: #C4A7E7;
                font-weight: bold;
                margin: 8px 0;
            }

            .print-decorations {
                position: absolute;
                font-size: 20pt;
            }

            .print-decorations.left {
                left: 0;
                top: 0;
            }

            .print-decorations.right {
                right: 0;
                top: 0;
            }

            .schedule-table {
                width: 100%;
                border-collapse: collapse;
                margin-top: 10px;
                page-break-inside: avoid;
            }

            .schedule-table th,
            .schedule-table td {
                border: 2px solid #FFB6D9;
                padding: 10px 5px;
                text-align: center;
            }

            .schedule-table th {
                background: #FFE5F1 !important;
                font-weight: bold;
                font-size: 11pt;
                color: #5A3E5E !important;
            }

            .schedule-table td {
                font-size: 10pt;
                min-height: 35px;
                background: white !important;
                color: #5A3E5E !important;
            }

            .schedule-table td.rest-cell {
                background: #FFE5F1 !important;
                color: #FF69B4 !important;
                font-weight: bold;
            }

            .schedule-table td.course-cell {
                background: #E5D4FF !important;
                color: #5A3E5E !important;
                font-weight: 600;
            }

            .print-footer {
                margin-top: 15px;
                text-align: center;
                font-size: 11pt;
                color: #FF69B4;
                border-top: 2px solid #FFB6D9;
                padding-top: 10px;
                font-weight: bold;
            }

            @page {
                size: A4;
                margin: 12mm;
            }
        }

        /* 课程选择弹窗 */
        .course-modal-overlay {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0.5);
            display: flex;
            align-items: center;
            justify-content: center;
            z-index: 9999;
            opacity: 0;
            visibility: hidden;
            transition: all 0.3s ease;
        }

        .course-modal-overlay.active {
            opacity: 1;
            visibility: visible;
        }

        .course-modal {
            background: linear-gradient(135deg, rgba(255, 255, 255, 0.98) 0%, rgba(255, 229, 241, 0.98) 100%);
            border: 3px solid var(--pink-medium);
            border-radius: 30px;
            padding: 2rem;
            max-width: 500px;
            width: 90%;
            max-height: 80vh;
            overflow-y: auto;
            box-shadow: 0 20px 60px rgba(255, 105, 180, 0.4);
            transform: scale(0.8) translateY(-20px);
            transition: all 0.3s ease;
        }

        .course-modal-overlay.active .course-modal {
            transform: scale(1) translateY(0);
        }

        .course-modal-header {
            text-align: center;
            margin-bottom: 1.5rem;
            padding-bottom: 1rem;
            border-bottom: 2px dashed var(--pink-medium);
        }

        .course-modal-header h3 {
            font-size: 1.4rem;
            color: var(--pink-dark);
            font-family: 'Comic Neue', 'Noto Sans SC', sans-serif;
            margin-bottom: 0.5rem;
        }

        .course-modal-header p {
            font-size: 0.9rem;
            color: var(--text-light);
        }

        .course-options {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 0.8rem;
            margin-bottom: 1.5rem;
        }

        .course-option {
            padding: 0.8rem 0.5rem;
            background: white;
            border: 2px solid var(--pink-light);
            border-radius: 15px;
            cursor: pointer;
            font-size: 0.9rem;
            font-weight: 600;
            color: var(--text-dark);
            transition: all 0.3s ease;
            text-align: center;
        }

        .course-option:hover {
            background: var(--pink-light);
            border-color: var(--pink-dark);
            transform: translateY(-3px) scale(1.05);
            box-shadow: 0 5px 15px rgba(255, 105, 180, 0.3);
        }

        .course-option.rest-option {
            background: linear-gradient(135deg, #FFE5F1 0%, #FFB6D9 100%);
            border-color: var(--pink-medium);
        }

        .course-option.rest-option:hover {
            background: linear-gradient(135deg, #FFB6D9 0%, #FF69B4 100%);
            color: white;
        }

        .course-modal-custom {
            margin-bottom: 1.5rem;
        }

        .course-modal-custom label {
            display: block;
            margin-bottom: 0.5rem;
            color: var(--text-dark);
            font-size: 0.9rem;
            font-weight: 600;
        }

        .course-modal-custom input {
            width: 100%;
            padding: 0.9rem 1rem;
            background: white;
            border: 2px solid var(--pink-medium);
            border-radius: 15px;
            color: var(--text-dark);
            font-size: 0.95rem;
            transition: all 0.3s ease;
            font-family: 'Noto Sans SC', sans-serif;
        }

        .course-modal-custom input:focus {
            outline: none;
            border-color: var(--pink-dark);
            box-shadow: 0 0 0 4px rgba(255, 105, 180, 0.2);
        }

        .course-modal-buttons {
            display: flex;
            gap: 1rem;
        }

        .course-modal-buttons .btn {
            flex: 1;
        }

        .btn-confirm {
            background: linear-gradient(135deg, #FF69B4 0%, #FF1493 100%);
            color: white;
            box-shadow: 0 5px 20px rgba(255, 105, 180, 0.4);
        }

        .btn-confirm:hover {
            transform: translateY(-3px) scale(1.05);
            box-shadow: 0 8px 30px rgba(255, 105, 180, 0.6);
        }

        .btn-cancel {
            background: linear-gradient(135deg, #C4A7E7 0%, #9370DB 100%);
            color: white;
            box-shadow: 0 5px 20px rgba(196, 167, 231, 0.4);
        }

        .btn-cancel:hover {
            transform: translateY(-3px) scale(1.05);
            box-shadow: 0 8px 30px rgba(196, 167, 231, 0.6);
        }

        .btn-clear-cell {
            background: linear-gradient(135deg, #FFB6D9 0%, #FF69B4 100%);
            color: white;
            box-shadow: 0 5px 15px rgba(255, 182, 217, 0.4);
        }

        .btn-clear-cell:hover {
            transform: translateY(-3px) scale(1.05);
            box-shadow: 0 8px 25px rgba(255, 182, 217, 0.6);
        }

        /* 可点击的单元格样式 */
        .schedule-table td.clickable-cell {
            cursor: pointer;
            position: relative;
        }

        .schedule-table td.clickable-cell::after {
            content: '&#9999;&#65039;';
            position: absolute;
            top: 2px;
            right: 2px;
            font-size: 0.7rem;
            opacity: 0;
            transition: opacity 0.3s ease;
        }

        .schedule-table td.clickable-cell:hover::after {
            opacity: 0.6;
        }

        .schedule-table td.clickable-cell:hover {
            background: linear-gradient(135deg, #FFE5F1 0%, #E5D4FF 100%) !important;
            transform: scale(1.08);
            box-shadow: 0 5px 15px rgba(255, 105, 180, 0.3);
            z-index: 1;
        }

        /* 动画 */
        @keyframes fadeInDown {
            from {
                opacity: 0;
                transform: translateY(-30px);
            }

            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        @keyframes fadeInUp {
            from {
                opacity: 0;
                transform: translateY(30px);
            }

            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        /* 响应式设计 */
        @media (max-width: 1200px) {
            .main-content {
                grid-template-columns: 1fr;
            }

            .config-panel {
                max-width: 600px;
                margin: 0 auto;
            }
        }

        @media (max-width: 768px) {
            .container {
                padding: 1rem;
            }

            .header h1 {
                font-size: 1rem;
            }

            .day-selector {
                grid-template-columns: repeat(4, 1fr);
            }

            .action-buttons {
                flex-direction: column;
            }

            .preview-header {
                flex-direction: column;
                gap: 1rem;
                align-items: stretch;
            }

            .butterfly,
            .flower,
            .star {
                font-size: 1rem;
            }
        }

        /* 通知动画 */
        @keyframes slideInRight {
            from {
                transform: translateX(400px);
                opacity: 0;
            }

            to {
                transform: translateX(0);
                opacity: 1;
            }
        }

        @keyframes slideOutRight {
            from {
                transform: translateX(0);
                opacity: 1;
            }

            to {
                transform: translateX(400px);
                opacity: 0;
            }
        }
    </style>
</head>

<body>
    <!-- 可爱装饰元素 -->
    <div class="decoration butterfly">&#129419;</div>
    <div class="decoration butterfly">&#129419;</div>
    <div class="decoration butterfly">&#129419;</div>
    <div class="decoration butterfly">&#129419;</div>
    <div class="decoration flower">&#127800;</div>
    <div class="decoration flower">&#127802;</div>
    <div class="decoration flower">&#127804;</div>
    <div class="decoration star">&#11088;</div>
    <div class="decoration star">&#10024;</div>
    <div class="decoration star">&#128171;</div>

    <div class="container">
        <header class="header">
            <h1>&#127752; 我的课程表 &#127752;</h1>
            <div class="owner-name">
                <span>&#128103;</span>
                <span>孟中淇</span>
                <span>&#127872;</span>
            </div>
            <p class="subtitle">让学习变得更有趣 &#10024;</p>
        </header>

        <div class="main-content">
            <!-- 配置面板 -->
            <div class="config-panel">
                <h2>&#128221; 课程配置 &#127912;</h2>
                <div class="day-selector">
                    <button class="day-btn active" data-day="monday">周一</button>
                    <button class="day-btn" data-day="tuesday">周二</button>
                    <button class="day-btn" data-day="wednesday">周三</button>
                    <button class="day-btn" data-day="thursday">周四</button>
                    <button class="day-btn" data-day="friday">周五</button>
                    <button class="day-btn" data-day="saturday">周六</button>
                    <button class="day-btn" data-day="sunday">周日</button>
                </div>

                <div class="config-form">
                    <div class="form-section">
                        <h3>&#127749; 上午课程</h3>
                        <div class="course-input">
                            <label>第一节 &#128218;</label>
                            <input type="text" id="morning1" list="courseList" placeholder="例如:语文">
                        </div>
                        <div class="course-input">
                            <label>第二节 &#9999;&#65039;</label>
                            <input type="text" id="morning2" list="courseList" placeholder="例如:数学">
                        </div>
                        <div class="course-input">
                            <label>第三节 &#128214;</label>
                            <input type="text" id="morning3" list="courseList" placeholder="例如:英语">
                        </div>
                        <div class="course-input">
                            <label>第四节 &#128300;</label>
                            <input type="text" id="morning4" list="courseList" placeholder="例如:科学">
                        </div>
                    </div>

                    <div class="form-section">
                        <h3>&#127750; 下午课程</h3>
                        <div class="rest-toggle">
                            <label class="toggle-label">
                                <input type="hidden" id="afternoonRest">
                                <span class="toggle-slider"></span>
                                <span class="toggle-text"></span>
                            </label>
                        </div>
                        <div id="afternoonCourses">
                            <div class="course-input">
                                <label>第五节 &#127912;</label>
                                <input type="text" id="afternoon1" list="courseList" placeholder="例如:美术">
                            </div>
                            <div class="course-input">
                                <label>第六节 &#127925;</label>
                                <input type="text" id="afternoon2" list="courseList" placeholder="例如:音乐">
                            </div>
                            <div class="course-input">
                                <label>第七节 &#9917;</label>
                                <input type="text" id="afternoon3" list="courseList" placeholder="例如:体育">
                            </div>
                            <div class="course-input">
                                <label>第八节 &#128187;</label>
                                <input type="text" id="afternoon4" list="courseList" placeholder="例如:信息技术">
                            </div>
                        </div>
                    </div>



                    <div class="action-buttons">
                        <button class="btn btn-save" id="saveBtn">&#128190; 保存课程</button>
                        <button class="btn btn-clear" id="clearBtn">&#128465;&#65039; 清空当天</button>
                    </div>
                </div>
            </div>

            <!-- 预览面板 -->
            <div class="preview-panel">
                <div class="preview-header">
                    <h2>&#128064; 课程表预览 &#127775;</h2>
                    <button class="btn btn-print" id="printBtn">&#128424;&#65039; 打印课程表</button>
                </div>
                <div class="schedule-container" id="schedulePreview">
                    <!-- 课程表将通过JavaScript动态生成 -->
                </div>
                <div class="motivation-section">

                    <div class="motivation-input">
                        <div class="motivation-controls">
                            <textarea id="motivationText" placeholder="输入你的激励语...">学习很苦,坚持很酷</textarea>
                            <button class="dice-btn" id="diceBtn" title="随机换一条激励语">&#127922;</button>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </div>

    <!-- 课程选项列表 -->
    <datalist id="courseList">
        <option value="语文">
        <option value="数学">
        <option value="英语">
        <option value="道德与法治">
        <option value="历史">
        <option value="地理">
        <option value="物理">
        <option value="化学">
        <option value="生物">
        <option value="体育与健康">
        <option value="音乐">
        <option value="美术">
        <option value="信息技术">
        <option value="劳动/综合实践活动">
        <option value="计算机">
        <option value="&#128564; 休息"></option>
    </datalist>

    <!-- 打印专用区域 -->
    <div class="print-only" id="printArea">
        <div class="print-header">
            <div class="print-decorations left">&#129419;&#127800;</div>
            <div class="print-decorations right">&#127802;&#129419;</div>
            <h1>&#127752; 我的课程表 &#127752;</h1>
            <div class="print-owner">&#128103; 孟中淇 &#127872;</div>
        </div>
        <div id="printSchedule"></div>
        <div class="print-footer" id="printMotivation">
            &#10024; 好好学习,天天向上!&#128150;
        </div>
    </div>

    <!-- 课程选择弹窗 -->
    <div class="course-modal-overlay" id="courseModalOverlay">
        <div class="course-modal">
            <div class="course-modal-header">
                <h3>&#128218; 选择课程 &#10024;</h3>
                <p id="modalCellInfo">周一 第1节</p>
            </div>
            <div class="course-options" id="courseOptions">
                <!-- 课程选项将通过JavaScript动态生成 -->
            </div>
            <div class="course-modal-custom">
                <label>&#9999;&#65039; 或者输入自定义课程:</label>
                <input type="text" id="customCourseInput" placeholder="输入课程名称...">
            </div>
            <div class="course-modal-buttons">
                <button class="btn btn-confirm" id="confirmCourseBtn">&#128190; 确定</button>
                <button class="btn btn-clear-cell" id="clearCellBtn">&#128465;&#65039; 清空</button>
                <button class="btn btn-cancel" id="cancelCourseBtn">&#10060; 取消</button>
            </div>
        </div>
    </div>

    <script>
        // 课程数据结构
        const scheduleData = {
            monday: { morning: ['', '', '', ''], afternoon: ['', '', '', ''], isRest: false },
            tuesday: { morning: ['', '', '', ''], afternoon: ['', '', '', ''], isRest: false },
            wednesday: { morning: ['', '', '', ''], afternoon: ['', '', '', ''], isRest: false },
            thursday: { morning: ['', '', '', ''], afternoon: ['', '', '', ''], isRest: false },
            friday: { morning: ['', '', '', ''], afternoon: ['', '', '', ''], isRest: false },
            saturday: { morning: ['', '', '', ''], afternoon: ['', '', '', ''], isRest: false },
            sunday: { morning: ['', '', '', ''], afternoon: ['', '', '', ''], isRest: false }
        };

        // 当前选中的日期
        let currentDay = 'monday';

        // 激励语
        let motivationText = '学习很苦,坚持很酷';

        // 100条适合6年级女孩的激励话术
        const motivationQuotes = [
            '学习很苦,坚持很酷',
            '每一次努力,都是成长的阶梯',
            '今天的努力,是明天的骄傲',
            '相信自己,你可以做到',
            '梦想在前方,努力在路上',
            '小小的进步,也是大大的成功',
            '做最好的自己,不负青春时光',
            '勇敢追梦,永不放弃',
            '每天进步一点点,就是最棒的自己',
            '用微笑面对挑战,用努力创造奇迹',
            '你比想象中更优秀',
            '坚持下去,美好正在路上',
            '学习是给自己最好的礼物',
            '今天的汗水,是明天的彩虹',
            '相信努力的力量',
            '每一个困难,都是成长的机会',
            '做一个温暖又努力的女孩',
            '知识是最美的装饰',
            '用心学习,快乐成长',
            '你的努力,时光会记得',
            '保持热爱,奔赴山海',
            '做自己的小太阳',
            '努力到无能为力,拼搏到感动自己',
            '星光不问赶路人',
            '温柔且坚定地前行',
            '每一天都是新的开始',
            '用知识点亮未来',
            '做一个闪闪发光的女孩',
            '越努力,越幸运',
            '书山有路勤为径',
            '学海无涯苦作舟',
            '天道酬勤,厚积薄发',
            '宝剑锋从磨砺出',
            '梅花香自苦寒来',
            '少年易学老难成',
            '一寸光阴不可轻',
            '黑发不知勤学早',
            '白首方悔读书迟',
            '读书破万卷,下笔如有神',
            '书籍是人类进步的阶梯',
            '知识改变命运',
            '学习成就未来',
            '今日事,今日毕',
            '明日复明日,明日何其多',
            '我生待明日,万事成蹉跎',
            '少壮不努力,老大徒伤悲',
            '一分耕耘,一分收获',
            '不经一番寒彻骨,怎得梅花扑鼻香',
            '有志者事竟成',
            '世上无难事,只怕有心人',
            '只要功夫深,铁杵磨成针',
            '千里之行,始于足下',
            '不积跬步,无以至千里',
            '不积小流,无以成江海',
            '锲而不舍,金石可镂',
            '绳锯木断,水滴石穿',
            '业精于勤,荒于嬉',
            '行成于思,毁于随',
            '书读百遍,其义自见',
            '温故而知新',
            '学而不思则罔',
            '思而不学则殆',
            '知之为知之,不知为不知',
            '三人行,必有我师焉',
            '敏而好学,不耻下问',
            '学无止境',
            '活到老,学到老',
            '笨鸟先飞早入林',
            '勤能补拙是良训',
            '一份辛苦一份才',
            '天才是百分之一的灵感加百分之九十九的汗水',
            '成功的秘诀在于坚持',
            '失败是成功之母',
            '从哪里跌倒就从哪里爬起来',
            '困难像弹簧,你弱它就强',
            '自信是成功的第一秘诀',
            '态度决定一切',
            '细节决定成败',
            '机会总是留给有准备的人',
            '今天的你,比昨天更优秀',
            '每一次尝试,都是一次成长',
            '勇敢做自己,世界会为你让路',
            '用努力书写精彩人生',
            '做一个有梦想的追梦人',
            '让优秀成为一种习惯',
            '用行动证明自己',
            '不怕慢,就怕站',
            '一步一个脚印,踏实前行',
            '心有多大,舞台就有多大',
            '你的潜力无限',
            '做最棒的自己',
            '用智慧点亮人生',
            '学习使我快乐',
            '知识就是力量',
            '读书使人明智',
            '腹有诗书气自华',
            '书香伴我成长',
            '在书中遇见更好的自己',
            '每一本书都是一个新世界',
            '阅读让生活更美好'
        ];

        // 星期映射
        const dayMap = {
            monday: '周一',
            tuesday: '周二',
            wednesday: '周三',
            thursday: '周四',
            friday: '周五',
            saturday: '周六',
            sunday: '周日'
        };

        // 初始化
        document.addEventListener('DOMContentLoaded', () => {
            loadFromLocalStorage();
            initEventListeners();
            initModalEvents();
            renderSchedule();
            loadDayData(currentDay);
        });

        // 初始化事件监听
        function initEventListeners() {
            // 日期选择按钮
            document.querySelectorAll('.day-btn').forEach(btn => {
                btn.addEventListener('click', (e) => {
                    document.querySelectorAll('.day-btn').forEach(b => b.classList.remove('active'));
                    e.target.classList.add('active');
                    currentDay = e.target.dataset.day;
                    loadDayData(currentDay);
                });
            });

            // 下午休息切换
            document.getElementById('afternoonRest').addEventListener('change', (e) => {
                const afternoonCourses = document.getElementById('afternoonCourses');
                if (e.target.checked) {
                    afternoonCourses.classList.add('disabled');
                } else {
                    afternoonCourses.classList.remove('disabled');
                }
            });

            // 保存按钮
            document.getElementById('saveBtn').addEventListener('click', saveDayData);

            // 清空按钮
            document.getElementById('clearBtn').addEventListener('click', clearDayData);

            // 打印按钮
            document.getElementById('printBtn').addEventListener('click', printSchedule);

            // 激励语输入
            document.getElementById('motivationText').addEventListener('input', (e) => {
                motivationText = e.target.value.trim();
                saveToLocalStorage();
            });

            // 骰子按钮 - 随机换激励语
            document.getElementById('diceBtn').addEventListener('click', () => {
                // 随机选择一条激励语
                const randomIndex = Math.floor(Math.random() * motivationQuotes.length);
                const randomQuote = motivationQuotes[randomIndex];

                // 更新到输入框
                document.getElementById('motivationText').value = randomQuote;
                motivationText = randomQuote;

                // 保存
                saveToLocalStorage();

                // 显示通知
                showNotification('&#127922; 已换一条新的激励语!');
            });

            // 实时更新预览
            document.querySelectorAll('.course-input input').forEach(input => {
                input.addEventListener('input', () => {
                    saveDayData();
                });
            });

            document.getElementById('afternoonRest').addEventListener('change', () => {
                saveDayData();
            });
        }

        // 加载某一天的数据到表单
        function loadDayData(day) {
            const data = scheduleData[day];

            // 加载上午课程
            document.getElementById('morning1').value = data.morning[0] || '';
            document.getElementById('morning2').value = data.morning[1] || '';
            document.getElementById('morning3').value = data.morning[2] || '';
            document.getElementById('morning4').value = data.morning[3] || '';

            // 加载下午课程
            document.getElementById('afternoon1').value = data.afternoon[0] || '';
            document.getElementById('afternoon2').value = data.afternoon[1] || '';
            document.getElementById('afternoon3').value = data.afternoon[2] || '';
            document.getElementById('afternoon4').value = data.afternoon[3] || '';

            // 加载休息状态
            document.getElementById('afternoonRest').checked = data.isRest;
            const afternoonCourses = document.getElementById('afternoonCourses');
            if (data.isRest) {
                afternoonCourses.classList.add('disabled');
            } else {
                afternoonCourses.classList.remove('disabled');
            }
        }

        // 保存当前天的数据
        function saveDayData() {
            const data = scheduleData[currentDay];

            // 保存上午课程
            data.morning[0] = document.getElementById('morning1').value.trim();
            data.morning[1] = document.getElementById('morning2').value.trim();
            data.morning[2] = document.getElementById('morning3').value.trim();
            data.morning[3] = document.getElementById('morning4').value.trim();

            // 保存下午课程
            data.isRest = document.getElementById('afternoonRest').checked;
            if (!data.isRest) {
                data.afternoon[0] = document.getElementById('afternoon1').value.trim();
                data.afternoon[1] = document.getElementById('afternoon2').value.trim();
                data.afternoon[2] = document.getElementById('afternoon3').value.trim();
                data.afternoon[3] = document.getElementById('afternoon4').value.trim();
            }

            // 保存到本地存储
            saveToLocalStorage();

            // 更新预览
            renderSchedule();

            // 显示保存提示
            showNotification('&#9989; 保存成功!');
        }

        // 清空当前天的数据
        function clearDayData() {
            // if (confirm(`确定要清空${dayMap[currentDay]}的所有课程吗?`)) {
            scheduleData[currentDay] = {
                morning: ['', '', '', ''],
                afternoon: ['', '', '', ''],
                isRest: false
            };

            loadDayData(currentDay);
            saveToLocalStorage();
            renderSchedule();
            showNotification('&#128465;&#65039; 已清空!');
            // }
        }

        // 渲染课程表
        function renderSchedule() {
            const container = document.getElementById('schedulePreview');

            let html = '<table class="schedule-table">';

            // 表头
            html += '<thead><tr>';
            html += '<th>时间</th>';
            for (let day in dayMap) {
                html += `<th>${dayMap[day]}</th>`;
            }
            html += '</tr></thead>';

            // 表体
            html += '<tbody>';

            // 上午课程
            for (let i = 0; i < 4; i++) {
                html += '<tr>';
                html += `<td><strong>第${i + 1}节</strong></td>`;
                for (let day in scheduleData) {
                    const course = scheduleData[day].morning[i];
                    const cellClass = course ? 'course-cell clickable-cell' : 'empty-cell clickable-cell';
                    const displayText = course || '-';
                    html += `<td class="${cellClass}" data-day="${day}" data-period="morning" data-index="${i}">${displayText}</td>`;
                }
                html += '</tr>';
            }

            // 下午课程 (4节)
            for (let i = 0; i < 4; i++) {
                html += '<tr>';
                html += `<td><strong>第${i + 5}节</strong></td>`;
                for (let day in scheduleData) {
                    if (scheduleData[day].isRest) {
                        if (i === 1) {
                            html += `<td class="rest-cell" rowspan="4">&#128564; 休息</td>`;
                        } else if (i === 0 || i === 2 || i === 3) {
                            continue;
                        }
                    } else {
                        const course = scheduleData[day].afternoon[i];
                        const cellClass = course ? 'course-cell clickable-cell' : 'empty-cell clickable-cell';
                        const displayText = course || '-';
                        html += `<td class="${cellClass}" data-day="${day}" data-period="afternoon" data-index="${i}">${displayText}</td>`;
                    }
                }
                html += '</tr>';
            }

            html += '</tbody></table>';

            container.innerHTML = html;

            // 添加单元格点击事件
            addCellClickListeners();
        }

        // 弹窗相关变量
        let currentEditCell = null; // 当前编辑的单元格信息

        // 课程列表
        const courseList = [
            '语文', '数学', '英语', '道德与法治', '历史', '地理',
            '物理', '化学', '生物', '体育与健康', '音乐', '美术',
            '信息技术', '劳动/综合实践活动', '计算机'
        ];

        // 添加单元格点击事件
        function addCellClickListeners() {
            document.querySelectorAll('.clickable-cell').forEach(cell => {
                cell.addEventListener('click', () => {
                    const day = cell.dataset.day;
                    const period = cell.dataset.period;
                    const index = parseInt(cell.dataset.index);
                    openCourseModal(day, period, index);
                });
            });
        }

        // 打开课程选择弹窗
        function openCourseModal(day, period, index) {
            currentEditCell = { day, period, index };

            // 更新弹窗标题信息
            const periodNum = period === 'morning' ? index + 1 : index + 5;
            document.getElementById('modalCellInfo').textContent = `${dayMap[day]} 第${periodNum}节`;

            // 生成课程选项
            const optionsContainer = document.getElementById('courseOptions');
            let optionsHTML = '';
            courseList.forEach(course => {
                optionsHTML += `<div class="course-option" data-course="${course}">${course}</div>`;
            });
            // 添加休息选项
            optionsHTML += `<div class="course-option rest-option" data-course="&#128564; 休息">&#128564; 休息</div>`;
            optionsContainer.innerHTML = optionsHTML;

            // 添加课程选项点击事件
            document.querySelectorAll('.course-option').forEach(option => {
                // 单击:填充到输入框
                option.addEventListener('click', () => {
                    const course = option.dataset.course;
                    document.getElementById('customCourseInput').value = course;
                });
                // 双击:直接选中并确认
                option.addEventListener('dblclick', () => {
                    const course = option.dataset.course;
                    document.getElementById('customCourseInput').value = course;
                    confirmCourseSelection();
                });
            });

            // 设置当前值到输入框
            const currentValue = scheduleData[day][period][index] || '';
            document.getElementById('customCourseInput').value = currentValue;

            // 显示弹窗
            document.getElementById('courseModalOverlay').classList.add('active');

            // 聚焦到输入框
            setTimeout(() => {
                document.getElementById('customCourseInput').focus();
            }, 100);
        }

        // 关闭课程选择弹窗
        function closeCourseModal() {
            document.getElementById('courseModalOverlay').classList.remove('active');
            currentEditCell = null;
        }

        // 确认课程选择
        function confirmCourseSelection() {
            if (!currentEditCell) return;

            const { day, period, index } = currentEditCell;
            const newCourse = document.getElementById('customCourseInput').value.trim();

            // 更新数据
            scheduleData[day][period][index] = newCourse;

            // 保存到本地存储
            saveToLocalStorage();

            // 重新渲染
            renderSchedule();

            // 同步更新配置面板的输入框(如果当前编辑的是选中的日期)
            if (day === currentDay) {
                loadDayData(currentDay);
            }

            // 关闭弹窗
            closeCourseModal();

            // 显示通知
            showNotification('&#9989; 课程已更新!');
        }

        // 清空单元格
        function clearCellCourse() {
            if (!currentEditCell) return;

            const { day, period, index } = currentEditCell;

            // 清空数据
            scheduleData[day][period][index] = '';

            // 保存到本地存储
            saveToLocalStorage();

            // 重新渲染
            renderSchedule();

            // 同步更新配置面板
            if (day === currentDay) {
                loadDayData(currentDay);
            }

            // 关闭弹窗
            closeCourseModal();

            // 显示通知
            showNotification('&#128465;&#65039; 已清空该节课!');
        }

        // 初始化弹窗事件
        function initModalEvents() {
            // 确认按钮
            document.getElementById('confirmCourseBtn').addEventListener('click', confirmCourseSelection);

            // 清空按钮
            document.getElementById('clearCellBtn').addEventListener('click', clearCellCourse);

            // 取消按钮
            document.getElementById('cancelCourseBtn').addEventListener('click', closeCourseModal);

            // 点击遮罩层关闭
            document.getElementById('courseModalOverlay').addEventListener('click', (e) => {
                if (e.target.id === 'courseModalOverlay') {
                    closeCourseModal();
                }
            });

            // 回车确认
            document.getElementById('customCourseInput').addEventListener('keydown', (e) => {
                if (e.key === 'Enter') {
                    confirmCourseSelection();
                } else if (e.key === 'Escape') {
                    closeCourseModal();
                }
            });
        }

        // 打印课程表
        function printSchedule() {
            // 复制课程表到打印区域
            const scheduleHTML = document.getElementById('schedulePreview').innerHTML;
            document.getElementById('printSchedule').innerHTML = scheduleHTML;

            // 设置激励语
            const motivation = motivationText || '学习很苦,坚持很酷';
            document.getElementById('printMotivation').textContent = `&#10024; ${motivation} &#128150;`;

            // 触发打印
            window.print();
        }

        // 保存到本地存储
        function saveToLocalStorage() {
            const dataToSave = {
                scheduleData: scheduleData,
                motivationText: motivationText
            };
            localStorage.setItem('scheduleData_mengzhongqi', JSON.stringify(dataToSave));
        }

        // 从本地存储加载
        function loadFromLocalStorage() {
            const saved = localStorage.getItem('scheduleData_mengzhongqi');
            if (saved) {
                try {
                    const parsed = JSON.parse(saved);
                    // 兼容旧版本数据
                    if (parsed.scheduleData) {
                        Object.assign(scheduleData, parsed.scheduleData);
                        motivationText = parsed.motivationText || '学习很苦,坚持很酷';
                    } else {
                        // 旧版本数据格式
                        Object.assign(scheduleData, parsed);
                    }
                    // 加载激励语到输入框
                    document.getElementById('motivationText').value = motivationText;
                } catch (e) {
                    console.error('加载数据失败:', e);
                }
            }
        }

        // 显示通知
        function showNotification(message) {
            const notification = document.createElement('div');
            notification.textContent = message;
            notification.style.cssText = `
                position: fixed;
                top: 20px;
                right: 20px;
                background: linear-gradient(135deg, #FF69B4 0%, #C4A7E7 100%);
                color: white;
                padding: 1rem 1.5rem;
                border-radius: 20px;
                box-shadow: 0 5px 20px rgba(255, 105, 180, 0.4);
                z-index: 10000;
                font-weight: 700;
                animation: slideInRight 0.3s ease;
                border: 2px solid white;
            `;

            document.body.appendChild(notification);

            setTimeout(() => {
                notification.style.animation = 'slideOutRight 0.3s ease';
                setTimeout(() => {
                    document.body.removeChild(notification);
                }, 300);
            }, 3000);
        }
    </script>
</body>

</html>


课程表.zip (11.06 KB, 下载次数: 524)

免费评分

参与人数 13吾爱币 +12 热心值 +10 收起 理由
z1987 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
w40735211 + 1 + 1 谢谢@Thanks!
冉冉的老父亲i + 1 + 1 谢谢@Thanks!
heihouzi + 1 热心回复!
be1ieveme + 1 我很赞同!
badboysky + 1 谢谢@Thanks!
13388157215 + 1 + 1 谢谢@Thanks!
FYL11162022 + 1 + 1 热心回复!
sxp3468 + 1 + 1 热心回复!
lgc81034 + 1 谢谢@Thanks!
tangqinggang + 1 + 1 鼓励转贴优秀软件安全工具和文档!
QT2008 + 1 + 1 我很赞同!
helh0275 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

badboysky 发表于 2025-12-13 19:34
借花献佛,优化了适配手机端,简单的适配了下

index.zip

11.21 KB, 下载次数: 55, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
chen22fe + 1 热心回复!
mengfanyu + 1 + 1 我很赞同!

查看全部评分

破解专用户 发表于 2025-12-12 20:28
周日,您都想到了,建议您再加个第九节,第十节,因为晚上也有补课的
苏紫方璇 发表于 2025-12-12 19:43
请在帖子中粘贴部分关键代码
本版块仅限分享编程技术和源码相关内容,发布帖子必须带上关键代码和具体功能介绍【20220924强制执行】
huyufeng 发表于 2025-12-12 20:34
不错,收下给小孩用用
TangTonT 发表于 2025-12-12 20:58
可以改名字吗? 只能是“孟中淇” 吗?
风临晚 发表于 2025-12-12 20:58
这个不错,感谢分享,以前都是自己word制作,现在好了,可以偷懒了。再次感谢。
ycz0030 发表于 2025-12-12 21:41
不错,收下备用
zt185 发表于 2025-12-12 21:48
很美观,下载给孩子用!
QT2008 发表于 2025-12-12 21:51
完美的课程表!
simoney 发表于 2025-12-12 22:26
原创课程表,厉害&#128077;&#127995;
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-7-19 02:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表