南京邮电大学程序设计银行管理系统DOCWord格式.docx

上传人:b****6 文档编号:16526197 上传时间:2022-11-24 格式:DOCX 页数:27 大小:268KB
下载 相关 举报
南京邮电大学程序设计银行管理系统DOCWord格式.docx_第1页
第1页 / 共27页
南京邮电大学程序设计银行管理系统DOCWord格式.docx_第2页
第2页 / 共27页
南京邮电大学程序设计银行管理系统DOCWord格式.docx_第3页
第3页 / 共27页
南京邮电大学程序设计银行管理系统DOCWord格式.docx_第4页
第4页 / 共27页
南京邮电大学程序设计银行管理系统DOCWord格式.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

南京邮电大学程序设计银行管理系统DOCWord格式.docx

《南京邮电大学程序设计银行管理系统DOCWord格式.docx》由会员分享,可在线阅读,更多相关《南京邮电大学程序设计银行管理系统DOCWord格式.docx(27页珍藏版)》请在冰豆网上搜索。

南京邮电大学程序设计银行管理系统DOCWord格式.docx

评分等级共五种:

优秀、良好、中等、及格、不及格

一、课题内容和要求

银行定期储蓄管理系统可以实现定期利息计算,客户按密码取款,工作人员口令修改等功能。

具体功能如下:

(1)工作人员根据口令进入系统;

(2)可以录入新的存单信息(存单编号,储户姓名,身份证编号,住址,联系电话,

存款金额,存期,利率,密码),存单信息可以保存在文件中,利率在存期决定后自动得到;

(3)根据存单编号可以查询存单信息;

(4)根据存单编号和密码可以完成储户取款操作,自动算清应支付的利息并显示在屏

幕上。

(5)界面友好,可操作性强,输入信息符合逻辑如存款金额不为负数、不可能有非

数字的字符等;

(6)工作人员可对信息维护,如口令修改等。

二、需求分析

系统中要求工作人员有一个系统帐号,并且帐号有密码,系统的一切操作(如:

录入存单信息,信息维护等)都由工作人员执行,而不是由存储用户执行,也主要是说存储用户并不直接与系统交互,而是通过管理员与系统交互。

储户填写的新的存单信息由工作人员输入系统,存单信息包括存单编号,储户姓名,

身份证编号,住址,联系电话,存款金额,存期,利率,密码。

存单信息可以保存在文件中,利率在存期决定后自动得到;

储户可以根据存单编号查询存单信息,根据存单信息和密码完成储户取款操作,自动计算利息,并显示利息。

功能如图1所示:

图1功能框架图

(1)提供可操作的主菜单:

输出5个菜单,用于显示管理人员和用户可供操作的函数选项。

根据客户输入的选项来运行不同的功能,运行不同的函数。

(2)新建存单函数:

管理人员利用函数输入存单单号,姓名,身份证,地址,手机号码,存期,取款密码,存入金额。

(3)查询存单函数:

管理人员和用户利用函数查询已存入的存单信息。

(4)取款函数:

用户利用函数,输入取款密码取出自己的存款。

(5)修改管理员登录密码函数:

管理人员利用函数重新设定管理员登陆密码。

三、概要设计

1主要结构体

structbill//账单

{

intnumb;

//账单编号

charname[32];

//用户姓名

charid[19];

//身份证号

charadd[20];

//住址

chartel[12];

//电话

doublemoney;

//存款金额

intyear;

//存期

doublelilv;

//利率

intkey;

//密码

};

2主要函数流程图

(1)主函数:

用于从文本中载入管理员登录密码,识别管理员输入密码,正确则载入主界面,错误则重输。

主界面包含5个选项,分别为新建存单,查询存单,取款,修改管理员密码,退出。

等待用户选择进入下一界面。

流程图如图2所示:

图2主函数

(2)新建存单函数:

管理员输入密码成功后,选择新建存单,输入存单单号,姓名,身份证,地址,手机号码,存期,取款密码,存入金额,输入成功后显示存入成功。

流程图如图3所示:

图3新建存单信息

管理员输入密码成功后,选择查询存单信息,输入存单信息正确,主界面显示存单单号,姓名,身份证,地址,手机号码,,存入金额,存期,利率。

输入存单信息错误,提示重新输入。

流程图如图4所示:

图4查询存单信息

管理员输入密码成功后,选择取款,用户输入存单单号,单号正确,主界面显示存单单号,存入金额,利率,存期,应得利息,单号错误重新输入;

继续输入密码,密码正确,取款成功,密码错误,重新输入,错误3次,系统终止取款业务,返回主界面。

流程图如图5所示:

图5取款函数

(5)修改管理员登录密码函数,:

