C++课程设计-银行提款机系统
课程名称: C++课程设计
班 级:
学 号:
姓 名:
完成日期:
1
课设任务书
专业名称:计算机科学与技术(软件工程)
课程名称:面向对象程序设计与C++
设计题目:银行提款机系统
起止时间:2009年 6月15日至2008年6月26日
问题描述
模仿银行存款与提款过程,实现人机交互操作方式,可进行存款提款操作,余额查询,存提款
查询。
基本要求
(1) 要求有用户登陆验证功能,根据不同的用户权限,实现不同的功
能。
(2) 普通帐户,支持的操作包括存款、提款、余额查询、存提款记录
查询,汇率换算功能。
(3) 管理员帐户,支持普通帐户的所有功能,支持添加删除普通帐户
功能、汇率设置、利息设置、查看其他帐户存提款记录功能。
(4) 要求用面向对象的方式进行设计。
实现提示
可以设计两个主类,USER Class (普通帐户类)和ATM Class (自动存款机类),ADMIN_USER Class (管理员帐户类)继承USER Class,以实现普通用户的所有功能。在ATM Class中设计存款机操作接口。帐户信息记录,可采用读写文件的方式进行存储。
选作
根据用户存款额的多少对利息进行调整,达到30万利息乘以1.2、达到50万利息乘以1.5、要求界面美观。
学生姓名: 学号:
指导教师: 2009年06月19日
4
银行提款机系统 1概要设计
(1)、系统的介绍:该系统为银行提款机系统,实验要求模仿银行自动提款机存款与提款过程。实现人机交互操作方式。
(2)、对客户需求的
:用户需要选择权限,即选择管理员用户还是普通用户。还需要进行用户身份验证,根据不同的用户权限,实现不同的功能。普通用户支持存款,提款,余额查询, 存提款记录查询,汇率换算等操作。管理员用户支持普通用户的所有功能外,还支持添加删除普通用户功能、汇率设置、利息设置、查看其他用户存提款记录功能。
(3)、模块图:
银行管理系统
权限选择登陆验证存款提款查询信息帐户管理设置信息
2详细设计
一、数据类型:首先需要定义三个类,因为是银行提款机系统,需要信息的保密性,而类正好具有这一特性,将数据定义为私有,保证了用户信息的保密性。具体情况如下:
class USER //声明一个类,类名为USER
{ char *name; //定义私有变量
public:
USER(char* p,char*m1); //公有成员
5
USER(); //成员函数
virtual ~USER(); //析构函数
void look(char *p,int back); //公有成员函数(查询余额)
void sethuilv(); //公有成员函数(查询利率)
int Pdenglu(USER user ,char *p2,int back); //公有成员函数(普通账户登录)
int inport(unsigned long double money,char *p1); //公有成员函数(存款)
int export(unsigned long double money,char *p); //公有成员函数(提款)
void remember(char *p); //公有成员函数(消费记录查询)
void looktax(); //公有成员函数(汇率查询) };
此为普通帐户类,可以完成存款,提款,余额查询,汇率查询,查询交易记录等功能 。
class ADMIN_USER:public USER //声明一个类,类名为ADMIN_USER
//ADMIN_USER继承USER { char *name; //定义私有变量
public:
void set(); // 公有成员函数(设置利率)
void addmember(); // 公有成员函数(添加帐户)
void deletmember(); // 公有成员函数(删除帐户)
ADMIN_USER(char *m); // 公有成员函数
ADMIN_USER(); // 构造函数
virtual ~ADMIN_USER(); // 析构函数
};
此为管理员帐户,它继承了普通帐户的所有功能,又
class ATM //声明一个类,类名为ATM
{
double tax; //存放利率,私有变量
public:
ATM(); //构造函数
virtual ~ATM(); //析构函数
此类为自动存款机类,存放利率,设计存款机操作接口.
二、模块的具体分析:
(1)权限选择
6
分析:权限选择,即为让用户选择进入管理员帐户还是普通账户。
关键代码:void selet(ADMIN_USER admin,int back) //选择权限
{
int i;
cout<<" 欢迎使用中国银行自动提款机" <
>i;
}
流程图:
(2)验证登录
分析:此模块分为管理员帐户登录身份验证,以及普通账户登录身份验证。 关键代码:int denglu(char*name1,char *mima1,ADMIN_USER admin,int back) //管理员帐户登陆
{
char name2[32],mima2[32]; //定义变量
cout<<"请输入用户名:"
cin>>name2; //输入用户名
cout<<"请输入密码:";
cin>>mima2; //输入密码
if (strcmp(name1,name2) == 0 &&strcmp(mima1,mima2) == 0)
//将输入的信息与管理员帐户信息比较
{
cout<<"****^^****管理员登录成功*****^^******"<=money)
{
money2 = money2 - money; //写文件
FILE *p1 = fopen(p,"w"); //以写的方式打开文件
8
fputs(mima,p1); //得到密码
fprintf(p1,"%lf\n",money2); //将余额写入文件
fprintf(p1,"%lf",money); //将取得钱写入文件
fclose(p1); //关闭文件
return 0;
}
else
{
cout<<"对不起您的余额不足"<>a;
cout<<"请您设置密码:";
cin>>m; //输入密码
USER number1(a,m); //定义类USER的对象,a为用户名,m为密码
}
void ADMIN_USER::deletmember() // 删除账户 {
char a[32];
cout<<"请输入您要删除帐户的用户名:";
cin>>a;
strcat(a,".txt");
FILE *p=fopen(a,"r");
if (p == NULL)
{
cout<< "************没有要删除的对象******************"<>tax;
FILE *p1 = fopen("ATM.txt","w");
fprintf(p1,"%lf",tax);
fclose(p1);
}
流程图:
3调试
(1)、在文件读写的地方总爱出问题,比如数据读进去了,却写不出来。或者是根本没读进去。
(2)、在添加账户的地方出错,是因为没有定义类的对象USER number1(a,m)。 4测试结果
(1)我给管理员以及普通账户赋的初值全为零,所以
5 使用说明
(1)首先出现选择权限的交互界面,如选择1管理员模式,则根据提示依次输入用户名和密码,进行登录身份验证,如图1.1;如选择2普通账户模式,则根据提示依次输入用户名和密码,进行登录身份验证,如下图1.2:
图1.1
11
图1.2
(2)若通过身份验证,则登录成功,如图2.1;若没有通过身份验证,则登录失败,如图2.2:
图2.1
图2.2
(3)输入1,则进入存款功能,根据提示输入要存的金额,则存款即完成,如下图3.1和图3.2:
12
图3.1
图3.2
(4)其他功能同上,根据提示,就会完成操作,很容易操作,浅显易懂。 6总结
时间过得很快,转眼间大二下学期也接近尾声,这已经是我第三次作课程设计了,我对本次C++课程设计也有了自己更深的理解,C++课程设计是对C++知识的更好的理解与巩固,我自己深知自己掌握的知识还不够牢固,对C++理解的不够透彻,但这丝毫不会影响我要努力把C++学好的决心,或许我学的不快,但我有耐心也有信心。或许我不够聪明,但我会坚持勤能补拙。或许有时我不被理解,但我不会放弃,一遍学不会那就两遍三遍直到学会为止。到什么时候知识都是自己的。
我觉得这次课程设计给我最大的收获就是让我找到了今后前进努力的方向。或许以前的我还在为今后的生活目标工作方向所迷茫,但看到了那么多优秀的指导老师,只比我们大四五岁,却将C++运用得那么透彻,对于编程那么驾轻就熟。使得我更加坚定了自己学习计算机的决心,我从不后悔自己做的任何决定,我积极参加各项活动来锻炼自己的能力,面对挫折面对困难,我都会很好的调整自己,在外人面前永远展现光鲜的自己,不得不承认我是一个很要强但从不强求任何事的人,所以在本次课程设计面对着毫无头绪的程序的时候,我也曾偷偷流眼泪,着急生气自己对知识掌握得不透彻,深感自己的努力不够,人的精力确实有限,既然决定了要锻炼自己的工作以及其它方面的能力,还要在学习上严格要求自己就要比别人加倍的努力,平时对课程一点一滴的理解积累,对于课程设计是非常重要的,我一直都坚信只要想学习,什么时候都不算晚,想让别人尊重自己看得起自己的最好方法,不是去改变别人,而是去改变自己,让自己的技术过应。
我课程设计的题目是银行提款机系统,主要就是用到有关类的相关知识,在编程的过程中要了解继承的概念,还要了解文件读写的基本知识,构造函数的
13
深拷贝浅拷贝,以及析构函数的相关知识。一个类是由一批数据以及对其操作的函数组成的。类可以体现数据的封装性和信息隐蔽。因此用类来实现银行提款机系统最好不过了,再利用文件来存放每一个账户的信息,方便读取查找。题目不算难,但在编写的过程中也遇到不少困难,在这里要感谢帮助过我的老师和同学,
成绩:预习报告 分,系统 分,课设报告 分,总分 分,总评:
评语:
批阅教师签字: 年 月 日
14