1、C+课程设计实验报告目录一、系统功能分析- 3 -二、 系统设计实现- 3 -三、小组人员构成及任务- 3 -四、UML图- 4 -五、源代码- 4 -六、运行结果- 11 -一、系统功能分析1、 提示用户输入账号和密码,检查输入的账号和密码是否正确。2、 记录用户输入密码错误的次数,当超过三次时锁卡。3、 登陆后,提示用户输入数字进行修改密码,查询账号余额,取款的功能。4、 安全退出。二、 系统设计实现1、 本系统共两个类,分别为ATM类和consumer类,并且ATM类为consumer类的友元类。2、 ATM类中有公有函数成员ATM(&cn:consumer)是本类的构造函数;welco
2、me()是登陆界面函数;change passwd核对用户输入的密码是否正确;change_passwd()修改密码;fetchmoney()取款;void information() 查询账户信息;exitATM()退出系统;void functionshow() 功能界面;void lock()记录用户输入密码错误的次数,当超过三次时锁卡。私有成员times记录密码输入次数& cnsm consumer类对象的引用来存放当前用户数据3、 consumer类中有公有成员ATM为本类的友元类;consumer()为本类的构造函数;保护成员* get_name()取得用户姓名;* get_num
3、()取得卡号;* get_passwd()取得密码;get_money()取得余额;set_passwd()设置密码;set_money()取款。有私有成员passwd8用来存放用户密码;name20存放用户姓名;num20存放用户卡号;money存放用户余额。三、小组人员构成及任务刘辉:系统的构思、绘制UML图、系统的调试、编写实验报告杨钊:编写ATM.h文件杨树仁:编写consumer.h文件庄典:ATM类的实现文荣富:consumer类的实现杨竹:编写主函数四、UML图ATM+ATM(&cn :consumer)+ welcome() : void+check_passwd(n:char
4、, pwd:char):bool+change_passwd():void+ fetchmoney():void+ information():void+ exitATM():void+ functionshow():void+ lock() : void-times: int-& cnsm: consumer consumer+ ATM: class+consumer(Name:char, Num:char, Money: float, Password:char)#* get_name(): char#* get_num(): char#* get_passwd(): char#get_m
5、oney():float#set_passwd(pwd: char): void#set_money(m: float) : void-passwd8:char-name20: char-num20: char-money: floa t五、源代码/ATM.hclass consumer;class ATM / ATM取款机 public: ATM(consumer &cn);/构造函数 void welcome();/ 登陆界面函数 bool check_passwd(char n,char pwd);/ 核对密码 void change_passwd();/ 修改密码 void fetch
6、money();/ 取款 void information();/ 查询信息 void exitATM();/ 退出系统 void functionshow();/ 功能界面 void lock();/ 锁机吞卡 private: int times;/ 记录密码输入次数 consumer& cnsm;/当前用户数据;/consumer.hclass consumer / consumer类的定义public:friend class ATM;consumer(char Name,char Num,float Money,char Password);protected: char* get_
7、name();/ 取得姓名 char* get_num();/ 取得卡号 char* get_passwd();/ 取得密码 float get_money();/ 取得余额 void set_passwd(char pwd);/ 设置密码 void set_money(float m);/ 取钱private: char passwd8;/ 用户密码 char name20;/ 用户姓名 char num20; float money;/ATM.cpp ATM类以及consumer类的实现# include # include ATM.h# include consumer.h/包涵两个类的
8、头文件using namespace std;void ATM:functionshow() int n; do coutendl请你输入相应的操作序号进行操作:endl; cout1) 修改密码 endl 2) 取款 endl 3) 查询余额 endl 4) 退出系统 endl; cout; cinn; while(n!=1&n!=2&n!=3&n!=4) cout请输入正确的操作序号!endl; cout; cinn; switch(n) case 1:change_passwd(); break; case 2:fetchmoney(); break; case 3:informatio
9、n(); break; case 4:exitATM(); break; while(true);void ATM:change_passwd()/修改密码函数的定义 char pwd8,repwd8; times=0; do coutendlpwd;if(!check_passwd(cnsm.get_num(),pwd) times+; else break; while(times3); if(times=3) lock(); int t=0;docoutpwd;coutrepwd;if(t=strcmp(pwd,repwd)!=0)cout你输入的两次密码不一样,请重新输入!endl;w
10、hile(t!=0);cnsm.set_passwd(pwd);cout密码修改成功endl;void ATM:fetchmoney()/取款函数的实现 float m; char ch; do coutendl请输入金额: m; while(m=0) cout金额不能小于零,请继续输入endl;cout ;cinm; if(cnsm.get_money()-m0) cout对不起,你的余额不足!endl; else coutendl操作成功endl; cnsm.set_money(m); cout是否要继续取钱:(Y/N) endl; cout ; cinch; while(ch!=n&ch
11、!=N&ch!=Y&ch!=y) cout; cinch; while(ch=y|ch=Y);void ATM:information() cout*endl; cout*endl; cout* 用户姓名:cnsm.get_name()endl; cout* 卡号: cnsm.get_num()endl; cout* 余额: cnsm.get_money()endl; cout*endl;void ATM:lock() coutendl对不起,由于操作有误,你的卡已经被没收endl; exit(1);void ATM:exitATM()coutendl*谢谢使用,欢迎下次光临!*endl;co
12、ut请取卡endl;exit(0);ATM:ATM(consumer &cn):cnsm(cn) 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_nu
13、m()/得到用户的账号 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);void ATM:welcome() times=0;cout*欢迎使用ATM自动取款机系统*endl;cout*n;cout*本系统由10级计科四班 刘辉 文荣富 杨钊 庄典 杨树仁 杨竹共同开发*n;cout*nnn; char p
14、wd8,num20,ch; int i=0; do i=0; coutendl请输入卡号:;docin.get(ch);/获取一个字符numi+=ch;/将卡号放入num数组while(ch!=n);/回车键结束numi-1=0;/最后一位为空字符i=0;cout请输入密码:;docin.get(ch);pwdi+=ch;while(ch!=n);pwdi-1=0;if(!check_passwd(num,pwd) cout你输入的卡号或密码有误,请重新输入endl; times+;else functionshow(); while(times3);lock();bool ATM:check
15、_passwd(char num,char pwd) if(strcmp(num,cnsm.get_num()=0&strcmp(pwd,cnsm.get_passwd()=0) return true; else return false;/main.cpp 主函数所在文件# include # include # include ATM.cppusing namespace std;int main() consumer c1(Tom,11111,10000.00f,111111);/*创建一个姓名为Tom,账号为11111,密码为111111,余额为10000元的账号*/ ATM atm1(c1); atm1.welcome(); return 0;六、运行结果- 10 -