管理员输入密码成功后,选择修改管理员登录密码,输入原密码,密码正确,继续输入新密码,再次输入新密码,修改成功。

若原密码输错3次,则终止修改密码操作,返回主界面。

流程图如图6所示:

图6修改管理员登录密码函数

四、源程序代码

#include<

stdio.h>

stdlib.h>

#include<

string.h>

intkeyy;

intnumb;

charname[32];

charid[19];

charadd[20];

chartel[12];

doublemoney;

intyear;

doublelilv;

intkey;

intnewa()//新建存单

{

intn,i,flag;

FILE*nbill=fopen("

bill.txt"

"

r"

);

FILE*fbill=fopen("

a"

structbilla;

intn;

printf("

请输入新存单信息"

\n>

>

编号:

"

do

intj,fnumb;

structbillc[10];

scanf("

%d"

&

(a.numb));

flag=0;

for(j=0;

j<

10;

j++)

{

fscanf(nbill,"

%d\t%s\t%s\t%s\t%s\t%lf\t%d\t%lf\t%d"

c[j].numb,&

c[j].name,&

c[j].id,&

c[j].add,&

c[j].tel,&

c[j].money,&

c[j].year,&

c[j].lilv,&

c[j].key);

if(c[j].numb==a.numb)

{

printf("

存单号重复,请重新输入\n"

j=10;

flag=2;

}

}

}while(flag==2);

//录入姓名

姓名:

scanf("

%s"

a.name);

//录入身份证号

身份证号:

do

i=0;

scanf("

(a.id));

n=strlen(a.id);

while(a.id!

='

\0'

{

if(a.id[i]>

0'

&

a.id[i]<

9'

||a.id[i]=='

x'

X'

i++;

else

break;

}if(i==n&

n==18)

break;

else

printf("

\n输入有误,请重新输入正确的身份证号码:

\n"

while

(1);

//录入住址

住址:

(a.add));

//录入电话

联系电话:

(a.tel));

n=strlen(a.tel);

while(a.tel!

if(a.tel[i]>

a.tel[i]<

n==11)

\n输入有误,请重新输入正确的手机号码:

}while

(1);

存入金额:

%lf"

(a.money));

if(a.money<

=0)

\n输入有误,请重新输入正确的存入金额:

elsebreak;

存期:

(a.year));

//计算利率

if(a.year>

5)a.lilv=0.0420;

elseif(a.year>

3)a.lilv=0.0378;

elsea.lilv=0.0225;

利率为:

%0.4f"

a.lilv);

\n\n>

请设置取款数字密码,按回车键结束:

(a.key));

//写入文件

fprintf(fbill,"

%d\t%s\t%s\t%s\t%s\t%f\t%d\t%f\t%d\n"

a.numb,a.name,a.id,a.add,a.tel,a.money,a.year,a.lilv,a.key);

printf("

存入成功\n"

system("

pause"

cls"

fclose(fbill);

return0;

}

intfind()//查询信息

inti,fnumb,flag=0;

structbillb[100];

doublelixi;

//利息

for(i=0;

i<

100;

i++)

fscanf(fbill,"

b[i].numb,&

b[i].name,&

b[i].id,&

b[i].add,&

b[i].tel,&

b[i].money,&

b[i].year,&

b[i].lilv,&

b[i].key);

请输入您需要查找的存单号:

fnumb);

您好,这是您所查询的存单信息:

\n"

for(i=0;

if(b[i].numb==fnumb)

{

存单编号:

%d\n\n用户姓名:

%s\n\n身份证号:

%s\n\n用户住址:

%s\n\n手机号码:

%s\n\n存入金额:

%0.2f\n\n存期:

%d年\n\n利率:

%0.4f\n\n取款密码:

已隐藏\n\n\n"

b[i].numb,b[i].name,b[i].id,b[i].add,b[i].tel,b[i].money,b[i].year,b[i].lilv);

//,b[i].key

flag=1;

}

if(flag==0)

您好,您输入的存单不存在,请查对后再输入。

intout()

inti,fnumb,flag=0,temp;

请输入您的存单编号:

if(flag==1)

lixi=b[i].money*b[i].lilv*b[i].year;

\n存单编号:

%d\n\n存入金额:

%0.2f\n\n利率:

%0.4f\n\n存期:

%d年\n\n应得利息:

%0.2f\n\n"

b[i].numb,b[i].money,b[i].lilv,b[i].year,lixi);

\n请输入密码,注意遮挡:

temp);

if(temp==b[i].key)

\n取款成功\n您已取出:

%0.2lf元\n\n"

b[i].money+lixi);

else

\n密码错误,请重新输入\n密码:

