第一篇:ATM自动取款机C++课程设计
C++课程设计
学校: 惠州学院
题目: 设计ATM自动取款机系统 系别: 电子科学系 班级: 11电信2班 学号: 110703229 姓名: 王志勇
2014年4月21日
一、课程设计目的及要求
1.1设计目的
1.提高和加强学生的计算机应用与软件开发能力,使学生由初学者向专业的程序员过渡。
2.培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应计算机产业日新月异发展的形势。
3.学习和掌握础。C++程序设计方法以及上机调试技巧,为今后学习其它专业课程打好基
1.2 ATM自动取款机设计要求
1.实现ATM取款机的基本功能,如给用户提供开户、查询余额、取款、修改密码、吃卡、退出系统等服务,可根据实际情况添加(如缴费、转账等服务)。
2.对于用户要求输入相应的帐号和密码,如果三次出错则将卡吃掉并打印出相应凭条。
若输入的取款金额超出账户余额,则提示用户输入有误并提供更正功能
二、课程设计具体实现
2.1.1总体设计
根据C++类的基本知识和类的基本性质去实现ATM自动取款机基本功能;
ATM自动取款系统开户用户登录退出存款取款查询余额修改密码转账退出系统
2.1.2详细设计
1.登陆模块
主要完成功能为:当用户开始使用本系统,进入登陆模块。屏幕显示菜单提示,用户可根据需要选择相应功能。具体如下:开户、用户登录、退出系统;用户登录里面还有存款、取款、查询余额、修改密码、转账等功能
主要适用技术:登陆函数主要是使用了循环函数和do while函数,还有许多的成员函OpenAccount()、SaveMoney()、TakeMoney()、Inquiry()、Changepsw()、Transfer();Menus();关键代码如下: void main();主函数;
do{} while(1);//循环结构语句 switch(i);case 1: default: UserLogin();//用户登录界面函数 Menus();//用户操作函数 bank k;//默认构造函数 OpenAccount();break;//开户
SaveMoney();break;//存款 TakeMoney();break;//取款 Inquiry();break;//查询余额 Changepsw();break;//修改密码 Transfer();break;//转账
2.开户模块
主要完成功能为:进入开户模块。屏幕显示菜单提示,可根据要求依次输入姓名、身份证号、卡号、密码和预存款金额,完成以上操作之后,屏幕上显示恭喜您,开户成功;主要适用技术:开户函数使用了基本函数;
主要代码如下:void OpenAccount()//开户函数
3.存款模块
主要完成功能为:当开始使用本系统,进入存款模块。屏幕显示菜单提示,根据要求依 主要使用技术:存款函数使用了循环语句函数、判断函数和选择函数 主要代码如下:
void SaveMoney()//存款函数
4.取款模块
主要完成功能为:进入取款模块。如果全款金额小于或者等于卡上余额,则取款进行,否则重新输入取款金额。取款成功后显示卡上余额
主要适用技术:存款函数使用了循环语句函数、判断函数和选择函数 主要代码如下:
void TakeMoney()//取款函数
5.查询余额
主要完成功能为:进入查询余额模块。屏幕显示菜单提示,屏幕上将显示你的余额,然后进入修改密码模块;
主要适用技术:存款函数使用了循环语句函数、判断函数和选择函数 主要代码如下:
voidInquiry()//查询余额函数
6.修改密码
主要完成功能为:进入修改密码模块。屏幕显示菜单提示,根据要求依次输卡号和密码,如果卡号和原始密码正确,则将进行修改密码的步骤,先输入原始密码,然后再输入新密码,之后确认新密码,确认正确之后,密码修改成功,接下来进入转账模块; 主要适用技术:存款函数使用了循环语句函数、判断函数和选择函数 主要代码如下:
void Changepsw()//修改密码函数
for(int i=1;i<=N;i++)else //循环结果语句 exit(1);//结束函数
7.转账模块
主要完成功能为:进入转账模块。输入所要转账的账号并输入转账金额,如果转账金额小于余额,转账成功输出卡上余额,主要适用技术:存款函数使用了循环语句函数、判断函数和选择函数 主要代码如下:
voidTransfer()//转账函数
8.退出系统模块
主要完成功能为:退出ATM自动取款系统,用条件if(i==7)break;或exist(1)实现。
三、源程序代码
#include
//默认构造函数,并初始化
void UserLogin();
//用户登录声明
void OpenAccount();
//开户函数声明
void Menus();
//用户操作函数声明
void SaveMoney();
//存款函数声明
void TakeMoney();
//取款函数声明
void Inquiry();
//查询函数声明
void Transfer();
//转账函数声明
void Changepsw();
//修改密码函数声明 private:
char name[20];
long cardID;
double SFZ;
long psw;
int money;};void Bank::UserLogin()
//用户登录函数定义 { long ID;long psw1;cout< //用户操作函数定义 { int a;do{ cout<<“1.存款n”;cout<<“2.取款n”;cout<<“3.查询余额n”;cout<<“4.修改密码n”;cout<<“5.转账n”;cout<<“6.退出系统n”;cout<<“请输入您要办理业务的序号:”;cin>>a;switch(a){ case 1: SaveMoney();break; case 2: TakeMoney();break; case 3: Inquiry();break; case 4: Changepsw();break; case 5: Transfer();break; case 6: exit(0);break; default:{cout<<“你的输入有误,请输入1-7之间的整数!n”;} } for(int j=0;j<=20;j++)cout<<“**”;cout< { cout<<“欢迎开户:”< cout<<“请输入您的姓名:”< cin>>name;cout<<“请输入身份证号码:”< 号:“< //存款 //取款 //查询余额 //修改密码 //转账 //退出 //开户函数定义 //cout<<”请输入您的卡 cin>>money;cout<<“恭喜您,开户成功!”< //存款函数定义 {int money1;cout<<“欢迎您使用取款业务”< void Bank::TakeMoney() { int money1;cout<<“欢迎您使用取款业务n”;cout<<“每次取款不能超过5000元”< cout<<“取款金额超出账户余额,请重新输入取款金额:”;cin>>money1;money=money-money1;cout<<“取款成功,您卡上余额为:”< 义 { cout<<“欢迎进行查询余额业务n”;cout<<“卡上余额为:”< //取款函数定义 //查询余额函数定 void Bank::Transfer() //转账函数定义 { long ID2;int money1;cout<<“欢迎使用转账业务n”< cout<<“金额超出账户余额,请重新输入取款金额:”;cin>>money1;money=money-money1;cout<<“转账成功,您卡上余额为:”< 修改密码函数定义 { long ID;long psw1;long psw2;cout<<“欢迎使用修改密码业务n”< // cin>>psw1;cout<<“请输入您的新密码:”< ICBC ”< case 2: k.UserLogin();break; default:{cout<<“你的输入有误,请输入1-3之间的整数!n”;} } for(int j=0;j<=20;j++)cout<<“**”;cout< //开户函数调用//用户登录 四、总结 在为期二周的课程设计中,我体会颇多,学到很多东西,通过完成C++程序设计的任务,使我熟练和掌握了这学期所学的有关visual c++6.0中的一些主要知识点和应用点,比如面向对象中的类的定义、类的实现、对象的定义、类的继承、类的多态性等等;还有面向过程的许多基础知识,结构体的基本类型,基本应用、结构体的堆栈基础知识等等。应用程序的设计和创建,经历了平时在课堂中和考试中,决不会有的重重难题和问题,这些问题,并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们面对难题,自己思索,自己探索,自己查资料发现问题、解决问题的独断能力。 时间总是过得很快,转眼间C++课程设计就要结束了,通过这次课程设计,我们学会了很多,也懂得了很多,知道自己的C++只是哈有很大的提高空间。感谢老师,是您让我们知道了这些,是您一次次的帮助我们那些被我们收拾的面目全非的程序,让我们的程序起死回生;感谢老师,是您让我们看到自己的差距,看到了自己的基础知识还很薄弱,还有许多的只是我们还不懂,我们需要再接再厉去提高自己;感谢老师,是您让我们懂得了原来C++的许多程序原来是很深奥很深奥的,原来C++的许多程序是可以那样完成的,还有调试还可以是以那种形式去调试的;总之感谢您老师,是我们的C++有了进一步的提高,谢谢您老师,你们辛苦了。 “实践是检验真理的唯一标准”。没有实践,就不会发现和深刻体会它的真实所在。只有通过检验的真理,在自己的心里,才会认可它的真实性。C++程序设计的完成,使我们懂得了真理的重要性,理论和实际的相结合,才能真正把握所学和所掌握的知识。理论的拥有并不能代表我们的实力和能力,一切的事件和其成功都是理论和实践的结合。总之,我们学习和掌握的知识,只有通过实际应用,才能真正的理解和掌握,才能更好的去应用理论的拥有并不能代表我们的实力和能力,一切的事件和其成功都是理论和实践的结合。我们学习和掌握的知识,只有通过实际应用,才能真正的理解和掌握,才能更好的去应用。 // ************************************ // * * // * function.h * // * * // ************************************ #include class consumer;class ATM // ATM取款机 { public: ATM(consumer& cn):cnsm(cn){ } void welcome();// 登陆界面 bool check_passwd(char n[],char pwd[]);// 核对密码 void change_passwd();// 修改密码 void fetchmoney();// 取款 void information();// 查询信息 void exitATM();// 退出系统 void functionshow();// 功能界面 void lock();// 锁机 private: int times;// 记录密码输入次数 consumer& cnsm;};class consumer // 用户 { public: friend class ATM;consumer(char Name[],char Num[], float Money,char Password[]);protected: char* get_name();// 取得姓名 char* get_num();// 取得卡号 char* get_passwd();// 取得密码 float get_money();// 取得余额 void set_passwd(char pwd[]);// 设置密码 void set_money(float m);// 取钱 private: char passwd[8];// 用户密码 char name[20];// 用户姓名 char num[20];float money;}; // ************************************ // * * // * consumer类的成员&&函数 * // * * // ************************************ #include“function.h” #include consumer::consumer(char Name[], char Num[],float Money,char Password[]){ strcpy(name,Name); strcpy(num,Num);money=Money;strcpy(passwd,Password);} float consumer::get_money(){ return money;} char* consumer::get_name(){ return name;} char* consumer::get_num(){ return num;} char* consumer::get_passwd(){ return passwd;} void consumer::set_money(float m){ money-=m;} void consumer::set_passwd(char pwd[]){ strcpy(passwd,pwd);} // ************************************ // * * // * ATM类的成员&&函数 * // * * // ************************************ #include “function.h” #include 第二篇:C++编写的ATM自动取款机模拟程序分析