• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    電子校歷自動生成系統(tǒng)的設(shè)計與實現(xiàn)

    2023-08-11 07:16:54宋佳豪潘夢瑤
    現(xiàn)代計算機 2023年11期
    關(guān)鍵詞:序號學(xué)期工作

    劉 哲,宋佳豪,潘夢瑤

    (延安大學(xué)數(shù)學(xué)與計算機科學(xué)學(xué)院,延安 716000)

    0 引言

    高等學(xué)校各項工作的良好運轉(zhuǎn),離不開廣大教學(xué)管理人員的辛勤付出。然而面對教學(xué)工作過程中的復(fù)雜性、多樣性,大多數(shù)工作都是通過人工的方式去手動完成的。其中就包括了一部分內(nèi)容枯燥、重復(fù)率高,實際上又可以通過計算機程序自動完成的工作。教務(wù)人員每天都要花費大量的時間和精力去完成這些工作。因此,如果能夠通過計算機程序的方式,輔助完成這類工作,可以有效解決教學(xué)管理過程中存在的問題,提升教學(xué)管理水平[1-3]。而校歷文件的制定,是高校教學(xué)計劃有序執(zhí)行過程中必不可少的一環(huán)。如何能夠?qū)⑵渲兴N含的價值更加充分、高效地利用起來[4-6],具有非常重要的研究價值。

    1 實驗設(shè)計

    本次實驗使用計算機編程語言Python 3.11進(jìn)行系統(tǒng)開發(fā),使用Python 標(biāo)準(zhǔn)庫Calendar 獲取日歷相關(guān)數(shù)據(jù),使用Python 的第三方庫xlwt將組織好的數(shù)據(jù)內(nèi)容寫入目標(biāo)文件中,并對其進(jìn)行排版。

    1.1 主要組件介紹

    Calendar 是Python 中與日歷信息相關(guān)的一個標(biāo)準(zhǔn)庫,該模塊提供了豐富的對年、月、日等數(shù)據(jù)進(jìn)行操作的函數(shù),使用時無需安裝,可以直接通過import 語句導(dǎo)入。模塊主要包括三大類:Calendar、TextCalendar和HTMLCalendar。其中,Calendar是其它兩個類的基類,可以用來創(chuàng)建一個普通的日歷對象。TextCalendar 一般用來創(chuàng)建一個純文本的日歷對象,使用HTMLCalendar 生成HTML 格式的日歷對象。

    xlwt 是Python 中常見的用來生成Excel 類型文件的第三方工具包,使用時需要通過pip 命令安裝后才能導(dǎo)入,推薦通過鏡像源的方式進(jìn)行安裝[7],表1 列出了一些質(zhì)量較高的Python 鏡像源。需要注意的是,xlwt主要用于將組織好的數(shù)據(jù)和相關(guān)的文本格式信息寫入新建的工作表文件中,不能直接編輯一個已經(jīng)存在的工作表文件。

    表1 常用的國內(nèi)鏡像站

    1.2 系統(tǒng)設(shè)計

    系統(tǒng)的基本生成步驟如圖1所示。

    圖1 系統(tǒng)流程

    (1)創(chuàng)建一個空白的Excel 文檔,等待數(shù)據(jù)寫入。

    (2)按學(xué)期中的月份進(jìn)行遍歷。邏輯上,將當(dāng)前學(xué)期的第一個月記為起始月start_month,將當(dāng)前學(xué)期的最后一個月記為結(jié)束月end_month,使用函數(shù)range(start_month,end_month+1)遍歷訪問當(dāng)前學(xué)期的月份。

    (3)添加工作表,初始化標(biāo)題行。例如,2022—2023 學(xué)年第二學(xué)期的起始月是2 月,結(jié)束月是7 月。那么,需要按照從“2 月”到“7月”的順序和命名方式,在工作簿中依次創(chuàng)建每張工作表,用于存放對應(yīng)的日歷數(shù)據(jù)。每次迭代只創(chuàng)建當(dāng)前月的日歷工作表,并初始化工作表的列標(biāo)題行,分別是周序號、一、二、……、六、日。其中,“周序號”一列下的數(shù)據(jù),取值范圍是教學(xué)執(zhí)行計劃中的第一周到最后一周的序號,依次遞增。

    (4)當(dāng)前月日歷數(shù)據(jù)的獲取和整理。創(chuàng)建Calendar 日歷對象,通過調(diào)用函數(shù)monthdayscalendar(year,month),獲取當(dāng)前月的日歷數(shù)據(jù),整理出相關(guān)的中間變量,等待后續(xù)程序的使用。

    (5)按周次進(jìn)行遍歷。例如,當(dāng)前迭代月是2023 年3 月,3 月1 日對應(yīng)星期三,3 月31 日對應(yīng)星期五。那么,3 月份在日歷中會對應(yīng)5 行數(shù)據(jù),按周次遍歷應(yīng)遍歷5次,其它月份的遍歷依此類推。

    (6)數(shù)據(jù)的寫入和格式化。將當(dāng)前周次的日歷數(shù)據(jù),按照設(shè)定好的排版格式,寫入對應(yīng)的單元格中。例如,2023年3月1日正處于開學(xué)后的第一周內(nèi)。那么,程序應(yīng)該在對應(yīng)列標(biāo)題下的單元格中,寫入的數(shù)據(jù)依次是[‘第1 周’,‘’,‘’,‘1’,‘2’,‘3’,‘4’,‘5’]。

    (7)構(gòu)建剩余月份的日歷工作表。重復(fù)步驟(2)~(6)。

    2 難點與解決方案

    本部分選取了實驗過程中遇到的一些難點問題,給出解決方案,總結(jié)如下。

    問題一:如何讓日期出現(xiàn)在正確的列標(biāo)題下。

    如何確定每個月的日期數(shù)據(jù),與列標(biāo)題的對應(yīng)關(guān)系。例如,如果當(dāng)前月的第一天,對應(yīng)的列標(biāo)題是周三。那么,同一行中對應(yīng)列標(biāo)題是周一和周二的單元格,應(yīng)該是沒有內(nèi)容的。

    通過查詢calendar模塊的官方文檔,以及不斷的測試、對比,最終挖掘出了模塊中的功能函數(shù)monthdayscalendar(year,month)。該函數(shù)通過傳遞實參年和月,能夠返回具有如下所示的日期格式數(shù)據(jù)。

    [[0,0,1,2,3,4,5],[6,…,12],[13,…,19],[20,…,26],[27,28,0,0,0,0,0]]

    示例中的數(shù)據(jù)是2023 年2 月的日歷數(shù)據(jù),其中的數(shù)字1~28 代表當(dāng)前月中實際有的日期,0代表非當(dāng)前月的日期數(shù)據(jù)。可以看出,以周為計數(shù)單位,當(dāng)前月的日歷數(shù)據(jù)(外層的大列表),共包含5個完整的周(內(nèi)層列表),即外層的大列表一共有5個列表類型的元素。而每個內(nèi)層列表中的元素,按順序依次對應(yīng)周一、周二、……、周日。通過這種方式,就可以建立日期數(shù)據(jù)與列標(biāo)題之間的映射關(guān)系。當(dāng)將日期數(shù)據(jù)寫入工作表時,如果當(dāng)前單元格對應(yīng)的內(nèi)容是數(shù)字0,則跳過。

    問題二:教學(xué)周序號的確定。

    高等院校教學(xué)計劃的執(zhí)行、工作安排的制定都是以周為單位進(jìn)行的。程序自動構(gòu)建時,如何正確地輸出當(dāng)前周次對應(yīng)的教學(xué)周序號。

    正常情況下的邏輯是,設(shè)定一個變量week_index代表周序號,將該變量的值初始化為1,并關(guān)聯(lián)到開學(xué)第一周的日歷數(shù)據(jù)。當(dāng)每次輸出完一周的日歷數(shù)據(jù)時,讓變量week_index 的值加1,然后關(guān)聯(lián)第二周的日歷數(shù)據(jù),以后的周序號依此類推。如果某個月的最后一天是星期二,對應(yīng)教學(xué)執(zhí)行計劃的第5周。那么下個月的第一天會是星期三。但是,當(dāng)輸出下個月第一周的日歷數(shù)據(jù)時,不能將教學(xué)周的序號自動加1。因為當(dāng)前月的最后一天與下個月的第一天,屬于同一個周。

    解決辦法是,當(dāng)輸出每個月第一周的日歷數(shù)據(jù)時,判斷其中是否包含非當(dāng)前月的日歷數(shù)據(jù),例如[0,0,1,2,3,4,5]。這種情況下,就認(rèn)定教學(xué)周序號week_index的值不需要加1。

    問題三:Excel 文件的行高和列寬的設(shè)置問題。

    xlwt工具包的官方幫助文檔極少,開發(fā)的過程中相關(guān)功能的實現(xiàn)和函數(shù)的使用,主要來源于網(wǎng)絡(luò)上的教程。但行高和列寬的設(shè)置方法,經(jīng)過測試后均以失敗告終。最終,通過閱讀工具包的源代碼結(jié)合之前的測試,行高和列寬的設(shè)置代碼如表2所示。兩個乘號左邊的數(shù)字是基本尺寸單位,行高和列寬的設(shè)置,主要通過修改乘號右邊的數(shù)字調(diào)試后確定。

    表2 行高列寬的設(shè)置方法

    3 實驗結(jié)果與分析

    本次實驗主要從兩個方面對程序自動構(gòu)建的電子校歷文件進(jìn)行驗證:①日期數(shù)據(jù)是否正確地顯示在對應(yīng)的列標(biāo)題下;②教學(xué)周的序號與日期數(shù)據(jù)的關(guān)聯(lián)是否正確。為此,調(diào)閱了2020—2021、2021—2022、2022—2023 三個學(xué)年的校歷文件進(jìn)行對比。

    實驗結(jié)果表明:通過系統(tǒng)自動生成的不同學(xué)年、學(xué)期的電子校歷文件,與相應(yīng)的紙質(zhì)校歷中的數(shù)據(jù)完全匹配,并且構(gòu)建過程不超過2秒。電子校歷文件能有效提升教務(wù)人員完成特定事務(wù)的工作效率,將教務(wù)人員從枯燥的行政工作中解放出來,增加幸福指數(shù)。其應(yīng)用場景廣泛多樣,例如,每個學(xué)期開始時都必須要盡快制作的學(xué)期實驗教師值班安排表,就可以使用電子校歷文件的方式來快速完成,如圖2 所示。亦可以將電子校歷當(dāng)作備忘錄來使用,記錄教學(xué)執(zhí)行計劃中相應(yīng)節(jié)點的工作事項。需要時可以方便地查閱以前的工作事項記錄,制定新的教學(xué)安排。相比于傳統(tǒng)純文本形式的記錄,電子校歷更加美觀大方、一目了然,易于事后翻閱和文件存儲。

    圖2 電子校歷形式的值班安排表

    4 結(jié)語

    電子校歷自動生成系統(tǒng)在充分調(diào)研的基礎(chǔ)上,結(jié)合教學(xué)管理工作中的實際需求進(jìn)行研究,具有較強的應(yīng)用價值。在提升工作效率的同時,將教務(wù)人員從枯燥的行政工作中解放出來,減輕工作壓力,增加幸福指數(shù)。

    猜你喜歡
    序號學(xué)期工作
    新的學(xué)期 新的嘗試
    少先隊活動(2021年9期)2021-11-05 07:31:12
    期末沖刺高二上學(xué)期期末模擬卷
    不工作,爽飛了?
    桃之夭夭B(2017年8期)2017-10-25 14:53:20
    八年級(上學(xué)期)期末測試題(D)
    技術(shù)指標(biāo)選股
    技術(shù)指標(biāo)選股
    技術(shù)指標(biāo)選股
    技術(shù)指標(biāo)選股
    我要出艙工作
    再說還有工作忙
    兒童繪本(2015年6期)2015-05-25 17:55:54
    黄陵县| 兴海县| 将乐县| 韩城市| 神池县| 汽车| 新巴尔虎左旗| 上饶县| 隆安县| 拉孜县| 嘉峪关市| 曲麻莱县| 类乌齐县| 武威市| 大名县| 交城县| 抚宁县| 满城县| 五家渠市| 靖西县| 增城市| 长寿区| 合山市| 德令哈市| 静安区| 元氏县| 师宗县| 广南县| 驻马店市| 隆回县| 兴文县| 晋江市| 西乌| 南雄市| 梅州市| 淮北市| 六枝特区| 邹平县| 忻州市| 惠安县| 丹江口市|