scanf("

if(temp==b[i].key)

printf("

{

printf("

scanf("

if(temp==b[i].key)

{

printf("

}

else

\n您好,由于您多次输入错误密码,为保障账号安全,系统终止取款操作。

\n\n"

}

return0;

intrevise()

FILE*rekeyy=fopen("

keyy.txt"

"

w"

);

inttemp,temp1,temp2,flag;

请输入原密码\n密码:

if(temp==keyy)

flag=1;

system("

for(;

flag!

=1;

密码错误,请重新输入\n密码:

if(temp==keyy)

system("

/*认证成功*/

请输入新密码:

temp1);

请再次输入新密码:

temp2);

if(temp1==temp2)

fprintf(rekeyy,"

temp1);

修改成功\n"

else

您好,由于您多次输入错误密码,为保障账号安全,系统终止修改密码操作。

4\n"

fclose(rekeyy);

intmain()

FILE*fkeyy=fopen("

intt;

//输入密码的次数

inttemp;

//输入的密码

inti;

//序号

intflag=0;

fscanf(fkeyy,"

keyy);

请输入管理员登录密码:

if(temp==keyy)

管理员密码错误,请重新输入:

{//认证成功

do

puts("

***************************************"

**"

*欢迎使用银行定期储蓄管理系统:

*"

*1:

新存单信息录入*"

*2:

存单信息查询*"

*3:

取款*"

*4:

修改管理员登录密码*"

*5:

退出系统*"

请选择您的操作:

i);

system("

//清屏

switch(i)

{

case1:

newa();

case2:

find();

case3:

out();

case4:

revise();

case5:

return0;

default:

操作选择有误,请重新输入您需要的操作:

system("

}while

(1);

fclose(fkeyy);

5、测试数据及其结果分析

提前在桌面建立一个“keyy.txt”文本文档,里面写入管理员登陆密码。

运行后,输入正确的密码(如图7),登入程序。

程序的主菜单界面如下(图8所示)。

图7输入管理员登录密码

图8主菜单界面

(1)新建存单测试(结果如图9所示):

图9完成新存单输入后的界面

(2)查询存单测试(结果如图10所示):

图10查询存单的结果

(3)取款测试(结果如图11所示):

图11取款成功的结果

(4)修改管理员密码测试(过程及结果如图12、13、14、15所示):

图12输入原密码

图13输入新密码

图14再次确认新密码

图15修改管理员密码成功的结果

(5)退出测试:

选择退出后,直接关闭系统。

结果分析如下:

(1)提示输入管理人员登录密码时,输入错误会一直停留在提示界面;

(2)新建存单测试,如果输入重复存单号会提示重新输入,身份证输入必须为18位数字,末位可为X,输入错误会提示重新输入,手机号码输入必须为11位数字,输入错误会提示重新输入,存款金额输入必须为正数,输入错误会提示输入错误。

(3)查询存单测试,存单单号输入必须为已有单号,输入错误会提示重新输入。

(4)取款测试,存单单号输入必须为已有单号,输入错误会提示重新输入。

密码输入必须正确,输入错误提示重新输入,错误3次会退出取款,重返主界面。

(5)修改管理员密码测试,原密码输入必须正确,输入错误提示重新输入,错误3次会退出密码修改界面,重返主界面。

再次输入新密码必须和第一次输入新密码相同,输入错误会提示重新输入。

六、调试过程中的问题

(1)结构体建立时的账单密码类型出问题:

为了可以记录用户所设计的密码,原先采用了一维整形数组来依次存放用户所输入的数字。

但是因为一个多位数的数字的大小足以用一个整形空间储存,采用一维数组不仅造成了大量的内存空间浪费,还使得对密码数位的分离造成困难。

故采用了用整形空间代替数组的方法,轻松解决了数字数位难以分离的问题。

(2)程序界面只能连续显示的处理问题:

程序每次运行时,每次输出显示都会接在原先的输出底下,长时间使用会使程序页面过长并且杂乱。

通过

system("

函数,实现了清楚屏幕上原有的字符,使界面更加干净整洁,符合用户习惯。

(3)身份证号内包输入非数字的’x’字符影响输入的问题:

在第一次测试中,身份证号只允许为数字,采用数组存放身份证号导致无法识别字符’x’,为了解决这个问题,我们把存放身份证号的数组改为字符串,并采用了

while(a.id!

{

if(a.id[i]>

i++;

break;

}

的方法,实现了对”x”和”X”的识别。

(4)忘记取款则无法继续程序的问题:

在使用中,取款密码错误会导致无法取款,这时需要重新输入密码,再次错误后再次重试,再次错误后再次重试,再次错误后再次重试,再次错误后

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1