随笔-2  评论-1  文章-1  trackbacks-0
 

       *******************************************

*     ATM(automatic teller machine)       *

*     自助服务终端系统设计任务书          *

*******************************************

 

 

 

ATM(Automatic Teller Machine)自助服务终端系统设计任务书

 

一、系统业务要求:

 

   模拟实现一个简单的银行自助服务终端系统(ATM),应系统可以提供开通账户、

   取款服务、存款服务、自动转帐、修改密码、余额查询等主要业务功能.

  

二、业务功能流程:

   1.开通帐户:

      用户从主菜单,选择开通帐户选项-----------> 系统提供交互信息收集用户开户基本信息

      -------------->用户输入个人基本开户信息------------------->系统采集用户完毕进入

      后台运行进行开户操作,系统收集用户信息将用户对象写入文件,开户成功给用户提供帐

      号返回并提示成功信息.

     

   2.取款服务:

      用户从主菜单,选择取款服务选项-----------> 系统提供交互信息收集用户帐号及要求用户

      输入密码--------->系统进入后台运行,校验用户密码正确性,如用户名与密码不正确则要求

      用户重新输入------------>较验成功要求用户输入取款金额----------->系统后台运行,进

      行取款操作,此时需验证用户余额是否满足最大取款限额,如用户余额不足,则提示信息,不

      能进行取款操作---------->取款成功,提示成功信息.

   帐号基本信息:

  

            账户标识( id )

            开户人姓名 ( name )

            账户密码   ( passwd )

            以及账户余额( balance

 

    其中账户标识由系统自动产生,任意两个账户的标识都不允许重复,帐户标识在本系统中唯一

    且不能为空。所有的账户信息都通过文件系统以二进制的方式存储,每个账户保存在一个单独

    的数据文件中,帐户数据文件的名称由账户id 和后缀(.dat)组成。如 :一个账户的id 103

    , 则它所对应得数据文件的名字为 103.dat , 所有的数据文件统一存放在一个名为 data 的目

    录中。

 

三、参考设计时数据结构:

 

用户信息类:

class Account{

        long id;

        char name[20];

        char passwd[10];

        double blance;

             };

 该类主要封装用户的数据信息

 

业务类操作类:

class Bank{

             public:

                  /* 开通帐户函数,需要参数为用户帐户对象,返回用户帐号ID为成功,失败返回 0 */

                  int   create ( Account account &);

                  /* 查询帐户函数,需要参数为用户帐户对象,返回用户帐号ID为成功,失败返回 0 */

                  int   query (Account account &);

                  /* 帐户取款函数,需要参数为用户帐户对象,取款额度,返回用户帐号ID为成功,失败返回 0 */

                  int   withdraw(Account account &, double draw);

                  /* 帐户存款函数,需要参数为用户帐户对象,存款额度,返回用户帐号ID为成功,失败返回 0 */

                  int   save(Account account & , double money);

                  /* 帐户转帐函数,需要参数为转出用户帐户对象,转入用户帐户对象,转帐额度,返回转入用户帐号ID为成功,失败返回 0 */

                  int   tran (Account account &, Account account &, double money );

                  /* 帐户信息修改函数,需要参数为用户帐户对象,返回用户ID为成功,失败返回 0 */

                  int   modify(Account account &);

                };

 

工具类:

class    Util{

             public:

             /* 该函数用于产生唯一ID */

             long generate();

             /* 该函数用于将数据ID号生成为字符串 di.bat 文件名 */

              void getFileName(long id, char *fileName );

              };

 

void getFileName(long id, char *fileName ){

       

    char *p="./data/%d.dat";

    sprintf(arr,p, id);

    }

Int main(){

   Util::getFileName(id, fileName );

    Cout<<filename<<endl;

}

  

帮助1:如何产生个连续不重的复的ID?

 

思路: 利用读文件写文件的方法,比如在文件中写入一个整数,下次再读此文件

     把数字读出后,自加1再写回去,这样就可以保证得到不同的ID号。

    

示例代码:

 

            long generate(){

                   ifstream fin("id.txt");

                       if(!fin){

                                cout<<"system error the file not open "<<endl;

                                return 0;

                                }

                       long id;

                       fin>>id;   //从文件中读出数据

                       id++;      //把数据自加1

                       fin.close();

                       ofstream   fout("id.txt");

                         if(!fout){

                                   cout<<" system error the file not open "<<endl;

                                   return 0;

                                   }

                        fout<<id;   //把自加后的ID号写回文件

                        fout.close();

                        return id;

                  };

 

 

帮助2: 将一个数字生成指定的字符串格式?(例如 将数字 103 生成为字符串 103.dat 文件名)

 

示例代码:

 

int main(){

char arr[100];

char *p="./data/%d.dat";            //给定生成字符串的格式,%d在这起占位符的作用

int id =10;

sprintf(arr,p, id);                 //调用函数,生成规定的字符串,第一个参数代表生成字符串存放在哪,第二参数是生成字符串的格式, 第三参数是生成的数据

cout<<" create the file name is "<<arr<<endl;    //此时会输出结果会生成字符串 "./data/10.dat"

return 0;

}

 

 

posted on 2008-04-10 18:20 李峰 阅读(289) 评论(0)  编辑 收藏 引用 所属分类: unix_c++

只有注册用户登录后才能发表评论。
相关文章:
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理