iwase/seiseki の履歴(No.5) - PukiWiki

基幹教育の PC の吐く CSV ファイルから、成績表の tex source を作る C source を書いた。

(1) 基幹教育の PC から CSV のフォーマットで取り出す:

(文字コード:Shift-JIS,改行コード:CR+LF,氏名のセパレータ:全角空白)

前後期曜日時限+講義ID,曜日,時限,科目名,担当者氏名,年月日,年月日,年月日,年月日…,年月日(年月日は出欠や小テストの日付)

年組ID,学部,学生番号, ,学生氏名,点数,点数,点数,点数,…,点数(出欠や小テストの点数)

年組ID,学部,学生番号, ,学生氏名,点数,点数,点数,点数,…,点数(出欠や小テストの点数)

年組ID,学部,学生番号, ,学生氏名,点数,点数,点数,点数,…,点数(出欠や小テストの点数)

(2) エクセルなどで次の形の CSV に整形する。

年組ID,学生番号上部(学部と入学年情報),学部学科,

month,day,X備考,(以下で「X備考 = S初期調査, H平常調査, C中間考査, K期末考査」で、「M」,「D」は半角数字である)

M,D,X備考,(出欠や小テストなどのイベント)

M,D,X備考,(出欠や小テストなどのイベント)

M,D,X備考,(出欠や小テストなどのイベント)

room,AxB,部屋番号,(A:列数,B:段数)

n/a,A,B,(A列B段の座席は使用不可)

n/a,C,D,(C列D段の座席は使用不可)

年,期,科目名

講義ID,曜日,時限,科目名,担当者氏 担当者名,年月日,年月日,年月日,年月日…,年月日

年組ID,学部,学生番号,,学生氏 学生名,点数,点数,点数,点数,…,点数

年組ID,学部,学生番号,,学生氏 学生名,点数,点数,点数,点数,…,点数

年組ID,学部,学生番号,,学生氏 学生名,点数,点数,点数,点数,…,点数

(3) nkf(network kanji filter)を nkf -w -Z1 -Lu として通して、
 (文字コード:UTF-8,改行コード:LF,氏名のセパレータ:半角空白)
 の様に整形し、さらに /usr/local/bin/seiseki で tex-source に変換する。

実際には (3) はシェルスクリプトを書いた。また、tex-source に変換しても実際にはマクロを使って処理することになる。 以下に基幹教育の PC の吐く CSV ファイルの例を挙げてみる。

1661,月,2,数学I     ,九大 某某          ,2017/10/16,2017/10/23,2017/10/30,2017/11/ 6,2017/11/20,2017/11/27,2017/12/11,2017/12/18,2017/12/25,2018/ 1/12,2018/ 1/22,2018/ 1/29,2018/ 2/ 5
S1-10,工,1MA17123A , ,九大 某某          ,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,  80
S1-10,工,1MA17124B , ,九大 某々          ,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90
S1-10,工,1MA17125C , ,九大 某某          , 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100
S1-10,工,1MA17126D , ,九大 某々          ,  70,  70,  70,  70,  70,  70,  70,  70,  70,  70,  70,  70,  70
S1-10,工,1MA17127E , ,九大 某某          ,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60,  60

これをエクセルで必要な情報を追加して次の形の CSV ファイルを作る。

S1-10,1MA17,数学部,,,,,,,,,,,,,,,
month,day,X備考,,,,,,,,,,,,,,,
10,3,S第一回,,,,,,,,,,,,,,,
10,16,H第二回,,,,,,,,,,,,,,,
10,23,H第三回,,,,,,,,,,,,,,,
10,30,H第四回,,,,,,,,,,,,,,,
11,6,H第五回,,,,,,,,,,,,,,,
11,20,H第六回,,,,,,,,,,,,,,,
11,27,H第七回,,,,,,,,,,,,,,,
12,4,C中間試験,,,,,,,,,,,,,,,
12,11,H第八回,,,,,,,,,,,,,,,
12,18,H第九回,,,,,,,,,,,,,,,
12,25,H第十回,,,,,,,,,,,,,,,
1,12,H第十一回,,,,,,,,,,,,,,,
1,22,H第十二回,,,,,,,,,,,,,,,
1,29,H第十三回,,,,,,,,,,,,,,,
2,5,K期末試験,,,,,,,,,,,,,,,
room,8x8,3303,,,,,,,,,,,,,,,
n/a,7,8,,,,,,,,,,,,,,,
16,後,数学I     ,,,,,,,,,,,,,,,
1661,月,2,数学I     ,九大 某某          ,16/10/2017,23/10/2017,30/10/2017,6/11/2017,20/11/2017,27/11/2017,11/12/2017,18/12/2017,25/12/2017,12/1/2018,22/1/2018,29/1/2018,5/2/2018
S1-10,工,1MA17123A , ,九大 某某          ,80,80,80,80,80,80,80,80,80,80,80,80,80
S1-10,工,1MA17124B , ,九大 某々          ,90,90,90,90,90,90,90,90,90,90,90,90,90
S1-10,工,1MA17125C , ,九大 某某          ,100,100,100,100,100,100,100,100,100,100,100,100,100
S1-10,工,1MA17126D , ,九大 某々          ,70,70,70,70,70,70,70,70,70,70,70,70,70
S1-10,工,1MA17127E , ,九大 某某          ,60,60,60,60,60,60,60,60,60,60,60,60,60

