*******************************************
* 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++