このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1276873238/295
#  問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10839.txt 
#  コピーさせていただきました 
#  ホームページ上からデータを追加、検索したりする問題です。 
#  OS:Linux  
#   
# [1]学籍番号(stnum char(14))、名前(name char(30))、国語(kokugo int)、数学(math int)、理科(science int)
# からなるテーブルseisekiをデータベース上に作る。
# 
# [2]ホームページからデータを追加、検索できるようにする。
# 表示結果には、学籍番号、名前、国語、数学、理科、合計を表示させる
# 
# 

学籍番号による検索(_学籍番号) :-
        seiseki(_学籍番号,_名前,_国語,_数学,_理科),
        write_formatted('%t,%t,%t,%t,%t\n',[_学籍番号,_名前,_国語,_数学,_理科]).

名前による検索(_名前) :-
        seiseki(_学籍番号,_名前,_国語,_数学,_理科),
        write_formatted('%t,%t,%t,%t,%t\n',[_学籍番号,_名前,_国語,_数学,_理科]).

国語の成績による検索(_国語,_国語成績) :-
        seiseki(_学籍番号,_名前,_国語,_数学,_理科),
        _国語成績.

数学の成績による検索(_数学,_数学成績) :-
        seiseki(_学籍番号,_名前,_数学,_数学,_理科),
        _数学成績.

理科の成績による検索(_理科,_理科成績) :-
        seiseki(_学籍番号,_名前,_理科,_数学,_理科),
        _理科成績.

成績の追加(_学籍番号,_名前,_国語,_数学,_理科) :-
        学籍番号(_学籍番号),
        名前(_名前),
        国語(_国語),
        数学(_数学),
        理科(_理科),
        assertz(seiseki(_学籍番号,_名前,_国語,_数学,_理科)).

成績の変更(_学籍番号,_名前,_国語,_数学,_理科) :-
        学籍番号(_学籍番号),
        名前(_名前),
        国語(_国語),
        数学(_数学),
        理科(_理科),
        retract(seiseki(_学籍番号,_,_,_,_)),
        assertz(seiseki(_学籍番号,_名前,_国語,_数学,_理科)).

成績の削除(_学籍番号) :-
        retract(seiseki(_学籍番号,_,_,_,_)).

学籍番号(_学籍番号) :-
        atom_length(_学籍番号,Len),
        Len =< 14,
        atom_chars(_学籍番号,Chars),
        すべてが数字(Chars),!.

すべてが数字([]) :- !.
すべてが数字([A|R]) :-
        member(A,['0','1','2','3','4','5','6','7','8','9']),
        すべてが数字(R).

名前(_名前) :-
        atom(_名前),
        atom_length(_名前,Len),
        Len =< 30,!.

国語(_国語) :- integer(_国語).

数学(_数学) :- integer(_数学).

理科(_理科) :- integer(_理科).