さらに文字コードフィルタ(nkf -w -Z1 -Lu)と CSV->TEX フィルタ(seiseki14-6)を通せば、次の tex source が吐き出される。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%	This is a file for xelatex.	%
%		成 績 表		%
%	by Norio Iwase  (Feb. 1994)	%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%!TEX encoding = UTF-8 Unicode
%!TEX TS-program = XeLaTeX
%
\ifx\undefined\XeTeXversion
\input seiseki25-p.inc
\else
\input seiseki25-x.inc
\fi
%
%%%%%%%%%%%%%%%%%%%%%%%%%
%	クラス		%
%%%%%%%%%%%%%%%%%%%%%%%%%
%
\クラス名	{理}系{1}年{10}組
\学部記号	{1MA}入学{17}年
\学部学科名	{数学部}
%
%\日付	{10}月{3}日	\備考	{初期:第一回}
%\日付	{10}月{16}日	\備考	{平常:第二回}
%\日付	{10}月{23}日	\備考	{平常:第三回}
%\日付	{10}月{30}日	\備考	{平常:第四回}
%\日付	{11}月{6}日	\備考	{平常:第五回}
%\日付	{11}月{20}日	\備考	{平常:第六回}
%\日付	{11}月{27}日	\備考	{平常:第七回}
%\日付	{12}月{4}日	\備考	{中間:中間試験}
%\日付	{12}月{11}日	\備考	{平常:第八回}
%\日付	{12}月{18}日	\備考	{平常:第九回}
%\日付	{12}月{25}日	\備考	{平常:第十回}
%\日付	{1}月{12}日	\備考	{平常:第十一回}
%\日付	{1}月{22}日	\備考	{平常:第十二回}
%\日付	{1}月{29}日	\備考	{平常:第十三回}
%\日付	{2}月{5}日	\備考	{期末:期末試験}
%
%%%%%%%%%%%%%%%%%%%%%%%%%
%	出席オプション	%
%%%%%%%%%%%%%%%%%%%%%%%%%
%
%教室内の席の配置
%
\教室{8}列{8}段({3303})	% 教室の大きさ
%
\使用不可{7}列{8}段	% 座れない席
%
%%%%%%%%%%%%%%%%%%%%%%%%%
%	講義		%
%%%%%%%%%%%%%%%%%%%%%%%%%
%
\時期	{16}年度{後}期		% 学期
\科目	{数学I     }({1661})		% 科目名
\講義	{月}曜日{2}時限		% 講義 曜日&時限
\担当	{九大 某某}		% 講義 担当者名
%
%%%%%%%%%%%%%%%%%%%%%%%%%
%	出席/成績	%
%%%%%%%%%%%%%%%%%%%%%%%%%
%
%	出席または成績の一方のみコメントマークを外す
%
\出席表組{1}学籍{1}年度{1}番号{1}記号{1}名前{1}{1}出席{1}@{0}
%	0=隠す, 1=表示 @ 0=全部,k=平常k回目,-1=席表示
%
%\成績表組{1}学籍{1}年度{1}番号{1}記号{1}名前{1}{1}成績{1}@{0}
%	0=隠す, 1=表示 @ 0=手動,1=初期,2=平常,3=全中間,
%			  4=中間1,5=中間2,…,9=期末.
%
%%%%%%%%%%%%%%%%%%%%%%%%%
%	成績オプション	%
%%%%%%%%%%%%%%%%%%%%%%%%%
%
%	成績の手動計算時の配分値と拡大・縮小率
%
\配分値:初期{0}:平常{10}:中間{30}:期末{60}/{100}
\拡大率:初期{0}:平常{10}:中間{30}:期末{60}
%
%	成績の評価・評点欄等の表示
%
\評価欄表示	{1}	% 0=評価表示無し,1=有り
\評点欄表示	{1}	% 0=評点表示無し,1=有り
\分布欄表示	{1}	% 0=分布表示無し,1=有り
\グラフスケール	{4}	% グラフの縦倍率(0,1,2,3,4)
%
%%%%%%%%%%%%%%%%%%%%%%%%%
%	評価		%
%%%%%%%%%%%%%%%%%%%%%%%%%
%
\甲評価{甲}下限	{90}	% 『甲』評価のための最小得点
\乙評価{乙}下限	{80}	% 『乙』評価のための最小得点
\丙評価{丙}下限	{70}	% 『丙』評価のための最小得点
\丁評価{丁}下限	{60}	% 『丁』評価のための最小得点
\戊評価{戊}下限	{50}	% 『戊』評価のための最小得点
\己評価{己}下限	{40}	% 『己』評価のための最小得点
\庚評価{庚}下限	{30}	% 『庚』評価のための最小得点
\辛評価{辛}下限	{20}	% 『辛』評価のための最小得点
\壬評価{壬}下限	{10}	% 『壬』評価のための最小得点
\癸評価{癸}下限	{02}	% 『癸』評価のための最小得点
%
\未評価{未}下限	{45}	% 再評価を実行すべき最小得点
\不評価{不}下限	{02}	% 不合格評価を与える最小得点
\判定合格{判}点	{60}	% 判定合格評価で与える得点
\無評価{無}平常	{2}未満	% 評価を行わない
%
%%%%%%%%%%%%%%%%%%%%%%%%%
%	再評価		%
%%%%%%%%%%%%%%%%%%%%%%%%%
%
\再評価最小得点	{60}	% 評点『60』となるべき得点
\再評価最大評点	{80}	% 得点『100』に対する評点
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% {初期}{平常}…{中間}…{平常}{期末}{再試}{評定}%
% 学生の{系}{学年}{組}(学生番号){氏}{名}	%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 判定は 1=合格,-1=不合格,0=保留(E)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%	再履修
%
%\座席{}列{}段\ID{}
%\学生{}系{}年{}組({}学部{}年{}番{}){}{}%
%\初期{}\平常{}\平常{}\平常{}\平常{}
%\平常{}\平常{}\中間{}\平常{}\平常{}
%\平常{}\平常{}\平常{}\平常{}\期末{}\再試{0}\評定{0}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%	対象外
%
%\座席{}列{}段\ID{}
%\学生{}系{}年{}組({}学部{}年{}番{}){}{}%
%\初期{}\平常{}\平常{}\平常{}\平常{}
%\平常{}\平常{}\中間{}\平常{}\平常{}
%\平常{}\平常{}\平常{}\平常{}\期末{}\再試{0}\評定{0}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%	対象クラス
%
%\学生番号{000}初期値
%
%\学生なし{0}
%
\座席{}列{}段\ID{}
\学生{理}系{1}年{10}組({1MA}学部{17}年{123}番{A}){九大}{某某}%
\初期{80}\平常{80}\平常{80}\平常{80}\平常{80}
\平常{80}\平常{80}\中間{80}\平常{80}\平常{80}
\平常{80}\平常{80}\平常{80}\再試{0}\評定{0}
%
\座席{}列{}段\ID{}
\学生{理}系{1}年{10}組({1MA}学部{17}年{124}番{B}){九大}{某々}%
\初期{90}\平常{90}\平常{90}\平常{90}\平常{90}
\平常{90}\平常{90}\中間{90}\平常{90}\平常{90}
\平常{90}\平常{90}\平常{90}\再試{0}\評定{0}
%
\座席{}列{}段\ID{}
\学生{理}系{1}年{10}組({1MA}学部{17}年{125}番{C}){九大}{某某}%
\初期{100}\平常{100}\平常{100}\平常{100}\平常{100}
\平常{100}\平常{100}\中間{100}\平常{100}\平常{100}
\平常{100}\平常{100}\平常{100}\再試{0}\評定{0}
%
\座席{}列{}段\ID{}
\学生{理}系{1}年{10}組({1MA}学部{17}年{126}番{D}){九大}{某々}%
\初期{70}\平常{70}\平常{70}\平常{70}\平常{70}
\平常{70}\平常{70}\中間{70}\平常{70}\平常{70}
\平常{70}\平常{70}\平常{70}\再試{0}\評定{0}
%
\座席{}列{}段\ID{}
\学生{理}系{1}年{10}組({1MA}学部{17}年{127}番{E}){九大}{某某}%
\初期{60}\平常{60}\平常{60}\平常{60}\平常{60}
\平常{60}\平常{60}\中間{60}\平常{60}\平常{60}
\平常{60}\平常{60}\平常{60}\再試{0}\評定{0}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%	再履修等追加分
%
%\座席{}列{}段\ID{}
%\学生{}系{}年{}組({}学部{}年{}番{}){}{}%
%\初期{}\平常{}\平常{}\平常{}\平常{}
%\平常{}\平常{}\中間{}\平常{}\平常{}
%\平常{}\平常{}\平常{}\平常{}\期末{}\再試{0}\評定{0}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%	成績の計算・書き出し		%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\書き出し
%

実はこのところ、ptex を使っていないので、ptex でうまく動くか分からない。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS