银行账户管理系统报告书.docx
- 文档编号:8050361
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:16
- 大小:62.67KB
银行账户管理系统报告书.docx
《银行账户管理系统报告书.docx》由会员分享,可在线阅读,更多相关《银行账户管理系统报告书.docx(16页珍藏版)》请在冰豆网上搜索。
银行账户管理系统报告书
合肥学院C语言课程设计报告
——汪乃科10计本31004012036
一、需求分析
课程设计名称:
银行账户管理系统
设计内容:
设计一个银行账户管理系统,该系统要求对该系统进行管理和维护。
该系统具有开户,查询账户余额,销户,存取款和修改密码等功能。
注意对用户的密码进行加密。
将客户信息如姓名,身份证号码,电话等信息作为一条记录添加入文件中保存,从实际出发,不要用虚拟的数据。
该程序使用MicrosoftVisualC++6.0编译。
二、算法设计、
1.设计思想:
本程序主要运用了数组和指针的知识,用主菜单引入各个子函数,并由子函数实现银行管理系统的初步功能。
2.设计表示:
Menu1的功能是将用户引入新用户注册和老用户登录两个功能,并在此之后与menu2相衔接;menu2主要针对老用户登录之后的功能加强,有取款,存款,查询余额,修改密码等子功能,并可以通过输入功能钱的序号来引导客户使用各种子功能;子函数zhuce是新客户注册的运行函数,新用户可以运用此函数创建一个新的账号并在此之后利用这个账号进行登录;子函数search是用来对比新注册的账号是否有重复的函数,如果重复则新账号创建失败,如果不重复则创建新账号成功,并可以在此后利用该账号进行各种子功能;子函数add是用来将新注册的账号添加至文件中的函数,添加到文件中才能保存该账号以进行老用户登录的功能;子函数denglu是老客户登陆的运行函数,登陆之后则可以通过对比输入的账号和文件中的账号是否有相同,如果有则可以进入menu2中通过选择序号进行各个子函数的运行;子函数gongneng是用来实现老客户登录后运行各种功能的函数,包括取款,存款,查询余额,在进行完每一个子函数后可以按任意键推出程序。
3.实现注释:
#include
#include
#include
charcfile[]="date.txt";//创建一个文件
structbank
{
charid[10+1];
charpsw[6+1];
floatmoney;//定义账号,密码,金额
};
menu1()
{
printf("*************欢迎使用虚拟银行服务!
*****************\n");
printf("***************************************************\n");
printf("||请输入序号||\n");
printf("||1.新用户开户。
||\n");
printf("||2.老用户登陆。
||\n");
printf("||3.退出系统。
||\n");
printf("***************************************************\n");
printf("请选择功能:
\n");
}//一级菜单,实现新用户注册和老用户
menu2()
{
printf("**************欢迎进入虚拟银行系统***************\n");
printf("***************************************************\n");
printf("**************1.取款;***************\n");
printf("**************2.存款;***************\n");
printf("**************3.查询余额;***************\n");
printf("**************4.返回主页面;***************\n");
printf("**************任意键退出.***************\n");
printf("***************************************************\n");
}//二级菜单实现老用户登陆后的各种功能
intsearch(char*user,char*pwd,char*real_pwd)//将注册的账号与已注册的账号对比是否重复
{
FILE*file;
charuser_no[256],pwd_no[256];
file=fopen(cfile,"r");
if(!
file)return0;
while(!
feof(file))
{
if(fscanf(file,"%s%s\n",user_no,pwd_no)==EOF)return0;
if(!
strcmp(user_no,user))
{
if(real_pwd)strcpy(real_pwd,pwd_no);
return1;
}
}
fclose(file);
return0;
}
intadd(char*user,char*pwd)//如果新注册的账号不重复,则将其添加至文件data.txt中
{
FILE*file;
file=fopen(cfile,"a");
if(!
file)return0;
fprintf(file,"%s%s\n",user,pwd);
fclose(file);
return0;
}
intwenjian(char*user,char*pwd)
{
if(search(user,pwd,NULL))return0;
elseadd(user,pwd);
return1;
}
zhuce()//新用户注册
{
structbank*p;
inti=0;
charname[30];floatmoney;
charsh[18],n;
p=(structbank*)malloc(sizeof(structbank));//p创造动态存储空间
printf("请输入您的名字:
");
gets(name);
fflush(stdin);
printf("请输入您的身份证号码:
");
gets(sh);
fflush(stdin);
printf("请输入您的帐号10位:
\n");
fflush(stdin);
scanf("%s",p->id);
fflush(stdin);
printf("请输入您的密码(6位数字):
\n");
fflush(stdin);
scanf("%s",p->psw);
fflush(stdin);
printf("请输入您的存款:
\n");
fflush(stdin);
scanf("%f",&money);
fflush(stdin);
if(wenjian(p->id,p->psw))
{
system("cls");
printf("注册成功!
");
printf("您的注册信息如下:
\n");
printf("名字:
");
puts(name);
printf("身份证号码:
");
puts(sh);
printf("帐号:
");
puts(p->id);
printf("密码:
");
puts(p->psw);
printf("存款");
printf("%f",money);
printf("按1返回主页面.按任意键退出:
");
fflush(stdin);
scanf("%c",&n);
fflush(stdin);
if(n=='1')
{
system("cls");
return0;
}
else
exit(0);//当输入1时返回上一级菜单,否则程序终止
}
else
{
system("cls");
printf("您输入的帐号已经存在注册失败!
按1返回,按任意键退出\n");
scanf("%c",&n);
if(n=='1')
{
system("cls");
return0;
}
else
exit(0);
}
}
gongneng(charAccount[10],charPassword[6],floatMoney)//实现老用户登陆后的各种功能
{
FILE*ps;
structbankxin[100];
intk=0,j=0,n;
charChiose;
floatinmoney,outmoney;
menu2();
fflush(stdin);
scanf("%c",&Chiose);
fflush(stdin);
ps=fopen(cfile,"r");
if(!
ps)
{
exit(0);
}
if(Chiose=='1')
{
printf("输入您的取款金额:
");
fflush(stdin);
scanf("%lf",&outmoney);
fflush(stdin);
while(!
feof(ps))
{
fscanf(ps,"%s%s%lf",&xin[k].id,&xin[k].psw,&xin[k].money);
k++;
}
fclose(ps);
ps=fopen(cfile,"wb");
if(!
ps)
{
exit(0);
}
for(j=0;;j++)
{if((strcmp(Account,xin[j].id)==0)&&(strcmp(Password,xin[j].psw)==0))
{xin[j].money=xin[j].money-outmoney;
printf("%.2lf\n",xin[j].money);
fprintf(ps,"%s%s%.2lf\n",xin[j].id,xin[j].psw,xin[j].money);
j++;break;}
}//实现菜单2中的取款功能
printf("按1返回主页面.按任意键退出:
");
fflush(stdin);
scanf("%c",&n);
fflush(stdin);
if(n=='1')
{
system("cls");
return0;
}
else
exit(0);
}
if(Chiose=='2')
{
printf("输入您的存款款金额:
");
fflush(stdin);
scanf("%lf",&inmoney);
fflush(stdin);
while(!
feof(ps))
{
fscanf(ps,"%s%s%lf",&xin[k].id,&xin[k].psw,&xin[k].money);
k++;
}
fclose(ps);
ps=fopen(cfile,"wb");
if(!
ps)
{
exit(0);
}
for(j=0;;j++)
{
{if((strcmp(Account,xin[j].id)==0)&&(strcmp(Password,xin[j].psw)==0))
xin[j].money=xin[j].money+inmoney;
printf("%.2lf\n",xin[j].money);
fprintf(ps,"%s%s%.2lf\n",xin[j].id,xin[j].psw,xin[j].money);
j++;break;
}}//实现菜单2中的存款功能
printf("按1返回主页面.按任意键退出:
");
fflush(stdin);
scanf("%c",&n);
fflush(stdin);
if(n=='1')
{
system("cls");
return0;
}
else
exit(0);
}
if(Chiose=='3')
{
while(!
feof(ps))
{
fscanf(ps,"%s%s%lf",&xin[k].id,&xin[k].psw,&xin[k].money);
k++;
}
fclose(ps);
ps=fopen(cfile,"r");
if(!
ps)
{
exit(0);
}
for(j=0;;j++)
{
{if((strcmp(Account,xin[j].id)==0)&&(strcmp(Password,xin[j].psw)==0))
printf("%.2lf\n",xin[j].money);
fprintf(ps,"%s%s%.2lf\n",xin[j].id,xin[j].psw,xin[j].money);
j++;break;
}}
}//实现菜单2中的查询余额的功能
printf("按1返回主页面.按任意键退出:
");
fflush(stdin);
scanf("%c",&n);
fflush(stdin);
if(n=='1')
{
system("cls");
return0;
}
else
exit(0);
if(Chiose=='4')
return0;
}
denglu()
{
FILE*fp;
characcount[10],password[6],h;
intm=0;
charreal_account[10];
charreal_password[6];
floatreal_money=0.0;
fp=fopen(cfile,"r");
if(!
fp)
{
exit(0);
}
while(m<=2)
{
printf("请输入您的帐号(10位):
");
gets(account);
fflush(stdin);
printf("请输入您的密码(6位):
");
gets(password);
fflush(stdin);
while(fscanf(fp,"%s%s%lf",&real_account,&real_password,&real_money)!
=EOF)
{
if((strcmp(real_account,account)==0)&&(strcmp(real_password,password)==0))
{
system("cls");
printf("登陆成功!
");
gongneng(real_account,real_password,real_money);
fclose(fp);
return0;
}//输入曾经注册过的账号进行登陆,账号或密码输入错误则有三次重新输入的机会,否则退出程序
else
rewind(fp);
printf("您输入的帐号不不正确!
请重新输入:
\n");
m++;
printf("请输入您的帐号(10位):
");
gets(account);
fflush(stdin);
printf("请输入您的密码(6位):
");
gets(password);
fflush(stdin);
}}
fclose(fp);
printf("您输入帐号密码不正确已经3次,被强制退出(按任意键退出)!
");
fflush(stdin);
scanf("%c",&h);
fflush(stdin);
exit(0);
}
intmain()
{
charchiose;
charflag;
while(flag!
='N')
{menu1();
scanf("%c",&chiose);
getchar();
if(chiose<='0'||chiose>='4')
{
while(chiose<='0'||chiose>='4')
{
printf("您的输入有误,请重新输入:
");
scanf("%c",&chiose);
getchar();//在一级菜单中所输入的账号必须在1~5之间,否则无法进行下一步操作
}
}
if(chiose=='1')
{
system("cls");
zhuce();printf("继续请按任意键,退出请按N");scanf("%c",&flag);
}
if(chiose=='2')
{
system("cls");
denglu();printf("继续请按任意键,退出请按N");scanf("%c",&flag);
}
if(chiose=='3')
{
printf("谢谢您的使用!
");
exit(0);
}
}
}//一级菜单中按3直接退出程序
4.算法设计中一些新的想法:
在本次程序的编写过程中,用了清除缓冲的新想法,即fflush(stdin),清除缓冲的不走可以代替回车和字符的功能;另外,我还对头文件“conio.h”的功能进行查询,发现其为屏幕操作系列函数的头文件。
在程序的运行中也有几处不足,在menu2中不能在使用一个子函数后再返回菜单调用另一个子函数,在menu2的三项功能取款、存款、查询余额中,无论输入什么数字都会显示-1720304.00,也就是不能正确显示,账户中的余额。
三、用户手册
在进入程序后首先将会出现menu1的菜单,共有新用户注册和老用户登录两个功能,可按序号进行功能选择,此时序号数只能为1~2,否则将会直接跳出系统;新用户注册完之后可以进行老用户的账号登录,此时,对于输入进的老账户账号和密码将会与之前文件中所输入的所有新账户账号和密码做对比,若有相同的则老账号可以成功登录,否则将会输出“您所输入的账号/密码有误”;若账号成功登录将会将程序引入menu2,此时,使用者再次可以通过选择序号进行功能选择,序号只能为1~3,否则将会直接跳出系统;按1进入取款功能,输入要取的金额,打印出账户中剩下的金额;按2进入存款功能,输入要存的金额,打印出账户中剩下的金额;按3进入查询余额,程序直接打印出账户中的余额。
四、调试及测试
一开始程序刚写完时有不少错误,在老师和同学的指导下一一把错误改正过来,最终程序才能够运行成功。
通过此次C语言程序设计实践,本人实在是获益不浅!
C语言是上个学期开的课程,所以这个学期并没怎么看过,当要开始设计的时候,还真不知从哪下手!
结果,第一次的上机,我只坐了一个下午,什么也没干!
回去以后,我想,这样不行,这样下去还得了!
我就重新学了一遍我们上个学期的教材,发觉自已有许多都遗忘了!
特别是有文件的操作,几乎是一遍空白!
温习过后,开始做题!
那个欢迎动画是在”C语言之家”找到的自
已改了一下,但并没做多大的改动!
之后做出来的第一个程序是”统计数”,因为上个月做过类似的!
接着是”乘法逆”,这个我觉得比较简单!
再接着是”OTP”加密!
而那个银行管
理系统是参考了上机手册后做出来的!
最后,花了最多时间的是”异或加密与解密”和”移位
解密”,几乎花了我百分之九十的时间,而且还是在一些在其他大学读计科专业的同学的帮助
下和在上网查看了大量的资料之后才做出来!
五、小结
通过这次程序设计,我第一次尝试编写一个几百行的大程序,虽然过程非常艰辛,不过我还是觉得非常值得,当看到程序最后能运行时感到非常欣慰,虽然最后程序的功能还是有点不健全,但是我还是有信心有热情在今后的时间里努力巩固自己的C语言知识,争取能够再一次独立的编写出一个大程序。
六、参考文献
[1]黄明等编著《C语言课程设计》北京:
电子工业出版社
[2]郭翠英编著《C语言课程设计案例精编》北京:
中国水利水电出版社
[3]宁正元《数据结构(c语言)》南京:
东南大学出版社。
2000年6月第1版
[4]严蔚敏等《数据结构(c语言版)》北京:
清华大学出版社,1997年4月第1版
[5]谭浩强编著《C程序设计题解与上机指导(第3版)》北京:
清华大学出版社
[6]谭浩强编著《C程序设计(第3版)》北京:
清华大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行 账户 管理 系统 报告书