C++课程设计报告模拟银行管理系统Word文档格式.docx
《C++课程设计报告模拟银行管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告模拟银行管理系统Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
功能:
实现在银行系统中用户开设自己的账户。
基本思想:
利用Set_account()函数,用户输入自己的账号,姓名,密码,开户金额,然后进行保存,并记录用户个数加1。
具体步骤:
先定义几个变量,用来保存用户输入的账号,姓名,密码,开户金额,用户按照相应的提示输入相应的数据,如账号是整型,姓名是字符型等。
语句描述如下:
1.cout<
<
endl<
"
请输入开户号:
;
2.cin>
>
id;
3.cout<
请输入开户人姓名:
4.cin>
nam;
5.cout<
请输入开户密码:
6.cin>
passw;
7.cout<
请输入存入金额:
8.cin>
m;
因为开户金额只能是大于0的数字,所以,需要对输入的数据进行判断,以确保输入无误,当输入都正确后,用Save()函数进行保存,并让记录用户数目的静态成员变量acnum加1,语句描述如下:
9.while(m<
=0)
10.{
11.cout<
请输入正确的数字!
endl;
12.cin>
13.}
14.consumer*acc=newconsumer(id,nam,passw,m);
15.account[acnum]=acc;
16.cout<
开户成功!
!
17.acnum++;
18.save();
2.销户功能:
实现删除账户的操作。
有开户的,那肯定也有销户的,但是销户函数比开户函数步骤简单些。
因为它是把该账号所有的信息都删除,不需要对该账号的信息进行筛选。
输入要销户的账号,把该账号的所有信息删除。
先输入要销户的账号,然后,进行查找,看该账号是否存在,不存在则返回,存在则删除该账号的所有信息,同时,记录账号数目的静态成员变量acnum减1,并用save()函数对修改后的数据进行保存,语句描述如下:
19.intflag=1;
20.inti=0;
21.while((i<
acnum)&
&
(flag))
22.{
23.if(id==account[i]->
get_id())
24.{
25.flag=0;
26.}
27.else
28.{
29.i++;
30.}
31.}
32.if(flag)
33.{
34.
35.cout<
帐号不存在!
36.return;
37.}
38.for(intj=i;
j<
acnum;
j++)
39.{
40.account[j]=account[j+1];
41.}
42.account[acnum-1]=NULL;
43.acnum--;
44.cout<
注销成功!
45.save();
体会:
这个销户函数步骤虽然简单,但比开户函数更有技巧性,因为它需要判断要销户的账号是否存在。
我是定义了一个中间变量flag,先让它等于1,然后用while循环进行查找,看是否有该账号,如果账号存在,则令flag=0,这样就可以通过flag的值来判断是否有相同的账号,语句描述如下:
46.intflag=1;
47.while((i<
48.{
49.if(id==account[i]->
50.{
51.flag=0;
52.}
53.else
54.{
55.i++;
56.}
57.}
58.if(flag)
59.{
60.
61.cout<
62.return;
63.}
这样就可以判断账号是否存在,并显示出来。
当登陆系统和转账时,同样都需要判断账号是否存在,本可以把这段代码编译成一个功能函数,专门用来判断账号是否存在,可以程序变的更简洁,但因为需要修改的地方不少,所以就没去做了,如果下次我还碰到这样的问题,那一定要采用。
3.转账功能:
实现用户与用户之间进行转账的操作。
首先登陆自己的账号,然后,输入别人的账号以及转账的数目。
创建一个transfer()函数,当用户登陆账号后,如果进行转账操作,则调用它。
进行转账时首先输入别人账号,这时需要判断输入的账号是否存在,这跟前面销户函数的一样,用while+if来实现,然后输入你要转给别人的钱的数目,这个数目跟前面你开户输入的数目一样,不能为负数,因为不可能你转账给别人,还让别人减少钱,同时这个数目也不能大于你自己账户里金额,如果这些都符合,则进行可以转账,自己的账户减少一定的金额,别人账户增加相应的金额。
64.cout<
请输入帐号:
65.cin>
66.intflag=1;
67.inti=0;
68.while((i<
69.{
70.if(id==account[i]->
71.flag=0;
72.elsei++;
73.}
74.if(flag)
75.{
76.cout<
77.return;
78.}
79.floatb;
80.cout<
请输入你要转帐的金额:
81.cin>
b;
82.while(b<
83.{
84.cout<
85.cout<
$>
86.cin>
87.}
88.if(account[x]->
get_money()<
b)
89.cout<
对不起,金额不够!
90.else
91.{
92.account[x]->
dec_money(b);
93.account[i]->
add_money(b);
94.}
这个功能函数虽然没什么难的地方,但它有一些实际问题要考虑,我们转账的时候,不可能会让别人的金额减少,不然,谁还敢去银行存钱。
当我们写其他程序时,同样要牢记,函数实现的功能要与实现相符合。
4.用户登陆功能:
定义enter_account()函数,当用户登陆时,调用此函数,用户输入自己的账号,密码后,并可以进行相应的操作。
主要步骤:
用户登陆时,输入自己的账号,这时,与前面销户函数,转账函数一样,判断账号是否存在,如果存在,则输入账号的密码,如果密码正确,则显示该账号的信息,如:
用户的姓名啊,余额啊,同时还可以进行其他的操作,如取钱,存钱,转账,修改密码等。
描述语句如下:
95.cout<
请选择你要进行的操作:
1)查看信息"
endl
96.<
2)取款"
3)存款"
4)修改密码"
97.<
5)转账"
6)返回"
98.cin>
n;
99.switch(n)
100.{
101.case1:
account[i]->
display();
break;
102.case2:
fetchmoney();
save();
103.case3:
savemoney();
104.case4:
change_passwd();
105.case5:
transfer(i);
106.case6:
return;
107.}
这个函数功能简单,但是必不可少,用户可以通过这个函数来管理自己的账号。
在后面作判断时,因为只可能出现1到6,所以采用switch()来判断,虽然采用if,else的嵌套可以实现,但看着会觉的很复杂。
5.开始菜单功能:
显示操作信息,用户可以根据显示的信息,按照提示,进行相应的操作。
算法思想:
用cout输出操作信息,如输出“1)用户开户2)账户登陆3)帐户注销4)退出系统”,用户根据上面显示的信息,按照提示,可以进行相应的操作,如输入1,则调用开户函数,用户并可以进行开户操作了,如果输入的不是1到4,则重新输入,描述语句如下:
108.cout<
请你输入相应的操作序号进行操作:
109.cout<
1)用户开户"
2)账户登陆"
110.<
3)帐户注销"
4)退出系统"
111.cout<
请选择>
112.cin>
113.while(n<
1||n>
4)
114.{
115.cout<
请输入正确的操作序号!
116.cout<
请选择>
117.cin>
118.}
119.switch(n)
120.{
121.case1:
set_account();
122.break;
123.case2:
enter_account();
124.break;
125.case3:
del_account();
126.break;
127.case4:
exitYH();
128.break;
129.}
这个功能是整个程序的开始,通过它来调用其他功能函数进行其他的操作,本来可以把它做的更美观点的,但感觉没什么实际意思就没去修改了。
6.读取与保存功能:
用来保存用户的信息以及登陆时读取用户的信息。
利用ofstream,ifstream输入输出流,将用户的信息保存在文件里,
创建输入输出流ofstream,ifstream,将用户的信息保存进来,当用户登陆时,则对保存的信息进行读取,看是否有相符合的信息,实现语句如下:
//保存
130.ofstreamoutfile("
bankdat.dat"
ios:
:
out);
131.intn=0;
132.outfile<
acnum<
"
133.for(;
n<
n++)
134.{
135.outfile<
account[n]->
ID<
136.outfile<
money<
137.outfile<
name<
138.outfile<
passwd<
139.}
140.outfile.close();
//读取
141.ifstreaminfile("
in);
142.if(!
infile)
143.{
144.cerr<
读取错误,无资料中!
145.return;
146.}
147.intn=0;
148.intid,m;
149.stringnam,passw;
150.infile>
151.for(;
152.{
153.infile>
154.infile>
155.infile>
156.infile>
157.account[n]->
passwd;
158.consumer*acc=newconsumer(id,nam,passw,m);
159.account[n]=acc;
160.}
161.infile.close();
162.cout<
读取资料正常!
我很少用文件的形式来保存信息,因为自己对这一块不太懂,感觉很陌生,这一次也是参考了别人的程序才能编写完成,用了这个方法后,发现这种方法还是很有优势的,将信息保存下来后,你把VS关了,下次登陆时,还可以读取到上次的信息,因为它会在文件夹里会生成一个dat类型的文件,将信息保存在这个文件里。
以后有机会,我一定要多试试这种方法,好好的掌握它。
以上都是YH(银行类)里的功能函数,它们主要是用来实现用户对银行系统的操作,而下面的Consumer(客户类)里的功能的函数,它们则主要是用来实现对自己账户的操作。
Consumer(客户类)中的成员函数:
1.存钱功能:
可以对自己的账户进行存款。
先输入存钱的数目,当然又要判断输入的数目是否为负数或者0,如果是,则重新输入。
存完钱后,你有可能还需要进行操作,因此,后面再作个判断,描述语句如下:
163.do
164.{
165.cout<
你要存多少钱:
endl;
166.cin>
c;
167.while(c<
168.{
169.cout<
170.cin>
171.}
172.money=money+c;
173.cout<
操作已成功!
174.cout<
是否要继续该项操作:
(Y/N)"
175.cin>
ch;
176.while(ch!
='
n'
ch!
N'
Y'
y'
)
177.{
178.cout<
(Y/N)"
179.cin>
180.}
181.}
182.while(ch=='
||ch=='
);
有些程序,虽然实现的功能的差不多,但有的人写的就是好,我觉的好可能就好在他考虑了一般人使用这个程序的习惯,让程序变的更人性化了,别人用起来舒服,顺手,自然感觉就好。
所以,我们以后写程序的时候一定要留心观察,注意细节,尽量多站在用户角度思考问题,这样才能做的更好,更受用户欢迎。
8.取钱功能;
可以冲自己的账号进行取钱的操作。
这个函数跟前面的存钱函数差不多,先是输入你要取钱的数目,并判断输入的数目是否符合要求,不符合则重新输入。
同样,输入完后,可能还需要进行该操作,因此,在后面再作个判断,描述语句如下:
183.do
184.{
185.cout<
186.cin>
187.while(c<
188.{
189.cout<
190.cin>
191.}
192.money=money+c;
193.cout<
194.cout<
195.cin>
196.while(ch!
197.{
198.cout<
199.cin>
200.}
201.}
202.while(ch=='
203.}
9.修改密码功能;
用于修改用户自己账号的登陆密码。
创建change_passwd()函数用以修改密码,当用户输入修改密码的操作时,就可以直接调用它。
因为密码一旦丢失,则不能登陆相应的账号,会造成无法挽回的损失,所以,当你在修改密码时,一般都会被要求输入2次,以免产生错误。
这个系统也是一样,修改密码时,要求输入2次,如果前后输入的不同,则修改密码失败,重新输入,直到2次输入的密码相同,才修改密码成功。
204.stringpwd,repwd;
205.cout<
请输入新密码:
206.cin>
pwd;
207.cout<
请再输入一次新密码:
208.cin>
repwd;
209.while(pwd!
=repwd)
210.{
211.cout<
你输入的两次密码不一样,请重新输入!
212.cout<
213.cin>
214.cout<
215.cin>
216.}
217.passwd=pwd;
218.cout<
密码修改成功,请牢记!
俗话说的好“不怕一万,就怕万一”,成功可能离你只有一步,但因为你的疏忽也错过。
因此我们做任何事情都应该要细心,注意观察,万万不可大意。
同时我们在写程序时,还要考虑到别人容易出错的地方,并提醒他们,以免他们出错了而怪你写的程序有问题。
三、程序结构:
Main()函数包括2个类,图形显示如下:
图1:
程序的函数结构
在YH(银行)中包含8个函数,图形显示如下:
图2:
在Consumer(客户类)中还包括4个函数,图形显示如下:
图3:
四、系统运行:
这里只显示一下“开户”与“登陆”功能,其它功能用户可以自行调试查看.
------------------------------------------------------------------
1)用户开户
2)账户登陆
3)帐户注销
4)退出系统
1
你输入1,并选择了开户。
然后按照提示输入账号,姓名,密码等。
001
liu
123
100
按照上面的操作,在这个银行系统中开户成功。
于是,你可以用你刚开的账号进行登陆了。
选择2,然后输入自己的账号,密码。
2
请输入密码:
输入完毕后,按回车。
如果,账号和密码输入无误的话,则会显示这个账号的信息,表明登陆成功。
**********************************
* 用户姓名:
* 帐号:
1
* 余额:
100
以上便是登陆后显示的信息,与你在开户时输入的完全一致。
五、源程序:
1.
#include<
iostream>
2.