ファイルな話

ファイルとは、実はものすごく身近で、Webで買い物をするとき、アカウントを作成します、アカウントとは、UID,PWDをつくります。

名前、住所とかいろんな情報を入力します、

次回からは、アカウントを入力すれば、本人というのがわかります。

実は、このいろんな情報を入力するという作業、昔は(江戸時代以降ですね、

コンピューターが、アメリカから持ち込まれて以来、黒船みたいに)

京都の老舗に、商品を発注するとき、お手紙で、自分の名前、住所を

送付し、店舗側では、商品に宛先ラベルを書いて、貼って、

請求書を同封して、発送します。次回からは、注文がきたときに、

名前、住所を書かなくても、ラベルを発行すれば、貼ればよいことになります。

宛名間違いも発生しなくなります。はい、そうですね

顧客の情報をコンピューターに入力したわけです。

一人や、二人ならよいですが、万人ともなると、やってられません。

徹夜して、コンピューターに入力しても、おいつきません。

何か月もかかるでしょう、というのは、入力ミスを防ぐために

Verifyといいまして、2回打ちます、一回目を入力したあと

もう一回、同じ内容を打ち込むのですが、ここで、前回打ち込んだ

内容と異なれば、警報がでて、もう一回やり直しとなります。

これでOKかといいますと、いったん顧客情報をコンピュータに入れて

保存します、仮の顧客マスターを作成します、

ここから、顧客情報を紙にプリントして、紙に書かれた顧客情報と

照らし合わせます、ここで、間違い(漢字ミスが多発)があれば、

情報の修正データを作成し、マスターとトランザクション(伝票)

をマッチングし、修正します。件数が少なければ、すぐ終わりますが

老舗ともなりますと、全国のお客さまから、注文がきます。

新規のお客さまが減ってくれば、このシステムは安定してきます。

ただし、超人気商品ともなると、その現場を視察したのですが

たくさんのパンチャー(ボクシングではなしに)女の方が

ぱちぱちとパンチしておられました、キーボードが

指にあわせて、へこむというというなんという怪力かな(笑)

はい、少し昔の話でしたが、この顧客情報を入力するという作業が

いつごろからか、インターネットが発達しまして、

画面からWeb経由で注文できるようになりました、

ただし、最初のアカウント入力が大変ですが、昔のことを

考えると、本人が入力するので、まず間違いが発生しないという

素晴らしいシステム(発注)だと思います。

この顧客マスターを作成するときに、顧客データを入力しますが

これを顧客レコードといいます。

タイムライン上では、トランザクション(伝票)と呼ばれますね、

この顧客レコードを顧客番号(主キー)をもとに

追加します、アンマッチであれば、新規追加、マッチすれば、顧客レコードの

修正となりますが、追加区分でミスが発生しないようにします。

つまり、新規の顧客なのに、マッチすれば、顧客番号ミスとなります。

従って、キーにミスが発生しないように、Webサイドで、顧客番号を

自動で発行します。

オンラインでマルチユーザーともなると、同時発行が問題となりますが、

これは、先に顧客マスターをいまから追加するぞとiIOモードで

ロックをかければよいですね、マスター全体をロックかけると

システムに待ちが発生するので、顧客レーコード単位でロックをかけます。

こんな処理大変ですね、いまではデータベースマネージャーがやってくれます。

いまでは、論理データベースですね、MySQL,Postgreとかいろいろありますね

ASP.NETとかも

はい、ここで顧客レコードがでてきました。

C言語で解説すると、構造体レコードとなります。

#include <iostrean>

#define Staff_Max 2

using namespace std;

struct StaffSt{

int no;             //社員番号

char name[Staff_Max];//名前

int salary;        //給料

};

int main(void){

struct StaffSt staffrec[2]={

{1,"かめ",200000},

{2,"うさぎ",100000}

}

for(int i=0; i<2; ++i){

cout << "社員番号 " << staffrec[i].no << endl;

cout << "氏名 " << staffrec[i].name << endl;

cout << "給料 " << staffrec[i].salary << endl;

}

 

return 0;

}

 

プログラム分割するには、まず関数化が必要です。

 

void StaffDisplay()
{

struct StaffSt staffrec[2]={

{1,"かめ",200000},

{2,"うさぎ",100000}

}

for(int i=0; i<2; ++i){

cout << "社員番号 " << staffrec[i].no << endl;

cout << "氏名 " << staffrec[i].name << endl;

cout << "給料 " << staffrec[i].salary << endl;

}

 

}